<?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>116474</bug_id>
          
          <creation_ts>2013-05-20 16:12:59 -0700</creation_ts>
          <short_desc>check-webkit-style should not warn about use of C++11 “&gt;&gt;”  instead of “&gt; &gt;&quot;</short_desc>
          <delta_ts>2013-09-30 21:56:37 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jessie Berlin">jberlin</reporter>
          <assigned_to name="Jessie Berlin">jberlin</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>glenn</cc>
    
    <cc>psolanki</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>891384</commentid>
    <comment_count>0</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2013-05-20 16:12:59 -0700</bug_when>
    <thetext>Right now it spits out the following warning:

Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:719:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]

for a line like

void WebChromeClient::didAssociateFormControls(const Vector&lt;RefPtr&lt;WebCore::Element&gt;&gt;&amp; elements)

It shouldn’t, since we are using C++11 in WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931148</commentid>
    <comment_count>1</comment_count>
      <attachid>212112</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-19 18:10:32 -0700</bug_when>
    <thetext>Created attachment 212112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934881</commentid>
    <comment_count>2</comment_count>
      <attachid>213052</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-30 21:11:40 -0700</bug_when>
    <thetext>Created attachment 213052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934883</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-09-30 21:20:39 -0700</bug_when>
    <thetext>Wrong bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934885</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-30 21:25:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Wrong bug?

Yup :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934890</commentid>
    <comment_count>5</comment_count>
      <attachid>212112</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-30 21:56:34 -0700</bug_when>
    <thetext>Comment on attachment 212112
Patch

Clearing flags on attachment: 212112

Committed r156694: &lt;http://trac.webkit.org/changeset/156694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934891</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-30 21:56:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212112</attachid>
            <date>2013-09-19 18:10:32 -0700</date>
            <delta_ts>2013-09-30 21:56:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116474-20130919181032.patch</filename>
            <type>text/plain</type>
            <size>2671</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NjEzMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDEzLTA5LTE5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgY2hlY2std2Via2l0LXN0eWxlIHNob3VsZCBub3Qgd2FybiBhYm91dCB1c2Ugb2YgQysr
MTEg4oCcPj7igJ0gIGluc3RlYWQgb2Yg4oCcPiA+IgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91
bml0dGVzdC5weToKKwogMjAxMy0wOS0xOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIEF0dGVtcHRlZCBidWlsZCBmaXggYWZ0ZXIgcjE1NjExNC4KSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CShyZXZpc2lvbiAx
NTYxMzEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQko
d29ya2luZyBjb3B5KQpAQCAtMTg3MCwxMCArMTg3MCwxMCBAQCBkZWYgY2hlY2tfc3BhY2luZyhm
aWxlX2V4dGVuc2lvbiwgY2xlYW5fCiAgICAgIyBGSVhNRTogSXQncyBub3Qgb2sgdG8gaGF2ZSBz
cGFjZXMgYXJvdW5kIGJpbmFyeSBvcGVyYXRvcnMgbGlrZSAuCiAKICAgICAjIFlvdSBzaG91bGQg
YWx3YXlzIGhhdmUgd2hpdGVzcGFjZSBhcm91bmQgYmluYXJ5IG9wZXJhdG9ycy4KLSAgICAjIEFs
YXMsIHdlIGNhbid0IHRlc3QgPCBvciA+IGJlY2F1c2UgdGhleSdyZSBsZWdpdGltYXRlbHkgdXNl
ZCBzYW5zIHNwYWNlcworICAgICMgQWxhcywgd2UgY2FuJ3QgdGVzdCA8LCA+LCA8PCwgb3IgPj4g
YmVjYXVzZSB0aGV5J3JlIGxlZ2l0aW1hdGVseSB1c2VkIHNhbnMgc3BhY2VzCiAgICAgIyAoYS0+
YiwgdmVjdG9yPGludD4gYSkuICBUaGUgb25seSB0aW1lIHdlIGNhbiB0ZWxsIGlzIGEgPCB3aXRo
IG5vID4sIGFuZAogICAgICMgb25seSBpZiBpdCdzIG5vdCB0ZW1wbGF0ZSBwYXJhbXMgbGlzdCBz
cGlsbGluZyBpbnRvIHRoZSBuZXh0IGxpbmUuCi0gICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1tePD49
IVxzXSg9PXwhPXxcKz18LT18XCo9fC89fC98XHw9fCY9fDw8PXw+Pj18PD18Pj18XHxcfHxcfHwm
Jnw+Pnw8PClbXjw+PSFcc10nLCBsaW5lKQorICAgIG1hdGNoZWQgPSBzZWFyY2gocidbXjw+PSFc
c10oPT18IT18XCs9fC09fFwqPXwvPXwvfFx8PXwmPXw8PD18Pj49fDw9fD49fFx8XHx8XHx8JiYp
W148Pj0hXHNdJywgbGluZSkKICAgICBpZiBub3QgbWF0Y2hlZDoKICAgICAgICAgIyBOb3RlIHRo
YXQgd2hpbGUgaXQgc2VlbXMgdGhhdCB0aGUgJzxbXjxdKicgdGVybSBpbiB0aGUgZm9sbG93aW5n
CiAgICAgICAgICMgcmVnZXhwIGNvdWxkIGJlIHNpbXBsaWZpZWQgdG8gJzwuKicsIHdoaWNoIHdv
dWxkIGluZGVlZCBtYXRjaApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jcHBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE1NjEzMSkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzM4LDkgKzE3MzgsNyBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5
bGVUZXN0QmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2E8Rm9vKj4gdCA8PD0gJmIg
JiAmYzsgLy8gVGVzdCcsICcnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhPEZvbyo+IHQg
PDw9ICpiIC8gJmM7IC8vIFRlc3QnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaWYg
KGE9YiA9PSAxKScsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPSAgW3doaXRlc3BhY2Uvb3BlcmF0
b3JzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhID0gMTw8MjAnLCAnTWlzc2lu
ZyBzcGFjZXMgYXJvdW5kIDw8ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCiAgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChhID0gYiA9PSAxKScsICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdhID0gMSA8PCAyMCcsICcnKQogICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoJyNpbmNsdWRlIDxzeXMvaW8uaD5cbicsICcnKQogICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoJyNpbXBvcnQgPGZvby9iYXIuaD5cbicsICcnKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213052</attachid>
            <date>2013-09-30 21:11:40 -0700</date>
            <delta_ts>2013-09-30 21:24:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116474-20130930211136.patch</filename>
            <type>text/plain</type>
            <size>1819052</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9j
bWFrZWNvbmZpZy5oLmNtYWtlCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvY21ha2Vjb25m
aWcuaC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2NtYWtlZGVmaW5l
MDEgRU5BQkxFX0RSQUdfU1VQUE9SVAogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX0VWRU5UX01PREVf
TUVUQVRBR1MKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9GQVNUX01PQklMRV9TQ1JPTExJTkcKLSNj
bWFrZWRlZmluZTAxIEVOQUJMRV9GSUxFX1NZU1RFTQogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX0ZJ
TFRFUlMKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9GSVhFRF9SRVBPUlRFRF9TSVpFCiAjY21ha2Vk
ZWZpbmUwMSBFTkFCTEVfRlRQRElSCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDYgQEAgRU5B
QkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAkKEVOQQogRU5BQkxFX0VOQ1JZUFRFRF9N
RURJQV9WMl9tYWNvc3hfMTA3MCA9IDsKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4
XzEwODAgPSA7CiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDkwID0gRU5BQkxF
X0VOQ1JZUFRFRF9NRURJQV9WMjsKLUVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKIEVOQUJMRV9GSUxU
RVJTID0gRU5BQkxFX0ZJTFRFUlM7CiBFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUyA9IDsKIEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSA9ICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJXyQoUExBVEZPUk1fTkFN
RSkpOwpAQCAtMTg3LDQgKzE4Niw0IEBAIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKIEVO
QUJMRV9GVExfSklUID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJ
TkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFC
TEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FO
VkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQp
ICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lU
SU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJ
T05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQo
RU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1NfU1RJ
Q0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklY
RUQpICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVM
RVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQo
RU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIp
ICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAk
KEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQo
RU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChF
TkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04p
ICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAk
KEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRk9OVF9MT0FE
X0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElO
RykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5B
QkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVf
SU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
UikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMp
ICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BS
RUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENI
KSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFC
TEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRF
Ul9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAk
KEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChF
TkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkg
JChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BV
QkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJ
UFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJT
KSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5B
QkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFC
TEVfVEhSRUFERURfSFRNTF9QQVJTRVIpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChF
TkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFD
SykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxF
X1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQo
RU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVO
QUJMRV9GVExfSklUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsKK0ZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQo
RU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFU
SU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0Vf
QURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJT
KSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5B
QkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NT
U19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxF
UykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAk
KEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkp
ICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBP
UlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRF
TVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJV
Q1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElB
KSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxF
X0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1F
UEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVS
X1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0Up
ICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVU
X1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9N
T05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsp
ICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9S
X1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZ
X1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJTykgJChFTkFCTEVfTElO
S19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJ
UFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChF
TkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNP
Ul9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9Q
TFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNT
X0VMRU1FTlQpICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAk
KEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChF
TkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFC
QVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJ
TkcpICQoRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xP
QURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
VklERU9fVFJBQ0spICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdM
KSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJf
VElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVf
WFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1F
KSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCwxMCAr
NDc0LDYgQEAKICNkZWZpbmUgRU5BQkxFX0ZBU1RfTU9CSUxFX1NDUk9MTElORyAwCiAjZW5kaWYK
IAotI2lmICFkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkKLSNkZWZpbmUgRU5BQkxFX0ZJTEVf
U1lTVEVNIDAKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxFX0ZJTFRFUlMpCiAjZGVmaW5l
IEVOQUJMRV9GSUxURVJTIDAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNiBAQAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQkNPUkVfRElSfSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9iYXR0ZXJ5Igot
ICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2ZpbGVzeXN0ZW0iCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvZ2FtZXBhZCIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9nZW9sb2Nh
dGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9pbmRleGVkZGIiCkBAIC0xMTYsNyAr
MTE1LDYgQEAgc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogCiBzZXQoV2ViQ29yZV9J
RExfSU5DTFVERVMKICAgICBNb2R1bGVzL2JhdHRlcnkKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0K
ICAgICBNb2R1bGVzL2dhbWVwYWQKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIKQEAgLTE1MywzMyArMTUxLDYgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmlkbAogICAgIE1vZHVsZXMvYmF0dGVy
eS9OYXZpZ2F0b3JCYXR0ZXJ5LmlkbAogCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVT
eXN0ZW0uaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbAot
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbAotICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbS5pZGwKLSAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeUVudHJ5U3luYy5pZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVh
ZGVyLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbAot
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaWRsCi0gICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5LmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5Lmlk
bAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwKLSAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5pZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlTeW5jLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlkbAotICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsCi0gICAgTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVFbnRyeS5pZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5p
ZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbAotICAgIE1v
ZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlV3JpdGVyQ2FsbGJhY2suaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJT
eW5jLmlkbAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3Rl
bS5pZGwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRsCi0gICAgTW9kdWxlcy9m
aWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaWRsCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL1dv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5pZGwKLQogICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1l
cGFkLmlkbAogICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5pZGwKICAgICBNb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5pZGwKQEAgLTc2OSwzMCArNzQwLDYgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmNwcAogICAg
IE1vZHVsZXMvYmF0dGVyeS9OYXZpZ2F0b3JCYXR0ZXJ5LmNwcAogCi0gICAgTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVQYXRoLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lz
dGVtLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKLSAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwCi0gICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5LmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRy
eVN5bmMuY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAKLSAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAKLSAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnkuY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXku
Y3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNwcAotICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
U3luYy5jcHAKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmNwcAotICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVy
LmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5jcHAKLSAgICBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVt
L0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmNwcAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9M
b2NhbEZpbGVTeXN0ZW0uY3BwCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNj
b3BlRmlsZVN5c3RlbS5jcHAKLQogICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmNwcAogICAg
IE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5jcHAKICAgICBNb2R1bGVzL2dhbWVwYWQvTmF2
aWdhdG9yR2FtZXBhZC5jcHAKQEAgLTE1OTUsNyArMTU0Miw2IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckhlYXBQcm9maWxlckFnZW50LmNwcApAQCAtMTc5Nyw3ICsxNzQzLDYgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIHBsYXRm
b3JtL0FyZW5hLmNwcAotICAgIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAKICAgICBwbGF0
Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcAogICAgIHBsYXRmb3JtL0Nsb2NrLmNwcAogICAgIHBs
YXRmb3JtL0Nsb2NrR2VuZXJpYy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA0LDE4ICsxMDQsMTIgQEAKICNpbmNsdWRlICJKU0RhdGFUcmFu
c2Zlckl0ZW1MaXN0LmNwcCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcCIKICNpbmNsdWRlICJKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIgotI2luY2x1ZGUg
IkpTRGlyZWN0b3J5RW50cnkuY3BwIgotI2luY2x1ZGUgIkpTRGlyZWN0b3J5RW50cnlTeW5jLmNw
cCIKLSNpbmNsdWRlICJKU0RpcmVjdG9yeVJlYWRlci5jcHAiCi0jaW5jbHVkZSAiSlNEaXJlY3Rv
cnlSZWFkZXJTeW5jLmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50LmNwcCIKICNpbmNsdWRlICJK
U0RvY3VtZW50RnJhZ21lbnQuY3BwIgogI2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBlLmNwcCIKICNp
bmNsdWRlICJKU0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwIgogI2luY2x1ZGUgIkpTRE9NQ29yZUV4
Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNET01FcnJvci5jcHAiCi0jaW5jbHVkZSAiSlNET01G
aWxlU3lzdGVtLmNwcCIKLSNpbmNsdWRlICJKU0RPTUZpbGVTeXN0ZW1TeW5jLmNwcCIKICNpbmNs
dWRlICJKU0RPTUZvcm1EYXRhLmNwcCIKICNpbmNsdWRlICJKU0RPTUltcGxlbWVudGF0aW9uLmNw
cCIKICNpbmNsdWRlICJKU0RPTU1pbWVUeXBlLmNwcCIKQEAgLTEzNywzMSArMTMxLDE3IEBACiAj
aW5jbHVkZSAiSlNFbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0VudGl0eS5jcHAiCiAjaW5jbHVk
ZSAiSlNFbnRpdHlSZWZlcmVuY2UuY3BwIgotI2luY2x1ZGUgIkpTRW50cmllc0NhbGxiYWNrLmNw
cCIKLSNpbmNsdWRlICJKU0VudHJ5LmNwcCIKLSNpbmNsdWRlICJKU0VudHJ5QXJyYXkuY3BwIgot
I2luY2x1ZGUgIkpTRW50cnlBcnJheVN5bmMuY3BwIgotI2luY2x1ZGUgIkpTRW50cnlTeW5jLmNw
cCIKLSNpbmNsdWRlICJKU0VudHJ5Q2FsbGJhY2suY3BwIgotI2luY2x1ZGUgIkpTRXJyb3JDYWxs
YmFjay5jcHAiCiAjaW5jbHVkZSAiSlNFcnJvckV2ZW50LmNwcCIKICNpbmNsdWRlICJKU0V2ZW50
LmNwcCIKICNpbmNsdWRlICJKU0V2ZW50RXhjZXB0aW9uLmNwcCIKICNpbmNsdWRlICJKU0V2ZW50
U291cmNlLmNwcCIKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmNwcCIKICNpbmNsdWRlICJKU0Zp
bGUuY3BwIgotI2luY2x1ZGUgIkpTRmlsZUNhbGxiYWNrLmNwcCIKLSNpbmNsdWRlICJKU0ZpbGVF
bnRyeS5jcHAiCi0jaW5jbHVkZSAiSlNGaWxlRW50cnlTeW5jLmNwcCIKICNpbmNsdWRlICJKU0Zp
bGVFcnJvci5jcHAiCiAjaW5jbHVkZSAiSlNGaWxlRXhjZXB0aW9uLmNwcCIKICNpbmNsdWRlICJK
U0ZpbGVMaXN0LmNwcCIKICNpbmNsdWRlICJKU0ZpbGVSZWFkZXIuY3BwIgogI2luY2x1ZGUgIkpT
RmlsZVJlYWRlclN5bmMuY3BwIgotI2luY2x1ZGUgIkpTRmlsZVN5c3RlbUNhbGxiYWNrLmNwcCIK
LSNpbmNsdWRlICJKU0ZpbGVXcml0ZXIuY3BwIgotI2luY2x1ZGUgIkpTRmlsZVdyaXRlckNhbGxi
YWNrLmNwcCIKLSNpbmNsdWRlICJKU0ZpbGVXcml0ZXJTeW5jLmNwcCIKICNpbmNsdWRlICJKU0Zv
Y3VzRXZlbnQuY3BwIgogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQogI2luY2x1ZGUgIkpT
Rm9udExvYWRlci5jcHAiCkBAIC0yNzUsOCArMjU1LDYgQEAKICNpbmNsdWRlICJKU01lc3NhZ2VD
aGFubmVsLmNwcCIKICNpbmNsdWRlICJKU01lc3NhZ2VFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNN
ZXNzYWdlUG9ydC5jcHAiCi0jaW5jbHVkZSAiSlNNZXRhZGF0YS5jcHAiCi0jaW5jbHVkZSAiSlNN
ZXRhZGF0YUNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU01vdXNlRXZlbnQuY3BwIgogI2luY2x1
ZGUgIkpTTXV0YXRpb25FdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNNdXRhdGlvbk9ic2VydmVyLmNw
cCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNiBAQAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5
c3RlbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvaW5kZXhlZGRiIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kaWV1aSBc
CkBAIC03MCwzMCArNjksNiBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsIFwKLSAgICAkKFdlYkNv
cmUpL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwgXAotICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwgXAotICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaWRsIFwK
LSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGwgXAotICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsIFwKLSAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMv
ZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZUVudHJ5LmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZUVudHJ5U3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVTeXN0ZW1DYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVXcml0ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
V3JpdGVyQ2FsbGJhY2suaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlV3JpdGVyU3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL01l
dGFkYXRhLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFD
YWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckds
b2JhbFNjb3BlRmlsZVN5c3RlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9Db29yZGluYXRlcy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9wb3NpdGlvbi5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNp
b24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC05MywyOSArOTMsNiBAQCBQTFVHSU5TX0VNQkVEID0gXAogICAgICQkUFdEL1Jl
c291cmNlcy9wbHVnSW5zLmpzCiAKIElETF9CSU5ESU5HUyArPSBcCi0gICAgJCRQV0QvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeS5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeVN5bmMuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5UmVhZGVyLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJl
YWRlclN5bmMuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxi
YWNrLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbCBcCi0gICAg
JCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsIFwKLSAgICAkJFBXRC9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlDYWxsYmFjay5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeVN5bmMuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxs
YmFjay5pZGwgXAotICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRs
IFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmlkbCBcCi0gICAgJCRQ
V0QvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaWRsIFwKLSAgICAkJFBXRC9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVt
L01ldGFkYXRhLmlkbCBcCi0gICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2Fs
bGJhY2suaWRsIFwKLSAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyR2xvYmFsU2Nv
cGVGaWxlU3lzdGVtLmlkbCBcCiAgICAgJCRQV0QvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGlu
YXRlcy5pZGwgXAogICAgICQkUFdEL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaWRs
IFwKICAgICAkJFBXRC9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb3Bvc2l0aW9uLmlkbCBcCkBAIC03
NjYsNyArNzQzLDYgQEAgZ2VuZXJhdGVCaW5kaW5ncy5zY3JpcHQgPSAkJFBXRC9iaW5kaW5ncwog
Z2VuZXJhdGVCaW5kaW5ncy5jb21tYW5kcyA9ICQkc2V0RW52aXJvbm1lbnRWYXJpYWJsZShTT1VS
Q0VfUk9PVCwgJCR0b1N5c3RlbVBhdGgoJCRQV0QpKSAmJiBwZXJsIC1JJCRQV0QvYmluZGluZ3Mv
c2NyaXB0cyAkJGdlbmVyYXRlQmluZGluZ3Muc2NyaXB0IFwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtLWRlZmluZXMgXCIkJGphdmFzY3JpcHRGZWF0dXJlRGVmaW5lcygpXCIgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC0tZ2VuZXJhdG9yIEpTIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtLWluY2x1ZGUgTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtLWluY2x1ZGUgTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLS1pbmNsdWRlIE1vZHVsZXMvaW5kZXhlZGRiIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtLWluY2x1ZGUgTW9kdWxlcy9tZWRpYXNvdXJjZSBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NSwx
NCArMTY1LDYgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRGV2aWNlTW90aW9uRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RGV2aWNlT3JpZW50YXRpb25FdmVudC5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGly
ZWN0b3J5RW50cnkuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGlyZWN0b3J5RW50
cnkuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RpcmVjdG9yeUVudHJ5U3luYy5jcHAg
XAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEaXJlY3RvcnlFbnRyeVN5bmMuaCBcCi0JRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RpcmVjdG9yeVJlYWRlci5jcHAgXAotCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNEaXJlY3RvcnlSZWFkZXIuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RGlyZWN0b3J5UmVhZGVyU3luYy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1l
bnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRGcmFnbWVudC5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudEZyYWdtZW50LmggXApAQCAtMTg1
LDEwICsxNzcsNiBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNET01Db3JlRXhjZXB0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNET01FcnJvci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01FcnJvci5oIFwK
LQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NRmlsZVN5c3RlbS5jcHAgXAotCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNET01GaWxlU3lzdGVtLmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNET01GaWxlU3lzdGVtU3luYy5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNE
T01GaWxlU3lzdGVtU3luYy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NRm9ybURh
dGEuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NRm9ybURhdGEuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTUltcGxlbWVudGF0aW9uLmNwcCBcCkBAIC0yMzMsMjAg
KzIyMSw2IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0VudGl0eS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50aXR5UmVmZXJl
bmNlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VudGl0eVJlZmVyZW5jZS5oIFwK
LQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cmllc0NhbGxiYWNrLmNwcCBcCi0JRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0VudHJpZXNDYWxsYmFjay5oIFwKLQlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRW50cnkuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnkuaCBc
Ci0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VudHJ5QXJyYXkuY3BwIFwKLQlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRW50cnlBcnJheS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RW50cnlBcnJheVN5bmMuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnlBcnJh
eVN5bmMuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VudHJ5Q2FsbGJhY2suY3BwIFwK
LQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50cnlDYWxsYmFjay5oIFwKLQlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRW50cnlTeW5jLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0VudHJ5U3luYy5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRXJyb3JDYWxsYmFjay5j
cHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFcnJvckNhbGxiYWNrLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNFcnJvckV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0Vycm9yRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VYVERyYXdC
dWZmZXJzLmNwcCBcCkBAIC0yNjIsMTIgKzIzNiw2IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0V2ZW50VGFyZ2V0LmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0V2ZW50VGFyZ2V0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNGaWxlLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVDYWxsYmFjay5j
cHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlQ2FsbGJhY2suaCBcCi0JRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVFbnRyeS5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNGaWxlRW50cnkuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVFbnRyeVN5
bmMuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZUVudHJ5U3luYy5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZUVycm9yLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0ZpbGVFcnJvci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZS5o
IFwKQEAgLTI3OSwxNCArMjQ3LDYgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVJlYWRlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRmlsZVJlYWRlclN5bmMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmls
ZVJlYWRlclN5bmMuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVTeXN0ZW1DYWxs
YmFjay5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlU3lzdGVtQ2FsbGJhY2su
aCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVXcml0ZXIuY3BwIFwKLQlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRmlsZVdyaXRlci5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zp
bGVXcml0ZXJDYWxsYmFjay5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVdyaXRl
clN5bmMuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZVdyaXRlclN5bmMuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvY3VzRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRm9jdXNFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
Rm9udExvYWRlci5jcHAgXApAQCAtNTI2LDEwICs0ODYsNiBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXNzYWdlRXZlbnQuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lc3NhZ2VQb3J0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU01lc3NhZ2VQb3J0LmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXRh
ZGF0YS5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZXRhZGF0YS5oIFwKLQlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWV0YWRhdGFDYWxsYmFjay5jcHAgXAotCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNNZXRhZGF0YUNhbGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNNb3VzZUV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01vdXNlRXZl
bnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU011dGF0aW9uRXZlbnQuY3BwIFwKQEAg
LTExOTksMzAgKzExNTUsNiBAQCB3ZWJjb3JlX3N2Z19idWlsdF9zb3VyY2VzICs9IFwKIGRvbV9i
aW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5h
Z2VyLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2JhdHRlcnkvTmF2aWdhdG9yQmF0dGVyeS5p
ZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsIFwK
LQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAot
CSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwK
LQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwgXAotCSQo
V2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAotCSQo
V2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwgXAotCSQoV2Vi
Q29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwKLQkkKFdl
YkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaWRsIFwKLQkkKFdlYkNv
cmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5U3luYy5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5Q2FsbGJhY2suaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5
bmMuaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlk
bCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmlkbCBcCi0J
JChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmlkbCBcCi0JJChXZWJDb3Jl
KS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5pZGwgXAotCSQoV2ViQ29yZSkvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGwgXAotCSQoV2ViQ29yZSkvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lz
dGVtL01ldGFkYXRhLmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRh
dGFDYWxsYmFjay5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckds
b2JhbFNjb3BlRmlsZVN5c3RlbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkL0dh
bWVwYWQuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5pZGwg
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaWRsIFwKQEAg
LTE4MDUsNjMgKzE3MzcsNiBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iYXR0ZXJ5L05hdmlnYXRvckJhdHRlcnkuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2JhdHRlcnkvTmF2aWdhdG9yQmF0dGVyeS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0ZXJDbGllbnQuaCBcCi0JU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmggXAotCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgg
XAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaCBc
Ci0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmggXAotCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QXJyYXlTeW5jLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUJhc2UuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlCYXNlLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNh
bGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmggXAot
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmggXAotCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaCBcCi0JU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBcCi0JU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1GbGFncy5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbVR5cGUuaCBcCi0JU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL01ldGFkYXRhLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1l
cGFkL0dhbWVwYWRMaXN0LmNwcCBcCkBAIC01MzY1LDkgKzUyNDAsNiBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5u
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmggXAotCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fz
eW5jRmlsZVN5c3RlbS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQkod29ya2luZyBjb3B5KQpA
QCAtMTQ4LDEzICsxNDgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbFN0b3JhZ2VCbGFja0JlcnJ5LmNwcAog
KQogCi0jIEZpbGUgU3lzdGVtIHN1cHBvcnQKLWlmIChFTkFCTEVfRklMRV9TWVNURU0pCi0gICAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIHBsYXRmb3JtL2JsYWNrYmVycnkv
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKLSAgICApCi1lbmRpZiAoKQotCiBpZiAoRU5B
QkxFX1NNT09USF9TQ1JPTExJTkcpCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvU2Nyb2xsQW5pbWF0b3JCbGFja0JlcnJ5LmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMjcgKzIwNSw2IEBAIFNPVVJDRVMgKz0gXAog
CiAKIFNPVVJDRVMgKz0gXAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5jcHAg
XAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcCBcCi0gICAgTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdp
bmRvd0ZpbGVTeXN0ZW0uY3BwIFwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnkuY3BwIFwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBc
Ci0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAgXAotICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCBcCi0gICAgTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5LmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3Bw
IFwKLSAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuY3BwIFwKLSAgICBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5U3luYy5jcHAgXAotICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuY3BwIFwKLSAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5jcHAgXAotICAgIE1vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlV3JpdGVyLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0
ZXJCYXNlLmNwcCBcCi0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcCBc
Ci0gICAgTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHAgXAotICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwIFwKICAgICBNb2R1
bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwIFwKICAg
ICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgXAogICAg
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKQEAgLTMxMDQsNTEgKzMw
ODMsNiBAQCBlbmFibGU/KERBVEFfVFJBTlNGRVJfSVRFTVMpIHsKICAgICAgICAgcGxhdGZvcm0v
cXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5jcHAKIH0KIAotZW5hYmxlPyhGSUxFX1NZU1RFTSkg
ewotICAgIEhFQURFUlMgKz0gXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxl
V3JpdGVyLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguaCBcCi0g
ICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmggXAotICAgICAgICBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaCBcCi0gICAgICAgIE1vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5LmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
RW50cnlTeW5jLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
LmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oIFwK
LSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCi0gICAg
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaCBcCi0gICAgICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeS5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
QXJyYXkuaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oIFwK
LSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5oIFwKLSAgICAgICAgTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeVN5bmMuaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNr
LmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmggXAotICAgICAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZUVudHJ5U3luYy5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVT
eXN0ZW1DYWxsYmFjay5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtRmxhZ3Mu
aCBcCi0gICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmggXAotICAgICAgICBN
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuaCBcCi0gICAgICAgIE1vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZVdyaXRlckNsaWVudC5oIFwKLSAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0
ZXJTeW5jLmggXAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmgg
XAotICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaCBcCi0gICAgICAgIE1vZHVs
ZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmggXAotICAgICAgICBwbGF0Zm9ybS9Bc3lu
Y0ZpbGVTeXN0ZW0uaCBcCi0gICAgICAgIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cy5oIFwKLSAgICAgICAgcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgKLQotICAgIFNPVVJDRVMgKz0g
XAotICAgICAgICBiaW5kaW5ncy9qcy9KU0VudHJ5Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJpbmRp
bmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL0FzeW5jRmls
ZVN5c3RlbS5jcHAKLX0KLQogZW5hYmxlPyhNRURJQV9TT1VSQ0UpIHsKICAgICBIRUFERVJTICs9
IFwKICAgICAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjE3LDEzICsyMTcsNiBAQCBpZiAoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKQogICAgICkKIGVuZGlmICgpCiAKLWlmIChFTkFCTEVfRklMRV9TWVNURU0pCi0g
ICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTRW50
cnlDdXN0b20uY3BwCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcAot
ICAgICkKLWVuZGlmICgpCi0KIGlmIChFTkFCTEVfU1ZHKQogICAgIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgICAgICBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3Rv
bS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsNiBAQCBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeCA9ICQoRU5B
CiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeF8xMDcwID0gOwogRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMl9tYWNvc3hfMTA4MCA9IDsKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJf
bWFjb3N4XzEwOTAgPSBFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyOwotRU5BQkxFX0ZJTEVfU1lT
VEVNID0gOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GT05UX0xP
QURfRVZFTlRTID0gOwogRU5BQkxFX0ZVTExTQ1JFRU5fQVBJID0gJChFTkFCTEVfRlVMTFNDUkVF
Tl9BUElfJChQTEFURk9STV9OQU1FKSk7CkBAIC0xODcsNCArMTg2LDQgQEAgRU5BQkxFX1hTTFQg
PSBFTkFCTEVfWFNMVDsKIAogRU5BQkxFX0ZUTF9KSVQgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAk
KEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZB
U19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAk
KEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikg
JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9D
U1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVO
QUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQ
RVMpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1T
X0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVf
Q1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1Mz
X1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NV
U1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxF
X0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxF
X0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
SVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFC
TEVfRFJBR0dBQkxFX1JFR0lPTikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9F
TkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJT
KSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChF
TkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdF
X0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9J
TkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lO
UFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRf
VFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQo
RU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09O
VFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJ
U1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9N
T1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVO
QUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJM
RV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAkKEVOQUJM
RV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZ
X0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChF
TkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFf
UVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChF
TkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxF
X1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVY
VF9BVVRPU0laSU5HKSAkKEVOQUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUikgJChFTkFCTEVfVE9V
Q0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8p
ICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVO
QUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChF
TkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVPVVQp
ICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExB
VEZPUk1fTkFNRSkpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAk
KEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NB
Q0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19Q
Uk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVO
QUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykg
JChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykg
JChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChF
TkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJM
RV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9Q
T1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAk
KEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAk
KEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJM
RV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVO
QUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxF
X0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVO
QUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9I
SURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQ
RUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
Ul9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFC
TEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VC
X0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxF
X01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9N
RURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkg
JChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9V
VElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQ
SSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURF
TykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxF
X1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVf
UVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVU
SU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURP
V19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lT
KSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQo
RU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEhSRUFERURfSFRNTF9QQVJTRVIpICQo
RU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklFV19NT0RFX0NTU19N
RURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NP
Q0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hI
Ul9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEZFQVRVUkVfREVG
SU5FU18kKFBMQVRGT1JNX05BTUUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9Bc3luY0ZpbGVXcml0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyLmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBc3luY0ZpbGVXcml0ZXJfaAotI2Rl
ZmluZSBBc3luY0ZpbGVXcml0ZXJfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBCbG9iOwotCi1jbGFzcyBBc3luY0ZpbGVX
cml0ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgfkFzeW5jRmlsZVdyaXRlcigpIHsgfQotCi0g
ICAgdmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB3YWl0Rm9yT3BlcmF0
aW9uVG9Db21wbGV0ZSgpIC8vIE5lZWRlZCBmb3IgRmlsZVdyaXRlclN5bmMgb25seS4KLSAgICB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gQXN5bmNGaWxlV3JpdGVy
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0ZXJDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBc3luY0ZpbGVXcml0ZXJDbGllbnRfaAot
I2RlZmluZSBBc3luY0ZpbGVXcml0ZXJDbGllbnRfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgQXN5bmNGaWxlV3JpdGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Bc3luY0Zp
bGVXcml0ZXJDbGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZShsb25nIGxv
bmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNh
dGUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoRmlsZUVycm9yOjpFcnJvckNvZGUp
ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNlbmRpZiAvLyBBc3luY0ZpbGVXcml0ZXJDbGllbnRfaApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguY3BwCShyZXZpc2lv
biAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBh
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IGNoYXIgRE9NRmlsZVBhdGg6OnNlcGFyYXRv
ciA9ICcvJzsKLWNvbnN0IGNoYXIgRE9NRmlsZVBhdGg6OnJvb3RbXSA9ICIvIjsKLQotU3RyaW5n
IERPTUZpbGVQYXRoOjphcHBlbmQoY29uc3QgU3RyaW5nJiBiYXNlLCBjb25zdCBTdHJpbmcmIGNv
bXBvbmVudHMpCi17Ci0gICAgcmV0dXJuIGVuc3VyZURpcmVjdG9yeVBhdGgoYmFzZSkgKyBjb21w
b25lbnRzOwotfQotCi1TdHJpbmcgRE9NRmlsZVBhdGg6OmVuc3VyZURpcmVjdG9yeVBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmICghRE9NRmlsZVBhdGg6OmVuZHNXaXRoU2VwYXJh
dG9yKHBhdGgpKSB7Ci0gICAgICAgIFN0cmluZyBuZXdQYXRoID0gcGF0aDsKLSAgICAgICAgbmV3
UGF0aC5hcHBlbmQoRE9NRmlsZVBhdGg6OnNlcGFyYXRvcik7Ci0gICAgICAgIHJldHVybiBuZXdQ
YXRoOwotICAgIH0KLSAgICByZXR1cm4gcGF0aDsKLX0KLQotU3RyaW5nIERPTUZpbGVQYXRoOjpn
ZXROYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBpbnQgaW5kZXggPSBwYXRoLnJldmVy
c2VGaW5kKERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpOwotICAgIGlmIChpbmRleCAhPSAtMSkKLSAg
ICAgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKGluZGV4ICsgMSk7Ci0gICAgcmV0dXJuIHBhdGg7
Ci19Ci0KLVN0cmluZyBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBpbnQgaW5kZXggPSBwYXRoLnJldmVyc2VGaW5kKERPTUZpbGVQYXRoOjpzZXBh
cmF0b3IpOwotICAgIGlmICghaW5kZXgpCi0gICAgICAgIHJldHVybiBET01GaWxlUGF0aDo6cm9v
dDsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAgICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygw
LCBpbmRleCk7Ci0gICAgcmV0dXJuICIuIjsKLX0KLQotYm9vbCBET01GaWxlUGF0aDo6aXNQYXJl
bnRPZihjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiBtYXlCZUNoaWxkKQotewot
ICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXJlbnQpKTsKLSAgICBBU1NFUlQo
RE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUobWF5QmVDaGlsZCkpOwotICAgIGlmIChwYXJlbnQgPT0g
RE9NRmlsZVBhdGg6OnJvb3QgJiYgbWF5QmVDaGlsZCAhPSBET01GaWxlUGF0aDo6cm9vdCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHBhcmVudC5sZW5ndGgoKSA+PSBtYXlCZUNoaWxk
Lmxlbmd0aCgpIHx8ICFtYXlCZUNoaWxkLnN0YXJ0c1dpdGgocGFyZW50LCBmYWxzZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobWF5QmVDaGlsZFtwYXJlbnQubGVuZ3RoKCldICE9
IERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVy
ZW5jZXMoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNB
YnNvbHV0ZShwYXRoKSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gY29tcG9uZW50czsKLSAgICBWZWN0
b3I8U3RyaW5nPiBjYW5vbmljYWxpemVkOwotICAgIHBhdGguc3BsaXQoRE9NRmlsZVBhdGg6OnNl
cGFyYXRvciwgY29tcG9uZW50cyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb21wb25l
bnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChjb21wb25lbnRzW2ldID09ICIuIikKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoY29tcG9uZW50c1tpXSA9PSAiLi4iKSB7
Ci0gICAgICAgICAgICBpZiAoY2Fub25pY2FsaXplZC5zaXplKCkgPiAwKQotICAgICAgICAgICAg
ICAgIGNhbm9uaWNhbGl6ZWQucmVtb3ZlTGFzdCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2Fub25pY2FsaXplZC5hcHBlbmQoY29tcG9uZW50c1tpXSk7Ci0g
ICAgfQotICAgIGlmIChjYW5vbmljYWxpemVkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIERP
TUZpbGVQYXRoOjpyb290OwotICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjYW5vbmljYWxpemVkLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoRE9NRmlsZVBhdGg6OnNlcGFyYXRvcik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoY2Fub25p
Y2FsaXplZFtpXSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWJvb2wgRE9NRmls
ZVBhdGg6OmlzVmFsaWRQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBpZiAocGF0aC5p
c0VtcHR5KCkgfHwgcGF0aCA9PSBET01GaWxlUGF0aDo6cm9vdCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAvLyBFbWJlZGRlZCBOVUxzIGFyZSBub3QgYWxsb3dlZC4KLSAgICBpZiAocGF0
aC5maW5kKHN0YXRpY19jYXN0PFVDaGFyPigwKSkgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgLy8gV2hpbGUgbm90IFt5ZXRdIHJlc3RyaWN0ZWQgYnkgdGhl
IHNwZWMsICdcXCcgY29tcGxpY2F0ZXMgaW1wbGVtZW50YXRpb24gZm9yIENocm9taXVtLgotICAg
IGlmIChwYXRoLmZpbmQoJ1xcJykgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgLy8gVGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgb24gZnVsbHktZXZhbHVh
dGVkIGFic29sdXRlIHBhdGhzLiBBbnkgc2lnbiBvZiAiLi4iIG9yICIuIiBpcyBsaWtlbHkgYW4g
YXR0ZW1wdCB0byBicmVhayBvdXQgb2YgdGhlIHNhbmRib3guCi0gICAgVmVjdG9yPFN0cmluZz4g
Y29tcG9uZW50czsKLSAgICBwYXRoLnNwbGl0KERPTUZpbGVQYXRoOjpzZXBhcmF0b3IsIGNvbXBv
bmVudHMpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tcG9uZW50cy5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAoY29tcG9uZW50c1tpXSA9PSAiLiIpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGlmIChjb21wb25lbnRzW2ldID09ICIuLiIpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZp
bGVQYXRoOjppc1ZhbGlkTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgaWYgKG5hbWUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAvLyAnLycgaXMgbm90IGFsbG93
ZWQgaW4gbmFtZS4KLSAgICBpZiAobmFtZS5jb250YWlucygnLycpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGlzVmFsaWRQYXRoKG5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguaAkocmV2aXNpb24g
MTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NRmlsZVBhdGhfaAot
I2RlZmluZSBET01GaWxlUGF0aF9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8g
RE9NRmlsZVN5c3RlbSBwYXRoIHV0aWxpdGllcy4gQWxsIG1ldGhvZHMgaW4gdGhpcyBjbGFzcyBh
cmUgc3RhdGljLgotY2xhc3MgRE9NRmlsZVBhdGggewotcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBjaGFyIHNlcGFyYXRvcjsKLSAgICBzdGF0aWMgY29uc3QgY2hhciByb290W107Ci0KLSAgICAv
LyBSZXR1cm5zIHRoZSBuYW1lIHBhcnQgZnJvbSB0aGUgZ2l2ZW4gcGF0aC4KLSAgICBzdGF0aWMg
U3RyaW5nIGdldE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQotICAgIC8vIFJldHVybnMgdGhl
IHBhcmVudCBkaXJlY3RvcnkgcGF0aCBvZiB0aGUgZ2l2ZW4gcGF0aC4KLSAgICBzdGF0aWMgU3Ry
aW5nIGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpOwotCi0gICAgLy8gQ2hlY2tzIGlm
IGEgZ2l2ZW4gcGF0aCBpcyBhIHBhcmVudCBvZiBtYXlCZUNoaWxkLiBUaGlzIG1ldGhvZCBhc3N1
bWVzIGdpdmVuIHBhdGhzIGFyZSBhYnNvbHV0ZSBhbmQgZG8gbm90IGhhdmUgZXh0cmEgcmVmZXJl
bmNlcyB0byBhIHBhcmVudCAoaS5lLiAiLi4vIikuCi0gICAgc3RhdGljIGJvb2wgaXNQYXJlbnRP
Zihjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWF5QmVDaGlsZCk7Ci0KLSAgICAv
LyBBcHBlbmRzIHRoZSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCBpZiBpdCdzIG5v
dCB0aGVyZSBhbHJlYWR5LgotICAgIHN0YXRpYyBTdHJpbmcgZW5zdXJlRGlyZWN0b3J5UGF0aChj
b25zdCBTdHJpbmcmIHBhdGgpOwotCi0gICAgLy8gUmV0dXJucyBhIG5ldyBwYXRoIGJ5IGFwcGVu
ZGluZyBhIHNlcGFyYXRvciBhbmQgdGhlIHN1cHBsaWVkIHBhdGggY29tcG9uZW50IHRvIHRoZSBw
YXRoLgotICAgIHN0YXRpYyBTdHJpbmcgYXBwZW5kKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBjb21wb25lbnQpOwotCi0gICAgc3RhdGljIGJvb2wgaXNBYnNvbHV0ZShjb25zdCBT
dHJpbmcmIHBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKERPTUZp
bGVQYXRoOjpyb290KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBlbmRzV2l0aFNlcGFyYXRv
cihjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gcGF0aFtwYXRoLmxl
bmd0aCgpIC0gMV0gPT0gRE9NRmlsZVBhdGg6OnNlcGFyYXRvcjsKLSAgICB9Ci0KLSAgICAvLyBF
dmFsdWF0ZXMgYWxsICIuLi8iIGFuZCAiLi8iIHNlZ21lbnRzLiBOb3RlIHRoYXQgIi8uLi8iIGV4
cGFuZHMgdG8gIi8iLCBzbyB5b3UgY2FuJ3QgZXZlciByZWZlciB0byBhbnl0aGluZyBhYm92ZSB0
aGUgcm9vdCBkaXJlY3RvcnkuCi0gICAgc3RhdGljIFN0cmluZyByZW1vdmVFeHRyYVBhcmVudFJl
ZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQotICAgIC8vIENoZWNrcyBpZiB0aGUgZ2l2
ZW4gcGF0aCBmb2xsb3dzIHRoZSBGaWxlU3lzdGVtIEFQSSBuYW1pbmcgcmVzdHJpY3Rpb25zLgot
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KLSAgICAv
LyBDaGVja3MgaWYgdGhlIGdpdmVuIG5hbWUgZm9sbG93cyB0aGUgRmlsZVN5c3RlbSBBUEkgbmFt
aW5nIHJlc3RyaWN0aW9ucy4KLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBTdHJp
bmcmIG5hbWUpOwotCi1wcml2YXRlOgotICAgIERPTUZpbGVQYXRoKCkgeyB9Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNl
bmRpZiAvLyBET01GaWxlUGF0aF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMjEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
RE9NRmlsZVN5c3RlbS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAi
QXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJE
aXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJG
aWxlLmgiCi0jaW5jbHVkZSAiRmlsZUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5Lmgi
Ci0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNr
cy5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyQmFzZUNh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiTWV0
YWRhdGFDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gc3RhdGljCi1QYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0
IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3Rl
bSkKLXsKLSAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihuZXcg
RE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0
ZW0pKSk7Ci0gICAgZmlsZVN5c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGZp
bGVTeXN0ZW0ucmVsZWFzZSgpOwotfQotCi1QYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZp
bGVTeXN0ZW06OmNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1JZCkKLXsKLSAgICBpZiAoZmlsZXN5
c3RlbUlkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTdHJpbmdCdWlsZGVy
IGZpbGVzeXN0ZW1OYW1lOwotICAgIGZpbGVzeXN0ZW1OYW1lLmFwcGVuZChjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgZmlsZXN5c3RlbU5hbWUu
YXBwZW5kKCI6SXNvbGF0ZWRfIik7Ci0gICAgZmlsZXN5c3RlbU5hbWUuYXBwZW5kKGZpbGVzeXN0
ZW1JZCk7Ci0KLSAgICAvLyBUaGUgcm9vdFVSTCBjcmVhdGVkIGhlcmUgaXMgZ29pbmcgdG8gYmUg
YXR0YWNoZWQgdG8gZWFjaCBmaWxlc3lzdGVtIHJlcXVlc3QgYW5kCi0gICAgLy8gaXMgdG8gYmUg
dmFsaWRhdGVkIGVhY2ggdGltZSB0aGUgcmVxdWVzdCBpcyBiZWluZyBoYW5kbGVkLgotICAgIFN0
cmluZ0J1aWxkZXIgcm9vdFVSTDsKLSAgICByb290VVJMLmFwcGVuZCgiZmlsZXN5c3RlbToiKTsK
LSAgICByb290VVJMLmFwcGVuZChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
KTsKLSAgICByb290VVJMLmFwcGVuZCgiLyIpOwotICAgIHJvb3RVUkwuYXBwZW5kKGlzb2xhdGVk
UGF0aFByZWZpeCk7Ci0gICAgcm9vdFVSTC5hcHBlbmQoIi8iKTsKLSAgICByb290VVJMLmFwcGVu
ZChmaWxlc3lzdGVtSWQpOwotICAgIHJvb3RVUkwuYXBwZW5kKCIvIik7Ci0KLSAgICByZXR1cm4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCks
IEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHJvb3RVUkwudG9T
dHJpbmcoKSksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkpOwotfQotCi1ET01GaWxlU3lzdGVt
OjpET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQotICAgIDogRE9NRmlsZVN5
c3RlbUJhc2UoY29udGV4dCwgbmFtZSwgdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKQot
ICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RGlyZWN0
b3J5RW50cnk+IERPTUZpbGVTeXN0ZW06OnJvb3QoKQotewotICAgIHJldHVybiBEaXJlY3RvcnlF
bnRyeTo6Y3JlYXRlKHRoaXMsIERPTUZpbGVQYXRoOjpyb290KTsKLX0KLQotdm9pZCBET01GaWxl
U3lzdGVtOjpzdG9wKCkKLXsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOwotfQotCi1i
b29sIERPTUZpbGVTeXN0ZW06Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fYXN5bmNGaWxlU3lzdGVtLT5oYXNQZW5kaW5nQWN0aXZpdHkoKTsKLX0KLQotdm9pZCBE
T01GaWxlU3lzdGVtOjpjb250ZXh0RGVzdHJveWVkKCkKLXsKLSAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+c3RvcCgpOwotICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwotfQot
Ci1uYW1lc3BhY2UgewotCi1jbGFzcyBDb252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2sgOiBwdWJs
aWMgRmlsZVdyaXRlckJhc2VDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q29udmVydFRvRmlsZVdyaXRlckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxGaWxlV3Jp
dGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDb252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2soY2FsbGJhY2spKTsKLSAgICB9Ci0KLSAgICBi
b29sIGhhbmRsZUV2ZW50KEZpbGVXcml0ZXJCYXNlKiBmaWxlV3JpdGVyQmFzZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChzdGF0aWNfY2FzdDxGaWxlV3Jp
dGVyKj4oZmlsZVdyaXRlckJhc2UpKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIENvbnZlcnRUb0Zp
bGVXcml0ZXJDYWxsYmFjayhQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gY2FsbGJhY2sp
Ci0gICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICB7Ci0gICAgfQotICAgIFJlZlB0
cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IG1fY2FsbGJhY2s7Ci19OwotCi19Ci0KLXZvaWQgRE9NRmls
ZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVm
UHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKGZpbGVFbnRyeSk7Ci0KLSAg
ICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRlciA9IEZpbGVXcml0ZXI6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIFJlZlB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNr
PiBjb252ZXJzaW9uQ2FsbGJhY2sgPSBDb252ZXJ0VG9GaWxlV3JpdGVyQ2FsbGJhY2s6OmNyZWF0
ZShzdWNjZXNzQ2FsbGJhY2spOwotICAgIE93blB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OmNyZWF0ZShmaWxlV3JpdGVyLCBj
b252ZXJzaW9uQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIG1fYXN5bmNGaWxlU3lzdGVt
LT5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlci5nZXQoKSwgY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxl
RW50cnkpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLX0KLQotbmFtZXNwYWNlIHsKLQotY2xhc3Mg
U25hcHNob3RGaWxlQ2FsbGJhY2sgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2Ugewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNuYXBzaG90RmlsZUNhbGxiYWNrPiBjcmVh
dGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNuYXBzaG90RmlsZUNhbGxiYWNrKGZpbGVzeXN0ZW0s
IG5hbWUsIHVybCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNuYXBzaG90RmlsZShjb25zdCBGaWxlTWV0YWRhdGEm
IG1ldGFkYXRhLCBQYXNzUmVmUHRyPEJsb2JEYXRhSGFuZGxlPiAvKiBzbmFwc2hvdCAqLykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGlmICghbV9zdWNjZXNzQ2FsbGJhY2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgLy8gV2UgY2FuJ3QgZGlyZWN0bHkgdXNlIHRoZSBzbmFwc2hvdCBibG9iIGRhdGEgaGFu
ZGxlIGJlY2F1c2UgdGhlIGNvbnRlbnQgdHlwZSBvbiBpdCBoYXNuJ3QgYmVlbiBzZXQuCi0gICAg
ICAgIC8vIFRoZSB8c25hcHNob3R8IHBhcmFtIGlzIGhlcmUgdG8gcHJvdmlkZSBhIGEgY2hhaW4g
b2YgY3VzdG9keSB0aHJ1IHRocmVhZCBicmlkZ2luZyB0aGF0IGlzIGhlbGQgb250byB1bnRpbAot
ICAgICAgICAvLyAqYWZ0ZXIqIHdlJ3ZlIGNvaW5lZCBhIEZpbGUgd2l0aCBhIG5ldyBoYW5kbGUg
dGhhdCBoYXMgdGhlIGNvcnJlY3QgdHlwZSBzZXQgb24gaXQuIFRoaXMgYWxsb3dzIHRoZQotICAg
ICAgICAvLyBibG9iIHN0b3JhZ2Ugc3lzdGVtIHRvIHRyYWNrIHdoZW4gYSB0ZW1wIGZpbGUgY2Fu
IGFuZCBjYW4ndCBiZSBzYWZlbHkgZGVsZXRlZC4KLQotICAgICAgICAvLyBGb3IgcmVndWxhciBm
aWxlc3lzdGVtIHR5cGVzICh0ZW1wb3Jhcnkgb3IgcGVyc2lzdGVudCksIHdlIHNob3VsZCBub3Qg
Y2FjaGUgZmlsZSBtZXRhZGF0YSBhcyBpdCBjb3VsZCBjaGFuZ2UgRmlsZSBzZW1hbnRpY3MuCi0g
ICAgICAgIC8vIEZvciBvdGhlciBmaWxlc3lzdGVtIHR5cGVzICh3aGljaCBjb3VsZCBiZSBwbGF0
Zm9ybS1zcGVjaWZpYyBvbmVzKSwgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxlcyBhcmUg
b24gcmVtb3RlIGZpbGVzeXN0ZW0uIElmIHRoZSBwb3J0IGhhcyByZXR1cm5lZCBtZXRhZGF0YSBq
dXN0IHBhc3MgaXQgdG8gRmlsZSBjb25zdHJ1Y3RvciAoc28gd2UgbWF5IGNhY2hlIHRoZSBtZXRh
ZGF0YSkuCi0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIHRoZSBzbmFwc2hvdCBtZXRh
ZGF0YSBmb3IgYWxsIGZpbGVzLgotICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvQnVncy9Q
dWJsaWMvc2hvd19idWcuY2dpP2lkPTE3NzQ2Ci0gICAgICAgIGlmIChtX2ZpbGVzeXN0ZW0tPnR5
cGUoKSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCBtX2ZpbGVzeXN0ZW0tPnR5cGUoKSA9
PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpIHsKLSAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxi
YWNrLT5oYW5kbGVFdmVudChGaWxlOjpjcmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBh
dGgsIG1fbmFtZSkuZ2V0KCkpOwotICAgICAgICB9IGVsc2UgaWYgKCFtZXRhZGF0YS5wbGF0Zm9y
bVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcGxhdGZvcm1QYXRoIGlu
IHRoZSByZXR1cm5lZCBtZXRhZGF0YSBpcyBnaXZlbiwgd2UgY3JlYXRlIGEgRmlsZSBvYmplY3Qg
Zm9yIHRoZSBwYXRoLgotICAgICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50
KEZpbGU6OmNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKG1fbmFtZSwgbWV0YWRhdGEpLmdldCgpKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE90aGVyd2lzZSBjcmVhdGUgYSBGaWxl
IGZyb20gdGhlIEZpbGVTeXN0ZW0gVVJMLgotICAgICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KEZpbGU6OmNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKG1fdXJsLCBtZXRhZGF0
YSkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sucmVsZWFz
ZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTbmFwc2hvdEZpbGVDYWxsYmFjayhQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgIGNvbnN0
IFVSTCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgICAgIDogRmlsZVN5c3Rl
bUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKLSAgICAgICAgLCBtX2ZpbGVzeXN0ZW0oZmls
ZXN5c3RlbSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3VybCh1cmwpCi0g
ICAgICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQotICAgIHsKLSAgICB9
Ci0KLSAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwotICAgIFN0cmluZyBt
X25hbWU7Ci0gICAgVVJMIG1fdXJsOwotICAgIFJlZlB0cjxGaWxlQ2FsbGJhY2s+IG1fc3VjY2Vz
c0NhbGxiYWNrOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotdm9pZCBET01GaWxlU3lzdGVtOjpj
cmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCi17Ci0gICAgVVJMIGZpbGVTeXN0ZW1VUkwgPSBjcmVhdGVGaWxlU3lzdGVtVVJMKGZp
bGVFbnRyeSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJl
YWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMLCBTbmFwc2hvdEZpbGVDYWxsYmFjazo6Y3JlYXRlKHRo
aXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJMLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDExNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBET01GaWxlU3lzdGVtX2gKLSNkZWZpbmUgRE9NRmls
ZVN5c3RlbV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBE
aXJlY3RvcnlFbnRyeTsKLWNsYXNzIEZpbGU7Ci1jbGFzcyBGaWxlQ2FsbGJhY2s7Ci1jbGFzcyBG
aWxlRW50cnk7Ci1jbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7Ci0KLWNsYXNzIERPTUZpbGVTeXN0
ZW0gOiBwdWJsaWMgRE9NRmlsZVN5c3RlbUJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qgewot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwg
Y29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotCi0gICAg
Ly8gQ3JlYXRlcyBhIG5ldyBpc29sYXRlZCBmaWxlIHN5c3RlbSBmb3IgdGhlIGdpdmVuIGZpbGVz
eXN0ZW1JZC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVhdGVJc29s
YXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZmls
ZXN5c3RlbUlkKTsKLQotICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QoKTsKLQot
ICAgIC8vIEFjdGl2ZURPTU9iamVjdCBtZXRob2RzLgotICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdCBPVkVSUklERTsKLQotICAgIHZvaWQgY3JlYXRlV3JpdGVyKGNv
bnN0IEZpbGVFbnRyeSosIFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSos
IFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0K
LSAgICAvLyBTY2hlZHVsZSBhIGNhbGxiYWNrLiBUaGlzIHNob3VsZCBub3QgY3Jvc3MgdGhyZWFk
cyAoc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgc2FtZSBjb250ZXh0IHRocmVhZCkuCi0gICAgLy8g
RklYTUU6IG1vdmUgdGhpcyB0byBhIG1vcmUgZ2VuZXJpYyBwbGFjZS4KLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgotICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlQ2Fs
bGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Q0I+LCBQYXNzUmVmUHRy
PENCQXJnPik7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgot
ICAgIHZvaWQgc2NoZWR1bGVDYWxsYmFjayhQYXNzUmVmUHRyPENCPiBjYWxsYmFjaywgUGFzc1Jl
ZlB0cjxDQkFyZz4gY2FsbGJhY2tBcmcpCi0gICAgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNr
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJhY2ssIGNhbGxiYWNrQXJnKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgRE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IG1l
dGhvZHMuCi0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOwotCi0gICAgLy8gQSBoZWxwZXIgdGVtcGxh
dGUgdG8gc2NoZWR1bGUgYSBjYWxsYmFjayB0YXNrLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
QiwgdHlwZW5hbWUgQ0JBcmc+Ci0gICAgY2xhc3MgRGlzcGF0Y2hDYWxsYmFja1Rhc2sgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Ci0gICAgcHVibGljOgotICAgICAgICBE
aXNwYXRjaENhbGxiYWNrVGFzayhQYXNzUmVmUHRyPENCPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxD
QkFyZz4gYXJnKQotICAgICAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICAgICAg
ICAgLCBtX2NhbGxiYWNrQXJnKGFyZykKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2NhbGxiYWNrQXJnLmdl
dCgpKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPENCPiBtX2Nh
bGxiYWNrOwotICAgICAgICBSZWZQdHI8Q0JBcmc+IG1fY2FsbGJhY2tBcmc7Ci0gICAgfTsKLX07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDQiwgdHlwZW5hbWUgQ0JBcmc+Ci12b2lkIERPTUZpbGVT
eXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxDQj4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8Q0JBcmc+
IGFyZykKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhy
ZWFkKCkpOwotICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soYWRvcHRQdHIobmV3IERpc3BhdGNoQ2FsbGJhY2tUYXNrPENCLCBDQkFyZz4o
Y2FsbGJhY2ssIGFyZykpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERPTUZpbGVTeXN0ZW1faApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmlkbAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVTeXN0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50
ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEFjdGl2ZURP
TU9iamVjdCwKLSAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBET01GaWxlU3lzdGVt
IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIERpcmVjdG9yeUVudHJ5IHJvb3Q7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlUGF0aC5oIgotI2luY2x1ZGUgIkRp
cmVjdG9yeUVudHJ5LmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgotI2luY2x1
ZGUgIkVudHJpZXNDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNpbmNsdWRl
ICJFbnRyeUJhc2UuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXJy
b3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0
ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFy
IERPTUZpbGVTeXN0ZW1CYXNlOjpwZXJzaXN0ZW50UGF0aFByZWZpeFtdID0gInBlcnNpc3RlbnQi
OwotY29uc3Qgc2l6ZV90IERPTUZpbGVTeXN0ZW1CYXNlOjpwZXJzaXN0ZW50UGF0aFByZWZpeExl
bmd0aCA9IHNpemVvZihET01GaWxlU3lzdGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXgpIC0g
MTsKLWNvbnN0IGNoYXIgRE9NRmlsZVN5c3RlbUJhc2U6OnRlbXBvcmFyeVBhdGhQcmVmaXhbXSA9
ICJ0ZW1wb3JhcnkiOwotY29uc3Qgc2l6ZV90IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQ
YXRoUHJlZml4TGVuZ3RoID0gc2l6ZW9mKERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRo
UHJlZml4KSAtIDE7Ci1jb25zdCBjaGFyIERPTUZpbGVTeXN0ZW1CYXNlOjppc29sYXRlZFBhdGhQ
cmVmaXhbXSA9ICJpc29sYXRlZCI7Ci1jb25zdCBzaXplX3QgRE9NRmlsZVN5c3RlbUJhc2U6Omlz
b2xhdGVkUGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihET01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0
ZWRQYXRoUHJlZml4KSAtIDE7Ci0KLURPTUZpbGVTeXN0ZW1CYXNlOjpET01GaWxlU3lzdGVtQmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZp
bGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAg
ICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fZmlsZXN5c3RlbVJv
b3RVUkwocm9vdFVSTCkKLSAgICAsIG1fY2xvbmFibGUoZmFsc2UpCi0gICAgLCBtX2FzeW5jRmls
ZVN5c3RlbShhc3luY0ZpbGVTeXN0ZW0pCi17Ci19Ci0KLURPTUZpbGVTeXN0ZW1CYXNlOjp+RE9N
RmlsZVN5c3RlbUJhc2UoKQotewotfQotCi0jaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCi0vLyBz
dGF0aWMKLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmlzVmFsaWRUeXBlKEZpbGVTeXN0ZW1UeXBl
IHR5cGUpCi17Ci0gICAgcmV0dXJuIHR5cGUgPT0gRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnkgfHwg
dHlwZSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQ7Ci19Ci0KLS8vIHN0YXRpYwotYm9vbCBE
T01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IFVSTCYgdXJsLCBGaWxl
U3lzdGVtVHlwZSYgdHlwZSwgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICBpZiAoIXVybC5wcm90
b2NvbElzKCJmaWxlc3lzdGVtIikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
dXJsLmlubmVyVVJMKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN0cmluZyB0eXBl
U3RyaW5nID0gdXJsLmlubmVyVVJMKCktPnBhdGgoKS5zdWJzdHJpbmcoMSk7Ci0gICAgaWYgKHR5
cGVTdHJpbmcgPT0gdGVtcG9yYXJ5UGF0aFByZWZpeCkKLSAgICAgICAgdHlwZSA9IEZpbGVTeXN0
ZW1UeXBlVGVtcG9yYXJ5OwotICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gcGVyc2lzdGVudFBh
dGhQcmVmaXgpCi0gICAgICAgIHR5cGUgPSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQ7Ci0gICAg
ZWxzZQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmaWxlUGF0aCA9IGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyh1cmwucGF0aCgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBE
T01GaWxlU3lzdGVtQmFzZTo6c3VwcG9ydHNUb1VSTCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlz
VmFsaWRUeXBlKG1fdHlwZSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1VUkwgRE9NRmlsZVN5
c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUoZnVsbFBhdGgpKTsKLSAg
ICBVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVSTDsKLSAgICAvLyBSZW1vdmUgdGhlIGV4dHJh
IGxlYWRpbmcgc2xhc2guCi0gICAgdXJsLnNldFBhdGgodXJsLnBhdGgoKSArIGVuY29kZVdpdGhV
UkxFc2NhcGVTZXF1ZW5jZXMoZnVsbFBhdGguc3Vic3RyaW5nKDEpKSk7Ci0gICAgcmV0dXJuIHVy
bDsKLX0KLSNlbmRpZgotCi1TZWN1cml0eU9yaWdpbiogRE9NRmlsZVN5c3RlbUJhc2U6OnNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpOwotfQotCi1VUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29u
c3QgRW50cnlCYXNlKiBlbnRyeSkgY29uc3QKLXsKLSAgICByZXR1cm4gY3JlYXRlRmlsZVN5c3Rl
bVVSTChlbnRyeS0+ZnVsbFBhdGgoKSk7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Omdl
dE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCi17Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShjcmVhdGVGaWxl
U3lzdGVtVVJMKGVudHJ5KSwgTWV0YWRhdGFDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wg
dmVyaWZ5QW5kR2V0RGVzdGluYXRpb25QYXRoRm9yQ29weU9yTW92ZShjb25zdCBFbnRyeUJhc2Uq
IHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgU3RyaW5n
JiBkZXN0aW5hdGlvblBhdGgpCi17Ci0gICAgQVNTRVJUKHNvdXJjZSk7Ci0KLSAgICBpZiAoIXBh
cmVudCB8fCAhcGFyZW50LT5pc0RpcmVjdG9yeSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpICYmICFET01GaWxlUGF0aDo6aXNWYWxpZE5hbWUo
bmV3TmFtZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IGJvb2wgaXNTYW1l
RmlsZVN5c3RlbSA9ICgqc291cmNlLT5maWxlc3lzdGVtKCkgPT0gKnBhcmVudC0+ZmlsZXN5c3Rl
bSgpKTsKLQotICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIHRyeSB0byBjb3B5IG9yIG1vdmUgYW4g
ZW50cnkgaW5zaWRlIGl0c2VsZiBhdCBhbnkgZGVwdGggaWYgaXQgaXMgYSBkaXJlY3RvcnkuCi0g
ICAgaWYgKHNvdXJjZS0+aXNEaXJlY3RvcnkoKSAmJiBpc1NhbWVGaWxlU3lzdGVtICYmIERPTUZp
bGVQYXRoOjppc1BhcmVudE9mKHNvdXJjZS0+ZnVsbFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgp
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29w
eSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZy
b20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3ZpZGVkLgotICAgIGlmIChpc1NhbWVGaWxlU3lz
dGVtICYmIChuZXdOYW1lLmlzRW1wdHkoKSB8fCBzb3VyY2UtPm5hbWUoKSA9PSBuZXdOYW1lKSAm
JiBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KHNvdXJjZS0+ZnVsbFBhdGgoKSkgPT0gcGFyZW50
LT5mdWxsUGF0aCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkZXN0aW5hdGlvblBh
dGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKLSAg
ICAgICAgZGVzdGluYXRpb25QYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0aW5hdGlvblBh
dGgsIG5ld05hbWUpOwotICAgIGVsc2UKLSAgICAgICAgZGVzdGluYXRpb25QYXRoID0gRE9NRmls
ZVBhdGg6OmFwcGVuZChkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+bmFtZSgpKTsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1zdGF0aWMgYm9vbCBwYXRoVG9BYnNvbHV0ZVBhdGgoRmlsZVN5c3Rl
bVR5cGUgdHlwZSwgY29uc3QgRW50cnlCYXNlKiBiYXNlLCBTdHJpbmcgcGF0aCwgU3RyaW5nJiBh
YnNvbHV0ZVBhdGgpCi17Ci0gICAgQVNTRVJUKGJhc2UpOwotCi0gICAgaWYgKCFET01GaWxlUGF0
aDo6aXNBYnNvbHV0ZShwYXRoKSkKLSAgICAgICAgcGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQo
YmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCk7Ci0gICAgYWJzb2x1dGVQYXRoID0gRE9NRmlsZVBhdGg6
OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhwYXRoKTsKLQotICAgIGlmICgodHlwZSA9PSBG
aWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCB0eXBlID09IEZpbGVTeXN0ZW1UeXBlUGVyc2lzdGVu
dCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChhYnNvbHV0ZVBhdGgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJh
c2U6Om1vdmUoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25z
dCBTdHJpbmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgU3Ry
aW5nIGRlc3RpbmF0aW9uUGF0aDsKLSAgICBpZiAoIXZlcmlmeUFuZEdldERlc3RpbmF0aW9uUGF0
aEZvckNvcHlPck1vdmUoc291cmNlLCBwYXJlbnQsIG5ld05hbWUsIGRlc3RpbmF0aW9uUGF0aCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5tb3ZlKGNy
ZWF0ZUZpbGVTeXN0ZW1VUkwoc291cmNlKSwgcGFyZW50LT5maWxlc3lzdGVtKCktPmNyZWF0ZUZp
bGVTeXN0ZW1VUkwoZGVzdGluYXRpb25QYXRoKSwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHBhcmVudC0+ZmlsZXN5c3RlbSgpLCBkZXN0aW5h
dGlvblBhdGgsIHNvdXJjZS0+aXNEaXJlY3RvcnkoKSkpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpjb3B5KGNvbnN0IEVudHJ5QmFzZSogc291cmNlLCBF
bnRyeUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKQotewotICAgIFN0cmluZyBkZXN0aW5hdGlvblBhdGg7Ci0gICAgaWYgKCF2ZXJp
ZnlBbmRHZXREZXN0aW5hdGlvblBhdGhGb3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFyZW50LCBuZXdO
YW1lLCBkZXN0aW5hdGlvblBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2Fz
eW5jRmlsZVN5c3RlbS0+Y29weShjcmVhdGVGaWxlU3lzdGVtVVJMKHNvdXJjZSksIHBhcmVudC0+
ZmlsZXN5c3RlbSgpLT5jcmVhdGVGaWxlU3lzdGVtVVJMKGRlc3RpbmF0aW9uUGF0aCksIEVudHJ5
Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBwYXJlbnQt
PmZpbGVzeXN0ZW0oKSwgZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5KCkpKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6cmVtb3ZlKGNv
bnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBB
U1NFUlQoZW50cnkpOwotICAgIC8vIFdlIGRvbid0IGFsbG93IGNhbGxpbmcgcmVtb3ZlKCkgb24g
dGhlIHJvb3QgZGlyZWN0b3J5LgotICAgIGlmIChlbnRyeS0+ZnVsbFBhdGgoKSA9PSBTdHJpbmco
RE9NRmlsZVBhdGg6OnJvb3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPnJlbW92ZShjcmVhdGVGaWxlU3lzdGVtVVJMKGVudHJ5KSwgVm9pZENhbGxiYWNr
czo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmVSZWN1cnNpdmVseShjb25z
dCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgQVNT
RVJUKGVudHJ5ICYmIGVudHJ5LT5pc0RpcmVjdG9yeSgpKTsKLSAgICAvLyBXZSBkb24ndCBhbGxv
dyBjYWxsaW5nIHJlbW92ZSgpIG9uIHRoZSByb290IGRpcmVjdG9yeS4KLSAgICBpZiAoZW50cnkt
PmZ1bGxQYXRoKCkgPT0gU3RyaW5nKERPTUZpbGVQYXRoOjpyb290KSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShjcmVhdGVG
aWxlU3lzdGVtVVJMKGVudHJ5KSwgVm9pZENhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjpnZXRQYXJlbnQoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoZW50cnkpOwotICAgIFN0cmluZyBwYXRoID0g
RE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShlbnRyeS0+ZnVsbFBhdGgoKSk7Ci0KLSAgICBtX2Fz
eW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKGNyZWF0ZUZpbGVTeXN0ZW1VUkwocGF0aCks
IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0
aGlzLCBwYXRoLCB0cnVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5
c3RlbUJhc2U6OmdldEZpbGUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBGaWxlU3lzdGVtRmxhZ3MmIGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQotewotICAgIFN0cmluZyBhYnNvbHV0ZVBhdGg7Ci0gICAgaWYgKCFwYXRoVG9BYnNvbHV0
ZVBhdGgobV90eXBlLCBlbnRyeSwgcGF0aCwgYWJzb2x1dGVQYXRoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNh
bGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJz
b2x1dGVQYXRoLCBmYWxzZSk7Ci0gICAgaWYgKGZsYWdzLmNyZWF0ZSkKLSAgICAgICAgbV9hc3lu
Y0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBhdGgp
LCBmbGFncy5leGNsdXNpdmUsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmZpbGVFeGlzdHMoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNv
bHV0ZVBhdGgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogZW50
cnksIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRmlsZVN5c3RlbUZsYWdzJiBmbGFncywgUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBTdHJpbmcgYWJzb2x1dGVQYXRoOwotICAg
IGlmICghcGF0aFRvQWJzb2x1dGVQYXRoKG1fdHlwZSwgZW50cnksIHBhdGgsIGFic29sdXRlUGF0
aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSk7Ci0gICAgaWYgKGZsYWdzLmNyZWF0
ZSkKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShjcmVhdGVGaWxl
U3lzdGVtVVJMKGFic29sdXRlUGF0aCksIGZsYWdzLmV4Y2x1c2l2ZSwgY2FsbGJhY2tzLnJlbGVh
c2UoKSk7Ci0gICAgZWxzZQotICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhp
c3RzKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1dGVQYXRoKSwgY2FsbGJhY2tzLnJlbGVhc2Uo
KSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OnJlYWRE
aXJlY3RvcnkoUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiByZWFkZXIsIGNvbnN0IFN0
cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChE
T01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJl
YWREaXJlY3RvcnkoY3JlYXRlRmlsZVN5c3RlbVVSTChwYXRoKSwgRW50cmllc0NhbGxiYWNrczo6
Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgcmVhZGVyLCBwYXRoKSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NRmlsZVN5c3RlbUJhc2Vf
aAotI2RlZmluZSBET01GaWxlU3lzdGVtQmFzZV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtRmxh
Z3MuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIERpcmVjdG9yeVJlYWRlckJhc2U7Ci1jbGFzcyBF
bnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBFbnRyeUJhc2U7Ci1jbGFzcyBFbnRyeUNhbGxiYWNrOwot
Y2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIE1ldGFkYXRhQ2FsbGJhY2s7Ci1jbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBWb2lkQ2Fs
bGJhY2s7Ci0KLS8vIEEgY29tbW9uIGJhc2UgY2xhc3MgZm9yIERPTUZpbGVTeXN0ZW0gYW5kIERP
TUZpbGVTeXN0ZW1TeW5jLgotY2xhc3MgRE9NRmlsZVN5c3RlbUJhc2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxET01GaWxlU3lzdGVtQmFzZT4gewotcHVibGljOgotICAgIC8vIFBhdGggcHJlZml4ZXMg
dGhhdCBhcmUgdXNlZCBpbiB0aGUgZmlsZXN5c3RlbSBVUkxzICh0aGF0IGNhbiBiZSBvYnRhaW5l
ZCBieSB0b1VSTCgpKS4KLSAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9maWxlLXN5c3RlbS1h
cGkvI3dpZGwtRW50cnktdG9VUkwKLSAgICBzdGF0aWMgY29uc3QgY2hhciBwZXJzaXN0ZW50UGF0
aFByZWZpeFtdOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGVyc2lzdGVudFBhdGhQcmVmaXhM
ZW5ndGg7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgdGVtcG9yYXJ5UGF0aFByZWZpeFtdOwotICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgdGVtcG9yYXJ5UGF0aFByZWZpeExlbmd0aDsKLSAgICBzdGF0
aWMgY29uc3QgY2hhciBpc29sYXRlZFBhdGhQcmVmaXhbXTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGlzb2xhdGVkUGF0aFByZWZpeExlbmd0aDsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1CYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RV
UkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5h
bWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkpOwotICAgIH0KLSAgICB2aXJ0dWFs
IH5ET01GaWxlU3lzdGVtQmFzZSgpOwotCi0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgRmlsZVN5c3RlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQotICAgIFVSTCByb290VVJMKCkgY29uc3QgeyByZXR1cm4gbV9maWxlc3lz
dGVtUm9vdFVSTDsgfQotICAgIEFzeW5jRmlsZVN5c3RlbSogYXN5bmNGaWxlU3lzdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9hc3luY0ZpbGVTeXN0ZW0uZ2V0KCk7IH0KLSAgICBTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKLQotICAgIC8vIFRoZSBjbG9uYWJsZSBmbGFnIGlz
IHVzZWQgaW4gdGhlIHN0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtIHRvIHRlc3QKLSAgICAvLyB3
aGV0aGVyIHRoZSBGaWxlU3lzdGVtIEFQSSBvYmplY3QgaXMgcGVybWl0dGVkIHRvIGJlIGNsb25l
ZC4gSXQgZGVmYXVsdHMKLSAgICAvLyB0byBmYWxzZSwgYW5kIG11c3QgYmUgZXhwbGljaXRseSBz
ZXQgYnkgaW50ZXJuYWwgY29kZSBwZXJtaXQgY2xvbmluZy4KLSAgICB2b2lkIG1ha2VDbG9uYWJs
ZSgpIHsgbV9jbG9uYWJsZSA9IHRydWU7IH0KLSAgICBib29sIGNsb25hYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbG9uYWJsZTsgfQotCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFR5cGUoRmlsZVN5
c3RlbVR5cGUpOwotICAgIHN0YXRpYyBib29sIGNyYWNrRmlsZVN5c3RlbVVSTChjb25zdCBVUkwm
LCBGaWxlU3lzdGVtVHlwZSYsIFN0cmluZyYgZmlsZVBhdGgpOwotICAgIGJvb2wgc3VwcG9ydHNU
b1VSTCgpIGNvbnN0OwotICAgIFVSTCBjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IEVudHJ5QmFz
ZSopIGNvbnN0OwotICAgIFVSTCBjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgZnVs
bFBhdGgpIGNvbnN0OwotCi0gICAgLy8gQWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0
aW9ucy4gQWxsIHRoZSB2YWxpZGl0eSBjaGVja3Mgb24gdmlydHVhbCBwYXRocyBhcmUgZG9uZSBh
dCB0aGlzIGxldmVsLgotICAgIC8vIFRoZXkgcmV0dXJuIGZhbHNlIGZvciBpbW1lZGlhdGUgZXJy
b3JzIHRoYXQgZG9uJ3QgaW52b2x2ZSBsb3dlciBBc3luY0ZpbGVTeXN0ZW0gbGF5ZXIgKGUuZy4g
Zm9yIG5hbWUgdmFsaWRhdGlvbiBlcnJvcnMpLiBPdGhlcndpc2UgdGhleSByZXR1cm4gdHJ1ZSAo
YnV0IGxhdGVyIG1heSBjYWxsIGJhY2sgd2l0aCBhbiBydW50aW1lIGVycm9yKS4KLSAgICBib29s
IGdldE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFzZSosIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJvb2wgbW92ZShjb25zdCBFbnRy
eUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAg
Ym9vbCBjb3B5KGNvbnN0IEVudHJ5QmFzZSogc291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIHJlbW92ZShjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVm
UHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJvb2wg
cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIGdldFBhcmVudChjb25z
dCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+KTsKLSAgICBib29sIGdldEZpbGUoY29uc3QgRW50cnlCYXNlKiwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBGaWxlU3lzdGVtRmxhZ3MmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIGdldERpcmVjdG9yeShj
b25zdCBFbnRyeUJhc2UqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1GbGFn
cyYsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4p
OwotICAgIGJvb2wgcmVhZERpcmVjdG9yeShQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0KLXByb3RlY3RlZDoKLSAgICBET01GaWxlU3lzdGVtQmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVt
VHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwot
ICAgIGZyaWVuZCBjbGFzcyBET01GaWxlU3lzdGVtU3luYzsKLQotICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIG1fY29udGV4dDsKLSAgICBTdHJpbmcgbV9uYW1lOwotICAgIEZpbGVTeXN0ZW1U
eXBlIG1fdHlwZTsKLSAgICBVUkwgbV9maWxlc3lzdGVtUm9vdFVSTDsKLSAgICBib29sIG1fY2xv
bmFibGU7Ci0KLSAgICBtdXRhYmxlIE93blB0cjxBc3luY0ZpbGVTeXN0ZW0+IG1fYXN5bmNGaWxl
U3lzdGVtOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBET01GaWxlU3lzdGVt
QmFzZSYgYSwgY29uc3QgRE9NRmlsZVN5c3RlbUJhc2UmIGIpIHsgcmV0dXJuIGEubmFtZSgpID09
IGIubmFtZSgpICYmIGEudHlwZSgpID09IGIudHlwZSgpICYmIGEucm9vdFVSTCgpID09IGIucm9v
dFVSTCgpOyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERPTUZpbGVTeXN0ZW1CYXNlX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1T
eW5jLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNjYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgi
Ci0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIK
LSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNr
LmgiCi0jaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNs
dWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAi
RmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1
ZGUgIkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyU3luYy5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlOwotCi1QYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlKERPTUZp
bGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9N
RmlsZVN5c3RlbVN5bmMoZmlsZVN5c3RlbS0+bV9jb250ZXh0LCBmaWxlU3lzdGVtLT5uYW1lKCks
IGZpbGVTeXN0ZW0tPnR5cGUoKSwgZmlsZVN5c3RlbS0+cm9vdFVSTCgpLCBmaWxlU3lzdGVtLT5t
X2FzeW5jRmlsZVN5c3RlbS5yZWxlYXNlKCkpKTsKLX0KLQotRE9NRmlsZVN5c3RlbVN5bmM6OkRP
TUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQotICAgIDogRE9NRmlsZVN5
c3RlbUJhc2UoY29udGV4dCwgbmFtZSwgdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKQot
ewotfQotCi1ET01GaWxlU3lzdGVtU3luYzo6fkRPTUZpbGVTeXN0ZW1TeW5jKCkKLXsKLX0KLQot
UGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERPTUZpbGVTeXN0ZW1TeW5jOjpyb290KCkK
LXsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGUodGhpcywgRE9NRmlsZVBh
dGg6OnJvb3QpOwotfQotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBDcmVhdGVGaWxlSGVscGVyIDog
cHVibGljIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgQ3Jl
YXRlRmlsZVJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPENyZWF0ZUZpbGVSZXN1bHQ+IHsKLSAg
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4g
Y3JlYXRlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcmVh
dGVGaWxlUmVzdWx0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBtX2ZhaWxlZDsKLSAg
ICAgICAgaW50IG1fY29kZTsKLSAgICAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKLQotICAgICAg
cHJpdmF0ZToKLSAgICAgICAgQ3JlYXRlRmlsZVJlc3VsdCgpCi0gICAgICAgICAgICA6IG1fZmFp
bGVkKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NvZGUoMCkKLSAgICAgICAgewotICAgICAgICB9
Ci0KLSAgICAgICAgfkNyZWF0ZUZpbGVSZXN1bHQoKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAg
ICAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxDcmVhdGVGaWxlUmVzdWx0PjsKLSAg
ICB9OwotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBh
c3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDcmVhdGVGaWxlSGVscGVyKHJlc3VsdCwgbmFtZSwgdXJsLCB0eXBlKSk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpCi0gICAgewotICAg
ICAgICBtX3Jlc3VsdC0+bV9mYWlsZWQgPSB0cnVlOwotICAgICAgICBtX3Jlc3VsdC0+bV9jb2Rl
ID0gY29kZTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5DcmVhdGVGaWxlSGVscGVyKCkKLSAgICB7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNuYXBzaG90RmlsZShjb25zdCBG
aWxlTWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPEJsb2JEYXRhSGFuZGxlPiAvKiBzbmFw
c2hvdCAqLykKLSAgICB7Ci0gICAgICAgIC8vIFdlIGNhbid0IGRpcmVjdGx5IHVzZSB0aGUgc25h
cHNob3QgYmxvYiBkYXRhIGhhbmRsZSBiZWNhdXNlIHRoZSBjb250ZW50IHR5cGUgb24gaXQgaGFz
bid0IGJlZW4gc2V0LgotICAgICAgICAvLyBUaGUgfHNuYXBzaG90fCBwYXJhbSBpcyBoZXJlIHRv
IHByb3ZpZGUgYSBhIGNoYWluIG9mIGN1c3RvZHkgdGhydSB0aHJlYWQgYnJpZGdpbmcgdGhhdCBp
cyBoZWxkIG9udG8gdW50aWwKLSAgICAgICAgLy8gKmFmdGVyKiB3ZSd2ZSBjb2luZWQgYSBGaWxl
IHdpdGggYSBuZXcgaGFuZGxlIHRoYXQgaGFzIHRoZSBjb3JyZWN0IHR5cGUgc2V0IG9uIGl0LiBU
aGlzIGFsbG93cyB0aGUKLSAgICAgICAgLy8gYmxvYiBzdG9yYWdlIHN5c3RlbSB0byB0cmFjayB3
aGVuIGEgdGVtcCBmaWxlIGNhbiBhbmQgY2FuJ3QgYmUgc2FmZWx5IGRlbGV0ZWQuCi0KLSAgICAg
ICAgLy8gRm9yIHJlZ3VsYXIgZmlsZXN5c3RlbSB0eXBlcyAodGVtcG9yYXJ5IG9yIHBlcnNpc3Rl
bnQpLCB3ZSBzaG91bGQgbm90IGNhY2hlIGZpbGUgbWV0YWRhdGEgYXMgaXQgY291bGQgY2hhbmdl
IEZpbGUgc2VtYW50aWNzLgotICAgICAgICAvLyBGb3Igb3RoZXIgZmlsZXN5c3RlbSB0eXBlcyAo
d2hpY2ggY291bGQgYmUgcGxhdGZvcm0tc3BlY2lmaWMgb25lcyksIHRoZXJlJ3MgYSBjaGFuY2Ug
dGhhdCB0aGUgZmlsZXMgYXJlIG9uIHJlbW90ZSBmaWxlc3lzdGVtLgotICAgICAgICAvLyBJZiB0
aGUgcG9ydCBoYXMgcmV0dXJuZWQgbWV0YWRhdGEganVzdCBwYXNzIGl0IHRvIEZpbGUgY29uc3Ry
dWN0b3IgKHNvIHdlIG1heSBjYWNoZSB0aGUgbWV0YWRhdGEpLgotICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHVzZSB0aGUgc25hcHNob3QgbWV0YWRhdGEgZm9yIGFsbCBmaWxlcy4KLSAgICAg
ICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xNzc0
NgotICAgICAgICBpZiAobV90eXBlID09IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IG1fdHlw
ZSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpIHsKLSAgICAgICAgICAgIG1fcmVzdWx0LT5t
X2ZpbGUgPSBGaWxlOjpjcmVhdGVXaXRoTmFtZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgsIG1fbmFt
ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIW1ldGFkYXRhLnBsYXRmb3JtUGF0aC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBwbGF0Zm9ybVBhdGggaW4gdGhlIHJldHVybmVkIG1l
dGFkYXRhIGlzIGdpdmVuLCB3ZSBjcmVhdGUgYSBGaWxlIG9iamVjdCBmb3IgdGhlIHBhdGguCi0g
ICAgICAgICAgICBtX3Jlc3VsdC0+bV9maWxlID0gRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZp
bGUobV9uYW1lLCBtZXRhZGF0YSkuZ2V0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAvLyBPdGhlcndpc2UgY3JlYXRlIGEgRmlsZSBmcm9tIHRoZSBGaWxlU3lzdGVtIFVSTC4KLSAg
ICAgICAgICAgIG1fcmVzdWx0LT5tX2ZpbGUgPSBGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmls
ZShtX3VybCwgbWV0YWRhdGEpLmdldCgpOwotICAgICAgICB9Ci0gICAgfQotcHJpdmF0ZToKLSAg
ICBDcmVhdGVGaWxlSGVscGVyKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQot
ICAgICAgICA6IG1fcmVzdWx0KHJlc3VsdCkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAg
ICAgLCBtX3VybCh1cmwpCi0gICAgICAgICwgbV90eXBlKHR5cGUpCi0gICAgewotICAgIH0KLQot
ICAgIFJlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiBtX3Jlc3VsdDsKLSAgICBTdHJpbmcgbV9uYW1l
OwotICAgIFVSTCBtX3VybDsKLSAgICBGaWxlU3lzdGVtVHlwZSBtX3R5cGU7Ci19OwotCi19IC8v
IG5hbWVzcGFjZQotCi1QYXNzUmVmUHRyPEZpbGU+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVG
aWxlKGNvbnN0IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRyeSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgZWMgPSAwOwotICAgIFVSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVS
TChmaWxlRW50cnkpOwotICAgIFJlZlB0cjxDcmVhdGVGaWxlSGVscGVyOjpDcmVhdGVGaWxlUmVz
dWx0PiByZXN1bHQoQ3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJlc3VsdDo6Y3JlYXRlKCkp
OwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRh
dGEoZmlsZVN5c3RlbVVSTCwgQ3JlYXRlRmlsZUhlbHBlcjo6Y3JlYXRlKHJlc3VsdCwgZmlsZUVu
dHJ5LT5uYW1lKCksIGZpbGVTeXN0ZW1VUkwsIHR5cGUoKSkpOwotICAgIGlmICghbV9hc3luY0Zp
bGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKLSAgICAgICAgZWMgPSBG
aWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBp
ZiAocmVzdWx0LT5tX2ZhaWxlZCkgewotICAgICAgICBlYyA9IHJlc3VsdC0+bV9jb2RlOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC0+bV9maWxlOwotfQotCi1u
YW1lc3BhY2UgewotCi1jbGFzcyBSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrIDogcHVibGljIEZp
bGVXcml0ZXJCYXNlQ2FsbGJhY2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJl
Y2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2s+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2soKSk7Ci0gICAgfQotCi0gICAg
Ym9vbCBoYW5kbGVFdmVudChGaWxlV3JpdGVyQmFzZSogZmlsZVdyaXRlckJhc2UpCi0gICAgewot
I2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9maWxlV3JpdGVyQmFzZSA9IGZpbGVXcml0ZXJCYXNl
OwotI2Vsc2UKLSAgICAgICAgQVNTRVJUX1VOVVNFRChmaWxlV3JpdGVyQmFzZSwgZmlsZVdyaXRl
ckJhc2UpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotI2lmbmRlZiBO
REVCVUcKLSAgICBGaWxlV3JpdGVyQmFzZSogZmlsZVdyaXRlckJhc2UoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fZmlsZVdyaXRlckJhc2U7Ci0gICAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0g
ICAgUmVjZWl2ZUZpbGVXcml0ZXJDYWxsYmFjaygpCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICA6
IG1fZmlsZVdyaXRlckJhc2UoMCkKLSNlbmRpZgotICAgIHsKLSAgICB9Ci0KLSNpZm5kZWYgTkRF
QlVHCi0gICAgRmlsZVdyaXRlckJhc2UqIG1fZmlsZVdyaXRlckJhc2U7Ci0jZW5kaWYKLX07Ci0K
LWNsYXNzIExvY2FsRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb2NhbEVycm9yQ2FsbGJhY2s+IGNyZWF0ZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvY2FsRXJyb3JDYWxsYmFjaygpKTsK
LSAgICB9Ci0KLSAgICBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3IpCi0gICAgewot
ICAgICAgICBtX2Vycm9yID0gZXJyb3I7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIEZpbGVFcnJvciogZXJyb3IoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZXJyb3IuZ2V0
KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIExvY2FsRXJyb3JDYWxsYmFjaygpCi0gICAgewot
ICAgIH0KLSAgICBSZWZQdHI8RmlsZUVycm9yPiBtX2Vycm9yOwotfTsKLQotfQotCi1QYXNzUmVm
UHRyPEZpbGVXcml0ZXJTeW5jPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlV3JpdGVyKGNvbnN0
IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRyeSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNT
RVJUKGZpbGVFbnRyeSk7Ci0gICAgZWMgPSAwOwotCi0KLSAgICBSZWZQdHI8RmlsZVdyaXRlclN5
bmM+IGZpbGVXcml0ZXIgPSBGaWxlV3JpdGVyU3luYzo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFJl
Y2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IFJlY2VpdmVGaWxlV3Jp
dGVyQ2FsbGJhY2s6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMb2NhbEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2sgPSBMb2NhbEVycm9yQ2FsbGJhY2s6OmNyZWF0ZSgpOwotCi0gICAgT3duUHRy
PEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBGaWxlV3JpdGVyQmFzZUNhbGxi
YWNrczo6Y3JlYXRlKGZpbGVXcml0ZXIsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7
Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBj
cmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwotICAg
IGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsK
LSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLSAgICBpZiAoZXJyb3JDYWxsYmFjay0+ZXJyb3IoKSkgewotICAgICAgICBBU1NF
UlQoIXN1Y2Nlc3NDYWxsYmFjay0+ZmlsZVdyaXRlckJhc2UoKSk7Ci0gICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25Db2RlKGVycm9yQ2FsbGJhY2stPmVycm9y
KCktPmNvZGUoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBBU1NFUlQoc3VjY2Vz
c0NhbGxiYWNrLT5maWxlV3JpdGVyQmFzZSgpKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Rmls
ZVdyaXRlclN5bmMqPihzdWNjZXNzQ2FsbGJhY2stPmZpbGVXcml0ZXJCYXNlKCkpID09IGZpbGVX
cml0ZXIuZ2V0KCkpOwotICAgIHJldHVybiBmaWxlV3JpdGVyOwotfQotCi19Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NRmlsZVN5c3RlbVN5bmNf
aAotI2RlZmluZSBET01GaWxlU3lzdGVtU3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5U3luYzsKLWNsYXNzIEZpbGU7Ci1jbGFzcyBGaWxlRW50
cnlTeW5jOwotY2xhc3MgRmlsZVdyaXRlclN5bmM7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1TeW5jIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNl
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
RmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBET01GaWxlU3lzdGVtU3luYyhjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBh
c3luY0ZpbGVTeXN0ZW0pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtU3luYz4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKik7Ci0KLSAgICB2aXJ0dWFsIH5E
T01GaWxlU3lzdGVtU3luYygpOwotCi0gICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+
IHJvb3QoKTsKLQotICAgIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlRmlsZShjb25zdCBGaWxlRW50
cnlTeW5jKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RmlsZVdyaXRlclN5bmM+
IGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnlTeW5jKiwgRXhjZXB0aW9uQ29kZSYpOwotCi1w
cml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBET01GaWxlU3lzdGVtU3luY19oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVt
U3luYy5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RF
TSwKLSAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBET01GaWxlU3lzdGVtU3luYyB7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBEaXJlY3RvcnlFbnRyeVN5bmMgcm9vdDsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0u
Y3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0gKiBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0g
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAot
ICogREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJET01XaW5k
b3dGaWxlU3lzdGVtLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJB
c3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxi
YWNrLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIkxvY2Fs
RmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotRE9NV2luZG93RmlsZVN5c3RlbTo6RE9NV2luZG93RmlsZVN5c3RlbSgpCi17
Ci19Ci0KLURPTVdpbmRvd0ZpbGVTeXN0ZW06On5ET01XaW5kb3dGaWxlU3lzdGVtKCkKLXsKLX0K
LQotdm9pZCBET01XaW5kb3dGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShET01X
aW5kb3cqIHdpbmRvdywgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVT
eXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgaWYgKCF3aW5kb3ctPmlzQ3VycmVudGx5RGlzcGxheWVk
SW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3
aW5kb3ctPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIWRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKLSAgICAgICAgRE9NRmls
ZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayhkb2N1bWVudCwgZXJyb3JDYWxsYmFjaywgRmlsZUVy
cm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEZpbGVTeXN0ZW1UeXBlIGZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8
RmlsZVN5c3RlbVR5cGU+KHR5cGUpOwotICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmlzVmFs
aWRUeXBlKGZpbGVTeXN0ZW1UeXBlKSkgewotICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVs
ZUNhbGxiYWNrKGRvY3VtZW50LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxl
RXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5
c3RlbShkb2N1bWVudCwgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6
OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGRvY3VtZW50LCBmaWxlU3lz
dGVtVHlwZSksIEFzeW5jaHJvbm91c0ZpbGVTeXN0ZW0pOwotfQotCi12b2lkIERPTVdpbmRvd0Zp
bGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoRE9NV2luZG93KiB3aW5k
b3csIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAg
IGlmICghd2luZG93LT5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd2luZG93LT5kb2N1bWVudCgpOwotICAg
IGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwotICAgIFVSTCBjb21w
bGV0ZWRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKTsKLSAgICBpZiAoIUFzeW5jRmls
ZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4tPmNhbkFjY2Vzc0ZpbGVT
eXN0ZW0oKSB8fCAhc2VjdXJpdHlPcmlnaW4tPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewot
ICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKGRvY3VtZW50LCBlcnJvckNh
bGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKLSAgICBTdHJp
bmcgZmlsZVBhdGg7Ci0gICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFET01GaWxl
U3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBh
dGgpKSB7Ci0gICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2soZG9jdW1lbnQs
IGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6RU5DT0RJTkdfRVJS
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2Fs
RmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVtKGRvY3VtZW50LCB0eXBlLCBSZXNvbHZlVVJJQ2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBkb2N1bWVudCwg
dHlwZSwgZmlsZVBhdGgpKTsKLX0KLQotQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihE
T01XaW5kb3dGaWxlU3lzdGVtOjpURU1QT1JBUlkpID09IHN0YXRpY19jYXN0PGludD4oRmlsZVN5
c3RlbVR5cGVUZW1wb3JhcnkpLCBlbnVtX21pc21hdGNoKTsKLUNPTVBJTEVfQVNTRVJUKHN0YXRp
Y19jYXN0PGludD4oRE9NV2luZG93RmlsZVN5c3RlbTo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nh
c3Q8aW50PihGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQpLCBlbnVtX21pc21hdGNoKTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2lu
ZG93RmlsZVN5c3RlbS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoK
LSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0g
KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QKLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSAqIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSAotICogREFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NV2luZG93RmlsZVN5c3RlbV9o
Ci0jZGVmaW5lIERPTVdpbmRvd0ZpbGVTeXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBET01XaW5kb3c7Ci1jbGFz
cyBFbnRyeUNhbGxiYWNrOwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIEZpbGVTeXN0ZW1D
YWxsYmFjazsKLQotY2xhc3MgRE9NV2luZG93RmlsZVN5c3RlbSB7Ci1wdWJsaWM6Ci0KLSAgICBz
dGF0aWMgdm9pZCB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShET01XaW5kb3cqLCBpbnQgdHlwZSwg
bG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgc3RhdGljIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmls
ZVN5c3RlbVVSTChET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLQotICAgIC8vIFRoZXkgYXJlIHBs
YWNlZCBoZXJlIGFuZCBpbiBhbGwgY2FwaXRhbCBsZXR0ZXJzIHNvIHRoZXkgY2FuIGJlIGNoZWNr
ZWQgYWdhaW5zdCB0aGUgY29uc3RhbnRzIGluIHRoZQotICAgIC8vIElETCBhdCBjb21waWxlIHRp
bWUuCi0gICAgZW51bSB7Ci0gICAgICAgIFRFTVBPUkFSWSwKLSAgICAgICAgUEVSU0lTVEVOVCwK
LSAgICB9OwotCi1wcml2YXRlOgotICAgIERPTVdpbmRvd0ZpbGVTeXN0ZW0oKTsKLSAgICB+RE9N
V2luZG93RmlsZVN5c3RlbSgpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRE9NV2luZG93RmlsZVN5c3Rl
bV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93Rmls
ZVN5c3RlbS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIHBhcnRpYWwgaW50ZXJmYWNlIERPTVdpbmRv
dyB7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZID0gMDsKLSAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKLQotICAgIHZvaWQgd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0odW5zaWduZWQgc2hvcnQgdHlwZSwgbG9uZyBsb25nIHNpemUsCi0gICAgICAgICAg
ICBGaWxlU3lzdGVtQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxi
YWNrIGVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVVSTChET01TdHJpbmcgdXJsLAotICAgICAgICAgICAgRW50cnlDYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci19OwotCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0YVRyYW5zZmVySXRlbUZpbGVT
eXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGF0YVRyYW5zZmVySXRlbUZp
bGVTeXN0ZW1faAotI2RlZmluZSBEYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbV9oCi0KLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERhdGFUcmFuc2Zlckl0ZW07Ci1jbGFzcyBFbnRyeTsK
LWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLWNsYXNzIERhdGFUcmFuc2Zlckl0ZW1G
aWxlU3lzdGVtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeT4gd2Via2l0
R2V0QXNFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YVRyYW5zZmVySXRlbSopOwot
Ci1wcml2YXRlOgotICAgIERhdGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtKCk7Ci0gICAgfkRhdGFU
cmFuc2Zlckl0ZW1GaWxlU3lzdGVtKCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBEYXRhVHJhbnNmZXJJ
dGVtRmlsZVN5c3RlbV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbS5pZGwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EYXRh
VHJhbnNmZXJJdGVtRmlsZVN5c3RlbS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LVsKLSAgICBDb25kaXRpb25hbD1EQVRBX1RSQU5TRkVSX0lURU1TJkZJTEVfU1lTVEVNLAotXSBw
YXJ0aWFsIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtIHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gRW50cnkgd2Via2l0R2V0QXNFbnRyeSgpOwotfTsKLQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnkuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgotI2luY2x1
ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVk
ZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotRGlyZWN0b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAg
OiBFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxEaXJlY3Rv
cnlSZWFkZXI+IERpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIoKQotewotICAgIHJldHVybiBE
aXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZnVsbFBhdGgpOwotfQotCi12
b2lkIERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKLXsKLSAgICBG
aWxlU3lzdGVtRmxhZ3MgZmxhZ3Mob3B0aW9ucyk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0t
PmdldEZpbGUodGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNr
LnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNB
VElPTl9FUlIpKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFja1JlZikKLXsKLSAgICBGaWxlU3lzdGVtRmxhZ3MgZmxhZ3Mob3B0aW9ucyk7Ci0g
ICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7
Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0aGlzLCBwYXRoLCBmbGFncywg
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5z
Y2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0
ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotfQotCi12b2lkIERpcmVj
dG9yeUVudHJ5OjpyZW1vdmVSZWN1cnNpdmVseShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYp
IGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JD
YWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2ZWx5KHRo
aXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0o
KS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpj
cmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgJKHJldmlzaW9uIDE1NjY5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeUVudHJ5X2gKLSNk
ZWZpbmUgRGlyZWN0b3J5RW50cnlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSAiRW50cnkuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtRmxhZ3MuaCIKLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9N
RmlsZVN5c3RlbUJhc2U7Ci1jbGFzcyBEaXJlY3RvcnlSZWFkZXI7Ci1jbGFzcyBFbnRyeUNhbGxi
YWNrOwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIFZvaWRDYWxsYmFjazsKLQotY2xhc3Mg
RGlyZWN0b3J5RW50cnkgOiBwdWJsaWMgRW50cnkgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERpcmVjdG9yeUVudHJ5PiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFz
ZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5RW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsK
LSAgICB9Ci0gICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCi0gICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcigpOwot
ICAgIHZvaWQgZ2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmLCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9
IDApOwotICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGlj
dGlvbmFyeSYsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gPSAwLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+ID0gMCk7Ci0gICAgdm9pZCByZW1vdmVSZWN1cnNpdmVseShQYXNzUmVmUHRyPFZv
aWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiA9IDApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIERpcmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBE
aXJlY3RvcnlFbnRyeV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5RW50cnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25k
aXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2Ug
RGlyZWN0b3J5RW50cnkgOiBFbnRyeSB7Ci0gICAgRGlyZWN0b3J5UmVhZGVyIGNyZWF0ZVJlYWRl
cigpOwotICAgIHZvaWQgZ2V0RmlsZShbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRl
ZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgb3B0aW9uYWwgRGljdGlvbmFyeSBv
cHRpb25zLCBvcHRpb25hbCBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwg
RXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIGdldERpcmVjdG9yeShbVHJl
YXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJp
bmcgcGF0aCwgb3B0aW9uYWwgRGljdGlvbmFyeSBvcHRpb25zLCBvcHRpb25hbCBFbnRyeUNhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNr
KTsKLSAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci19OwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5j
LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFk
ZXJTeW5jLmgiCi0jaW5jbHVkZSAiRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5U3lu
Yy5oIgotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJTeW5jQ2FsbGJhY2tI
ZWxwZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EaXJlY3RvcnlFbnRyeVN5bmM6OkRp
cmVjdG9yeUVudHJ5U3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1
bGxQYXRoKQotewotfQotCi1QYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IERpcmVjdG9y
eUVudHJ5U3luYzo6Y3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKQotewotICAgIHJldHVybiBE
aXJlY3RvcnlSZWFkZXJTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1bGxQYXRoKTsKLX0K
LQotUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgRmlsZVN5c3RlbUZsYWdzIGZsYWdzKG9wdGlv
bnMpOwotICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFz
eW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBw
YXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFj
aygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfcG9pbnRl
cl9jYXN0PEZpbGVFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKLX0KLQotUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIEZpbGVTeXN0ZW1GbGFncyBmbGFncyhvcHRp
b25zKTsKLSAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5h
c3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0
aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JD
YWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNf
cG9pbnRlcl9jYXN0PERpcmVjdG9yeUVudHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykpOwot
fQotCi12b2lkIERpcmVjdG9yeUVudHJ5U3luYzo6cmVtb3ZlUmVjdXJzaXZlbHkoRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXIgaGVs
cGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lz
dGVtLT5yZW1vdmVSZWN1cnNpdmVseSh0aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhl
bHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGhlbHBl
ci5nZXRSZXN1bHQoZWMpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlT
eW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeUVudHJ5U3luYy5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgRGlyZWN0b3J5RW50cnlTeW5jX2gKLSNkZWZpbmUgRGlyZWN0
b3J5RW50cnlTeW5jX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVu
dHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1GbGFncy5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3Rv
cnlSZWFkZXJTeW5jOwotY2xhc3MgRmlsZUVudHJ5U3luYzsKLQotY2xhc3MgRGlyZWN0b3J5RW50
cnlTeW5jIDogcHVibGljIEVudHJ5U3luYyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RGlyZWN0b3J5RW50cnlTeW5jPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFz
ZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5RW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRo
KSk7Ci0gICAgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLQotICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gY3JlYXRlUmVh
ZGVyKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IGdldEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBnZXREaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgcmVtb3ZlUmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYpOwotCi1wcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBFbnRyeVN5bmM7Ci0gICAgRGlyZWN0b3J5RW50cnlTeW5jKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERpcmVjdG9yeUVudHJ5
U3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
RW50cnlTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBD
b25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0g
ICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZh
Y2UgRGlyZWN0b3J5RW50cnlTeW5jIDogRW50cnlTeW5jIHsKLSAgICBbUmFpc2VzRXhjZXB0aW9u
XSBEaXJlY3RvcnlSZWFkZXJTeW5jIGNyZWF0ZVJlYWRlcigpOwotICAgIFtSYWlzZXNFeGNlcHRp
b25dIEZpbGVFbnRyeVN5bmMgZ2V0RmlsZShbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRV
bmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgRGljdGlvbmFyeSBmbGFncyk7
Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gRGlyZWN0b3J5RW50cnlTeW5jIGdldERpcmVjdG9yeShb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01T
dHJpbmcgcGF0aCwgRGljdGlvbmFyeSBmbGFncyk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCByZW1vdmVSZWN1cnNpdmVseSgpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuY3BwCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgot
I2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1EaXJlY3RvcnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQ
YXRoKQotICAgIDogRGlyZWN0b3J5UmVhZGVyQmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsK
LX0KLQotdm9pZCBEaXJlY3RvcnlSZWFkZXI6OnJlYWRFbnRyaWVzKFBhc3NSZWZQdHI8RW50cmll
c0NhbGxiYWNrPiBlbnRyaWVzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIW1faGFzTW9yZUVudHJpZXMpIHsKLSAgICAgICAgZmls
ZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVudHJpZXNDYWxsYmFjaywgRW50cnlBcnJheTo6
Y3JlYXRlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZpbGVzeXN0ZW0oKS0+cmVh
ZERpcmVjdG9yeSh0aGlzLCBtX2Z1bGxQYXRoLCBlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5o
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5UmVhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
RGlyZWN0b3J5UmVhZGVyX2gKLSNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyX2gKLQotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJE
aXJlY3RvcnlSZWFkZXJCYXNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJpZXNDYWxsYmFjazsKLWNsYXNzIEVu
dHJpZXNDYWxsYmFja3M7Ci1jbGFzcyBFcnJvckNhbGxiYWNrOwotCi1jbGFzcyBEaXJlY3RvcnlS
ZWFkZXIgOiBwdWJsaWMgRGlyZWN0b3J5UmVhZGVyQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5UmVhZGVyKGZpbGVTeXN0ZW0sIGZ1bGxQ
YXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCByZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXND
YWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKLQotICAgIERPTUZpbGVT
eXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01GaWxlU3lz
dGVtKj4obV9maWxlU3lzdGVtLmdldCgpKTsgfQotCi1wcml2YXRlOgotICAgIERpcmVjdG9yeVJl
YWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCk7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAv
LyBEaXJlY3RvcnlSZWFkZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0g
ICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgSlNOb1N0YXRpY1RhYmxlcywKLSAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCi1dIGludGVyZmFjZSBEaXJlY3RvcnlSZWFkZXIgewot
ICAgIHZvaWQgcmVhZEVudHJpZXMoRW50cmllc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0
aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNl
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgRGlyZWN0b3J5UmVhZGVyQmFzZV9oCi0jZGVmaW5lIERpcmVjdG9yeVJlYWRlckJhc2Vf
aAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJh
c2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERp
cmVjdG9yeVJlYWRlckJhc2U+IHsKLXB1YmxpYzoKLSAgICBET01GaWxlU3lzdGVtQmFzZSogZmls
ZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQotICAgIHZvaWQg
c2V0SGFzTW9yZUVudHJpZXMoYm9vbCBoYXNNb3JlRW50cmllcykgeyBtX2hhc01vcmVFbnRyaWVz
ID0gaGFzTW9yZUVudHJpZXM7IH0KLQotcHJvdGVjdGVkOgotICAgIERpcmVjdG9yeVJlYWRlckJh
c2UoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBmdWxsUGF0aCkKLSAgICAgICAgOiBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAgICAgICAg
LCBtX2Z1bGxQYXRoKGZ1bGxQYXRoKQotICAgICAgICAsIG1faGFzTW9yZUVudHJpZXModHJ1ZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBtX2ZpbGVTeXN0
ZW07Ci0KLSAgICAvLyBUaGlzIGlzIGEgdmlydHVhbCBwYXRoLgotICAgIFN0cmluZyBtX2Z1bGxQ
YXRoOwotCi0gICAgYm9vbCBtX2hhc01vcmVFbnRyaWVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGly
ZWN0b3J5UmVhZGVyQmFzZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkRpcmVjdG9y
eUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgiCi0jaW5jbHVkZSAiRW50
cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFeGNl
cHRpb24uaCIKLSNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1EaXJlY3RvcnlSZWFkZXJTeW5jOjpEaXJlY3RvcnlSZWFkZXJTeW5jKFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCi0gICAgOiBEaXJlY3RvcnlSZWFkZXJCYXNlKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQotewot
fQotCi1QYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBEaXJlY3RvcnlSZWFkZXJTeW5jOjpyZWFk
RW50cmllcyhFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgaWYgKCFtX2hh
c01vcmVFbnRyaWVzKQotICAgICAgICByZXR1cm4gRW50cnlBcnJheVN5bmM6OmNyZWF0ZSgpOwot
Ci0gICAgRW50cmllc1N5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3lu
Y0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkodGhp
cywgbV9mdWxsUGF0aCwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxs
YmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUjsKLSAgICAgICAgc2V0SGFzTW9yZUVudHJpZXMoZmFsc2UpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi19IC8v
IG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
U3luYy5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIERpcmVjdG9yeVJlYWRlclN5bmNfaAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJT
eW5jX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRpcmVjdG9yeVJl
YWRlckJhc2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cnlBcnJheVN5bmM7Ci0KLXR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7Ci0KLWNsYXNzIERpcmVjdG9yeVJlYWRlclN5bmMgOiBwdWJsaWMgRGlyZWN0b3J5
UmVhZGVyQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVh
ZGVyU3luYz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERpcmVjdG9yeVJlYWRlclN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0K
LSAgICBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiByZWFkRW50cmllcyhFeGNlcHRpb25Db2Rl
Jik7Ci0KLXByaXZhdGU6Ci0gICAgRGlyZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5hbWVz
cGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0
b3J5UmVhZGVyU3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5UmVhZGVyU3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3lu
Yy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9i
amVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU05vU3RhdGljVGFibGVz
LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKLV0gaW50ZXJmYWNlIERpcmVjdG9yeVJl
YWRlclN5bmMgewotICAgIFtSYWlzZXNFeGNlcHRpb25dIEVudHJ5QXJyYXlTeW5jIHJlYWRFbnRy
aWVzKCk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJp
ZXNDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyaWVzQ2FsbGJhY2suaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJpZXNDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEVudHJpZXNDYWxsYmFja19oCi0jZGVmaW5lIEVudHJpZXND
YWxsYmFja19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5QXJyYXk7Ci0K
LWNsYXNzIEVudHJpZXNDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJpZXNDYWxsYmFj
az4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkVudHJpZXNDYWxsYmFjaygpIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeUFycmF5KikgPSAwOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVudHJp
ZXNDYWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cmllc0NhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJpZXNDYWxsYmFjay5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLV0g
Y2FsbGJhY2sgaW50ZXJmYWNlIEVudHJpZXNDYWxsYmFjayB7Ci0gICAgYm9vbGVhbiBoYW5kbGVF
dmVudChFbnRyeUFycmF5IGVudHJpZXMpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFbnRyeS5oIgotCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVk
ZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCi0jaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCi0jaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVudHJ5OjpFbnRyeShQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KQotICAgIDogRW50cnlCYXNlKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQotewotfQotCi12b2lkIEVu
dHJ5OjpnZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKQotewotICAg
IFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwot
ICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0YSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2so
ZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQgRW50cnk6Om1vdmVUbyhQYXNzUmVm
UHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+
bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxi
YWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElG
SUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0
b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5jb3B5KHRoaXMs
IHBhcmVudC5nZXQoKSwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKLSAg
ICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFz
ZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
UikpOwotfQotCi12b2lkIEVudHJ5OjpyZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVm
KSBjb25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9y
Q2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVs
ZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxl
RXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotfQotCi12b2lkIEVudHJ5OjpnZXRQ
YXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QKLXsKLSAgICBSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAo
IW1fZmlsZVN5c3RlbS0+Z2V0UGFyZW50KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxi
YWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElG
SUNBVElPTl9FUlIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEVudHJ5X2gKLSNkZWZpbmUgRW50cnlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIEVudHJ5Q2Fs
bGJhY2s7Ci1jbGFzcyBFbnRyeVN5bmM7Ci1jbGFzcyBFcnJvckNhbGxiYWNrOwotY2xhc3MgTWV0
YWRhdGFDYWxsYmFjazsKLWNsYXNzIFZvaWRDYWxsYmFjazsKLQotY2xhc3MgRW50cnkgOiBwdWJs
aWMgRW50cnlCYXNlIHsKLXB1YmxpYzoKLSAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbSo+KG1fZmlsZVN5c3RlbS5n
ZXQoKSk7IH0KLQotICAgIHZvaWQgZ2V0TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2sgPSAwKTsKLSAgICB2b2lkIG1vdmVUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5
PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwotICAgIHZvaWQgY29weVRvKFBhc3NSZWZQdHI8RGly
ZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7Ci0gICAgdm9pZCByZW1vdmUoUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwotICAgIHZvaWQgZ2V0UGFyZW50
KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoK
LSAgICBFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBm
dWxsUGF0aCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyeV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25h
bD1GSUxFX1NZU1RFTSwKLSAgICBDdXN0b21Ub0pTT2JqZWN0LAotICAgIEpTTm9TdGF0aWNUYWJs
ZXMKLV0gaW50ZXJmYWNlIEVudHJ5IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBp
c0ZpbGU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXJlY3Rvcnk7Ci0gICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgZnVsbFBhdGg7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUZpbGVTeXN0
ZW0gZmlsZXN5c3RlbTsKLQotICAgIHZvaWQgZ2V0TWV0YWRhdGEoTWV0YWRhdGFDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0g
ICAgdm9pZCBtb3ZlVG8oRGlyZWN0b3J5RW50cnkgcGFyZW50LCBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcgbmFt
ZSwgb3B0aW9uYWwgRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9y
Q2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBjb3B5VG8oRGlyZWN0b3J5RW50cnkg
cGFyZW50LCBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3Ry
aW5nXSBvcHRpb25hbCBET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgRW50cnlDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAg
RE9NU3RyaW5nIHRvVVJMKCk7Ci0gICAgdm9pZCByZW1vdmUoVm9pZENhbGxiYWNrIHN1Y2Nlc3ND
YWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICB2b2lk
IGdldFBhcmVudChvcHRpb25hbCBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9u
YWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJFbnRyeUFycmF5LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotRW50cnlBcnJheTo6RW50cnlBcnJheSgpCi17Ci19Ci0KLUVudHJ5KiBF
bnRyeUFycmF5OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmIChpbmRleCA+
PSBtX2VudHJpZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9lbnRy
aWVzW2luZGV4XS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5QXJyYXkuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBFbnRyeUFycmF5X2gKLSNkZWZpbmUgRW50cnlBcnJheV9oCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBFbnRyeUFycmF5IDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnlBcnJheT4g
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXk+IGNyZWF0ZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXkoKSk7Ci0gICAgfQot
Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLnNpemUoKTsg
fQotICAgIEVudHJ5KiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICB2b2lkIHNldCh1
bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxFbnRyeT4pOwotCi0gICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7
IG1fZW50cmllcy5jbGVhcigpOyB9Ci0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxFbnRyeT4g
ZW50cnkpIHsgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7IH0KLQotcHJpdmF0ZToKLSAgICBFbnRy
eUFycmF5KCk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPEVudHJ5PiA+IG1fZW50cmllczsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRp
ZiAvLyBFbnRyeUFycmF5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlBcnJheS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJ
TEVfU1lTVEVNLAotICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZQotXSBpbnRlcmZhY2UgRW50cnlBcnJheSB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIGdldHRlciBFbnRyeSBpdGVtKFtJc0luZGV4XSB1
bnNpZ25lZCBsb25nIGluZGV4KTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAJKHJldmlzaW9uIDE1NjY5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJFbnRyeUFycmF5U3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSAiRW50cnlBcnJheS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8
RW50cnlBcnJheVN5bmM+IEVudHJ5QXJyYXlTeW5jOjpjcmVhdGUoRW50cnlBcnJheSogZW50cmll
cykKLXsKLSAgICBSZWZQdHI8RW50cnlBcnJheVN5bmM+IGVudHJpZXNTeW5jID0gYWRvcHRSZWYo
bmV3IEVudHJ5QXJyYXlTeW5jKCkpOwotICAgIGlmIChlbnRyaWVzKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBlbnRyaWVzLT5sZW5ndGgoKTsgKytpKQotICAgICAgICAgICAg
ZW50cmllc1N5bmMtPmFwcGVuZChFbnRyeVN5bmM6OmNyZWF0ZShlbnRyaWVzLT5pdGVtKGkpKSk7
Ci0gICAgfQotICAgIHJldHVybiBlbnRyaWVzU3luYy5yZWxlYXNlKCk7Ci19Ci0KLUVudHJ5QXJy
YXlTeW5jOjpFbnRyeUFycmF5U3luYygpCi17Ci19Ci0KLUVudHJ5U3luYyogRW50cnlBcnJheVN5
bmM6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgaWYgKGluZGV4ID49IG1fZW50
cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2VudHJpZXNbaW5k
ZXhdLmdldCgpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5
bmMuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5QXJyYXlTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgRW50cnlBcnJheVN5bmNfaAotI2RlZmluZSBFbnRyeUFycmF5U3luY19oCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeVN5bmMuaCIKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgRW50cnlBcnJheTsKLQotY2xhc3MgRW50cnlBcnJheVN5bmMgOiBw
dWJsaWMgUmVmQ291bnRlZDxFbnRyeUFycmF5U3luYz4gewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5U3luYygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFbnRyeUFycmF5U3luYz4gY3JlYXRlKEVudHJ5QXJyYXkqKTsKLQotICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7IH0KLSAgICBFbnRy
eVN5bmMqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotCi0gICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7
IG1fZW50cmllcy5jbGVhcigpOyB9Ci0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxFbnRyeVN5
bmM+IGVudHJ5KSB7IG1fZW50cmllcy5hcHBlbmQoZW50cnkpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
RW50cnlBcnJheVN5bmMoKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8RW50cnlTeW5jPiA+IG1fZW50
cmllczsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlm
IC8vIEVudHJ5QXJyYXlTeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUFycmF5U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAg
IENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRlcmZhY2UgRW50cnlBcnJheVN5bmMgewotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBnZXR0ZXIgRW50
cnlTeW5jIGl0ZW0oW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNp
bmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FbnRyeUJhc2U6OkVudHJ5QmFzZShQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQ
YXRoKQotICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgLCBtX2Z1bGxQYXRoKGZ1
bGxQYXRoKQotICAgICwgbV9uYW1lKERPTUZpbGVQYXRoOjpnZXROYW1lKGZ1bGxQYXRoKSkKLXsK
LX0KLQotRW50cnlCYXNlOjp+RW50cnlCYXNlKCkKLXsKLX0KLQotU3RyaW5nIEVudHJ5QmFzZTo6
dG9VUkwoKSBjb25zdAotewotICAgIC8vIFNvbWUgZmlsZXN5c3RlbSB0eXBlIG1heSBub3Qgc3Vw
cG9ydCB0b1VSTC4KLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+c3VwcG9ydHNUb1VSTCgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gbV9maWxlU3lzdGVtLT5jcmVhdGVG
aWxlU3lzdGVtVVJMKHRoaXMpLnN0cmluZygpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlCYXNlX2gKLSNkZWZpbmUgRW50cnlCYXNl
X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgRE9NRmlsZVN5c3RlbUJhc2U7Ci1jbGFzcyBFbnRyeVN5bmM7Ci0KLS8vIEEg
Y29tbW9uIGJhc2UgY2xhc3MgZm9yIEVudHJ5IGFuZCBFbnRyeVN5bmMuCi1jbGFzcyBFbnRyeUJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeUJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5FbnRyeUJhc2UoKTsKLQotICAgIERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlc3lzdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9maWxlU3lzdGVtLmdldCgpOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNG
aWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbFBhdGg7IH0KLSAgICBjb25zdCBTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLQotICAgIFN0cmluZyB0b1VSTCgpIGNvbnN0Owot
Ci1wcm90ZWN0ZWQ6Ci0gICAgRW50cnlCYXNlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLSAgICBmcmllbmQgY2xhc3MgRW50cnlTeW5jOwot
Ci0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBtX2ZpbGVTeXN0ZW07Ci0KLSAgICAvLyBU
aGlzIGlzIGEgdmlydHVhbCBwYXRoLgotICAgIFN0cmluZyBtX2Z1bGxQYXRoOwotCi0gICAgU3Ry
aW5nIG1fbmFtZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2VuZGlmIC8vIEVudHJ5QmFzZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlDYWxsYmFja19oCi0jZGVmaW5lIEVudHJ5
Q2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeTsKLQotY2xh
c3MgRW50cnlDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5Q2FsbGJhY2s+IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5FbnRyeUNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29s
IGhhbmRsZUV2ZW50KEVudHJ5KikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVudHJ5Q2FsbGJhY2tfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxi
YWNrLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFjZSBFbnRy
eUNhbGxiYWNrIHsKLSAgICBib29sZWFuIGhhbmRsZUV2ZW50KEVudHJ5IGVudHJ5KTsKLX07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNw
cAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0VudHJ5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRW50cnlTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNpbmNsdWRlICJET01GaWxlUGF0aC5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1T
eW5jLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlF
bnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUV4
Y2VwdGlvbi5oIgotI2luY2x1ZGUgIk1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNr
SGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+
IEVudHJ5U3luYzo6Y3JlYXRlKEVudHJ5QmFzZSogZW50cnkpCi17Ci0gICAgaWYgKGVudHJ5LT5p
c0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnlTeW5jKGVudHJ5
LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQYXRoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEaXJlY3RvcnlFbnRyeVN5bmMoZW50cnktPm1fZmlsZVN5c3RlbSwgZW50cnktPm1fZnVs
bFBhdGgpKTsKLX0KLQotUGFzc1JlZlB0cjxNZXRhZGF0YT4gRW50cnlTeW5jOjpnZXRNZXRhZGF0
YShFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgTWV0YWRhdGFTeW5jQ2Fs
bGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAg
IGlmICghbV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0YSh0aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxi
YWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2Vw
dGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi1QYXNzUmVmUHRyPEVudHJ5
U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBh
cmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKLXsKLSAg
ICBlYyA9IDA7Ci0gICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3Rl
bS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMs
IHBhcmVudC5nZXQoKSwgbmFtZSwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJy
b3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBoZWxw
ZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6
Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIEVu
dHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3Rl
bSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Y29weSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5h
bWUsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsK
LSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7
Ci19Ci0KLXZvaWQgRW50cnlTeW5jOjpyZW1vdmUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17
Ci0gICAgZWMgPSAwOwotICAgIFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5
c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmUo
dGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkg
ewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQot
UGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Z2V0UGFyZW50KCkgY29uc3QKLXsKLSAg
ICAvLyBTeW5jIHZlcmlvbiBvZiBnZXRQYXJlbnQgZG9lc24ndCB0aHJvdyBleGNlcHRpb25zLgot
ICAgIFN0cmluZyBwYXJlbnRQYXRoID0gRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShmdWxsUGF0
aCgpKTsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVt
LCBwYXJlbnRQYXRoKTsKLX0KLQotRW50cnlTeW5jOjpFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6
IEVudHJ5QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5U3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeVN5bmMuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEVudHJ5U3luY19oCi0jZGVmaW5lIEVudHJ5U3luY19oCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1
ZGUgIkVudHJ5QmFzZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5U3luYzsKLWNsYXNzIE1ldGFkYXRhOwot
Ci10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBFbnRyeVN5bmMgOiBwdWJsaWMg
RW50cnlCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGNy
ZWF0ZShFbnRyeUJhc2UqKTsKLQotICAgIERPTUZpbGVTeXN0ZW1TeW5jKiBmaWxlc3lzdGVtKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbVN5bmMqPihtX2ZpbGVTeXN0
ZW0uZ2V0KCkpOyB9Ci0KLSAgICBQYXNzUmVmUHRyPE1ldGFkYXRhPiBnZXRNZXRhZGF0YShFeGNl
cHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IG1vdmVUbyhQYXNzUmVmUHRy
PERpcmVjdG9yeUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEVudHJ5U3luYz4gY29weVRvKFBhc3NSZWZQ
dHI8RGlyZWN0b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwotICAgIHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
LSAgICBQYXNzUmVmUHRyPEVudHJ5U3luYz4gZ2V0UGFyZW50KCkgY29uc3Q7Ci0KLXByb3RlY3Rl
ZDoKLSAgICBFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jZW5kaWYgLy8gRW50cnlTeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlv
bmFsPUZJTEVfU1lTVEVNLAotICAgIEN1c3RvbVRvSlNPYmplY3QsCi0gICAgSlNOb1N0YXRpY1Rh
YmxlcwotXSBpbnRlcmZhY2UgRW50cnlTeW5jIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBpc0ZpbGU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXJlY3Rvcnk7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgZnVsbFBhdGg7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUZp
bGVTeXN0ZW1TeW5jIGZpbGVzeXN0ZW07Ci0KLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBNZXRhZGF0
YSBnZXRNZXRhZGF0YSgpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEVudHJ5U3luYyBtb3ZlVG8o
RGlyZWN0b3J5RW50cnlTeW5jIHBhcmVudCwgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0
VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUpOwotICAgIFtSYWlzZXNFeGNl
cHRpb25dIEVudHJ5U3luYyBjb3B5VG8oRGlyZWN0b3J5RW50cnlTeW5jIHBhcmVudCwgW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5n
IG5hbWUpOwotICAgIERPTVN0cmluZyB0b1VSTCgpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZv
aWQgcmVtb3ZlKCk7Ci0gICAgRGlyZWN0b3J5RW50cnlTeW5jIGdldFBhcmVudCgpOwotfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJh
Y2suaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0Vycm9yQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBFcnJvckNhbGxiYWNrX2gKLSNkZWZpbmUgRXJyb3JDYWxsYmFja19oCi0KLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEZpbGVFcnJvcjsKLQotY2xhc3MgRXJyb3JDYWxsYmFjayA6IHB1
YmxpYyBSZWZDb3VudGVkPEVycm9yQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5F
cnJvckNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJv
ciopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNlbmRpZiAvLyBFcnJvckNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxi
YWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFs
PUZJTEVfU1lTVEVNLAotXSBjYWxsYmFjayBpbnRlcmZhY2UgRXJyb3JDYWxsYmFjayB7Ci0gICAg
Ym9vbGVhbiBoYW5kbGVFdmVudChGaWxlRXJyb3IgZXJyb3IpOwotfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmgJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlQ2FsbGJhY2tf
aAotI2RlZmluZSBGaWxlQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBGaWxlOwotCi1jbGFzcyBGaWxlQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2Fs
bGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5GaWxlQ2FsbGJhY2soKSB7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRmlsZSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlQ2FsbGJh
Y2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFj
ay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVDYWxsYmFjay5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFj
ZSBGaWxlQ2FsbGJhY2sgewotICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoRmlsZSBmaWxlKTsKLX07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5
LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlRW50cnkuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJFcnJvckNhbGxi
YWNrLmgiCi0jaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIkZpbGVDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIkZpbGVXcml0ZXJDYWxsYmFjay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZp
bGVFbnRyeTo6RmlsZUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBFbnRyeShmaWxlU3lzdGVtLCBmdWxs
UGF0aCkKLXsKLX0KLQotdm9pZCBGaWxlRW50cnk6OmNyZWF0ZVdyaXRlcihQYXNzUmVmUHRyPEZp
bGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgZmlsZXN5c3RlbSgpLT5jcmVhdGVXcml0ZXIodGhp
cywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotdm9pZCBGaWxlRW50cnk6
OmZpbGUoUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIGZpbGVzeXN0ZW0oKS0+Y3Jl
YXRlRmlsZSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi19IC8v
IG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaAkocmV2aXNpb24gMTU2
NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVFbnRyeV9oCi0jZGVmaW5l
IEZpbGVFbnRyeV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRy
eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwot
Y2xhc3MgRmlsZUNhbGxiYWNrOwotY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNrOwotCi1jbGFzcyBG
aWxlRW50cnkgOiBwdWJsaWMgRW50cnkgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZpbGVFbnRyeT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZpbGVFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLQotICAgIHZv
aWQgY3JlYXRlV3JpdGVyKFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiA9IDApOwotICAgIHZvaWQgZmlsZShQYXNzUmVmUHRyPEZpbGVDYWxs
YmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKLQotICAgIHZpcnR1YWwgYm9v
bCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgRmlsZUVu
dHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNlbmRpZiAvLyBGaWxlRW50cnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVFbnRyeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9u
YWw9RklMRV9TWVNURU0sCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIEZpbGVF
bnRyeSA6IEVudHJ5IHsKLSAgICB2b2lkIGNyZWF0ZVdyaXRlcihGaWxlV3JpdGVyQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwot
ICAgIHZvaWQgZmlsZShGaWxlQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJv
ckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5jcHAJKHJldmlzaW9uIDE1NjY5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2lu
Y2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyU3luYy5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUZpbGVFbnRyeVN5bmM6OkZpbGVFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6
IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxGaWxl
PiBGaWxlRW50cnlTeW5jOjpmaWxlKEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHJldHVybiBm
aWxlc3lzdGVtKCktPmNyZWF0ZUZpbGUodGhpcywgZWMpOwotfQotCi1QYXNzUmVmUHRyPEZpbGVX
cml0ZXJTeW5jPiBGaWxlRW50cnlTeW5jOjpjcmVhdGVXcml0ZXIoRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgcmV0dXJuIGZpbGVzeXN0ZW0oKS0+Y3JlYXRlV3JpdGVyKHRoaXMsIGVjKTsKLX0K
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5oCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3lu
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVFbnRyeVN5bmNf
aAotI2RlZmluZSBGaWxlRW50cnlTeW5jX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2luY2x1ZGUgIkVudHJ5U3luYy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWxlOwotY2xhc3MgRmlsZVdyaXRlclN5
bmM7Ci0KLWNsYXNzIEZpbGVFbnRyeVN5bmMgOiBwdWJsaWMgRW50cnlTeW5jIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBjcmVhdGUoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZUVudHJ5U3luYyhmaWxlU3lzdGVt
LCBmdWxsUGF0aCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9Ci0KLSAgICBQYXNzUmVmUHRyPEZpbGU+IGZpbGUoRXhjZXB0aW9uQ29k
ZSYpOwotICAgIFBhc3NSZWZQdHI8RmlsZVdyaXRlclN5bmM+IGNyZWF0ZVdyaXRlcihFeGNlcHRp
b25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEVudHJ5U3luYzsKLSAgICBG
aWxlRW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2VuZGlmIC8vIEZpbGVFbnRyeVN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0g
ICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50
ZXJmYWNlIEZpbGVFbnRyeVN5bmMgOiBFbnRyeVN5bmMgewotICAgIFtSYWlzZXNFeGNlcHRpb25d
IEZpbGUgZmlsZSgpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIEZpbGVXcml0ZXJTeW5jIGNyZWF0
ZVdyaXRlcigpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlU3lzdGVtQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlU3lzdGVtQ2FsbGJhY2tfaAot
I2RlZmluZSBGaWxlU3lzdGVtQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBET01GaWxlU3lzdGVtOwotCi1jbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxGaWxlU3lzdGVtQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5G
aWxlU3lzdGVtQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoRE9N
RmlsZVN5c3RlbSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlU3lzdGVtQ2FsbGJhY2tfaApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0
ZW1DYWxsYmFjay5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIGNhbGxiYWNrIGlu
dGVyZmFjZSBGaWxlU3lzdGVtQ2FsbGJhY2sgewotICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoRE9N
RmlsZVN5c3RlbSBmaWxlU3lzdGVtKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5
c3RlbUNhbGxiYWNrcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjg1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRl
ICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0jaW5j
bHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgiCi0jaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCi0j
aW5jbHVkZSAiRW50cnlBcnJheS5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNs
dWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0jaW5jbHVkZSAi
RmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckJhc2UuaCIKLSNpbmNsdWRlICJG
aWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGEuaCIKLSNpbmNsdWRl
ICJNZXRhZGF0YUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZp
bGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgOiBtX2Vycm9yQ2FsbGJhY2soZXJy
b3JDYWxsYmFjaykKLXsKLX0KLQotRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6On5GaWxlU3lzdGVt
Q2FsbGJhY2tzQmFzZSgpCi17Ci19Ci0KLXZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRp
ZEZhaWwoaW50IGNvZGUpCi17Ci0gICAgaWYgKG1fZXJyb3JDYWxsYmFjaykgewotICAgICAgICBt
X2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PEZpbGVFcnJvcjo6RXJyb3JDb2RlPihjb2RlKSkuZ2V0KCkpOwotICAgICAgICBtX2Vycm9yQ2Fs
bGJhY2suY2xlYXIoKTsKLSAgICB9Ci19Ci0KLS8vIEVudHJ5Q2FsbGJhY2tzIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUGFz
c093blB0cjxFbnRyeUNhbGxiYWNrcz4gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEVudHJ5Q2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaywgZmlsZVN5c3RlbSwgZXhwZWN0ZWRQYXRoLCBpc0RpcmVjdG9yeSkpOwotfQotCi1F
bnRyeUNhbGxiYWNrczo6RW50cnlDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tz
QmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxi
YWNrKQotICAgICwgbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgLCBtX2V4cGVjdGVkUGF0
aChleHBlY3RlZFBhdGgpCi0gICAgLCBtX2lzRGlyZWN0b3J5KGlzRGlyZWN0b3J5KQotewotfQot
Ci12b2lkIEVudHJ5Q2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkKLXsKLSAgICBpZiAobV9zdWNjZXNz
Q2FsbGJhY2spIHsKLSAgICAgICAgaWYgKG1faXNEaXJlY3RvcnkpCi0gICAgICAgICAgICBtX3N1
Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShtX2ZpbGVT
eXN0ZW0sIG1fZXhwZWN0ZWRQYXRoKS5nZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChGaWxlRW50cnk6OmNyZWF0ZShtX2ZpbGVT
eXN0ZW0sIG1fZXhwZWN0ZWRQYXRoKS5nZXQoKSk7Ci0gICAgfQotICAgIG1fc3VjY2Vzc0NhbGxi
YWNrLmNsZWFyKCk7Ci19Ci0KLS8vIEVudHJpZXNDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUGFzc093blB0cjxF
bnRyaWVzQ2FsbGJhY2tzPiBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRy
aWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+IGRpcmVjdG9yeVJl
YWRlciwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEVudHJpZXNDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBkaXJlY3Rv
cnlSZWFkZXIsIGJhc2VQYXRoKSk7Ci19Ci0KLUVudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxs
YmFja3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPERpcmVjdG9yeVJl
YWRlckJhc2U+IGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKLSAgICA6
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCi0gICAgLCBtX3N1Y2Nlc3ND
YWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi0gICAgLCBtX2RpcmVjdG9yeVJlYWRlcihkaXJlY3Rv
cnlSZWFkZXIpCi0gICAgLCBtX2Jhc2VQYXRoKGJhc2VQYXRoKQotICAgICwgbV9lbnRyaWVzKEVu
dHJ5QXJyYXk6OmNyZWF0ZSgpKQotewotICAgIEFTU0VSVChtX2RpcmVjdG9yeVJlYWRlcik7Ci19
Ci0KLXZvaWQgRW50cmllc0NhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSkKLXsKLSAgICBpZiAoaXNEaXJlY3RvcnkpCi0g
ICAgICAgIG1fZW50cmllcy0+YXBwZW5kKERpcmVjdG9yeUVudHJ5OjpjcmVhdGUobV9kaXJlY3Rv
cnlSZWFkZXItPmZpbGVzeXN0ZW0oKSwgRE9NRmlsZVBhdGg6OmFwcGVuZChtX2Jhc2VQYXRoLCBu
YW1lKSkpOwotICAgIGVsc2UKLSAgICAgICAgbV9lbnRyaWVzLT5hcHBlbmQoRmlsZUVudHJ5Ojpj
cmVhdGUobV9kaXJlY3RvcnlSZWFkZXItPmZpbGVzeXN0ZW0oKSwgRE9NRmlsZVBhdGg6OmFwcGVu
ZChtX2Jhc2VQYXRoLCBuYW1lKSkpOwotfQotCi12b2lkIEVudHJpZXNDYWxsYmFja3M6OmRpZFJl
YWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSkKLXsKLSAgICBtX2RpcmVjdG9yeVJlYWRl
ci0+c2V0SGFzTW9yZUVudHJpZXMoaGFzTW9yZSk7Ci0gICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNr
KQotICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQobV9lbnRyaWVzLmdldCgp
KTsKLX0KLQotLy8gRmlsZVN5c3RlbUNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1QYXNzT3duUHRyPEZpbGVTeXN0ZW1D
YWxsYmFja3M+IEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEZpbGVTeXN0
ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxl
U3lzdGVtQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgdHlwZSkpOwotfQotCi1GaWxlU3lzdGVtQ2FsbGJhY2tzOjpGaWxlU3lz
dGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKLSAgICA6IEZpbGVTeXN0
ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhz
dWNjZXNzQ2FsbGJhY2spCi0gICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkK
LSAgICAsIG1fdHlwZSh0eXBlKQotewotfQotCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmRp
ZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQotewotICAgIGlmICht
X3N1Y2Nlc3NDYWxsYmFjaykgewotICAgICAgICBBU1NFUlQoYXN5bmNGaWxlU3lzdGVtKTsKLSAg
ICAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0gPSBET01GaWxlU3lzdGVtOjpj
cmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1lLCBtX3R5cGUsIHJvb3RV
UkwsIGFzeW5jRmlsZVN5c3RlbSk7Ci0gICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVF
dmVudChmaWxlU3lzdGVtLmdldCgpKTsKLSAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNsZWFyKCk7Ci0gICAgfQotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7Ci19Ci0KLS8v
IFJlc29sdmVVUklDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgRXJyb3JDYWxsYmFj
a1dyYXBwZXIgOiBwdWJsaWMgRXJyb3JDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFja1dyYXBwZXI+IGNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrLCBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiByb290LCBjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFcnJvckNhbGxiYWNr
V3JhcHBlcihzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHJvb3QsIGZpbGVQYXRoKSk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3Ip
Ci0gICAgewotICAgICAgICBBU1NFUlQoZXJyb3IpOwotICAgICAgICBpZiAoZXJyb3ItPmNvZGUo
KSA9PSBGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSKQotICAgICAgICAgICAgbV9yb290LT5n
ZXRGaWxlKG1fZmlsZVBhdGgsIERpY3Rpb25hcnkoKSwgbV9zdWNjZXNzQ2FsbGJhY2ssIG1fZXJy
b3JDYWxsYmFjayk7Ci0gICAgICAgIGVsc2UgaWYgKG1fZXJyb3JDYWxsYmFjaykKLSAgICAgICAg
ICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRXJyb3JDYWxsYmFja1dyYXBwZXIoUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCwgY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKLSAgICAgICAgOiBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNz
Q2FsbGJhY2spCi0gICAgICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCi0gICAg
ICAgICwgbV9yb290KHJvb3QpCi0gICAgICAgICwgbV9maWxlUGF0aChmaWxlUGF0aCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3Jvb3QpOwotICAgIH0KLQotICAgIFJlZlB0cjxFbnRyeUNhbGxi
YWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gbV9lcnJv
ckNhbGxiYWNrOwotICAgIFJlZlB0cjxEaXJlY3RvcnlFbnRyeT4gbV9yb290OwotICAgIFN0cmlu
ZyBtX2ZpbGVQYXRoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotUGFzc093blB0cjxSZXNvbHZl
VVJJQ2FsbGJhY2tzPiBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFJlc29sdmVVUklDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlUGF0aCkpOwot
fQotCi1SZXNvbHZlVVJJQ2FsbGJhY2tzOjpSZXNvbHZlVVJJQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVTeXN0
ZW1UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCi0gICAgOiBGaWxlU3lzdGVtQ2Fs
bGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vz
c0NhbGxiYWNrKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX3R5cGUodHlwZSkKLSAgICAsIG1fZmlsZVBhdGgoZmlsZVBhdGgpCi17Ci19Ci0KLXZvaWQg
UmVzb2x2ZVVSSUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0Zp
bGVTeXN0ZW0pCi17Ci0gICAgQVNTRVJUKGFzeW5jRmlsZVN5c3RlbSk7Ci0gICAgUmVmUHRyPERp
cmVjdG9yeUVudHJ5PiByb290ID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5nZXQoKSwgbmFtZSwgbV90eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0p
LT5yb290KCk7Ci0gICAgcm9vdC0+Z2V0RGlyZWN0b3J5KG1fZmlsZVBhdGgsIERpY3Rpb25hcnko
KSwgbV9zdWNjZXNzQ2FsbGJhY2ssIEVycm9yQ2FsbGJhY2tXcmFwcGVyOjpjcmVhdGUobV9zdWNj
ZXNzQ2FsbGJhY2ssIG1fZXJyb3JDYWxsYmFjaywgcm9vdCwgbV9maWxlUGF0aCkpOwotfQotCi0v
LyBNZXRhZGF0YUNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVBhc3NPd25QdHI8TWV0YWRhdGFDYWxsYmFja3M+IE1l
dGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1ldGFkYXRhQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpOwotfQotCi1NZXRhZGF0YUNhbGxiYWNrczo6TWV0YWRhdGFDYWxs
YmFja3MoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLSAgICA6IEZpbGVTeXN0ZW1DYWxs
YmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNz
Q2FsbGJhY2spCi17Ci19Ci0KLXZvaWQgTWV0YWRhdGFDYWxsYmFja3M6OmRpZFJlYWRNZXRhZGF0
YShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQotewotICAgIGlmIChtX3N1Y2Nlc3NDYWxs
YmFjaykKLSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KE1ldGFkYXRhOjpj
cmVhdGUobWV0YWRhdGEpLmdldCgpKTsKLSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwot
fQotCi0vLyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVBhc3NPd25QdHI8RmlsZVdyaXRl
ckJhc2VDYWxsYmFja3M+IEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0
cjxGaWxlV3JpdGVyQmFzZT4gZmlsZVdyaXRlciwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbGVXcml0ZXJCYXNlQ2FsbGJh
Y2tzKGZpbGVXcml0ZXIsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotfQotCi1G
aWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6RmlsZVdyaXRlckJhc2VDYWxsYmFja3MoUGFzc1JlZlB0
cjxGaWxlV3JpdGVyQmFzZT4gZmlsZVdyaXRlciwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQmFzZUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKLSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCi0g
ICAgLCBtX2ZpbGVXcml0ZXIoZmlsZVdyaXRlcikKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1
Y2Nlc3NDYWxsYmFjaykKLXsKLX0KLQotdm9pZCBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6ZGlk
Q3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gYXN5bmNGaWxlV3Jp
dGVyLCBsb25nIGxvbmcgbGVuZ3RoKQotewotICAgIG1fZmlsZVdyaXRlci0+aW5pdGlhbGl6ZShh
c3luY0ZpbGVXcml0ZXIsIGxlbmd0aCk7Ci0gICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKQotICAg
ICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQobV9maWxlV3JpdGVyLnJlbGVhc2Uo
KS5nZXQoKSk7Ci0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLX0KLQotLy8gVm9pZENh
bGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1QYXNzT3duUHRyPFZvaWRDYWxsYmFja3M+IFZvaWRDYWxsYmFja3M6
OmNyZWF0ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBWb2lkQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotfQot
Ci1Wb2lkQ2FsbGJhY2tzOjpWb2lkQ2FsbGJhY2tzKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykK
LSAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCi0gICAgLCBtX3N1
Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi17Ci19Ci0KLXZvaWQgVm9pZENhbGxiYWNr
czo6ZGlkU3VjY2VlZCgpCi17Ci0gICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICBt
X3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKLSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5j
bGVhcigpOwotfQotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKLSNkZWZp
bmUgRmlsZVN5c3RlbUNhbGxiYWNrc19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNp
bmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
VHlwZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEFzeW5jRmlsZVdyaXRlcjsKLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwot
Y2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZTsKLWNsYXNzIEVudHJpZXNDYWxsYmFjazsKLWNsYXNz
IEVudHJ5QXJyYXk7Ci1jbGFzcyBFbnRyeUNhbGxiYWNrOwotY2xhc3MgRXJyb3JDYWxsYmFjazsK
LXN0cnVjdCBGaWxlTWV0YWRhdGE7Ci1jbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7Ci1jbGFzcyBG
aWxlV3JpdGVyQmFzZTsKLWNsYXNzIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s7Ci1jbGFzcyBNZXRh
ZGF0YUNhbGxiYWNrOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFZvaWRD
YWxsYmFjazsKLQotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgOiBwdWJsaWMgQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5GaWxlU3lzdGVtQ2Fs
bGJhY2tzQmFzZSgpOwotCi0gICAgLy8gRm9yIEVycm9yQ2FsbGJhY2suCi0gICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoaW50IGNvZGUpOwotCi0gICAgLy8gT3RoZXIgY2FsbGJhY2sgbWV0aG9kcyBh
cmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBzdWJjbGFzcy4KLQotcHJvdGVjdGVkOgotICAgIEZpbGVT
eXN0ZW1DYWxsYmFja3NCYXNlKFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7Ci19OwotCi0vLyBTdWJjbGFzc2VzIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotY2xhc3MgRW50cnlDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNr
c0Jhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBj
cmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQ
YXRoLCBib29sIGlzRGlyZWN0b3J5KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwot
Ci1wcml2YXRlOgotICAgIEVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0gICAgUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIFJlZlB0cjxET01GaWxl
U3lzdGVtQmFzZT4gbV9maWxlU3lzdGVtOwotICAgIFN0cmluZyBtX2V4cGVjdGVkUGF0aDsKLSAg
ICBib29sIG1faXNEaXJlY3Rvcnk7Ci19OwotCi1jbGFzcyBFbnRyaWVzQ2FsbGJhY2tzIDogcHVi
bGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJh
c2U+LCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERp
cmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSk7Ci0KLXBy
aXZhdGU6Ci0gICAgRW50cmllc0NhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFz
ZT4sIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpOwotICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIFJlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiBtX2Rp
cmVjdG9yeVJlYWRlcjsKLSAgICBTdHJpbmcgbV9iYXNlUGF0aDsKLSAgICBSZWZQdHI8RW50cnlB
cnJheT4gbV9lbnRyaWVzOwotfTsKLQotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrcyA6IHB1Ymxp
YyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8RmlsZVN5c3RlbUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxi
YWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEZpbGVTeXN0ZW1UeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPik7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRy
PEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSk7Ci0gICAgUmVmUHRyPEZpbGVTeXN0ZW1D
YWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBGaWxlU3lzdGVtVHlwZSBtX3R5
cGU7Ci19OwotCi1jbGFzcyBSZXNvbHZlVVJJQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1D
YWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvbHZlVVJJ
Q2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0
ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtPik7Ci0KLXByaXZhdGU6Ci0gICAgUmVzb2x2ZVVSSUNhbGxiYWNrcyhQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OwotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAg
IEZpbGVTeXN0ZW1UeXBlIG1fdHlwZTsKLSAgICBTdHJpbmcgbV9maWxlUGF0aDsKLX07Ci0KLWNs
YXNzIE1ldGFkYXRhQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNZXRhZGF0YUNhbGxiYWNrcz4gY3JlYXRl
KFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4p
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJik7
Ci0KLXByaXZhdGU6Ci0gICAgTWV0YWRhdGFDYWxsYmFja3MoUGFzc1JlZlB0cjxNZXRhZGF0YUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgUmVmUHRyPE1ldGFkYXRh
Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotfTsKLQotY2xhc3MgRmlsZVdyaXRlckJhc2VD
YWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxGaWxlV3JpdGVyQmFzZT4sIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
aWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nIGxlbmd0aCk7
Ci0KLXByaXZhdGU6Ci0gICAgRmlsZVdyaXRlckJhc2VDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxl
V3JpdGVyQmFzZT4sIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIFJlZlB0cjxGaWxlV3JpdGVyQmFzZT4gbV9maWxlV3Jp
dGVyOwotICAgIFJlZlB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFj
azsKLX07Ci0KLWNsYXNzIFZvaWRDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNr
c0Jhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFZvaWRDYWxsYmFja3M+IGNy
ZWF0ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4p
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCk7Ci0KLXByaXZhdGU6Ci0gICAgVm9pZENh
bGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4pOwotICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlm
IC8vIEZpbGVTeXN0ZW1DYWxsYmFja3NfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVTeXN0ZW1GbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtRmxhZ3MuaAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1GbGFncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVTeXN0ZW1GbGFnc19oCi0j
ZGVmaW5lIEZpbGVTeXN0ZW1GbGFnc19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNp
bmNsdWRlICJEaWN0aW9uYXJ5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IEZp
bGVTeXN0ZW1GbGFncyAgewotICAgIGV4cGxpY2l0IEZpbGVTeXN0ZW1GbGFncyhjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zKQotICAgICAgICA6IGNyZWF0ZShmYWxzZSkKLSAgICAgICAgLCBleGNs
dXNpdmUoZmFsc2UpCi0gICAgewotICAgICAgICBvcHRpb25zLmdldCgiY3JlYXRlIiwgY3JlYXRl
KTsKLSAgICAgICAgb3B0aW9ucy5nZXQoImV4Y2x1c2l2ZSIsIGV4Y2x1c2l2ZSk7Ci0gICAgfQot
Ci0gICAgYm9vbCBjcmVhdGU7Ci0gICAgYm9vbCBleGNsdXNpdmU7Ci19OwotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlU3lzdGVtRmxhZ3NfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1UeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0
ZW1UeXBlLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlU3lzdGVtVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEZpbGVTeXN0ZW1UeXBlX2gKLSNkZWZpbmUgRmlsZVN5c3RlbVR5cGVfaAotCi0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZvciBmaWxl
IHN5c3RlbSB0eXBlcyB1c2VkIGluIEZpbGVTeXN0ZW0gQVBJLgotZW51bSBGaWxlU3lzdGVtVHlw
ZSB7Ci0gICAgRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnksCi0gICAgRmlsZVN5c3RlbVR5cGVQZXJz
aXN0ZW50LAotCi0gICAgLy8gVHJhbnNpZW50IGlzb2xhdGVkIG5vbi1zYW5kYm94ZWQgZmlsZXN5
c3RlbS4KLSAgICBGaWxlU3lzdGVtVHlwZUlzb2xhdGVkLAotfTsKLQotZW51bSBGaWxlU3lzdGVt
U3luY2hyb25vdXNUeXBlIHsKLSAgICBBc3luY2hyb25vdXNGaWxlU3lzdGVtLAotICAgIFN5bmNo
cm9ub3VzRmlsZVN5c3RlbSwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVTeXN0ZW1UeXBlX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5j
cHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlV3JpdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzMjYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxl
V3JpdGVyLmgiCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKLSNpbmNsdWRlICJCbG9i
LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgot
I2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCi0j
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwotc3RhdGljIGNvbnN0IGRvdWJs
ZSBwcm9ncmVzc05vdGlmaWNhdGlvbkludGVydmFsTVMgPSA1MDsKLQotUGFzc1JlZlB0cjxGaWxl
V3JpdGVyPiBGaWxlV3JpdGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKLXsKLSAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRlcihhZG9wdFJlZihuZXcgRmls
ZVdyaXRlcihjb250ZXh0KSkpOwotICAgIGZpbGVXcml0ZXItPnN1c3BlbmRJZk5lZWRlZCgpOwot
ICAgIHJldHVybiBmaWxlV3JpdGVyLnJlbGVhc2UoKTsKLX0KLQotRmlsZVdyaXRlcjo6RmlsZVdy
aXRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KGNvbnRleHQpCi0gICAgLCBtX3JlYWR5U3RhdGUoSU5JVCkKLSAgICAsIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyhPcGVyYXRpb25Ob25lKQotICAgICwgbV9xdWV1ZWRPcGVyYXRpb24oT3BlcmF0
aW9uTm9uZSkKLSAgICAsIG1fYnl0ZXNXcml0dGVuKDApCi0gICAgLCBtX2J5dGVzVG9Xcml0ZSgw
KQotICAgICwgbV90cnVuY2F0ZUxlbmd0aCgtMSkKLSAgICAsIG1fbnVtQWJvcnRzKDApCi0gICAg
LCBtX3JlY3Vyc2lvbkRlcHRoKDApCi0gICAgLCBtX2xhc3RQcm9ncmVzc05vdGlmaWNhdGlvblRp
bWVNUygwKQotewotfQotCi1GaWxlV3JpdGVyOjp+RmlsZVdyaXRlcigpCi17Ci0gICAgQVNTRVJU
KCFtX3JlY3Vyc2lvbkRlcHRoKTsKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IFdSSVRJTkcpCi0g
ICAgICAgIHN0b3AoKTsKLX0KLQotYm9vbCBGaWxlV3JpdGVyOjpjYW5TdXNwZW5kKCkgY29uc3QK
LXsKLSAgICAvLyBGSVhNRTogSXQgaXMgbm90IGN1cnJlbnRseSBwb3NzaWJsZSB0byBzdXNwZW5k
IGEgRmlsZVdyaXRlciwgc28gcGFnZXMgd2l0aCBGaWxlV3JpdGVyIGNhbiBub3QgZ28gaW50byBw
YWdlIGNhY2hlLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpzdG9w
KCkKLXsKLSAgICAvLyBNYWtlIHN1cmUgd2UndmUgYWN0dWFsbHkgZ290IHNvbWV0aGluZyB0byBz
dG9wLCBhbmQgaGF2ZW4ndCBhbHJlYWR5IGNhbGxlZCBhYm9ydCgpLgotICAgIGlmICghd3JpdGVy
KCkgfHwgbV9yZWFkeVN0YXRlICE9IFdSSVRJTkcpCi0gICAgICAgIHJldHVybjsKLSAgICBkb09w
ZXJhdGlvbihPcGVyYXRpb25BYm9ydCk7Ci0gICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKLX0KLQot
dm9pZCBGaWxlV3JpdGVyOjp3cml0ZShCbG9iKiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKLXsK
LSAgICBBU1NFUlQod3JpdGVyKCkpOwotICAgIEFTU0VSVChkYXRhKTsKLSAgICBBU1NFUlQobV90
cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKSB7
Ci0gICAgICAgIHNldEVycm9yKEZpbGVFcnJvcjo6SU5WQUxJRF9TVEFURV9FUlIsIGVjKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWRhdGEpIHsKLSAgICAgICAgc2V0RXJyb3Io
RmlsZUVycm9yOjpUWVBFX01JU01BVENIX0VSUiwgZWMpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmIChtX3JlY3Vyc2lvbkRlcHRoID4ga01heFJlY3Vyc2lvbkRlcHRoKSB7Ci0gICAg
ICAgIHNldEVycm9yKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSLCBlYyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBtX2Jsb2JCZWluZ1dyaXR0ZW4gPSBkYXRhOwotICAgIG1fcmVhZHlT
dGF0ZSA9IFdSSVRJTkc7Ci0gICAgbV9ieXRlc1dyaXR0ZW4gPSAwOwotICAgIG1fYnl0ZXNUb1dy
aXRlID0gZGF0YS0+c2l6ZSgpOwotICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlvbiA9PSBPcGVy
YXRpb25Ob25lKTsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9IE9wZXJhdGlvbk5v
bmUpIHsKLSAgICAgICAgLy8gV2UgbXVzdCBiZSB3YWl0aW5nIGZvciBhbiBhYm9ydCB0byBjb21w
bGV0ZSwgc2luY2UgbV9yZWFkeVN0YXRlIHdhc24ndCBXUklUSU5HLgotICAgICAgICBBU1NFUlQo
bV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvbkFib3J0KTsKLSAgICAgICAgbV9xdWV1
ZWRPcGVyYXRpb24gPSBPcGVyYXRpb25Xcml0ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgZG9PcGVy
YXRpb24oT3BlcmF0aW9uV3JpdGUpOwotCi0gICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS53cml0
ZXN0YXJ0RXZlbnQpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OnNlZWsobG9uZyBsb25nIHBvc2l0
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBBU1NFUlQod3JpdGVyKCkpOwotICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gV1JJVElORykgewotICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6
OklOVkFMSURfU1RBVEVfRVJSLCBlYyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0gICAgQVNTRVJUKG1fcXVldWVkT3BlcmF0
aW9uID09IE9wZXJhdGlvbk5vbmUpOwotICAgIHNlZWtJbnRlcm5hbChwb3NpdGlvbik7Ci19Ci0K
LXZvaWQgRmlsZVdyaXRlcjo6dHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBBU1NFUlQod3JpdGVyKCkpOwotICAgIEFTU0VSVChtX3RydW5jYXRl
TGVuZ3RoID09IC0xKTsKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IFdSSVRJTkcgfHwgcG9zaXRp
b24gPCAwKSB7Ci0gICAgICAgIHNldEVycm9yKEZpbGVFcnJvcjo6SU5WQUxJRF9TVEFURV9FUlIs
IGVjKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAobV9yZWN1cnNpb25EZXB0aCA+
IGtNYXhSZWN1cnNpb25EZXB0aCkgewotICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OlNFQ1VS
SVRZX0VSUiwgZWMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9yZWFkeVN0YXRl
ID0gV1JJVElORzsKLSAgICBtX2J5dGVzV3JpdHRlbiA9IDA7Ci0gICAgbV9ieXRlc1RvV3JpdGUg
PSAwOwotICAgIG1fdHJ1bmNhdGVMZW5ndGggPSBwb3NpdGlvbjsKLSAgICBBU1NFUlQobV9xdWV1
ZWRPcGVyYXRpb24gPT0gT3BlcmF0aW9uTm9uZSk7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyAhPSBPcGVyYXRpb25Ob25lKSB7Ci0gICAgICAgIC8vIFdlIG11c3QgYmUgd2FpdGluZyBm
b3IgYW4gYWJvcnQgdG8gY29tcGxldGUsIHNpbmNlIG1fcmVhZHlTdGF0ZSB3YXNuJ3QgV1JJVElO
Ry4KLSAgICAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25BYm9y
dCk7Ci0gICAgICAgIG1fcXVldWVkT3BlcmF0aW9uID0gT3BlcmF0aW9uVHJ1bmNhdGU7Ci0gICAg
fSBlbHNlCi0gICAgICAgIGRvT3BlcmF0aW9uKE9wZXJhdGlvblRydW5jYXRlKTsKLSAgICBmaXJl
RXZlbnQoZXZlbnROYW1lcygpLndyaXRlc3RhcnRFdmVudCk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRl
cjo6YWJvcnQoRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBp
ZiAobV9yZWFkeVN0YXRlICE9IFdSSVRJTkcpCi0gICAgICAgIHJldHVybjsKLSAgICArK21fbnVt
QWJvcnRzOwotCi0gICAgZG9PcGVyYXRpb24oT3BlcmF0aW9uQWJvcnQpOwotICAgIHNpZ25hbENv
bXBsZXRpb24oRmlsZUVycm9yOjpBQk9SVF9FUlIpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OmRp
ZFdyaXRlKGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSkKLXsKLSAgICBpZiAobV9vcGVy
YXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvbkFib3J0KSB7Ci0gICAgICAgIGNvbXBsZXRlQWJv
cnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09
IFdSSVRJTkcpOwotICAgIEFTU0VSVChtX3RydW5jYXRlTGVuZ3RoID09IC0xKTsKLSAgICBBU1NF
UlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvbldyaXRlKTsKLSAgICBBU1NFUlQo
IW1fYnl0ZXNUb1dyaXRlIHx8IGJ5dGVzICsgbV9ieXRlc1dyaXR0ZW4gPiAwKTsKLSAgICBBU1NF
UlQoYnl0ZXMgKyBtX2J5dGVzV3JpdHRlbiA8PSBtX2J5dGVzVG9Xcml0ZSk7Ci0gICAgbV9ieXRl
c1dyaXR0ZW4gKz0gYnl0ZXM7Ci0gICAgQVNTRVJUKChtX2J5dGVzV3JpdHRlbiA9PSBtX2J5dGVz
VG9Xcml0ZSkgfHwgIWNvbXBsZXRlKTsKLSAgICBzZXRQb3NpdGlvbihwb3NpdGlvbigpICsgYnl0
ZXMpOwotICAgIGlmIChwb3NpdGlvbigpID4gbGVuZ3RoKCkpCi0gICAgICAgIHNldExlbmd0aChw
b3NpdGlvbigpKTsKLSAgICBpZiAoY29tcGxldGUpIHsKLSAgICAgICAgbV9ibG9iQmVpbmdXcml0
dGVuLmNsZWFyKCk7Ci0gICAgICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE9wZXJhdGlvbk5v
bmU7Ci0gICAgfQotCi0gICAgaW50IG51bUFib3J0cyA9IG1fbnVtQWJvcnRzOwotICAgIC8vIFdl
IGNvdWxkIGdldCBhbiBhYm9ydCBpbiB0aGUgaGFuZGxlciBmb3IgdGhpcyBldmVudC4gSWYgd2Ug
ZG8sIGl0J3MKLSAgICAvLyBhbHJlYWR5IGhhbmRsZWQgdGhlIGNsZWFudXAgYW5kIHNpZ25hbENv
bXBsZXRpb24gY2FsbC4KLSAgICBkb3VibGUgbm93ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lTVMoKTsKLSAgICBpZiAoY29tcGxldGUgfHwgIW1fbGFzdFByb2dyZXNzTm90aWZpY2F0aW9u
VGltZU1TIHx8IChub3cgLSBtX2xhc3RQcm9ncmVzc05vdGlmaWNhdGlvblRpbWVNUyA+IHByb2dy
ZXNzTm90aWZpY2F0aW9uSW50ZXJ2YWxNUykpIHsKLSAgICAgICAgbV9sYXN0UHJvZ3Jlc3NOb3Rp
ZmljYXRpb25UaW1lTVMgPSBub3c7Ci0gICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkucHJv
Z3Jlc3NFdmVudCk7Ci0gICAgfQotCi0gICAgaWYgKGNvbXBsZXRlKSB7Ci0gICAgICBpZiAobnVt
QWJvcnRzID09IG1fbnVtQWJvcnRzKQotICAgICAgICAgIHNpZ25hbENvbXBsZXRpb24oRmlsZUVy
cm9yOjpPSyk7Ci0gICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICB9Ci19Ci0K
LXZvaWQgRmlsZVdyaXRlcjo6ZGlkVHJ1bmNhdGUoKQotewotICAgIGlmIChtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gT3BlcmF0aW9uQWJvcnQpIHsKLSAgICAgICAgY29tcGxldGVBYm9ydCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gT3BlcmF0aW9uVHJ1bmNhdGUpOwotICAgIEFTU0VSVChtX3RydW5jYXRlTGVuZ3RoID49IDAp
OwotICAgIHNldExlbmd0aChtX3RydW5jYXRlTGVuZ3RoKTsKLSAgICBpZiAocG9zaXRpb24oKSA+
IGxlbmd0aCgpKQotICAgICAgICBzZXRQb3NpdGlvbihsZW5ndGgoKSk7Ci0gICAgbV9vcGVyYXRp
b25JblByb2dyZXNzID0gT3BlcmF0aW9uTm9uZTsKLSAgICBzaWduYWxDb21wbGV0aW9uKEZpbGVF
cnJvcjo6T0spOwotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotfQotCi12b2lkIEZp
bGVXcml0ZXI6OmRpZEZhaWwoRmlsZUVycm9yOjpFcnJvckNvZGUgY29kZSkKLXsKLSAgICBBU1NF
UlQobV9vcGVyYXRpb25JblByb2dyZXNzICE9IE9wZXJhdGlvbk5vbmUpOwotICAgIEFTU0VSVChj
b2RlICE9IEZpbGVFcnJvcjo6T0spOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0g
T3BlcmF0aW9uQWJvcnQpIHsKLSAgICAgICAgY29tcGxldGVBYm9ydCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIEFTU0VSVChjb2RlICE9IEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKLSAg
ICBBU1NFUlQobV9xdWV1ZWRPcGVyYXRpb24gPT0gT3BlcmF0aW9uTm9uZSk7Ci0gICAgQVNTRVJU
KG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKTsKLSAgICBtX2Jsb2JCZWluZ1dyaXR0ZW4uY2xlYXIo
KTsKLSAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBPcGVyYXRpb25Ob25lOwotICAgIHNpZ25h
bENvbXBsZXRpb24oY29kZSk7Ci0gICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci19Ci0K
LXZvaWQgRmlsZVdyaXRlcjo6Y29tcGxldGVBYm9ydCgpCi17Ci0gICAgQVNTRVJUKG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25BYm9ydCk7Ci0gICAgbV9vcGVyYXRpb25JblByb2dy
ZXNzID0gT3BlcmF0aW9uTm9uZTsKLSAgICBPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9xdWV1ZWRP
cGVyYXRpb247Ci0gICAgbV9xdWV1ZWRPcGVyYXRpb24gPSBPcGVyYXRpb25Ob25lOwotICAgIGRv
T3BlcmF0aW9uKG9wZXJhdGlvbik7Ci0gICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci19
Ci0KLXZvaWQgRmlsZVdyaXRlcjo6ZG9PcGVyYXRpb24oT3BlcmF0aW9uIG9wZXJhdGlvbikKLXsK
LSAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewotICAgIGNhc2UgT3BlcmF0aW9uV3JpdGU6Ci0gICAg
ICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uTm9uZSk7Ci0gICAg
ICAgIEFTU0VSVChtX3RydW5jYXRlTGVuZ3RoID09IC0xKTsKLSAgICAgICAgQVNTRVJUKG1fYmxv
YkJlaW5nV3JpdHRlbi5nZXQoKSk7Ci0gICAgICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPT0gV1JJ
VElORyk7Ci0gICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgd3JpdGVy
KCktPndyaXRlKHBvc2l0aW9uKCksIG1fYmxvYkJlaW5nV3JpdHRlbi5nZXQoKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgT3BlcmF0aW9uVHJ1bmNhdGU6Ci0gICAgICAgIEFTU0VSVChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uTm9uZSk7Ci0gICAgICAgIEFTU0VSVChtX3Ry
dW5jYXRlTGVuZ3RoID49IDApOwotICAgICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFdSSVRJ
TkcpOwotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIHdyaXRlcigp
LT50cnVuY2F0ZShtX3RydW5jYXRlTGVuZ3RoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBP
cGVyYXRpb25Ob25lOgotICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9w
ZXJhdGlvbk5vbmUpOwotICAgICAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0g
ICAgICAgIEFTU0VSVCghbV9ibG9iQmVpbmdXcml0dGVuLmdldCgpKTsKLSAgICAgICAgQVNTRVJU
KG1fcmVhZHlTdGF0ZSA9PSBET05FKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcGVyYXRp
b25BYm9ydDoKLSAgICAgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25X
cml0ZSB8fCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uVHJ1bmNhdGUpCi0gICAg
ICAgICAgICB3cml0ZXIoKS0+YWJvcnQoKTsKLSAgICAgICAgZWxzZSBpZiAobV9vcGVyYXRpb25J
blByb2dyZXNzICE9IE9wZXJhdGlvbkFib3J0KQotICAgICAgICAgICAgb3BlcmF0aW9uID0gT3Bl
cmF0aW9uTm9uZTsKLSAgICAgICAgbV9xdWV1ZWRPcGVyYXRpb24gPSBPcGVyYXRpb25Ob25lOwot
ICAgICAgICBtX2Jsb2JCZWluZ1dyaXR0ZW4uY2xlYXIoKTsKLSAgICAgICAgbV90cnVuY2F0ZUxl
bmd0aCA9IC0xOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgQVNTRVJUKG1fcXVldWVkT3Bl
cmF0aW9uID09IE9wZXJhdGlvbk5vbmUpOwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IG9w
ZXJhdGlvbjsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJv
cjo6RXJyb3JDb2RlIGNvZGUpCi17Ci0gICAgbV9yZWFkeVN0YXRlID0gRE9ORTsKLSAgICBtX3Ry
dW5jYXRlTGVuZ3RoID0gLTE7Ci0gICAgaWYgKEZpbGVFcnJvcjo6T0sgIT0gY29kZSkgewotICAg
ICAgICBtX2Vycm9yID0gRmlsZUVycm9yOjpjcmVhdGUoY29kZSk7Ci0gICAgICAgIGlmIChGaWxl
RXJyb3I6OkFCT1JUX0VSUiA9PSBjb2RlKQotICAgICAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFt
ZXMoKS5hYm9ydEV2ZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmlyZUV2ZW50KGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZmlyZUV2ZW50KGV2
ZW50TmFtZXMoKS53cml0ZUV2ZW50KTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLndyaXRl
ZW5kRXZlbnQpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6OmZpcmVFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUpCi17Ci0gICAgKyttX3JlY3Vyc2lvbkRlcHRoOwotICAgIGRpc3BhdGNoRXZl
bnQoUHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKHR5cGUsIHRydWUsIG1fYnl0ZXNXcml0dGVuLCBtX2J5
dGVzVG9Xcml0ZSkpOwotICAgIC0tbV9yZWN1cnNpb25EZXB0aDsKLSAgICBBU1NFUlQobV9yZWN1
cnNpb25EZXB0aCA+PSAwKTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpzZXRFcnJvcihGaWxlRXJy
b3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0g
RmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25Db2RlKGVycm9yQ29kZSk7Ci0gICAg
bV9lcnJvciA9IEZpbGVFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaAkocmV2aXNpb24g
MTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVXcml0ZXJfaAot
I2RlZmluZSBGaWxlV3JpdGVyX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudC5o
IgotI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckJhc2UuaCIK
LSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgQmxvYjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLS8vIEZJWE1F
OiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xMjE3NDc+IGlzIGZpeGVkLgotY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3Jp
dGVyQmFzZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEsIHB1YmxpYyBBc3luY0ZpbGVXcml0ZXJDbGllbnQgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7Ci0KLSAgICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICBJTklUID0gMCwKLSAgICAgICAg
V1JJVElORyA9IDEsCi0gICAgICAgIERPTkUgPSAyCi0gICAgfTsKLQotICAgIHZvaWQgd3JpdGUo
QmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlZWsobG9uZyBsb25nIHBvc2l0aW9u
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBhYm9ydChFeGNlcHRpb25Db2RlJik7Ci0gICAgUmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9Ci0gICAg
RmlsZUVycm9yKiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KLQotICAg
IC8vIEFzeW5jRmlsZVdyaXRlckNsaWVudAotICAgIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5
dGVzLCBib29sIGNvbXBsZXRlKTsKLSAgICB2b2lkIGRpZFRydW5jYXRlKCk7Ci0gICAgdm9pZCBk
aWRGYWlsKEZpbGVFcnJvcjo6RXJyb3JDb2RlKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAg
dmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEZpbGVXcml0ZXJFdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxGaWxl
V3JpdGVyQmFzZT46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNlPjo6
ZGVyZWY7Ci0KLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdyaXRlc3RhcnQp
OwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocHJvZ3Jlc3MpOwotICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod3JpdGUpOwotICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoZXJyb3IpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod3JpdGVl
bmQpOwotCi1wcml2YXRlOgotICAgIGVudW0gT3BlcmF0aW9uIHsKLSAgICAgICAgT3BlcmF0aW9u
Tm9uZSwKLSAgICAgICAgT3BlcmF0aW9uV3JpdGUsCi0gICAgICAgIE9wZXJhdGlvblRydW5jYXRl
LAotICAgICAgICBPcGVyYXRpb25BYm9ydAotICAgIH07Ci0KLSAgICBGaWxlV3JpdGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKLQotICAgIHZpcnR1YWwgfkZpbGVXcml0ZXIoKTsKLQotICAg
IC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQotICAgIC8vIEV2
ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklO
QUwgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgRklOQUwgeyBkZXJlZigpOyB9Ci0KLSAgICB2b2lkIGNvbXBsZXRlQWJvcnQoKTsKLQotICAg
IHZvaWQgZG9PcGVyYXRpb24oT3BlcmF0aW9uKTsKLQotICAgIHZvaWQgc2lnbmFsQ29tcGxldGlv
bihGaWxlRXJyb3I6OkVycm9yQ29kZSk7Ci0KLSAgICB2b2lkIGZpcmVFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUpOwotCi0gICAgdm9pZCBzZXRFcnJvcihGaWxlRXJyb3I6OkVycm9yQ29k
ZSwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgUmVmUHRyPEZpbGVFcnJvcj4gbV9lcnJvcjsKLSAg
ICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKLSAgICBPcGVyYXRpb24gbV9vcGVyYXRpb25JblBy
b2dyZXNzOwotICAgIE9wZXJhdGlvbiBtX3F1ZXVlZE9wZXJhdGlvbjsKLSAgICBsb25nIGxvbmcg
bV9ieXRlc1dyaXR0ZW47Ci0gICAgbG9uZyBsb25nIG1fYnl0ZXNUb1dyaXRlOwotICAgIGxvbmcg
bG9uZyBtX3RydW5jYXRlTGVuZ3RoOwotICAgIGxvbmcgbG9uZyBtX251bUFib3J0czsKLSAgICBs
b25nIGxvbmcgbV9yZWN1cnNpb25EZXB0aDsKLSAgICBkb3VibGUgbV9sYXN0UHJvZ3Jlc3NOb3Rp
ZmljYXRpb25UaW1lTVM7Ci0gICAgUmVmUHRyPEJsb2I+IG1fYmxvYkJlaW5nV3JpdHRlbjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RF
TSkKLQotI2VuZGlmIC8vIEZpbGVXcml0ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25k
aXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBBY3RpdmVET01PYmplY3QsCi0gICAgRXZlbnRUYXJn
ZXQsCi0gICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgRmlsZVdyaXRlciB7Ci0gICAg
Ly8gcmVhZHkgc3RhdGVzCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSU5JVCA9IDA7Ci0gICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgV1JJVElORyA9IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgRE9ORSA9IDI7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5
U3RhdGU7Ci0KLSAgICAvLyBhc3luYyB3cml0ZS9tb2RpZnkgbWV0aG9kcwotICAgIFtSYWlzZXNF
eGNlcHRpb25dIHZvaWQgd3JpdGUoQmxvYiBkYXRhKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIHNlZWsobG9uZyBsb25nIHBvc2l0aW9uKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IHRydW5jYXRlKGxvbmcgbG9uZyBzaXplKTsKLQotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQg
YWJvcnQoKTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGaWxlRXJyb3IgZXJyb3I7Ci0gICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBwb3NpdGlvbjsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBsb25nIGxlbmd0aDsKLQotICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9ud3JpdGVzdGFydDsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnByb2dyZXNzOwotICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud3Jp
dGU7Ci0gICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKLSAgICAg
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgICAgICAgICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud3JpdGVlbmQ7Ci0KLSAgICAvLyBFdmVudFRhcmdldCBp
bnRlcmZhY2UKLSAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgdm9pZCBy
ZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtSYWlzZXNFeGNlcHRpb25d
IGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldnQpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmNwcAkocmV2
aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVX
cml0ZXJCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkZpbGVXcml0
ZXJCYXNlLmgiCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKLSNpbmNsdWRlICJCbG9i
LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgot
I2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRmlsZVdyaXRlckJhc2U6On5GaWxlV3JpdGVyQmFzZSgp
Ci17Ci19Ci0KLXZvaWQgRmlsZVdyaXRlckJhc2U6OmluaXRpYWxpemUoUGFzc093blB0cjxBc3lu
Y0ZpbGVXcml0ZXI+IHdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCkKLXsKLSAgICBBU1NFUlQoIW1f
d3JpdGVyKTsKLSAgICBBU1NFUlQobGVuZ3RoID49IDApOwotICAgIG1fd3JpdGVyID0gd3JpdGVy
OwotICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwotfQotCi1GaWxlV3JpdGVyQmFzZTo6RmlsZVdyaXRl
ckJhc2UoKQotICAgIDogbV9wb3NpdGlvbigwKQotewotfQotCi12b2lkIEZpbGVXcml0ZXJCYXNl
OjpzZWVrSW50ZXJuYWwobG9uZyBsb25nIHBvc2l0aW9uKQotewotICAgIGlmIChwb3NpdGlvbiA+
IG1fbGVuZ3RoKQotICAgICAgICBwb3NpdGlvbiA9IG1fbGVuZ3RoOwotICAgIGVsc2UgaWYgKHBv
c2l0aW9uIDwgMCkKLSAgICAgICAgcG9zaXRpb24gPSBtX2xlbmd0aCArIHBvc2l0aW9uOwotICAg
IGlmIChwb3NpdGlvbiA8IDApCi0gICAgICAgIHBvc2l0aW9uID0gMDsKLSAgICBtX3Bvc2l0aW9u
ID0gcG9zaXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlV3JpdGVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmlsZVdyaXRlckJhc2VfaAotI2RlZmluZSBGaWxl
V3JpdGVyQmFzZV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEFzeW5jRmlsZVdyaXRl
cjsKLQotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotY2xhc3MgRmlsZVdyaXRlckJhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlV3JpdGVyQmFzZT4gewotcHVibGljOgotICAgIHZpcnR1
YWwgfkZpbGVXcml0ZXJCYXNlKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplKFBhc3NPd25QdHI8QXN5
bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nIGxlbmd0aCk7Ci0KLSAgICBsb25nIGxvbmcgcG9zaXRp
b24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICAgfQotICAg
IGxvbmcgbG9uZyBsZW5ndGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3Ro
OwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIEZpbGVXcml0ZXJCYXNlKCk7Ci0KLSAgICBBc3lu
Y0ZpbGVXcml0ZXIqIHdyaXRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gbV93cml0ZXIuZ2V0
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQb3NpdGlvbihsb25nIGxvbmcgcG9zaXRpb24pCi0g
ICAgewotICAgICAgICBtX3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgfQotCi0gICAgdm9pZCBz
ZXRMZW5ndGgobG9uZyBsb25nIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIG1fbGVuZ3RoID0gbGVu
Z3RoOwotICAgIH0KLQotICAgIHZvaWQgc2Vla0ludGVybmFsKGxvbmcgbG9uZyBwb3NpdGlvbik7
Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxGaWxlV3JpdGVy
QmFzZT47Ci0KLSAgICBPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiBtX3dyaXRlcjsKLSAgICBsb25n
IGxvbmcgbV9wb3NpdGlvbjsKLSAgICBsb25nIGxvbmcgbV9sZW5ndGg7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRp
ZiAvLyBGaWxlV3JpdGVyQmFzZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVy
QmFzZUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmls
ZVdyaXRlckJhc2VDYWxsYmFja19oCi0jZGVmaW5lIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWxlV3JpdGVyQmFzZTsKLQotY2xhc3Mg
RmlsZVdyaXRlckJhc2VDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNl
Q2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5GaWxlV3JpdGVyQmFzZUNhbGxiYWNr
KCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVXcml0ZXJCYXNlKikgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2VuZGlmIC8vIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXJDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEZpbGVXcml0ZXJDYWxsYmFja19oCi0jZGVmaW5lIEZpbGVXcml0ZXJDYWxsYmFja19oCi0KLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZpbGVXcml0ZXI7Ci0KLWNsYXNzIEZpbGVXcml0
ZXJDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVXcml0ZXJDYWxsYmFjaz4gewotcHVi
bGljOgotICAgIHZpcnR1YWwgfkZpbGVXcml0ZXJDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVFdmVudChGaWxlV3JpdGVyKikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UK
LQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVXcml0ZXJD
YWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdy
aXRlckNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RF
TSwKLV0gY2FsbGJhY2sgaW50ZXJmYWNlIEZpbGVXcml0ZXJDYWxsYmFjayB7Ci0gICAgYm9vbGVh
biBoYW5kbGVFdmVudChGaWxlV3JpdGVyIGZpbGVXcml0ZXIpOwotfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmNwcAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXJTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNDggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxl
V3JpdGVyU3luYy5oIgotCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAi
QmxvYi5oIgotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi12b2lkIEZpbGVXcml0ZXJTeW5jOjp3cml0ZShCbG9iKiBkYXRhLCBFeGNlcHRpb25Db2Rl
JiBlYykKLXsKLSAgICBBU1NFUlQod3JpdGVyKCkpOwotICAgIEFTU0VSVChtX2NvbXBsZXRlKTsK
LSAgICBlYyA9IDA7Ci0gICAgaWYgKCFkYXRhKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlv
bjo6VFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwcmVw
YXJlRm9yV3JpdGUoKTsKLSAgICB3cml0ZXIoKS0+d3JpdGUocG9zaXRpb24oKSwgZGF0YSk7Ci0g
ICAgd3JpdGVyKCktPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCk7Ci0gICAgQVNTRVJUKG1f
Y29tcGxldGUpOwotICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25D
b2RlKG1fZXJyb3IpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOwotICAgIHNldFBvc2l0
aW9uKHBvc2l0aW9uKCkgKyBkYXRhLT5zaXplKCkpOwotICAgIGlmIChwb3NpdGlvbigpID4gbGVu
Z3RoKCkpCi0gICAgICAgIHNldExlbmd0aChwb3NpdGlvbigpKTsKLX0KLQotdm9pZCBGaWxlV3Jp
dGVyU3luYzo6c2Vlayhsb25nIGxvbmcgcG9zaXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIEFTU0VSVCh3cml0ZXIoKSk7Ci0gICAgQVNTRVJUKG1fY29tcGxldGUpOwotICAgIGVjID0g
MDsKLSAgICBzZWVrSW50ZXJuYWwocG9zaXRpb24pOwotfQotCi12b2lkIEZpbGVXcml0ZXJTeW5j
Ojp0cnVuY2F0ZShsb25nIGxvbmcgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBB
U1NFUlQod3JpdGVyKCkpOwotICAgIEFTU0VSVChtX2NvbXBsZXRlKTsKLSAgICBlYyA9IDA7Ci0g
ICAgaWYgKG9mZnNldCA8IDApIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElE
X1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBwcmVwYXJlRm9yV3JpdGUo
KTsKLSAgICB3cml0ZXIoKS0+dHJ1bmNhdGUob2Zmc2V0KTsKLSAgICB3cml0ZXIoKS0+d2FpdEZv
ck9wZXJhdGlvblRvQ29tcGxldGUoKTsKLSAgICBBU1NFUlQobV9jb21wbGV0ZSk7Ci0gICAgZWMg
PSBGaWxlRXhjZXB0aW9uOjpFcnJvckNvZGVUb0V4Y2VwdGlvbkNvZGUobV9lcnJvcik7Ci0gICAg
aWYgKGVjKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG9mZnNldCA8IHBvc2l0aW9uKCkpCi0g
ICAgICAgIHNldFBvc2l0aW9uKG9mZnNldCk7Ci0gICAgc2V0TGVuZ3RoKG9mZnNldCk7Ci19Ci0K
LXZvaWQgRmlsZVdyaXRlclN5bmM6OmRpZFdyaXRlKGxvbmcgbG9uZywgYm9vbCBjb21wbGV0ZSkK
LXsKLSAgICBBU1NFUlQobV9lcnJvciA9PSBGaWxlRXJyb3I6Ok9LKTsKLSAgICBBU1NFUlQoIW1f
Y29tcGxldGUpOwotI2lmbmRlZiBOREVCVUcKLSAgICBtX2NvbXBsZXRlID0gY29tcGxldGU7Ci0j
ZWxzZQotICAgIEFTU0VSVF9VTlVTRUQoY29tcGxldGUsIGNvbXBsZXRlKTsKLSNlbmRpZgotfQot
Ci12b2lkIEZpbGVXcml0ZXJTeW5jOjpkaWRUcnVuY2F0ZSgpCi17Ci0gICAgQVNTRVJUKG1fZXJy
b3IgPT0gRmlsZUVycm9yOjpPSyk7Ci0gICAgQVNTRVJUKCFtX2NvbXBsZXRlKTsKLSNpZm5kZWYg
TkRFQlVHCi0gICAgbV9jb21wbGV0ZSA9IHRydWU7Ci0jZW5kaWYKLX0KLQotdm9pZCBGaWxlV3Jp
dGVyU3luYzo6ZGlkRmFpbChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvcikKLXsKLSAgICBBU1NF
UlQobV9lcnJvciA9PSBGaWxlRXJyb3I6Ok9LKTsKLSAgICBtX2Vycm9yID0gZXJyb3I7Ci0gICAg
QVNTRVJUKCFtX2NvbXBsZXRlKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9jb21wbGV0ZSA9IHRy
dWU7Ci0jZW5kaWYKLX0KLQotRmlsZVdyaXRlclN5bmM6OkZpbGVXcml0ZXJTeW5jKCkKLSAgICA6
IG1fZXJyb3IoRmlsZUVycm9yOjpPSykKLSNpZm5kZWYgTkRFQlVHCi0gICAgLCBtX2NvbXBsZXRl
KHRydWUpCi0jZW5kaWYKLXsKLX0KLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6cHJlcGFyZUZvcldy
aXRlKCkKLXsKLSAgICBBU1NFUlQobV9jb21wbGV0ZSk7Ci0gICAgbV9lcnJvciA9IEZpbGVFcnJv
cjo6T0s7Ci0jaWZuZGVmIE5ERUJVRwotICAgIG1fY29tcGxldGUgPSBmYWxzZTsKLSNlbmRpZgot
fQotCi1GaWxlV3JpdGVyU3luYzo6fkZpbGVXcml0ZXJTeW5jKCkKLXsKLX0KLQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMu
aAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVXcml0ZXJTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEZpbGVXcml0ZXJTeW5jX2gKLSNkZWZpbmUgRmlsZVdyaXRlclN5bmNfaAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgiCi0jaW5j
bHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckJhc2UuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEJsb2I7
Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLWNsYXNzIEZpbGVXcml0ZXJTeW5jIDog
cHVibGljIEZpbGVXcml0ZXJCYXNlLCBwdWJsaWMgQXN5bmNGaWxlV3JpdGVyQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyU3luYz4gY3JlYXRlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZVdyaXRlclN5bmMoKSk7Ci0gICAg
fQotICAgIHZpcnR1YWwgfkZpbGVXcml0ZXJTeW5jKCk7Ci0KLSAgICAvLyBGaWxlV3JpdGVyQmFz
ZQotICAgIHZvaWQgd3JpdGUoQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNlZWso
bG9uZyBsb25nIHBvc2l0aW9uLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCB0cnVuY2F0ZShs
b25nIGxvbmcgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICAvLyBBc3luY0ZpbGVXcml0
ZXJDbGllbnQsIHZpYSBGaWxlV3JpdGVyQmFzZQotICAgIHZvaWQgZGlkV3JpdGUobG9uZyBsb25n
IGJ5dGVzLCBib29sIGNvbXBsZXRlKTsKLSAgICB2b2lkIGRpZFRydW5jYXRlKCk7Ci0gICAgdm9p
ZCBkaWRGYWlsKEZpbGVFcnJvcjo6RXJyb3JDb2RlKTsKLQotcHJpdmF0ZToKLSAgICBGaWxlV3Jp
dGVyU3luYygpOwotICAgIHZvaWQgcHJlcGFyZUZvcldyaXRlKCk7Ci0KLSAgICBGaWxlRXJyb3I6
OkVycm9yQ29kZSBtX2Vycm9yOwotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIG1fY29tcGxldGU7
Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEZpbGVXcml0ZXJfaApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuaWRsCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZVdyaXRlclN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEpTTm9T
dGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIEZpbGVXcml0ZXJTeW5jIHsKLSAgICAvLyBzeW5jaHJv
bm91cyB3cml0ZS9tb2RpZnkgbWV0aG9kcwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgd3Jp
dGUoQmxvYiBkYXRhKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNlZWsobG9uZyBsb25n
IHBvc2l0aW9uKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHRydW5jYXRlKGxvbmcgbG9u
ZyBzaXplKTsKLQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgcG9zaXRpb247Ci0g
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBsZW5ndGg7Ci19OwpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vSFRNTElu
cHV0RWxlbWVudEZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0uaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLQotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5o
IgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgot
I2luY2x1ZGUgIkZpbGVFbnRyeS5oIgotI2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAi
RmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkhUTUxJ
bnB1dEVsZW1lbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBzdGF0aWMKLVBhc3NS
ZWZQdHI8RW50cnlBcnJheT4gSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW06OndlYmtpdEVudHJp
ZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSFRNTElu
cHV0RWxlbWVudCogaW5wdXQpCi17Ci0gICAgUmVmUHRyPEVudHJ5QXJyYXk+IGFycmF5ID0gRW50
cnlBcnJheTo6Y3JlYXRlKCk7Ci0gICAgRmlsZUxpc3QqIGZpbGVzID0gaW5wdXQtPmZpbGVzKCk7
Ci0KLSAgICBpZiAoIWZpbGVzKQotICAgICAgICByZXR1cm4gYXJyYXk7Ci0KLSAgICBSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xhdGVk
RmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnB1dC0+ZHJvcHBlZEZpbGVTeXN0
ZW1JZCgpKTsKLSAgICBpZiAoIWZpbGVzeXN0ZW0pIHsKLSAgICAgICAgLy8gRHJhZy1kcm9wIGlz
b2xhdGVkIGZpbGVzeXN0ZW0gaXMgbm90IGF2YWlsYWJsZS4KLSAgICAgICAgcmV0dXJuIGFycmF5
OwotICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaWxlcy0+bGVuZ3RoKCk7
ICsraSkgewotICAgICAgICBGaWxlKiBmaWxlID0gZmlsZXMtPml0ZW0oaSk7Ci0KLSAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaW52b2x2ZXMgc3luY2hyb25vdXMgZmlsZSBvcGVyYXRpb24uCi0gICAg
ICAgIEZpbGVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICAgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEo
ZmlsZS0+cGF0aCgpLCBtZXRhZGF0YSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAvLyBUaGUgZHJvcHBlZCBlbnRyaWVzIGFyZSBtYXBwZWQgYXMgdG9wLWxldmVsIGVudHJpZXMg
aW4gdGhlIGlzb2xhdGVkIGZpbGVzeXN0ZW0uCi0gICAgICAgIFN0cmluZyB2aXJ0dWFsUGF0aCA9
IERPTUZpbGVQYXRoOjphcHBlbmQoIi8iLCBmaWxlLT5uYW1lKCkpOwotICAgICAgICBpZiAobWV0
YWRhdGEudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkpCi0gICAgICAgICAgICBh
cnJheS0+YXBwZW5kKERpcmVjdG9yeUVudHJ5OjpjcmVhdGUoZmlsZXN5c3RlbSwgdmlydHVhbFBh
dGgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJyYXktPmFwcGVuZChGaWxlRW50cnk6
OmNyZWF0ZShmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwotICAgIH0KLSAgICByZXR1cm4gYXJy
YXk7Ci19Ci0KLUhUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtOjpIVE1MSW5wdXRFbGVtZW50Rmls
ZVN5c3RlbSgpCi17Ci19Ci0KLUhUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtOjp+SFRNTElucHV0
RWxlbWVudEZpbGVTeXN0ZW0oKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vSFRNTElucHV0RWxlbWVudEZpbGVTeXN0
ZW0uaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW1faAotI2RlZmluZSBIVE1M
SW5wdXRFbGVtZW50RmlsZVN5c3RlbV9oCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5QXJyYXk7Ci1jbGFzcyBIVE1MSW5w
dXRFbGVtZW50OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLQotY2xhc3MgSFRNTElu
cHV0RWxlbWVudEZpbGVTeXN0ZW0gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVu
dHJ5QXJyYXk+IHdlYmtpdEVudHJpZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEhUTUxJbnB1
dEVsZW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBIVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbSgp
OwotICAgIH5IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbSgpOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW1faApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxl
U3lzdGVtLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0uaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vSFRNTElucHV0RWxlbWVudEZpbGVTeXN0
ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
RklMRV9TWVNURU0sCi1dIHBhcnRpYWwgaW50ZXJmYWNlIEhUTUxJbnB1dEVsZW1lbnQgewotICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSByZWFkb25seSBhdHRyaWJ1dGUgRW50
cnlBcnJheSB3ZWJraXRFbnRyaWVzOwotfTsKLQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0
ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3Rl
bS5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNr
LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1Mb2NhbEZpbGVTeXN0ZW0qIExvY2FsRmlsZVN5c3RlbTo6c19pbnN0
YW5jZSA9IDA7Ci0KLXZvaWQgTG9jYWxGaWxlU3lzdGVtOjppbml0aWFsaXplTG9jYWxGaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCBpbml0
aWFsaXplIHRoZSBxdW90YSBzZXR0aW5ncyBhcyB3ZWxsLgotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgQVNTRVJUKCFzX2luc3RhbmNlKTsKLSAgICBpZiAoc19pbnN0YW5jZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgT3duUHRyPExvY2FsRmlsZVN5c3RlbT4gbG9jYWxGaWxlU3lz
dGVtID0gYWRvcHRQdHIobmV3IExvY2FsRmlsZVN5c3RlbShiYXNlUGF0aCkpOwotICAgIHNfaW5z
dGFuY2UgPSBsb2NhbEZpbGVTeXN0ZW0ubGVha1B0cigpOwotfQotCi1Mb2NhbEZpbGVTeXN0ZW0m
IExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkKLXsKLSAgICAvLyBpbml0aWFsaXpl
TG9jYWxGaWxlU3lzdGVtIG11c3QgYmUgY2FsbGVkIHByaW9yIGNhbGxpbmcgdGhpcy4KLSAgICBB
U1NFUlQoc19pbnN0YW5jZSk7Ci0gICAgcmV0dXJuICpzX2luc3RhbmNlOwotfQotCi1TdHJpbmcg
TG9jYWxGaWxlU3lzdGVtOjpmaWxlU3lzdGVtQmFzZVBhdGgoKSBjb25zdAotewotICAgIHJldHVy
biBtX2Jhc2VQYXRoOwotfQotCi1zdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBib29sIGNyZWF0ZSwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBBc3luY0ZpbGVTeXN0ZW06
Om9wZW5GaWxlU3lzdGVtKGJhc2VQYXRoLCBpZGVudGlmaWVyLCB0eXBlLCBjcmVhdGUsIGNhbGxi
YWNrcyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcmZvcm1EZWxldGVGaWxlU3lzdGVtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgQXN5bmNGaWxlU3lzdGVtOjpkZWxldGVGaWxl
U3lzdGVtKGJhc2VQYXRoLCBpZGVudGlmaWVyLCB0eXBlLCBjYWxsYmFja3MpOwotfQotCi12b2lk
IExvY2FsRmlsZVN5c3RlbTo6cmVhZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcywgRmlsZVN5c3RlbVN5bmNocm9ub3VzVHlwZSkKLXsKLSAgICAv
LyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtIGNhbGxzIGNhbGxiYWNrcyBzeW5jaHJv
bm91c2x5LCBzbyB0aGUgbWV0aG9kIG5lZWRzIHRvIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseS4K
LSAgICBjb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVt
LCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJh
c2VJZGVudGlmaWVyKCksIHR5cGUsIGZhbHNlLCBjYWxsYmFja3MpKTsKLX0KLQotdm9pZCBMb2Nh
bEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGxvbmcgbG9uZywgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgRmlsZVN5c3RlbVN5bmNocm9ub3VzVHlwZSkK
LXsKLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtIGNhbGxzIGNhbGxiYWNr
cyBzeW5jaHJvbm91c2x5LCBzbyB0aGUgbWV0aG9kIG5lZWRzIHRvIGJlIGNhbGxlZCBhc3luY2hy
b25vdXNseS4KLSAgICBjb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5G
aWxlU3lzdGVtLCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIHRydWUsIGNhbGxiYWNrcykpOwotfQotCi12
b2lkIExvY2FsRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIC8vIEFzeW5jRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZVN5c3RlbSBjYWxscyBjYWxsYmFja3Mgc3luY2hyb25vdXNseSwgc28gdGhlIG1ldGhv
ZCBuZWVkcyB0byBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuCi0gICAgY29udGV4dC0+cG9zdFRh
c2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZwZXJmb3JtRGVsZXRlRmlsZVN5c3RlbSwgZmlsZVN5c3Rl
bUJhc2VQYXRoKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmll
cigpLCB0eXBlLCBjYWxsYmFja3MpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBMb2NhbEZpbGVTeXN0ZW1faAotI2RlZmlu
ZSBMb2NhbEZpbGVTeXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBFcnJvckNhbGxiYWNrOwotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwotY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLQotLy8gS2VlcHMgcGVyLXByb2Nlc3MgaW5mb3JtYXRpb24g
YW5kIHByb3ZpZGVzIGFuIGVudHJ5IHBvaW50IHRvIG9wZW4gYSBmaWxlIHN5c3RlbS4KLWNsYXNz
IExvY2FsRmlsZVN5c3RlbSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxGaWxlU3lz
dGVtKTsKLXB1YmxpYzoKLSAgICAvLyBSZXR1cm5zIGEgcGVyLXByb2Nlc3MgaW5zdGFuY2Ugb2Yg
TG9jYWxGaWxlU3lzdGVtLgotICAgIC8vIE5vdGUgdGhhdCBMb2NhbEZpbGVTeXN0ZW06OmluaXRp
YWxpemVMb2NhbEZpbGVTeXN0ZW0gbXVzdCBiZSBjYWxsZWQgYmVmb3JlCi0gICAgLy8gY2FsbGlu
ZyB0aGlzIG9uZS4KLSAgICBzdGF0aWMgTG9jYWxGaWxlU3lzdGVtJiBsb2NhbEZpbGVTeXN0ZW0o
KTsKLQotICAgIC8vIERvZXMgbm90IGNyZWF0ZSB0aGUgcm9vdCBwYXRoIGZvciBmaWxlIHN5c3Rl
bSwganVzdCByZWFkcyBpdCBpZiBhdmFpbGFibGUuCi0gICAgdm9pZCByZWFkRmlsZVN5c3RlbShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiwgRmlsZVN5c3RlbVN5bmNocm9ub3VzVHlwZSA9IEFzeW5jaHJv
bm91c0ZpbGVTeXN0ZW0pOwotCi0gICAgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4sIEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5cGUgPSBB
c3luY2hyb25vdXNGaWxlU3lzdGVtKTsKLQotICAgIHZvaWQgZGVsZXRlRmlsZVN5c3RlbShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPik7Ci0KLSAgICAvLyBUaGlzIGNhbGwgaXMgbm90IHRocmVhZC1zYWZl
OyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IHdvcmtlciB0aHJlYWRzIGFyZSBjcmVhdGVkLgot
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJik7
Ci0KLSAgICBTdHJpbmcgZmlsZVN5c3RlbUJhc2VQYXRoKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCi0gICAg
ICAgIDogbV9iYXNlUGF0aChiYXNlUGF0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIExv
Y2FsRmlsZVN5c3RlbSogc19pbnN0YW5jZTsKLQotICAgIC8vIEFuIGlubmVyIGNsYXNzIHRoYXQg
ZW5mb3JjZXMgdGhyZWFkLXNhZmUgc3RyaW5nIGFjY2Vzcy4KLSAgICBjbGFzcyBTeXN0ZW1CYXNl
UGF0aCB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTeXN0ZW1CYXNlUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpIDogbV92YWx1ZShwYXRoKSB7IH0KLSAgICAgICAgb3BlcmF0b3IgU3Ry
aW5nKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUuaXNvbGF0
ZWRDb3B5KCk7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICBTdHJpbmcgbV92YWx1
ZTsKLSAgICB9OwotCi0gICAgU3lzdGVtQmFzZVBhdGggbV9iYXNlUGF0aDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBM
b2NhbEZpbGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L01ldGFkYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL01ldGFkYXRhLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIE1ldGFkYXRhX2gKLSNkZWZpbmUgTWV0YWRhdGFfaAotCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZXRhZGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1ldGFkYXRhPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TWV0YWRhdGE+IGNyZWF0ZShjb25zdCBGaWxlTWV0YWRhdGEmIHBsYXRmb3JtTWV0YWRhdGEpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFkYXRhKHBsYXRmb3JtTWV0YWRh
dGEpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhZGF0YT4gY3JlYXRlKE1l
dGFkYXRhKiBtZXRhZGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWV0
YWRhdGEobWV0YWRhdGEtPm1fcGxhdGZvcm1NZXRhZGF0YSkpOwotICAgIH0KLQotICAgIC8vIE5l
ZWRzIHRvIHJldHVybiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgRGF0ZSB3aGlsZSBG
aWxlTWV0YWRhdGEncyBtb2RpZmljYXRpb25UaW1lIGlzIGluIHNlY29uZHMuCi0gICAgZG91Ymxl
IG1vZGlmaWNhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtTWV0YWRhdGEubW9k
aWZpY2F0aW9uVGltZSAqIDEwMDAuMDsgfQotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX3BsYXRmb3Jt
TWV0YWRhdGEubGVuZ3RoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IE1ldGFkYXRhKGNv
bnN0IEZpbGVNZXRhZGF0YSYgcGxhdGZvcm1NZXRhZGF0YSkKLSAgICAgICAgOiBtX3BsYXRmb3Jt
TWV0YWRhdGEocGxhdGZvcm1NZXRhZGF0YSkKLSAgICB7Ci0gICAgfQotCi0gICAgRmlsZU1ldGFk
YXRhIG1fcGxhdGZvcm1NZXRhZGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBNZXRhZGF0YV9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5pZGwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVj
dCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU05vU3RhdGljVGFibGVzLAot
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKLV0gaW50ZXJmYWNlIE1ldGFkYXRhIHsKLSAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRGF0ZSBtb2RpZmljYXRpb25UaW1lOwotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZTsKLX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmgJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRh
ZGF0YUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWV0
YWRhdGFDYWxsYmFja19oCi0jZGVmaW5lIE1ldGFkYXRhQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBNZXRhZGF0YTsKLQotY2xhc3MgTWV0YWRhdGFDYWxsYmFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPE1ldGFkYXRhQ2FsbGJhY2s+IHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5NZXRhZGF0YUNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50
KE1ldGFkYXRhKikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIE1ldGFkYXRhQ2FsbGJhY2tfaApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxi
YWNrLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIGNhbGxiYWNrIGludGVyZmFjZSBN
ZXRhZGF0YUNhbGxiYWNrIHsKLSAgICBib29sZWFuIGhhbmRsZUV2ZW50KE1ldGFkYXRhIG1ldGFk
YXRhKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vU3luY0Nh
bGxiYWNrSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL1N5bmNDYWxsYmFja0hlbHBlci5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vU3luY0NhbGxiYWNrSGVscGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN5bmNDYWxsYmFja0hlbHBlcl9oCi0jZGVm
aW5lIFN5bmNDYWxsYmFja0hlbHBlcl9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNp
bmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgiCi0jaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRW50cnkuaCIKLSNpbmNs
dWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBB
c3luY0ZpbGVTeXN0ZW07Ci1jbGFzcyBEaXJlY3RvcnlFbnRyeVN5bmM7Ci1jbGFzcyBFbnRyeUFy
cmF5U3luYzsKLWNsYXNzIEVudHJ5U3luYzsKLWNsYXNzIEZpbGVFbnRyeVN5bmM7Ci0KLXR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLS8vIEEgaGVscGVyIHRlbXBsYXRlIGZvciBGaWxlU3lz
dGVtU3luYyBpbXBsZW1lbnRhdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBTdWNjZXNzQ2FsbGJh
Y2ssIHR5cGVuYW1lIE9ic2VydmVyVHlwZSwgdHlwZW5hbWUgQ2FsbGJhY2tBcmcsIHR5cGVuYW1l
IFJlc3VsdFR5cGU+Ci1jbGFzcyBTeW5jQ2FsbGJhY2tIZWxwZXIgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFN5bmNDYWxsYmFja0hlbHBlcik7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBTeW5j
Q2FsbGJhY2tIZWxwZXI8U3VjY2Vzc0NhbGxiYWNrLCBPYnNlcnZlclR5cGUsIENhbGxiYWNrQXJn
LCBSZXN1bHRUeXBlPiBIZWxwZXJUeXBlOwotICAgIFN5bmNDYWxsYmFja0hlbHBlcihPYnNlcnZl
clR5cGUqIG9ic2VydmVyID0gMCkKLSAgICAgICAgOiBtX29ic2VydmVyKG9ic2VydmVyKQotICAg
ICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKFN1Y2Nlc3NDYWxsYmFja0ltcGw6OmNyZWF0ZSh0aGlz
KSkKLSAgICAgICAgLCBtX2Vycm9yQ2FsbGJhY2soRXJyb3JDYWxsYmFja0ltcGw6OmNyZWF0ZSh0
aGlzKSkKLSAgICAgICAgLCBtX2V4Y2VwdGlvbkNvZGUoMCkKLSAgICAgICAgLCBtX2NvbXBsZXRl
ZChmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgUGFzc1JlZlB0cjxSZXN1bHRUeXBlPiBnZXRS
ZXN1bHQoRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICBpZiAobV9vYnNlcnZlcikg
ewotICAgICAgICAgICAgd2hpbGUgKCFtX2NvbXBsZXRlZCkgewotICAgICAgICAgICAgICAgIGlm
ICghbV9vYnNlcnZlci0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgewotICAgICAgICAg
ICAgICAgICAgICBtX2V4Y2VwdGlvbkNvZGUgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBlYyA9IG1fZXhjZXB0aW9uQ29kZTsKLSAgICAgICAgcmV0
dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICBQYXNzUmVmUHRyPFN1Y2Nlc3ND
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKCkgeyByZXR1cm4gbV9zdWNjZXNzQ2FsbGJhY2s7IH0K
LSAgICBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soKSB7IHJldHVybiBt
X2Vycm9yQ2FsbGJhY2s7IH0KLQotcHJpdmF0ZToKLSAgICBjbGFzcyBTdWNjZXNzQ2FsbGJhY2tJ
bXBsIDogcHVibGljIFN1Y2Nlc3NDYWxsYmFjayB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdWNjZXNzQ2FsbGJhY2tJbXBsPiBjcmVhdGUoSGVscGVyVHlwZSogaGVs
cGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1Y2Nlc3ND
YWxsYmFja0ltcGwoaGVscGVyKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlRXZlbnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2hlbHBlci0+c2V0RXJyb3Io
MCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVFdmVudChDYWxsYmFja0FyZyogYXJnKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtX2hlbHBlci0+c2V0UmVzdWx0KFJlc3VsdFR5cGU6OmNyZWF0ZShhcmcpKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBl
eHBsaWNpdCBTdWNjZXNzQ2FsbGJhY2tJbXBsKEhlbHBlclR5cGUqIGhlbHBlcikKLSAgICAgICAg
ICAgIDogbV9oZWxwZXIoaGVscGVyKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgSGVs
cGVyVHlwZSogbV9oZWxwZXI7Ci0gICAgfTsKLQotICAgIGNsYXNzIEVycm9yQ2FsbGJhY2tJbXBs
IDogcHVibGljIEVycm9yQ2FsbGJhY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFja0ltcGw+IGNyZWF0ZShIZWxwZXJUeXBlKiBoZWxwZXIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXJyb3JDYWxsYmFja0lt
cGwoaGVscGVyKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZl
bnQoRmlsZUVycm9yKiBlcnJvcikKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGVycm9y
KTsKLSAgICAgICAgICAgIG1faGVscGVyLT5zZXRFcnJvcihlcnJvci0+Y29kZSgpKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBl
eHBsaWNpdCBFcnJvckNhbGxiYWNrSW1wbChIZWxwZXJUeXBlKiBoZWxwZXIpCi0gICAgICAgICAg
ICA6IG1faGVscGVyKGhlbHBlcikKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIEhlbHBl
clR5cGUqIG1faGVscGVyOwotICAgIH07Ci0KLSAgICBmcmllbmQgY2xhc3MgU3VjY2Vzc0NhbGxi
YWNrSW1wbDsKLSAgICBmcmllbmQgY2xhc3MgRXJyb3JDYWxsYmFja0ltcGw7Ci0KLSAgICB2b2lk
IHNldEVycm9yKGludCBjb2RlKQotICAgIHsKLSAgICAgICAgbV9leGNlcHRpb25Db2RlID0gRmls
ZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25Db2RlKGNvZGUpOwotICAgICAgICBtX2Nv
bXBsZXRlZCA9IHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRSZXN1bHQoUGFzc1JlZlB0cjxS
ZXN1bHRUeXBlPiByZXN1bHQpCi0gICAgewotICAgICAgICBtX3Jlc3VsdCA9IHJlc3VsdDsKLSAg
ICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwotICAgIH0KLQotICAgIE9ic2VydmVyVHlwZSogbV9v
YnNlcnZlcjsKLSAgICBSZWZQdHI8U3VjY2Vzc0NhbGxiYWNrSW1wbD4gbV9zdWNjZXNzQ2FsbGJh
Y2s7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2tJbXBsPiBtX2Vycm9yQ2FsbGJhY2s7Ci0gICAg
UmVmUHRyPFJlc3VsdFR5cGU+IG1fcmVzdWx0OwotICAgIEV4Y2VwdGlvbkNvZGUgbV9leGNlcHRp
b25Db2RlOwotICAgIGJvb2wgbV9jb21wbGV0ZWQ7Ci19OwotCi1zdHJ1Y3QgRW1wdHlUeXBlIDog
cHVibGljIFJlZkNvdW50ZWQ8RW1wdHlUeXBlPiB7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW1w
dHlUeXBlPiBjcmVhdGUoRW1wdHlUeXBlKikKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLX07Ci0KLXN0cnVjdCBFbXB0eU9ic2VydmVyVHlwZSB7Ci0gICAgYm9vbCB3YWl0Rm9yT3Bl
cmF0aW9uVG9Db21wbGV0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
fTsKLQotdHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8RW50cnlDYWxsYmFjaywgQXN5bmNGaWxl
U3lzdGVtLCBFbnRyeSwgRW50cnlTeW5jPiBFbnRyeVN5bmNDYWxsYmFja0hlbHBlcjsKLXR5cGVk
ZWYgU3luY0NhbGxiYWNrSGVscGVyPEVudHJpZXNDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVtLCBF
bnRyeUFycmF5LCBFbnRyeUFycmF5U3luYz4gRW50cmllc1N5bmNDYWxsYmFja0hlbHBlcjsKLXR5
cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPE1ldGFkYXRhQ2FsbGJhY2ssIEFzeW5jRmlsZVN5c3Rl
bSwgTWV0YWRhdGEsIE1ldGFkYXRhPiBNZXRhZGF0YVN5bmNDYWxsYmFja0hlbHBlcjsKLXR5cGVk
ZWYgU3luY0NhbGxiYWNrSGVscGVyPFZvaWRDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVtLCBFbXB0
eVR5cGUsIEVtcHR5VHlwZT4gVm9pZFN5bmNDYWxsYmFja0hlbHBlcjsKLXR5cGVkZWYgU3luY0Nh
bGxiYWNrSGVscGVyPEZpbGVTeXN0ZW1DYWxsYmFjaywgRW1wdHlPYnNlcnZlclR5cGUsIERPTUZp
bGVTeXN0ZW0sIERPTUZpbGVTeXN0ZW1TeW5jPiBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVy
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNlbmRpZiAvLyBTeW5jQ2FsbGJhY2tIZWxwZXJfaApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2Jh
bFNjb3BlRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5oIgotCi0j
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0j
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3lu
Yy5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkVycm9yQ2Fs
bGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9y
LmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxs
YmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJGaWxl
U3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0jaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFdv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2Vy
R2xvYmFsU2NvcGUqIHdvcmtlciwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRy
PEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Vj
dXJlQ29udGV4dCA9IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICgh
QXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0
eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3Rl
bTo6c2NoZWR1bGVDYWxsYmFjayh3b3JrZXIsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3Jl
YXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBGaWxlU3lzdGVtVHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEZpbGVTeXN0
ZW1UeXBlPih0eXBlKTsKLSAgICBpZiAoIURPTUZpbGVTeXN0ZW1CYXNlOjppc1ZhbGlkVHlwZShm
aWxlU3lzdGVtVHlwZSkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFj
ayh3b3JrZXIsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBM
b2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlcXVlc3RGaWxlU3lzdGVtKHdvcmtl
ciwgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHdvcmtlciwgZmlsZVN5c3RlbVR5cGUpLCBBc3lu
Y2hyb25vdXNGaWxlU3lzdGVtKTsKLX0KLQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4g
V29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMo
V29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlciwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2VjdXJlQ29udGV4dCA9IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
IGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkpIHsKLSAgICAgICAgZWMgPSBG
aWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQot
ICAgIEZpbGVTeXN0ZW1UeXBlIGZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8RmlsZVN5c3Rl
bVR5cGU+KHR5cGUpOwotICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmlzVmFsaWRUeXBlKGZp
bGVTeXN0ZW1UeXBlKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgRmlsZVN5c3Rl
bVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXI7Ci0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZp
bGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh3b3JrZXIsIGZpbGVTeXN0ZW1UeXBlLCBzaXpl
LCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBo
ZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB3b3JrZXIsIGZpbGVTeXN0ZW1UeXBlKSwgU3luY2hyb25v
dXNGaWxlU3lzdGVtKTsKLSAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLXZv
aWQgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtVVJMKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFVSTCBjb21wbGV0ZWRVUkwgPSB3b3JrZXIt
PmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29u
dGV4dCA9IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghQXN5bmNG
aWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewotICAgICAgICBET01GaWxlU3lzdGVt
OjpzY2hlZHVsZUNhbGxiYWNrKHdvcmtlciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVh
dGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7Ci0gICAgU3RyaW5nIGZpbGVQYXRoOwotICAgIGlmICgh
Y29tcGxldGVkVVJMLmlzVmFsaWQoKSB8fCAhRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5
c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRoKSkgewotICAgICAgICBET01GaWxl
U3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHdvcmtlciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9y
OjpjcmVhdGUoRmlsZUVycm9yOjpFTkNPRElOR19FUlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZpbGVTeXN0
ZW0od29ya2VyLCB0eXBlLCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCB3b3JrZXIsIHR5cGUsIGZpbGVQYXRoKSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8RW50cnlTeW5jPiBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06OndlYmtpdFJlc29s
dmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXIsIGNvbnN0
IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgVVJM
IGNvbXBsZXRlZFVSTCA9IHdvcmtlci0+Y29tcGxldGVVUkwodXJsKTsKLSAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzZWN1cmVDb250ZXh0ID0gd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0gICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3Vy
ZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2Vj
dXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7
Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOwotICAgIFN0cmluZyBmaWxl
UGF0aDsKLSAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwgIURPTUZpbGVTeXN0ZW1C
YXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29tcGxldGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsK
LSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpFTkNPRElOR19FUlI7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXIgcmVhZEZpbGVT
eXN0ZW1IZWxwZXI7Ci0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFk
RmlsZVN5c3RlbSh3b3JrZXIsIHR5cGUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShyZWFk
RmlsZVN5c3RlbUhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgcmVhZEZpbGVTeXN0ZW1IZWxwZXIu
ZXJyb3JDYWxsYmFjaygpLCB3b3JrZXIsIHR5cGUpLCBTeW5jaHJvbm91c0ZpbGVTeXN0ZW0pOwot
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gZmlsZVN5c3RlbSA9IHJlYWRGaWxlU3lzdGVt
SGVscGVyLmdldFJlc3VsdChlYyk7Ci0gICAgaWYgKCFmaWxlU3lzdGVtKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIFJlZlB0cjxFbnRyeVN5bmM+IGVudHJ5ID0gZmlsZVN5c3RlbS0+cm9vdCgp
LT5nZXREaXJlY3RvcnkoZmlsZVBhdGgsIERpY3Rpb25hcnkoKSwgZWMpOwotICAgIGlmIChlYyA9
PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01BVENIX0VSUikKLSAgICAgICAgcmV0dXJuIGZpbGVT
eXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShmaWxlUGF0aCwgRGljdGlvbmFyeSgpLCBlYyk7Ci0KLSAg
ICByZXR1cm4gZW50cnkucmVsZWFzZSgpOwotfQotCi1DT01QSUxFX0FTU0VSVChzdGF0aWNfY2Fz
dDxpbnQ+KFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6VEVNUE9SQVJZKSA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5KSwgZW51bV9taXNtYXRjaCk7Ci1DT01Q
SUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6
UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50PihGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQp
LCBlbnVtX21pc21hdGNoKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2lmbmRlZiBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0
ZW1faAotI2RlZmluZSBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW1faAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5
Q2FsbGJhY2s7Ci1jbGFzcyBFbnRyeVN5bmM7Ci1jbGFzcyBFcnJvckNhbGxiYWNrOwotY2xhc3Mg
RmlsZVN5c3RlbUNhbGxiYWNrOwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7Ci0KLWNsYXNzIFdv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbSB7Ci1wdWJsaWM6Ci0gICAgZW51bSB7Ci0gICAgICAg
IFRFTVBPUkFSWSwKLSAgICAgICAgUEVSU0lTVEVOVCwKLSAgICB9OwotCi0gICAgc3RhdGljIHZv
aWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oV29ya2VyR2xvYmFsU2NvcGUqLCBpbnQgdHlwZSwg
bG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW1TeW5jPiB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoV29ya2VyR2xv
YmFsU2NvcGUqLCBpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICBzdGF0aWMgdm9pZCB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKFdvcmtlckdsb2Jh
bFNjb3BlKiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFbnRyeVN5bmM+IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKFdv
cmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLQot
cHJpdmF0ZToKLSAgICBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0oKTsKLSAgICB+V29ya2Vy
R2xvYmFsU2NvcGVGaWxlU3lzdGVtKCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBXb3JrZXJHbG9iYWxT
Y29wZUZpbGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5pZGwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9X
b3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBw
YXJ0aWFsIGludGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSB7Ci0gICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgVEVNUE9SQVJZID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5U
ID0gMTsKLQotICAgIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0odW5zaWduZWQgc2hvcnQg
dHlwZSwgbG9uZyBsb25nIHNpemUsIG9wdGlvbmFsIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNz
Q2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgW1Jh
aXNlc0V4Y2VwdGlvbl0gRE9NRmlsZVN5c3RlbVN5bmMgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1T
eW5jKHVuc2lnbmVkIHNob3J0IHR5cGUsIGxvbmcgbG9uZyBzaXplKTsKLSAgICB2b2lkIHdlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoRE9NU3RyaW5nIHVybCwgRW50cnlDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0g
ICAgW1JhaXNlc0V4Y2VwdGlvbl0gRW50cnlTeW5jIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1TeW5jVVJMKERPTVN0cmluZyB1cmwpOwotCi0gICAgYXR0cmlidXRlIEZpbGVFcnJvckNvbnN0
cnVjdG9yIEZpbGVFcnJvcjsKLSAgICBhdHRyaWJ1dGUgRmlsZUV4Y2VwdGlvbkNvbnN0cnVjdG9y
IEZpbGVFeGNlcHRpb247Ci19OwotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vQXN5bmNGaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0FzeW5jRmlsZVdyaXRlci5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXN5bmNGaWxlV3JpdGVyX2gKLSNkZWZp
bmUgQXN5bmNGaWxlV3JpdGVyX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQmxvYjsKLQotY2xhc3MgQXN5bmNGaWxlV3Jp
dGVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVXcml0ZXIoKSB7IH0KLQotICAg
IHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIEJsb2IqIGRhdGEpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgd2FpdEZvck9wZXJhdGlv
blRvQ29tcGxldGUoKSAvLyBOZWVkZWQgZm9yIEZpbGVXcml0ZXJTeW5jIG9ubHkuCi0gICAgewot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2Vu
ZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEFzeW5jRmlsZVdyaXRlcl9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVy
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0FzeW5jRmlsZVdyaXRlckNsaWVudC5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXN5bmNGaWxlV3JpdGVyQ2xpZW50X2gKLSNk
ZWZpbmUgQXN5bmNGaWxlV3JpdGVyQ2xpZW50X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEFzeW5jRmlsZVdyaXRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+QXN5bmNGaWxl
V3JpdGVyQ2xpZW50KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25n
IGJ5dGVzLCBib29sIGNvbXBsZXRlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFRydW5jYXRl
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEZpbGVFcnJvcjo6RXJyb3JDb2RlKSA9
IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jZW5kaWYgLy8gQXN5bmNGaWxlV3JpdGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmNwcAkocmV2aXNpb24g
MTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJET01GaWxlUGF0aC5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFyIERPTUZpbGVQYXRoOjpzZXBhcmF0b3Ig
PSAnLyc7Ci1jb25zdCBjaGFyIERPTUZpbGVQYXRoOjpyb290W10gPSAiLyI7Ci0KLVN0cmluZyBE
T01GaWxlUGF0aDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgYmFzZSwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnRzKQotewotICAgIHJldHVybiBlbnN1cmVEaXJlY3RvcnlQYXRoKGJhc2UpICsgY29tcG9u
ZW50czsKLX0KLQotU3RyaW5nIERPTUZpbGVQYXRoOjplbnN1cmVEaXJlY3RvcnlQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKLXsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjplbmRzV2l0aFNlcGFyYXRv
cihwYXRoKSkgewotICAgICAgICBTdHJpbmcgbmV3UGF0aCA9IHBhdGg7Ci0gICAgICAgIG5ld1Bh
dGguYXBwZW5kKERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpOwotICAgICAgICByZXR1cm4gbmV3UGF0
aDsKLSAgICB9Ci0gICAgcmV0dXJuIHBhdGg7Ci19Ci0KLVN0cmluZyBET01GaWxlUGF0aDo6Z2V0
TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaW50IGluZGV4ID0gcGF0aC5yZXZlcnNl
RmluZChET01GaWxlUGF0aDo6c2VwYXJhdG9yKTsKLSAgICBpZiAoaW5kZXggIT0gLTEpCi0gICAg
ICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhpbmRleCArIDEpOwotICAgIHJldHVybiBwYXRoOwot
fQotCi1TdHJpbmcgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgaW50IGluZGV4ID0gcGF0aC5yZXZlcnNlRmluZChET01GaWxlUGF0aDo6c2VwYXJh
dG9yKTsKLSAgICBpZiAoIWluZGV4KQotICAgICAgICByZXR1cm4gRE9NRmlsZVBhdGg6OnJvb3Q7
Ci0gICAgaWYgKGluZGV4ICE9IC0xKQotICAgICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwg
aW5kZXgpOwotICAgIHJldHVybiAiLiI7Ci19Ci0KLWJvb2wgRE9NRmlsZVBhdGg6OmlzUGFyZW50
T2YoY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbWF5QmVDaGlsZCkKLXsKLSAg
ICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGFyZW50KSk7Ci0gICAgQVNTRVJUKERP
TUZpbGVQYXRoOjppc0Fic29sdXRlKG1heUJlQ2hpbGQpKTsKLSAgICBpZiAocGFyZW50ID09IERP
TUZpbGVQYXRoOjpyb290ICYmIG1heUJlQ2hpbGQgIT0gRE9NRmlsZVBhdGg6OnJvb3QpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwYXJlbnQubGVuZ3RoKCkgPj0gbWF5QmVDaGlsZC5s
ZW5ndGgoKSB8fCAhbWF5QmVDaGlsZC5zdGFydHNXaXRoKHBhcmVudCwgZmFsc2UpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1heUJlQ2hpbGRbcGFyZW50Lmxlbmd0aCgpXSAhPSBE
T01GaWxlUGF0aDo6c2VwYXJhdG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLVN0cmluZyBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVu
Y2VzKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJz
b2x1dGUocGF0aCkpOwotICAgIFZlY3RvcjxTdHJpbmc+IGNvbXBvbmVudHM7Ci0gICAgVmVjdG9y
PFN0cmluZz4gY2Fub25pY2FsaXplZDsKLSAgICBwYXRoLnNwbGl0KERPTUZpbGVQYXRoOjpzZXBh
cmF0b3IsIGNvbXBvbmVudHMpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tcG9uZW50
cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoY29tcG9uZW50c1tpXSA9PSAiLiIpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGNvbXBvbmVudHNbaV0gPT0gIi4uIikgewot
ICAgICAgICAgICAgaWYgKGNhbm9uaWNhbGl6ZWQuc2l6ZSgpID4gMCkKLSAgICAgICAgICAgICAg
ICBjYW5vbmljYWxpemVkLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGNhbm9uaWNhbGl6ZWQuYXBwZW5kKGNvbXBvbmVudHNbaV0pOwotICAg
IH0KLSAgICBpZiAoY2Fub25pY2FsaXplZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBET01G
aWxlUGF0aDo6cm9vdDsKLSAgICBTdHJpbmcgcmVzdWx0OwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2Fub25pY2FsaXplZC5zaXplKCk7ICsraSkgewotICAgICAgICByZXN1bHQuYXBwZW5k
KERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNhbm9uaWNh
bGl6ZWRbaV0pOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIERPTUZpbGVQ
YXRoOjppc1ZhbGlkUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaWYgKHBhdGguaXNF
bXB0eSgpIHx8IHBhdGggPT0gRE9NRmlsZVBhdGg6OnJvb3QpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgLy8gRW1iZWRkZWQgTlVMcyBhcmUgbm90IGFsbG93ZWQuCi0gICAgaWYgKHBhdGgu
ZmluZChzdGF0aWNfY2FzdDxVQ2hhcj4oMCkpICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIC8vIFdoaWxlIG5vdCBbeWV0XSByZXN0cmljdGVkIGJ5IHRoZSBz
cGVjLCAnXFwnIGNvbXBsaWNhdGVzIGltcGxlbWVudGF0aW9uIGZvciBDaHJvbWl1bS4KLSAgICBp
ZiAocGF0aC5maW5kKCdcXCcpICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIG9uIGZ1bGx5LWV2YWx1YXRl
ZCBhYnNvbHV0ZSBwYXRocy4gQW55IHNpZ24gb2YgIi4uIiBvciAiLiIgaXMgbGlrZWx5IGFuIGF0
dGVtcHQgdG8gYnJlYWsgb3V0IG9mIHRoZSBzYW5kYm94LgotICAgIFZlY3RvcjxTdHJpbmc+IGNv
bXBvbmVudHM7Ci0gICAgcGF0aC5zcGxpdChET01GaWxlUGF0aDo6c2VwYXJhdG9yLCBjb21wb25l
bnRzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbXBvbmVudHMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgaWYgKGNvbXBvbmVudHNbaV0gPT0gIi4iKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBpZiAoY29tcG9uZW50c1tpXSA9PSAiLi4iKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxl
UGF0aDo6aXNWYWxpZE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1lLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgLy8gJy8nIGlzIG5vdCBhbGxvd2Vk
IGluIG5hbWUuCi0gICAgaWYgKG5hbWUuY29udGFpbnMoJy8nKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBpc1ZhbGlkUGF0aChuYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVQYXRoLmgJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlUGF0aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERPTUZpbGVQYXRoX2gKLSNk
ZWZpbmUgRE9NRmlsZVBhdGhfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIERP
TUZpbGVTeXN0ZW0gcGF0aCB1dGlsaXRpZXMuIEFsbCBtZXRob2RzIGluIHRoaXMgY2xhc3MgYXJl
IHN0YXRpYy4KLWNsYXNzIERPTUZpbGVQYXRoIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciBzZXBhcmF0b3I7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgcm9vdFtdOwotCi0gICAgLy8g
UmV0dXJucyB0aGUgbmFtZSBwYXJ0IGZyb20gdGhlIGdpdmVuIHBhdGguCi0gICAgc3RhdGljIFN0
cmluZyBnZXROYW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBw
YXJlbnQgZGlyZWN0b3J5IHBhdGggb2YgdGhlIGdpdmVuIHBhdGguCi0gICAgc3RhdGljIFN0cmlu
ZyBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQotICAgIC8vIENoZWNrcyBpZiBh
IGdpdmVuIHBhdGggaXMgYSBwYXJlbnQgb2YgbWF5QmVDaGlsZC4gVGhpcyBtZXRob2QgYXNzdW1l
cyBnaXZlbiBwYXRocyBhcmUgYWJzb2x1dGUgYW5kIGRvIG5vdCBoYXZlIGV4dHJhIHJlZmVyZW5j
ZXMgdG8gYSBwYXJlbnQgKGkuZS4gIi4uLyIpLgotICAgIHN0YXRpYyBib29sIGlzUGFyZW50T2Yo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1heUJlQ2hpbGQpOwotCi0gICAgLy8g
QXBwZW5kcyB0aGUgc2VwYXJhdG9yIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGggaWYgaXQncyBub3Qg
dGhlcmUgYWxyZWFkeS4KLSAgICBzdGF0aWMgU3RyaW5nIGVuc3VyZURpcmVjdG9yeVBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKTsKLQotICAgIC8vIFJldHVybnMgYSBuZXcgcGF0aCBieSBhcHBlbmRp
bmcgYSBzZXBhcmF0b3IgYW5kIHRoZSBzdXBwbGllZCBwYXRoIGNvbXBvbmVudCB0byB0aGUgcGF0
aC4KLSAgICBzdGF0aWMgU3RyaW5nIGFwcGVuZChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgY29tcG9uZW50KTsKLQotICAgIHN0YXRpYyBib29sIGlzQWJzb2x1dGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChET01GaWxl
UGF0aDo6cm9vdCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZW5kc1dpdGhTZXBhcmF0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBhdGhbcGF0aC5sZW5n
dGgoKSAtIDFdID09IERPTUZpbGVQYXRoOjpzZXBhcmF0b3I7Ci0gICAgfQotCi0gICAgLy8gRXZh
bHVhdGVzIGFsbCAiLi4vIiBhbmQgIi4vIiBzZWdtZW50cy4gTm90ZSB0aGF0ICIvLi4vIiBleHBh
bmRzIHRvICIvIiwgc28geW91IGNhbid0IGV2ZXIgcmVmZXIgdG8gYW55dGhpbmcgYWJvdmUgdGhl
IHJvb3QgZGlyZWN0b3J5LgotICAgIHN0YXRpYyBTdHJpbmcgcmVtb3ZlRXh0cmFQYXJlbnRSZWZl
cmVuY2VzKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KLSAgICAvLyBDaGVja3MgaWYgdGhlIGdpdmVu
IHBhdGggZm9sbG93cyB0aGUgRmlsZVN5c3RlbSBBUEkgbmFtaW5nIHJlc3RyaWN0aW9ucy4KLSAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOwotCi0gICAgLy8g
Q2hlY2tzIGlmIHRoZSBnaXZlbiBuYW1lIGZvbGxvd3MgdGhlIEZpbGVTeXN0ZW0gQVBJIG5hbWlu
ZyByZXN0cmljdGlvbnMuCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgU3RyaW5n
JiBuYW1lKTsKLQotcHJpdmF0ZToKLSAgICBET01GaWxlUGF0aCgpIHsgfQotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5k
aWYgLy8gRE9NRmlsZVBhdGhfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDIxMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRP
TUZpbGVTeXN0ZW0uaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFz
eW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRGly
ZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmls
ZS5oIgotI2luY2x1ZGUgIkZpbGVDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgot
I2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3Mu
aCIKLSNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlckJhc2VDYWxs
YmFjay5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXJDYWxsYmFjay5oIgotI2luY2x1ZGUgIk1ldGFk
YXRhQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIHN0YXRpYwotUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBV
UkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0p
Ci17Ci0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0oYWRvcHRSZWYobmV3IERP
TUZpbGVTeXN0ZW0oY29udGV4dCwgbmFtZSwgdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVt
KSkpOwotICAgIGZpbGVTeXN0ZW0tPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBmaWxl
U3lzdGVtLnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxl
U3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVtSWQpCi17Ci0gICAgaWYgKGZpbGVzeXN0
ZW1JZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgU3RyaW5nQnVpbGRlciBm
aWxlc3lzdGVtTmFtZTsKLSAgICBmaWxlc3lzdGVtTmFtZS5hcHBlbmQoY29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAgIGZpbGVzeXN0ZW1OYW1lLmFw
cGVuZCgiOklzb2xhdGVkXyIpOwotICAgIGZpbGVzeXN0ZW1OYW1lLmFwcGVuZChmaWxlc3lzdGVt
SWQpOwotCi0gICAgLy8gVGhlIHJvb3RVUkwgY3JlYXRlZCBoZXJlIGlzIGdvaW5nIHRvIGJlIGF0
dGFjaGVkIHRvIGVhY2ggZmlsZXN5c3RlbSByZXF1ZXN0IGFuZAotICAgIC8vIGlzIHRvIGJlIHZh
bGlkYXRlZCBlYWNoIHRpbWUgdGhlIHJlcXVlc3QgaXMgYmVpbmcgaGFuZGxlZC4KLSAgICBTdHJp
bmdCdWlsZGVyIHJvb3RVUkw7Ci0gICAgcm9vdFVSTC5hcHBlbmQoImZpbGVzeXN0ZW06Iik7Ci0g
ICAgcm9vdFVSTC5hcHBlbmQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7
Ci0gICAgcm9vdFVSTC5hcHBlbmQoIi8iKTsKLSAgICByb290VVJMLmFwcGVuZChpc29sYXRlZFBh
dGhQcmVmaXgpOwotICAgIHJvb3RVUkwuYXBwZW5kKCIvIik7Ci0gICAgcm9vdFVSTC5hcHBlbmQo
ZmlsZXN5c3RlbUlkKTsKLSAgICByb290VVJMLmFwcGVuZCgiLyIpOwotCi0gICAgcmV0dXJuIERP
TUZpbGVTeXN0ZW06OmNyZWF0ZShjb250ZXh0LCBmaWxlc3lzdGVtTmFtZS50b1N0cmluZygpLCBG
aWxlU3lzdGVtVHlwZUlzb2xhdGVkLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCByb290VVJMLnRvU3Ry
aW5nKCkpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgpKTsKLX0KLQotRE9NRmlsZVN5c3RlbTo6
RE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKLSAgICA6IERPTUZpbGVTeXN0
ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkKLSAg
ICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQotewotfQotCi1QYXNzUmVmUHRyPERpcmVjdG9y
eUVudHJ5PiBET01GaWxlU3lzdGVtOjpyb290KCkKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50
cnk6OmNyZWF0ZSh0aGlzLCBET01GaWxlUGF0aDo6cm9vdCk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5
c3RlbTo6c3RvcCgpCi17Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnN0b3AoKTsKLX0KLQotYm9v
bCBET01GaWxlU3lzdGVtOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAotewotICAgIHJldHVy
biBtX2FzeW5jRmlsZVN5c3RlbS0+aGFzUGVuZGluZ0FjdGl2aXR5KCk7Ci19Ci0KLXZvaWQgRE9N
RmlsZVN5c3RlbTo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0t
PnN0b3AoKTsKLSAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKLX0KLQot
bmFtZXNwYWNlIHsKLQotY2xhc3MgQ29udmVydFRvRmlsZVdyaXRlckNhbGxiYWNrIDogcHVibGlj
IEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENvbnZlcnRUb0ZpbGVXcml0ZXJDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RmlsZVdyaXRl
ckNhbGxiYWNrPiBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q29udmVydFRvRmlsZVdyaXRlckNhbGxiYWNrKGNhbGxiYWNrKSk7Ci0gICAgfQotCi0gICAgYm9v
bCBoYW5kbGVFdmVudChGaWxlV3JpdGVyQmFzZSogZmlsZVdyaXRlckJhc2UpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoc3RhdGljX2Nhc3Q8RmlsZVdyaXRl
cio+KGZpbGVXcml0ZXJCYXNlKSk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBDb252ZXJ0VG9GaWxl
V3JpdGVyQ2FsbGJhY2soUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQot
ICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgewotICAgIH0KLSAgICBSZWZQdHI8
RmlsZVdyaXRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOwotfTsKLQotfQotCi12b2lkIERPTUZpbGVT
eXN0ZW06OmNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0
cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChmaWxlRW50cnkpOwotCi0gICAg
UmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIgPSBGaWxlV3JpdGVyOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4g
Y29udmVyc2lvbkNhbGxiYWNrID0gQ29udmVydFRvRmlsZVdyaXRlckNhbGxiYWNrOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrKTsKLSAgICBPd25QdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFja3M+IGNh
bGxiYWNrcyA9IEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzOjpjcmVhdGUoZmlsZVdyaXRlciwgY29u
dmVyc2lvbkNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIGNyZWF0ZUZpbGVTeXN0ZW1VUkwoZmlsZUVu
dHJ5KSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIFNu
YXBzaG90RmlsZUNhbGxiYWNrIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTbmFwc2hvdEZpbGVDYWxsYmFjaz4gY3JlYXRl
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTbmFwc2hvdEZpbGVDYWxsYmFjayhmaWxlc3lzdGVtLCBu
YW1lLCB1cmwsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwotICAgIH0KLQotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTbmFwc2hvdEZpbGUoY29uc3QgRmlsZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgUGFzc1JlZlB0cjxCbG9iRGF0YUhhbmRsZT4gLyogc25hcHNob3QgKi8pCi0gICAg
ewotICAgICAgICBBU1NFUlQoIW1ldGFkYXRhLnBsYXRmb3JtUGF0aC5pc0VtcHR5KCkpOwotICAg
ICAgICBpZiAoIW1fc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIC8vIFdlIGNhbid0IGRpcmVjdGx5IHVzZSB0aGUgc25hcHNob3QgYmxvYiBkYXRhIGhhbmRs
ZSBiZWNhdXNlIHRoZSBjb250ZW50IHR5cGUgb24gaXQgaGFzbid0IGJlZW4gc2V0LgotICAgICAg
ICAvLyBUaGUgfHNuYXBzaG90fCBwYXJhbSBpcyBoZXJlIHRvIHByb3ZpZGUgYSBhIGNoYWluIG9m
IGN1c3RvZHkgdGhydSB0aHJlYWQgYnJpZGdpbmcgdGhhdCBpcyBoZWxkIG9udG8gdW50aWwKLSAg
ICAgICAgLy8gKmFmdGVyKiB3ZSd2ZSBjb2luZWQgYSBGaWxlIHdpdGggYSBuZXcgaGFuZGxlIHRo
YXQgaGFzIHRoZSBjb3JyZWN0IHR5cGUgc2V0IG9uIGl0LiBUaGlzIGFsbG93cyB0aGUKLSAgICAg
ICAgLy8gYmxvYiBzdG9yYWdlIHN5c3RlbSB0byB0cmFjayB3aGVuIGEgdGVtcCBmaWxlIGNhbiBh
bmQgY2FuJ3QgYmUgc2FmZWx5IGRlbGV0ZWQuCi0KLSAgICAgICAgLy8gRm9yIHJlZ3VsYXIgZmls
ZXN5c3RlbSB0eXBlcyAodGVtcG9yYXJ5IG9yIHBlcnNpc3RlbnQpLCB3ZSBzaG91bGQgbm90IGNh
Y2hlIGZpbGUgbWV0YWRhdGEgYXMgaXQgY291bGQgY2hhbmdlIEZpbGUgc2VtYW50aWNzLgotICAg
ICAgICAvLyBGb3Igb3RoZXIgZmlsZXN5c3RlbSB0eXBlcyAod2hpY2ggY291bGQgYmUgcGxhdGZv
cm0tc3BlY2lmaWMgb25lcyksIHRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB0aGUgZmlsZXMgYXJlIG9u
IHJlbW90ZSBmaWxlc3lzdGVtLiBJZiB0aGUgcG9ydCBoYXMgcmV0dXJuZWQgbWV0YWRhdGEganVz
dCBwYXNzIGl0IHRvIEZpbGUgY29uc3RydWN0b3IgKHNvIHdlIG1heSBjYWNoZSB0aGUgbWV0YWRh
dGEpLgotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSB0aGUgc25hcHNob3QgbWV0YWRh
dGEgZm9yIGFsbCBmaWxlcy4KLSAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVi
bGljL3Nob3dfYnVnLmNnaT9pZD0xNzc0NgotICAgICAgICBpZiAobV9maWxlc3lzdGVtLT50eXBl
KCkgPT0gRmlsZVN5c3RlbVR5cGVUZW1wb3JhcnkgfHwgbV9maWxlc3lzdGVtLT50eXBlKCkgPT0g
RmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50KSB7Ci0gICAgICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFj
ay0+aGFuZGxlRXZlbnQoRmlsZTo6Y3JlYXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRo
LCBtX25hbWUpLmdldCgpKTsKLSAgICAgICAgfSBlbHNlIGlmICghbWV0YWRhdGEucGxhdGZvcm1Q
YXRoLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhlIHBsYXRmb3JtUGF0aCBpbiB0
aGUgcmV0dXJuZWQgbWV0YWRhdGEgaXMgZ2l2ZW4sIHdlIGNyZWF0ZSBhIEZpbGUgb2JqZWN0IGZv
ciB0aGUgcGF0aC4KLSAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChG
aWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX25hbWUsIG1ldGFkYXRhKS5nZXQoKSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBPdGhlcndpc2UgY3JlYXRlIGEgRmlsZSBm
cm9tIHRoZSBGaWxlU3lzdGVtIFVSTC4KLSAgICAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5o
YW5kbGVFdmVudChGaWxlOjpjcmVhdGVGb3JGaWxlU3lzdGVtRmlsZShtX3VybCwgbWV0YWRhdGEp
LmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2Uo
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU25hcHNob3RGaWxlQ2FsbGJhY2soUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsICBjb25zdCBV
UkwmIHVybCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotICAgICAgICA6IEZpbGVTeXN0ZW1D
YWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCi0gICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVz
eXN0ZW0pCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV91cmwodXJsKQotICAg
ICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKLSAgICB7Ci0gICAgfQot
Ci0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZXN5c3RlbTsKLSAgICBTdHJpbmcgbV9u
YW1lOwotICAgIFVSTCBtX3VybDsKLSAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBtX3N1Y2Nlc3ND
YWxsYmFjazsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlRmlsZShjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQotewotICAgIFVSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxl
RW50cnkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFk
TWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwgU25hcHNob3RGaWxlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlz
LCBmaWxlRW50cnktPm5hbWUoKSwgZmlsZVN5c3RlbVVSTCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NRmlsZVN5c3RlbV9oCi0jZGVmaW5lIERPTUZpbGVT
eXN0ZW1faAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGly
ZWN0b3J5RW50cnk7Ci1jbGFzcyBGaWxlOwotY2xhc3MgRmlsZUNhbGxiYWNrOwotY2xhc3MgRmls
ZUVudHJ5OwotY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNrOwotCi1jbGFzcyBET01GaWxlU3lzdGVt
IDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNv
bnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKLQotICAgIC8v
IENyZWF0ZXMgYSBuZXcgaXNvbGF0ZWQgZmlsZSBzeXN0ZW0gZm9yIHRoZSBnaXZlbiBmaWxlc3lz
dGVtSWQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gY3JlYXRlSXNvbGF0
ZWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGZpbGVz
eXN0ZW1JZCk7Ci0KLSAgICBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiByb290KCk7Ci0KLSAg
ICAvLyBBY3RpdmVET01PYmplY3QgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7Ci0KLSAgICB2b2lkIGNyZWF0ZVdyaXRlcihjb25z
dCBGaWxlRW50cnkqLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4pOwotICAgIHZvaWQgY3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnkqLCBQ
YXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotCi0g
ICAgLy8gU2NoZWR1bGUgYSBjYWxsYmFjay4gVGhpcyBzaG91bGQgbm90IGNyb3NzIHRocmVhZHMg
KHNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHNhbWUgY29udGV4dCB0aHJlYWQpLgotICAgIC8vIEZJ
WE1FOiBtb3ZlIHRoaXMgdG8gYSBtb3JlIGdlbmVyaWMgcGxhY2UuCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KLSAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZUNhbGxi
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPENCPiwgUGFzc1JlZlB0cjxD
QkFyZz4pOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KLSAg
ICB2b2lkIHNjaGVkdWxlQ2FsbGJhY2soUGFzc1JlZlB0cjxDQj4gY2FsbGJhY2ssIFBhc3NSZWZQ
dHI8Q0JBcmc+IGNhbGxiYWNrQXJnKQotICAgIHsKLSAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNhbGxiYWNrLCBjYWxsYmFja0FyZyk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBtZXRo
b2RzLgotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklERTsKLQotICAgIC8vIEEgaGVscGVyIHRlbXBsYXRl
IHRvIHNjaGVkdWxlIGEgY2FsbGJhY2sgdGFzay4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0Is
IHR5cGVuYW1lIENCQXJnPgotICAgIGNsYXNzIERpc3BhdGNoQ2FsbGJhY2tUYXNrIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgRGlz
cGF0Y2hDYWxsYmFja1Rhc2soUGFzc1JlZlB0cjxDQj4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8Q0JB
cmc+IGFyZykKLSAgICAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAgICAgICAg
ICwgbV9jYWxsYmFja0FyZyhhcmcpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKLSAgICAgICAg
ewotICAgICAgICAgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQobV9jYWxsYmFja0FyZy5nZXQo
KSk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxDQj4gbV9jYWxs
YmFjazsKLSAgICAgICAgUmVmUHRyPENCQXJnPiBtX2NhbGxiYWNrQXJnOwotICAgIH07Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5cGVuYW1lIENCQXJnPgotdm9pZCBET01GaWxlU3lz
dGVtOjpzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8Q0I+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPENCQXJnPiBh
cmcpCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKLSAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnBvc3RUYXNrKGFkb3B0UHRyKG5ldyBEaXNwYXRjaENhbGxiYWNrVGFzazxDQiwgQ0JBcmc+KGNh
bGxiYWNrLCBhcmcpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBET01GaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVy
ZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBBY3RpdmVET01P
YmplY3QsCi0gICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgRE9NRmlsZVN5c3RlbSB7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBEaXJlY3RvcnlFbnRyeSByb290OwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAkocmV2
aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW1CYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNjIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJEaXJl
Y3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJhc2UuaCIKLSNpbmNsdWRl
ICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJFbnRyeUFycmF5LmgiCi0jaW5jbHVkZSAi
RW50cnlCYXNlLmgiCi0jaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVycm9y
Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVt
Q2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciBE
T01GaWxlU3lzdGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXhbXSA9ICJwZXJzaXN0ZW50IjsK
LWNvbnN0IHNpemVfdCBET01GaWxlU3lzdGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXhMZW5n
dGggPSBzaXplb2YoRE9NRmlsZVN5c3RlbUJhc2U6OnBlcnNpc3RlbnRQYXRoUHJlZml4KSAtIDE7
Ci1jb25zdCBjaGFyIERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4W10gPSAi
dGVtcG9yYXJ5IjsKLWNvbnN0IHNpemVfdCBET01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0
aFByZWZpeExlbmd0aCA9IHNpemVvZihET01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFBy
ZWZpeCkgLSAxOwotY29uc3QgY2hhciBET01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJl
Zml4W10gPSAiaXNvbGF0ZWQiOwotY29uc3Qgc2l6ZV90IERPTUZpbGVTeXN0ZW1CYXNlOjppc29s
YXRlZFBhdGhQcmVmaXhMZW5ndGggPSBzaXplb2YoRE9NRmlsZVN5c3RlbUJhc2U6Omlzb2xhdGVk
UGF0aFByZWZpeCkgLSAxOwotCi1ET01GaWxlU3lzdGVtQmFzZTo6RE9NRmlsZVN5c3RlbUJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
U3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAs
IG1fbmFtZShuYW1lKQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2ZpbGVzeXN0ZW1Sb290
VVJMKHJvb3RVUkwpCi0gICAgLCBtX2Nsb25hYmxlKGZhbHNlKQotICAgICwgbV9hc3luY0ZpbGVT
eXN0ZW0oYXN5bmNGaWxlU3lzdGVtKQotewotfQotCi1ET01GaWxlU3lzdGVtQmFzZTo6fkRPTUZp
bGVTeXN0ZW1CYXNlKCkKLXsKLX0KLQotI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQotLy8gc3Rh
dGljCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjppc1ZhbGlkVHlwZShGaWxlU3lzdGVtVHlwZSB0
eXBlKQotewotICAgIHJldHVybiB0eXBlID09IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IHR5
cGUgPT0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50OwotfQotCi0vLyBzdGF0aWMKLWJvb2wgRE9N
RmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChjb25zdCBVUkwmIHVybCwgRmlsZVN5
c3RlbVR5cGUmIHR5cGUsIFN0cmluZyYgZmlsZVBhdGgpCi17Ci0gICAgaWYgKCF1cmwucHJvdG9j
b2xJcygiZmlsZXN5c3RlbSIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXVy
bC5pbm5lclVSTCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTdHJpbmcgdHlwZVN0
cmluZyA9IHVybC5pbm5lclVSTCgpLT5wYXRoKCkuc3Vic3RyaW5nKDEpOwotICAgIGlmICh0eXBl
U3RyaW5nID09IHRlbXBvcmFyeVBhdGhQcmVmaXgpCi0gICAgICAgIHR5cGUgPSBGaWxlU3lzdGVt
VHlwZVRlbXBvcmFyeTsKLSAgICBlbHNlIGlmICh0eXBlU3RyaW5nID09IHBlcnNpc3RlbnRQYXRo
UHJlZml4KQotICAgICAgICB0eXBlID0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50OwotICAgIGVs
c2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZmlsZVBhdGggPSBkZWNvZGVVUkxFc2Nh
cGVTZXF1ZW5jZXModXJsLnBhdGgoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9N
RmlsZVN5c3RlbUJhc2U6OnN1cHBvcnRzVG9VUkwoKSBjb25zdAotewotICAgIEFTU0VSVChpc1Zh
bGlkVHlwZShtX3R5cGUpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotVVJMIERPTUZpbGVTeXN0
ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKGZ1bGxQYXRoKSk7Ci0gICAg
VVJMIHVybCA9IG1fZmlsZXN5c3RlbVJvb3RVUkw7Ci0gICAgLy8gUmVtb3ZlIHRoZSBleHRyYSBs
ZWFkaW5nIHNsYXNoLgotICAgIHVybC5zZXRQYXRoKHVybC5wYXRoKCkgKyBlbmNvZGVXaXRoVVJM
RXNjYXBlU2VxdWVuY2VzKGZ1bGxQYXRoLnN1YnN0cmluZygxKSkpOwotICAgIHJldHVybiB1cmw7
Ci19Ci0jZW5kaWYKLQotU2VjdXJpdHlPcmlnaW4qIERPTUZpbGVTeXN0ZW1CYXNlOjpzZWN1cml0
eU9yaWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KTsKLX0KLQotVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0
IEVudHJ5QmFzZSogZW50cnkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNyZWF0ZUZpbGVTeXN0ZW1V
UkwoZW50cnktPmZ1bGxQYXRoKCkpOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXRN
ZXRhZGF0YShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQotewotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoY3JlYXRlRmlsZVN5
c3RlbVVSTChlbnRyeSksIE1ldGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBib29sIHZl
cmlmeUFuZEdldERlc3RpbmF0aW9uUGF0aEZvckNvcHlPck1vdmUoY29uc3QgRW50cnlCYXNlKiBz
b3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFN0cmluZyYg
ZGVzdGluYXRpb25QYXRoKQotewotICAgIEFTU0VSVChzb3VyY2UpOwotCi0gICAgaWYgKCFwYXJl
bnQgfHwgIXBhcmVudC0+aXNEaXJlY3RvcnkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSAmJiAhRE9NRmlsZVBhdGg6OmlzVmFsaWROYW1lKG5l
d05hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBib29sIGlzU2FtZUZp
bGVTeXN0ZW0gPSAoKnNvdXJjZS0+ZmlsZXN5c3RlbSgpID09ICpwYXJlbnQtPmZpbGVzeXN0ZW0o
KSk7Ci0KLSAgICAvLyBJdCBpcyBhbiBlcnJvciB0byB0cnkgdG8gY29weSBvciBtb3ZlIGFuIGVu
dHJ5IGluc2lkZSBpdHNlbGYgYXQgYW55IGRlcHRoIGlmIGl0IGlzIGEgZGlyZWN0b3J5LgotICAg
IGlmIChzb3VyY2UtPmlzRGlyZWN0b3J5KCkgJiYgaXNTYW1lRmlsZVN5c3RlbSAmJiBET01GaWxl
UGF0aDo6aXNQYXJlbnRPZihzb3VyY2UtPmZ1bGxQYXRoKCksIHBhcmVudC0+ZnVsbFBhdGgoKSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIGNvcHkg
b3IgbW92ZSBhbiBlbnRyeSBpbnRvIGl0cyBwYXJlbnQgaWYgYSBuYW1lIGRpZmZlcmVudCBmcm9t
IGl0cyBjdXJyZW50IG9uZSBpc24ndCBwcm92aWRlZC4KLSAgICBpZiAoaXNTYW1lRmlsZVN5c3Rl
bSAmJiAobmV3TmFtZS5pc0VtcHR5KCkgfHwgc291cmNlLT5uYW1lKCkgPT0gbmV3TmFtZSkgJiYg
RE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShzb3VyY2UtPmZ1bGxQYXRoKCkpID09IHBhcmVudC0+
ZnVsbFBhdGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZGVzdGluYXRpb25QYXRo
ID0gcGFyZW50LT5mdWxsUGF0aCgpOwotICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgIGRlc3RpbmF0aW9uUGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdGluYXRpb25QYXRo
LCBuZXdOYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGRlc3RpbmF0aW9uUGF0aCA9IERPTUZpbGVQ
YXRoOjphcHBlbmQoZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPm5hbWUoKSk7Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgcGF0aFRvQWJzb2x1dGVQYXRoKEZpbGVTeXN0ZW1U
eXBlIHR5cGUsIGNvbnN0IEVudHJ5QmFzZSogYmFzZSwgU3RyaW5nIHBhdGgsIFN0cmluZyYgYWJz
b2x1dGVQYXRoKQotewotICAgIEFTU0VSVChiYXNlKTsKLQotICAgIGlmICghRE9NRmlsZVBhdGg6
OmlzQWJzb2x1dGUocGF0aCkpCi0gICAgICAgIHBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGJh
c2UtPmZ1bGxQYXRoKCksIHBhdGgpOwotICAgIGFic29sdXRlUGF0aCA9IERPTUZpbGVQYXRoOjpy
ZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMocGF0aCk7Ci0KLSAgICBpZiAoKHR5cGUgPT0gRmls
ZVN5c3RlbVR5cGVUZW1wb3JhcnkgfHwgdHlwZSA9PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQp
ICYmICFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgoYWJzb2x1dGVQYXRoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNl
Ojptb3ZlKGNvbnN0IEVudHJ5QmFzZSogc291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3Qg
U3RyaW5nJiBuZXdOYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFN0cmlu
ZyBkZXN0aW5hdGlvblBhdGg7Ci0gICAgaWYgKCF2ZXJpZnlBbmRHZXREZXN0aW5hdGlvblBhdGhG
b3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFyZW50LCBuZXdOYW1lLCBkZXN0aW5hdGlvblBhdGgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+bW92ZShjcmVh
dGVGaWxlU3lzdGVtVVJMKHNvdXJjZSksIHBhcmVudC0+ZmlsZXN5c3RlbSgpLT5jcmVhdGVGaWxl
U3lzdGVtVVJMKGRlc3RpbmF0aW9uUGF0aCksIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBwYXJlbnQtPmZpbGVzeXN0ZW0oKSwgZGVzdGluYXRp
b25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5KCkpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y29weShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50
cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKLXsKLSAgICBTdHJpbmcgZGVzdGluYXRpb25QYXRoOwotICAgIGlmICghdmVyaWZ5
QW5kR2V0RGVzdGluYXRpb25QYXRoRm9yQ29weU9yTW92ZShzb3VyY2UsIHBhcmVudCwgbmV3TmFt
ZSwgZGVzdGluYXRpb25QYXRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9hc3lu
Y0ZpbGVTeXN0ZW0tPmNvcHkoY3JlYXRlRmlsZVN5c3RlbVVSTChzb3VyY2UpLCBwYXJlbnQtPmZp
bGVzeXN0ZW0oKS0+Y3JlYXRlRmlsZVN5c3RlbVVSTChkZXN0aW5hdGlvblBhdGgpLCBFbnRyeUNh
bGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgcGFyZW50LT5m
aWxlc3lzdGVtKCksIGRlc3RpbmF0aW9uUGF0aCwgc291cmNlLT5pc0RpcmVjdG9yeSgpKSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OnJlbW92ZShjb25z
dCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgQVNT
RVJUKGVudHJ5KTsKLSAgICAvLyBXZSBkb24ndCBhbGxvdyBjYWxsaW5nIHJlbW92ZSgpIG9uIHRo
ZSByb290IGRpcmVjdG9yeS4KLSAgICBpZiAoZW50cnktPmZ1bGxQYXRoKCkgPT0gU3RyaW5nKERP
TUZpbGVQYXRoOjpyb290KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5yZW1vdmUoY3JlYXRlRmlsZVN5c3RlbVVSTChlbnRyeSksIFZvaWRDYWxsYmFja3M6
OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3Qg
RW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VS
VChlbnRyeSAmJiBlbnRyeS0+aXNEaXJlY3RvcnkoKSk7Ci0gICAgLy8gV2UgZG9uJ3QgYWxsb3cg
Y2FsbGluZyByZW1vdmUoKSBvbiB0aGUgcm9vdCBkaXJlY3RvcnkuCi0gICAgaWYgKGVudHJ5LT5m
dWxsUGF0aCgpID09IFN0cmluZyhET01GaWxlUGF0aDo6cm9vdCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoY3JlYXRlRmls
ZVN5c3RlbVVSTChlbnRyeSksIFZvaWRDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBET01GaWxlU3lz
dGVtQmFzZTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8RW50
cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCi17Ci0gICAgQVNTRVJUKGVudHJ5KTsKLSAgICBTdHJpbmcgcGF0aCA9IERP
TUZpbGVQYXRoOjpnZXREaXJlY3RvcnkoZW50cnktPmZ1bGxQYXRoKCkpOwotCi0gICAgbV9hc3lu
Y0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhjcmVhdGVGaWxlU3lzdGVtVVJMKHBhdGgpLCBF
bnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhp
cywgcGF0aCwgdHJ1ZSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgRmlsZVN5c3RlbUZsYWdzJiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKLXsKLSAgICBTdHJpbmcgYWJzb2x1dGVQYXRoOwotICAgIGlmICghcGF0aFRvQWJzb2x1dGVQ
YXRoKG1fdHlwZSwgZW50cnksIHBhdGgsIGFic29sdXRlUGF0aCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxs
YmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29s
dXRlUGF0aCwgZmFsc2UpOwotICAgIGlmIChmbGFncy5jcmVhdGUpCi0gICAgICAgIG1fYXN5bmNG
aWxlU3lzdGVtLT5jcmVhdGVGaWxlKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1dGVQYXRoKSwg
ZmxhZ3MuZXhjbHVzaXZlLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhpc3RzKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1
dGVQYXRoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldERpcmVjdG9yeShjb25zdCBFbnRyeUJhc2UqIGVudHJ5
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1GbGFncyYgZmxhZ3MsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0gICAgU3RyaW5nIGFic29sdXRlUGF0aDsKLSAgICBp
ZiAoIXBhdGhUb0Fic29sdXRlUGF0aChtX3R5cGUsIGVudHJ5LCBwYXRoLCBhYnNvbHV0ZVBhdGgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNh
bGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIHRydWUpOwotICAgIGlmIChmbGFncy5jcmVhdGUp
Ci0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoY3JlYXRlRmlsZVN5
c3RlbVVSTChhYnNvbHV0ZVBhdGgpLCBmbGFncy5leGNsdXNpdmUsIGNhbGxiYWNrcy5yZWxlYXNl
KCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0
cyhjcmVhdGVGaWxlU3lzdGVtVVJMKGFic29sdXRlUGF0aCksIGNhbGxiYWNrcy5yZWxlYXNlKCkp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGly
ZWN0b3J5KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4gcmVhZGVyLCBjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoRE9N
RmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFk
RGlyZWN0b3J5KGNyZWF0ZUZpbGVTeXN0ZW1VUkwocGF0aCksIEVudHJpZXNDYWxsYmFja3M6OmNy
ZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHJlYWRlciwgcGF0aCkpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAkocmV2aXNpb24gMTU2NjkxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERPTUZpbGVTeXN0ZW1CYXNlX2gK
LSNkZWZpbmUgRE9NRmlsZVN5c3RlbUJhc2VfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUZsYWdz
LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgRGlyZWN0b3J5RW50cnk7Ci1jbGFzcyBEaXJlY3RvcnlSZWFkZXJCYXNlOwotY2xhc3MgRW50
cmllc0NhbGxiYWNrOwotY2xhc3MgRW50cnlCYXNlOwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNs
YXNzIEVycm9yQ2FsbGJhY2s7Ci1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgVm9pZENhbGxi
YWNrOwotCi0vLyBBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBET01GaWxlU3lzdGVtIGFuZCBET01G
aWxlU3lzdGVtU3luYy4KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlIDogcHVibGljIFJlZkNvdW50
ZWQ8RE9NRmlsZVN5c3RlbUJhc2U+IHsKLXB1YmxpYzoKLSAgICAvLyBQYXRoIHByZWZpeGVzIHRo
YXQgYXJlIHVzZWQgaW4gdGhlIGZpbGVzeXN0ZW0gVVJMcyAodGhhdCBjYW4gYmUgb2J0YWluZWQg
YnkgdG9VUkwoKSkuCi0gICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvZmlsZS1zeXN0ZW0tYXBp
LyN3aWRsLUVudHJ5LXRvVVJMCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgcGVyc2lzdGVudFBhdGhQ
cmVmaXhbXTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBlcnNpc3RlbnRQYXRoUHJlZml4TGVu
Z3RoOwotICAgIHN0YXRpYyBjb25zdCBjaGFyIHRlbXBvcmFyeVBhdGhQcmVmaXhbXTsKLSAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHRlbXBvcmFyeVBhdGhQcmVmaXhMZW5ndGg7Ci0gICAgc3RhdGlj
IGNvbnN0IGNoYXIgaXNvbGF0ZWRQYXRoUHJlZml4W107Ci0gICAgc3RhdGljIGNvbnN0IHNpemVf
dCBpc29sYXRlZFBhdGhQcmVmaXhMZW5ndGg7Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJM
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBuYW1l
LCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+
RE9NRmlsZVN5c3RlbUJhc2UoKTsKLQotICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQotICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KLSAgICBVUkwgcm9vdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3Rl
bVJvb3RVUkw7IH0KLSAgICBBc3luY0ZpbGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXN5bmNGaWxlU3lzdGVtLmdldCgpOyB9Ci0gICAgU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7Ci0KLSAgICAvLyBUaGUgY2xvbmFibGUgZmxhZyBpcyB1
c2VkIGluIHRoZSBzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobSB0byB0ZXN0Ci0gICAgLy8gd2hl
dGhlciB0aGUgRmlsZVN5c3RlbSBBUEkgb2JqZWN0IGlzIHBlcm1pdHRlZCB0byBiZSBjbG9uZWQu
IEl0IGRlZmF1bHRzCi0gICAgLy8gdG8gZmFsc2UsIGFuZCBtdXN0IGJlIGV4cGxpY2l0bHkgc2V0
IGJ5IGludGVybmFsIGNvZGUgcGVybWl0IGNsb25pbmcuCi0gICAgdm9pZCBtYWtlQ2xvbmFibGUo
KSB7IG1fY2xvbmFibGUgPSB0cnVlOyB9Ci0gICAgYm9vbCBjbG9uYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xvbmFibGU7IH0KLQotICAgIHN0YXRpYyBib29sIGlzVmFsaWRUeXBlKEZpbGVTeXN0
ZW1UeXBlKTsKLSAgICBzdGF0aWMgYm9vbCBjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgVVJMJiwg
RmlsZVN5c3RlbVR5cGUmLCBTdHJpbmcmIGZpbGVQYXRoKTsKLSAgICBib29sIHN1cHBvcnRzVG9V
UkwoKSBjb25zdDsKLSAgICBVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2Uq
KSBjb25zdDsKLSAgICBVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQ
YXRoKSBjb25zdDsKLQotICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRhdGlv
bnMuIEFsbCB0aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQg
dGhpcyBsZXZlbC4KLSAgICAvLyBUaGV5IHJldHVybiBmYWxzZSBmb3IgaW1tZWRpYXRlIGVycm9y
cyB0aGF0IGRvbid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxlU3lzdGVtIGxheWVyIChlLmcuIGZv
ciBuYW1lIHZhbGlkYXRpb24gZXJyb3JzKS4gT3RoZXJ3aXNlIHRoZXkgcmV0dXJuIHRydWUgKGJ1
dCBsYXRlciBtYXkgY2FsbCBiYWNrIHdpdGggYW4gcnVudGltZSBlcnJvcikuCi0gICAgYm9vbCBn
ZXRNZXRhZGF0YShjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIG1vdmUoY29uc3QgRW50cnlC
YXNlKiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJv
b2wgY29weShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPik7Ci0gICAgYm9vbCByZW1vdmUoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIHJl
bW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEVudHJ5QmFzZSosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNr
PiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgYm9vbCBnZXRQYXJlbnQoY29uc3Qg
RW50cnlCYXNlKiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPik7Ci0gICAgYm9vbCBnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSosIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgRmlsZVN5c3RlbUZsYWdzJiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgYm9vbCBnZXREaXJlY3RvcnkoY29u
c3QgRW50cnlCYXNlKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGaWxlU3lzdGVtRmxhZ3Mm
LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsK
LSAgICBib29sIHJlYWREaXJlY3RvcnkoUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pOwotCi1wcm90ZWN0ZWQ6Ci0gICAgRE9NRmlsZVN5c3RlbUJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5
cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKLSAg
ICBmcmllbmQgY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBGaWxlU3lzdGVtVHlw
ZSBtX3R5cGU7Ci0gICAgVVJMIG1fZmlsZXN5c3RlbVJvb3RVUkw7Ci0gICAgYm9vbCBtX2Nsb25h
YmxlOwotCi0gICAgbXV0YWJsZSBPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBtX2FzeW5jRmlsZVN5
c3RlbTsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRE9NRmlsZVN5c3RlbUJh
c2UmIGEsIGNvbnN0IERPTUZpbGVTeXN0ZW1CYXNlJiBiKSB7IHJldHVybiBhLm5hbWUoKSA9PSBi
Lm5hbWUoKSAmJiBhLnR5cGUoKSA9PSBiLnR5cGUoKSAmJiBhLnJvb3RVUkwoKSA9PSBiLnJvb3RV
UkwoKTsgfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNlbmRpZiAvLyBET01GaWxlU3lzdGVtQmFzZV9oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjY2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgot
I2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0j
aW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5o
IgotI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVk
ZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZp
bGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRl
ICJGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWxlV3JpdGVyQmFzZTsKLQotUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtU3luYz4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZShET01GaWxl
U3lzdGVtQmFzZSogZmlsZVN5c3RlbSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZp
bGVTeXN0ZW1TeW5jKGZpbGVTeXN0ZW0tPm1fY29udGV4dCwgZmlsZVN5c3RlbS0+bmFtZSgpLCBm
aWxlU3lzdGVtLT50eXBlKCksIGZpbGVTeXN0ZW0tPnJvb3RVUkwoKSwgZmlsZVN5c3RlbS0+bV9h
c3luY0ZpbGVTeXN0ZW0ucmVsZWFzZSgpKSk7Ci19Ci0KLURPTUZpbGVTeXN0ZW1TeW5jOjpET01G
aWxlU3lzdGVtU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKLSAgICA6IERPTUZpbGVTeXN0
ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkKLXsK
LX0KLQotRE9NRmlsZVN5c3RlbVN5bmM6On5ET01GaWxlU3lzdGVtU3luYygpCi17Ci19Ci0KLVBh
c3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBET01GaWxlU3lzdGVtU3luYzo6cm9vdCgpCi17
Ci0gICAgcmV0dXJuIERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlKHRoaXMsIERPTUZpbGVQYXRo
Ojpyb290KTsKLX0KLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgQ3JlYXRlRmlsZUhlbHBlciA6IHB1
YmxpYyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MgewotcHVibGljOgotICAgIGNsYXNzIENyZWF0
ZUZpbGVSZXN1bHQgOiBwdWJsaWMgUmVmQ291bnRlZDxDcmVhdGVGaWxlUmVzdWx0PiB7Ci0gICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IGNy
ZWF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRl
RmlsZVJlc3VsdCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgbV9mYWlsZWQ7Ci0gICAg
ICAgIGludCBtX2NvZGU7Ci0gICAgICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7Ci0KLSAgICAgIHBy
aXZhdGU6Ci0gICAgICAgIENyZWF0ZUZpbGVSZXN1bHQoKQotICAgICAgICAgICAgOiBtX2ZhaWxl
ZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9jb2RlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIH5DcmVhdGVGaWxlUmVzdWx0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8Q3JlYXRlRmlsZVJlc3VsdD47Ci0gICAg
fTsKLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyZWF0ZUZpbGVIZWxwZXI+IGNyZWF0ZShQYXNz
UmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ3JlYXRlRmlsZUhlbHBlcihyZXN1bHQsIG5hbWUsIHVybCwgdHlwZSkpOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBjb2RlKQotICAgIHsKLSAgICAg
ICAgbV9yZXN1bHQtPm1fZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgbV9yZXN1bHQtPm1fY29kZSA9
IGNvZGU7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+Q3JlYXRlRmlsZUhlbHBlcigpCi0gICAgewot
ICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTbmFwc2hvdEZpbGUoY29uc3QgRmls
ZU1ldGFkYXRhJiBtZXRhZGF0YSwgUGFzc1JlZlB0cjxCbG9iRGF0YUhhbmRsZT4gLyogc25hcHNo
b3QgKi8pCi0gICAgewotICAgICAgICAvLyBXZSBjYW4ndCBkaXJlY3RseSB1c2UgdGhlIHNuYXBz
aG90IGJsb2IgZGF0YSBoYW5kbGUgYmVjYXVzZSB0aGUgY29udGVudCB0eXBlIG9uIGl0IGhhc24n
dCBiZWVuIHNldC4KLSAgICAgICAgLy8gVGhlIHxzbmFwc2hvdHwgcGFyYW0gaXMgaGVyZSB0byBw
cm92aWRlIGEgYSBjaGFpbiBvZiBjdXN0b2R5IHRocnUgdGhyZWFkIGJyaWRnaW5nIHRoYXQgaXMg
aGVsZCBvbnRvIHVudGlsCi0gICAgICAgIC8vICphZnRlciogd2UndmUgY29pbmVkIGEgRmlsZSB3
aXRoIGEgbmV3IGhhbmRsZSB0aGF0IGhhcyB0aGUgY29ycmVjdCB0eXBlIHNldCBvbiBpdC4gVGhp
cyBhbGxvd3MgdGhlCi0gICAgICAgIC8vIGJsb2Igc3RvcmFnZSBzeXN0ZW0gdG8gdHJhY2sgd2hl
biBhIHRlbXAgZmlsZSBjYW4gYW5kIGNhbid0IGJlIHNhZmVseSBkZWxldGVkLgotCi0gICAgICAg
IC8vIEZvciByZWd1bGFyIGZpbGVzeXN0ZW0gdHlwZXMgKHRlbXBvcmFyeSBvciBwZXJzaXN0ZW50
KSwgd2Ugc2hvdWxkIG5vdCBjYWNoZSBmaWxlIG1ldGFkYXRhIGFzIGl0IGNvdWxkIGNoYW5nZSBG
aWxlIHNlbWFudGljcy4KLSAgICAgICAgLy8gRm9yIG90aGVyIGZpbGVzeXN0ZW0gdHlwZXMgKHdo
aWNoIGNvdWxkIGJlIHBsYXRmb3JtLXNwZWNpZmljIG9uZXMpLCB0aGVyZSdzIGEgY2hhbmNlIHRo
YXQgdGhlIGZpbGVzIGFyZSBvbiByZW1vdGUgZmlsZXN5c3RlbS4KLSAgICAgICAgLy8gSWYgdGhl
IHBvcnQgaGFzIHJldHVybmVkIG1ldGFkYXRhIGp1c3QgcGFzcyBpdCB0byBGaWxlIGNvbnN0cnVj
dG9yIChzbyB3ZSBtYXkgY2FjaGUgdGhlIG1ldGFkYXRhKS4KLSAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCB1c2UgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGZvciBhbGwgZmlsZXMuCi0gICAgICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDYK
LSAgICAgICAgaWYgKG1fdHlwZSA9PSBGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSB8fCBtX3R5cGUg
PT0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50KSB7Ci0gICAgICAgICAgICBtX3Jlc3VsdC0+bV9m
aWxlID0gRmlsZTo6Y3JlYXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25hbWUp
OwotICAgICAgICB9IGVsc2UgaWYgKCFtZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcGxhdGZvcm1QYXRoIGluIHRoZSByZXR1cm5lZCBtZXRh
ZGF0YSBpcyBnaXZlbiwgd2UgY3JlYXRlIGEgRmlsZSBvYmplY3QgZm9yIHRoZSBwYXRoLgotICAg
ICAgICAgICAgbV9yZXN1bHQtPm1fZmlsZSA9IEZpbGU6OmNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxl
KG1fbmFtZSwgbWV0YWRhdGEpLmdldCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gT3RoZXJ3aXNlIGNyZWF0ZSBhIEZpbGUgZnJvbSB0aGUgRmlsZVN5c3RlbSBVUkwuCi0gICAg
ICAgICAgICBtX3Jlc3VsdC0+bV9maWxlID0gRmlsZTo6Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUo
bV91cmwsIG1ldGFkYXRhKS5nZXQoKTsKLSAgICAgICAgfQotICAgIH0KLXByaXZhdGU6Ci0gICAg
Q3JlYXRlRmlsZUhlbHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKLSAg
ICAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAg
ICwgbV91cmwodXJsKQotICAgICAgICAsIG1fdHlwZSh0eXBlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBSZWZQdHI8Q3JlYXRlRmlsZVJlc3VsdD4gbV9yZXN1bHQ7Ci0gICAgU3RyaW5nIG1fbmFtZTsK
LSAgICBVUkwgbV91cmw7Ci0gICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UKLQotUGFzc1JlZlB0cjxGaWxlPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlRmls
ZShjb25zdCBGaWxlRW50cnlTeW5jKiBmaWxlRW50cnksIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGVjID0gMDsKLSAgICBVUkwgZmlsZVN5c3RlbVVSTCA9IGNyZWF0ZUZpbGVTeXN0ZW1VUkwo
ZmlsZUVudHJ5KTsKLSAgICBSZWZQdHI8Q3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJlc3Vs
dD4gcmVzdWx0KENyZWF0ZUZpbGVIZWxwZXI6OkNyZWF0ZUZpbGVSZXN1bHQ6OmNyZWF0ZSgpKTsK
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRh
KGZpbGVTeXN0ZW1VUkwsIENyZWF0ZUZpbGVIZWxwZXI6OmNyZWF0ZShyZXN1bHQsIGZpbGVFbnRy
eS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJMLCB0eXBlKCkpKTsKLSAgICBpZiAoIW1fYXN5bmNGaWxl
U3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7Ci0gICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYg
KHJlc3VsdC0+bV9mYWlsZWQpIHsKLSAgICAgICAgZWMgPSByZXN1bHQtPm1fY29kZTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQtPm1fZmlsZTsKLX0KLQotbmFt
ZXNwYWNlIHsKLQotY2xhc3MgUmVjZWl2ZUZpbGVXcml0ZXJDYWxsYmFjayA6IHB1YmxpYyBGaWxl
V3JpdGVyQmFzZUNhbGxiYWNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWNl
aXZlRmlsZVdyaXRlckNhbGxiYWNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrKCkpOwotICAgIH0KLQotICAgIGJv
b2wgaGFuZGxlRXZlbnQoRmlsZVdyaXRlckJhc2UqIGZpbGVXcml0ZXJCYXNlKQotICAgIHsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgIG1fZmlsZVdyaXRlckJhc2UgPSBmaWxlV3JpdGVyQmFzZTsK
LSNlbHNlCi0gICAgICAgIEFTU0VSVF9VTlVTRUQoZmlsZVdyaXRlckJhc2UsIGZpbGVXcml0ZXJC
YXNlKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSNpZm5kZWYgTkRF
QlVHCi0gICAgRmlsZVdyaXRlckJhc2UqIGZpbGVXcml0ZXJCYXNlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2ZpbGVXcml0ZXJCYXNlOwotICAgIH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAg
IFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2soKQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgOiBt
X2ZpbGVXcml0ZXJCYXNlKDApCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCi0jaWZuZGVmIE5ERUJV
RwotICAgIEZpbGVXcml0ZXJCYXNlKiBtX2ZpbGVXcml0ZXJCYXNlOwotI2VuZGlmCi19OwotCi1j
bGFzcyBMb2NhbEVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgRXJyb3JDYWxsYmFjayB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TG9jYWxFcnJvckNhbGxiYWNrPiBjcmVhdGUoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMb2NhbEVycm9yQ2FsbGJhY2soKSk7Ci0g
ICAgfQotCi0gICAgYm9vbCBoYW5kbGVFdmVudChGaWxlRXJyb3IqIGVycm9yKQotICAgIHsKLSAg
ICAgICAgbV9lcnJvciA9IGVycm9yOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBGaWxlRXJyb3IqIGVycm9yKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vycm9yLmdldCgp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBMb2NhbEVycm9yQ2FsbGJhY2soKQotICAgIHsKLSAg
ICB9Ci0gICAgUmVmUHRyPEZpbGVFcnJvcj4gbV9lcnJvcjsKLX07Ci0KLX0KLQotUGFzc1JlZlB0
cjxGaWxlV3JpdGVyU3luYz4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZVdyaXRlcihjb25zdCBG
aWxlRW50cnlTeW5jKiBmaWxlRW50cnksIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEFTU0VS
VChmaWxlRW50cnkpOwotICAgIGVjID0gMDsKLQotCi0gICAgUmVmUHRyPEZpbGVXcml0ZXJTeW5j
PiBmaWxlV3JpdGVyID0gRmlsZVdyaXRlclN5bmM6OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxSZWNl
aXZlRmlsZVdyaXRlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBSZWNlaXZlRmlsZVdyaXRl
ckNhbGxiYWNrOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TG9jYWxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrID0gTG9jYWxFcnJvckNhbGxiYWNrOjpjcmVhdGUoKTsKLQotICAgIE93blB0cjxG
aWxlV3JpdGVyQmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRmlsZVdyaXRlckJhc2VDYWxsYmFj
a3M6OmNyZWF0ZShmaWxlV3JpdGVyLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwot
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlci5nZXQoKSwgY3Jl
YXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBp
ZiAoIW1fYXN5bmNGaWxlU3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7Ci0g
ICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0gICAgaWYgKGVycm9yQ2FsbGJhY2stPmVycm9yKCkpIHsKLSAgICAgICAgQVNTRVJU
KCFzdWNjZXNzQ2FsbGJhY2stPmZpbGVXcml0ZXJCYXNlKCkpOwotICAgICAgICBlYyA9IEZpbGVF
eGNlcHRpb246OkVycm9yQ29kZVRvRXhjZXB0aW9uQ29kZShlcnJvckNhbGxiYWNrLT5lcnJvcigp
LT5jb2RlKCkpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgQVNTRVJUKHN1Y2Nlc3ND
YWxsYmFjay0+ZmlsZVdyaXRlckJhc2UoKSk7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PEZpbGVX
cml0ZXJTeW5jKj4oc3VjY2Vzc0NhbGxiYWNrLT5maWxlV3JpdGVyQmFzZSgpKSA9PSBmaWxlV3Jp
dGVyLmdldCgpKTsKLSAgICByZXR1cm4gZmlsZVdyaXRlcjsKLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERPTUZpbGVTeXN0ZW1TeW5jX2gK
LSNkZWZpbmUgRE9NRmlsZVN5c3RlbVN5bmNfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBEaXJlY3RvcnlFbnRyeVN5bmM7Ci1jbGFzcyBGaWxlOwotY2xhc3MgRmlsZUVudHJ5
U3luYzsKLWNsYXNzIEZpbGVXcml0ZXJTeW5jOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwotCi1jbGFzcyBET01GaWxlU3lzdGVtU3luYyA6IHB1YmxpYyBET01GaWxlU3lzdGVtQmFzZSB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZp
bGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRE9NRmlsZVN5c3RlbVN5bmMoY29udGV4dCwgbmFtZSwgdHlwZSwgcm9vdFVSTCwgYXN5
bmNGaWxlU3lzdGVtKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbVN5bmM+IGNyZWF0ZShET01GaWxlU3lzdGVtQmFzZSopOwotCi0gICAgdmlydHVhbCB+RE9N
RmlsZVN5c3RlbVN5bmMoKTsKLQotICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBy
b290KCk7Ci0KLSAgICBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5
U3luYyosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBj
cmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5U3luYyosIEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJp
dmF0ZToKLSAgICBET01GaWxlU3lzdGVtU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJ
TEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRE9NRmlsZVN5c3RlbVN5bmNfaApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5
bmMuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0s
Ci0gICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgRE9NRmlsZVN5c3RlbVN5bmMgewot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgRGlyZWN0b3J5RW50cnlTeW5jIHJvb3Q7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmNw
cAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKLSAq
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE9NV2luZG93
RmlsZVN5c3RlbS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5
bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRW50cnlDYWxsYmFj
ay5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJMb2NhbEZp
bGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLURPTVdpbmRvd0ZpbGVTeXN0ZW06OkRPTVdpbmRvd0ZpbGVTeXN0ZW0oKQotewot
fQotCi1ET01XaW5kb3dGaWxlU3lzdGVtOjp+RE9NV2luZG93RmlsZVN5c3RlbSgpCi17Ci19Ci0K
LXZvaWQgRE9NV2luZG93RmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oRE9NV2lu
ZG93KiB3aW5kb3csIGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lz
dGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQotewotICAgIGlmICghd2luZG93LT5pc0N1cnJlbnRseURpc3BsYXllZElu
RnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd2lu
ZG93LT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFkb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7Ci0gICAgICAgIERPTUZpbGVT
eXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2soZG9jdW1lbnQsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJv
cjo6Y3JlYXRlKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBGaWxlU3lzdGVtVHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEZp
bGVTeXN0ZW1UeXBlPih0eXBlKTsKLSAgICBpZiAoIURPTUZpbGVTeXN0ZW1CYXNlOjppc1ZhbGlk
VHlwZShmaWxlU3lzdGVtVHlwZSkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVD
YWxsYmFjayhkb2N1bWVudCwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVy
cm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0
ZW0oZG9jdW1lbnQsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpj
cmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBkb2N1bWVudCwgZmlsZVN5c3Rl
bVR5cGUpLCBBc3luY2hyb25vdXNGaWxlU3lzdGVtKTsKLX0KLQotdm9pZCBET01XaW5kb3dGaWxl
U3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKERPTVdpbmRvdyogd2luZG93
LCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBp
ZiAoIXdpbmRvdy0+aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdpbmRvdy0+ZG9jdW1lbnQoKTsKLSAgICBp
ZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBVUkwgY29tcGxl
dGVkVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgaWYgKCFBc3luY0ZpbGVT
eXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3NGaWxlU3lz
dGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKLSAg
ICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayhkb2N1bWVudCwgZXJyb3JDYWxs
YmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7Ci0gICAgU3RyaW5n
IGZpbGVQYXRoOwotICAgIGlmICghY29tcGxldGVkVVJMLmlzVmFsaWQoKSB8fCAhRE9NRmlsZVN5
c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChjb21wbGV0ZWRVUkwsIHR5cGUsIGZpbGVQYXRo
KSkgewotICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKGRvY3VtZW50LCBl
cnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OkVOQ09ESU5HX0VSUikp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZp
bGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShkb2N1bWVudCwgdHlwZSwgUmVzb2x2ZVVSSUNhbGxi
YWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgZG9jdW1lbnQsIHR5
cGUsIGZpbGVQYXRoKSk7Ci19Ci0KLUNPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oRE9N
V2luZG93RmlsZVN5c3RlbTo6VEVNUE9SQVJZKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEZpbGVTeXN0
ZW1UeXBlVGVtcG9yYXJ5KSwgZW51bV9taXNtYXRjaCk7Ci1DT01QSUxFX0FTU0VSVChzdGF0aWNf
Y2FzdDxpbnQ+KERPTVdpbmRvd0ZpbGVTeXN0ZW06OlBFUlNJU1RFTlQpID09IHN0YXRpY19jYXN0
PGludD4oRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50KSwgZW51bV9taXNtYXRjaCk7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRv
d0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0g
KgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICog
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0gKLSAqIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERPTVdpbmRvd0ZpbGVTeXN0ZW1faAot
I2RlZmluZSBET01XaW5kb3dGaWxlU3lzdGVtX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NV2luZG93OwotY2xhc3Mg
RW50cnlDYWxsYmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci1jbGFzcyBGaWxlU3lzdGVtQ2Fs
bGJhY2s7Ci0KLWNsYXNzIERPTVdpbmRvd0ZpbGVTeXN0ZW0gewotcHVibGljOgotCi0gICAgc3Rh
dGljIHZvaWQgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oRE9NV2luZG93KiwgaW50IHR5cGUsIGxv
bmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4pOwotICAgIHN0YXRpYyB2b2lkIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVT
eXN0ZW1VUkwoRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxi
YWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0KLSAgICAvLyBUaGV5IGFyZSBwbGFj
ZWQgaGVyZSBhbmQgaW4gYWxsIGNhcGl0YWwgbGV0dGVycyBzbyB0aGV5IGNhbiBiZSBjaGVja2Vk
IGFnYWluc3QgdGhlIGNvbnN0YW50cyBpbiB0aGUKLSAgICAvLyBJREwgYXQgY29tcGlsZSB0aW1l
LgotICAgIGVudW0gewotICAgICAgICBURU1QT1JBUlksCi0gICAgICAgIFBFUlNJU1RFTlQsCi0g
ICAgfTsKLQotcHJpdmF0ZToKLSAgICBET01XaW5kb3dGaWxlU3lzdGVtKCk7Ci0gICAgfkRPTVdp
bmRvd0ZpbGVTeXN0ZW0oKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERPTVdpbmRvd0ZpbGVTeXN0ZW1f
aApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVT
eXN0ZW0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAg
IENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBwYXJ0aWFsIGludGVyZmFjZSBET01XaW5kb3cg
ewotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7Ci0gICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9IDE7Ci0KLSAgICB2b2lkIHdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKHVuc2lnbmVkIHNob3J0IHR5cGUsIGxvbmcgbG9uZyBzaXplLAotICAgICAgICAgICAg
RmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFj
ayBlcnJvckNhbGxiYWNrKTsKLSAgICB2b2lkIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1V
UkwoRE9NU3RyaW5nIHVybCwKLSAgICAgICAgICAgIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotfTsKLQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RhdGFUcmFuc2Zlckl0ZW1GaWxlU3lz
dGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rh
dGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERhdGFUcmFuc2Zlckl0ZW1GaWxl
U3lzdGVtX2gKLSNkZWZpbmUgRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW1faAotCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBEYXRhVHJhbnNmZXJJdGVtOwotY2xhc3MgRW50cnk7Ci1j
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi1jbGFzcyBEYXRhVHJhbnNmZXJJdGVtRmls
ZVN5c3RlbSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnk+IHdlYmtpdEdl
dEFzRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERhdGFUcmFuc2Zlckl0ZW0qKTsKLQot
cHJpdmF0ZToKLSAgICBEYXRhVHJhbnNmZXJJdGVtRmlsZVN5c3RlbSgpOwotICAgIH5EYXRhVHJh
bnNmZXJJdGVtRmlsZVN5c3RlbSgpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGF0YVRyYW5zZmVySXRl
bUZpbGVTeXN0ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rh
dGFUcmFuc2Zlckl0ZW1GaWxlU3lzdGVtLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0YVRyYW5zZmVySXRlbUZpbGVTeXN0ZW0uaWRsCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGF0YVRy
YW5zZmVySXRlbUZpbGVTeXN0ZW0uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9REFUQV9UUkFOU0ZFUl9JVEVNUyZGSUxFX1NZU1RFTSwKLV0gcGFy
dGlhbCBpbnRlcmZhY2UgRGF0YVRyYW5zZmVySXRlbSB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRdIEVudHJ5IHdlYmtpdEdldEFzRW50cnkoKTsKLX07Ci0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5
LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXIuaCIKLSNpbmNsdWRl
ICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUg
IkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLURpcmVjdG9yeUVudHJ5OjpEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDog
RW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RGlyZWN0b3J5
UmVhZGVyPiBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVyKCkKLXsKLSAgICByZXR1cm4gRGly
ZWN0b3J5UmVhZGVyOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1bGxQYXRoKTsKLX0KLQotdm9p
ZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rp
b25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCi17Ci0gICAgRmls
ZVN5c3RlbUZsYWdzIGZsYWdzKG9wdGlvbnMpOwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5n
ZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
KQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5y
ZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJ
T05fRVJSKSk7Ci19Ci0KLXZvaWQgRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2tSZWYpCi17Ci0gICAgRmlsZVN5c3RlbUZsYWdzIGZsYWdzKG9wdGlvbnMpOwotICAg
IFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwot
ICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxhZ3MsIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2No
ZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUo
RmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBEaXJlY3Rv
cnlFbnRyeTo6cmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBj
b25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseSh0aGlz
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVtKCkt
PnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3Jl
YXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEaXJlY3RvcnlFbnRyeV9oCi0jZGVm
aW5lIERpcmVjdG9yeUVudHJ5X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgIkVudHJ5LmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUZsYWdzLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTUZp
bGVTeXN0ZW1CYXNlOwotY2xhc3MgRGlyZWN0b3J5UmVhZGVyOwotY2xhc3MgRW50cnlDYWxsYmFj
azsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNsYXNzIERp
cmVjdG9yeUVudHJ5IDogcHVibGljIEVudHJ5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlFbnRyeT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7Ci0g
ICAgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KLQotICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBjcmVhdGVSZWFkZXIoKTsKLSAg
ICB2b2lkIGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiwgUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAw
KTsKLSAgICB2b2lkIGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rp
b25hcnkmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiA9IDApOwotICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
PSAwKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5h
bWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGly
ZWN0b3J5RW50cnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeUVudHJ5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0
aW9uYWw9RklMRV9TWVNURU0sCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEpT
R2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIERp
cmVjdG9yeUVudHJ5IDogRW50cnkgewotICAgIERpcmVjdG9yeVJlYWRlciBjcmVhdGVSZWFkZXIo
KTsKLSAgICB2b2lkIGdldEZpbGUoW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZp
bmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIG9wdGlvbmFsIERpY3Rpb25hcnkgb3B0
aW9ucywgb3B0aW9uYWwgRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVy
cm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBnZXREaXJlY3RvcnkoW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5n
IHBhdGgsIG9wdGlvbmFsIERpY3Rpb25hcnkgb3B0aW9ucywgb3B0aW9uYWwgRW50cnlDYWxsYmFj
ayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
Ci0gICAgdm9pZCByZW1vdmVSZWN1cnNpdmVseShWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
LCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRy
eVN5bmMuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw5MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5o
IgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVy
U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMu
aCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVs
cGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGlyZWN0b3J5RW50cnlTeW5jOjpEaXJl
Y3RvcnlFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxs
UGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBEaXJlY3RvcnlF
bnRyeVN5bmM6OmNyZWF0ZVJlYWRlcihFeGNlcHRpb25Db2RlJikKLXsKLSAgICByZXR1cm4gRGly
ZWN0b3J5UmVhZGVyU3luYzo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Ci19Ci0K
LVBhc3NSZWZQdHI8RmlsZUVudHJ5U3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIEZpbGVTeXN0ZW1GbGFncyBmbGFncyhvcHRpb25z
KTsKLSAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3lu
Y0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldEZpbGUodGhpcywgcGF0
aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2so
KSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9F
UlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJf
Y2FzdDxGaWxlRW50cnlTeW5jPihoZWxwZXIuZ2V0UmVzdWx0KGVjKSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBGaWxlU3lzdGVtRmxhZ3MgZmxhZ3Mob3B0aW9u
cyk7Ci0gICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5
bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhp
cywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2Fs
bGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNB
VElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX3Bv
aW50ZXJfY2FzdDxEaXJlY3RvcnlFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKLX0K
LQotdm9pZCBEaXJlY3RvcnlFbnRyeVN5bmM6OnJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2VwdGlvbkNv
ZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBl
cihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3Rl
bS0+cmVtb3ZlUmVjdXJzaXZlbHkodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxw
ZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBoZWxwZXIu
Z2V0UmVzdWx0KGVjKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3lu
Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeVN5bmMuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeUVudHJ5U3luY19oCi0jZGVmaW5lIERpcmVjdG9y
eUVudHJ5U3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRy
eVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtRmxhZ3MuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlyZWN0b3J5
UmVhZGVyU3luYzsKLWNsYXNzIEZpbGVFbnRyeVN5bmM7Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5
U3luYyA6IHB1YmxpYyBFbnRyeVN5bmMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERpcmVjdG9yeUVudHJ5U3luYz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkp
OwotICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Ci0KLSAgICBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IGNyZWF0ZVJlYWRl
cihFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBnZXRGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gZ2V0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgRW50cnlTeW5jOwotICAgIERpcmVjdG9yeUVudHJ5U3luYyhQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBEaXJlY3RvcnlFbnRyeVN5
bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29u
ZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAg
IEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNl
IERpcmVjdG9yeUVudHJ5U3luYyA6IEVudHJ5U3luYyB7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0g
RGlyZWN0b3J5UmVhZGVyU3luYyBjcmVhdGVSZWFkZXIoKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9u
XSBGaWxlRW50cnlTeW5jIGdldEZpbGUoW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5k
ZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIERpY3Rpb25hcnkgZmxhZ3MpOwot
ICAgIFtSYWlzZXNFeGNlcHRpb25dIERpcmVjdG9yeUVudHJ5U3luYyBnZXREaXJlY3RvcnkoW1Ry
ZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3Ry
aW5nIHBhdGgsIERpY3Rpb25hcnkgZmxhZ3MpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQg
cmVtb3ZlUmVjdXJzaXZlbHkoKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcAkocmV2aXNpb24gMTU2Njkx
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJEaXJlY3RvcnlSZWFkZXIuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNp
bmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotRGlyZWN0b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKLSAgICA6IERpcmVjdG9yeVJlYWRlckJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19
Ci0KLXZvaWQgRGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXND
YWxsYmFjaz4gZW50cmllc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCi17Ci0gICAgaWYgKCFtX2hhc01vcmVFbnRyaWVzKSB7Ci0gICAgICAgIGZpbGVz
eXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlbnRyaWVzQ2FsbGJhY2ssIEVudHJ5QXJyYXk6OmNy
ZWF0ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmaWxlc3lzdGVtKCktPnJlYWRE
aXJlY3RvcnkodGhpcywgbV9mdWxsUGF0aCwgZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaAko
cmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeVJlYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERp
cmVjdG9yeVJlYWRlcl9oCi0jZGVmaW5lIERpcmVjdG9yeVJlYWRlcl9oCi0KLSNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRGly
ZWN0b3J5UmVhZGVyQmFzZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBFbnRy
aWVzQ2FsbGJhY2tzOwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLQotY2xhc3MgRGlyZWN0b3J5UmVh
ZGVyIDogcHVibGljIERpcmVjdG9yeVJlYWRlckJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeVJlYWRlcihmaWxlU3lzdGVtLCBmdWxsUGF0
aCkpOwotICAgIH0KLQotICAgIHZvaWQgcmVhZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+ID0gMCk7Ci0KLSAgICBET01GaWxlU3lz
dGVtKiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3Rl
bSo+KG1fZmlsZVN5c3RlbS5nZXQoKSk7IH0KLQotcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlSZWFk
ZXIoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
OwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8g
RGlyZWN0b3J5UmVhZGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAg
IENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEpTTm9TdGF0aWNUYWJsZXMsCi0gICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZQotXSBpbnRlcmZhY2UgRGlyZWN0b3J5UmVhZGVyIHsKLSAg
ICB2b2lkIHJlYWRFbnRyaWVzKEVudHJpZXNDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlv
bmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci19OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5o
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5UmVhZGVyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIERpcmVjdG9yeVJlYWRlckJhc2VfaAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJCYXNlX2gK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNl
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERpcmVjdG9yeVJlYWRlckJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXJl
Y3RvcnlSZWFkZXJCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVz
eXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTeXN0ZW0uZ2V0KCk7IH0KLSAgICB2b2lkIHNl
dEhhc01vcmVFbnRyaWVzKGJvb2wgaGFzTW9yZUVudHJpZXMpIHsgbV9oYXNNb3JlRW50cmllcyA9
IGhhc01vcmVFbnRyaWVzOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBEaXJlY3RvcnlSZWFkZXJCYXNl
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
ZnVsbFBhdGgpCi0gICAgICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgICAgICwg
bV9mdWxsUGF0aChmdWxsUGF0aCkKLSAgICAgICAgLCBtX2hhc01vcmVFbnRyaWVzKHRydWUpCi0g
ICAgewotICAgIH0KLQotICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVt
OwotCi0gICAgLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGF0aC4KLSAgICBTdHJpbmcgbV9mdWxsUGF0
aDsKLQotICAgIGJvb2wgbV9oYXNNb3JlRW50cmllczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERpcmVj
dG9yeVJlYWRlckJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAkocmV2aXNpb24gMTU2Njkx
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5
bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyU3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlF
bnRyeVN5bmMuaCIKLSNpbmNsdWRlICJFbnRyeUFycmF5U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5
U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0
aW9uLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotRGlyZWN0b3J5UmVhZGVyU3luYzo6RGlyZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KQotICAgIDogRGlyZWN0b3J5UmVhZGVyQmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0K
LQotUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4gRGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVu
dHJpZXMoRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIGlmICghbV9oYXNN
b3JlRW50cmllcykKLSAgICAgICAgcmV0dXJuIEVudHJ5QXJyYXlTeW5jOjpjcmVhdGUoKTsKLQot
ICAgIEVudHJpZXNTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNG
aWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHRoaXMs
IG1fZnVsbFBhdGgsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJh
Y2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElP
Tl9FUlI7Ci0gICAgICAgIHNldEhhc01vcmVFbnRyaWVzKGZhbHNlKTsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5
bmMuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKLSNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyU3lu
Y19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFk
ZXJCYXNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5QXJyYXlTeW5jOwotCi10eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwotCi1jbGFzcyBEaXJlY3RvcnlSZWFkZXJTeW5jIDogcHVibGljIERpcmVjdG9yeVJl
YWRlckJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRl
clN5bmM+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBj
b25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEaXJlY3RvcnlSZWFkZXJTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7Ci0gICAgfQotCi0g
ICAgUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4gcmVhZEVudHJpZXMoRXhjZXB0aW9uQ29kZSYp
OwotCi1wcml2YXRlOgotICAgIERpcmVjdG9yeVJlYWRlclN5bmMoUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERpcmVjdG9y
eVJlYWRlclN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeVJlYWRlclN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgSlNOb1N0YXRpY1RhYmxlcywK
LSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCi1dIGludGVyZmFjZSBEaXJlY3RvcnlSZWFk
ZXJTeW5jIHsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBFbnRyeUFycmF5U3luYyByZWFkRW50cmll
cygpOwotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVz
Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cmllc0NhbGxiYWNrLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBFbnRyaWVzQ2FsbGJhY2tfaAotI2RlZmluZSBFbnRyaWVzQ2Fs
bGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeUFycmF5OwotCi1j
bGFzcyBFbnRyaWVzQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyaWVzQ2FsbGJhY2s+
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5FbnRyaWVzQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlRXZlbnQoRW50cnlBcnJheSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyaWVz
Q2FsbGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJp
ZXNDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJpZXNDYWxsYmFjay5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi1dIGNh
bGxiYWNrIGludGVyZmFjZSBFbnRyaWVzQ2FsbGJhY2sgewotICAgIGJvb2xlYW4gaGFuZGxlRXZl
bnQoRW50cnlBcnJheSBlbnRyaWVzKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsOTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50cnkuaCIKLQotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUg
IkRpcmVjdG9yeUVudHJ5LmgiCi0jaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUg
IkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgotI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FbnRyeTo6RW50cnkoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
LSAgICA6IEVudHJ5QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotdm9pZCBFbnRy
eTo6Z2V0TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKLXsKLSAgICBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAg
ICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVy
cm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUikpOwotfQotCi12b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPm1v
dmUodGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spKQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFj
ay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQgRW50cnk6OmNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9y
eUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFja1JlZikgY29uc3QKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Y29weSh0aGlzLCBw
YXJlbnQuZ2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAg
ICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIp
KTsKLX0KLQotdm9pZCBFbnRyeTo6cmVtb3ZlKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikg
Y29uc3QKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNh
bGxiYWNrUmVmKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVD
YWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVy
cm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBFbnRyeTo6Z2V0UGFy
ZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFt
X2ZpbGVTeXN0ZW0tPmdldFBhcmVudCh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spKQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFj
ay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBF
bnRyeV9oCi0jZGVmaW5lIEVudHJ5X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2lu
Y2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJFbnRyeUJhc2UuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlyZWN0b3J5RW50cnk7Ci1jbGFzcyBFbnRyeUNhbGxi
YWNrOwotY2xhc3MgRW50cnlTeW5jOwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIE1ldGFk
YXRhQ2FsbGJhY2s7Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNsYXNzIEVudHJ5IDogcHVibGlj
IEVudHJ5QmFzZSB7Ci1wdWJsaWM6Ci0gICAgRE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERPTUZpbGVTeXN0ZW0qPihtX2ZpbGVTeXN0ZW0uZ2V0
KCkpOyB9Ci0KLSAgICB2b2lkIGdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrID0gMCk7Ci0gICAgdm9pZCBtb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4g
cGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPERpcmVj
dG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwotICAgIHZvaWQgcmVtb3ZlKFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKLSAgICB2b2lkIGdldFBhcmVudChQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0g
ICAgRW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVs
bFBhdGgpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRW50cnlfaApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9
RklMRV9TWVNURU0sCi0gICAgQ3VzdG9tVG9KU09iamVjdCwKLSAgICBKU05vU3RhdGljVGFibGVz
Ci1dIGludGVyZmFjZSBFbnRyeSB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNG
aWxlOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRGlyZWN0b3J5OwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGZ1bGxQYXRoOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01GaWxlU3lzdGVt
IGZpbGVzeXN0ZW07Ci0KLSAgICB2b2lkIGdldE1ldGFkYXRhKE1ldGFkYXRhQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAg
IHZvaWQgbW92ZVRvKERpcmVjdG9yeUVudHJ5IHBhcmVudCwgW1RyZWF0TnVsbEFzPU51bGxTdHJp
bmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUs
IG9wdGlvbmFsIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNh
bGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgY29weVRvKERpcmVjdG9yeUVudHJ5IHBh
cmVudCwgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmlu
Z10gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIEVudHJ5Q2FsbGJhY2sgc3VjY2Vz
c0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIERP
TVN0cmluZyB0b1VSTCgpOwotICAgIHZvaWQgcmVtb3ZlKFZvaWRDYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgdm9pZCBn
ZXRQYXJlbnQob3B0aW9uYWwgRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFs
IEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmNwcAkocmV2aXNpb24gMTU2Njkx
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRW50cnlBcnJheS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUVudHJ5QXJyYXk6OkVudHJ5QXJyYXkoKQotewotfQotCi1FbnRyeSogRW50
cnlBcnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPj0g
bV9lbnRyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZW50cmll
c1tpbmRleF0uZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgRW50cnlBcnJheV9oCi0jZGVmaW5lIEVudHJ5QXJyYXlfaAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cnkuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgRW50cnlBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJyYXk+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5PiBjcmVhdGUoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5KCkpOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7IH0K
LSAgICBFbnRyeSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdm9pZCBzZXQodW5z
aWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8RW50cnk+KTsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fZW50cmllcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBt
X2VudHJpZXMuY2xlYXIoKTsgfQotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8RW50cnk+IGVu
dHJ5KSB7IG1fZW50cmllcy5hcHBlbmQoZW50cnkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW50cnlB
cnJheSgpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxFbnRyeT4gPiBtX2VudHJpZXM7Ci19OwotCi19
IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYg
Ly8gRW50cnlBcnJheV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QXJyYXkuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxF
X1NZU1RFTSwKLSAgICBKU05vU3RhdGljVGFibGVzLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUKLV0gaW50ZXJmYWNlIEVudHJ5QXJyYXkgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBnZXR0ZXIgRW50cnkgaXRlbShbSXNJbmRleF0gdW5z
aWduZWQgbG9uZyBpbmRleCk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRW50cnlBcnJheVN5bmMuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgIkVudHJ5QXJyYXkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPEVu
dHJ5QXJyYXlTeW5jPiBFbnRyeUFycmF5U3luYzo6Y3JlYXRlKEVudHJ5QXJyYXkqIGVudHJpZXMp
Ci17Ci0gICAgUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBlbnRyaWVzU3luYyA9IGFkb3B0UmVmKG5l
dyBFbnRyeUFycmF5U3luYygpKTsKLSAgICBpZiAoZW50cmllcykgewotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZW50cmllcy0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgIGVu
dHJpZXNTeW5jLT5hcHBlbmQoRW50cnlTeW5jOjpjcmVhdGUoZW50cmllcy0+aXRlbShpKSkpOwot
ICAgIH0KLSAgICByZXR1cm4gZW50cmllc1N5bmMucmVsZWFzZSgpOwotfQotCi1FbnRyeUFycmF5
U3luYzo6RW50cnlBcnJheVN5bmMoKQotewotfQotCi1FbnRyeVN5bmMqIEVudHJ5QXJyYXlTeW5j
OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmIChpbmRleCA+PSBtX2VudHJp
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9lbnRyaWVzW2luZGV4
XS5nZXQoKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5j
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEVudHJ5QXJyYXlTeW5jX2gKLSNkZWZpbmUgRW50cnlBcnJheVN5bmNfaAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cnlTeW5jLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEVudHJ5QXJyYXk7Ci0KLWNsYXNzIEVudHJ5QXJyYXlTeW5jIDogcHVi
bGljIFJlZkNvdW50ZWQ8RW50cnlBcnJheVN5bmM+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFbnRyeUFycmF5U3luYz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRW50cnlBcnJheVN5bmMoKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RW50cnlBcnJheVN5bmM+IGNyZWF0ZShFbnRyeUFycmF5Kik7Ci0KLSAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuc2l6ZSgpOyB9Ci0gICAgRW50cnlT
eW5jKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fZW50cmllcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBt
X2VudHJpZXMuY2xlYXIoKTsgfQotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8RW50cnlTeW5j
PiBlbnRyeSkgeyBtX2VudHJpZXMuYXBwZW5kKGVudHJ5KTsgfQotCi1wcml2YXRlOgotICAgIEVu
dHJ5QXJyYXlTeW5jKCk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPEVudHJ5U3luYz4gPiBtX2VudHJp
ZXM7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAv
LyBFbnRyeUFycmF5U3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlBcnJheVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBD
b25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU05vU3RhdGljVGFibGVzLAotICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUKLV0gaW50ZXJmYWNlIEVudHJ5QXJyYXlTeW5jIHsKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgZ2V0dGVyIEVudHJ5
U3luYyBpdGVtKFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLX07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcAkocmV2aXNp
b24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJFbnRyeUJhc2UuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2lu
Y2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5j
bHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRW50cnlCYXNlOjpFbnRyeUJhc2UoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKLSAgICA6IG1fZmlsZVN5c3RlbShmaWxlU3lzdGVtKQotICAgICwgbV9mdWxsUGF0aChmdWxs
UGF0aCkKLSAgICAsIG1fbmFtZShET01GaWxlUGF0aDo6Z2V0TmFtZShmdWxsUGF0aCkpCi17Ci19
Ci0KLUVudHJ5QmFzZTo6fkVudHJ5QmFzZSgpCi17Ci19Ci0KLVN0cmluZyBFbnRyeUJhc2U6OnRv
VVJMKCkgY29uc3QKLXsKLSAgICAvLyBTb21lIGZpbGVzeXN0ZW0gdHlwZSBtYXkgbm90IHN1cHBv
cnQgdG9VUkwuCi0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnN1cHBvcnRzVG9VUkwoKSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fZmlsZVN5c3RlbS0+Y3JlYXRlRmls
ZVN5c3RlbVVSTCh0aGlzKS5zdHJpbmcoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVudHJ5QmFzZV9oCi0jZGVmaW5lIEVudHJ5QmFzZV9o
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwotY2xhc3MgRW50cnlTeW5jOwotCi0vLyBBIGNv
bW1vbiBiYXNlIGNsYXNzIGZvciBFbnRyeSBhbmQgRW50cnlTeW5jLgotY2xhc3MgRW50cnlCYXNl
IDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnlCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
RW50cnlCYXNlKCk7Ci0KLSAgICBET01GaWxlU3lzdGVtQmFzZSogZmlsZXN5c3RlbSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQotCi0gICAgdmlydHVhbCBib29sIGlzRmls
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgo
KSBjb25zdCB7IHJldHVybiBtX2Z1bGxQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBTdHJpbmcgdG9VUkwoKSBjb25zdDsKLQot
cHJvdGVjdGVkOgotICAgIEVudHJ5QmFzZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci0gICAgZnJpZW5kIGNsYXNzIEVudHJ5U3luYzsKLQot
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVtOwotCi0gICAgLy8gVGhp
cyBpcyBhIHZpcnR1YWwgcGF0aC4KLSAgICBTdHJpbmcgbV9mdWxsUGF0aDsKLQotICAgIFN0cmlu
ZyBtX25hbWU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNl
bmRpZiAvLyBFbnRyeUJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVudHJ5Q2FsbGJhY2tfaAotI2RlZmluZSBFbnRyeUNh
bGxiYWNrX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cnk7Ci0KLWNsYXNz
IEVudHJ5Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeUNhbGxiYWNrPiB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+RW50cnlDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVFdmVudChFbnRyeSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyeUNhbGxiYWNrX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFj
ay5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwot
ICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBjYWxsYmFjayBpbnRlcmZhY2UgRW50cnlD
YWxsYmFjayB7Ci0gICAgYm9vbGVhbiBoYW5kbGVFdmVudChFbnRyeSBlbnRyeSk7Ci19OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3lu
Yy5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50
cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFeGNl
cHRpb24uaCIKLSNpbmNsdWRlICJNZXRhZGF0YS5oIgotI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hl
bHBlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8RW50cnlTeW5jPiBF
bnRyeVN5bmM6OmNyZWF0ZShFbnRyeUJhc2UqIGVudHJ5KQotewotICAgIGlmIChlbnRyeS0+aXNG
aWxlKCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZUVudHJ5U3luYyhlbnRyeS0+
bV9maWxlU3lzdGVtLCBlbnRyeS0+bV9mdWxsUGF0aCkpOwotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRGlyZWN0b3J5RW50cnlTeW5jKGVudHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQ
YXRoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8TWV0YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEo
RXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIE1ldGFkYXRhU3luY0NhbGxi
YWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBp
ZiAoIW1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFj
aygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRp
b246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
ICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeVN5
bmM+IEVudHJ5U3luYzo6bW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBwYXJl
bnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAg
ZWMgPSAwOwotICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0t
PmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBw
YXJlbnQuZ2V0KCksIG5hbWUsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9y
Q2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElG
SUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gaGVscGVy
LmdldFJlc3VsdChlYyk7Ci19Ci0KLVBhc3NSZWZQdHI8RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNv
cHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIGVjID0gMDsKLSAgICBFbnRy
eVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0o
KSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywgcGFyZW50LmdldCgpLCBuYW1l
LCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Ci0g
ICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwot
fQotCi12b2lkIEVudHJ5U3luYzo6cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewot
ICAgIGVjID0gMDsKLSAgICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0
ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRo
aXMsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsK
LSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLVBh
c3NSZWZQdHI8RW50cnlTeW5jPiBFbnRyeVN5bmM6OmdldFBhcmVudCgpIGNvbnN0Ci17Ci0gICAg
Ly8gU3luYyB2ZXJpb24gb2YgZ2V0UGFyZW50IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucy4KLSAg
ICBTdHJpbmcgcGFyZW50UGF0aCA9IERPTUZpbGVQYXRoOjpnZXREaXJlY3RvcnkoZnVsbFBhdGgo
KSk7Ci0gICAgcmV0dXJuIERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwg
cGFyZW50UGF0aCk7Ci19Ci0KLUVudHJ5U3luYzo6RW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBF
bnRyeUJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlTeW5jLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBFbnRyeVN5bmNfaAotI2RlZmluZSBFbnRyeVN5bmNfaAotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKLSNpbmNsdWRl
ICJFbnRyeUJhc2UuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeVN5bmM7Ci1jbGFzcyBNZXRhZGF0YTsKLQot
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotY2xhc3MgRW50cnlTeW5jIDogcHVibGljIEVu
dHJ5QmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlTeW5jPiBjcmVh
dGUoRW50cnlCYXNlKik7Ci0KLSAgICBET01GaWxlU3lzdGVtU3luYyogZmlsZXN5c3RlbSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERPTUZpbGVTeXN0ZW1TeW5jKj4obV9maWxlU3lzdGVt
LmdldCgpKTsgfQotCi0gICAgUGFzc1JlZlB0cjxNZXRhZGF0YT4gZ2V0TWV0YWRhdGEoRXhjZXB0
aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8RW50cnlTeW5jPiBtb3ZlVG8oUGFzc1JlZlB0cjxE
aXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGNvcHlUbyhQYXNzUmVmUHRy
PERpcmVjdG9yeUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKLSAgICB2b2lkIHJlbW92ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0g
ICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGdldFBhcmVudCgpIGNvbnN0OwotCi1wcm90ZWN0ZWQ6
Ci0gICAgRW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJp
bmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2VuZGlmIC8vIEVudHJ5U3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25h
bD1GSUxFX1NZU1RFTSwKLSAgICBDdXN0b21Ub0pTT2JqZWN0LAotICAgIEpTTm9TdGF0aWNUYWJs
ZXMKLV0gaW50ZXJmYWNlIEVudHJ5U3luYyB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gaXNGaWxlOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRGlyZWN0b3J5Owot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGZ1bGxQYXRoOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01GaWxl
U3lzdGVtU3luYyBmaWxlc3lzdGVtOwotCi0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gTWV0YWRhdGEg
Z2V0TWV0YWRhdGEoKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBFbnRyeVN5bmMgbW92ZVRvKERp
cmVjdG9yeUVudHJ5U3luYyBwYXJlbnQsIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVu
ZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBuYW1lKTsKLSAgICBbUmFpc2VzRXhjZXB0
aW9uXSBFbnRyeVN5bmMgY29weVRvKERpcmVjdG9yeUVudHJ5U3luYyBwYXJlbnQsIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBu
YW1lKTsKLSAgICBET01TdHJpbmcgdG9VUkwoKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IHJlbW92ZSgpOwotICAgIERpcmVjdG9yeUVudHJ5U3luYyBnZXRQYXJlbnQoKTsKLX07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FcnJvckNhbGxiYWNr
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FcnJvckNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
RXJyb3JDYWxsYmFja19oCi0jZGVmaW5lIEVycm9yQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBGaWxlRXJyb3I7Ci0KLWNsYXNzIEVycm9yQ2FsbGJhY2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxFcnJvckNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RXJy
b3JDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlRXJyb3Iq
KSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jZW5kaWYgLy8gRXJyb3JDYWxsYmFja19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFj
ay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1G
SUxFX1NZU1RFTSwKLV0gY2FsbGJhY2sgaW50ZXJmYWNlIEVycm9yQ2FsbGJhY2sgewotICAgIGJv
b2xlYW4gaGFuZGxlRXZlbnQoRmlsZUVycm9yIGVycm9yKTsKLX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVDYWxsYmFjay5oCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmlsZUNhbGxiYWNrX2gK
LSNkZWZpbmUgRmlsZUNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
RmlsZTsKLQotY2xhc3MgRmlsZUNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZUNhbGxi
YWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZUNhbGxiYWNrKCkgeyB9Ci0gICAgdmly
dHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGUqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZUNhbGxiYWNr
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2su
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
Q2FsbGJhY2suaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotWwotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBjYWxsYmFjayBpbnRlcmZhY2Ug
RmlsZUNhbGxiYWNrIHsKLSAgICBib29sZWFuIGhhbmRsZUV2ZW50KEZpbGUgZmlsZSk7Ci19OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeS5j
cHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFj
ay5oIgotI2luY2x1ZGUgIkZpbGUuaCIKLSNpbmNsdWRlICJGaWxlQ2FsbGJhY2suaCIKLSNpbmNs
dWRlICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GaWxl
RW50cnk6OkZpbGVFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBh
dGgpCi17Ci19Ci0KLXZvaWQgRmlsZUVudHJ5OjpjcmVhdGVXcml0ZXIoUGFzc1JlZlB0cjxGaWxl
V3JpdGVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQotewotICAgIGZpbGVzeXN0ZW0oKS0+Y3JlYXRlV3JpdGVyKHRoaXMs
IHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLXZvaWQgRmlsZUVudHJ5Ojpm
aWxlKFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBmaWxlc3lzdGVtKCktPmNyZWF0
ZUZpbGUodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmgJKHJldmlzaW9uIDE1NjY5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlRW50cnlfaAotI2RlZmluZSBG
aWxlRW50cnlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cnku
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKLWNs
YXNzIEZpbGVDYWxsYmFjazsKLWNsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsKLQotY2xhc3MgRmls
ZUVudHJ5IDogcHVibGljIEVudHJ5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWxlRW50cnk+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGaWxlRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGNyZWF0ZVdyaXRlcihQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gPSAwKTsKLSAgICB2b2lkIGZpbGUoUGFzc1JlZlB0cjxGaWxlQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+ID0gMCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi1wcml2YXRlOgotICAgIEZpbGVFbnRy
eShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7
Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jZW5kaWYgLy8gRmlsZUVudHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlRW50cnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFs
PUZJTEVfU1lTVEVNLAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBKU0dlbmVy
YXRlVG9KU09iamVjdCwKLSAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBGaWxlRW50
cnkgOiBFbnRyeSB7Ci0gICAgdm9pZCBjcmVhdGVXcml0ZXIoRmlsZVdyaXRlckNhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAg
ICB2b2lkIGZpbGUoRmlsZUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JD
YWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuY3BwCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJGaWxlRW50cnlTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNs
dWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZVdyaXRlclN5bmMuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1GaWxlRW50cnlTeW5jOjpGaWxlRW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBF
bnRyeVN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8RmlsZT4g
RmlsZUVudHJ5U3luYzo6ZmlsZShFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICByZXR1cm4gZmls
ZXN5c3RlbSgpLT5jcmVhdGVGaWxlKHRoaXMsIGVjKTsKLX0KLQotUGFzc1JlZlB0cjxGaWxlV3Jp
dGVyU3luYz4gRmlsZUVudHJ5U3luYzo6Y3JlYXRlV3JpdGVyKEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIHJldHVybiBmaWxlc3lzdGVtKCktPmNyZWF0ZVdyaXRlcih0aGlzLCBlYyk7Ci19Ci0K
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuaAkocmV2aXNpb24gMTU2
NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlRW50cnlTeW5jX2gK
LSNkZWZpbmUgRmlsZUVudHJ5U3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNp
bmNsdWRlICJFbnRyeVN5bmMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRmlsZTsKLWNsYXNzIEZpbGVXcml0ZXJTeW5j
OwotCi1jbGFzcyBGaWxlRW50cnlTeW5jIDogcHVibGljIEVudHJ5U3luYyB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZUVudHJ5U3luYz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVFbnRyeVN5bmMoZmlsZVN5c3RlbSwg
ZnVsbFBhdGgpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotCi0gICAgUGFzc1JlZlB0cjxGaWxlPiBmaWxlKEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBQYXNzUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBjcmVhdGVXcml0ZXIoRXhjZXB0aW9u
Q29kZSYpOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBFbnRyeVN5bmM7Ci0gICAgRmls
ZUVudHJ5U3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBm
dWxsUGF0aCk7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNl
bmRpZiAvLyBGaWxlRW50cnlTeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAotICAg
IENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwK
LSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVy
ZmFjZSBGaWxlRW50cnlTeW5jIDogRW50cnlTeW5jIHsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBG
aWxlIGZpbGUoKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBGaWxlV3JpdGVyU3luYyBjcmVhdGVX
cml0ZXIoKTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmls
ZVN5c3RlbUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmlsZVN5c3RlbUNhbGxiYWNrX2gKLSNk
ZWZpbmUgRmlsZVN5c3RlbUNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgRE9NRmlsZVN5c3RlbTsKLQotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrIDogcHVibGljIFJl
ZkNvdW50ZWQ8RmlsZVN5c3RlbUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+Rmls
ZVN5c3RlbUNhbGxiYWNrKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KERPTUZp
bGVTeXN0ZW0qKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZVN5c3RlbUNhbGxiYWNrX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVt
Q2FsbGJhY2suaWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwz
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBjYWxsYmFjayBpbnRl
cmZhY2UgRmlsZVN5c3RlbUNhbGxiYWNrIHsKLSAgICBib29sZWFuIGhhbmRsZUV2ZW50KERPTUZp
bGVTeXN0ZW0gZmlsZVN5c3RlbSk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAkocmV2aXNp
b24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0
ZW1DYWxsYmFja3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI4NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLQotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUg
IkFzeW5jRmlsZVdyaXRlci5oIgotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAi
RE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1
ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgotI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVk
ZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgotI2luY2x1ZGUgIkZp
bGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0
ZW1DYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlLmgiCi0jaW5jbHVkZSAiRmls
ZVdyaXRlckJhc2VDYWxsYmFjay5oIgotI2luY2x1ZGUgIk1ldGFkYXRhLmgiCi0jaW5jbHVkZSAi
TWV0YWRhdGFDYWxsYmFjay5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
LSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotICAgIDogbV9lcnJvckNhbGxiYWNrKGVycm9y
Q2FsbGJhY2spCi17Ci19Ci0KLUZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjp+RmlsZVN5c3RlbUNh
bGxiYWNrc0Jhc2UoKQotewotfQotCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRG
YWlsKGludCBjb2RlKQotewotICAgIGlmIChtX2Vycm9yQ2FsbGJhY2spIHsKLSAgICAgICAgbV9l
cnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChGaWxlRXJyb3I6OmNyZWF0ZShzdGF0aWNfY2FzdDxG
aWxlRXJyb3I6OkVycm9yQ29kZT4oY29kZSkpLmdldCgpKTsKLSAgICAgICAgbV9lcnJvckNhbGxi
YWNrLmNsZWFyKCk7Ci0gICAgfQotfQotCi0vLyBFbnRyeUNhbGxiYWNrcyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVBhc3NP
d25QdHI8RW50cnlDYWxsYmFja3M+IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2ssIGZpbGVTeXN0ZW0sIGV4cGVjdGVkUGF0aCwgaXNEaXJlY3RvcnkpKTsKLX0KLQotRW50
cnlDYWxsYmFja3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhw
ZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KQotICAgIDogRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2UoZXJyb3JDYWxsYmFjaykKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFj
aykKLSAgICAsIG1fZmlsZVN5c3RlbShmaWxlU3lzdGVtKQotICAgICwgbV9leHBlY3RlZFBhdGgo
ZXhwZWN0ZWRQYXRoKQotICAgICwgbV9pc0RpcmVjdG9yeShpc0RpcmVjdG9yeSkKLXsKLX0KLQot
dm9pZCBFbnRyeUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpCi17Ci0gICAgaWYgKG1fc3VjY2Vzc0Nh
bGxiYWNrKSB7Ci0gICAgICAgIGlmIChtX2lzRGlyZWN0b3J5KQotICAgICAgICAgICAgbV9zdWNj
ZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KERpcmVjdG9yeUVudHJ5OjpjcmVhdGUobV9maWxlU3lz
dGVtLCBtX2V4cGVjdGVkUGF0aCkuZ2V0KCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVudHJ5OjpjcmVhdGUobV9maWxlU3lz
dGVtLCBtX2V4cGVjdGVkUGF0aCkuZ2V0KCkpOwotICAgIH0KLSAgICBtX3N1Y2Nlc3NDYWxsYmFj
ay5jbGVhcigpOwotfQotCi0vLyBFbnRyaWVzQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVBhc3NPd25QdHI8RW50
cmllc0NhbGxiYWNrcz4gRW50cmllc0NhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cmll
c0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiBkaXJlY3RvcnlSZWFk
ZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBF
bnRyaWVzQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgZGlyZWN0b3J5
UmVhZGVyLCBiYXNlUGF0aCkpOwotfQotCi1FbnRyaWVzQ2FsbGJhY2tzOjpFbnRyaWVzQ2FsbGJh
Y2tzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFk
ZXJCYXNlPiBkaXJlY3RvcnlSZWFkZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCi0gICAgOiBG
aWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2Fs
bGJhY2soc3VjY2Vzc0NhbGxiYWNrKQotICAgICwgbV9kaXJlY3RvcnlSZWFkZXIoZGlyZWN0b3J5
UmVhZGVyKQotICAgICwgbV9iYXNlUGF0aChiYXNlUGF0aCkKLSAgICAsIG1fZW50cmllcyhFbnRy
eUFycmF5OjpjcmVhdGUoKSkKLXsKLSAgICBBU1NFUlQobV9kaXJlY3RvcnlSZWFkZXIpOwotfQot
Ci12b2lkIEVudHJpZXNDYWxsYmFja3M6OmRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpCi17Ci0gICAgaWYgKGlzRGlyZWN0b3J5KQotICAg
ICAgICBtX2VudHJpZXMtPmFwcGVuZChEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKG1fZGlyZWN0b3J5
UmVhZGVyLT5maWxlc3lzdGVtKCksIERPTUZpbGVQYXRoOjphcHBlbmQobV9iYXNlUGF0aCwgbmFt
ZSkpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZW50cmllcy0+YXBwZW5kKEZpbGVFbnRyeTo6Y3Jl
YXRlKG1fZGlyZWN0b3J5UmVhZGVyLT5maWxlc3lzdGVtKCksIERPTUZpbGVQYXRoOjphcHBlbmQo
bV9iYXNlUGF0aCwgbmFtZSkpKTsKLX0KLQotdm9pZCBFbnRyaWVzQ2FsbGJhY2tzOjpkaWRSZWFk
RGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpCi17Ci0gICAgbV9kaXJlY3RvcnlSZWFkZXIt
PnNldEhhc01vcmVFbnRyaWVzKGhhc01vcmUpOwotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykK
LSAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZW50cmllcy5nZXQoKSk7
Ci19Ci0KLS8vIEZpbGVTeXN0ZW1DYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUGFzc093blB0cjxGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxGaWxlU3lzdGVt
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBGaWxlU3lzdGVtVHlwZSB0eXBlKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZVN5
c3RlbUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHR5cGUpKTsKLX0KLQotRmlsZVN5c3RlbUNhbGxiYWNrczo6RmlsZVN5c3Rl
bUNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCi0gICAgOiBGaWxlU3lzdGVt
Q2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3Vj
Y2Vzc0NhbGxiYWNrKQotICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCi0g
ICAgLCBtX3R5cGUodHlwZSkKLXsKLX0KLQotdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRP
cGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKLXsKLSAgICBpZiAobV9z
dWNjZXNzQ2FsbGJhY2spIHsKLSAgICAgICAgQVNTRVJUKGFzeW5jRmlsZVN5c3RlbSk7Ci0gICAg
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtID0gRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgbmFtZSwgbV90eXBlLCByb290VVJM
LCBhc3luY0ZpbGVTeXN0ZW0pOwotICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZl
bnQoZmlsZVN5c3RlbS5nZXQoKSk7Ci0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
bGVhcigpOwotICAgIH0KLSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwotfQotCi0vLyBS
ZXNvbHZlVVJJQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIEVycm9yQ2FsbGJhY2tX
cmFwcGVyIDogcHVibGljIEVycm9yQ2FsbGJhY2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2tXcmFwcGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaywgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCwgY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXJyb3JDYWxsYmFja1dy
YXBwZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCByb290LCBmaWxlUGF0aCkpOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlRXJyb3IqIGVycm9yKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKGVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yLT5jb2RlKCkg
PT0gRmlsZUVycm9yOjpUWVBFX01JU01BVENIX0VSUikKLSAgICAgICAgICAgIG1fcm9vdC0+Z2V0
RmlsZShtX2ZpbGVQYXRoLCBEaWN0aW9uYXJ5KCksIG1fc3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9y
Q2FsbGJhY2spOwotICAgICAgICBlbHNlIGlmIChtX2Vycm9yQ2FsbGJhY2spCi0gICAgICAgICAg
ICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEVycm9yQ2FsbGJhY2tXcmFwcGVyKFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QsIGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCi0gICAgICAgIDogbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0Nh
bGxiYWNrKQotICAgICAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQotICAgICAg
ICAsIG1fcm9vdChyb290KQotICAgICAgICAsIG1fZmlsZVBhdGgoZmlsZVBhdGgpCi0gICAgewot
ICAgICAgICBBU1NFUlQobV9yb290KTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RW50cnlDYWxsYmFj
az4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IG1fZXJyb3JD
YWxsYmFjazsKLSAgICBSZWZQdHI8RGlyZWN0b3J5RW50cnk+IG1fcm9vdDsKLSAgICBTdHJpbmcg
bV9maWxlUGF0aDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLVBhc3NPd25QdHI8UmVzb2x2ZVVS
SUNhbGxiYWNrcz4gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBSZXNvbHZlVVJJQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgZmlsZVBhdGgpKTsKLX0K
LQotUmVzb2x2ZVVSSUNhbGxiYWNrczo6UmVzb2x2ZVVSSUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBGaWxlU3lzdGVt
VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQotICAgIDogRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3ND
YWxsYmFjaykKLSAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQotICAgICwg
bV90eXBlKHR5cGUpCi0gICAgLCBtX2ZpbGVQYXRoKGZpbGVQYXRoKQotewotfQotCi12b2lkIFJl
c29sdmVVUklDYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxl
U3lzdGVtKQotewotICAgIEFTU0VSVChhc3luY0ZpbGVTeXN0ZW0pOwotICAgIFJlZlB0cjxEaXJl
Y3RvcnlFbnRyeT4gcm9vdCA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuZ2V0KCksIG5hbWUsIG1fdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKS0+
cm9vdCgpOwotICAgIHJvb3QtPmdldERpcmVjdG9yeShtX2ZpbGVQYXRoLCBEaWN0aW9uYXJ5KCks
IG1fc3VjY2Vzc0NhbGxiYWNrLCBFcnJvckNhbGxiYWNrV3JhcHBlcjo6Y3JlYXRlKG1fc3VjY2Vz
c0NhbGxiYWNrLCBtX2Vycm9yQ2FsbGJhY2ssIHJvb3QsIG1fZmlsZVBhdGgpKTsKLX0KLQotLy8g
TWV0YWRhdGFDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi1QYXNzT3duUHRyPE1ldGFkYXRhQ2FsbGJhY2tzPiBNZXRh
ZGF0YUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXRhZGF0YUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKTsKLX0KLQotTWV0YWRhdGFDYWxsYmFja3M6Ok1ldGFkYXRhQ2FsbGJh
Y2tzKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJh
Y2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0Nh
bGxiYWNrKQotewotfQotCi12b2lkIE1ldGFkYXRhQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEo
Y29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICBpZiAobV9zdWNjZXNzQ2FsbGJh
Y2spCi0gICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChNZXRhZGF0YTo6Y3Jl
YXRlKG1ldGFkYXRhKS5nZXQoKSk7Ci0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLX0K
LQotLy8gRmlsZVdyaXRlckJhc2VDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1QYXNzT3duUHRyPEZpbGVXcml0ZXJC
YXNlQ2FsbGJhY2tzPiBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8
RmlsZVdyaXRlckJhc2U+IGZpbGVXcml0ZXIsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNr
cyhmaWxlV3JpdGVyLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLX0KLQotRmls
ZVdyaXRlckJhc2VDYWxsYmFja3M6OkZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
RmlsZVdyaXRlckJhc2U+IGZpbGVXcml0ZXIsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCi0gICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAg
ICwgbV9maWxlV3JpdGVyKGZpbGVXcml0ZXIpCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNj
ZXNzQ2FsbGJhY2spCi17Ci19Ci0KLXZvaWQgRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OmRpZENy
ZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+IGFzeW5jRmlsZVdyaXRl
ciwgbG9uZyBsb25nIGxlbmd0aCkKLXsKLSAgICBtX2ZpbGVXcml0ZXItPmluaXRpYWxpemUoYXN5
bmNGaWxlV3JpdGVyLCBsZW5ndGgpOwotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAg
ICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fZmlsZVdyaXRlci5yZWxlYXNlKCku
Z2V0KCkpOwotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7Ci19Ci0KLS8vIFZvaWRDYWxs
YmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotUGFzc093blB0cjxWb2lkQ2FsbGJhY2tzPiBWb2lkQ2FsbGJhY2tzOjpj
cmVhdGUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVm9pZENhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKLX0KLQot
Vm9pZENhbGxiYWNrczo6Vm9pZENhbGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCi0g
ICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQotICAgICwgbV9zdWNj
ZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQotewotfQotCi12b2lkIFZvaWRDYWxsYmFja3M6
OmRpZFN1Y2NlZWQoKQotewotICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgbV9z
dWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7Ci0gICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xl
YXIoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RF
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmlsZVN5c3RlbUNhbGxiYWNrc19oCi0jZGVmaW5l
IEZpbGVTeXN0ZW1DYWxsYmFja3NfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSAiQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbVR5
cGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBBc3luY0ZpbGVXcml0ZXI7Ci1jbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKLWNs
YXNzIERpcmVjdG9yeVJlYWRlckJhc2U7Ci1jbGFzcyBFbnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBF
bnRyeUFycmF5OwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci1z
dHJ1Y3QgRmlsZU1ldGFkYXRhOwotY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwotY2xhc3MgRmls
ZVdyaXRlckJhc2U7Ci1jbGFzcyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrOwotY2xhc3MgTWV0YWRh
dGFDYWxsYmFjazsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBWb2lkQ2Fs
bGJhY2s7Ci0KLWNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIDogcHVibGljIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2UoKTsKLQotICAgIC8vIEZvciBFcnJvckNhbGxiYWNrLgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKGludCBjb2RlKTsKLQotICAgIC8vIE90aGVyIGNhbGxiYWNrIG1ldGhvZHMgYXJl
IGltcGxlbWVudGVkIGJ5IGVhY2ggc3ViY2xhc3MuCi0KLXByb3RlY3RlZDoKLSAgICBGaWxlU3lz
dGVtQ2FsbGJhY2tzQmFzZShQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOwotfTsKLQotLy8gU3ViY2xhc3NlcyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLWNsYXNzIEVudHJ5Q2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyeUNhbGxiYWNrcz4gY3Jl
YXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0
aCwgYm9vbCBpc0RpcmVjdG9yeSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKTsKLQot
cHJpdmF0ZToKLSAgICBFbnRyeUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpOwotICAgIFJlZlB0
cjxFbnRyeUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQdHI8RE9NRmlsZVN5
c3RlbUJhc2U+IG1fZmlsZVN5c3RlbTsKLSAgICBTdHJpbmcgbV9leHBlY3RlZFBhdGg7Ci0gICAg
Ym9vbCBtX2lzRGlyZWN0b3J5OwotfTsKLQotY2xhc3MgRW50cmllc0NhbGxiYWNrcyA6IHB1Ymxp
YyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8RW50cmllc0NhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNl
PiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJl
Y3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpOwotCi1wcml2
YXRlOgotICAgIEVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+
LCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKLSAgICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4gbV9kaXJl
Y3RvcnlSZWFkZXI7Ci0gICAgU3RyaW5nIG1fYmFzZVBhdGg7Ci0gICAgUmVmUHRyPEVudHJ5QXJy
YXk+IG1fZW50cmllczsKLX07Ci0KLWNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFja3MgOiBwdWJsaWMg
RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PEZpbGVTeXN0ZW1DYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFj
az4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBG
aWxlU3lzdGVtVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pOwotCi1wcml2YXRlOgotICAgIEZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc1JlZlB0cjxG
aWxlU3lzdGVtQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUpOwotICAgIFJlZlB0cjxGaWxlU3lzdGVtQ2Fs
bGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgRmlsZVN5c3RlbVR5cGUgbV90eXBl
OwotfTsKLQotY2xhc3MgUmVzb2x2ZVVSSUNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2Fs
bGJhY2tzQmFzZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UmVzb2x2ZVVSSUNh
bGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSwgY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVt
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4pOwotCi1wcml2YXRlOgotICAgIFJlc29sdmVVUklDYWxsYmFja3MoUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
LSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0gICAgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBG
aWxlU3lzdGVtVHlwZSBtX3R5cGU7Ci0gICAgU3RyaW5nIG1fZmlsZVBhdGg7Ci19OwotCi1jbGFz
cyBNZXRhZGF0YUNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TWV0YWRhdGFDYWxsYmFja3M+IGNyZWF0ZShQ
YXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpOwot
Ci1wcml2YXRlOgotICAgIE1ldGFkYXRhQ2FsbGJhY2tzKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxs
YmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIFJlZlB0cjxNZXRhZGF0YUNh
bGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLX07Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlQ2Fs
bGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQ
dHI8RmlsZVdyaXRlckJhc2U+LCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmls
ZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZyBsZW5ndGgpOwot
Ci1wcml2YXRlOgotICAgIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVdy
aXRlckJhc2U+LCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+KTsKLSAgICBSZWZQdHI8RmlsZVdyaXRlckJhc2U+IG1fZmlsZVdyaXRl
cjsKLSAgICBSZWZQdHI8RmlsZVdyaXRlckJhc2VDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7
Ci19OwotCi1jbGFzcyBWb2lkQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxWb2lkQ2FsbGJhY2tzPiBjcmVh
dGUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwotCi1wcml2YXRlOgotICAgIFZvaWRDYWxs
YmFja3MoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
KTsKLSAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAv
LyBGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlU3lzdGVtRmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUZsYWdzLmgJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtRmxhZ3MuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlU3lzdGVtRmxhZ3NfaAotI2Rl
ZmluZSBGaWxlU3lzdGVtRmxhZ3NfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSAiRGljdGlvbmFyeS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBGaWxl
U3lzdGVtRmxhZ3MgIHsKLSAgICBleHBsaWNpdCBGaWxlU3lzdGVtRmxhZ3MoY29uc3QgRGljdGlv
bmFyeSYgb3B0aW9ucykKLSAgICAgICAgOiBjcmVhdGUoZmFsc2UpCi0gICAgICAgICwgZXhjbHVz
aXZlKGZhbHNlKQotICAgIHsKLSAgICAgICAgb3B0aW9ucy5nZXQoImNyZWF0ZSIsIGNyZWF0ZSk7
Ci0gICAgICAgIG9wdGlvbnMuZ2V0KCJleGNsdXNpdmUiLCBleGNsdXNpdmUpOwotICAgIH0KLQot
ICAgIGJvb2wgY3JlYXRlOwotICAgIGJvb2wgZXhjbHVzaXZlOwotfTsKLQotfQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRmlsZVN5c3RlbUZsYWdzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVt
VHlwZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZVN5c3RlbVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBGaWxlU3lzdGVtVHlwZV9oCi0jZGVmaW5lIEZpbGVTeXN0ZW1UeXBlX2gKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGb3IgZmlsZSBz
eXN0ZW0gdHlwZXMgdXNlZCBpbiBGaWxlU3lzdGVtIEFQSS4KLWVudW0gRmlsZVN5c3RlbVR5cGUg
ewotICAgIEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5LAotICAgIEZpbGVTeXN0ZW1UeXBlUGVyc2lz
dGVudCwKLQotICAgIC8vIFRyYW5zaWVudCBpc29sYXRlZCBub24tc2FuZGJveGVkIGZpbGVzeXN0
ZW0uCi0gICAgRmlsZVN5c3RlbVR5cGVJc29sYXRlZCwKLX07Ci0KLWVudW0gRmlsZVN5c3RlbVN5
bmNocm9ub3VzVHlwZSB7Ci0gICAgQXN5bmNocm9ub3VzRmlsZVN5c3RlbSwKLSAgICBTeW5jaHJv
bm91c0ZpbGVTeXN0ZW0sCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlU3lzdGVtVHlwZV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuY3Bw
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZVdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzI2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmlsZVdy
aXRlci5oIgotCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiQmxvYi5o
IgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNp
bmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgotI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBjb25zdCBpbnQga01heFJlY3Vyc2lvbkRlcHRoID0gMzsKLXN0YXRpYyBjb25zdCBkb3VibGUg
cHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7Ci0KLVBhc3NSZWZQdHI8RmlsZVdy
aXRlcj4gRmlsZVdyaXRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
Ci17Ci0gICAgUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIoYWRvcHRSZWYobmV3IEZpbGVX
cml0ZXIoY29udGV4dCkpKTsKLSAgICBmaWxlV3JpdGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAg
ICByZXR1cm4gZmlsZVdyaXRlci5yZWxlYXNlKCk7Ci19Ci0KLUZpbGVXcml0ZXI6OkZpbGVXcml0
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IEFjdGl2ZURPTU9iamVj
dChjb250ZXh0KQotICAgICwgbV9yZWFkeVN0YXRlKElOSVQpCi0gICAgLCBtX29wZXJhdGlvbklu
UHJvZ3Jlc3MoT3BlcmF0aW9uTm9uZSkKLSAgICAsIG1fcXVldWVkT3BlcmF0aW9uKE9wZXJhdGlv
bk5vbmUpCi0gICAgLCBtX2J5dGVzV3JpdHRlbigwKQotICAgICwgbV9ieXRlc1RvV3JpdGUoMCkK
LSAgICAsIG1fdHJ1bmNhdGVMZW5ndGgoLTEpCi0gICAgLCBtX251bUFib3J0cygwKQotICAgICwg
bV9yZWN1cnNpb25EZXB0aCgwKQotICAgICwgbV9sYXN0UHJvZ3Jlc3NOb3RpZmljYXRpb25UaW1l
TVMoMCkKLXsKLX0KLQotRmlsZVdyaXRlcjo6fkZpbGVXcml0ZXIoKQotewotICAgIEFTU0VSVCgh
bV9yZWN1cnNpb25EZXB0aCk7Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HKQotICAg
ICAgICBzdG9wKCk7Ci19Ci0KLWJvb2wgRmlsZVdyaXRlcjo6Y2FuU3VzcGVuZCgpIGNvbnN0Ci17
Ci0gICAgLy8gRklYTUU6IEl0IGlzIG5vdCBjdXJyZW50bHkgcG9zc2libGUgdG8gc3VzcGVuZCBh
IEZpbGVXcml0ZXIsIHNvIHBhZ2VzIHdpdGggRmlsZVdyaXRlciBjYW4gbm90IGdvIGludG8gcGFn
ZSBjYWNoZS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6c3RvcCgp
Ci17Ci0gICAgLy8gTWFrZSBzdXJlIHdlJ3ZlIGFjdHVhbGx5IGdvdCBzb21ldGhpbmcgdG8gc3Rv
cCwgYW5kIGhhdmVuJ3QgYWxyZWFkeSBjYWxsZWQgYWJvcnQoKS4KLSAgICBpZiAoIXdyaXRlcigp
IHx8IG1fcmVhZHlTdGF0ZSAhPSBXUklUSU5HKQotICAgICAgICByZXR1cm47Ci0gICAgZG9PcGVy
YXRpb24oT3BlcmF0aW9uQWJvcnQpOwotICAgIG1fcmVhZHlTdGF0ZSA9IERPTkU7Ci19Ci0KLXZv
aWQgRmlsZVdyaXRlcjo6d3JpdGUoQmxvYiogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgQVNTRVJUKG1fdHJ1
bmNhdGVMZW5ndGggPT0gLTEpOwotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gV1JJVElORykgewot
ICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OklOVkFMSURfU1RBVEVfRVJSLCBlYyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFkYXRhKSB7Ci0gICAgICAgIHNldEVycm9yKEZp
bGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIsIGVjKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAobV9yZWN1cnNpb25EZXB0aCA+IGtNYXhSZWN1cnNpb25EZXB0aCkgewotICAgICAg
ICBzZXRFcnJvcihGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUiwgZWMpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgbV9ibG9iQmVpbmdXcml0dGVuID0gZGF0YTsKLSAgICBtX3JlYWR5U3Rh
dGUgPSBXUklUSU5HOwotICAgIG1fYnl0ZXNXcml0dGVuID0gMDsKLSAgICBtX2J5dGVzVG9Xcml0
ZSA9IGRhdGEtPnNpemUoKTsKLSAgICBBU1NFUlQobV9xdWV1ZWRPcGVyYXRpb24gPT0gT3BlcmF0
aW9uTm9uZSk7Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBPcGVyYXRpb25Ob25l
KSB7Ci0gICAgICAgIC8vIFdlIG11c3QgYmUgd2FpdGluZyBmb3IgYW4gYWJvcnQgdG8gY29tcGxl
dGUsIHNpbmNlIG1fcmVhZHlTdGF0ZSB3YXNuJ3QgV1JJVElORy4KLSAgICAgICAgQVNTRVJUKG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25BYm9ydCk7Ci0gICAgICAgIG1fcXVldWVk
T3BlcmF0aW9uID0gT3BlcmF0aW9uV3JpdGU7Ci0gICAgfSBlbHNlCi0gICAgICAgIGRvT3BlcmF0
aW9uKE9wZXJhdGlvbldyaXRlKTsKLQotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkud3JpdGVz
dGFydEV2ZW50KTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpzZWVrKGxvbmcgbG9uZyBwb3NpdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBpZiAo
bV9yZWFkeVN0YXRlID09IFdSSVRJTkcpIHsKLSAgICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpJ
TlZBTElEX1NUQVRFX0VSUiwgZWMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOwotICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJhdGlv
biA9PSBPcGVyYXRpb25Ob25lKTsKLSAgICBzZWVrSW50ZXJuYWwocG9zaXRpb24pOwotfQotCi12
b2lkIEZpbGVXcml0ZXI6OnRydW5jYXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBBU1NFUlQobV90cnVuY2F0ZUxl
bmd0aCA9PSAtMSk7Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5HIHx8IHBvc2l0aW9u
IDwgMCkgewotICAgICAgICBzZXRFcnJvcihGaWxlRXJyb3I6OklOVkFMSURfU1RBVEVfRVJSLCBl
Yyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fcmVjdXJzaW9uRGVwdGggPiBr
TWF4UmVjdXJzaW9uRGVwdGgpIHsKLSAgICAgICAgc2V0RXJyb3IoRmlsZUVycm9yOjpTRUNVUklU
WV9FUlIsIGVjKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcmVhZHlTdGF0ZSA9
IFdSSVRJTkc7Ci0gICAgbV9ieXRlc1dyaXR0ZW4gPSAwOwotICAgIG1fYnl0ZXNUb1dyaXRlID0g
MDsKLSAgICBtX3RydW5jYXRlTGVuZ3RoID0gcG9zaXRpb247Ci0gICAgQVNTRVJUKG1fcXVldWVk
T3BlcmF0aW9uID09IE9wZXJhdGlvbk5vbmUpOwotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgIT0gT3BlcmF0aW9uTm9uZSkgewotICAgICAgICAvLyBXZSBtdXN0IGJlIHdhaXRpbmcgZm9y
IGFuIGFib3J0IHRvIGNvbXBsZXRlLCBzaW5jZSBtX3JlYWR5U3RhdGUgd2Fzbid0IFdSSVRJTkcu
Ci0gICAgICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uQWJvcnQp
OwotICAgICAgICBtX3F1ZXVlZE9wZXJhdGlvbiA9IE9wZXJhdGlvblRydW5jYXRlOwotICAgIH0g
ZWxzZQotICAgICAgICBkb09wZXJhdGlvbihPcGVyYXRpb25UcnVuY2F0ZSk7Ci0gICAgZmlyZUV2
ZW50KGV2ZW50TmFtZXMoKS53cml0ZXN0YXJ0RXZlbnQpOwotfQotCi12b2lkIEZpbGVXcml0ZXI6
OmFib3J0KEV4Y2VwdGlvbkNvZGUmKQotewotICAgIEFTU0VSVCh3cml0ZXIoKSk7Ci0gICAgaWYg
KG1fcmVhZHlTdGF0ZSAhPSBXUklUSU5HKQotICAgICAgICByZXR1cm47Ci0gICAgKyttX251bUFi
b3J0czsKLQotICAgIGRvT3BlcmF0aW9uKE9wZXJhdGlvbkFib3J0KTsKLSAgICBzaWduYWxDb21w
bGV0aW9uKEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpkaWRX
cml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpCi17Ci0gICAgaWYgKG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25BYm9ydCkgewotICAgICAgICBjb21wbGV0ZUFib3J0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBX
UklUSU5HKTsKLSAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0gICAgQVNTRVJU
KG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVyYXRpb25Xcml0ZSk7Ci0gICAgQVNTRVJUKCFt
X2J5dGVzVG9Xcml0ZSB8fCBieXRlcyArIG1fYnl0ZXNXcml0dGVuID4gMCk7Ci0gICAgQVNTRVJU
KGJ5dGVzICsgbV9ieXRlc1dyaXR0ZW4gPD0gbV9ieXRlc1RvV3JpdGUpOwotICAgIG1fYnl0ZXNX
cml0dGVuICs9IGJ5dGVzOwotICAgIEFTU0VSVCgobV9ieXRlc1dyaXR0ZW4gPT0gbV9ieXRlc1Rv
V3JpdGUpIHx8ICFjb21wbGV0ZSk7Ci0gICAgc2V0UG9zaXRpb24ocG9zaXRpb24oKSArIGJ5dGVz
KTsKLSAgICBpZiAocG9zaXRpb24oKSA+IGxlbmd0aCgpKQotICAgICAgICBzZXRMZW5ndGgocG9z
aXRpb24oKSk7Ci0gICAgaWYgKGNvbXBsZXRlKSB7Ci0gICAgICAgIG1fYmxvYkJlaW5nV3JpdHRl
bi5jbGVhcigpOwotICAgICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBPcGVyYXRpb25Ob25l
OwotICAgIH0KLQotICAgIGludCBudW1BYm9ydHMgPSBtX251bUFib3J0czsKLSAgICAvLyBXZSBj
b3VsZCBnZXQgYW4gYWJvcnQgaW4gdGhlIGhhbmRsZXIgZm9yIHRoaXMgZXZlbnQuIElmIHdlIGRv
LCBpdCdzCi0gICAgLy8gYWxyZWFkeSBoYW5kbGVkIHRoZSBjbGVhbnVwIGFuZCBzaWduYWxDb21w
bGV0aW9uIGNhbGwuCi0gICAgZG91YmxlIG5vdyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZU1TKCk7Ci0gICAgaWYgKGNvbXBsZXRlIHx8ICFtX2xhc3RQcm9ncmVzc05vdGlmaWNhdGlvblRp
bWVNUyB8fCAobm93IC0gbV9sYXN0UHJvZ3Jlc3NOb3RpZmljYXRpb25UaW1lTVMgPiBwcm9ncmVz
c05vdGlmaWNhdGlvbkludGVydmFsTVMpKSB7Ci0gICAgICAgIG1fbGFzdFByb2dyZXNzTm90aWZp
Y2F0aW9uVGltZU1TID0gbm93OwotICAgICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnByb2dy
ZXNzRXZlbnQpOwotICAgIH0KLQotICAgIGlmIChjb21wbGV0ZSkgewotICAgICAgaWYgKG51bUFi
b3J0cyA9PSBtX251bUFib3J0cykKLSAgICAgICAgICBzaWduYWxDb21wbGV0aW9uKEZpbGVFcnJv
cjo6T0spOwotICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgfQotfQotCi12
b2lkIEZpbGVXcml0ZXI6OmRpZFRydW5jYXRlKCkKLXsKLSAgICBpZiAobV9vcGVyYXRpb25JblBy
b2dyZXNzID09IE9wZXJhdGlvbkFib3J0KSB7Ci0gICAgICAgIGNvbXBsZXRlQWJvcnQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09
IE9wZXJhdGlvblRydW5jYXRlKTsKLSAgICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA+PSAwKTsK
LSAgICBzZXRMZW5ndGgobV90cnVuY2F0ZUxlbmd0aCk7Ci0gICAgaWYgKHBvc2l0aW9uKCkgPiBs
ZW5ndGgoKSkKLSAgICAgICAgc2V0UG9zaXRpb24obGVuZ3RoKCkpOwotICAgIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9IE9wZXJhdGlvbk5vbmU7Ci0gICAgc2lnbmFsQ29tcGxldGlvbihGaWxlRXJy
b3I6Ok9LKTsKLSAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLX0KLQotdm9pZCBGaWxl
V3JpdGVyOjpkaWRGYWlsKEZpbGVFcnJvcjo6RXJyb3JDb2RlIGNvZGUpCi17Ci0gICAgQVNTRVJU
KG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBPcGVyYXRpb25Ob25lKTsKLSAgICBBU1NFUlQoY29k
ZSAhPSBGaWxlRXJyb3I6Ok9LKTsKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9w
ZXJhdGlvbkFib3J0KSB7Ci0gICAgICAgIGNvbXBsZXRlQWJvcnQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBBU1NFUlQoY29kZSAhPSBGaWxlRXJyb3I6OkFCT1JUX0VSUik7Ci0gICAg
QVNTRVJUKG1fcXVldWVkT3BlcmF0aW9uID09IE9wZXJhdGlvbk5vbmUpOwotICAgIEFTU0VSVCht
X3JlYWR5U3RhdGUgPT0gV1JJVElORyk7Ci0gICAgbV9ibG9iQmVpbmdXcml0dGVuLmNsZWFyKCk7
Ci0gICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gT3BlcmF0aW9uTm9uZTsKLSAgICBzaWduYWxD
b21wbGV0aW9uKGNvZGUpOwotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotfQotCi12
b2lkIEZpbGVXcml0ZXI6OmNvbXBsZXRlQWJvcnQoKQotewotICAgIEFTU0VSVChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uQWJvcnQpOwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9IE9wZXJhdGlvbk5vbmU7Ci0gICAgT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcXVldWVkT3Bl
cmF0aW9uOwotICAgIG1fcXVldWVkT3BlcmF0aW9uID0gT3BlcmF0aW9uTm9uZTsKLSAgICBkb09w
ZXJhdGlvbihvcGVyYXRpb24pOwotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotfQot
Ci12b2lkIEZpbGVXcml0ZXI6OmRvT3BlcmF0aW9uKE9wZXJhdGlvbiBvcGVyYXRpb24pCi17Ci0g
ICAgc3dpdGNoIChvcGVyYXRpb24pIHsKLSAgICBjYXNlIE9wZXJhdGlvbldyaXRlOgotICAgICAg
ICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvbk5vbmUpOwotICAgICAg
ICBBU1NFUlQobV90cnVuY2F0ZUxlbmd0aCA9PSAtMSk7Ci0gICAgICAgIEFTU0VSVChtX2Jsb2JC
ZWluZ1dyaXR0ZW4uZ2V0KCkpOwotICAgICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFdSSVRJ
TkcpOwotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIHdyaXRlcigp
LT53cml0ZShwb3NpdGlvbigpLCBtX2Jsb2JCZWluZ1dyaXR0ZW4uZ2V0KCkpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE9wZXJhdGlvblRydW5jYXRlOgotICAgICAgICBBU1NFUlQobV9vcGVy
YXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvbk5vbmUpOwotICAgICAgICBBU1NFUlQobV90cnVu
Y2F0ZUxlbmd0aCA+PSAwKTsKLSAgICAgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA9PSBXUklUSU5H
KTsKLSAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAgICB3cml0ZXIoKS0+
dHJ1bmNhdGUobV90cnVuY2F0ZUxlbmd0aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3Bl
cmF0aW9uTm9uZToKLSAgICAgICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBPcGVy
YXRpb25Ob25lKTsKLSAgICAgICAgQVNTRVJUKG1fdHJ1bmNhdGVMZW5ndGggPT0gLTEpOwotICAg
ICAgICBBU1NFUlQoIW1fYmxvYkJlaW5nV3JpdHRlbi5nZXQoKSk7Ci0gICAgICAgIEFTU0VSVCht
X3JlYWR5U3RhdGUgPT0gRE9ORSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3BlcmF0aW9u
QWJvcnQ6Ci0gICAgICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gT3BlcmF0aW9uV3Jp
dGUgfHwgbV9vcGVyYXRpb25JblByb2dyZXNzID09IE9wZXJhdGlvblRydW5jYXRlKQotICAgICAg
ICAgICAgd3JpdGVyKCktPmFib3J0KCk7Ci0gICAgICAgIGVsc2UgaWYgKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyAhPSBPcGVyYXRpb25BYm9ydCkKLSAgICAgICAgICAgIG9wZXJhdGlvbiA9IE9wZXJh
dGlvbk5vbmU7Ci0gICAgICAgIG1fcXVldWVkT3BlcmF0aW9uID0gT3BlcmF0aW9uTm9uZTsKLSAg
ICAgICAgbV9ibG9iQmVpbmdXcml0dGVuLmNsZWFyKCk7Ci0gICAgICAgIG1fdHJ1bmNhdGVMZW5n
dGggPSAtMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEFTU0VSVChtX3F1ZXVlZE9wZXJh
dGlvbiA9PSBPcGVyYXRpb25Ob25lKTsKLSAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBvcGVy
YXRpb247Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6c2lnbmFsQ29tcGxldGlvbihGaWxlRXJyb3I6
OkVycm9yQ29kZSBjb2RlKQotewotICAgIG1fcmVhZHlTdGF0ZSA9IERPTkU7Ci0gICAgbV90cnVu
Y2F0ZUxlbmd0aCA9IC0xOwotICAgIGlmIChGaWxlRXJyb3I6Ok9LICE9IGNvZGUpIHsKLSAgICAg
ICAgbV9lcnJvciA9IEZpbGVFcnJvcjo6Y3JlYXRlKGNvZGUpOwotICAgICAgICBpZiAoRmlsZUVy
cm9yOjpBQk9SVF9FUlIgPT0gY29kZSkKLSAgICAgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVz
KCkuYWJvcnRFdmVudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpcmVFdmVudChldmVu
dE5hbWVzKCkuZXJyb3JFdmVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZpcmVFdmVudChldmVu
dE5hbWVzKCkud3JpdGVFdmVudCk7Ci0gICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS53cml0ZWVu
ZEV2ZW50KTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyOjpmaXJlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlKQotewotICAgICsrbV9yZWN1cnNpb25EZXB0aDsKLSAgICBkaXNwYXRjaEV2ZW50
KFByb2dyZXNzRXZlbnQ6OmNyZWF0ZSh0eXBlLCB0cnVlLCBtX2J5dGVzV3JpdHRlbiwgbV9ieXRl
c1RvV3JpdGUpKTsKLSAgICAtLW1fcmVjdXJzaW9uRGVwdGg7Ci0gICAgQVNTRVJUKG1fcmVjdXJz
aW9uRGVwdGggPj0gMCk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRlcjo6c2V0RXJyb3IoRmlsZUVycm9y
OjpFcnJvckNvZGUgZXJyb3JDb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IEZp
bGVFeGNlcHRpb246OkVycm9yQ29kZVRvRXhjZXB0aW9uQ29kZShlcnJvckNvZGUpOwotICAgIG1f
ZXJyb3IgPSBGaWxlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmgJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaWxlV3JpdGVyX2gKLSNk
ZWZpbmUgRmlsZVdyaXRlcl9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRl
ICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIK
LSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEJsb2I7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi0vLyBGSVhNRTog
VGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTIxNzQ3PiBpcyBmaXhlZC4KLWNsYXNzIEZpbGVXcml0ZXIgOiBwdWJsaWMgRmlsZVdyaXRl
ckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgQXN5bmNGaWxlV3JpdGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwotCi0gICAgZW51bSBSZWFkeVN0YXRlIHsKLSAgICAgICAgSU5JVCA9IDAsCi0gICAgICAgIFdS
SVRJTkcgPSAxLAotICAgICAgICBET05FID0gMgotICAgIH07Ci0KLSAgICB2b2lkIHdyaXRlKEJs
b2IqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYWJvcnQoRXhjZXB0aW9uQ29kZSYpOwotICAgIFJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQotICAgIEZp
bGVFcnJvciogZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9Ci0KLSAgICAv
LyBBc3luY0ZpbGVXcml0ZXJDbGllbnQKLSAgICB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRl
cywgYm9vbCBjb21wbGV0ZSk7Ci0gICAgdm9pZCBkaWRUcnVuY2F0ZSgpOwotICAgIHZvaWQgZGlk
RmFpbChGaWxlRXJyb3I6OkVycm9yQ29kZSk7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBP
VkVSUklERSBGSU5BTCB7IHJldHVybiBGaWxlV3JpdGVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBl
OyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8RmlsZVdy
aXRlckJhc2U+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxGaWxlV3JpdGVyQmFzZT46OmRl
cmVmOwotCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3cml0ZXN0YXJ0KTsK
LSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHByb2dyZXNzKTsKLSAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdyaXRlKTsKLSAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGFib3J0KTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGVycm9yKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdyaXRlZW5k
KTsKLQotcHJpdmF0ZToKLSAgICBlbnVtIE9wZXJhdGlvbiB7Ci0gICAgICAgIE9wZXJhdGlvbk5v
bmUsCi0gICAgICAgIE9wZXJhdGlvbldyaXRlLAotICAgICAgICBPcGVyYXRpb25UcnVuY2F0ZSwK
LSAgICAgICAgT3BlcmF0aW9uQWJvcnQKLSAgICB9OwotCi0gICAgRmlsZVdyaXRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7Ci0KLSAgICB2aXJ0dWFsIH5GaWxlV3JpdGVyKCk7Ci0KLSAgICAv
LyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7Ci0KLSAgICAvLyBFdmVu
dFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFM
IHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURF
IEZJTkFMIHsgZGVyZWYoKTsgfQotCi0gICAgdm9pZCBjb21wbGV0ZUFib3J0KCk7Ci0KLSAgICB2
b2lkIGRvT3BlcmF0aW9uKE9wZXJhdGlvbik7Ci0KLSAgICB2b2lkIHNpZ25hbENvbXBsZXRpb24o
RmlsZUVycm9yOjpFcnJvckNvZGUpOwotCi0gICAgdm9pZCBmaXJlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlKTsKLQotICAgIHZvaWQgc2V0RXJyb3IoRmlsZUVycm9yOjpFcnJvckNvZGUs
IEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIFJlZlB0cjxGaWxlRXJyb3I+IG1fZXJyb3I7Ci0gICAg
UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci0gICAgT3BlcmF0aW9uIG1fb3BlcmF0aW9uSW5Qcm9n
cmVzczsKLSAgICBPcGVyYXRpb24gbV9xdWV1ZWRPcGVyYXRpb247Ci0gICAgbG9uZyBsb25nIG1f
Ynl0ZXNXcml0dGVuOwotICAgIGxvbmcgbG9uZyBtX2J5dGVzVG9Xcml0ZTsKLSAgICBsb25nIGxv
bmcgbV90cnVuY2F0ZUxlbmd0aDsKLSAgICBsb25nIGxvbmcgbV9udW1BYm9ydHM7Ci0gICAgbG9u
ZyBsb25nIG1fcmVjdXJzaW9uRGVwdGg7Ci0gICAgZG91YmxlIG1fbGFzdFByb2dyZXNzTm90aWZp
Y2F0aW9uVGltZU1TOwotICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2JCZWluZ1dyaXR0ZW47Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNlbmRpZiAvLyBGaWxlV3JpdGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0
aW9uYWw9RklMRV9TWVNURU0sCi0gICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIEV2ZW50VGFyZ2V0
LAotICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIEZpbGVXcml0ZXIgewotICAgIC8v
IHJlYWR5IHN0YXRlcwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IElOSVQgPSAwOwotICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IFdSSVRJTkcgPSAxOwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IERPTkUgPSAyOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0
YXRlOwotCi0gICAgLy8gYXN5bmMgd3JpdGUvbW9kaWZ5IG1ldGhvZHMKLSAgICBbUmFpc2VzRXhj
ZXB0aW9uXSB2b2lkIHdyaXRlKEJsb2IgZGF0YSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCBzZWVrKGxvbmcgbG9uZyBwb3NpdGlvbik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCB0
cnVuY2F0ZShsb25nIGxvbmcgc2l6ZSk7Ci0KLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGFi
b3J0KCk7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRmlsZUVycm9yIGVycm9yOwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgcG9zaXRpb247Ci0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbndyaXRlc3RhcnQ7Ci0gICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25wcm9ncmVzczsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndyaXRl
OwotICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7Ci0gICAgICAg
ICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLSAgICAgICAgICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndyaXRlZW5kOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50
ZXJmYWNlCi0gICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBi
b29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZ0KTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZS5jcHAJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3Jp
dGVyQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxlV3JpdGVy
QmFzZS5oIgotCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiQmxvYi5o
IgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNp
bmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZpbGVXcml0ZXJCYXNlOjp+RmlsZVdyaXRlckJhc2UoKQot
ewotfQotCi12b2lkIEZpbGVXcml0ZXJCYXNlOjppbml0aWFsaXplKFBhc3NPd25QdHI8QXN5bmNG
aWxlV3JpdGVyPiB3cml0ZXIsIGxvbmcgbG9uZyBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKCFtX3dy
aXRlcik7Ci0gICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsKLSAgICBtX3dyaXRlciA9IHdyaXRlcjsK
LSAgICBtX2xlbmd0aCA9IGxlbmd0aDsKLX0KLQotRmlsZVdyaXRlckJhc2U6OkZpbGVXcml0ZXJC
YXNlKCkKLSAgICA6IG1fcG9zaXRpb24oMCkKLXsKLX0KLQotdm9pZCBGaWxlV3JpdGVyQmFzZTo6
c2Vla0ludGVybmFsKGxvbmcgbG9uZyBwb3NpdGlvbikKLXsKLSAgICBpZiAocG9zaXRpb24gPiBt
X2xlbmd0aCkKLSAgICAgICAgcG9zaXRpb24gPSBtX2xlbmd0aDsKLSAgICBlbHNlIGlmIChwb3Np
dGlvbiA8IDApCi0gICAgICAgIHBvc2l0aW9uID0gbV9sZW5ndGggKyBwb3NpdGlvbjsKLSAgICBp
ZiAocG9zaXRpb24gPCAwKQotICAgICAgICBwb3NpdGlvbiA9IDA7Ci0gICAgbV9wb3NpdGlvbiA9
IHBvc2l0aW9uOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZVdyaXRlckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVdyaXRlckJhc2UuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVXcml0ZXJCYXNlX2gKLSNkZWZpbmUgRmlsZVdy
aXRlckJhc2VfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBc3luY0ZpbGVXcml0ZXI7
Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLWNsYXNzIEZpbGVXcml0ZXJCYXNlIDog
cHVibGljIFJlZkNvdW50ZWQ8RmlsZVdyaXRlckJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5GaWxlV3JpdGVyQmFzZSgpOwotICAgIHZvaWQgaW5pdGlhbGl6ZShQYXNzT3duUHRyPEFzeW5j
RmlsZVdyaXRlcj4sIGxvbmcgbG9uZyBsZW5ndGgpOwotCi0gICAgbG9uZyBsb25nIHBvc2l0aW9u
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgIH0KLSAgICBs
b25nIGxvbmcgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlbmd0aDsK
LSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBGaWxlV3JpdGVyQmFzZSgpOwotCi0gICAgQXN5bmNG
aWxlV3JpdGVyKiB3cml0ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd3JpdGVyLmdldCgp
OwotICAgIH0KLQotICAgIHZvaWQgc2V0UG9zaXRpb24obG9uZyBsb25nIHBvc2l0aW9uKQotICAg
IHsKLSAgICAgICAgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIH0KLQotICAgIHZvaWQgc2V0
TGVuZ3RoKGxvbmcgbG9uZyBsZW5ndGgpCi0gICAgewotICAgICAgICBtX2xlbmd0aCA9IGxlbmd0
aDsKLSAgICB9Ci0KLSAgICB2b2lkIHNlZWtJbnRlcm5hbChsb25nIGxvbmcgcG9zaXRpb24pOwot
Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8RmlsZVdyaXRlckJh
c2U+OwotCi0gICAgT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gbV93cml0ZXI7Ci0gICAgbG9uZyBs
b25nIG1fcG9zaXRpb247Ci0gICAgbG9uZyBsb25nIG1fbGVuZ3RoOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYg
Ly8gRmlsZVdyaXRlckJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJh
c2VDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZpbGVX
cml0ZXJCYXNlQ2FsbGJhY2tfaAotI2RlZmluZSBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrX2gKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRmlsZVdyaXRlckJhc2U7Ci0KLWNsYXNzIEZp
bGVXcml0ZXJCYXNlQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlV3JpdGVyQmFzZUNh
bGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RmlsZVdyaXRlckJhc2VDYWxsYmFjaygp
IHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxlV3JpdGVyQmFzZSopID0gMDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNlbmRpZiAvLyBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmgJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
V3JpdGVyQ2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBG
aWxlV3JpdGVyQ2FsbGJhY2tfaAotI2RlZmluZSBGaWxlV3JpdGVyQ2FsbGJhY2tfaAotCi0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWxlV3JpdGVyOwotCi1jbGFzcyBGaWxlV3JpdGVy
Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlV3JpdGVyQ2FsbGJhY2s+IHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5GaWxlV3JpdGVyQ2FsbGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaGFuZGxlRXZlbnQoRmlsZVdyaXRlciopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlV3JpdGVyQ2Fs
bGJhY2tfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0
ZXJDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVXcml0ZXJDYWxsYmFjay5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQ2FsbGJhY2suaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0s
Ci1dIGNhbGxiYWNrIGludGVyZmFjZSBGaWxlV3JpdGVyQ2FsbGJhY2sgewotICAgIGJvb2xlYW4g
aGFuZGxlRXZlbnQoRmlsZVdyaXRlciBmaWxlV3JpdGVyKTsKLX07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlclN5bmMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHAJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
V3JpdGVyU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQ4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRmlsZVdy
aXRlclN5bmMuaCIKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgotI2luY2x1ZGUgIkJs
b2IuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBGaWxlV3JpdGVyU3luYzo6d3JpdGUoQmxvYiogZGF0YSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgQVNTRVJUKHdyaXRlcigpKTsKLSAgICBBU1NFUlQobV9jb21wbGV0ZSk7Ci0g
ICAgZWMgPSAwOwotICAgIGlmICghZGF0YSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246
OlRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcHJlcGFy
ZUZvcldyaXRlKCk7Ci0gICAgd3JpdGVyKCktPndyaXRlKHBvc2l0aW9uKCksIGRhdGEpOwotICAg
IHdyaXRlcigpLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpOwotICAgIEFTU0VSVChtX2Nv
bXBsZXRlKTsKLSAgICBlYyA9IEZpbGVFeGNlcHRpb246OkVycm9yQ29kZVRvRXhjZXB0aW9uQ29k
ZShtX2Vycm9yKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICBzZXRQb3NpdGlv
bihwb3NpdGlvbigpICsgZGF0YS0+c2l6ZSgpKTsKLSAgICBpZiAocG9zaXRpb24oKSA+IGxlbmd0
aCgpKQotICAgICAgICBzZXRMZW5ndGgocG9zaXRpb24oKSk7Ci19Ci0KLXZvaWQgRmlsZVdyaXRl
clN5bmM6OnNlZWsobG9uZyBsb25nIHBvc2l0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICBBU1NFUlQod3JpdGVyKCkpOwotICAgIEFTU0VSVChtX2NvbXBsZXRlKTsKLSAgICBlYyA9IDA7
Ci0gICAgc2Vla0ludGVybmFsKHBvc2l0aW9uKTsKLX0KLQotdm9pZCBGaWxlV3JpdGVyU3luYzo6
dHJ1bmNhdGUobG9uZyBsb25nIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgQVNT
RVJUKHdyaXRlcigpKTsKLSAgICBBU1NFUlQobV9jb21wbGV0ZSk7Ci0gICAgZWMgPSAwOwotICAg
IGlmIChvZmZzZXQgPCAwKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcHJlcGFyZUZvcldyaXRlKCk7
Ci0gICAgd3JpdGVyKCktPnRydW5jYXRlKG9mZnNldCk7Ci0gICAgd3JpdGVyKCktPndhaXRGb3JP
cGVyYXRpb25Ub0NvbXBsZXRlKCk7Ci0gICAgQVNTRVJUKG1fY29tcGxldGUpOwotICAgIGVjID0g
RmlsZUV4Y2VwdGlvbjo6RXJyb3JDb2RlVG9FeGNlcHRpb25Db2RlKG1fZXJyb3IpOwotICAgIGlm
IChlYykKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChvZmZzZXQgPCBwb3NpdGlvbigpKQotICAg
ICAgICBzZXRQb3NpdGlvbihvZmZzZXQpOwotICAgIHNldExlbmd0aChvZmZzZXQpOwotfQotCi12
b2lkIEZpbGVXcml0ZXJTeW5jOjpkaWRXcml0ZShsb25nIGxvbmcsIGJvb2wgY29tcGxldGUpCi17
Ci0gICAgQVNTRVJUKG1fZXJyb3IgPT0gRmlsZUVycm9yOjpPSyk7Ci0gICAgQVNTRVJUKCFtX2Nv
bXBsZXRlKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9jb21wbGV0ZSA9IGNvbXBsZXRlOwotI2Vs
c2UKLSAgICBBU1NFUlRfVU5VU0VEKGNvbXBsZXRlLCBjb21wbGV0ZSk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBGaWxlV3JpdGVyU3luYzo6ZGlkVHJ1bmNhdGUoKQotewotICAgIEFTU0VSVChtX2Vycm9y
ID09IEZpbGVFcnJvcjo6T0spOwotICAgIEFTU0VSVCghbV9jb21wbGV0ZSk7Ci0jaWZuZGVmIE5E
RUJVRwotICAgIG1fY29tcGxldGUgPSB0cnVlOwotI2VuZGlmCi19Ci0KLXZvaWQgRmlsZVdyaXRl
clN5bmM6OmRpZEZhaWwoRmlsZUVycm9yOjpFcnJvckNvZGUgZXJyb3IpCi17Ci0gICAgQVNTRVJU
KG1fZXJyb3IgPT0gRmlsZUVycm9yOjpPSyk7Ci0gICAgbV9lcnJvciA9IGVycm9yOwotICAgIEFT
U0VSVCghbV9jb21wbGV0ZSk7Ci0jaWZuZGVmIE5ERUJVRwotICAgIG1fY29tcGxldGUgPSB0cnVl
OwotI2VuZGlmCi19Ci0KLUZpbGVXcml0ZXJTeW5jOjpGaWxlV3JpdGVyU3luYygpCi0gICAgOiBt
X2Vycm9yKEZpbGVFcnJvcjo6T0spCi0jaWZuZGVmIE5ERUJVRwotICAgICwgbV9jb21wbGV0ZSh0
cnVlKQotI2VuZGlmCi17Ci19Ci0KLXZvaWQgRmlsZVdyaXRlclN5bmM6OnByZXBhcmVGb3JXcml0
ZSgpCi17Ci0gICAgQVNTRVJUKG1fY29tcGxldGUpOwotICAgIG1fZXJyb3IgPSBGaWxlRXJyb3I6
Ok9LOwotI2lmbmRlZiBOREVCVUcKLSAgICBtX2NvbXBsZXRlID0gZmFsc2U7Ci0jZW5kaWYKLX0K
LQotRmlsZVdyaXRlclN5bmM6On5GaWxlV3JpdGVyU3luYygpCi17Ci19Ci0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmgJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9G
aWxlV3JpdGVyU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBG
aWxlV3JpdGVyU3luY19oCi0jZGVmaW5lIEZpbGVXcml0ZXJTeW5jX2gKLQotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudC5oIgotI2luY2x1
ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVXcml0ZXJCYXNlLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBCbG9iOwot
Ci10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBGaWxlV3JpdGVyU3luYyA6IHB1
YmxpYyBGaWxlV3JpdGVyQmFzZSwgcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlclN5bmM+IGNyZWF0ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVXcml0ZXJTeW5jKCkpOwotICAgIH0K
LSAgICB2aXJ0dWFsIH5GaWxlV3JpdGVyU3luYygpOwotCi0gICAgLy8gRmlsZVdyaXRlckJhc2UK
LSAgICB2b2lkIHdyaXRlKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZWVrKGxv
bmcgbG9uZyBwb3NpdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgdHJ1bmNhdGUobG9u
ZyBsb25nIGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgLy8gQXN5bmNGaWxlV3JpdGVy
Q2xpZW50LCB2aWEgRmlsZVdyaXRlckJhc2UKLSAgICB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBi
eXRlcywgYm9vbCBjb21wbGV0ZSk7Ci0gICAgdm9pZCBkaWRUcnVuY2F0ZSgpOwotICAgIHZvaWQg
ZGlkRmFpbChGaWxlRXJyb3I6OkVycm9yQ29kZSk7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZVdyaXRl
clN5bmMoKTsKLSAgICB2b2lkIHByZXBhcmVGb3JXcml0ZSgpOwotCi0gICAgRmlsZUVycm9yOjpF
cnJvckNvZGUgbV9lcnJvcjsKLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBtX2NvbXBsZXRlOwot
I2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBGaWxlV3JpdGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbAkocmV2
aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVX
cml0ZXJTeW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICBKU05vU3Rh
dGljVGFibGVzCi1dIGludGVyZmFjZSBGaWxlV3JpdGVyU3luYyB7Ci0gICAgLy8gc3luY2hyb25v
dXMgd3JpdGUvbW9kaWZ5IG1ldGhvZHMKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHdyaXRl
KEJsb2IgZGF0YSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzZWVrKGxvbmcgbG9uZyBw
b3NpdGlvbik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcg
c2l6ZSk7Ci0KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsb25nIHBvc2l0aW9uOwotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmcgbGVuZ3RoOwotfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1
dEVsZW1lbnRGaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNpbmNsdWRlICJET01GaWxlUGF0aC5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIK
LSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNp
bmNsdWRlICJGaWxlRW50cnkuaCIKLSNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIkZp
bGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gc3RhdGljCi1QYXNzUmVm
UHRyPEVudHJ5QXJyYXk+IEhUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtOjp3ZWJraXRFbnRyaWVz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0KQotewotICAgIFJlZlB0cjxFbnRyeUFycmF5PiBhcnJheSA9IEVudHJ5
QXJyYXk6OmNyZWF0ZSgpOwotICAgIEZpbGVMaXN0KiBmaWxlcyA9IGlucHV0LT5maWxlcygpOwot
Ci0gICAgaWYgKCFmaWxlcykKLSAgICAgICAgcmV0dXJuIGFycmF5OwotCi0gICAgUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0gPSBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZp
bGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgaW5wdXQtPmRyb3BwZWRGaWxlU3lzdGVt
SWQoKSk7Ci0gICAgaWYgKCFmaWxlc3lzdGVtKSB7Ci0gICAgICAgIC8vIERyYWctZHJvcCBpc29s
YXRlZCBmaWxlc3lzdGVtIGlzIG5vdCBhdmFpbGFibGUuCi0gICAgICAgIHJldHVybiBhcnJheTsK
LSAgICB9Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZXMtPmxlbmd0aCgpOyAr
K2kpIHsKLSAgICAgICAgRmlsZSogZmlsZSA9IGZpbGVzLT5pdGVtKGkpOwotCi0gICAgICAgIC8v
IEZJWE1FOiBUaGlzIGludm9sdmVzIHN5bmNocm9ub3VzIGZpbGUgb3BlcmF0aW9uLgotICAgICAg
ICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7Ci0gICAgICAgIGlmICghZ2V0RmlsZU1ldGFkYXRhKGZp
bGUtPnBhdGgoKSwgbWV0YWRhdGEpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
Ly8gVGhlIGRyb3BwZWQgZW50cmllcyBhcmUgbWFwcGVkIGFzIHRvcC1sZXZlbCBlbnRyaWVzIGlu
IHRoZSBpc29sYXRlZCBmaWxlc3lzdGVtLgotICAgICAgICBTdHJpbmcgdmlydHVhbFBhdGggPSBE
T01GaWxlUGF0aDo6YXBwZW5kKCIvIiwgZmlsZS0+bmFtZSgpKTsKLSAgICAgICAgaWYgKG1ldGFk
YXRhLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5KQotICAgICAgICAgICAgYXJy
YXktPmFwcGVuZChEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRo
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFycmF5LT5hcHBlbmQoRmlsZUVudHJ5Ojpj
cmVhdGUoZmlsZXN5c3RlbSwgdmlydHVhbFBhdGgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFycmF5
OwotfQotCi1IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbTo6SFRNTElucHV0RWxlbWVudEZpbGVT
eXN0ZW0oKQotewotfQotCi1IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbTo6fkhUTUxJbnB1dEVs
ZW1lbnRGaWxlU3lzdGVtKCkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVt
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9IVE1MSW5wdXRFbGVtZW50RmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEhUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtX2gKLSNkZWZpbmUgSFRNTElu
cHV0RWxlbWVudEZpbGVTeXN0ZW1faAotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeUFycmF5OwotY2xhc3MgSFRNTElucHV0
RWxlbWVudDsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLWNsYXNzIEhUTUxJbnB1
dEVsZW1lbnRGaWxlU3lzdGVtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRy
eUFycmF5PiB3ZWJraXRFbnRyaWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBIVE1MSW5wdXRF
bGVtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgSFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0oKTsK
LSAgICB+SFRNTElucHV0RWxlbWVudEZpbGVTeXN0ZW0oKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEhUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9IVE1MSW5wdXRFbGVtZW50RmlsZVN5
c3RlbS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVtLmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0hUTUxJbnB1dEVsZW1lbnRGaWxlU3lzdGVt
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPUZJ
TEVfU1lTVEVNLAotXSBwYXJ0aWFsIGludGVyZmFjZSBIVE1MSW5wdXRFbGVtZW50IHsKLSAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gcmVhZG9ubHkgYXR0cmlidXRlIEVudHJ5
QXJyYXkgd2Via2l0RW50cmllczsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0u
aCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotTG9jYWxGaWxlU3lzdGVtKiBMb2NhbEZpbGVTeXN0ZW06OnNfaW5zdGFu
Y2UgPSAwOwotCi12b2lkIExvY2FsRmlsZVN5c3RlbTo6aW5pdGlhbGl6ZUxvY2FsRmlsZVN5c3Rl
bShjb25zdCBTdHJpbmcmIGJhc2VQYXRoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgaW5pdGlh
bGl6ZSB0aGUgcXVvdGEgc2V0dGluZ3MgYXMgd2VsbC4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIEFTU0VSVCghc19pbnN0YW5jZSk7Ci0gICAgaWYgKHNfaW5zdGFuY2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIE93blB0cjxMb2NhbEZpbGVTeXN0ZW0+IGxvY2FsRmlsZVN5c3Rl
bSA9IGFkb3B0UHRyKG5ldyBMb2NhbEZpbGVTeXN0ZW0oYmFzZVBhdGgpKTsKLSAgICBzX2luc3Rh
bmNlID0gbG9jYWxGaWxlU3lzdGVtLmxlYWtQdHIoKTsKLX0KLQotTG9jYWxGaWxlU3lzdGVtJiBM
b2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpCi17Ci0gICAgLy8gaW5pdGlhbGl6ZUxv
Y2FsRmlsZVN5c3RlbSBtdXN0IGJlIGNhbGxlZCBwcmlvciBjYWxsaW5nIHRoaXMuCi0gICAgQVNT
RVJUKHNfaW5zdGFuY2UpOwotICAgIHJldHVybiAqc19pbnN0YW5jZTsKLX0KLQotU3RyaW5nIExv
Y2FsRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbUJhc2VQYXRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9iYXNlUGF0aDsKLX0KLQotc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgQXN5bmNGaWxlU3lzdGVtOjpv
cGVuRmlsZVN5c3RlbShiYXNlUGF0aCwgaWRlbnRpZmllciwgdHlwZSwgY3JlYXRlLCBjYWxsYmFj
a3MpOwotfQotCi1zdGF0aWMgdm9pZCBwZXJmb3JtRGVsZXRlRmlsZVN5c3RlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIEFzeW5jRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZVN5
c3RlbShiYXNlUGF0aCwgaWRlbnRpZmllciwgdHlwZSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBM
b2NhbEZpbGVTeXN0ZW06OnJlYWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5cGUpCi17Ci0gICAgLy8g
QXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbSBjYWxscyBjYWxsYmFja3Mgc3luY2hyb25v
dXNseSwgc28gdGhlIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuCi0g
ICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmlsZVN5c3RlbSwg
ZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNl
SWRlbnRpZmllcigpLCB0eXBlLCBmYWxzZSwgY2FsbGJhY2tzKSk7Ci19Ci0KLXZvaWQgTG9jYWxG
aWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5cGUpCi17
Ci0gICAgLy8gQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbSBjYWxscyBjYWxsYmFja3Mg
c3luY2hyb25vdXNseSwgc28gdGhlIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYXN5bmNocm9u
b3VzbHkuCi0gICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVuRmls
ZVN5c3RlbSwgZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCB0cnVlLCBjYWxsYmFja3MpKTsKLX0KLQotdm9p
ZCBMb2NhbEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGVTeXN0ZW0gY2FsbHMgY2FsbGJhY2tzIHN5bmNocm9ub3VzbHksIHNvIHRoZSBtZXRob2Qg
bmVlZHMgdG8gYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5LgotICAgIGNvbnRleHQtPnBvc3RUYXNr
KGNyZWF0ZUNhbGxiYWNrVGFzaygmcGVyZm9ybURlbGV0ZUZpbGVTeXN0ZW0sIGZpbGVTeXN0ZW1C
YXNlUGF0aCgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIo
KSwgdHlwZSwgY2FsbGJhY2tzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vTG9jYWxGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTG9jYWxGaWxlU3lzdGVtX2gKLSNkZWZpbmUg
TG9jYWxGaWxlU3lzdGVtX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUg
IkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFjazsKLWNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLS8vIEtlZXBzIHBlci1wcm9jZXNzIGluZm9ybWF0aW9uIGFu
ZCBwcm92aWRlcyBhbiBlbnRyeSBwb2ludCB0byBvcGVuIGEgZmlsZSBzeXN0ZW0uCi1jbGFzcyBM
b2NhbEZpbGVTeXN0ZW0gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsRmlsZVN5c3Rl
bSk7Ci1wdWJsaWM6Ci0gICAgLy8gUmV0dXJucyBhIHBlci1wcm9jZXNzIGluc3RhbmNlIG9mIExv
Y2FsRmlsZVN5c3RlbS4KLSAgICAvLyBOb3RlIHRoYXQgTG9jYWxGaWxlU3lzdGVtOjppbml0aWFs
aXplTG9jYWxGaWxlU3lzdGVtIG11c3QgYmUgY2FsbGVkIGJlZm9yZQotICAgIC8vIGNhbGxpbmcg
dGhpcyBvbmUuCi0gICAgc3RhdGljIExvY2FsRmlsZVN5c3RlbSYgbG9jYWxGaWxlU3lzdGVtKCk7
Ci0KLSAgICAvLyBEb2VzIG5vdCBjcmVhdGUgdGhlIHJvb3QgcGF0aCBmb3IgZmlsZSBzeXN0ZW0s
IGp1c3QgcmVhZHMgaXQgaWYgYXZhaWxhYmxlLgotICAgIHZvaWQgcmVhZEZpbGVTeXN0ZW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4sIEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5cGUgPSBBc3luY2hyb25v
dXNGaWxlU3lzdGVtKTsKLQotICAgIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+LCBGaWxlU3lzdGVtU3luY2hyb25vdXNUeXBlID0gQXN5
bmNocm9ub3VzRmlsZVN5c3RlbSk7Ci0KLSAgICB2b2lkIGRlbGV0ZUZpbGVTeXN0ZW0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pOwotCi0gICAgLy8gVGhpcyBjYWxsIGlzIG5vdCB0aHJlYWQtc2FmZTsg
bXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSB3b3JrZXIgdGhyZWFkcyBhcmUgY3JlYXRlZC4KLSAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYpOwot
Ci0gICAgU3RyaW5nIGZpbGVTeXN0ZW1CYXNlUGF0aCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAg
IGV4cGxpY2l0IExvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGJhc2VQYXRoKQotICAgICAg
ICA6IG1fYmFzZVBhdGgoYmFzZVBhdGgpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBMb2Nh
bEZpbGVTeXN0ZW0qIHNfaW5zdGFuY2U7Ci0KLSAgICAvLyBBbiBpbm5lciBjbGFzcyB0aGF0IGVu
Zm9yY2VzIHRocmVhZC1zYWZlIHN0cmluZyBhY2Nlc3MuCi0gICAgY2xhc3MgU3lzdGVtQmFzZVBh
dGggewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgU3lzdGVtQmFzZVBhdGgoY29uc3Qg
U3RyaW5nJiBwYXRoKSA6IG1fdmFsdWUocGF0aCkgeyB9Ci0gICAgICAgIG9wZXJhdG9yIFN0cmlu
ZygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmlzb2xhdGVk
Q29weSgpOwotICAgICAgICB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaW5nIG1fdmFsdWU7
Ci0gICAgfTsKLQotICAgIFN5c3RlbUJhc2VQYXRoIG1fYmFzZVBhdGg7Ci19OwotCi19IC8vIG5h
bWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gTG9j
YWxGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9N
ZXRhZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9NZXRhZGF0YS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBNZXRhZGF0YV9oCi0jZGVmaW5lIE1ldGFkYXRhX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLQotI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWV0YWRhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZXRhZGF0YT4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
dGFkYXRhPiBjcmVhdGUoY29uc3QgRmlsZU1ldGFkYXRhJiBwbGF0Zm9ybU1ldGFkYXRhKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXRhZGF0YShwbGF0Zm9ybU1ldGFkYXRh
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YWRhdGE+IGNyZWF0ZShNZXRh
ZGF0YSogbWV0YWRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFk
YXRhKG1ldGFkYXRhLT5tX3BsYXRmb3JtTWV0YWRhdGEpKTsKLSAgICB9Ci0KLSAgICAvLyBOZWVk
cyB0byByZXR1cm4gZXBvY2ggdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIERhdGUgd2hpbGUgRmls
ZU1ldGFkYXRhJ3MgbW9kaWZpY2F0aW9uVGltZSBpcyBpbiBzZWNvbmRzLgotICAgIGRvdWJsZSBt
b2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybU1ldGFkYXRhLm1vZGlm
aWNhdGlvblRpbWUgKiAxMDAwLjA7IH0KLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9wbGF0Zm9ybU1l
dGFkYXRhLmxlbmd0aCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZXRhZGF0YShjb25z
dCBGaWxlTWV0YWRhdGEmIHBsYXRmb3JtTWV0YWRhdGEpCi0gICAgICAgIDogbV9wbGF0Zm9ybU1l
dGFkYXRhKHBsYXRmb3JtTWV0YWRhdGEpCi0gICAgewotICAgIH0KLQotICAgIEZpbGVNZXRhZGF0
YSBtX3BsYXRmb3JtTWV0YWRhdGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gTWV0YWRhdGFfaApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRsCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGEuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
Ci0gICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgSlNOb1N0YXRpY1RhYmxlcywKLSAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCi1dIGludGVyZmFjZSBNZXRhZGF0YSB7Ci0gICAg
cmVhZG9ubHkgYXR0cmlidXRlIERhdGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7Ci19OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5oCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRh
dGFDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1ldGFk
YXRhQ2FsbGJhY2tfaAotI2RlZmluZSBNZXRhZGF0YUNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgTWV0YWRhdGE7Ci0KLWNsYXNzIE1ldGFkYXRhQ2FsbGJhY2sgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZXRhZGF0YUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+TWV0YWRhdGFDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChN
ZXRhZGF0YSopID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBNZXRhZGF0YUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFj
ay5pZGwJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
WwotICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotXSBjYWxsYmFjayBpbnRlcmZhY2UgTWV0
YWRhdGFDYWxsYmFjayB7Ci0gICAgYm9vbGVhbiBoYW5kbGVFdmVudChNZXRhZGF0YSBtZXRhZGF0
YSk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1N5bmNDYWxs
YmFja0hlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9TeW5jQ2FsbGJhY2tIZWxwZXIuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1N5bmNDYWxsYmFja0hlbHBlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTeW5jQ2FsbGJhY2tIZWxwZXJfaAotI2RlZmlu
ZSBTeW5jQ2FsbGJhY2tIZWxwZXJfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJFbnRyeUFycmF5U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNp
bmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0jaW5jbHVk
ZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkZp
bGVTeXN0ZW1DYWxsYmFjay5oIgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNpbmNs
dWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXN5
bmNGaWxlU3lzdGVtOwotY2xhc3MgRGlyZWN0b3J5RW50cnlTeW5jOwotY2xhc3MgRW50cnlBcnJh
eVN5bmM7Ci1jbGFzcyBFbnRyeVN5bmM7Ci1jbGFzcyBGaWxlRW50cnlTeW5jOwotCi10eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwotCi0vLyBBIGhlbHBlciB0ZW1wbGF0ZSBmb3IgRmlsZVN5c3Rl
bVN5bmMgaW1wbGVtZW50YXRpb24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU3VjY2Vzc0NhbGxiYWNr
LCB0eXBlbmFtZSBPYnNlcnZlclR5cGUsIHR5cGVuYW1lIENhbGxiYWNrQXJnLCB0eXBlbmFtZSBS
ZXN1bHRUeXBlPgotY2xhc3MgU3luY0NhbGxiYWNrSGVscGVyIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTeW5jQ2FsbGJhY2tIZWxwZXIpOwotcHVibGljOgotICAgIHR5cGVkZWYgU3luY0Nh
bGxiYWNrSGVscGVyPFN1Y2Nlc3NDYWxsYmFjaywgT2JzZXJ2ZXJUeXBlLCBDYWxsYmFja0FyZywg
UmVzdWx0VHlwZT4gSGVscGVyVHlwZTsKLSAgICBTeW5jQ2FsbGJhY2tIZWxwZXIoT2JzZXJ2ZXJU
eXBlKiBvYnNlcnZlciA9IDApCi0gICAgICAgIDogbV9vYnNlcnZlcihvYnNlcnZlcikKLSAgICAg
ICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhTdWNjZXNzQ2FsbGJhY2tJbXBsOjpjcmVhdGUodGhpcykp
Ci0gICAgICAgICwgbV9lcnJvckNhbGxiYWNrKEVycm9yQ2FsbGJhY2tJbXBsOjpjcmVhdGUodGhp
cykpCi0gICAgICAgICwgbV9leGNlcHRpb25Db2RlKDApCi0gICAgICAgICwgbV9jb21wbGV0ZWQo
ZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIFBhc3NSZWZQdHI8UmVzdWx0VHlwZT4gZ2V0UmVz
dWx0KEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAgICAgaWYgKG1fb2JzZXJ2ZXIpIHsK
LSAgICAgICAgICAgIHdoaWxlICghbV9jb21wbGV0ZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IW1fb2JzZXJ2ZXItPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9leGNlcHRpb25Db2RlID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWMgPSBtX2V4Y2VwdGlvbkNvZGU7Ci0gICAgICAgIHJldHVy
biBtX3Jlc3VsdC5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgUGFzc1JlZlB0cjxTdWNjZXNzQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaygpIHsgcmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrOyB9Ci0g
ICAgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKCkgeyByZXR1cm4gbV9l
cnJvckNhbGxiYWNrOyB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgU3VjY2Vzc0NhbGxiYWNrSW1w
bCA6IHB1YmxpYyBTdWNjZXNzQ2FsbGJhY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3VjY2Vzc0NhbGxiYWNrSW1wbD4gY3JlYXRlKEhlbHBlclR5cGUqIGhlbHBl
cikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdWNjZXNzQ2Fs
bGJhY2tJbXBsKGhlbHBlcikpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGhh
bmRsZUV2ZW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9oZWxwZXItPnNldEVycm9yKDAp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlRXZlbnQoQ2FsbGJhY2tBcmcqIGFyZykKLSAgICAgICAgewotICAgICAgICAg
ICAgbV9oZWxwZXItPnNldFJlc3VsdChSZXN1bHRUeXBlOjpjcmVhdGUoYXJnKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZXhw
bGljaXQgU3VjY2Vzc0NhbGxiYWNrSW1wbChIZWxwZXJUeXBlKiBoZWxwZXIpCi0gICAgICAgICAg
ICA6IG1faGVscGVyKGhlbHBlcikKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIEhlbHBl
clR5cGUqIG1faGVscGVyOwotICAgIH07Ci0KLSAgICBjbGFzcyBFcnJvckNhbGxiYWNrSW1wbCA6
IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2tJbXBsPiBjcmVhdGUoSGVscGVyVHlwZSogaGVscGVyKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVycm9yQ2FsbGJhY2tJbXBs
KGhlbHBlcikpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50
KEZpbGVFcnJvciogZXJyb3IpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChlcnJvcik7
Ci0gICAgICAgICAgICBtX2hlbHBlci0+c2V0RXJyb3IoZXJyb3ItPmNvZGUoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZXhw
bGljaXQgRXJyb3JDYWxsYmFja0ltcGwoSGVscGVyVHlwZSogaGVscGVyKQotICAgICAgICAgICAg
OiBtX2hlbHBlcihoZWxwZXIpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBIZWxwZXJU
eXBlKiBtX2hlbHBlcjsKLSAgICB9OwotCi0gICAgZnJpZW5kIGNsYXNzIFN1Y2Nlc3NDYWxsYmFj
a0ltcGw7Ci0gICAgZnJpZW5kIGNsYXNzIEVycm9yQ2FsbGJhY2tJbXBsOwotCi0gICAgdm9pZCBz
ZXRFcnJvcihpbnQgY29kZSkKLSAgICB7Ci0gICAgICAgIG1fZXhjZXB0aW9uQ29kZSA9IEZpbGVF
eGNlcHRpb246OkVycm9yQ29kZVRvRXhjZXB0aW9uQ29kZShjb2RlKTsKLSAgICAgICAgbV9jb21w
bGV0ZWQgPSB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgc2V0UmVzdWx0KFBhc3NSZWZQdHI8UmVz
dWx0VHlwZT4gcmVzdWx0KQotICAgIHsKLSAgICAgICAgbV9yZXN1bHQgPSByZXN1bHQ7Ci0gICAg
ICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBPYnNlcnZlclR5cGUqIG1fb2Jz
ZXJ2ZXI7Ci0gICAgUmVmUHRyPFN1Y2Nlc3NDYWxsYmFja0ltcGw+IG1fc3VjY2Vzc0NhbGxiYWNr
OwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrSW1wbD4gbV9lcnJvckNhbGxiYWNrOwotICAgIFJl
ZlB0cjxSZXN1bHRUeXBlPiBtX3Jlc3VsdDsKLSAgICBFeGNlcHRpb25Db2RlIG1fZXhjZXB0aW9u
Q29kZTsKLSAgICBib29sIG1fY29tcGxldGVkOwotfTsKLQotc3RydWN0IEVtcHR5VHlwZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEVtcHR5VHlwZT4gewotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVtcHR5
VHlwZT4gY3JlYXRlKEVtcHR5VHlwZSopCi0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci19OwotCi1zdHJ1Y3QgRW1wdHlPYnNlcnZlclR5cGUgewotICAgIGJvb2wgd2FpdEZvck9wZXJh
dGlvblRvQ29tcGxldGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX07
Ci0KLXR5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPEVudHJ5Q2FsbGJhY2ssIEFzeW5jRmlsZVN5
c3RlbSwgRW50cnksIEVudHJ5U3luYz4gRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXI7Ci10eXBlZGVm
IFN5bmNDYWxsYmFja0hlbHBlcjxFbnRyaWVzQ2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwgRW50
cnlBcnJheSwgRW50cnlBcnJheVN5bmM+IEVudHJpZXNTeW5jQ2FsbGJhY2tIZWxwZXI7Ci10eXBl
ZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxNZXRhZGF0YUNhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0s
IE1ldGFkYXRhLCBNZXRhZGF0YT4gTWV0YWRhdGFTeW5jQ2FsbGJhY2tIZWxwZXI7Ci10eXBlZGVm
IFN5bmNDYWxsYmFja0hlbHBlcjxWb2lkQ2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwgRW1wdHlU
eXBlLCBFbXB0eVR5cGU+IFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXI7Ci10eXBlZGVmIFN5bmNDYWxs
YmFja0hlbHBlcjxGaWxlU3lzdGVtQ2FsbGJhY2ssIEVtcHR5T2JzZXJ2ZXJUeXBlLCBET01GaWxl
U3lzdGVtLCBET01GaWxlU3lzdGVtU3luYz4gRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBlcjsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jZW5kaWYgLy8gU3luY0NhbGxiYWNrSGVscGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxT
Y29wZUZpbGVTeXN0ZW0uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaCIKLQotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgotI2lu
Y2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMu
aCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxi
YWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5o
IgotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJh
Y2suaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgotI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBXb3Jr
ZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFdvcmtlckds
b2JhbFNjb3BlKiB3b3JrZXIsIGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxG
aWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3Vy
ZUNvbnRleHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIUFz
eW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7Ci0gICAgICAgIERPTUZpbGVTeXN0ZW06
OnNjaGVkdWxlQ2FsbGJhY2sod29ya2VyLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0
ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgRmlsZVN5c3RlbVR5cGUgZmlsZVN5c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxGaWxlU3lzdGVt
VHlwZT4odHlwZSk7Ci0gICAgaWYgKCFET01GaWxlU3lzdGVtQmFzZTo6aXNWYWxpZFR5cGUoZmls
ZVN5c3RlbVR5cGUpKSB7Ci0gICAgICAgIERPTUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2so
d29ya2VyLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTG9j
YWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh3b3JrZXIs
IGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB3b3JrZXIsIGZpbGVTeXN0ZW1UeXBlKSwgQXN5bmNo
cm9ub3VzRmlsZVN5c3RlbSk7Ci19Ci0KLVBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFdv
cmtlckdsb2JhbFNjb3BlKiB3b3JrZXIsIGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNlY3VyZUNvbnRleHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBp
ZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7Ci0gICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6U0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAg
ICBGaWxlU3lzdGVtVHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRpY19jYXN0PEZpbGVTeXN0ZW1U
eXBlPih0eXBlKTsKLSAgICBpZiAoIURPTUZpbGVTeXN0ZW1CYXNlOjppc1ZhbGlkVHlwZShmaWxl
U3lzdGVtVHlwZSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElG
SUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEZpbGVTeXN0ZW1T
eW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyOwotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxl
U3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0ZW0od29ya2VyLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwg
RmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVs
cGVyLmVycm9yQ2FsbGJhY2soKSwgd29ya2VyLCBmaWxlU3lzdGVtVHlwZSksIFN5bmNocm9ub3Vz
RmlsZVN5c3RlbSk7Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi12b2lk
IFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVVSTChXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5j
b21wbGV0ZVVSTCh1cmwpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRl
eHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIUFzeW5jRmls
ZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKLSAgICAgICAgRE9NRmlsZVN5c3RlbTo6
c2NoZWR1bGVDYWxsYmFjayh3b3JrZXIsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRl
KEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBGaWxlU3lzdGVtVHlwZSB0eXBlOwotICAgIFN0cmluZyBmaWxlUGF0aDsKLSAgICBpZiAoIWNv
bXBsZXRlZFVSTC5pc1ZhbGlkKCkgfHwgIURPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0
ZW1VUkwoY29tcGxldGVkVVJMLCB0eXBlLCBmaWxlUGF0aCkpIHsKLSAgICAgICAgRE9NRmlsZVN5
c3RlbTo6c2NoZWR1bGVDYWxsYmFjayh3b3JrZXIsIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6
Y3JlYXRlKEZpbGVFcnJvcjo6RU5DT0RJTkdfRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlYWRGaWxlU3lzdGVt
KHdvcmtlciwgdHlwZSwgUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaywgd29ya2VyLCB0eXBlLCBmaWxlUGF0aCkpOwotfQotCi1QYXNzUmVm
UHRyPEVudHJ5U3luYz4gV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZl
TG9jYWxGaWxlU3lzdGVtU3luY1VSTChXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyLCBjb25zdCBT
dHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIFVSTCBj
b21wbGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBsZXRlVVJMKHVybCk7Ci0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgIGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVD
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3Vy
ZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewot
ICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OlNFQ1VSSVRZX0VSUjsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotCi0gICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKLSAgICBTdHJpbmcgZmlsZVBh
dGg7Ci0gICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpIHx8ICFET01GaWxlU3lzdGVtQmFz
ZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbXBsZXRlZFVSTCwgdHlwZSwgZmlsZVBhdGgpKSB7Ci0g
ICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6RU5DT0RJTkdfRVJSOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVyIHJlYWRGaWxlU3lz
dGVtSGVscGVyOwotICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVhZEZp
bGVTeXN0ZW0od29ya2VyLCB0eXBlLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUocmVhZEZp
bGVTeXN0ZW1IZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIHJlYWRGaWxlU3lzdGVtSGVscGVyLmVy
cm9yQ2FsbGJhY2soKSwgd29ya2VyLCB0eXBlKSwgU3luY2hyb25vdXNGaWxlU3lzdGVtKTsKLSAg
ICBSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IGZpbGVTeXN0ZW0gPSByZWFkRmlsZVN5c3RlbUhl
bHBlci5nZXRSZXN1bHQoZWMpOwotICAgIGlmICghZmlsZVN5c3RlbSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBSZWZQdHI8RW50cnlTeW5jPiBlbnRyeSA9IGZpbGVTeXN0ZW0tPnJvb3QoKS0+
Z2V0RGlyZWN0b3J5KGZpbGVQYXRoLCBEaWN0aW9uYXJ5KCksIGVjKTsKLSAgICBpZiAoZWMgPT0g
RmlsZUV4Y2VwdGlvbjo6VFlQRV9NSVNNQVRDSF9FUlIpCi0gICAgICAgIHJldHVybiBmaWxlU3lz
dGVtLT5yb290KCktPmdldEZpbGUoZmlsZVBhdGgsIERpY3Rpb25hcnkoKSwgZWMpOwotCi0gICAg
cmV0dXJuIGVudHJ5LnJlbGVhc2UoKTsKLX0KLQotQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8
aW50PihXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06OlRFTVBPUkFSWSkgPT0gc3RhdGljX2Nh
c3Q8aW50PihGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSksIGVudW1fbWlzbWF0Y2gpOwotQ09NUElM
RV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06OlBF
UlNJU1RFTlQpID09IHN0YXRpY19jYXN0PGludD4oRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50KSwg
ZW51bV9taXNtYXRjaCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmgJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3Jr
ZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKgotICovCi0KLSNpZm5kZWYgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVt
X2gKLSNkZWZpbmUgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtX2gKLQotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeUNh
bGxiYWNrOwotY2xhc3MgRW50cnlTeW5jOwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLWNsYXNzIEZp
bGVTeXN0ZW1DYWxsYmFjazsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwotCi1jbGFzcyBXb3Jr
ZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0gewotcHVibGljOgotICAgIGVudW0gewotICAgICAgICBU
RU1QT1JBUlksCi0gICAgICAgIFBFUlNJU1RFTlQsCi0gICAgfTsKLQotICAgIHN0YXRpYyB2b2lk
IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiwgaW50IHR5cGUsIGxv
bmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtU3luYz4gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFdvcmtlckdsb2Jh
bFNjb3BlKiwgaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
c3RhdGljIHZvaWQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJHbG9iYWxT
Y29wZSosIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RW50cnlTeW5jPiB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTChXb3Jr
ZXJHbG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7Ci0KLXBy
aXZhdGU6Ci0gICAgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtKCk7Ci0gICAgfldvcmtlckds
b2JhbFNjb3BlRmlsZVN5c3RlbSgpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gV29ya2VyR2xvYmFsU2Nv
cGVGaWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9X
b3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uaWRsCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29y
a2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKgotICovCi0KLVsKLSAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLV0gcGFy
dGlhbCBpbnRlcmZhY2UgV29ya2VyR2xvYmFsU2NvcGUgewotICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFRFTVBPUkFSWSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9
IDE7Ci0KLSAgICB2b2lkIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHVuc2lnbmVkIHNob3J0IHR5
cGUsIGxvbmcgbG9uZyBzaXplLCBvcHRpb25hbCBGaWxlU3lzdGVtQ2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIFtSYWlz
ZXNFeGNlcHRpb25dIERPTUZpbGVTeXN0ZW1TeW5jIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3lu
Yyh1bnNpZ25lZCBzaG9ydCB0eXBlLCBsb25nIGxvbmcgc2l6ZSk7Ci0gICAgdm9pZCB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKERPTVN0cmluZyB1cmwsIEVudHJ5Q2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAg
IFtSYWlzZXNFeGNlcHRpb25dIEVudHJ5U3luYyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVt
U3luY1VSTChET01TdHJpbmcgdXJsKTsKLQotICAgIGF0dHJpYnV0ZSBGaWxlRXJyb3JDb25zdHJ1
Y3RvciBGaWxlRXJyb3I7Ci0gICAgYXR0cmlidXRlIEZpbGVFeGNlcHRpb25Db25zdHJ1Y3RvciBG
aWxlRXhjZXB0aW9uOwotfTsKLQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU5
LDM2ICsxMzU5LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEaXJlY3RvcnlFbnRyeS5jcHAiPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2lu
Q2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGly
ZWN0b3J5RW50cnlTeW5jLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0RpcmVjdG9yeVJlYWRlci5jcHAiPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZm
aXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3Vm
Zml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5
UmVhZGVyU3luYy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNEb2N1bWVudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTQ3MywyMSArMTQ0Myw2IEBACiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRmls
ZVN5c3RlbS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRmlsZVN5c3RlbVN5bmMuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRm9ybURhdGEuY3Bw
Ij4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE3NDAs
NzggKzE2OTUsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJpZXNDYWxsYmFjay5jcHAiPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2lu
Q2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2lu
Q2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50
cnkuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0VudHJ5QXJyYXkuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5QXJyYXlTeW5jLmNw
cCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0VudHJ5Q2FsbGJhY2suY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5U3luYy5jcHAiIC8+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFcnJvckNhbGxiYWNrLmNw
cCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNFcnJvckV2ZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CkBAIC0xODk2LDkgKzE3NzksNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVDYWxs
YmFjay5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNGaWxlRW50cnkuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZUVudHJ5U3luYy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlRXJyb3IuY3BwIj4KICAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5NDMsNDkgKzE4
MjMsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0ZpbGVSZWFkZXJTeW5jLmNwcCIgLz4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVTeXN0ZW1DYWxsYmFjay5j
cHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTRmlsZVdyaXRlci5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVdyaXRlckNhbGxiYWNrLmNw
cCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0ZpbGVXcml0ZXJTeW5jLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250TG9hZGVyLmNwcCI+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0zNDQyLDM0ICszMjc5LDYgQEAK
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNNZXRhZGF0YS5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTWV0YWRhdGFDYWxsYmFjay5jcHAiPgot
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTTW91c2VFdmVudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgpAQCAtNjcyNiwyOCArNjUzNSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxodG1sXHRyYWNrXFZpZGVvVHJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFx0cmFja1xWaWRlb1RyYWNrTGlzdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxodG1sXHRyYWNrXFdlYlZUVEVsZW1lbnQuY3BwIiAvPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVjdG9yeUVudHJ5LmNwcCIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlF
bnRyeVN5bmMuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXERpcmVjdG9yeVJlYWRlci5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVBhdGguY3BwIiAv
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTUZpbGVT
eXN0ZW0uY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lz
dGVtXERPTUZpbGVTeXN0ZW1CYXNlLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxET01GaWxlU3lzdGVtU3luYy5jcHAiIC8+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRE9NV2luZG93RmlsZVN5c3RlbS5j
cHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50
cnkuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVt
XEVudHJ5QXJyYXkuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXEVudHJ5QXJyYXlTeW5jLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUJhc2UuY3BwIiAvPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5U3luYy5jcHAiIC8+Ci0gICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZUVudHJ5LmNwcCIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlRW50cnlT
eW5jLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3Rl
bVxGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlV3JpdGVyLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlV3JpdGVyQmFzZS5jcHAiIC8+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlclN5bmMu
Y3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXExv
Y2FsRmlsZVN5c3RlbS5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XGZpbGVzeXN0ZW1cV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2VvbG9jYXRpb25cQ29vcmRpbmF0ZXMuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnZW9sb2NhdGlvblxHZW9sb2Nh
dGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGdlb2xvY2F0
aW9uXEdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAiIC8+CkBAIC03MzYyLDcgKzcxNDksNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXE1lbW9y
eUNhY2hlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEFyZW5h
LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEFzeW5jRmlsZVN5
c3RlbS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDYWxjdWxh
dGlvblZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENs
b2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXENsb2NrR2Vu
ZXJpYy5jcHAiIC8+CkBAIC0xNjE4Niw4ICsxNTk3Miw2IEBACiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0
aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNFbnRyeUN1c3RvbS5jcHAiIC8+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0VudHJ5U3luY0N1c3Rv
bS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0Vycm9y
SGFuZGxlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgpAQCAtMTc2NzQsMTQgKzE3NDU4LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCI+Ci0g
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
LSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0g
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE4MDY0LDE4ICsxNzg0MCwxMiBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNc
SlNEZXZpY2VNb3Rpb25FdmVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXFdlYkNvcmVcRGVy
aXZlZFNvdXJjZXNcSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEaXJlY3RvcnlFbnRyeS5oIiAv
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGly
ZWN0b3J5RW50cnlTeW5jLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNEaXJlY3RvcnlSZWFkZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RpcmVjdG9yeVJlYWRlclN5bmMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Rv
Y3VtZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNEb2N1bWVudEZyYWdtZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEb2N1bWVudFR5cGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0RPTUNvcmVFeGNlcHRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUVycm9yLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01GaWxlU3lzdGVtLmgiIC8+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01GaWxlU3lz
dGVtU3luYy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTRE9NRm9ybURhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUltcGxlbWVudGF0aW9uLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01NaW1lVHlwZS5oIiAv
PgpAQCAtMTgwOTQsMzEgKzE3ODY0LDE3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFbGVtZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFbnRpdHkuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudGl0eVJlZmVyZW5jZS5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
RW50cmllc0NhbGxiYWNrLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNFbnRyeS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnlBcnJheS5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnlBcnJheVN5bmMuaCIgLz4K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5
Q2FsbGJhY2suaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0VudHJ5U3luYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRXJyb3JDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXJyb3JFdmVudC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXZlbnQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0V2
ZW50RXhjZXB0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNFdmVudFNvdXJjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXZlbnRUYXJnZXQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGUuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVDYWxsYmFj
ay5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTRmlsZUVudHJ5LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNGaWxlRW50cnlTeW5jLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlRXJyb3IuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVFeGNlcHRpb24uaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0Zp
bGVMaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNGaWxlUmVhZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlUmVhZGVyU3luYy5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVN5c3RlbUNhbGxiYWNrLmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNG
aWxlV3JpdGVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNGaWxlV3JpdGVyQ2FsbGJhY2suaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVXcml0ZXJTeW5jLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250TG9hZGVy
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNHZW9sb2NhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTR2VvcG9zaXRpb24uaCIgLz4KQEAgLTE4MjM1LDggKzE3OTkxLDYgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU01lc3Nh
Z2VDaGFubmVsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNNZXNzYWdlRXZlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU01lc3NhZ2VQb3J0LmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNNZXRhZGF0YS5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTWV0YWRhdGFD
YWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTTW91c2VFdmVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTTXV0YXRpb25FdmVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTXV0YXRpb25PYnNlcnZlci5oIiAv
PgpAQCAtMTg1OTksNDMgKzE4MzUzLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0
bWxcdHJhY2tcVmlkZW9UcmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRt
bFx0cmFja1xWaWRlb1RyYWNrTGlzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFx0cmFja1xXZWJWVFRFbGVtZW50LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cQXN5bmNGaWxlV3JpdGVyQ2xpZW50Lmgi
IC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0
b3J5RW50cnkuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5
c3RlbVxEaXJlY3RvcnlFbnRyeVN5bmMuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlSZWFkZXIuaCIgLz4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlSZWFkZXJCYXNlLmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5
UmVhZGVyU3luYy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXERPTUZpbGVQYXRoLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVN5c3RlbS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTUZpbGVTeXN0ZW1CYXNlLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVN5c3RlbVN5bmMu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01X
aW5kb3dGaWxlU3lzdGVtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XGZpbGVzeXN0ZW1cRW50cmllc0NhbGxiYWNrLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnkuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUFycmF5LmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlBcnJheVN5bmMuaCIgLz4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUJhc2UuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUNh
bGxiYWNrLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRW50cnlTeW5jLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZp
bGVzeXN0ZW1cRXJyb3JDYWxsYmFjay5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVDYWxsYmFjay5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVFbnRyeS5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVFbnRyeVN5bmMuaCIgLz4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlU3lzdGVtQ2Fs
bGJhY2suaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3Rl
bVxGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVN5c3RlbUZsYWdzLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVN5c3RlbVR5cGUuaCIgLz4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlV3JpdGVyLmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRl
ckJhc2UuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3Rl
bVxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlckNhbGxiYWNrLmgiIC8+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRlclN5bmMuaCIgLz4K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxMb2NhbEZpbGVT
eXN0ZW0uaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3Rl
bVxNZXRhZGF0YS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXE1ldGFkYXRhQ2FsbGJhY2suaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxTeW5jQ2FsbGJhY2tIZWxwZXIuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxXb3JrZXJHbG9iYWxTY29wZUZpbGVT
eXN0ZW0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2VvbG9jYXRp
b25cQ29vcmRpbmF0ZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNc
Z2VvbG9jYXRpb25cR2VvbG9jYXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcZ2VvbG9jYXRpb25cR2VvbG9jYXRpb25DbGllbnQuaCIgLz4KQEAgLTE4OTYwLDgg
KzE4Njc3LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNo
ZVBvbGljeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXE1l
bW9yeUNhY2hlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxBcmVu
YS5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQXN5bmNGaWxlU3lz
dGVtLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XENhbGN1bGF0aW9uVmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXENsb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDbG9j
a0dlbmVyaWMuaCIgLz4KQEAgLTIwODM1LDcgKzIwNTUwLDYgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JET01BZ2VudC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5
KQpAQCAtMzAzLDcyICszMDMsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcanNcSlNJREJBbnlDdXN0b20uY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlFbnRyeS5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1
bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlFbnRyeVN5bmMuY3BwIj4K
LSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0
b3J5UmVhZGVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVy
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXERpcmVjdG9yeVJlYWRlclN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxl
c1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVBhdGguY3BwIj4KLSAgICAgIDxG
aWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRE9NRmlsZVN5c3RlbS5j
cHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxE
T01GaWxlU3lzdGVtQmFzZS5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcZmlsZXN5c3RlbVxET01GaWxlU3lzdGVtU3luYy5jcHAiPgotICAgICAgPEZpbHRlcj5N
b2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01XaW5kb3dGaWxlU3lzdGVtLmNw
cCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xD
b21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVu
dHJ5LmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAg
IDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lz
dGVtXEVudHJ5QXJyYXkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9G
aWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1
bGVzXGZpbGVzeXN0ZW1cRW50cnlBcnJheVN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxl
c1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlCYXNlLmNwcCI+Ci0gICAgICA8Rmls
dGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5U3luYy5jcHAiPgot
ICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlRW50
cnkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRmlsZUVudHJ5U3luYy5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1v
ZHVsZXNcZmlsZXN5c3RlbVxGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCI+Ci0gICAgICA8RmlsdGVy
Pk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVXcml0ZXIuY3BwIj4KLSAg
ICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRl
ckJhc2UuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0g
ICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVz
eXN0ZW1cRmlsZVdyaXRlclN5bmMuY3BwIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lz
dGVtPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cTG9jYWxGaWxlU3lzdGVtLmNwcCI+Ci0gICAgICA8RmlsdGVy
Pk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXFdvcmtlckdsb2JhbFNjb3BlRmls
ZVN5c3RlbS5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4K
LSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2Vv
bG9jYXRpb25cQ29vcmRpbmF0ZXMuY3BwIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlc1xnZW9sb2Nh
dGlvbjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTA2Miw5ICs5OTYsNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQXJlbmEuY3BwIj4KICAgICAgIDxGaWx0
ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXEFzeW5jRmlsZVN5c3RlbS5jcHAiPgotICAgICAgPEZpbHRlcj5w
bGF0Zm9ybTwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cQ2FsY3VsYXRpb25WYWx1ZS5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDQ0Niw5ICs0Mzc3LDYgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0VudHJ5U3luY0N1
c3RvbS5jcHAiPgotICAgICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNFcnJvckhh
bmRsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YmluZGluZ3NcanM8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTUyMjMsOSArNTE1MSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xqc1xKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAiPgogICAgICAgPEZpbHRlcj5i
aW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcSlNFbnRyeUN1c3RvbS5jcHAiPgotICAgICAgPEZpbHRlcj5i
aW5kaW5nc1xqczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dCYXNlLmNwcCI+CiAgICAgICA8RmlsdGVy
PmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01NDkxLDE4ICs1NDE2
LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudC5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5RW50cnkuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVy
aXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RpcmVjdG9yeUVudHJ5U3luYy5jcHAi
PgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGly
ZWN0b3J5UmVhZGVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCI+Ci0gICAgICA8RmlsdGVyPkRl
cml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNEb2N1bWVudC5jcHAiPgogICAgICAg
PEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTUy
MSwxMiArNTQzNCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNET01FcnJvci5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRmlsZVN5c3RlbS5jcHAiPgotICAgICAgPEZpbHRlcj5E
ZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRmlsZVN5c3RlbVN5bmMuY3Bw
Ij4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RP
TUZvcm1EYXRhLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CkBAIC01NTgxLDI3ICs1NDg4LDYgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudGl0eVJlZmVyZW5jZS5jcHAiPgog
ICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cmll
c0NhbGxiYWNrLmNwcCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0g
ICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNFbnRyeS5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRW50cnlBcnJheS5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVk
U291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnlBcnJheVN5bmMuY3BwIj4KLSAgICAg
IDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0VudHJ5Q2FsbGJh
Y2suY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0VudHJ5U3luYy5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVy
PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRXJyb3JDYWxsYmFjay5jcHAiPgotICAgICAgPEZpbHRlcj5EZXJpdmVk
U291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXJyb3JFdmVudC5jcHAiPgogICAgICAgPEZp
bHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTYyMCwx
NSArNTUwNiw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNGaWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNGaWxlQ2FsbGJhY2suY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNv
dXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVFbnRyeS5jcHAiPgotICAgICAgPEZpbHRl
cj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZUVudHJ5U3luYy5jcHAi
PgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmls
ZUVycm9yLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC01NjQ0LDE4ICs1NTIxLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVSZWFkZXJTeW5jLmNwcCI+CiAgICAg
ICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlU3lzdGVt
Q2FsbGJhY2suY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0ZpbGVXcml0ZXIuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVXcml0ZXJDYWxsYmFjay5jcHAiPgotICAgICAgPEZp
bHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVdyaXRlclN5bmMu
Y3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0ZvbnRMb2FkZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTU5NjgsMTIgKzU4MzMsNiBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTWVzc2FnZVBvcnQuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU01ldGFkYXRh
LmNwcCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbENv
bXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNNZXRhZGF0YUNhbGxiYWNrLmNwcCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9G
aWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNNb3VzZUV2ZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2
ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03MDMyLDExNyArNjg5MSw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5m
by5jcHAiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEFzeW5jRmlsZVdyaXRlci5oIj4KLSAgICAg
IDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50LmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4K
LSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmls
ZXN5c3RlbVxEaXJlY3RvcnlFbnRyeS5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lz
dGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5RW50cnlTeW5jLmgiPgotICAgICAgPEZpbHRl
cj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlSZWFkZXIuaCI+
Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNs
dWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVj
dG9yeVJlYWRlckJhc2UuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1xmaWxlc3lzdGVtXERpcmVjdG9yeVJlYWRlclN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVs
ZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTUZpbGVQYXRoLmgiPgotICAgICAgPEZp
bHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01GaWxlU3lzdGVtLmgi
PgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxET01G
aWxlU3lzdGVtQmFzZS5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XGZpbGVzeXN0ZW1cRE9NRmlsZVN5c3RlbVN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNc
ZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERPTVdpbmRvd0ZpbGVTeXN0ZW0uaCI+Ci0gICAg
ICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJpZXNDYWxs
YmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRW50cnkuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXEVudHJ5QXJyYXkuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9k
dWxlc1xmaWxlc3lzdGVtXEVudHJ5QXJyYXlTeW5jLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVz
XGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUJhc2UuaCI+Ci0gICAgICA8RmlsdGVy
Pk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5Q2FsbGJhY2suaCI+Ci0g
ICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5U3lu
Yy5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1c
RXJyb3JDYWxsYmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XGZpbGVzeXN0ZW1cRmlsZUNhbGxiYWNrLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGZpbGVz
eXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlRW50cnkuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVs
ZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVFbnRyeVN5bmMuaCI+Ci0gICAgICA8
RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVTeXN0ZW1DYWxs
YmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRmlsZVN5c3RlbUNhbGxiYWNrcy5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lz
dGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVN5c3RlbUZsYWdzLmgiPgotICAgICAgPEZpbHRlcj5N
b2R1bGVzXGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxGaWxlU3lzdGVtVHlwZS5oIj4KLSAg
ICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdyaXRl
ci5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1c
RmlsZVdyaXRlckJhc2UuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxl
c1xmaWxlc3lzdGVtXEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCI+Ci0gICAgICA8RmlsdGVyPk1v
ZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEZpbGVXcml0ZXJDYWxsYmFjay5oIj4K
LSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1
ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVdy
aXRlclN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgot
ICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxl
c3lzdGVtXExvY2FsRmlsZVN5c3RlbS5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lz
dGVtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxNb2R1bGVzXGZpbGVzeXN0ZW1cTWV0YWRhdGEuaCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNc
ZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXE1ldGFkYXRhQ2FsbGJhY2suaCI+Ci0gICAgICA8
RmlsdGVyPk1vZHVsZXNcZmlsZXN5c3RlbTwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXFN5bmNDYWxsYmFja0hl
bHBlci5oIj4KLSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xmaWxlc3lzdGVtPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmgiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVz
XGZpbGVzeXN0ZW08L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcZ2VvbG9jYXRpb25cQ29vcmRpbmF0ZXMuaCI+CiAgICAgICA8Rmls
dGVyPk1vZHVsZXNcZ2VvbG9jYXRpb248L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTgw
MjgsMTIgKzc3NzYsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cQXJl
bmEuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxBc3luY0ZpbGVTeXN0ZW0uaCI+
Ci0gICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
aCI+Ci0gICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxDYWxjdWxhdGlvblZhbHVlLmgiPgog
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTMy
NTYsMTggKzEyOTk4LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxXZWJDb3JlXERlcml2ZWRTb3Vy
Y2VzXEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNv
dXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RpcmVjdG9yeUVudHJ5LmgiPgotICAgICAgPEZp
bHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5RW50cnlT
eW5jLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTRGlyZWN0b3J5UmVhZGVyLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRGlyZWN0b3J5UmVhZGVyU3luYy5oIj4KLSAgICAgIDxGaWx0ZXI+
RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RvY3VtZW50LmgiPgogICAgICAg
PEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTMy
ODYsMTIgKzEzMDE2LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0RPTUVycm9yLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRmlsZVN5c3RlbS5oIj4KLSAgICAgIDxGaWx0ZXI+RGVy
aXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUZpbGVTeXN0ZW1TeW5jLmgiPgot
ICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRm9y
bURhdGEuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CkBAIC0xMzM0NiwyNyArMTMwNzAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50aXR5UmVmZXJlbmNlLmgiPgogICAgICAg
PEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cmllc0NhbGxi
YWNrLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTRW50cnkuaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNFbnRyeUFycmF5LmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTRW50cnlBcnJheVN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2
ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFbnRyeUNhbGxiYWNrLmgiPgotICAgICAg
PEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRW50cnlTeW5jLmgi
PgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXJy
b3JDYWxsYmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0Vycm9yRXZlbnQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMzM4NSwxNSArMTMwODgsNiBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZS5oIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0ZpbGVDYWxs
YmFjay5oIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KLSAgICA8L0Ns
SW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU0ZpbGVFbnRyeS5oIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4K
LSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0ZpbGVFbnRyeVN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3Vy
Y2VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlRXJyb3IuaCI+CiAgICAgICA8RmlsdGVyPkRl
cml2ZWRTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMzQwOSwxOCArMTMx
MDMsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTRmlsZVJlYWRlclN5bmMuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNGaWxlU3lzdGVtQ2FsbGJhY2suaCI+Ci0gICAgICA8RmlsdGVyPkRl
cml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNGaWxlV3JpdGVyLmgiPgotICAgICAg
PEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRmlsZVdyaXRlckNh
bGxiYWNrLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTRmlsZVdyaXRlclN5bmMuaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9G
aWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNGb250TG9hZGVyLmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVk
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTM3MjcsMTIgKzEzNDA5LDYg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU01l
c3NhZ2VQb3J0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTTWV0YWRhdGEuaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNNZXRhZGF0YUNhbGxiYWNrLmgiPgotICAgICAgPEZpbHRlcj5EZXJp
dmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTTW91c2VFdmVudC5oIj4KICAgICAgIDxG
aWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTE3LDggKzUxNyw2IEBACiAJCTE1Qzc3MDk0
MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVDNzcwOTIxMDBEM0NBODAwNUJBMjY3IC8q
IEpTVmFsaWRpdHlTdGF0ZS5jcHAgKi87IH07CiAJCTE1Qzc3MEE1MTAwRDQxQ0QwMDVCQTI2NyAv
KiBET01WYWxpZGl0eVN0YXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTVDNzcwQTMxMDBENDFDRDAwNUJBMjY3IC8qIERPTVZhbGlkaXR5U3RhdGUu
bW0gKi87IH07CiAJCTE1Qzc3MEE2MTAwRDQxQ0QwMDVCQTI2NyAvKiBET01WYWxpZGl0eVN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUM3NzBB
NDEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5oICovOyB9OwotCQkxNUQxN0Qy
MTE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1RDE3RDFFMTQ3MjMxRUIw
MDVFQkNBNiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwICovOyB9OwotCQkxNUQxN0Qy
MjE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNUQxN0QxRjE0NzIzMUVCMDA1
RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggKi87IH07CiAJCTE2M0U4OEY3MTE4
QTM5RDIwMEVEOTIzMSAvKiBTaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE2M0U4OEY1MTE4QTM5RDIwMEVEOTIz
MSAvKiBTaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCAqLzsgfTsKIAkJMTg1QkNGMjgwRjMyNzlD
RTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxODVCQ0YyNjBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGlt
ZXJzLmNwcCAqLzsgfTsKIAkJMTg1QkNGMjkwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTg1QkNG
MjcwRjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovOyB9OwpAQCAtMTM2MSwxNCAr
MTM1OSwxMCBAQAogCQk0NUJBQzJCMDEzNjBCQkFCMDA1REEyNTggLyogSWNvblVSTC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDVCQUMyQUYxMzYwQkJB
QjAwNURBMjU4IC8qIEljb25VUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NUZFQTVDRjE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUZFQTVDRDE1
NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5jcHAgKi87IH07CiAJCTQ1RkVBNUQwMTU2RERFOEMw
MDY1NDEwMSAvKiBEZWNpbWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NUZFQTVDRTE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ2NzAwRUQxMTI3Qjk2
Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MDBFQ0YxMjdCOTZDQjAwRjVENUQ2IC8qIEZpbGVXcml0
ZXJTeW5jLmggKi87IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlG
MUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgfTsKLQkJNDZCQzcyNEYx
MjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVXcml0ZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJDNzI0QzEyOUIxMDRDMDA3MUMwN0UgLyogRmls
ZVdyaXRlckJhc2UuaCAqLzsgfTsKLQkJNDZCQzcyNTAxMjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVX
cml0ZXJCYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QkM3MjREMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZUNhbGxi
YWNrLmggKi87IH07CiAJCTQ2QkQxNkUzMEIyNzk0NzMwMDFGMDgzOSAvKiBub25lQ3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRDE2
RTIwQjI3OTQ3MzAwMUYwODM5IC8qIG5vbmVDdXJzb3IucG5nICovOyB9OwogCQk0NkQ0RjI0OTBB
Rjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDRGMjQ2MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxs
Q3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZENEYyNEIwQUY5N0U4MTAwMzUzODVBIC8qIHZlcnRpY2Fs
VGV4dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RDRGMjQ4MEFGOTdFODEwMDM1Mzg1QSAvKiB2ZXJ0aWNhbFRleHRDdXJzb3IucG5n
ICovOyB9OwotCQk0NkRBODQ0RTEyMjRBMDcxMDA2MEQwMDYgLyogSlNGaWxlV3JpdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRBODQ0QzEyMjRB
MDcxMDA2MEQwMDYgLyogSlNGaWxlV3JpdGVyLmggKi87IH07CiAJCTQ2RjlENUREMEIwRDYwMTcw
MDI4RUUzNiAvKiBhbGlhc0N1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlENURBMEIwRDYwMTcwMDI4RUUzNiAvKiBhbGlhc0N1cnNv
ci5wbmcgKi87IH07CiAJCTQ2RjlENURGMEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9ncmVzc0N1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjlENURDMEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9ncmVzc0N1cnNvci5wbmcgKi87IH07CiAJCTQ5
MDcwN0U2MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3MDdFNDEyMTlDMDQzMDBE
OTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovOyB9OwpAQCAtMjc0MSw2OCArMjczNSwx
MyBAQAogCQk4NkQ5ODJGNzEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDk4MkY2MTI1QzE1
NDAwMEFEOUUzRCAvKiBEb2N1bWVudFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2RkY4ODYxMTVERTNEMDcwMEJENkIyOCAvKiBSZW5k
ZXJUZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZGRjg4NUUxNURFM0I4MjAwQkQ2QjI4IC8qIFJlbmRlclRleHRUcmFja0N1ZS5j
cHAgKi87IH07CiAJCTg2RkY4ODYyMTVERTNEMDcwMEJENkIyOCAvKiBSZW5kZXJUZXh0VHJhY2tD
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RkY4
ODVGMTVERTNCODIwMEJENkIyOCAvKiBSZW5kZXJUZXh0VHJhY2tDdWUuaCAqLzsgfTsKLQkJODkw
QUUwRTExMjU2QTA3OTAwRjU5NjhDIC8qIERpcmVjdG9yeVJlYWRlckJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5MEFFMEUwMTI1NkEwNzkwMEY1
OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi87IH07CiAJCTg5MzFERTVCMTRDNDRDNDQw
MDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3Rv
bS5jcHAgKi87IH07Ci0JCTg5M0M0N0E3MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0E1
MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlQ2FsbGJhY2suaCAqLzsgfTsKLQkJODkzQzQ3QTgxMjM4
OTA4QjAwMkIzRDg2IC8qIEZpbGVXcml0ZXJDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3QTYxMjM4OTA4QjAwMkIzRDg2IC8qIEZp
bGVXcml0ZXJDYWxsYmFjay5oICovOyB9OwotCQk4OTNDNDdCODEyMzhBMDk5MDAyQjNEODYgLyog
SlNGaWxlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5M0M0N0I2MTIzOEEwOTkwMDJCM0Q4NiAvKiBKU0ZpbGVDYWxsYmFjay5oICovOyB9
OwotCQk4OTNDNDdCQjEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3Qjkx
MjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCAqLzsgfTsKLQkJODkz
QzQ3QkMxMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdCQTEyMzhBMEE5MDAy
QjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLzsgfTsKLQkJODkzQzQ4MDExMjQ4QkQz
QTAwMkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3RjExMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVj
dG9yeUVudHJ5U3luYy5oICovOyB9OwotCQk4OTNDNDgwMjEyNDhCRDNBMDAyQjNEODYgLyogRGly
ZWN0b3J5UmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4OTNDNDdGMjEyNDhCRDM5MDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVyU3lu
Yy5jcHAgKi87IH07Ci0JCTg5M0M0ODAzMTI0OEJEM0EwMDJCM0Q4NiAvKiBEaXJlY3RvcnlSZWFk
ZXJTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
OTNDNDdGMzEyNDhCRDM5MDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5oICovOyB9Owot
CQk4OTNDNDgwNTEyNDhCRDNBMDAyQjNEODYgLyogRE9NRmlsZVN5c3RlbUJhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0Y1MTI0OEJEMzkw
MDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtQmFzZS5oICovOyB9OwotCQk4OTNDNDgwNzEyNDhCRDNB
MDAyQjNEODYgLyogRE9NRmlsZVN5c3RlbVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0Y3MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxl
U3lzdGVtU3luYy5oICovOyB9OwotCQk4OTNDNDgwOTEyNDhCRDNBMDAyQjNEODYgLyogRW50cnlB
cnJheVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg5M0M0N0Y5MTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeUFycmF5U3luYy5oICovOyB9OwotCQk4
OTNDNDgwQjEyNDhCRDNBMDAyQjNEODYgLyogRW50cnlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdGQjEyNDhCRDM5MDAyQjNEODYgLyog
RW50cnlCYXNlLmggKi87IH07Ci0JCTg5M0M0ODBEMTI0OEJEM0EwMDJCM0Q4NiAvKiBFbnRyeVN5
bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0
N0ZEMTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeVN5bmMuaCAqLzsgfTsKLQkJODkzQzQ4MEYxMjQ4
QkQzQTAwMkIzRDg2IC8qIEZpbGVFbnRyeVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0N0ZGMTI0OEJEMzkwMDJCM0Q4NiAvKiBGaWxlRW50
cnlTeW5jLmggKi87IH07Ci0JCTg5M0M0ODMzMTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9y
eUVudHJ5U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODkzQzQ4MjcxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5RW50cnlTeW5jLmggKi87
IH07Ci0JCTg5M0M0ODM0MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeVJlYWRlclN5bmMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ4
MjgxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgKi87IH07Ci0J
CTg5M0M0ODM1MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeVJlYWRlclN5bmMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0ODI5MTI0OTU0
NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeVJlYWRlclN5bmMuaCAqLzsgfTsKLQkJODkzQzQ4Mzcx
MjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRE9NRmlsZVN5c3RlbVN5bmMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0ODJCMTI0OTU0NzIwMDJCM0Q4NiAv
KiBKU0RPTUZpbGVTeXN0ZW1TeW5jLmggKi87IH07Ci0JCTg5M0M0ODM5MTI0OTU0NzIwMDJCM0Q4
NiAvKiBKU0VudHJ5QXJyYXlTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4OTNDNDgyRDEyNDk1NDcyMDAyQjNEODYgLyogSlNFbnRyeUFycmF5U3lu
Yy5oICovOyB9OwotCQk4OTNDNDgzQjEyNDk1NDcyMDAyQjNEODYgLyogSlNFbnRyeVN5bmMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0ODJGMTI0
OTU0NzIwMDJCM0Q4NiAvKiBKU0VudHJ5U3luYy5oICovOyB9OwotCQk4OTNDNDgzRDEyNDk1NDcy
MDAyQjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDgzMTEyNDk1NDcyMDAyQjNEODYgLyogSlNGaWxlRW50
cnlTeW5jLmggKi87IH07Ci0JCTg5ODc4NTUzMTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlF
bnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4
Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5LmggKi87IH07Ci0JCTg5ODc4
NTU1MTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTNDMTIyQ0EwNjQwMDNBQUJEQSAv
KiBEaXJlY3RvcnlSZWFkZXIuaCAqLzsgfTsKLQkJODk4Nzg1NTcxMjJDQTA2NDAwM0FBQkRBIC8q
IERPTUZpbGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4OTg3ODUzRTEyMkNBMDY0MDAzQUFCREEgLyogRE9NRmlsZVBhdGguaCAqLzsgfTsKLQkJ
ODk4Nzg1NTkxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTQwMTIyQ0EwNjQwMDNBQUJE
QSAvKiBET01GaWxlU3lzdGVtLmggKi87IH07Ci0JCTg5ODc4NTVBMTIyQ0EwNjQwMDNBQUJEQSAv
KiBFbnRyaWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg5ODc4NTQxMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyaWVzQ2FsbGJhY2suaCAq
LzsgfTsKLQkJODk4Nzg1NUMxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU0MzEyMkNBMDY0MDAzQUFC
REEgLyogRW50cnkuaCAqLzsgfTsKLQkJODk4Nzg1NUUxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5
QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
ODc4NTQ1MTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeUFycmF5LmggKi87IH07Ci0JCTg5ODc4NTVG
MTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU0NjEyMkNBMDY0MDAzQUFCREEgLyogRW50
cnlDYWxsYmFjay5oICovOyB9OwotCQk4OTg3ODU2MDEyMkNBMDY0MDAzQUFCREEgLyogRXJyb3JD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODk4Nzg1NDcxMjJDQTA2NDAwM0FBQkRBIC8qIEVycm9yQ2FsbGJhY2suaCAqLzsgfTsKLQkJODk4
Nzg1NjIxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1NDkxMjJDQTA2NDAwM0FBQkRBIC8qIEZp
bGVFbnRyeS5oICovOyB9OwotCQk4OTg3ODU2MzEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3Rl
bUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4OTg3ODU0QTEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxiYWNrLmggKi87IH07
Ci0JCTg5ODc4NTY0MTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTRCMTIy
Q0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCAqLzsgfTsKLQkJODk4Nzg1
NjUxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFja3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTRDMTIyQ0EwNjQwMDNBQUJE
QSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi87IH07Ci0JCTg5ODc4NTY2MTIyQ0EwNjQwMDNB
QUJEQSAvKiBGaWxlU3lzdGVtRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg5ODc4NTREMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtRmxh
Z3MuaCAqLzsgfTsKLQkJODk4Nzg1NjgxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3Rl
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1
NEYxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5oICovOyB9OwotCQk4OTg3ODU2
OTEyMkNBMDY0MDAzQUFCREEgLyogTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0
YS5oICovOyB9OwotCQk4OTg3ODU2QTEyMkNBMDY0MDAzQUFCREEgLyogTWV0YWRhdGFDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1
NTExMjJDQTA2NDAwM0FBQkRBIC8qIE1ldGFkYXRhQ2FsbGJhY2suaCAqLzsgfTsKLQkJODk4Nzg1
OEIxMjJDQTI2QTAwM0FBQkRBIC8qIEpTRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTg3MTIyQ0EyNkEwMDNBQUJEQSAv
KiBKU0RpcmVjdG9yeUVudHJ5LmggKi87IH07Ci0JCTg5ODc4NThEMTIyQ0EyNkEwMDNBQUJEQSAv
KiBKU0RpcmVjdG9yeVJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODk4Nzg1ODkxMjJDQTI2QTAwM0FBQkRBIC8qIEpTRGlyZWN0b3J5UmVhZGVy
LmggKi87IH07Ci0JCTg5ODc4NUE1MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0RPTUZpbGVTeXN0ZW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NThG
MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0RPTUZpbGVTeXN0ZW0uaCAqLzsgfTsKLQkJODk4Nzg1QTcx
MjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU5MTEyMkNBMkE3MDAzQUFCREEgLyog
SlNFbnRyaWVzQ2FsbGJhY2suaCAqLzsgfTsKLQkJODk4Nzg1QTkxMjJDQTJBNzAwM0FBQkRBIC8q
IEpTRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg5ODc4NTkzMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0VudHJ5LmggKi87IH07Ci0JCTg5ODc4NUFC
MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0VudHJ5QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTk1MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0Vu
dHJ5QXJyYXkuaCAqLzsgfTsKLQkJODk4Nzg1QUQxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50cnlD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODk4Nzg1OTcxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50cnlDYWxsYmFjay5oICovOyB9OwotCQk4
OTg3ODVBRjEyMkNBMkE3MDAzQUFCREEgLyogSlNFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU5OTEyMkNBMkE3MDAzQUFC
REEgLyogSlNFcnJvckNhbGxiYWNrLmggKi87IH07Ci0JCTg5ODc4NUIxMTIyQ0EyQTcwMDNBQUJE
QSAvKiBKU0ZpbGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODk4Nzg1OUIxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRmlsZUVudHJ5LmggKi87IH07
Ci0JCTg5ODc4NUIyMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0ZpbGVTeXN0ZW1DYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU5QzEy
MkNBMkE3MDAzQUFCREEgLyogSlNGaWxlU3lzdGVtQ2FsbGJhY2suY3BwICovOyB9OwotCQk4OTg3
ODVCMzEyMkNBMkE3MDAzQUFCREEgLyogSlNGaWxlU3lzdGVtQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NTlEMTIyQ0EyQTcwMDNB
QUJEQSAvKiBKU0ZpbGVTeXN0ZW1DYWxsYmFjay5oICovOyB9OwotCQk4OTg3ODVCNzEyMkNBMkE3
MDAzQUFCREEgLyogSlNNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODk4Nzg1QTExMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGEuaCAq
LzsgfTsKLQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGFDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1QTMx
MjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGFDYWxsYmFjay5oICovOyB9OwogCQk4OTg3ODVG
MDEyMkUxRTg3MDAzQUFCREEgLyogSlNGaWxlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NUVFMTIyRTFFODcwMDNBQUJEQSAv
KiBKU0ZpbGVFeGNlcHRpb24uY3BwICovOyB9OwogCQk4OTg3ODVGMTEyMkUxRTg3MDAzQUFCREEg
LyogSlNGaWxlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4OTg3ODVFRjEyMkUxRTg3MDAzQUFCREEgLyogSlNGaWxlRXhjZXB0aW9uLmgg
Ki87IH07CiAJCTg5ODc4NUY0MTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NUYy
MTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLzsgfTsKIAkJODk4Nzg1
RjUxMjJFMUVBQzAwM0FBQkRBIC8qIEpTRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NUYzMTIyRTFFQUMwMDNBQUJEQSAv
KiBKU0ZpbGVSZWFkZXJTeW5jLmggKi87IH07CiAJCTg5QjVFQUExMTFFODAwM0QwMEYyMzY3RSAv
KiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5QjVFQTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLzsgfTsK
IAkJODlCNUVBQTIxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QjVFQUEwMTFFODAwM0QwMEYyMzY3
RSAvKiBMaW5lRW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJODlDN0MyRTExNTU4MDRGNDAwN0Q1QTdCIC8qIEZpbGVTeXN0ZW1UeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUM3QzJFMDE1
NTgwNEY0MDA3RDVBN0IgLyogRmlsZVN5c3RlbVR5cGUuaCAqLzsgfTsKLQkJODlEMDhEQTAxMjIy
ODQ1MTAwMTI0MURGIC8qIEFzeW5jRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlEMDhEOUQxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5j
RmlsZVN5c3RlbS5oICovOyB9OwotCQk4OUQwOERBMTEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4OUQwOEQ5RTEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmggKi87IH07CiAJCTg5RjYwQjExMTU3RjY4NkUwMDc1RTE1NyAvKiBET01XaW5kb3dR
dW90YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlG
NjBCMEExNTdGNjg2RDAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3RhLmggKi87IH07CiAJCTg5RjYw
Q0RBMTU4MDlENzYwMDc1RTE1NyAvKiBKU1N0b3JhZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUY2MENEMjE1ODA5RDc2MDA3NUUxNTcgLyog
SlNTdG9yYWdlSW5mby5oICovOyB9OwogCQk4QTEyRTM1RDExRkEzMzI4MDAyNTgzNkEgLyogRG9j
dW1lbnRMb2FkVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEgLyogRG9jdW1lbnRMb2FkVGltaW5nLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMjAs
NyArMzE1OSw2IEBACiAJCTk3NjY1MDRGMTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZhY3Rvcnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2NjUw
NEUxNDRGQkZGRTAwRjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCTk3NjdDRTBC
MTQ1QUJDMTMwMDVFNjREQiAvKiBFeGNlcHRpb25IZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzY3Q0UwOTE0NUFCQzEyMDA1RTY0REIgLyog
RXhjZXB0aW9uSGVhZGVycy5oICovOyB9OwogCQk5NzY3Q0UwQzE0NUFCQzEzMDA1RTY0REIgLyog
RXhjZXB0aW9uSW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc2N0NFMEExNDVBQkMxMzAwNUU2NERCIC8qIEV4Y2VwdGlvbkludGVyZmFj
ZXMuaCAqLzsgfTsKLQkJOTc2RDZDNzcxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZD
NTgxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oICovOyB9OwogCQk5NzZENkM3
ODEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAg
Ki87IH07CiAJCTk3NkQ2Qzc5MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1QTEyMkI4QTNEMDAxRkQx
RjcgLyogQmxvYi5oICovOyB9OwogCQk5NzZENkM3QjEyMkI4QTNEMDAxRkQxRjcgLyogV2ViS2l0
QmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTc2RDZDNUMxMjJCOEEzRDAwMUZEMUY3IC8qIFdlYktpdEJsb2JCdWlsZGVyLmNwcCAq
LzsgfTsKQEAgLTMyMzcsOCArMzE3NSw2IEBACiAJCTk3NkQ2QzhEMTIyQjhBM0QwMDFGRDFGNyAv
KiBGaWxlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3NkQ2QzZFMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkLmNwcCAqLzsgfTsK
IAkJOTc2RDZDOEUxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVUaHJlYWQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzZGMTIyQjhBM0QwMDFGRDFG
NyAvKiBGaWxlVGhyZWFkLmggKi87IH07CiAJCTk3NkQ2QzhGMTIyQjhBM0QwMDFGRDFGNyAvKiBG
aWxlVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTc2RDZDNzAxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVUaHJlYWRUYXNrLmggKi87IH07
Ci0JCTk3NkQ2QzkxMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlV3JpdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM3MjEyMkI4QTNEMDAxRkQx
RjcgLyogRmlsZVdyaXRlci5oICovOyB9OwotCQk5NzZENkM5MzEyMkI4QTNEMDAxRkQxRjcgLyog
QXN5bmNGaWxlV3JpdGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzZENkM3NDEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVy
Q2xpZW50LmggKi87IH07CiAJCTk3NkQ2Qzk0MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3NkQ2Qzc1MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmNwcCAqLzsgfTsKIAkJOTc2RDZDOTUxMjJCOEEzRDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9i
UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3NkQ2Qzc2MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggKi87
IH07CiAJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RjM2RTgxNDY4
NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5jcHAgKi87IH07CkBAIC02OTMzLDkgKzY4
NjksNyBAQAogCQkxNDk5M0JFMzBCMkYyQjFDMDA1MDQ5N0YgLyogRm9jdXNDb250cm9sbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb2N1c0NvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDk5M0JFNDBCMkYyQjFDMDA1MDQ5
N0YgLyogRm9jdXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb2N1c0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRBOThF
MDUxMzYzODZBMjAwQzlGRUQyIC8qIEJsb2IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEJs
b2IuaWRsOyBwYXRoID0gZmlsZWFwaS9CbG9iLmlkbDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwotCQkxNEJERjU5NzEzNjUzOTJDMDAxNDgzOTMgLyogRE9NRmlsZVN5c3RlbS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRE9NRmlsZVN5c3RlbS5pZGw7IHBhdGggPSBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5pZGw7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJMTRCREY1OUExMzY1Mzk5MTAwMTQ4MzkzIC8qIEZpbGVSZWFkZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IEZpbGVSZWFkZXIuaWRsOyBwYXRoID0gZmlsZWFwaS9GaWxlUmVhZGVyLmlk
bDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQkxNEJERjU5QzEzNjUzOUJFMDAxNDgz
OTMgLyogRmlsZVdyaXRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZVdyaXRlci5p
ZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5pZGw7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJMTRDOUE1RTkwQjNEMTA1RjAwNUEwMjMyIC8qIFNldHRpbmdz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXR0aW5ncy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAv
KiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0Q0Y3ODcxMDlGNTg3Q0EwMEVCMzY2NSAvKiBDU1NWYWx1ZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IENTU1ZhbHVlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTY5NzAsOCArNjkwNCw2IEBACiAJCTE1Qzc3MDkyMTAwRDNDQTgwMDVCQTI2NyAvKiBKU1Zh
bGlkaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNW
YWxpZGl0eVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVDNzcwQTMx
MDBENDFDRDAwNUJBMjY3IC8qIERPTVZhbGlkaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01WYWxpZGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNUM3NzBBNDEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01WYWxpZGl0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE1RDE3RDFFMTQ3MjMxRUIwMDVFQkNB
NiAvKiBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMTVEMTdEMUYxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTYzRTg4
RjUxMThBMzlEMjAwRUQ5MjMxIC8qIFNpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE4NUJDRjI2MEYzMjc5Q0UwMDBFQTI2MiAv
KiBUaHJlYWRUaW1lcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGhyZWFkVGltZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTg1QkNGMjcw
RjMyNzlDRTAwMEVBMjYyIC8qIFRocmVhZFRpbWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUaHJlYWRUaW1lcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc5MTksMTQgKzc4NTEsMTAgQEAKIAkJNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIEljb25V
UkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWNvblVSTC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1h
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNpbWFsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDVGRUE1Q0UxNTZEREU4QzAwNjU0MTAxIC8q
IERlY2ltYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjaW1hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjcwMEVDRjEyN0I5NkNCMDBGNUQ1RDYgLyog
RmlsZVdyaXRlclN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdy
aXRlclN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyog
RmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVNZXRh
ZGF0YS5oOyBwYXRoID0gcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ2QkM3MjRDMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlV3JpdGVyQmFzZS5oOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ2QkM3MjREMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZUNh
bGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXJCYXNl
Q2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyQmFzZUNhbGxi
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkQxNkUyMEIyNzk0NzMwMDFG
MDgzOSAvKiBub25lQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vbmVDdXJzb3IucG5nOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1
cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBpbWFnZS5wbmc7IHBhdGggPSBjZWxsQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDZENEYyNDgwQUY5N0U4MTAwMzUzODVBIC8qIHZlcnRpY2FsVGV4dEN1cnNvci5w
bmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFn
ZS5wbmc7IHBhdGggPSB2ZXJ0aWNhbFRleHRDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0NkRBODQ0QzEyMjRBMDcxMDA2MEQwMDYgLyogSlNGaWxlV3JpdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmlsZVdyaXRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NkY5RDVEQTBCMEQ2MDE3MDAyOEVFMzYgLyogYWxpYXNDdXJz
b3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucG5nOyBwYXRoID0gYWxpYXNDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkY5RDVEQzBCMEQ2MDE3MDAyOEVFMzYgLyogcHJvZ3Jlc3NDdXJzb3IucG5nICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5n
OyBwYXRoID0gcHJvZ3Jlc3NDdXJzb3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVXZWJLaXRCcmlkZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTMyNSw3ICs5MjUzLDYgQEAKIAkJODZEOTgy
RjYxMjVDMTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERvY3VtZW50VGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2RkY4ODVFMTVERTNCODIwMEJENkIyOCAvKiBSZW5kZXJUZXh0VHJhY2tDdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyVGV4dFRyYWNrQ3Vl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZGRjg4NUYxNURFM0I4MjAwQkQ2
QjI4IC8qIFJlbmRlclRleHRUcmFja0N1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJUZXh0VHJhY2tDdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODkwQUUwRTAxMjU2QTA3OTAwRjU5NjhDIC8qIERpcmVjdG9yeVJlYWRlckJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBwYXRoID0g
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODkyQUJFNUMxNkVFRTJBQTAwOUYzNTg3IC8qIEpTTmF2aWdhdG9yU3Rv
cmFnZVF1b3RhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTTmF2
aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDsgcGF0aCA9IC4uLy4uLy4uLy4uLy4uLy4uL1dlYktpdEJ1
aWxkL1JlbGVhc2UvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU05hdmlnYXRvclN0b3JhZ2VRdW90
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MkFCRTVEMTZFRUUyQUEwMDlG
MzU4NyAvKiBKU05hdmlnYXRvclN0b3JhZ2VRdW90YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBKU05hdmlnYXRvclN0b3JhZ2VRdW90YS5oOyBwYXRoID0gLi4vLi4vLi4vLi4v
Li4vLi4vV2ViS2l0QnVpbGQvUmVsZWFzZS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTmF2aWdh
dG9yU3RvcmFnZVF1b3RhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MkFCRTVG
MTZFRUUyRTUwMDlGMzU4NyAvKiBKU0RPTVdpbmRvd1F1b3RhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEpTRE9NV2luZG93UXVvdGEuaDsgcGF0aCA9IC4uLy4uLy4uLy4uLy4u
Ly4uL1dlYktpdEJ1aWxkL1JlbGVhc2UvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRv
d1F1b3RhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzM4LDY2ICs5MjY1LDEy
IEBACiAJCTg5MkFCRTY2MTZFRUUyRTUwMDlGMzU4NyAvKiBKU1N0b3JhZ2VVc2FnZUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTU3RvcmFnZVVzYWdl
Q2FsbGJhY2suY3BwOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vV2ViS2l0QnVpbGQvUmVsZWFz
ZS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU3RvcmFnZVVzYWdlQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTJBQkU2NzE2RUVFMkU1MDA5RjM1ODcgLyogSlNT
dG9yYWdlVXNhZ2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBK
U1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmg7IHBhdGggPSAuLi8uLi8uLi8uLi8uLi8uLi9XZWJLaXRC
dWlsZC9SZWxlYXNlL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTdG9yYWdlVXNhZ2VDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTMxREU1QTE0QzQ0QzQ0MDAwREM5
RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQmxvYkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0
N0E1MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRmlsZUNhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0E2MTIz
ODkwOEIwMDJCM0Q4NiAvKiBGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRmlsZVdyaXRlckNhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRmlsZVdyaXRlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTg5M0M0N0I2MTIzOEEwOTkwMDJCM0Q4NiAvKiBKU0ZpbGVDYWxsYmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4OTNDNDdCOTEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlV3Jp
dGVyQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdCQTEy
MzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlV3JpdGVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODkzQzQ3RjExMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5
U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5
bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ3RjIxMjQ4QkQzOTAwMkIzRDg2IC8qIERp
cmVjdG9yeVJlYWRlclN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5UmVhZGVyU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0
N0YzMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlSZWFkZXJTeW5jLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlclN5bmMuaDsgcGF0aCA9IE1vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg5M0M0N0Y1MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtQmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01GaWxlU3lzdGVtQmFzZS5oOyBw
YXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0Y3MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lz
dGVtU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01GaWxlU3lzdGVt
U3luYy5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0Y5MTI0OEJEMzkwMDJCM0Q4NiAvKiBF
bnRyeUFycmF5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyeUFy
cmF5U3luYy5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0ZCMTI0OEJEMzkwMDJCM0Q4NiAvKiBF
bnRyeUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlCYXNlLmg7
IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTg5M0M0N0ZEMTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeVN5bmMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlTeW5jLmg7IHBhdGggPSBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5
M0M0N0ZGMTI0OEJEMzkwMDJCM0Q4NiAvKiBGaWxlRW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVFbnRyeVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlRW50cnlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0
ODI3MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeUVudHJ5U3luYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RpcmVjdG9yeUVudHJ5U3luYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDgyODEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3Rv
cnlSZWFkZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5
M0M0ODI5MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeVJlYWRlclN5bmMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEaXJlY3RvcnlSZWFkZXJTeW5jLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0ODJCMTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RP
TUZpbGVTeXN0ZW1TeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9N
RmlsZVN5c3RlbVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ4MkQx
MjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRW50cnlBcnJheVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNFbnRyeUFycmF5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk4OTNDNDgyRjEyNDk1NDcyMDAyQjNEODYgLyogSlNFbnRyeVN5bmMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODkzQzQ4MzExMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRmlsZUVudHJ5U3lu
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVFbnRyeVN5bmMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8q
IERpcmVjdG9yeUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVj
dG9yeUVudHJ5Lmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1M0MxMjJDQTA2NDAwM0FBQkRBIC8q
IERpcmVjdG9yeVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJl
Y3RvcnlSZWFkZXIuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1M0UxMjJDQTA2NDAwM0FBQkRB
IC8qIERPTUZpbGVQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTUZp
bGVQYXRoLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVBhdGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDAxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZp
bGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NRmlsZVN5c3Rl
bS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDExMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJpZXND
YWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyaWVzQ2FsbGJh
Y2suaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDMxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5Lmg7IHBhdGggPSBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4
Nzg1NDUxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRW50cnlBcnJheS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDYxMjJDQTA2
NDAwM0FBQkRBIC8qIEVudHJ5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRW50cnlDYWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2Fs
bGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDcxMjJDQTA2NDAw
M0FBQkRBIC8qIEVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gRXJyb3JDYWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Vycm9yQ2FsbGJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NDkxMjJDQTA2NDAwM0FB
QkRBIC8qIEZpbGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxl
RW50cnkuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NEExMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0
ZW1DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlU3lzdGVt
Q2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NEIxMjJDQTA2NDAwM0FBQkRB
IC8qIEZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTg5ODc4NTRDMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVTeXN0ZW1DYWxsYmFja3MuaDsgcGF0aCA9
IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTg5ODc4NTREMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtRmxh
Z3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVN5c3RlbUZsYWdzLmg7
IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUZsYWdzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTRGMTIyQ0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVT
eXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG9jYWxGaWxlU3lzdGVt
Lmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZXRhZGF0YS5oOyBwYXRoID0g
TW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg5ODc4NTUxMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0YUNhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1ldGFkYXRhQ2FsbGJhY2suaDsgcGF0aCA9IE1v
ZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg5ODc4NTg3MTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeUVudHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGlyZWN0b3J5RW50cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1ODkxMjJDQTI2QTAwM0FBQkRBIC8qIEpT
RGlyZWN0b3J5UmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGly
ZWN0b3J5UmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NThGMTIy
Q0EyQTcwMDNBQUJEQSAvKiBKU0RPTUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01GaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg5ODc4NTkxMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0VudHJpZXNDYWxsYmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VudHJpZXNDYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU5MzEyMkNBMkE3MDAzQUFCREEgLyogSlNFbnRy
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VudHJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTk1MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0VudHJ5
QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFbnRyeUFycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTk3MTIyQ0EyQTcwMDNBQUJEQSAv
KiBKU0VudHJ5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNF
bnRyeUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTk5MTIy
Q0EyQTcwMDNBQUJEQSAvKiBKU0Vycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNFcnJvckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg5ODc4NTlCMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0ZpbGVFbnRyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4OTg3ODU5QzEyMkNBMkE3MDAzQUFCREEgLyogSlNGaWxlU3lzdGVtQ2FsbGJh
Y2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlU3lzdGVt
Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU5RDEyMkNB
MkE3MDAzQUFCREEgLyogSlNGaWxlU3lzdGVtQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNGaWxlU3lzdGVtQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODk4Nzg1QTExMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk4OTg3ODVBMzEyMkNBMkE3MDAzQUFCREEgLyogSlNNZXRhZGF0YUNh
bGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWV0YWRhdGFDYWxs
YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODVFRTEyMkUxRTg3MDAz
QUFCREEgLyogSlNGaWxlRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRmlsZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg5ODc4NUVGMTIyRTFFODcwMDNBQUJEQSAvKiBKU0ZpbGVFeGNlcHRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NUYyMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFk
ZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZVJl
YWRlclN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODVGMzEyMkUx
RUFDMDAzQUFCREEgLyogSlNGaWxlUmVhZGVyU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0ZpbGVSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg5QjVFQTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmVFbmRpbmcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4OUI1RUFBMDExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lRW5kaW5nLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5QzdDMkUwMTU1ODA0RjQwMDdENUE3QiAvKiBGaWxlU3lz
dGVtVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlU3lzdGVtVHlw
ZS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1UeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5RDA4RDlEMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0Zp
bGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGaWxlU3lz
dGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5RDA4RDlFMTIyMjg0NTEwMDEy
NDFERiAvKiBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg5RjYwQjBBMTU3RjY4NkQwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01XaW5kb3dRdW90YS5oOyBwYXRo
ID0gTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4OUY2MENEMjE1ODA5RDc2MDA3NUUxNTcgLyogSlNTdG9yYWdlSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0b3JhZ2VJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg5RkQ1OEQ4MTZFRURCRDQwMEUxODNGMCAvKiBOYXZpZ2F0b3JT
dG9yYWdlUXVvdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmF2aWdhdG9y
U3RvcmFnZVF1b3RhLmg7IHBhdGggPSBNb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg0Nyw3ICs5NzIwLDYgQEAKIAkJ
OTc2NjUwNEUxNDRGQkZGRTAwRjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NzY3Q0UwOTE0NUFCQzEyMDA1RTY0REIgLyogRXhjZXB0aW9uSGVh
ZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb25IZWFkZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NjdDRTBBMTQ1QUJDMTMwMDVFNjRE
QiAvKiBFeGNlcHRpb25JbnRlcmZhY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEV4Y2VwdGlvbkludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBc3luY0ZpbGVXcml0ZXIuaDsgcGF0aCA9IE1vZHVsZXMv
ZmlsZXN5c3RlbS9Bc3luY0ZpbGVXcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTc2RDZDNTkxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYi5jcHA7IHBhdGggPSBmaWxlYXBpL0Jsb2IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyog
QmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9iLmg7IHBhdGggPSBm
aWxlYXBpL0Jsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNUMxMjJC
OEEzRDAwMUZEMUY3IC8qIFdlYktpdEJsb2JCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYktpdEJsb2JCdWlsZGVyLmNwcDsgcGF0aCA9IGZpbGVhcGkv
V2ViS2l0QmxvYkJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg2
NCw4ICs5NzM2LDYgQEAKIAkJOTc2RDZDNkUxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRmlsZVRocmVhZC5jcHA7
IHBhdGggPSBmaWxlYXBpL0ZpbGVUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5NzZENkM2RjEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVRocmVhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlVGhyZWFkLmg7IHBhdGggPSBmaWxlYXBpL0ZpbGVU
aHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNzAxMjJCOEEzRDAw
MUZEMUY3IC8qIEZpbGVUaHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEZpbGVUaHJlYWRUYXNrLmg7IHBhdGggPSBmaWxlYXBpL0ZpbGVUaHJlYWRUYXNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3NkQ2QzcyMTIyQjhBM0QwMDFGRDFGNyAvKiBG
aWxlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVXcml0ZXIu
aDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTk3NkQ2Qzc0MTIyQjhBM0QwMDFGRDFGNyAvKiBBc3luY0ZpbGVXcml0
ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50Lmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NkQ2Qzc1MTIyQjhBM0QwMDFG
RDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwOyBwYXRoID0gZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTc2RDZDNzYxMjJCOEEzRDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
OyBwYXRoID0gZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3NkYzNkU4MTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJpdHlDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNTQ2LDMwICsxMjQxNiwx
MCBAQAogCQlFMUE4RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0ZVUkxFeHRyYXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxF
eHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0ZVUkxFeHRyYXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQTgxNEU5RTI3RDAwNDQ5RTEzIC8q
IEZpbGVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlTGlzdC5pZGw7IHBhdGgg
PSBmaWxlYXBpL0ZpbGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFB
QjFFQUIxNEU5RTJFRjAwNDQ5RTEzIC8qIERpcmVjdG9yeUVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEaXJlY3Rv
cnlFbnRyeS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVBQzE0RTlFMkY4MDA0NDlFMTMg
LyogRGlyZWN0b3J5RW50cnlTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsOyBw
YXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUFEMTRFOUUzMDUwMDQ0OUUxMyAvKiBEaXJlY3Rv
cnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlci5pZGw7IHBhdGggPSBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRTFBQjFFQUUxNEU5RTMwQjAwNDQ5RTEzIC8qIERpcmVjdG9yeVJlYWRlclN5bmMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IERpcmVjdG9yeVJlYWRlclN5bmMuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeVJlYWRlclN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFC
MUVBRjE0RTlFMzE3MDA0NDlFMTMgLyogRE9NRmlsZVN5c3RlbVN5bmMuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERPTUZp
bGVTeXN0ZW1TeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVt
U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUIwMTRFOUUzMjMw
MDQ0OUUxMyAvKiBFbnRyaWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJpZXNDYWxsYmFjay5pZGw7
IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQjExNEU5RTMyQTAwNDQ5RTEzIC8qIEVudHJ5Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBFbnRyeS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVCMjE0RTlFMzMyMDA0NDlFMTMgLyog
RW50cnlBcnJheS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cnlBcnJheS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIx
RUIzMTRFOUUzMzkwMDQ0OUUxMyAvKiBFbnRyeUFycmF5U3luYy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cnlBcnJh
eVN5bmMuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQjQxNEU5RTM0NTAwNDQ5RTEzIC8q
IEVudHJ5Q2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJ5Q2FsbGJhY2suaWRsOyBwYXRoID0gTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUFCMUVCNTE0RTlFMzRCMDA0NDlFMTMgLyogRW50cnlTeW5jLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRy
eVN5bmMuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUI2MTRFOUUzNTIwMDQ0OUUxMyAvKiBFcnJv
ckNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBFcnJvckNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmls
ZXN5c3RlbS9FcnJvckNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFBQjFFQjcxNEU5RTM1ODAwNDQ5RTEzIC8qIEZpbGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGUuaWRsOyBwYXRo
ID0gZmlsZWFwaS9GaWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFF
QjgxNEU5RTM2MjAwNDQ5RTEzIC8qIEZpbGVDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUNhbGxiYWNr
LmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlQ2FsbGJhY2suaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVCOTE0RTlFMzZEMDA0NDlFMTMgLyogRmlsZUVu
dHJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBGaWxlRW50cnkuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVFbnRyeS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUJBMTRFOUUz
NzIwMDQ0OUUxMyAvKiBGaWxlRW50cnlTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlRW50cnlTeW5jLmlkbDsg
cGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnlTeW5jLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQkIxNEU5RTM3QTAwNDQ5RTEzIC8qIEZpbGVFcnJvci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRmlsZUVycm9yLmlkbDsgcGF0aCA9IGZpbGVhcGkvRmlsZUVycm9yLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQkMxNEU5RTM5NzAwNDQ5RTEzIC8qIEZp
bGVFeGNlcHRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGVFeGNlcHRpb24uaWRsOyBwYXRoID0gZmlsZWFwaS9G
aWxlRXhjZXB0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQkQx
NEU5RTNBODAwNDQ5RTEzIC8qIEZpbGVSZWFkZXJTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlUmVhZGVyU3lu
Yy5pZGw7IHBhdGggPSBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQkUxNEU5RTNCMjAwNDQ5RTEzIC8qIEZpbGVTeXN0ZW1DYWxs
YmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gRmlsZVN5c3RlbUNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmls
ZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUFCMUVCRjE0RTlFM0JFMDA0NDlFMTMgLyogRmlsZVdyaXRlckNhbGxiYWNrLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBGaWxlV3JpdGVyQ2FsbGJhY2suaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXJDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIx
RUMwMTRFOUUzQzQwMDQ0OUUxMyAvKiBGaWxlV3JpdGVyU3luYy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZVdyaXRl
clN5bmMuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQzExNEU5RTNDQzAwNDQ5RTEzIC8q
IE1ldGFkYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBNZXRhZGF0YS5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0
ZW0vTWV0YWRhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVDMjE0
RTlFM0Q1MDA0NDlFMTMgLyogTWV0YWRhdGFDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTWV0YWRhdGFDYWxs
YmFjay5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0YWRhdGFDYWxsYmFjay5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUNBRjRBMEU3OTFBQUYwMDg3RDEyQiAv
KiBET01NZXNzYWdlUG9ydC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERPTU1lc3NhZ2VQb3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFD
QUY0QjBFNzkxQUFGMDA4N0QxMkIgLyogRE9NTWVzc2FnZVBvcnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZVBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFBRDEzOUExMjk1RDkyNjAwQUNBOTg5IC8qIEpTSFRNTExpbmtFbGVtZW50Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTExpbmtF
bGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTU2LDgg
KzE0MDA2LDYgQEAKIAkJCQlGM0Q0QzQ3NzEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5oICovLAogCQkJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwICovLAogCQkJCTdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5
RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLywKLQkJCQkxNUQxN0QxRTE0NzIzMUVC
MDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCAqLywKLQkJCQkxNUQxN0Qx
RjE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggKi8sCiAJCQkJ
MjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICov
LAogCQkJCUYzNDRDNzEyMTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oICovLAogCQkJCUYzNDRDNzU3MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcCAqLywKQEAgLTE1OTc1LDI1ICsxNTgyMyw4IEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQkyRTJEOTlDQjEwRTJCQkRBMDA0OTYzMzcgLyogSlNCbG9iLmNwcCAqLywKIAkJ
CQkyRTJEOTlDQzEwRTJCQkRBMDA0OTYzMzcgLyogSlNCbG9iLmggKi8sCi0JCQkJODk4Nzg1ODcx
MjJDQTI2QTAwM0FBQkRBIC8qIEpTRGlyZWN0b3J5RW50cnkuaCAqLywKLQkJCQk4OTNDNDgyNzEy
NDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeVN5bmMuaCAqLywKLQkJCQk4OTg3ODU4
OTEyMkNBMjZBMDAzQUFCREEgLyogSlNEaXJlY3RvcnlSZWFkZXIuaCAqLywKLQkJCQk4OTNDNDgy
ODEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCAqLywKLQkJCQk4
OTNDNDgyOTEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3RvcnlSZWFkZXJTeW5jLmggKi8sCi0J
CQkJODk4Nzg1OEYxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRE9NRmlsZVN5c3RlbS5oICovLAotCQkJ
CTg5M0M0ODJCMTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RPTUZpbGVTeXN0ZW1TeW5jLmggKi8sCi0J
CQkJODk4Nzg1OTExMjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50cmllc0NhbGxiYWNrLmggKi8sCi0J
CQkJODk4Nzg1OTMxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50cnkuaCAqLywKLQkJCQk4OTg3ODU5
NTEyMkNBMkE3MDAzQUFCREEgLyogSlNFbnRyeUFycmF5LmggKi8sCi0JCQkJODkzQzQ4MkQxMjQ5
NTQ3MjAwMkIzRDg2IC8qIEpTRW50cnlBcnJheVN5bmMuaCAqLywKLQkJCQk4OTg3ODU5NzEyMkNB
MkE3MDAzQUFCREEgLyogSlNFbnRyeUNhbGxiYWNrLmggKi8sCi0JCQkJODkzQzQ4MkYxMjQ5NTQ3
MjAwMkIzRDg2IC8qIEpTRW50cnlTeW5jLmggKi8sCi0JCQkJODk4Nzg1OTkxMjJDQTJBNzAwM0FB
QkRBIC8qIEpTRXJyb3JDYWxsYmFjay5oICovLAogCQkJCUJDMDBGMDEwMEUwQTE4OTUwMEZEMDRF
MyAvKiBKU0ZpbGUuY3BwICovLAogCQkJCUJDMDBGMDExMEUwQTE4OTUwMEZEMDRFMyAvKiBKU0Zp
bGUuaCAqLywKLQkJCQk4OTNDNDdCNjEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2su
aCAqLywKLQkJCQk4OTg3ODU5QjEyMkNBMkE3MDAzQUFCREEgLyogSlNGaWxlRW50cnkuaCAqLywK
LQkJCQk4OTNDNDgzMTEyNDk1NDcyMDAyQjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmggKi8sCiAJ
CQkJMkUzQkMwQzgxMTdEM0UwODAwQjk0MDlBIC8qIEpTRmlsZUVycm9yLmNwcCAqLywKIAkJCQky
RTNCQzBDOTExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuaCAqLywKIAkJCQk4OTg3ODVF
RTEyMkUxRTg3MDAzQUFCREEgLyogSlNGaWxlRXhjZXB0aW9uLmNwcCAqLywKQEAgLTE2MDA0LDEz
ICsxNTgzNSw2IEBACiAJCQkJMkU5NEY0M0ExMTkyMDdEQTAwQjdGNzVEIC8qIEpTRmlsZVJlYWRl
ci5oICovLAogCQkJCTg5ODc4NUYyMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5j
LmNwcCAqLywKIAkJCQk4OTg3ODVGMzEyMkUxRUFDMDAzQUFCREEgLyogSlNGaWxlUmVhZGVyU3lu
Yy5oICovLAotCQkJCTg5ODc4NTlDMTIyQ0EyQTcwMDNBQUJEQSAvKiBKU0ZpbGVTeXN0ZW1DYWxs
YmFjay5jcHAgKi8sCi0JCQkJODk4Nzg1OUQxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRmlsZVN5c3Rl
bUNhbGxiYWNrLmggKi8sCi0JCQkJNDZEQTg0NEMxMjI0QTA3MTAwNjBEMDA2IC8qIEpTRmlsZVdy
aXRlci5oICovLAotCQkJCTg5M0M0N0I5MTIzOEEwQTkwMDJCM0Q4NiAvKiBKU0ZpbGVXcml0ZXJD
YWxsYmFjay5jcHAgKi8sCi0JCQkJODkzQzQ3QkExMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdy
aXRlckNhbGxiYWNrLmggKi8sCi0JCQkJODk4Nzg1QTExMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0
YWRhdGEuaCAqLywKLQkJCQk4OTg3ODVBMzEyMkNBMkE3MDAzQUFCREEgLyogSlNNZXRhZGF0YUNh
bGxiYWNrLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IEZpbGVBUEk7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTY3OTQsNTMgKzE2NjE4LDE0IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlFMUNERTkxRjE1MDE4RUQwMDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmNwcCAqLywKIAkJ
CQlFMUNERTkyMTE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggKi8sCi0JCQkJ
OTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oICovLAotCQkJCTk3
NkQ2Qzc0MTIyQjhBM0QwMDFGRDFGNyAvKiBBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCAqLywKIAkJ
CQk5NzZENkM1OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgKi8sCiAJCQkJOTc2RDZDNUEx
MjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCAqLywKIAkJCQkxNEE5OEUwNTEzNjM4NkEyMDBDOUZF
RDIgLyogQmxvYi5pZGwgKi8sCiAJCQkJOTc2RDZDNUYxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JV
UkwuY3BwICovLAogCQkJCTk3NkQ2QzYwMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggKi8s
Ci0JCQkJODk4Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5LmggKi8sCi0J
CQkJRTFBQjFFQUIxNEU5RTJFRjAwNDQ5RTEzIC8qIERpcmVjdG9yeUVudHJ5LmlkbCAqLywKLQkJ
CQk4OTNDNDdGMTEyNDhCRDM5MDAyQjNEODYgLyogRGlyZWN0b3J5RW50cnlTeW5jLmggKi8sCi0J
CQkJRTFBQjFFQUMxNEU5RTJGODAwNDQ5RTEzIC8qIERpcmVjdG9yeUVudHJ5U3luYy5pZGwgKi8s
Ci0JCQkJODk4Nzg1M0MxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeVJlYWRlci5oICovLAot
CQkJCUUxQUIxRUFEMTRFOUUzMDUwMDQ0OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXIuaWRsICovLAot
CQkJCTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi8s
Ci0JCQkJODkzQzQ3RjIxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuY3Bw
ICovLAotCQkJCTg5M0M0N0YzMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlSZWFkZXJTeW5j
LmggKi8sCi0JCQkJRTFBQjFFQUUxNEU5RTMwQjAwNDQ5RTEzIC8qIERpcmVjdG9yeVJlYWRlclN5
bmMuaWRsICovLAotCQkJCTg5ODc4NTNFMTIyQ0EwNjQwMDNBQUJEQSAvKiBET01GaWxlUGF0aC5o
ICovLAotCQkJCTg5ODc4NTQwMTIyQ0EwNjQwMDNBQUJEQSAvKiBET01GaWxlU3lzdGVtLmggKi8s
Ci0JCQkJMTRCREY1OTcxMzY1MzkyQzAwMTQ4MzkzIC8qIERPTUZpbGVTeXN0ZW0uaWRsICovLAot
CQkJCTg5M0M0N0Y1MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtQmFzZS5oICovLAot
CQkJCTg5M0M0N0Y3MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5oICovLAot
CQkJCUUxQUIxRUFGMTRFOUUzMTcwMDQ0OUUxMyAvKiBET01GaWxlU3lzdGVtU3luYy5pZGwgKi8s
Ci0JCQkJODk4Nzg1NDExMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJpZXNDYWxsYmFjay5oICovLAot
CQkJCUUxQUIxRUIwMTRFOUUzMjMwMDQ0OUUxMyAvKiBFbnRyaWVzQ2FsbGJhY2suaWRsICovLAot
CQkJCTg5ODc4NTQzMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeS5oICovLAotCQkJCUUxQUIxRUIx
MTRFOUUzMkEwMDQ0OUUxMyAvKiBFbnRyeS5pZGwgKi8sCi0JCQkJODk4Nzg1NDUxMjJDQTA2NDAw
M0FBQkRBIC8qIEVudHJ5QXJyYXkuaCAqLywKLQkJCQlFMUFCMUVCMjE0RTlFMzMyMDA0NDlFMTMg
LyogRW50cnlBcnJheS5pZGwgKi8sCi0JCQkJODkzQzQ3RjkxMjQ4QkQzOTAwMkIzRDg2IC8qIEVu
dHJ5QXJyYXlTeW5jLmggKi8sCi0JCQkJRTFBQjFFQjMxNEU5RTMzOTAwNDQ5RTEzIC8qIEVudHJ5
QXJyYXlTeW5jLmlkbCAqLywKLQkJCQk4OTNDNDdGQjEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlC
YXNlLmggKi8sCi0JCQkJODk4Nzg1NDYxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5Q2FsbGJhY2su
aCAqLywKLQkJCQlFMUFCMUVCNDE0RTlFMzQ1MDA0NDlFMTMgLyogRW50cnlDYWxsYmFjay5pZGwg
Ki8sCi0JCQkJODkzQzQ3RkQxMjQ4QkQzOTAwMkIzRDg2IC8qIEVudHJ5U3luYy5oICovLAotCQkJ
CUUxQUIxRUI1MTRFOUUzNEIwMDQ0OUUxMyAvKiBFbnRyeVN5bmMuaWRsICovLAotCQkJCTg5ODc4
NTQ3MTIyQ0EwNjQwMDNBQUJEQSAvKiBFcnJvckNhbGxiYWNrLmggKi8sCi0JCQkJRTFBQjFFQjYx
NEU5RTM1MjAwNDQ5RTEzIC8qIEVycm9yQ2FsbGJhY2suaWRsICovLAogCQkJCTk3NkQ2QzYxMTIy
QjhBM0QwMDFGRDFGNyAvKiBGaWxlLmNwcCAqLywKIAkJCQk5NzZENkM2MjEyMkI4QTNEMDAxRkQx
RjcgLyogRmlsZS5oICovLAogCQkJCUUxQUIxRUI3MTRFOUUzNTgwMDQ0OUUxMyAvKiBGaWxlLmlk
bCAqLywKLQkJCQk4OTNDNDdBNTEyMzg5MDhCMDAyQjNEODYgLyogRmlsZUNhbGxiYWNrLmggKi8s
Ci0JCQkJRTFBQjFFQjgxNEU5RTM2MjAwNDQ5RTEzIC8qIEZpbGVDYWxsYmFjay5pZGwgKi8sCi0J
CQkJODk4Nzg1NDkxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVFbnRyeS5oICovLAotCQkJCUUxQUIx
RUI5MTRFOUUzNkQwMDQ0OUUxMyAvKiBGaWxlRW50cnkuaWRsICovLAotCQkJCTg5M0M0N0ZGMTI0
OEJEMzkwMDJCM0Q4NiAvKiBGaWxlRW50cnlTeW5jLmggKi8sCi0JCQkJRTFBQjFFQkExNEU5RTM3
MjAwNDQ5RTEzIC8qIEZpbGVFbnRyeVN5bmMuaWRsICovLAogCQkJCTk3NkQ2QzY0MTIyQjhBM0Qw
MDFGRDFGNyAvKiBGaWxlRXJyb3IuaCAqLywKIAkJCQlFMUFCMUVCQjE0RTlFMzdBMDA0NDlFMTMg
LyogRmlsZUVycm9yLmlkbCAqLywKIAkJCQk5NzhEMDdCNTE0NUEwRjAzMDA5NjkwOEQgLyogRmls
ZUV4Y2VwdGlvbi5jcHAgKi8sCkBAIC0xNjg1OSwyOCArMTY2NDQsOSBAQAogCQkJCTJFREYzNjlB
MTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5jcHAgKi8sCiAJCQkJMkVERjM2OUIx
MjJDOTRCNDAwMkY3RDRFIC8qIEZpbGVSZWFkZXJTeW5jLmggKi8sCiAJCQkJRTFBQjFFQkQxNEU5
RTNBODAwNDQ5RTEzIC8qIEZpbGVSZWFkZXJTeW5jLmlkbCAqLywKLQkJCQk4OTg3ODU0QTEyMkNB
MDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxiYWNrLmggKi8sCi0JCQkJRTFBQjFFQkUxNEU5
RTNCMjAwNDQ5RTEzIC8qIEZpbGVTeXN0ZW1DYWxsYmFjay5pZGwgKi8sCi0JCQkJODk4Nzg1NEIx
MjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwICovLAotCQkJCTg5ODc4
NTRDMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi8sCi0JCQkJODk4
Nzg1NEQxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1GbGFncy5oICovLAotCQkJCTg5QzdD
MkUwMTU1ODA0RjQwMDdENUE3QiAvKiBGaWxlU3lzdGVtVHlwZS5oICovLAogCQkJCTk3NkQ2QzZF
MTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkLmNwcCAqLywKIAkJCQk5NzZENkM2RjEyMkI4
QTNEMDAxRkQxRjcgLyogRmlsZVRocmVhZC5oICovLAogCQkJCTk3NkQ2QzcwMTIyQjhBM0QwMDFG
RDFGNyAvKiBGaWxlVGhyZWFkVGFzay5oICovLAotCQkJCTk3NkQ2QzcyMTIyQjhBM0QwMDFGRDFG
NyAvKiBGaWxlV3JpdGVyLmggKi8sCi0JCQkJMTRCREY1OUMxMzY1MzlCRTAwMTQ4MzkzIC8qIEZp
bGVXcml0ZXIuaWRsICovLAotCQkJCTQ2QkM3MjRDMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3Jp
dGVyQmFzZS5oICovLAotCQkJCTQ2QkM3MjREMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVy
QmFzZUNhbGxiYWNrLmggKi8sCi0JCQkJODkzQzQ3QTYxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVX
cml0ZXJDYWxsYmFjay5oICovLAotCQkJCUUxQUIxRUJGMTRFOUUzQkUwMDQ0OUUxMyAvKiBGaWxl
V3JpdGVyQ2FsbGJhY2suaWRsICovLAotCQkJCTQ2NzAwRUNGMTI3Qjk2Q0IwMEY1RDVENiAvKiBG
aWxlV3JpdGVyU3luYy5oICovLAotCQkJCUUxQUIxRUMwMTRFOUUzQzQwMDQ0OUUxMyAvKiBGaWxl
V3JpdGVyU3luYy5pZGwgKi8sCi0JCQkJODk4Nzg1NEYxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2Fs
RmlsZVN5c3RlbS5oICovLAotCQkJCTg5ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0
YS5oICovLAotCQkJCUUxQUIxRUMxMTRFOUUzQ0MwMDQ0OUUxMyAvKiBNZXRhZGF0YS5pZGwgKi8s
Ci0JCQkJODk4Nzg1NTExMjJDQTA2NDAwM0FBQkRBIC8qIE1ldGFkYXRhQ2FsbGJhY2suaCAqLywK
LQkJCQlFMUFCMUVDMjE0RTlFM0Q1MDA0NDlFMTMgLyogTWV0YWRhdGFDYWxsYmFjay5pZGwgKi8s
CiAJCQkJOTc2RDZDNzUxMjJCOEEzRDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnku
Y3BwICovLAogCQkJCTk3NkQ2Qzc2MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmggKi8sCiAJCQkJOTc2RDZDNUMxMjJCOEEzRDAwMUZEMUY3IC8qIFdlYktpdEJsb2JC
dWlsZGVyLmNwcCAqLywKQEAgLTE5ODE3LDggKzE5NTgzLDYgQEAKIAkJCQlCMkMzRDlFQzBEMDA2
QzFEMDBFRjZGMjYgLyogdGV4dCAqLywKIAkJCQlCQ0ZCMkY3NDA5N0EyRTFBMDBCQTcwM0QgLyog
QXJlbmEuY3BwICovLAogCQkJCUJDRkIyRjc1MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5oICov
LAotCQkJCTg5RDA4RDlEMTIyMjg0NTEwMDEyNDFERiAvKiBBc3luY0ZpbGVTeXN0ZW0uaCAqLywK
LQkJCQk4OUQwOEQ5RTEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
LmggKi8sCiAJCQkJNDlBRTJEOTQxMzRFRTVGOTAwNzI5MjBBIC8qIENhbGN1bGF0aW9uVmFsdWUu
Y3BwICovLAogCQkJCTQ5QUUyRDk1MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVl
LmggKi8sCiAJCQkJQ0RFQTc2MzMxNDYwQjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLywKQEAg
LTIxNTk3LDExICsyMTM2MSw3IEBACiAJCQkJNDlCMzc2MEQxNUM2QzY4NDAwNTkxMzFEIC8qIEFy
cmF5VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTY4NkNBMTNBQzE4MDIwMEI2OUM2OCAv
KiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDREU5MjIxNTAxOTE2
OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODlEMDhE
QTAxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5jRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJODlEMDhEQTExMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTc2RDZDNzcxMjJCOEEzRDAw
MUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTc2RDZDOTMx
MjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzdDNjFGMDExMjA5NUM4NzAwN0EzQzY3IC8qIEF0b21pY1N0cmluZ0tleWVkTVJVQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODBEMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEM0QTgwQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0cmli
dXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTIxOTc5LDExICsyMTczOSw2IEBACiAJCQkJQ0VDQURG
QzkxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGREFGMTk5OTE1MTNEMTMxMDA4REIwQzMgLyogRGlyZWN0Q29udm9sdmVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk4OTg3ODU1MzEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5RW50
cnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5M0M0ODAxMTI0OEJEM0EwMDJCM0Q4NiAvKiBEaXJl
Y3RvcnlFbnRyeVN5bmMuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NTU1MTIyQ0EwNjQwMDNB
QUJEQSAvKiBEaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5MEFFMEUxMTI1
NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4OTNDNDgwMzEyNDhCRDNBMDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ4QzREQzAxNDI4MjIyQzAwMjZDRTcyIC8q
IERpc3BsYXlTbGVlcERpc2FibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5MTEyQjAy
NkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjIxMDEsMTAgKzIx
ODU2LDYgQEAKIAkJCQlCQzAwRjAwNjBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZUludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAwRjAwNzBFMEExODU1MDBGRDA0RTMgLyogRE9NRmls
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDBGMDA5MEUwQTE4NTUwMEZEMDRFMyAvKiBE
T01GaWxlTGlzdEludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODU1NzEyMkNBMDY0
MDAzQUFCREEgLyogRE9NRmlsZVBhdGguaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NTU5MTIy
Q0EwNjQwMDNBQUJEQSAvKiBET01GaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTND
NDgwNTEyNDhCRDNBMDAyQjNEODYgLyogRE9NRmlsZVN5c3RlbUJhc2UuaCBpbiBIZWFkZXJzICov
LAotCQkJCTg5M0M0ODA3MTI0OEJEM0EwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkVENjA5QkQxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBMzdCNjA5N0M3MTVGMDAxOUYzRDggLyogRE9NSFRN
TC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVERjgxMjcwQUE3Nzg3MjAwNDg2QUQ3IC8qIERPTUhU
TUxBbmNob3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIyMzkzLDE1ICsyMjE0NCw3IEBA
CiAJCQkJQjI1NTk5QTUwRDAwRDhCQTAwQkI4MjVDIC8qIEVtcHR5Q2xpZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThFQTdFQzIwQTE5NDVEMDAwQThFRjVGIC8qIEVudGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThFQTdFQzAwQTE5NDVEMDAwQThFRjVGIC8qIEVudGl0eVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1NUExMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJpZXND
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1NUMxMjJDQTA2NDAwM0FBQkRBIC8q
IEVudHJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODU1RTEyMkNBMDY0MDAzQUFCREEgLyog
RW50cnlBcnJheS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODkzQzQ4MDkxMjQ4QkQzQTAwMkIzRDg2
IC8qIEVudHJ5QXJyYXlTeW5jLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgwQjEyNDhCRDNB
MDAyQjNEODYgLyogRW50cnlCYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODU1RjEyMkNB
MDY0MDAzQUFCREEgLyogRW50cnlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODkzQzQ4
MEQxMjQ4QkQzQTAwMkIzRDg2IC8qIEVudHJ5U3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwOTMxMkIwMjZGNzAwQzFBMzU5IC8qIEVxdWFsUG93ZXJQYW5uZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTg5ODc4NTYwMTIyQ0EwNjQwMDNBQUJEQSAvKiBFcnJvckNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRUNGN0FFMjEwMTYyQjU4MDA0MjdERTcgLyogRXJyb3JFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDIwQTQ0RUZDNzAwRjk5MkUwIC8qIEV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDYwLDEwICsyMjIwMyw3IEBACiAJCQkJRkQzMTYwOTcx
MkIwMjZGNzAwQzFBMzU5IC8qIEZGVEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM4
MTEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc2MzA2RTMx
N0UyMkE0MzAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJODkzQzQ3QTcxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDY2Qzc3MkIwQUI2MDNCNzAwMjM4Q0M0IC8qIEZp
bGVDaG9vc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODU2MjEyMkNBMDY0MDAzQUFCREEg
LyogRmlsZUVudHJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgwRjEyNDhCRDNBMDAyQjNE
ODYgLyogRmlsZUVudHJ5U3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDODMxMjJCOEEz
RDAwMUZEMUY3IC8qIEZpbGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERjM2OUYxMjJD
OTRDODAwMkY3RDRFIC8qIEZpbGVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDk5
RDA5MTdCOTY4QTEwMEZGODRCOSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjI0NzgsMTggKzIyMjE4LDkgQEAKIAkJCQkyRUYxQkZFQjEyMUM5RjQy
MDBDMjc2MjcgLyogRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVGMUJGRjkxMjFD
QjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4OTg3ODU2MzEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk4OTg3ODU2NTEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxi
YWNrcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1NjYxMjJDQTA2NDAwM0FBQkRBIC8qIEZp
bGVTeXN0ZW1GbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjZDMTdBM0UxNDkxRDJENDAwRDEy
QkEyIC8qIEZpbGVTeXN0ZW1JT1MuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5QzdDMkUxMTU1ODA0
RjQwMDdENUE3QiAvKiBGaWxlU3lzdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZD
OEUxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
NkQ2QzhGMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJOTc2RDZDOTExMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVXcml0ZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQ2QkM3MjRGMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDZCQzcyNTAxMjlCMTA0QzAwNzFDMDdFIC8qIEZpbGVXcml0ZXJC
YXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAotCQkJCTg5M0M0N0E4MTIzODkwOEIwMDJCM0Q4
NiAvKiBGaWxlV3JpdGVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAotCQkJCTQ2NzAwRUQxMTI3
Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1
RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMjg0Miw3ICsyMjU3Myw2IEBACiAJCQkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8q
IEluc3BlY3RvckRPTUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYz
MDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMTVEMTdEMjIxNDcyMzFFQjAwNUVCQ0E2IC8qIEluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc4REEyMEUxNTIwRUI4QzAw
NjE0MUMxIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjc3Nzc2
MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjI5NDksMTAgKzIyNjc5LDYgQEAKIAkJCQk1OUE4
NjAwODExOURBRkExMDBERUYxRUYgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0U0Mzg5QzE0MEIxQkE4MDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFu
Y2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NThCMTIyQ0EyNkEwMDNB
QUJEQSAvKiBKU0RpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgzMzEy
NDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeVN5bmMuaCBpbiBIZWFkZXJzICovLAot
CQkJCTg5ODc4NThEMTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeVJlYWRlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJODkzQzQ4MzUxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5UmVh
ZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU5RERDODMwOUUxOThCQTAwMUJGM0M2IC8q
IEpTRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDk0RURGMEExMjNGNEMwMEZEQUZD
MSAvKiBKU0RvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMUY2MDlE
MUNDNjAwMDBCRTMyNSAvKiBKU0RvY3VtZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjk2
MCw4ICsyMjY4Niw2IEBACiAJCQkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmlu
ZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MEQ3QzEwRDI5QTQ2MzAwQjk5MThGIC8qIEpT
RE9NQ29yZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDBFQ0FFN0UxNkI4QjY3MjAw
QzM2MTAzIC8qIEpTRE9NRXJyb3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NUE1MTIyQ0Ey
QTcwMDNBQUJEQSAvKiBKU0RPTUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTg5M0M0
ODM3MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RPTUZpbGVTeXN0ZW1TeW5jLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRTA4ODhENTExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFDMzZDMDMwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFGODA5RDFDQzYwMDAwQkUzMjUgLyogSlNE
T01JbXBsZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjk4OCwxMyArMjI3MTIsNiBA
QAogCQkJCTY1REYzMUZBMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1REYzMjMwMDlEMUREQkMwMDBCRTMyNSAvKiBKU0VudGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNGOUI3NzUwQkE1RkRERDAwODU0MDY0IC8qIEpTRW50aXR5UmVmZXJlbmNl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODVBNzEyMkNBMkE3MDAzQUFCREEgLyogSlNFbnRy
aWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NUE5MTIyQ0EyQTcwMDNBQUJE
QSAvKiBKU0VudHJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTg3ODVBQjEyMkNBMkE3MDAzQUFC
REEgLyogSlNFbnRyeUFycmF5LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgzOTEyNDk1NDcy
MDAyQjNEODYgLyogSlNFbnRyeUFycmF5U3luYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1
QUQxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRW50cnlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJODkzQzQ4M0IxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRW50cnlTeW5jLmggaW4gSGVhZGVycyAq
LywKLQkJCQk4OTg3ODVBRjEyMkNBMkE3MDAzQUFCREEgLyogSlNFcnJvckNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRUNGN0FERDEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0NjE0OTExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJv
ckhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RTgzNzhFMDlGODVENEYwMEI4NUFFNCAv
KiBKU0V2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMDA2LDE3ICsyMjcyMywxMSBAQAogCQkJ
CTZFQkYwRTc3MTJBOTg2ODgwMERCMTcwQSAvKiBKU0VYVERyYXdCdWZmZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3NzI4Njk4NDE0RkQ5QURBMDBGNDg0REMgLyogSlNFWFRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDBGMDE1MEUwQTE4OTUwMEZEMDRF
MyAvKiBKU0ZpbGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5M0M0N0I4MTIzOEEwOTkwMDJCM0Q4
NiAvKiBKU0ZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1QjExMjJDQTJB
NzAwM0FBQkRBIC8qIEpTRmlsZUVudHJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTNDNDgzRDEy
NDk1NDcyMDAyQjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RTNCQzBDQjExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg5ODc4NUYxMTIyRTFFODcwMDNBQUJEQSAvKiBKU0ZpbGVFeGNlcHRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMDBGMDE3MEUwQTE4OTUwMEZEMDRFMyAvKiBKU0ZpbGVMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRTk0RjQzQzExOTIwN0RBMDBCN0Y3NUQgLyogSlNGaWxlUmVhZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTg3ODVGNTEyMkUxRUFDMDAzQUFCREEgLyogSlNGaWxl
UmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1QjMxMjJDQTJBNzAwM0FBQkRB
IC8qIEpTRmlsZVN5c3RlbUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NkRBODQ0RTEy
MjRBMDcxMDA2MEQwMDYgLyogSlNGaWxlV3JpdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk4OTND
NDdCQzEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUI2RDlEMjdCMTRFQUMwODYwMDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQwOUVCREMwMTZCN0YzOEUwMENCQTNGQyAvKiBKU0ZvbnRMb2FkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUFDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5O
b2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMTMzLDggKzIyODQ0LDYgQEAKIAkJCQk3NTc5M0VD
OTBEMENFNzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxQURFRERBMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3NhZ2VQb3J0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUY1ODRDNzEwNDY1MkNCMDA5Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1QjcxMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NUI5MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU01l
dGFkYXRhQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjYyOUQxMDlEQTJCNDgwMDk2
MzNBNSAvKiBKU01vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RjQyMEEzMTZCNzE2
NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
REYzMUZDMDlEMUNDNjAwMDBCRTMyNSAvKiBKU011dGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjM0ODcsNyArMjMxOTYsNiBAQAogCQkJCTA2RTgxRUQ3MEFCNUQ1RTkwMEM4NzgzNyAv
KiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1OTcz
REUwMTVDRkIyMDMwMDI3RjgwNCAvKiBMb2NhbGVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2
MzNBNzI2MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTg5ODc4NTY4MTIyQ0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVTeXN0ZW0u
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTIwN0JFMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6
ZWRTdHJpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UxQzQxQjBEOTgyOTgwMDAzQjAyRjIg
LyogTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjM5RTAxMDlCM0NGOEEwMEI2MDY0
MSAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTM4LDggKzIzMjQ2LDYgQEAKIAkJ
CQkwNzhFMDkzRDE3RDE2RTFDMDA0MjBBQTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2Fn
ZVBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAvKiBN
ZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5ODc4NTY5MTIyQ0EwNjQw
MDNBQUJEQSAvKiBNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk4Nzg1NkExMjJDQTA2
NDAwM0FBQkRBIC8qIE1ldGFkYXRhQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEU1
MjcwMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3RERDREE1MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTEFyY2hpdmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3RERDREE3MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTFBhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNTQ1Myw3ICsyNTE1OSw2IEBACiAJCQkJQ0VDQURGQzgxNTM3NzhG
RjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEy
RDY3QjExNTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkRBRjE5OTgxNTEzRDEzMTAwOERCMEMzIC8qIERpcmVjdENvbnZvbHZlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk4OTNDNDgwMjEyNDhCRDNBMDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVy
U3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUZDN0E1MDE0NDRBRjVGMDBBNUQ4NjQgLyog
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUYyRDZDMTQ0
MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUQ4QzREQkYxNDI4MjIyQzAwMjZDRTcyIC8qIERpc3BsYXlTbGVlcERpc2FibGVy
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjU3NTcsNyArMjU0NjIsNiBAQAogCQkJCTJFREYzNjlD
MTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRUYxQkZFQTEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDNTdGRURFMTEyMTJFRTlDMDA5N0JFNjUgLyogRmlsZVN5c3RlbS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk4OTg3ODU2NDEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxi
YWNrcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTYwMzA2QzBDQzQzNjIzMDBDOEFDMjUgLyog
RmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QzE3QTNGMTQ5MUQyRDQwMEQx
MkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzQTQ5NTQxN0E5
Q0M5MDAwMjc0RTQyIC8qIE1lZGlhU291cmNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2
MDYyLDcgKzI1NzY2LDYgQEAKIAkJCQk3QTI0NTg3QjEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVj
dG9yRE9NQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjNENEM0NzgxMkUwNzY2MzAwM0RB
MTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0E3NEVDQkExMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkxNUQxN0QyMTE0NzIzMUVCMDA1RUJDQTYgLyogSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGNEY1RkZCMTFDQkQyRTEw
MEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzQ0
Qzc1ODExMjk0RkY2MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QTBFNzcwRTEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjYxODQsNyArMjU4ODcsNiBAQAog
CQkJCTU5QTg2MDA2MTE5REFGN0YwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTkwRTFCNEIxMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2
aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0MzhB
MjE0MEMwREMwMDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTg5M0M0ODM0MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjU5RERDODIwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlDN0JBOEQxMDQyRjVCMTAwMDlENDQ3IC8qIEpTRG9j
dW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0OTRFREUwQTEyM0Y0QzAwRkRB
RkMxIC8qIEpTRG9jdW1lbnRGcmFnbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2MjQ1LDgg
KzI1OTQ3LDYgQEAKIAkJCQkyRTk0RjQzQjExOTIwN0RBMDBCN0Y3NUQgLyogSlNGaWxlUmVhZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNzU4MkVFMTI3NjRGMjYwMDYyNjI4QiAvKiBKU0Zp
bGVSZWFkZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODk4Nzg1RjQxMjJFMUVBQzAw
M0FBQkRBIC8qIEpTRmlsZVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODk4Nzg1
QjIxMjJDQTJBNzAwM0FBQkRBIC8qIEpTRmlsZVN5c3RlbUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTg5M0M0N0JCMTIzOEEwQTkwMDJCM0Q4NiAvKiBKU0ZpbGVXcml0ZXJDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNkQ5RDI3QzE0RUFDMDg2MDA5MEQ3NUUgLyogSlNG
b2N1c0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUFCMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0dhaW5Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5REIzMTdEMTQxNTEw
MDdGRjg0MiAvKiBKU1JUQ0Vycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEwICszOCw2IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAi
QXN5bmNGaWxlU3lzdGVtLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkKQEAgLTc1LDkgKzcx
LDYgQEAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6UnVudGltZUVuYWJsZWRGZQogI2lmIEVOQUJM
RShHQU1FUEFEKQogICAgICwgbV9pc0dhbWVwYWRFbmFibGVkKGZhbHNlKQogI2VuZGlmCi0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICwgbV9pc0ZpbGVTeXN0ZW1FbmFibGVkKGZhbHNlKQot
I2VuZGlmCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCiAgICAgLCBtX2lzSmF2YVNj
cmlwdEkxOE5BUElFbmFibGVkKGZhbHNlKQogI2VuZGlmCkBAIC0xNDQsMTMgKzEzNyw2IEBAIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMmIFJ1bnRpbWVFbmFibGVkRmUKICAgICByZXR1cm4gcnVudGlt
ZUVuYWJsZWRGZWF0dXJlczsKIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLWJvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQoKQotewotICAgIHJldHVybiBt
X2lzRmlsZVN5c3RlbUVuYWJsZWQgJiYgQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpOwot
fQotI2VuZGlmCi0KICNpZiBFTkFCTEUoSkFWQVNDUklQVF9JMThOX0FQSSkKIGJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVkKCkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTgw
LDExICsxODAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBib29sIGZpbGVTeXN0ZW1FbmFibGVk
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGaWxlU3lzdGVtRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX2lzRmlsZVN5c3RlbUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSNlbmRpZgotCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCiAgICAgYm9vbCBqYXZhU2NyaXB0STE4TkFQSUVuYWJs
ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldEphdmFTY3JpcHRJMThOQVBJRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9CkBA
IC0zMTQsOSArMzA5LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQog
ICAgIGJvb2wgbV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsKICNlbmRpZgotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLSAgICBib29sIG1faXNGaWxlU3lzdGVtRW5hYmxlZDsKLSNlbmRpZgogCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCiAgICAgYm9vbCBtX2lzSmF2YVNjcmlwdEkx
OE5BUElFbmFibGVkOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbnRyeUN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbnRy
eUN1c3RvbS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRW50cnlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJK
U0VudHJ5LmgiCi0KLSNpbmNsdWRlICJFbnRyeS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgotI2luY2x1ZGUgIkpTRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJKU0ZpbGVFbnRyeS5o
IgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW50cnkqIGVudHJ5KQotewotICAgIGlmICgh
ZW50cnkpCi0gICAgICAgIHJldHVybiBqc051bGwoKTsKLQotICAgIGlmIChlbnRyeS0+aXNGaWxl
KCkpCi0gICAgICAgIHJldHVybiB3cmFwPEpTRmlsZUVudHJ5PihleGVjLCBnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PEZpbGVFbnRyeSo+KGVudHJ5KSk7Ci0KLSAgICBBU1NFUlQoZW50cnktPmlz
RGlyZWN0b3J5KCkpOwotICAgIHJldHVybiB3cmFwPEpTRGlyZWN0b3J5RW50cnk+KGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RGlyZWN0b3J5RW50cnkqPihlbnRyeSkpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VudHJ5U3luY0N1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbnRyeVN5bmNDdXN0b20u
Y3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vu
dHJ5U3luY0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkpTRW50
cnlTeW5jLmgiCi0KLSNpbmNsdWRlICJFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKLSNpbmNsdWRlICJKU0RpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkpTRmls
ZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW50cnlTeW5jKiBlbnRy
eSkKLXsKLSAgICBpZiAoIWVudHJ5KQotICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0KLSAgICBp
ZiAoZW50cnktPmlzRmlsZSgpKQotICAgICAgICByZXR1cm4gd3JhcDxKU0ZpbGVFbnRyeVN5bmM+
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RmlsZUVudHJ5U3luYyo+KGVudHJ5KSk7
Ci0KLSAgICBBU1NFUlQoZW50cnktPmlzRGlyZWN0b3J5KCkpOwotICAgIHJldHVybiB3cmFwPEpT
RGlyZWN0b3J5RW50cnlTeW5jPihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PERpcmVj
dG9yeUVudHJ5U3luYyo+KGVudHJ5KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldEZhY3RvcnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkod29ya2luZyBjb3B5KQpAQCAtOSw3ICs5LDYgQEAg
RE9NQXBwbGljYXRpb25DYWNoZQogRE9NV2luZG93CiBFdmVudFNvdXJjZQogRmlsZVJlYWRlciBj
b25kaXRpb25hbD1CTE9CCi1GaWxlV3JpdGVyIGNvbmRpdGlvbmFsPUZJTEVfU1lTVEVNCiBGb250
TG9hZGVyIGNvbmRpdGlvbmFsPUZPTlRfTE9BRF9FVkVOVFMKIElEQkRhdGFiYXNlIGNvbmRpdGlv
bmFsPUlOREVYRURfREFUQUJBU0UKIElEQk9wZW5EQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhF
RF9EQVRBQkFTRQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTksMTQgKzIxOSw5IEBAIFBhc3NSZWZQdHI8QmxvYj4gQmxvYjo6c2xpY2UobG9uZyBsb25nIHMK
ICAgICBsb25nIGxvbmcgbGVuZ3RoID0gZW5kIC0gc3RhcnQ7CiAgICAgYXV0byBibG9iRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8QmxvYkRhdGE+KCk7CiAgICAgYmxvYkRhdGEtPnNldENvbnRlbnRU
eXBlKEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpOwotICAgIGlmIChp
c0ZpbGUoKSkgewotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgaWYgKCF0b0ZpbGUo
dGhpcyktPmZpbGVTeXN0ZW1VUkwoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBibG9iRGF0YS0+
YXBwZW5kVVJMKHRvRmlsZSh0aGlzKS0+ZmlsZVN5c3RlbVVSTCgpLCBzdGFydCwgbGVuZ3RoLCBt
b2RpZmljYXRpb25UaW1lKTsKLSAgICAgICAgZWxzZQotI2VuZGlmCisgICAgaWYgKGlzRmlsZSgp
KQogICAgICAgICBibG9iRGF0YS0+YXBwZW5kRmlsZSh0b0ZpbGUodGhpcyktPnBhdGgoKSwgc3Rh
cnQsIGxlbmd0aCwgbW9kaWZpY2F0aW9uVGltZSk7Ci0gICAgfSBlbHNlCisgICAgZWxzZQogICAg
ICAgICBibG9iRGF0YS0+YXBwZW5kQmxvYihtX2ludGVybmFsVVJMLCBzdGFydCwgbGVuZ3RoKTsK
IAogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc3RkOjptb3ZlKGJsb2JEYXRhKSwgbGVuZ3RoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksMjQgKzY5LDYg
QEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxCbG9iRGF0YT4gY3JlYXRlQgogICAgIHJldHVybiBj
cmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoVHlwZShwYXRoLCBnZXRDb250ZW50VHlwZUZyb21GaWxl
TmFtZShmaWxlU3lzdGVtTmFtZSwgcG9saWN5KSk7CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0
aE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0
YSYgbWV0YWRhdGEpCi17Ci0gICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRh
OjpjcmVhdGUoKTsKLSAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUoZ2V0Q29udGVudFR5cGVG
cm9tRmlsZU5hbWUoZmlsZVN5c3RlbU5hbWUsIEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykp
OwotICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCwgMCwgbWV0
YWRhdGEubGVuZ3RoLCBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKTsKLSAgICByZXR1cm4gYmxv
YkRhdGEucmVsZWFzZSgpOwotfQotCi1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRl
QmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGNvbnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3Qg
RmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKLXsKLSAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRh
ID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwotICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShnZXRD
b250ZW50VHlwZUZyb21GaWxlTmFtZShmaWxlU3lzdGVtVVJMLnBhdGgoKSwgRmlsZTo6V2VsbEtu
b3duQ29udGVudFR5cGVzKSk7Ci0gICAgYmxvYkRhdGEtPmFwcGVuZFVSTChmaWxlU3lzdGVtVVJM
LCAwLCBtZXRhZGF0YS5sZW5ndGgsIG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUpOwotICAgIHJl
dHVybiBibG9iRGF0YS5yZWxlYXNlKCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShESVJFQ1RP
UllfVVBMT0FEKQogUGFzc1JlZlB0cjxGaWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCiB7CkBAIC0x
MDAsMjAgKzgyLDEyIEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50VHkK
ICAgICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlKHBhdGgsIHBvbGljeSksIC0xKQogICAg
ICwgbV9wYXRoKHBhdGgpCiAgICAgLCBtX25hbWUocGF0aEdldEZpbGVOYW1lKHBhdGgpKQotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAsIG1fc25hcHNob3RTaXplKC0xKQotICAgICwgbV9z
bmFwc2hvdE1vZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCi0jZW5kaWYKIHsKIH0K
IAogRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHR5cGUpCiAgICAgOiBCbG9iKHVybCwgdHlwZSwgLTEpCiAgICAgLCBtX3BhdGgocGF0
aCkKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgLCBtX3NuYXBzaG90U2l6ZSgtMSkKLSAg
ICAsIG1fc25hcHNob3RNb2RpZmljYXRpb25UaW1lKGludmFsaWRGaWxlVGltZSgpKQotI2VuZGlm
CiB7CiAgICAgbV9uYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwogICAgIC8vIEZJWE1FOiBG
aWxlIG9iamVjdCBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBkb2VzIG5vdCBpbmNsdWRl
CkBAIC0xMjUsMzkgKzk5LDExIEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHIKICAgICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlV2l0aE5hbWUocGF0aCwgbmFt
ZSwgcG9saWN5KSwgLTEpCiAgICAgLCBtX3BhdGgocGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAsIG1fc25hcHNob3RTaXplKC0xKQotICAgICwg
bV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCi0jZW5kaWYKLXsK
LX0KLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQotICAgIDogQmxvYihjcmVhdGVCbG9i
RGF0YUZvckZpbGVXaXRoTWV0YWRhdGEobmFtZSwgbWV0YWRhdGEpLCBtZXRhZGF0YS5sZW5ndGgp
Ci0gICAgLCBtX3BhdGgobWV0YWRhdGEucGxhdGZvcm1QYXRoKQotICAgICwgbV9uYW1lKG5hbWUp
Ci0gICAgLCBtX3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCi0gICAgLCBtX3NuYXBzaG90
TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKQogewogfQogCi1GaWxl
OjpGaWxlKGNvbnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRh
ZGF0YSkKLSAgICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGZpbGVTeXN0
ZW1VUkwsIG1ldGFkYXRhKSwgbWV0YWRhdGEubGVuZ3RoKQotICAgICwgbV9maWxlU3lzdGVtVVJM
KGZpbGVTeXN0ZW1VUkwpCi0gICAgLCBtX3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCi0g
ICAgLCBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZShtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1l
KQotewotfQotI2VuZGlmCi0KIGRvdWJsZSBGaWxlOjpsYXN0TW9kaWZpZWREYXRlKCkgY29uc3QK
IHsKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgaWYgKGhhc1ZhbGlkU25hcHNob3RNZXRh
ZGF0YSgpICYmIGlzVmFsaWRGaWxlVGltZShtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZSkpCi0g
ICAgICAgIHJldHVybiBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGltZSAqIG1zUGVyU2Vjb25kOwot
I2VuZGlmCi0KICAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKICAgICBpZiAoZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUobV9wYXRoLCBtb2RpZmljYXRpb25UaW1lKSAmJiBpc1ZhbGlkRmlsZVRp
bWUobW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgIHJldHVybiBtb2RpZmljYXRpb25UaW1lICog
bXNQZXJTZWNvbmQ7CkBAIC0xNjcsMTEgKzExMyw2IEBAIGRvdWJsZSBGaWxlOjpsYXN0TW9kaWZp
ZWREYXRlKCkgY29uc3QKIAogdW5zaWduZWQgbG9uZyBsb25nIEZpbGU6OnNpemUoKSBjb25zdAog
ewotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBpZiAoaGFzVmFsaWRTbmFwc2hvdE1ldGFk
YXRhKCkpCi0gICAgICAgIHJldHVybiBtX3NuYXBzaG90U2l6ZTsKLSNlbmRpZgotCiAgICAgLy8g
RklYTUU6IEphdmFTY3JpcHQgY2Fubm90IHJlcHJlc2VudCBzaXplcyBhcyBsYXJnZSBhcyB1bnNp
Z25lZCBsb25nIGxvbmcsIHdlIG5lZWQgdG8KICAgICAvLyBjb21lIHVwIHdpdGggYW4gZXhjZXB0
aW9uIHRvIHRocm93IGlmIGZpbGUgc2l6ZSBpcyBub3QgcmVwcmVzZW50YWJsZS4KICAgICBsb25n
IGxvbmcgc2l6ZTsKQEAgLTE4MiwxNCArMTIzLDYgQEAgdW5zaWduZWQgbG9uZyBsb25nIEZpbGU6
OnNpemUoKSBjb25zdAogCiB2b2lkIEZpbGU6OmNhcHR1cmVTbmFwc2hvdChsb25nIGxvbmcmIHNu
YXBzaG90U2l6ZSwgZG91YmxlJiBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUpIGNvbnN0CiB7Ci0j
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIGlmIChoYXNWYWxpZFNuYXBzaG90TWV0YWRhdGEo
KSkgewotICAgICAgICBzbmFwc2hvdFNpemUgPSBtX3NuYXBzaG90U2l6ZTsKLSAgICAgICAgc25h
cHNob3RNb2RpZmljYXRpb25UaW1lID0gbV9zbmFwc2hvdE1vZGlmaWNhdGlvblRpbWU7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQogICAgIC8vIE9idGFpbnMgYSBzbmFwc2hvdCBv
ZiB0aGUgZmlsZSBieSBjYXB0dXJpbmcgaXRzIGN1cnJlbnQgc2l6ZSBhbmQgbW9kaWZpY2F0aW9u
IHRpbWUuIFRoaXMgaXMgdXNlZCB3aGVuIHdlIHNsaWNlIGEgZmlsZSBmb3IgdGhlIGZpcnN0IHRp
bWUuCiAgICAgLy8gSWYgd2UgZmFpbCB0byByZXRyaWV2ZSB0aGUgc2l6ZSBvciBtb2RpZmljYXRp
b24gdGltZSwgcHJvYmFibHkgZHVlIHRvIHRoYXQgdGhlIGZpbGUgaGFzIGJlZW4gZGVsZXRlZCwg
MCBzaXplIGlzIHJldHVybmVkLgogICAgIEZpbGVNZXRhZGF0YSBtZXRhZGF0YTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMjMgKzU5LDYgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLSAgICAvLyBJZiBmaWxlc3lzdGVtIGZpbGVzIGxpdmUgaW4gdGhl
IHJlbW90ZSBmaWxlc3lzdGVtLCB0aGUgcG9ydCBtaWdodCBwYXNzIHRoZSB2YWxpZCBtZXRhZGF0
YSAod2hvc2UgbGVuZ3RoIGZpZWxkIGlzIG5vbi1uZWdhdGl2ZSkgYW5kIGNhY2hlIGluIHRoZSBG
aWxlIG9iamVjdC4KLSAgICAvLwotICAgIC8vIE90aGVyd2lzZSBjYWxsaW5nIHNpemUoKSwgbGFz
dE1vZGlmaWVkVGltZSgpIGFuZCBzbGljZSgpIHdpbGwgc3luY2hyb25vdXNseSBxdWVyeSB0aGUg
ZmlsZSBtZXRhZGF0YS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVGb3JGaWxl
U3lzdGVtRmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRh
dGEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUobmFtZSwgbWV0YWRh
dGEpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVGb3JGaWxl
U3lzdGVtRmlsZShjb25zdCBVUkwmIHVybCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZSh1cmwsIG1ldGFkYXRhKSk7
Ci0gICAgfQotCi0gICAgVVJMIGZpbGVTeXN0ZW1VUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVT
eXN0ZW1VUkw7IH0KLSNlbmRpZgotCiAgICAgLy8gQ3JlYXRlIGEgZmlsZSB3aXRoIGEgbmFtZSBl
eHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQgRE9NIHBy
b3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhlIHBhdGgu
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4gY3JlYXRlV2l0aE5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnRlbnRUeXBlTG9va3VwUG9saWN5IHBvbGlj
eSA9IFdlbGxLbm93bkNvbnRlbnRUeXBlcykKICAgICB7CkBAIC0xMDgsMjYgKzkxLDkgQEAgcHJp
dmF0ZToKICAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSk7CiAgICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbmFtZSwgQ29udGVudFR5cGVMb29rdXBQb2xpY3kpOwogCi0jIGlmIEVOQUJMRShGSUxF
X1NZU1RFTSkKLSAgICBGaWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRmlsZU1ldGFkYXRh
Jik7Ci0gICAgRmlsZShjb25zdCBVUkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0
YSYpOwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaGFzIGEgdmFsaWQgc25hcHNob3Qg
bWV0YWRhdGEgKGkuZS4gbV9zbmFwc2hvdFNpemUgPj0gMCkuCi0gICAgYm9vbCBoYXNWYWxpZFNu
YXBzaG90TWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NuYXBzaG90U2l6ZSA+PSAwOyB9Ci0j
ZW5kaWYKLQogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKIAotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLSAgICBVUkwgbV9maWxlU3lzdGVtVVJMOwotCi0gICAgLy8gSWYg
bV9zbmFwc2hvdFNpemUgaXMgbmVnYXRpdmUgKGluaXRpYWxpemVkIHRvIC0xIGJ5IGRlZmF1bHQp
LCB0aGUgc25hcHNob3QgbWV0YWRhdGEgaXMgaW52YWxpZCBhbmQgd2UgcmV0cmlldmUgdGhlIGxh
dGVzdCBtZXRhZGF0YSBzeW5jaHJvbm91c2x5IGluIHNpemUoKSwgbGFzdE1vZGlmaWVkVGltZSgp
IGFuZCBzbGljZSgpLgotICAgIC8vIE90aGVyd2lzZSwgdGhlIHNuYXBzaG90IG1ldGFkYXRhIGFy
ZSB1c2VkIGRpcmVjdGx5IGluIHRob3NlIG1ldGhvZHMuCi0gICAgY29uc3QgbG9uZyBsb25nIG1f
c25hcHNob3RTaXplOwotICAgIGNvbnN0IGRvdWJsZSBtX3NuYXBzaG90TW9kaWZpY2F0aW9uVGlt
ZTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCiAgICAgU3RyaW5nIG1f
cmVsYXRpdmVQYXRoOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVF
cnJvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRXJyb3Iu
aWRsCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFcnJv
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAqLwogCiBbCi0gICAgQ29u
ZGl0aW9uYWw9QkxPQnxGSUxFX1NZU1RFTSwKKyAgICBDb25kaXRpb25hbD1CTE9CLAogICAgIEpT
Tm9TdGF0aWNUYWJsZXMsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZh
Y2UgRmlsZUVycm9yIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUV4Y2VwdGlv
bi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRXhjZXB0aW9u
LmlkbAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlRXhj
ZXB0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBbCiAgICAgTm9J
bnRlcmZhY2VPYmplY3QsCi0gICAgQ29uZGl0aW9uYWw9QkxPQnxGSUxFX1NZU1RFTSwKKyAgICBD
b25kaXRpb25hbD1CTE9CLAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgSlNOb1N0YXRp
Y1RhYmxlcywKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiwxMSArMTIyLDYgQEAgdm9pZCBCbG9iQnVpbGRlcjo6YXBwZW5kKEJsb2Iq
IGJsb2IpCiAgICAgICAgIGZpbGUtPmNhcHR1cmVTbmFwc2hvdChzbmFwc2hvdFNpemUsIHNuYXBz
aG90TW9kaWZpY2F0aW9uVGltZSk7CiAKICAgICAgICAgbV9zaXplICs9IHNuYXBzaG90U2l6ZTsK
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgIGlmICghZmlsZS0+ZmlsZVN5c3RlbVVS
TCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShm
aWxlLT5maWxlU3lzdGVtVVJMKCksIDAsIHNuYXBzaG90U2l6ZSwgc25hcHNob3RNb2RpZmljYXRp
b25UaW1lKSk7Ci0gICAgICAgIGVsc2UKLSNlbmRpZgogICAgICAgICBtX2l0ZW1zLmFwcGVuZChC
bG9iRGF0YUl0ZW0oZmlsZS0+cGF0aCgpLCAwLCBzbmFwc2hvdFNpemUsIHNuYXBzaG90TW9kaWZp
Y2F0aW9uVGltZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvbmcgbG9uZyBibG9iU2l6ZSA9
IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oYmxvYi0+c2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDEwICs0NDgs
NiBAQCBib29sIEZpbGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMoCiAgICAgfQogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgbV9kcm9wcGVkRmlsZVN5c3RlbUlk
ID0gZHJhZ0RhdGEtPmRyb3BwZWRGaWxlU3lzdGVtSWQoKTsKLSNlbmRpZgotCiAgICAgVmVjdG9y
PEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwYXRocy5zaXplKCk7ICsraSkKICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmls
ZUluZm8ocGF0aHNbaV0pKTsKQEAgLTQ2NiwxMyArNDYyLDYgQEAgYm9vbCBGaWxlSW5wdXRUeXBl
OjpyZWNlaXZlRHJvcHBlZEZpbGVzKAogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotU3RyaW5nIEZpbGVJbnB1dFR5cGU6OmRyb3BwZWRGaWxlU3lzdGVtSWQo
KQotewotICAgIHJldHVybiBtX2Ryb3BwZWRGaWxlU3lzdGVtSWQ7Ci19Ci0jZW5kaWYKLQogSWNv
biogRmlsZUlucHV0VHlwZTo6aWNvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faWNvbi5nZXQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsOSArNjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBnZXRUeXBlU3BlY2lm
aWNWYWx1ZShTdHJpbmcmKSBPVkVSUklERTsgLy8gQ2hlY2tlZCBmaXJzdCwgYmVmb3JlIGludGVy
bmFsIHN0b3JhZ2Ugb3IgdGhlIHZhbHVlIGF0dHJpYnV0ZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVo
YXZpb3IpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZWNlaXZlRHJvcHBlZEZpbGVzKGNv
bnN0IERyYWdEYXRhKikgT1ZFUlJJREU7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIHZp
cnR1YWwgU3RyaW5nIGRyb3BwZWRGaWxlU3lzdGVtSWQoKSBPVkVSUklERTsKLSNlbmRpZgogICAg
IHZpcnR1YWwgSWNvbiogaWNvbigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBp
c0ZpbGVVcGxvYWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZSgpIE9WRVJSSURFOwpAQCAtOTcsMTAgKzk0LDYgQEAgcHJpdmF0ZToKIAogICAg
IFJlZlB0cjxGaWxlTGlzdD4gbV9maWxlTGlzdDsKICAgICBSZWZQdHI8SWNvbj4gbV9pY29uOwot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIFN0cmluZyBtX2Ryb3BwZWRGaWxlU3lzdGVt
SWQ7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM2OSwxMyArMTM2OSw2IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6cmVjZWl2ZURyb3BwZWRG
aWwKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnJlY2VpdmVEcm9wcGVkRmlsZXMoZHJhZ0RhdGEp
OwogfQogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6
OmRyb3BwZWRGaWxlU3lzdGVtSWQoKQotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+ZHJvcHBl
ZEZpbGVTeXN0ZW1JZCgpOwotfQotI2VuZGlmCi0KIEljb24qIEhUTUxJbnB1dEVsZW1lbnQ6Omlj
b24oKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+aWNvbigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzAsMTAgKzIzMCw2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVu
IERyYWdEYXRhIGhhcyBtb3JlIHRoYW4gb25lIGRyb3BwZWQgZmlsZXMuCiAgICAgYm9vbCByZWNl
aXZlRHJvcHBlZEZpbGVzKGNvbnN0IERyYWdEYXRhKik7CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0gICAgU3RyaW5nIGRyb3BwZWRGaWxlU3lzdGVtSWQoKTsKLSNlbmRpZgotCiAgICAgSWNv
biogaWNvbigpIGNvbnN0OwogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBmb3IgcmVu
ZGVyaW5nIHRoZSBpbnB1dCBhY3RpdmUgZHVyaW5nIGEKICAgICAvLyBkcmFnLWFuZC1kcm9wIG9w
ZXJhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHJldmlzaW9uIDE1NjY5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzEyLDE0ICs3MTIsNiBAQCBib29sIElucHV0VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyhj
b25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotU3Ry
aW5nIElucHV0VHlwZTo6ZHJvcHBlZEZpbGVTeXN0ZW1JZCgpCi17Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotI2VuZGlmCi0KIEljb24qIElucHV0
VHlwZTo6aWNvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw5ICsyNDgsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbGVzKFBhc3NSZWZQdHI8RmlsZUxpc3Q+KTsKICAg
ICAvLyBTaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIERyYWdEYXRhIGhhcyBtb3JlIHRo
YW4gb25lIGRyb3BwZWQgZmlsZXMuCiAgICAgdmlydHVhbCBib29sIHJlY2VpdmVEcm9wcGVkRmls
ZXMoY29uc3QgRHJhZ0RhdGEqKTsKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgdmlydHVh
bCBTdHJpbmcgZHJvcHBlZEZpbGVTeXN0ZW1JZCgpOwotI2VuZGlmCiAgICAgdmlydHVhbCBJY29u
KiBpY29uKCkgY29uc3Q7CiAgICAgLy8gU2hvdWxkIHJldHVybiB0cnVlIGlmIHRoZSBjb3JyZXNw
b25kaW5nIHJlbmRlcmVyIGZvciBhIHR5cGUgY2FuIGRpc3BsYXkgYSBzdWdnZXN0ZWQgdmFsdWUu
CiAgICAgdmlydHVhbCBib29sIGNhblNldFN1Z2dlc3RlZFZhbHVlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQkocmV2
aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAgRE9NQUlOX0RFRklO
RV9OQU1FX01BUCA9IHsKICAgICAiRGF0YWJhc2UiOiAiU1FMX0RBVEFCQVNFIiwKICAgICAiRGVi
dWdnZXIiOiAiSkFWQVNDUklQVF9ERUJVR0dFUiIsCiAgICAgIkRPTURlYnVnZ2VyIjogIkpBVkFT
Q1JJUFRfREVCVUdHRVIiLAotICAgICJGaWxlU3lzdGVtIjogIkZJTEVfU1lTVEVNIiwKICAgICAi
SW5kZXhlZERCIjogIklOREVYRURfREFUQUJBU0UiLAogICAgICJQcm9maWxlciI6ICJKQVZBU0NS
SVBUX0RFQlVHR0VSIiwKICAgICAiV29ya2VyIjogIldPUktFUlMiLApJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
MTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQuaCIKQEAgLTExMiw5ICsxMTEsNiBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgcGFnZUFnZW50KSk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBtX2FnZW50cy5hcHBlbmQoSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdl
bnQsIG1fc3RhdGUuZ2V0KCkpKTsKLSNlbmRpZgogICAgIE93blB0cjxJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ+IGRvbVN0b3JhZ2VBZ2VudFB0cihJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmNy
ZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fcGFnZUFnZW50LCBtX3N0YXRlLmdl
dCgpKSk7CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQgPSBk
b21TdG9yYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKGRvbVN0b3JhZ2VB
Z2VudFB0ci5yZWxlYXNlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDc0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgiCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVt
LmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlF
bnRyeS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgotI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5o
IgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJGaWxlLmgiCi0jaW5jbHVkZSAiRmlsZUNh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgi
Ci0jaW5jbHVkZSAiRmlsZVJlYWRlci5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgot
I2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclN0YXRl
LmgiCi0jaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIlVSTC5oIgot
I2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKLSNpbmNsdWRlICJNZXRhZGF0YS5oIgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIK
LSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKLSNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvQmFzZTY0Lmg+Ci0KLXVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpBcnJheTsKLQotdHlw
ZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RmlsZVN5c3RlbUNvbW1h
bmRIYW5kbGVyOjpSZXF1ZXN0RmlsZVN5c3RlbVJvb3RDYWxsYmFjayBSZXF1ZXN0RmlsZVN5c3Rl
bVJvb3RDYWxsYmFjazsKLXR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxlcjo6UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRDYWxs
YmFjayBSZXF1ZXN0RGlyZWN0b3J5Q29udGVudENhbGxiYWNrOwotdHlwZWRlZiBXZWJDb3JlOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RmlsZVN5c3RlbUNvbW1hbmRIYW5kbGVyOjpSZXF1
ZXN0TWV0YWRhdGFDYWxsYmFjayBSZXF1ZXN0TWV0YWRhdGFDYWxsYmFjazsKLXR5cGVkZWYgV2Vi
Q29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxl
cjo6UmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2sgUmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s7
Ci10eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpGaWxlU3lzdGVt
Q29tbWFuZEhhbmRsZXI6OkRlbGV0ZUVudHJ5Q2FsbGJhY2sgRGVsZXRlRW50cnlDYWxsYmFjazsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgRmlsZVN5c3RlbUFnZW50U3RhdGUg
ewotc3RhdGljIGNvbnN0IGNoYXIgZmlsZVN5c3RlbUFnZW50RW5hYmxlZFtdID0gImZpbGVTeXN0
ZW1BZ2VudEVuYWJsZWQiOwotfQotCi1uYW1lc3BhY2UgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBC
YXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhhbmRsZXIsIHR5cGVuYW1lIEFyZ3VtZW50PgotY2xhc3Mg
Q2FsbGJhY2tEaXNwYXRjaGVyIDogcHVibGljIEJhc2VDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBib29sIChIYW5kbGVyOjoqSGFuZGxpbmdNZXRob2QpKEFyZ3VtZW50Kik7Ci0KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxsYmFja0Rpc3BhdGNoZXI+IGNyZWF0ZShQYXNzUmVmUHRy
PEhhbmRsZXI+IGhhbmRsZXIsIEhhbmRsaW5nTWV0aG9kIGhhbmRsaW5nTWV0aG9kKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYWxsYmFja0Rpc3BhdGNoZXIoaGFuZGxlciwg
aGFuZGxpbmdNZXRob2QpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQo
QXJndW1lbnQqIGFyZ3VtZW50KSBPVkVSUklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIChtX2hh
bmRsZXIuZ2V0KCktPiptX2hhbmRsaW5nTWV0aG9kKShhcmd1bWVudCk7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIENhbGxiYWNrRGlzcGF0Y2hlcihQYXNzUmVmUHRyPEhhbmRsZXI+IGhhbmRsZXIs
IEhhbmRsaW5nTWV0aG9kIGhhbmRsaW5nTWV0aG9kKQotICAgICAgICA6IG1faGFuZGxlcihoYW5k
bGVyKQotICAgICAgICAsIG1faGFuZGxpbmdNZXRob2QoaGFuZGxpbmdNZXRob2QpIHsgfQotCi0g
ICAgUmVmUHRyPEhhbmRsZXI+IG1faGFuZGxlcjsKLSAgICBIYW5kbGluZ01ldGhvZCBtX2hhbmRs
aW5nTWV0aG9kOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZUNhbGxiYWNrPgotY2xhc3Mg
Q2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeSB7Ci1wdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFuZGxlciwgdHlwZW5hbWUgQXJndW1lbnQ+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fs
bGJhY2tEaXNwYXRjaGVyPEJhc2VDYWxsYmFjaywgSGFuZGxlciwgQXJndW1lbnQ+ID4gY3JlYXRl
KEhhbmRsZXIqIGhhbmRsZXIsIGJvb2wgKEhhbmRsZXI6OipoYW5kbGluZ01ldGhvZCkoQXJndW1l
bnQqKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBDYWxsYmFja0Rpc3BhdGNoZXI8QmFzZUNhbGxi
YWNrLCBIYW5kbGVyLCBBcmd1bWVudD46OmNyZWF0ZShQYXNzUmVmUHRyPEhhbmRsZXI+KGhhbmRs
ZXIpLCBoYW5kbGluZ01ldGhvZCk7Ci0gICAgfQotfTsKLQotY2xhc3MgRmlsZVN5c3RlbVJvb3RS
ZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbVJvb3RSZXF1ZXN0PiB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRmlsZVN5c3RlbVJvb3RSZXF1ZXN0KTsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlU3lzdGVtUm9vdFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVm
UHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0
IFN0cmluZyYgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0KHJlcXVlc3RDYWxsYmFjaywgdHlwZSkpOwotICAgIH0KLQotICAgIHZv
aWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCi1wcml2YXRlOgotICAgIGJvb2wg
ZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJlc3Vs
dChlcnJvci0+Y29kZSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9v
bCBkaWRHZXRFbnRyeShFbnRyeSopOwotCi0gICAgdm9pZCByZXBvcnRSZXN1bHQoRmlsZUVycm9y
OjpFcnJvckNvZGUgZXJyb3JDb2RlLCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVt
OjpFbnRyeT4gZW50cnkgPSAwKQotICAgIHsKLSAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNl
bmRTdWNjZXNzKHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgZW50cnkpOwotICAgIH0KLQot
ICAgIEZpbGVTeXN0ZW1Sb290UmVxdWVzdChQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9v
dENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgdHlwZSkKLSAgICAgICAg
OiBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spCi0gICAgICAgICwgbV90eXBlKHR5
cGUpIHsgfQotCi0gICAgUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPiBtX3Jl
cXVlc3RDYWxsYmFjazsKLSAgICBTdHJpbmcgbV90eXBlOwotfTsKLQotdm9pZCBGaWxlU3lzdGVt
Um9vdFJlcXVlc3Q6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotCi0gICAg
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJG
YWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkZpbGVTeXN0ZW1Sb290UmVxdWVz
dDo6ZGlkSGl0RXJyb3IpOwotICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7Ci0gICAgaWYgKG1fdHlw
ZSA9PSBET01GaWxlU3lzdGVtQmFzZTo6cGVyc2lzdGVudFBhdGhQcmVmaXgpCi0gICAgICAgIHR5
cGUgPSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQ7Ci0gICAgZWxzZSBpZiAobV90eXBlID09IERP
TUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJlZml4KQotICAgICAgICB0eXBlID0gRmls
ZVN5c3RlbVR5cGVUZW1wb3Jhcnk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVycm9yQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U1lOVEFYX0VSUikuZ2V0
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmRmlsZVN5c3RlbVJvb3RSZXF1ZXN0OjpkaWRHZXRFbnRyeSk7Ci0g
ICAgT3duUHRyPFJlc29sdmVVUklDYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBSZXNv
bHZlVVJJQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCAiLyIpOwotCi0gICAgTG9jYWxGaWxlU3lzdGVt
Ojpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19Ci0KLWJvb2wgRmlsZVN5
c3RlbVJvb3RSZXF1ZXN0OjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkpCi17Ci0gICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkZp
bGVTeXN0ZW06OkVudHJ5OjpjcmVhdGUoKQotICAgICAgICAuc2V0VXJsKGVudHJ5LT50b1VSTCgp
KQotICAgICAgICAuc2V0TmFtZSgiLyIpCi0gICAgICAgIC5zZXRJc0RpcmVjdG9yeSh0cnVlKTsK
LSAgICByZXBvcnRSZXN1bHQoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+KDApLCBy
ZXN1bHQpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1jbGFzcyBEaXJlY3RvcnlDb250ZW50UmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0PiB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRGlyZWN0b3J5Q29udGVudFJlcXVlc3QpOwotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0PiBjcmVhdGUoUGFz
c1JlZlB0cjxSZXF1ZXN0RGlyZWN0b3J5Q29udGVudENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ss
IGNvbnN0IFN0cmluZyYgdXJsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
aXJlY3RvcnlDb250ZW50UmVxdWVzdChyZXF1ZXN0Q2FsbGJhY2ssIHVybCkpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgfkRpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0KCkKLSAgICB7Ci0gICAgICAgIHJl
cG9ydFJlc3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUik7Ci0gICAgfQotCi0gICAgdm9pZCBzdGFy
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBkaWRIaXRF
cnJvcihGaWxlRXJyb3IqIGVycm9yKQotICAgIHsKLSAgICAgICAgcmVwb3J0UmVzdWx0KGVycm9y
LT5jb2RlKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIGRpZEdl
dEVudHJ5KEVudHJ5Kik7Ci0gICAgYm9vbCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFy
cmF5Kik7Ci0KLSAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJv
ckNvZGUsIFBhc3NSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiA+
IGVudHJpZXMgPSAwKQotICAgIHsKLSAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNj
ZXNzKHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgZW50cmllcyk7Ci0gICAgfQotCi0gICAg
RGlyZWN0b3J5Q29udGVudFJlcXVlc3QoUGFzc1JlZlB0cjxSZXF1ZXN0RGlyZWN0b3J5Q29udGVu
dENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6
IG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKLSAgICAgICAgLCBtX3VybChQYXJz
ZWRVUkxTdHJpbmcsIHVybCkgeyB9Ci0KLSAgICB2b2lkIHJlYWREaXJlY3RvcnlFbnRyaWVzKCk7
Ci0KLSAgICBSZWZQdHI8UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRDYWxsYmFjaz4gbV9yZXF1ZXN0
Q2FsbGJhY2s7Ci0gICAgVVJMIG1fdXJsOwotICAgIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6
RmlsZVN5c3RlbTo6RW50cnk+ID4gbV9lbnRyaWVzOwotICAgIFJlZlB0cjxEaXJlY3RvcnlSZWFk
ZXI+IG1fZGlyZWN0b3J5UmVhZGVyOwotfTsKLQotdm9pZCBEaXJlY3RvcnlDb250ZW50UmVxdWVz
dDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
LXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0KLSAgICBSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJy
b3JDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmRpZEhp
dEVycm9yKTsKLSAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOwotICAgIFN0cmluZyBwYXRoOwotICAg
IGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChtX3VybCwgdHlwZSwg
cGF0aCkpIHsKLSAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9yOjpj
cmVhdGUoRmlsZUVycm9yOjpTWU5UQVhfRVJSKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJh
Y2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZEaXJlY3Rv
cnlDb250ZW50UmVxdWVzdDo6ZGlkR2V0RW50cnkpOwotICAgIE93blB0cjxSZXNvbHZlVVJJQ2Fs
bGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3JlYXRl
KHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
dHlwZSwgcGF0aCk7Ci0KLSAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJl
YWRGaWxlU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIGZpbGVTeXN0ZW1DYWxs
YmFja3MucmVsZWFzZSgpKTsKLX0KLQotYm9vbCBEaXJlY3RvcnlDb250ZW50UmVxdWVzdDo6ZGlk
R2V0RW50cnkoRW50cnkqIGVudHJ5KQotewotICAgIGlmICghZW50cnktPmlzRGlyZWN0b3J5KCkp
IHsKLSAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBtX2RpcmVjdG9yeVJlYWRlciA9IHN0
YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5Kj4oZW50cnkpLT5jcmVhdGVSZWFkZXIoKTsKLSAgICBt
X2VudHJpZXMgPSBBcnJheTxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+OjpjcmVhdGUo
KTsKLSAgICByZWFkRGlyZWN0b3J5RW50cmllcygpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0OjpyZWFkRGlyZWN0b3J5RW50cmllcygpCi17Ci0g
ICAgaWYgKCFtX2RpcmVjdG9yeVJlYWRlci0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpIHsKLSAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cmllc0NhbGxiYWNr
Pjo6Y3JlYXRlKHRoaXMsICZEaXJlY3RvcnlDb250ZW50UmVxdWVzdDo6ZGlkUmVhZERpcmVjdG9y
eUVudHJpZXMpOwotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gQ2Fs
bGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFcnJvckNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZEaXJl
Y3RvcnlDb250ZW50UmVxdWVzdDo6ZGlkSGl0RXJyb3IpOwotICAgIG1fZGlyZWN0b3J5UmVhZGVy
LT5yZWFkRW50cmllcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1ib29s
IERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0OjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhFbnRyeUFy
cmF5KiBlbnRyaWVzKQotewotICAgIGlmICghZW50cmllcy0+bGVuZ3RoKCkpIHsKLSAgICAgICAg
cmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgbV9lbnRy
aWVzKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgRW50cnkqIGVudHJ5
ID0gZW50cmllcy0+aXRlbShpKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpGaWxlU3lz
dGVtOjpFbnRyeT4gZW50cnlGb3JGcm9udGVuZCA9IFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpF
bnRyeTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRVcmwoZW50cnktPnRvVVJMKCkpCi0gICAg
ICAgICAgICAuc2V0TmFtZShlbnRyeS0+bmFtZSgpKQotICAgICAgICAgICAgLnNldElzRGlyZWN0
b3J5KGVudHJ5LT5pc0RpcmVjdG9yeSgpKTsKLQotICAgICAgICB1c2luZyBUeXBlQnVpbGRlcjo6
UGFnZTo6UmVzb3VyY2VUeXBlOwotICAgICAgICBpZiAoIWVudHJ5LT5pc0RpcmVjdG9yeSgpKSB7
Ci0gICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1F
VHlwZUZvclBhdGgoZW50cnktPm5hbWUoKSk7Ci0gICAgICAgICAgICBSZXNvdXJjZVR5cGU6OkVu
dW0gcmVzb3VyY2VUeXBlOwotICAgICAgICAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkpIHsKLSAgICAgICAgICAgICAgICByZXNvdXJj
ZVR5cGUgPSBSZXNvdXJjZVR5cGU6OkltYWdlOwotICAgICAgICAgICAgICAgIGVudHJ5Rm9yRnJv
bnRlbmQtPnNldElzVGV4dEZpbGUoZmFsc2UpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShtaW1lVHlwZSkpIHsK
LSAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGUgPSBSZXNvdXJjZVR5cGU6OlNjcmlwdDsKLSAg
ICAgICAgICAgICAgICBlbnRyeUZvckZyb250ZW5kLT5zZXRJc1RleHRGaWxlKHRydWUpOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGUobWltZVR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlID0gUmVz
b3VyY2VUeXBlOjpEb2N1bWVudDsKLSAgICAgICAgICAgICAgICBlbnRyeUZvckZyb250ZW5kLT5z
ZXRJc1RleHRGaWxlKHRydWUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICByZXNvdXJjZVR5cGUgPSBSZXNvdXJjZVR5cGU6Ok90aGVyOwotICAgICAgICAgICAgICAgIGVu
dHJ5Rm9yRnJvbnRlbmQtPnNldElzVGV4dEZpbGUoRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlN
RVR5cGUobWltZVR5cGUpIHx8IERPTUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShtaW1l
VHlwZSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBlbnRyeUZvckZyb250ZW5kLT5z
ZXRNaW1lVHlwZShtaW1lVHlwZSk7Ci0gICAgICAgICAgICBlbnRyeUZvckZyb250ZW5kLT5zZXRS
ZXNvdXJjZVR5cGUocmVzb3VyY2VUeXBlKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZW50cmll
cy0+YWRkSXRlbShlbnRyeUZvckZyb250ZW5kKTsKLSAgICB9Ci0gICAgcmVhZERpcmVjdG9yeUVu
dHJpZXMoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY2xhc3MgTWV0YWRhdGFSZXF1ZXN0IDog
cHVibGljIFJlZkNvdW50ZWQ8TWV0YWRhdGFSZXF1ZXN0PiB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTWV0YWRhdGFSZXF1ZXN0KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZXRhZGF0YVJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRyPFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNr
PiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgdXJsKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZXRhZGF0YVJlcXVlc3QocmVxdWVzdENhbGxiYWNrLCB1cmwpKTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5NZXRhZGF0YVJlcXVlc3QoKQotICAgIHsKLSAgICAgICAg
cmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0
YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQotcHJpdmF0ZToKLSAgICBib29sIGRpZEhp
dEVycm9yKEZpbGVFcnJvciogZXJyb3IpCi0gICAgewotICAgICAgICByZXBvcnRSZXN1bHQoZXJy
b3ItPmNvZGUoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgZGlk
R2V0RW50cnkoRW50cnkqKTsKLSAgICBib29sIGRpZEdldE1ldGFkYXRhKE1ldGFkYXRhKik7Ci0K
LSAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06Ok1ldGFkYXRhPiBtZXRhZGF0YSA9IDAp
Ci0gICAgewotICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3Moc3RhdGljX2Nh
c3Q8aW50PihlcnJvckNvZGUpLCBtZXRhZGF0YSk7Ci0gICAgfQotCi0gICAgTWV0YWRhdGFSZXF1
ZXN0KFBhc3NSZWZQdHI8UmVxdWVzdE1ldGFkYXRhQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywg
Y29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENh
bGxiYWNrKQotICAgICAgICAsIG1fdXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKSB7IH0KLQotICAg
IFJlZlB0cjxSZXF1ZXN0TWV0YWRhdGFDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAg
VVJMIG1fdXJsOwotICAgIFN0cmluZyBtX3BhdGg7Ci0gICAgYm9vbCBtX2lzRGlyZWN0b3J5Owot
fTsKLQotdm9pZCBNZXRhZGF0YVJlcXVlc3Q6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwotCi0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxs
YmFja0Rpc3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJk1ldGFk
YXRhUmVxdWVzdDo6ZGlkSGl0RXJyb3IpOwotCi0gICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKLSAg
ICBpZiAoIURPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwobV91cmwsIHR5cGUs
IG1fcGF0aCkpIHsKLSAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9y
OjpjcmVhdGUoRmlsZUVycm9yOjpTWU5UQVhfRVJSKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2Fs
bGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZNZXRh
ZGF0YVJlcXVlc3Q6OmRpZEdldEVudHJ5KTsKLSAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNr
cz4gZmlsZVN5c3RlbUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUs
IG1fcGF0aCk7Ci0gICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmls
ZVN5c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tz
LnJlbGVhc2UoKSk7Ci19Ci0KLWJvb2wgTWV0YWRhdGFSZXF1ZXN0OjpkaWRHZXRFbnRyeShFbnRy
eSogZW50cnkpCi17Ci0gICAgaWYgKCFlbnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpIHsKLSAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJS
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgUmVmUHRyPE1ldGFkYXRhQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8TWV0YWRh
dGFDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmTWV0YWRhdGFSZXF1ZXN0OjpkaWRHZXRNZXRhZGF0
YSk7Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rp
c3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJk1ldGFkYXRhUmVx
dWVzdDo6ZGlkSGl0RXJyb3IpOwotICAgIGVudHJ5LT5nZXRNZXRhZGF0YShzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spOwotICAgIG1faXNEaXJlY3RvcnkgPSBlbnRyeS0+aXNEaXJlY3Rv
cnkoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNZXRhZGF0YVJlcXVlc3Q6OmRpZEdl
dE1ldGFkYXRhKE1ldGFkYXRhKiBtZXRhZGF0YSkKLXsKLSAgICB1c2luZyBUeXBlQnVpbGRlcjo6
RmlsZVN5c3RlbTo6TWV0YWRhdGE7Ci0gICAgUmVmUHRyPE1ldGFkYXRhPiByZXN1bHQgPSBNZXRh
ZGF0YTo6Y3JlYXRlKCkKLSAgICAgICAgLnNldE1vZGlmaWNhdGlvblRpbWUobWV0YWRhdGEtPm1v
ZGlmaWNhdGlvblRpbWUoKSkKLSAgICAgICAgLnNldFNpemUobWV0YWRhdGEtPnNpemUoKSk7Ci0g
ICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgcmVz
dWx0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotY2xhc3MgRmlsZUNvbnRlbnRSZXF1ZXN0IDog
cHVibGljIEV2ZW50TGlzdGVuZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZpbGVDb250
ZW50UmVxdWVzdCk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZUNvbnRlbnRS
ZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZUNvbnRlbnRDYWxsYmFjaz4gcmVx
dWVzdENhbGxiYWNrLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBsb25nIGxv
bmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZUNvbnRlbnRSZXF1ZXN0KHJlcXVlc3RDYWxs
YmFjaywgdXJsLCByZWFkQXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0KSk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB+RmlsZUNvbnRlbnRSZXF1ZXN0KCkKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJl
c3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUik7Ci0gICAgfQotCi0gICAgdm9pZCBzdGFydChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiBvdGhlcikgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzID09ICZvdGhlcjsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgT1ZFUlJJREUKLSAgICB7Ci0gICAg
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCi0gICAgICAg
ICAgICBkaWRSZWFkKCk7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQpCi0gICAgICAgICAgICBkaWRIaXRFcnJvcihtX3JlYWRlci0+ZXJy
b3IoKS5nZXQoKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGJvb2wgZGlkSGl0RXJyb3IoRmls
ZUVycm9yKiBlcnJvcikKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgp
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBkaWRHZXRFbnRyeShF
bnRyeSopOwotICAgIGJvb2wgZGlkR2V0RmlsZShGaWxlKik7Ci0gICAgdm9pZCBkaWRSZWFkKCk7
Ci0KLSAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUs
IGNvbnN0IFN0cmluZyogcmVzdWx0ID0gMCwgY29uc3QgU3RyaW5nKiBjaGFyc2V0ID0gMCkKLSAg
ICB7Ci0gICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhzdGF0aWNfY2FzdDxp
bnQ+KGVycm9yQ29kZSksIHJlc3VsdCwgY2hhcnNldCk7Ci0gICAgfQotCi0gICAgRmlsZUNvbnRl
bnRSZXF1ZXN0KFBhc3NSZWZQdHI8UmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s+IHJlcXVlc3RD
YWxsYmFjaywgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4dCwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCi0gICAgICAgIDogRXZl
bnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAg
LCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spCi0gICAgICAgICwgbV91cmwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpCi0gICAgICAgICwgbV9yZWFkQXNUZXh0KHJlYWRBc1RleHQpCi0g
ICAgICAgICwgbV9zdGFydChzdGFydCkKLSAgICAgICAgLCBtX2VuZChlbmQpCi0gICAgICAgICwg
bV9jaGFyc2V0KGNoYXJzZXQpIHsgfQotCi0gICAgUmVmUHRyPFJlcXVlc3RGaWxlQ29udGVudENh
bGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKLSAgICBVUkwgbV91cmw7Ci0gICAgYm9vbCBtX3Jl
YWRBc1RleHQ7Ci0gICAgaW50IG1fc3RhcnQ7Ci0gICAgbG9uZyBsb25nIG1fZW5kOwotICAgIFN0
cmluZyBtX21pbWVUeXBlOwotICAgIFN0cmluZyBtX2NoYXJzZXQ7Ci0KLSAgICBSZWZQdHI8Rmls
ZVJlYWRlcj4gbV9yZWFkZXI7Ci19OwotCi12b2lkIEZpbGVDb250ZW50UmVxdWVzdDo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLXsKLSAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0KLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRIaXRFcnJvcik7Ci0KLSAg
ICBGaWxlU3lzdGVtVHlwZSB0eXBlOwotICAgIFN0cmluZyBwYXRoOwotICAgIGlmICghRE9NRmls
ZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChtX3VybCwgdHlwZSwgcGF0aCkpIHsKLSAg
ICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVy
cm9yOjpTWU5UQVhfRVJSKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVy
RmFjdG9yeTxFbnRyeUNhbGxiYWNrPjo6Y3JlYXRlKHRoaXMsICZGaWxlQ29udGVudFJlcXVlc3Q6
OmRpZEdldEVudHJ5KTsKLSAgICBPd25QdHI8UmVzb2x2ZVVSSUNhbGxiYWNrcz4gZmlsZVN5c3Rl
bUNhbGxiYWNrcyA9IFJlc29sdmVVUklDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUsIHBhdGgpOwotCi0g
ICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZWFkRmlsZVN5c3RlbShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7
Ci19Ci0KLWJvb2wgRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRHZXRFbnRyeShFbnRyeSogZW50cnkp
Ci17Ci0gICAgaWYgKGVudHJ5LT5pc0RpcmVjdG9yeSgpKSB7Ci0gICAgICAgIHJlcG9ydFJlc3Vs
dChGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgaWYgKCFlbnRyeS0+ZmlsZXN5c3RlbSgpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKLSAgICAgICAgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6QUJPUlRfRVJSKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrID0gQ2FsbGJhY2tEaXNwYXRjaGVyRmFjdG9yeTxGaWxlQ2FsbGJhY2s+Ojpj
cmVhdGUodGhpcywgJkZpbGVDb250ZW50UmVxdWVzdDo6ZGlkR2V0RmlsZSk7Ci0gICAgUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rpc3BhdGNoZXJGYWN0b3J5
PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkZpbGVDb250ZW50UmVxdWVzdDo6ZGlkSGl0
RXJyb3IpOwotICAgIHN0YXRpY19jYXN0PEZpbGVFbnRyeSo+KGVudHJ5KS0+ZmlsZShzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotCi0gICAgbV9yZWFkZXIgPSBGaWxlUmVhZGVyOjpj
cmVhdGUoZW50cnktPmZpbGVzeXN0ZW0oKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAg
ICBtX21pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKGVudHJ5
LT5uYW1lKCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRmlsZUNvbnRlbnRSZXF1
ZXN0OjpkaWRHZXRGaWxlKEZpbGUqIGZpbGUpCi17Ci0gICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBm
aWxlLT5zbGljZShtX3N0YXJ0LCBtX2VuZCk7Ci0gICAgbV9yZWFkZXItPnNldE9ubG9hZCh0aGlz
KTsKLSAgICBtX3JlYWRlci0+c2V0T25lcnJvcih0aGlzKTsKLQotICAgIG1fcmVhZGVyLT5yZWFk
QXNBcnJheUJ1ZmZlcihibG9iLmdldCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdm9pZCBGaWxlQ29udGVudFJlcXVlc3Q6OmRpZFJlYWQoKQotewotICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gbV9yZWFkZXItPmFycmF5QnVmZmVyUmVzdWx0KCk7
Ci0KLSAgICBpZiAoIW1fcmVhZEFzVGV4dCkgewotICAgICAgICBTdHJpbmcgcmVzdWx0ID0gYmFz
ZTY0RW5jb2RlKHN0YXRpY19jYXN0PGNoYXIqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKLSAgICAgICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6
RXJyb3JDb2RlPigwKSwgJnJlc3VsdCwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZShtX21pbWVUeXBlLCBtX2NoYXJzZXQsIHRydWUpOwotICAgIFN0cmluZyByZXN1
bHQgPSBkZWNvZGVyLT5kZWNvZGUoc3RhdGljX2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgIHJlc3VsdC5hcHBlbmQoZGVjb2Rlci0+Zmx1c2go
KSk7Ci0gICAgbV9jaGFyc2V0ID0gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kb21OYW1lKCk7Ci0gICAg
cmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJyb3JDb2RlPigwKSwgJnJlc3Vs
dCwgJm1fY2hhcnNldCk7Ci19Ci0KLWNsYXNzIERlbGV0ZUVudHJ5UmVxdWVzdCA6IHB1YmxpYyBW
b2lkQ2FsbGJhY2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlbGV0ZUVudHJ5
UmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8RGVsZXRlRW50cnlDYWxsYmFjaz4gcmVxdWVzdENh
bGxiYWNrLCBjb25zdCBVUkwmIHVybCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRGVsZXRlRW50cnlSZXF1ZXN0KHJlcXVlc3RDYWxsYmFjaywgdXJsKSk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB+RGVsZXRlRW50cnlSZXF1ZXN0KCkKLSAgICB7Ci0gICAgICAgIHJlcG9ydFJl
c3VsdChGaWxlRXJyb3I6OkFCT1JUX0VSUik7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGhh
bmRsZUV2ZW50KCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIHJldHVybiBkaWREZWxldGVFbnRy
eSgpOwotICAgIH0KLQotICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwot
Ci1wcml2YXRlOgotICAgIGJvb2wgZGlkSGl0RXJyb3IoRmlsZUVycm9yKiBlcnJvcikKLSAgICB7
Ci0gICAgICAgIHJlcG9ydFJlc3VsdChlcnJvci0+Y29kZSgpKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgYm9vbCBkaWRHZXRFbnRyeShFbnRyeSopOwotICAgIGJvb2wgZGlk
RGVsZXRlRW50cnkoKTsKLQotICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JD
b2RlIGVycm9yQ29kZSkKLSAgICB7Ci0gICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3Vj
Y2VzcyhzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSkpOwotICAgIH0KLQotICAgIERlbGV0ZUVu
dHJ5UmVxdWVzdChQYXNzUmVmUHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFj
aywgY29uc3QgVVJMJiB1cmwpCi0gICAgICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENh
bGxiYWNrKQotICAgICAgICAsIG1fdXJsKHVybCkgeyB9Ci0KLSAgICBSZWZQdHI8RGVsZXRlRW50
cnlDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgVVJMIG1fdXJsOwotfTsKLQotdm9p
ZCBEZWxldGVFbnRyeVJlcXVlc3Q6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwotCi0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSBDYWxsYmFja0Rp
c3BhdGNoZXJGYWN0b3J5PEVycm9yQ2FsbGJhY2s+OjpjcmVhdGUodGhpcywgJkRlbGV0ZUVudHJ5
UmVxdWVzdDo6ZGlkSGl0RXJyb3IpOwotCi0gICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKLSAgICBT
dHJpbmcgcGF0aDsKLSAgICBpZiAoIURPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1V
UkwobV91cmwsIHR5cGUsIHBhdGgpKSB7Ci0gICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U1lOVEFYX0VSUikuZ2V0KCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHBhdGggPT0gIi8iKSB7Ci0gICAgICAgIE93
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGZpbGVTeXN0ZW1DYWxsYmFja3MgPSBWb2lk
Q2FsbGJhY2tzOjpjcmVhdGUodGhpcywgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIExvY2FsRmls
ZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkuZGVsZXRlRmlsZVN5c3RlbShzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCB0eXBlLCBmaWxlU3lzdGVtQ2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IENh
bGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RW50cnlDYWxsYmFjaz46OmNyZWF0ZSh0aGlzLCAmRGVs
ZXRlRW50cnlSZXF1ZXN0OjpkaWRHZXRFbnRyeSk7Ci0gICAgICAgIE93blB0cjxSZXNvbHZlVVJJ
Q2FsbGJhY2tzPiBmaWxlU3lzdGVtQ2FsbGJhY2tzID0gUmVzb2x2ZVVSSUNhbGxiYWNrczo6Y3Jl
YXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgdHlwZSwgcGF0aCk7Ci0gICAgICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVt
KCkucmVhZEZpbGVTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdHlwZSwgZmlsZVN5c3Rl
bUNhbGxiYWNrcy5yZWxlYXNlKCkpOwotICAgIH0KLX0KLQotYm9vbCBEZWxldGVFbnRyeVJlcXVl
c3Q6OmRpZEdldEVudHJ5KEVudHJ5KiBlbnRyeSkKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IENhbGxiYWNrRGlzcGF0Y2hlckZhY3Rvcnk8RXJyb3JDYWxsYmFj
az46OmNyZWF0ZSh0aGlzLCAmRGVsZXRlRW50cnlSZXF1ZXN0OjpkaWRIaXRFcnJvcik7Ci0gICAg
aWYgKGVudHJ5LT5pc0RpcmVjdG9yeSgpKSB7Ci0gICAgICAgIERpcmVjdG9yeUVudHJ5KiBkaXJl
Y3RvcnlFbnRyeSA9IHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5Kj4oZW50cnkpOwotICAgICAg
ICBkaXJlY3RvcnlFbnRyeS0+cmVtb3ZlUmVjdXJzaXZlbHkodGhpcywgZXJyb3JDYWxsYmFjayk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIGVudHJ5LT5yZW1vdmUodGhpcywgZXJyb3JDYWxsYmFjayk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRGVsZXRlRW50cnlSZXF1ZXN0OjpkaWREZWxl
dGVFbnRyeSgpCi17Ci0gICAgcmVwb3J0UmVzdWx0KHN0YXRpY19jYXN0PEZpbGVFcnJvcjo6RXJy
b3JDb2RlPigwKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQotCi0vLyBzdGF0aWMKLVBhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9y
Q29tcG9zaXRlU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHBhZ2VBZ2VudCwgc3RhdGUp
KTsKLX0KLQotSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojp+SW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50KCkKLXsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudCgwKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyopCi17Ci0gICAgaWYgKG1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotICAg
IG1fZW5hYmxlZCA9IHRydWU7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdl
bnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKLX0KLQotdm9pZCBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQotewotICAgIGlm
ICghbV9lbmFibGVkKQotICAgICAgICByZXR1cm47Ci0gICAgbV9lbmFibGVkID0gZmFsc2U7Ci0g
ICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdlbnRTdGF0ZTo6ZmlsZVN5c3RlbUFn
ZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQ6OnJlcXVlc3RGaWxlU3lzdGVtUm9vdChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8UmVxdWVzdEZpbGVTeXN0
ZW1Sb290Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKLXsKLSAgICBpZiAoIWFzc2VydEVuYWJs
ZWQoZXJyb3IpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZv
ck9yaWdpbihlcnJvciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKS5n
ZXQoKSk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2ssIHR5
cGUpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3REaXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5nKiBlcnJv
ciwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRD
YWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQotewotICAgIGlmICghYXNzZXJ0RW5hYmxlZChlcnJv
cikpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2lu
KGVycm9yLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKTsKLSAg
ICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIERp
cmVjdG9yeUNvbnRlbnRSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENhbGxiYWNrLCB1cmwpLT5zdGFy
dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ6OnJlcXVlc3RNZXRhZGF0YShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYg
dXJsLCBQYXNzUmVmUHRyPFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sp
Ci17Ci0gICAgaWYgKCFhc3NlcnRFbmFibGVkKGVycm9yKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGFzc2Vy
dFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oZXJyb3IsIFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHVybCkuZ2V0KCkpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTWV0YWRhdGFSZXF1ZXN0OjpjcmVhdGUocmVx
dWVzdENhbGxiYWNrLCB1cmwpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0
cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIHJlYWRBc1RleHQsIGNvbnN0IGlu
dCogc3RhcnQsIGNvbnN0IGludCogZW5kLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQsIFBhc3NSZWZQ
dHI8UmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKLXsKLSAgICBp
ZiAoIWFzc2VydEVuYWJsZWQoZXJyb3IpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJvciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcodXJsKS5nZXQoKSk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBsb25nIGxvbmcgc3RhcnRQb3NpdGlvbiA9IHN0YXJ0ID8gKnN0
YXJ0IDogMDsKLSAgICBsb25nIGxvbmcgZW5kUG9zaXRpb24gPSBlbmQgPyAqZW5kIDogc3RkOjpu
dW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKTsKLSAgICBGaWxlQ29udGVudFJlcXVlc3Q6
OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2ssIHVybCwgcmVhZEFzVGV4dCwgc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24sIGNoYXJzZXQgPyAqY2hhcnNldCA6ICIiKS0+c3RhcnQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkZWxldGVF
bnRyeShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBQYXNzUmVm
UHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKLXsKLSAgICBpZiAoIWFz
c2VydEVuYWJsZWQoZXJyb3IpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBVUkwgdXJsKFBhcnNl
ZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKLQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3Jp
Z2luKGVycm9yLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCkpOwotICAgIGlmICgh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRGVsZXRlRW50
cnlSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENhbGxiYWNrLCB1cmwpLT5zdGFydChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNsZWFy
RnJvbnRlbmQoKQotewotICAgIG1fZW5hYmxlZCA9IGZhbHNlOwotICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oRmlsZVN5c3RlbUFnZW50U3RhdGU6OmZpbGVTeXN0ZW1BZ2VudEVuYWJsZWQsIG1fZW5h
YmxlZCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXN0b3JlKCkKLXsK
LSAgICBtX2VuYWJsZWQgPSBtX3N0YXRlLT5nZXRCb29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRl
OjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkKTsKLX0KLQotSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNvbXBv
c2l0ZVN0YXRlKiBzdGF0ZSkKLSAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ+KCJGaWxlU3lzdGVtIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCi0g
ICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCi0gICAgLCBtX2VuYWJsZWQoZmFsc2UpCi17Ci0g
ICAgQVNTRVJUKGluc3RydW1lbnRpbmdBZ2VudHMpOwotICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAg
QVNTRVJUKG1fcGFnZUFnZW50KTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudCh0aGlzKTsKLX0KLQotYm9vbCBJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ6OmFzc2VydEVuYWJsZWQoRXJyb3JTdHJpbmcqIGVycm9yKQotewotICAgIGlmICghbV9l
bmFibGVkKSB7Ci0gICAgICAgICplcnJvciA9ICJGaWxlU3lzdGVtIGFnZW50IGlzIG5vdCBlbmFi
bGVkLiI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6YXNz
ZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihFcnJvclN0cmluZyogZXJyb3IsIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2VB
Z2VudC0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChvcmlnaW4pKQotICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpOwotICAgIH0KLQotICAgICplcnJvciA9
ICJObyBmcmFtZSBpcyBhdmFpbGFibGUgZm9yIHRoZSByZXF1ZXN0IjsKLSAgICByZXR1cm4gMDsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikgJiYgRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAkocmV2aXNpb24gMTU2NjkxKQor
KysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudF9oCi0jZGVmaW5lIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudF9oCi0KLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJJbnNw
ZWN0b3JCYXNlQWdlbnQuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZDsKLWNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLQotY2xhc3MgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0
ZW1Db21tYW5kSGFuZGxlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
clBhZ2VBZ2VudCosIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKik7Ci0gICAgdmlydHVhbCB+SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcq
KSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbVJvb3QoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5n
LCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3REaXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRDYWxsYmFj
az4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TWV0YWRhdGEoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxSZXF1ZXN0TWV0YWRhdGFDYWxsYmFj
az4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZUNvbnRlbnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCByZWFkQXNUZXh0LCBjb25zdCBpbnQqIHN0
YXJ0LCBjb25zdCBpbnQqIGVuZCwgY29uc3QgU3RyaW5nKiBjaGFyc2V0LCBQYXNzUmVmUHRyPFJl
cXVlc3RGaWxlQ29udGVudENhbGxiYWNrPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUVudHJ5KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RGVs
ZXRlRW50cnlDYWxsYmFjaz4pIE9WRVJSSURFOwotCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJv
bnRlbmQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpIE9WRVJSSURFOwot
Ci1wcml2YXRlOgotICAgIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ29tcG9zaXRlU3RhdGUqKTsKLSAg
ICBib29sIGFzc2VydEVuYWJsZWQoRXJyb3JTdHJpbmcqKTsKLSAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKEVycm9yU3RyaW5n
KiwgU2VjdXJpdHlPcmlnaW4qKTsKLQotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdl
bnQ7Ci0gICAgYm9vbCBtX2VuYWJsZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoRklMRV9TWVNURU0pCi0jZW5k
aWYgLy8gSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkNvbnRleHRNZW51
SXRlbS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNv
bnRleHRNZW51UHJvdmlkZXIuaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVk
ZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCkBAIC0zMTgsMTQgKzMxNyw2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpyZW1vdmVGaWxlU3kKICAgICAgICAgbV9jbGllbnQtPnJlbW92ZUZpbGVTeXN0ZW0oZmls
ZVN5c3RlbVBhdGgpOwogfQogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Omlzb2xhdGVkRmlsZVN5c3RlbShj
b25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1lLCBjb25zdCBTdHJpbmcmIHJvb3RVUkwpCi17Ci0g
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IG1fZnJvbnRlbmRQYWdlLT5tYWlu
RnJhbWUoKS5kb2N1bWVudCgpOwotICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29u
dGV4dCwgZmlsZVN5c3RlbU5hbWUsIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIFVSTChQYXJzZWRV
UkxTdHJpbmcsIHJvb3RVUkwpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgpKTsKLX0KLSNlbmRp
ZgotCiBib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6aXNVbmRlclRlc3QoKQogewogICAgIHJl
dHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+aXNVbmRlclRlc3QoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb250ZXh0TWVudUl0ZW07Ci1jbGFzcyBET01GaWxlU3lzdGVtOwogY2xhc3Mg
RXZlbnQ7CiBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlcjsKIGNsYXNzIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50OwpAQCAtODgsOSArODcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0Rmls
ZVN5c3RlbXMoKTsKICAgICB2b2lkIGFkZEZpbGVTeXN0ZW0oKTsKICAgICB2b2lkIHJlbW92ZUZp
bGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtUGF0aCk7Ci0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotICAgIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gaXNvbGF0ZWRGaWxlU3lzdGVt
KGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbU5hbWUsIGNvbnN0IFN0cmluZyYgcm9vdFVSTCk7Ci0j
ZW5kaWYKIAogICAgIGJvb2wgaXNVbmRlclRlc3QoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBACiAgICAgdm9pZCByZXF1ZXN0Rmls
ZVN5c3RlbXMoKTsKICAgICB2b2lkIGFkZEZpbGVTeXN0ZW0oKTsKICAgICB2b2lkIHJlbW92ZUZp
bGVTeXN0ZW0oRE9NU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKTsKLSAgICBbQ29uZGl0aW9uYWw9RklM
RV9TWVNURU1dIERPTUZpbGVTeXN0ZW0gaXNvbGF0ZWRGaWxlU3lzdGVtKERPTVN0cmluZyBmaWxl
U3lzdGVtSWQsIERPTVN0cmluZyByZWdpc3RlcmVkTmFtZSk7CiAKICAgICBib29sZWFuIGlzVW5k
ZXJUZXN0KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5n
QWdlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOSAr
NTksNiBAQCBJbnN0cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKICAgICAsIG1faW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgwKQogI2Vu
ZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICwgbV9pbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQoMCkKLSNlbmRpZgogICAgICwgbV9pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQo
MCkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAsIG1faW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCgwKQpAQCAtOTQsOSArOTEsNiBAQCB2b2lkIEluc3RydW1lbnRpbmdBZ2VudHM6
OnJlc2V0KCkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIG1faW5zcGVjdG9yRGF0YWJh
c2VBZ2VudCA9IDA7CiAjZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgbV9pbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQgPSAwOwotI2VuZGlmCiAgICAgbV9pbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQgPSAwOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAg
IG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOCwxMSArMTA4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5zcGVjdG9yRGF0
YWJhc2VBZ2VudChJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckRh
dGFiYXNlQWdlbnQgPSBhZ2VudDsgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0gICAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KiBpbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQo
KSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDsgfQotICAgIHZvaWQg
c2V0SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogYWdl
bnQpIHsgbV9pbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQgPSBhZ2VudDsgfQotI2VuZGlmCi0KICAg
ICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
OyB9CiAgICAgdm9pZCBzZXRJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCA9IGFnZW50OyB9CiAKQEAgLTE2NSw5ICsxNjAsNiBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAgICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogbV9pbnNwZWN0
b3JEYXRhYmFzZUFnZW50OwogI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudCogbV9pbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ7Ci0jZW5k
aWYKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIG1faW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50OwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTksMTAgKzU5LDYgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoYwog
ICAgIGlmICh1cmwucHJvdG9jb2xJcygiYmxvYiIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNl
bmRpZgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBpZiAodXJsLnByb3RvY29sSXMoImZp
bGVzeXN0ZW0iKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICAgICBVTlVTRURfUEFS
QU0odXJsKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0u
aCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiAhUExBVEZPUk0oR1RL
KSAmJiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgIVBMQVRGT1JNKEVGTCkKLWJvb2wgQXN5bmNG
aWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShj
b25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBG
aWxlU3lzdGVtVHlwZSwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGNhbGxiYWNrcy0+ZGlk
RmFpbChOT1RfU1VQUE9SVEVEX0VSUik7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFn
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBj
YWxsYmFja3MtPmRpZEZhaWwoTk9UX1NVUFBPUlRFRF9FUlIpOwotfQotI2VuZGlmCi0KLX0gLy8g
bmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24gMTU2NjkxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFzeW5jRmlsZVN5c3RlbV9oCi0jZGVmaW5lIEFzeW5j
RmlsZVN5c3RlbV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJGaWxl
U3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBc3luY0ZpbGVTeXN0ZW07Ci1jbGFzcyBB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M7Ci1jbGFzcyBBc3luY0ZpbGVXcml0ZXJDbGllbnQ7Ci0K
LS8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgYXN5bmMgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybS1zcGVj
aWZpYyBmaWxlIHN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gIE5vdGUgdGhhdCBhbGwgdGhlIG1ldGhv
ZHMgdGFrZSBwbGF0Zm9ybSBwYXRocy4KLWNsYXNzIEFzeW5jRmlsZVN5c3RlbSB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXN5bmNGaWxlU3lzdGVtKTsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5Bc3luY0ZpbGVTeXN0ZW0oKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0K
LSAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotCi0gICAgLy8gU3ViY2xhc3MgbXVzdCBp
bXBsZW1lbnQgdGhpcyBpZiBpdCBzdXBwb3J0cyBzeW5jaHJvbm91cyBvcGVyYXRpb25zLgotICAg
IC8vIFRoaXMgc2hvdWxkIHJldHVybiBmYWxzZSBpZiB0aGVyZSBhcmUgbm8gcGVuZGluZyBvcGVy
YXRpb25zLgotICAgIHZpcnR1YWwgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IHBsYXRm
b3JtLXNwZWNpZmljIEFzeW5jRmlsZVN5c3RlbSBpbnN0YW5jZSBpZiB0aGUgcGxhdGZvcm0gaGFz
IGl0cyBvd24gaW1wbGVtZW50YXRpb24uCi0gICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPiBjcmVhdGUoKTsKLQotICAgIC8vIE9wZW5zIGEgbmV3IGZpbGUgc3lzdGVtLiBUaGUg
Y3JlYXRlIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciBvciBub3QgdG8gY3JlYXRlIHRoZSBw
YXRoIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3RzLgotICAgIHN0YXRpYyB2b2lkIG9wZW5G
aWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlLCBib29sIGNyZWF0ZSwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKLQotICAgIC8vIERlbGV0ZXMgdGhlIGZpbGUgc3lzdGVtLgot
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwg
Y29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0KLSAgICAvLyBNb3ZlcyBhIGZpbGUgb3Ig
ZGlyZWN0b3J5IGZyb20gc3JjUGF0aCB0byBkZXN0UGF0aC4KLSAgICAvLyBBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlz
IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShj
b25zdCBVUkwmIHNyY1BhdGgsIGNvbnN0IFVSTCYgZGVzdFBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwotCi0gICAgLy8gQ29waWVzIGEgZmlsZSBvciBkaXJl
Y3RvcnkgZnJvbSBzcmNQYXRoIHRvIGRlc3RQYXRoLgotICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29t
cGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRp
ZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0
IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KSA9IDA7Ci0KLSAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3Rv
cnkgYXQgYSBnaXZlbiBwYXRoLgotICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIHRyeSB0byByZW1v
dmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgZW1wdHkuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBj
b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAw
OwotCi0gICAgLy8gUmVjdXJzaXZlbHkgZGVsZXRlcyBhIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHBh
dGguCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2Fs
bGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8v
IEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2Uu
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Ci0KLSAgICAvLyBSZXRyaWV2
ZXMgdGhlIG1ldGFkYXRhIGluZm9ybWF0aW9uIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCBh
IGdpdmVuIHBhdGguCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRSZWFkTWV0
YWRhdGEoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNz
ZnVsbHkuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2Fs
bGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Ci0KLSAgICAv
LyBDcmVhdGVzIGEgZmlsZSBhdCBhIGdpdmVuIHBhdGguICBJZiBleGNsdXNpdmUgZmxhZyBpcyB0
cnVlLCBpdCBmYWlscyBpZiB0aGUgcGF0aCBhbHJlYWR5IGV4aXN0cy4KLSAgICAvLyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0
aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKLQotICAgIC8vIENyZWF0ZXMgYSBkaXJlY3Rv
cnkgYXQgYSBnaXZlbiBwYXRoLiAgSWYgZXhjbHVzaXZlIGZsYWcgaXMgdHJ1ZSwgaXQgZmFpbHMg
aWYgdGhlIHBhdGggYWxyZWFkeSBleGlzdHMuCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0
ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFp
bCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9y
eShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pID0gMDsKLQotICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0
IGEgZ2l2ZW4gcGF0aC4KLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2Nl
ZWQoKSBpcyBjYWxsZWQgaWYgdGhlIGZpbGUgZXhpc3RzLgotICAgIC8vIEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2
b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pID0gMDsKLQotICAgIC8vIENoZWNrcyBpZiBhIGRpcmVjdG9yeSBleGlzdHMg
YXQgYSBnaXZlbiBwYXRoLgotICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3Vj
Y2VlZCgpIGlzIGNhbGxlZCBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cy4KLSAgICAvLyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZp
cnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKLQotICAgIC8vIFJlYWRzIGRpcmVjdG9yeSBl
bnRyaWVzIG9mIGEgZ2l2ZW4gZGlyZWN0b3J5IGF0IHBhdGguCi0gICAgLy8gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRSZWFkRGlyZWN0b3J5RW50cnkoKSBpcyBjYWxsZWQgd2hlbiBlYWNo
IGRpcmVjdG9yeSBlbnRyeSBpcyBjYWxsZWQuIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlk
UmVhZERpcmVjdG9yeUVudHJpZXMoKSBpcyBjYWxsZWQgYWZ0ZXIgYSBjaHVuayBvZiBkaXJlY3Rv
cnkgZW50cmllcyBoYXZlIGJlZW4gcmVhZC4KLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmRpZEZhaWwoKSBpcyB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLgotICAgIHZpcnR1YWwgdm9p
ZCByZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KSA9IDA7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIEFzeW5jRmlsZVdyaXRlciBm
b3IgYSBnaXZlbiBmaWxlIHBhdGguCi0gICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpk
aWRDcmVhdGVGaWxlV3JpdGVyKCkgaXMgY2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3JpdGVyIGlz
IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdy
aXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwotCi0gICAgLy8gQ3JlYXRlcyBhIHNuYXBz
aG90IGZpbGUgYW5kIHJlYWQgaXRzIG1ldGFkYXRhIGZvciBhIG5ldyBGaWxlIG9iamVjdC4KLSAg
ICAvLyBJbiBsb2NhbCBmaWxlc3lzdGVtIGNhc2VzIHRoZSBiYWNrZW5kIG1heSBzaW1wbHkgcmV0
dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUgZmlsZSBpdHNlbGYgKGFzIHdlbGwgYXMgcmVhZE1ldGFk
YXRhIGRvZXMpLAotICAgIC8vIHdoaWxlIGluIHJlbW90ZSBmaWxlc3lzdGVtIGNhc2UgdGhlIGJh
Y2tlbmQgbWF5IGRvd25sb2FkIHRoZSBmaWxlIGludG8gYSB0ZW1wb3Jhcnkgc25hcHNob3QgZmls
ZSBhbmQgcmV0dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUuCi0gICAgLy8g
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoKSBpcyBjYWxsZWQgd2hl
biB0aGUgbWV0YWRhdGEgZm9yIHRoZSBzbmFwc2hvdCBmaWxlIGlzIHN1Y2Nlc3NmdWxseSByZXR1
cm5lZC4KLSAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxs
ZWQgb3RoZXJ3aXNlLgotICAgIC8vCi0gICAgLy8gTm90ZTogdGhlIHJldHVybmVkIG1ldGFkYXRh
IGluZm8gaXMgY2FjaGVkIGluIHRoZSBGaWxlIG9iamVjdCBmb3Igbm9uLXJlZ3VsYXIgZmlsZXN5
c3RlbSB0eXBlcyAobmVpdGhlciBUZW1wb3Jhcnkgbm9yIFBlcnNpc3RlbnQpLiBUaGUgcG9ydCBj
b3VsZCByZXR1cm4gdmFsaWQgbWV0YWRhdGEgaWYgaXQgd2FudHMgRmlsZSBvYmplY3QgdG8gY2Fj
aGUgbWV0YWRhdGEgKGUuZy4gaWYgdGhlIGZpbGUgYm9keSBpcyBvbiBhIHJlbW90ZSBzZXJ2ZXIp
LCBidXQgb3RoZXJ3aXNlIHNob3VsZCBOT1QgcmV0dXJuIHZhbGlkIG1ldGFkYXRhLgotICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKLQotcHJvdGVj
dGVkOgotICAgIEFzeW5jRmlsZVN5c3RlbSgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gQXN5bmNG
aWxlU3lzdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcy5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NfaAotI2RlZmluZSBB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3NfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgi
Ci0jaW5jbHVkZSAiQmxvYkRhdGEuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyk7Ci1wdWJsaWM6Ci0gICAgQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKCkgeyB9Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBhIHJlcXVlc3RlZCBvcGVyYXRpb24g
aXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEgcmVxdWVz
dGVkIGZpbGUgc3lzdGVtIGlzIG9wZW5lZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVT
eXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBuYW1lICovLCBjb25zdCBVUkwmIC8qIHJvb3RVUkwgKi8s
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQot
Ci0gICAgLy8gQ2FsbGVkIHdoZW4gYSBmaWxlIG1ldGFkYXRhIGlzIHJlYWQgc3VjY2Vzc2Z1bGx5
LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFkYXRhJikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgLy8gQ2FsbGVkIHdoZW4gYSBzbmFwc2hv
dCBmaWxlIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVTbmFwc2hvdEZpbGUoY29uc3QgRmlsZU1ldGFkYXRhJiwgUGFzc1JlZlB0cjxCbG9iRGF0YUhh
bmRsZT4gLyogc25hcHNob3QgKi8pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8v
IENhbGxlZCB3aGVuIGEgZGlyZWN0b3J5IGVudHJ5IGlzIHJlYWQuCi0gICAgdmlydHVhbCB2b2lk
IGRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIC8qIG5hbWUgKi8sIGJvb2wgLyog
aXNEaXJlY3RvcnkgKi8pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENhbGxl
ZCBhZnRlciBhIGNodW5rIG9mIGRpcmVjdG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkIChpLmUu
IGluZGljYXRlcyBpdCdzIGdvb2QgdGltZSB0byBjYWxsIGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9u
KS4gSWYgaGFzTW9yZSBpcyB0cnVlIHRoZXJlIGNhbiBiZSBtb3JlIGNodW5rcy4KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCAvKiBoYXNNb3JlICovKSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVX
cnRlciBoYXMgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZyAv
KiBsZW5ndGggKi8pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENhbGxlZCB3
aGVuIHRoZXJlIHdhcyBhbiBlcnJvci4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgY29k
ZSkgPSAwOwotCi0gICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKCkgeyB9Ci19
OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
ZW5kaWYgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTMgKzcwLDYgQEAgaW50
IERyYWdEYXRhOjptb2RpZmllcktleVN0YXRlKCkgY29uc3QKICAgICByZXR1cm4ga2V5U3RhdGU7
CiB9CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1TdHJpbmcgRHJhZ0RhdGE6OmRyb3BwZWRG
aWxlU3lzdGVtSWQoKSBjb25zdAotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLSNlbmRpZgot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTAgKzEyMCw2IEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXN0ZWJvYXJk
TmFtZTsgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgU3RyaW5nIGRy
b3BwZWRGaWxlU3lzdGVtSWQoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEdUSykKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkg
YnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5
IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMCAr
NTMsNiBAQCBzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKIAogICAgIFR5cGUgdHlwZTsKIAotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoOwotI2VuZGlmCi0KICAg
ICBGaWxlTWV0YWRhdGEoKSA6IG1vZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpLCBs
ZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDkgKzEwMyw2IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNwbGF5T25seUlm
Q2EKICNpZiBFTkFCTEUoQkxPQikKICAgICBpZiAoY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RT
Y2hlbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXMuYWRkKCJibG9iIik7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICBjYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMuYWRkKCJmaWxlc3lzdGVtIik7Ci0jZW5kaWYK
ICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEJMT0IpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
IFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oIgotCi0jaW5jbHVkZSAiQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQmxhY2tC
ZXJyeS5oIgotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudC5oIgotI2luY2x1ZGUgIkRP
TUZpbGVTeXN0ZW1CYXNlLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotYm9vbCBBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkKLXsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gV2UgZG9uJ3QgdXNlIHRoaXMgb25lIQotUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW0+IEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkKLXsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW0+KCk7Ci19Ci0KLS8vIFdlIGRvbid0IHVzZSB0aGlzIG9uZSEKLXZvaWQgQXN5bmNGaWxlU3lz
dGVtOjpvcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcm
IHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgYm9vbCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBVTlVTRURfUEFSQU0oYmFz
ZVBhdGgpOwotICAgIFVOVVNFRF9QQVJBTShzdG9yYWdlSWRlbnRpZmllcik7Ci0gICAgVU5VU0VE
X1BBUkFNKGNhbGxiYWNrcyk7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQg
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0ZW0oY29uc3QgVVJMJiByb290
VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlm
aWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGlu
dCBwbGF5ZXJJZCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKLXsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6b3BlbkZpbGVT
eXN0ZW0oQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwg
YmFzZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6V2ViRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIHNpemUsIGNyZWF0ZSwgbmV3IFBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgcm9vdFVSTCksIHBsYXllcklk
KTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW06OmRlbGV0ZUZpbGVTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3Rl
bVR5cGUgdHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKLXsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZVN5c3RlbShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgp
LCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHN0YXRpY19jYXN0PEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQotCi1Bc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5OjpBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KFBhc3NPd25QdHI8QmxhY2tCZXJyeTo6UGxh
dGZvcm06OldlYkZpbGVTeXN0ZW0+IHBsYXRmb3JtRmlsZVN5c3RlbSkKLSAgICA6IEFzeW5jRmls
ZVN5c3RlbSgpIC8vIEZJWE1FOiB0eXBlID8/PwotICAgICwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0o
cGxhdGZvcm1GaWxlU3lzdGVtKQotewotfQotCi1Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojp+
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeSgpCi17Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6bW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGlu
YXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQotewotICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZpbGVTeXN0ZW1VUkxUb1BhdGgo
c291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgbmV3IFBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQotCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25z
dCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKLXsKLSAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+Y29weShmaWxlU3lz
dGVtVVJMVG9QYXRoKHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9u
UGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsK
LX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewot
ICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5yZW1vdmUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRo
KSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQot
Ci12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0
IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKLXsKLSAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5
c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KGNhbGxiYWNrcykpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRN
ZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0
YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzKSk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLT5jcmVhdGVGaWxlKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGV4Y2x1c2l2
ZSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQot
Ci12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQotewotICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVEaXJl
Y3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgZXhjbHVzaXZlLCBuZXcgUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbV9wbGF0Zm9ybUZp
bGVTeXN0ZW0tPmZpbGVFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwotfQotCi12b2lkIEFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbV9w
bGF0Zm9ybUZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBh
dGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7Ci19
Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeShjb25zdCBV
UkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Ci17Ci0gICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkoZmlsZVN5c3RlbVVS
TFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxi
YWNrcykpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRl
cihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyOjpjcmVhdGVXcml0ZXIobV9wbGF0Zm9ybUZpbGVT
eXN0ZW0uZ2V0KCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNsaWVudCkpOwotfQotCi12b2lkIEFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCi17Ci0gICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFu
ZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7Ci19Ci0KLVN0cmluZyBBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpmaWxlU3lzdGVtVVJMVG9QYXRoKGNvbnN0IFVSTCYgdXJsKQotewot
ICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGU7Ci0gICAgU3RyaW5nIGZ1bGxQYXRoOwotICAgIGJvb2wg
cmVzdWx0ID0gRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTCh1cmwsIHR5cGUs
IGZ1bGxQYXRoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICByZXR1
cm4gZnVsbFBhdGg7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAq
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiBBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5X2gKLSNkZWZpbmUgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeV9o
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgi
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1
ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXVEYg
ewotCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBkZWxldGVPd25lZFB0cjxCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4oQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0
ZW0qIHB0cikKLXsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6ZGVsZXRlR3VhcmRlZE9iamVj
dChwdHIpOwotfQotCi19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeSA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW0gewotcHVibGljOgotICAg
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkoKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5PiBjcmVhdGUoUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KHBsYXRmb3JtRmls
ZVN5c3RlbSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKGNvbnN0
IFVSTCYgcm9vdFVSTCwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9y
YWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwgaW50IHBsYXllcklkLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwot
ICAgIHZpcnR1YWwgfkFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9p
ZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBVUkwmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBib29s
IGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0
ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hv
dEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotCi1wcm90ZWN0ZWQ6Ci0gICAgQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeShQYXNzT3duUHRyPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBw
bGF0Zm9ybUZpbGVTeXN0ZW0pOwotICAgIHN0YXRpYyBTdHJpbmcgZmlsZVN5c3RlbVVSTFRvUGF0
aChjb25zdCBVUkwmKTsKLQotICAgIE93blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmls
ZVN5c3RlbT4gbV9wbGF0Zm9ybUZpbGVTeXN0ZW07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmNw
cAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Bc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJBc3luY0Zp
bGVXcml0ZXJCbGFja0JlcnJ5LmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybUJsb2IuaCIKLQotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lk
IEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6OndyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxv
YiogYmxvYikKLXsKLSAgICBBU1NFUlQoYmxvYik7Ci0KLSAgICBiZWdpbldyaXRlT3JUcnVuY2F0
ZSgpOwotCi0gICAgLy8gUGxhdGZvcm0gd3JpdGVyIHdpbGwgdGFrZSB0aGUgb3duZXJzaGlwIG9m
IHRoZSBwbGF0Zm9ybSBibG9iIGFuZCB3aWxsIGRlc3Ryb3kgaXQgb24gdGhlIHRocmVhZCBpbiB3
aGljaCB3ZSBhcmUgcnVubmluZy4KLSAgICBQbGF0Zm9ybUJsb2IqIHBsYXRmb3JtQmxvYiA9IG5l
dyBQbGF0Zm9ybUJsb2IoYmxvYik7Ci0gICAgbV9wbGF0Zm9ybVdyaXRlci0+d3JpdGUocG9zaXRp
b24sIHBsYXRmb3JtQmxvYik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVXcml0ZXJC
bGFja0JlcnJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Bc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJy
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiBBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5
X2gKLSNkZWZpbmUgQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeV9oCi0KLSNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1GaWxlV3JpdGVyQ2xpZW50LmgiCi0KLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1XZWJG
aWxlU3lzdGVtRmlsZVdyaXRlci5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gaW5saW5l
IHZvaWQgZGVsZXRlT3duZWRQdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXI+
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBwdHIpCi17Ci0gICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OmRlbGV0ZUd1YXJkZWRPYmplY3QocHRyKTsKLX0KLQotfQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6IHB1Ymxp
YyBBc3luY0ZpbGVXcml0ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5j
RmlsZVdyaXRlckJsYWNrQmVycnk+IGNyZWF0ZShQYXNzT3duUHRyPEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpXZWJGaWxlV3JpdGVyPiBwbGF0Zm9ybVdyaXRlciwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiBjbGllbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFzeW5jRmlsZVdy
aXRlckJsYWNrQmVycnkocGxhdGZvcm1Xcml0ZXIsIGNsaWVudCkpOwotICAgIH0KLQotICAgIHZp
cnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIEJsb2IqKTsKLQotICAgIHZpcnR1
YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgYmVnaW5X
cml0ZU9yVHJ1bmNhdGUoKTsKLSAgICAgICAgbV9wbGF0Zm9ybVdyaXRlci0+dHJ1bmNhdGUobGVu
Z3RoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKQotICAgIHsKLSAgICAgICAg
YmVnaW5BYm9ydCgpOwotICAgICAgICBtX3BsYXRmb3JtV3JpdGVyLT5hYm9ydCgpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybVdyaXRlci0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxl
dGUoKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWJvcnRpbmcoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1faXNBYm9ydGluZzsKLSAgICB9Ci0KLSAgICBib29sIGlzT3BlcmF0aW9uSW5Q
cm9ncmVzcygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pc09wZXJhdGlvbkluUHJv
Z3Jlc3M7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hPcGVyYXRpb24oKQotICAgIHsKLSAgICAg
ICAgbV9pc09wZXJhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IFBsYXRmb3JtRmlsZVdyaXRlckNsaWVudCogcGxhdGZvcm1Xcml0ZXJDbGllbnQoKQotICAgIHsK
LSAgICAgICAgaWYgKCFtX3BsYXRmb3JtV3JpdGVyQ2xpZW50KQotICAgICAgICAgICAgbV9wbGF0
Zm9ybVdyaXRlckNsaWVudCA9IFBsYXRmb3JtRmlsZVdyaXRlckNsaWVudDo6Y3JlYXRlKG1fY2xp
ZW50LCB0aGlzKTsKLSAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1Xcml0ZXJDbGllbnQuZ2V0KCk7
Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeShQYXNz
T3duUHRyPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyPiBwbGF0Zm9ybVdyaXRl
ciwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCi0gICAgICAgIDogbV9wbGF0Zm9ybVdy
aXRlcihwbGF0Zm9ybVdyaXRlcikKLSAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgICAg
ICwgbV9pc0Fib3J0aW5nKGZhbHNlKQotICAgICAgICAsIG1faXNPcGVyYXRpb25JblByb2dyZXNz
KGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGJlZ2luV3JpdGVPclRydW5jYXRlKCkK
LSAgICB7Ci0gICAgICAgIG1faXNBYm9ydGluZyA9IGZhbHNlOwotICAgICAgICBtX2lzT3BlcmF0
aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkFib3J0KCkKLSAg
ICB7Ci0gICAgICAgIG1faXNBYm9ydGluZyA9IHRydWU7Ci0gICAgICAgIG1faXNPcGVyYXRpb25J
blByb2dyZXNzID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZv
cm06OldlYkZpbGVXcml0ZXI+IG1fcGxhdGZvcm1Xcml0ZXI7Ci0gICAgT3duUHRyPFBsYXRmb3Jt
RmlsZVdyaXRlckNsaWVudD4gbV9wbGF0Zm9ybVdyaXRlckNsaWVudDsKLSAgICBBc3luY0ZpbGVX
cml0ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIGJvb2wgbV9pc0Fib3J0aW5nOwotICAgIGJvb2wg
bV9pc09wZXJhdGlvbkluUHJvZ3Jlc3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0j
ZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9E
T01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5
c3RlbUJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0gKiBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotCi0j
aW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1VUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCkgY29uc3QKLXsKLSAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJz
b2x1dGUoZnVsbFBhdGgpKTsKLQotICAgIC8vIEZvciByZWd1bGFyIHR5cGVzIHdlIGNhbiBqdXN0
IGFwcGVuZCB0aGUgZW50cnkncyBmdWxsUGF0aCB0byB0aGUgbV9maWxlc3lzdGVtUm9vdFVSTCB0
aGF0IHNob3VsZCBsb29rIGxpa2UgJ2ZpbGVzeXN0ZW06PG9yaWdpbj4vPHR5cGVQcmVmaXg+Jy4K
LSAgICBBU1NFUlQoIW1fZmlsZXN5c3RlbVJvb3RVUkwuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4g
bV9jb250ZXh0LT5jb21wbGV0ZVVSTChtX2ZpbGVzeXN0ZW1Sb290VVJMLnN0cmluZygpICsgZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhmdWxsUGF0aCkpOwotfQotCi1ib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgVVJMJiB1cmwsIEZpbGVTeXN0ZW1U
eXBlJiB0eXBlLCBTdHJpbmcmIGZpbGVQYXRoKQotewotICAgIGlmICghdXJsLnByb3RvY29sSXMo
ImZpbGVzeXN0ZW0iKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHVybC5pbm5l
clVSTCgpKSB7Ci0gICAgICAgIFN0cmluZyB0eXBlU3RyaW5nID0gdXJsLmlubmVyVVJMKCktPnBh
dGgoKS5zdWJzdHJpbmcoMSk7Ci0gICAgICAgIGlmICh0eXBlU3RyaW5nID09IHRlbXBvcmFyeVBh
dGhQcmVmaXgpCi0gICAgICAgICAgICB0eXBlID0gRmlsZVN5c3RlbVR5cGVUZW1wb3Jhcnk7Ci0g
ICAgICAgIGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gcGVyc2lzdGVudFBhdGhQcmVmaXgpCi0gICAg
ICAgICAgICB0eXBlID0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50OwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZmlsZVBhdGggPSBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVJMIG9y
aWdpblVSTChQYXJzZWRVUkxTdHJpbmcsIHVybC5wYXRoKCkpOwotICAgICAgICBTdHJpbmcgcGF0
aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhvcmlnaW5VUkwucGF0aCgpKTsKLSAgICAgICAg
aWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMSk7Ci0KLSAgICAgICAgaWYg
KHBhdGguc3RhcnRzV2l0aCh0ZW1wb3JhcnlQYXRoUHJlZml4KSkgewotICAgICAgICAgICAgdHlw
ZSA9IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5OwotICAgICAgICAgICAgcGF0aCA9IHBhdGguc3Vi
c3RyaW5nKHRlbXBvcmFyeVBhdGhQcmVmaXhMZW5ndGgpOwotICAgICAgICB9IGVsc2UgaWYgKHBh
dGguc3RhcnRzV2l0aChwZXJzaXN0ZW50UGF0aFByZWZpeCkpIHsKLSAgICAgICAgICAgIHR5cGUg
PSBGaWxlU3lzdGVtVHlwZVBlcnNpc3RlbnQ7Ci0gICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJz
dHJpbmcocGVyc2lzdGVudFBhdGhQcmVmaXhMZW5ndGgpOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0
aFswXSAhPSAnLycpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZmlsZVBh
dGguc3dhcChwYXRoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRE9NRmls
ZVN5c3RlbUJhc2U6OnN1cHBvcnRzVG9VUkwoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjppc1ZhbGlkVHlwZShGaWxlU3lzdGVtVHlwZSB0
eXBlKQotewotICAgIHJldHVybiB0eXBlID09IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5IHx8IHR5
cGUgPT0gRmlsZVN5c3RlbVR5cGVQZXJzaXN0ZW50OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0RyYWdEYXRhQmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9EcmFnRGF0YUJsYWNrQmVycnku
Y3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L0RyYWdEYXRhQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDEyICs5Miw0
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0RhdGE6OmEKICAgICByZXR1cm4g
MDsKIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLVN0cmluZyBEcmFnRGF0YTo6ZHJvcHBl
ZEZpbGVTeXN0ZW1JZCgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbEZpbGVTeXN0ZW1CbGFja0Jl
cnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L0xvY2FsRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJsYWNrQmVycnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLSNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgIkFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaCIKLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIK
LSNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgi
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW1DYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIK
LSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUg
IlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgotI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLQotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShXT1JLRVJTKQotc3RhdGljIGNvbnN0IGNoYXIgb3Bl
bkZpbGVTeXN0ZW1Nb2RlW10gPSAib3BlbkZpbGVTeXN0ZW1Nb2RlIjsKLXN0YXRpYyBjb25zdCBj
aGFyIGRlbGV0ZUZpbGVTeXN0ZW1Nb2RlW10gPSAiZGVsZXRlRmlsZVN5c3RlbU1vZGUiOwotI2Vu
ZGlmCi0KLXN0YXRpYyBjb25zdCBjaGFyKiBmaWxlU3lzdGVtVHlwZVN0cmluZyhGaWxlU3lzdGVt
VHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRmlsZVN5c3RlbVR5
cGVQZXJzaXN0ZW50OgotICAgICAgICByZXR1cm4gRE9NRmlsZVN5c3RlbUJhc2U6OnBlcnNpc3Rl
bnRQYXRoUHJlZml4OwotICAgIGNhc2UgRmlsZVN5c3RlbVR5cGVUZW1wb3Jhcnk6Ci0gICAgICAg
IHJldHVybiBET01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeDsKLSAgICBjYXNl
IEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQ6Ci0gICAgICAgIHJldHVybiBET01GaWxlU3lzdGVtQmFz
ZTo6aXNvbGF0ZWRQYXRoUHJlZml4OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgRmlsZVN5c3Rl
bVR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBGaWxlU3lzdGVtU3luY2hyb25vdXNUeXBl
IHN5bmNocm9ub3VzVHlwZSkKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgQVNTRVJUKHR5
cGUgIT0gRmlsZVN5c3RlbVR5cGVJc29sYXRlZCk7Ci0gICAgaWYgKHR5cGUgPT0gRmlsZVN5c3Rl
bVR5cGVJc29sYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgVVJMIHVybCA9IGNvbnRleHQt
PnVybCgpOwotICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHVy
bC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICB1cmwuc2V0UXVlcnkoU3RyaW5nKCkp
OwotICAgIHVybC5zZXRQYXRoKCIvIik7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCJmaWxlc3lzdGVtOiIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKHVybC5z
dHJpbmcoKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoZmlsZVN5c3RlbVR5cGVTdHJpbmcodHlwZSkp
OwotICAgIFVSTCByb290VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwoYnVpbGRlci50b1N0cmlu
ZygpKTsKLSAgICBBU1NFUlQocm9vdFVSTC5pc1ZhbGlkKCkpOwotCi0gICAgLy8gVE9ETzogQXNr
IHVzZXIgZm9yIGZpbGUgc3lzdGVtIHBlcm1pc3Npb24uCi0KLSAgICBpZiAoY29udGV4dC0+aXNE
b2N1bWVudCgpKSB7Ci0gICAgICAgIGludCBwbGF5ZXJJZCA9IDA7Ci0gICAgICAgIFBhZ2UqIHBh
Z2UgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCk7Ci0gICAgICAgIGlm
IChwYWdlKQotICAgICAgICAgICAgcGxheWVySWQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5w
bGF0Zm9ybVBhZ2VDbGllbnQoKS0+cGxheWVySUQoKTsKLSAgICAgICAgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0ZW0ocm9vdFVSTCwgYmFzZVBhdGgsIGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCBzaXplLCBjcmVhdGUs
IHBsYXllcklkLCBjYWxsYmFja3MpOwotICAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKFdPUktFUlMp
Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRpY19j
YXN0PFdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCk7Ci0gICAgICAgIFN0cmluZyBtb2RlID0g
b3BlbkZpbGVTeXN0ZW1Nb2RlOwotICAgICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcih3
b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCktPnJ1bkxvb3AoKS5jcmVhdGVVbmlxdWVJZCgpKSk7
Ci0gICAgICAgIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVt
KHdvcmtlckdsb2JhbFNjb3BlLCByb290VVJMLCBtb2RlLCBiYXNlUGF0aCwgY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIHNpemUsIGNyZWF0ZSwg
Y2FsbGJhY2tzKTsKLSAgICAgICAgaWYgKHN5bmNocm9ub3VzVHlwZSA9PSBTeW5jaHJvbm91c0Zp
bGVTeXN0ZW0pCi0gICAgICAgICAgICB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCktPnJ1bkxv
b3AoKS5ydW5Jbk1vZGUod29ya2VyR2xvYmFsU2NvcGUsIG1vZGUpOwotI2Vsc2UKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KLXZvaWQgTG9jYWxGaWxl
U3lzdGVtOjpkZWxldGVGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVCh0eXBlICE9
IEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQpOwotICAgIGlmICh0eXBlID09IEZpbGVTeXN0ZW1UeXBl
SXNvbGF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRPRE86IEFzayB1c2VyIGZvciBm
aWxlIHN5c3RlbSBwZXJtaXNzaW9uLgotCi0gICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkK
LSAgICAgICAgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3RlbShmaWxl
U3lzdGVtQmFzZVBhdGgoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCksIHR5cGUsIGNhbGxiYWNrcyk7Ci0gICAgZWxzZSB7Ci0jaWYgRU5BQkxFKFdPUktF
UlMpCi0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSA9IHN0YXRp
Y19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCk7Ci0gICAgICAgIFN0cmluZyBtb2Rl
ID0gZGVsZXRlRmlsZVN5c3RlbU1vZGU7Ci0gICAgICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVt
YmVyKHdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS0+cnVuTG9vcCgpLmNyZWF0ZVVuaXF1ZUlk
KCkpKTsKLSAgICAgICAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmls
ZVN5c3RlbSh3b3JrZXJHbG9iYWxTY29wZSwgbW9kZSwgZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCBjYWxs
YmFja3MpOwotI2Vsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAg
ICB9Ci19Ci0KLQotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlYWRGaWxlU3lzdGVtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEZpbGVTeXN0ZW1TeW5jaHJvbm91
c1R5cGUgc3luY2hyb25vdXNUeXBlKQotewotICAgIG9wZW5GaWxlU3lzdGVtKGNvbnRleHQsIGZp
bGVTeXN0ZW1CYXNlUGF0aCgpLCB0eXBlLCAwLCBmYWxzZSwgY2FsbGJhY2tzLCBzeW5jaHJvbm91
c1R5cGUpOwotfQotCi12b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgbG9uZyBs
b25nIHNpemUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IEZpbGVTeXN0ZW1TeW5jaHJvbm91c1R5cGUgc3luY2hyb25vdXNUeXBlKQotewotICAgIG9wZW5G
aWxlU3lzdGVtKGNvbnRleHQsIGZpbGVTeXN0ZW1CYXNlUGF0aCgpLCB0eXBlLCBzaXplLCB0cnVl
LCBjYWxsYmFja3MsIHN5bmNocm9ub3VzVHlwZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzLmNwcAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQotICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotI2lu
Y2x1ZGUgIlBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0KLSNpbmNsdWRlICJB
c3NlcnRpb25zLmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oIgotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckJsYWNr
QmVycnkuaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJG
aWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKLQotI2luY2x1ZGUgPEd1YXJk
ZWRQb2ludGVyRGVsZXRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeU9wZW5GaWxlU3lzdGVtKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0pCi17Ci0gICAg
QVNTRVJUKHBsYXRmb3JtRmlsZVN5c3RlbSk7Ci0gICAgbV9jYWxsYmFja3MtPmRpZE9wZW5GaWxl
U3lzdGVtKFN0cmluZzo6ZnJvbVVURjgocGxhdGZvcm1GaWxlU3lzdGVtLT5uYW1lKCkuY19zdHIo
KSksIG1fcm9vdFVSTCwgY3JlYXRlQXN5bmNGaWxlU3lzdGVtKGFkb3B0UHRyKHBsYXRmb3JtRmls
ZVN5c3RlbSkpKTsKLSAgICBkZWxldGVNZSgpOwotfQotCi12b2lkIFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlTdWNjZWVkKCkKLXsKLSAgICBtX2NhbGxiYWNrcy0+ZGlk
U3VjY2VlZCgpOwotICAgIGRlbGV0ZU1lKCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M6Om5vdGlmeUZhaWwoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVF
cnJvciBlcnJvcikKLXsKLSAgICBtX2NhbGxiYWNrcy0+ZGlkRmFpbChzdGF0aWNfY2FzdDxGaWxl
RXJyb3I6OkVycm9yQ29kZT4oZXJyb3IpKTsKLSAgICBkZWxldGVNZSgpOwotfQotCi1zdGF0aWMg
aW5saW5lIHZvaWQgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpX
ZWJGaWxlSW5mbyYgZmlsZUluZm8sIEZpbGVNZXRhZGF0YSYgZmlsZU1ldGFkYXRhKQotewotICAg
IGZpbGVNZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lID0gZmlsZUluZm8ubV9tb2RpZmljYXRpb25U
aW1lOwotICAgIGZpbGVNZXRhZGF0YS5sZW5ndGggPSBmaWxlSW5mby5tX2xlbmd0aDsKLSAgICBm
aWxlTWV0YWRhdGEudHlwZSA9IHN0YXRpY19jYXN0PEZpbGVNZXRhZGF0YTo6VHlwZT4oZmlsZUlu
Zm8ubV90eXBlKTsKLSAgICBmaWxlTWV0YWRhdGEucGxhdGZvcm1QYXRoID0gU3RyaW5nOjpmcm9t
VVRGOChmaWxlSW5mby5tX3BsYXRmb3JtUGF0aC5jX3N0cigpKTsKLX0KLQotdm9pZCBQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5UmVhZE1ldGFkYXRhKGNvbnN0IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYgZmlsZUluZm8pCi17Ci0gICAgRmlsZU1ldGFk
YXRhIGZpbGVNZXRhZGF0YTsKLSAgICBnZXRGaWxlTWV0YWRhdGEoZmlsZUluZm8sIGZpbGVNZXRh
ZGF0YSk7Ci0gICAgbV9jYWxsYmFja3MtPmRpZFJlYWRNZXRhZGF0YShmaWxlTWV0YWRhdGEpOwot
ICAgIGRlbGV0ZU1lKCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M6Om5vdGlmeUNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUluZm8mIGZpbGVJbmZvKQotewotICAgIEZpbGVNZXRhZGF0
YSBmaWxlTWV0YWRhdGE7Ci0gICAgZ2V0RmlsZU1ldGFkYXRhKGZpbGVJbmZvLCBmaWxlTWV0YWRh
dGEpOwotICAgIG1fY2FsbGJhY2tzLT5kaWRDcmVhdGVTbmFwc2hvdEZpbGUoZmlsZU1ldGFkYXRh
LCAwKTsKLSAgICBkZWxldGVNZSgpOwotfQotCi12b2lkIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpub3RpZnlSZWFkRGlyZWN0b3J5KGNvbnN0IHN0ZDo6dmVjdG9yPEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01vcmUp
Ci17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyaWVzLnNpemUoKTsgKytpKQotICAg
ICAgICBtX2NhbGxiYWNrcy0+ZGlkUmVhZERpcmVjdG9yeUVudHJ5KFN0cmluZzo6ZnJvbVVURjgo
ZW50cmllc1tpXS5tX25hbWUuY19zdHIoKSksIGVudHJpZXNbaV0ubV9pc0RpcmVjdG9yeSk7Ci0g
ICAgbV9jYWxsYmFja3MtPmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGhhc01vcmUpOwotICAgIGRl
bGV0ZU1lKCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5v
dGlmeUNyZWF0ZUZpbGVXcml0ZXIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIq
IHBsYXRmb3JtV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKQotewotICAgIG1fY2FsbGJhY2tzLT5k
aWRDcmVhdGVGaWxlV3JpdGVyKGNyZWF0ZUFzeW5jRmlsZVdyaXRlcihhZG9wdFB0cihwbGF0Zm9y
bVdyaXRlcikpLCBsZW5ndGgpOwotICAgIGRlbGV0ZU1lKCk7Ci19Ci0KLVBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtPiBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlQXN5
bmNGaWxlU3lzdGVtKFBhc3NPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0
ZW0+IHBsYXRmb3JtRmlsZVN5c3RlbSkKLXsKLSAgICByZXR1cm4gQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeTo6Y3JlYXRlKHBsYXRmb3JtRmlsZVN5c3RlbSk7Ci19Ci0KLVBhc3NPd25QdHI8QXN5
bmNGaWxlV3JpdGVyPiBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlQXN5
bmNGaWxlV3JpdGVyKFBhc3NPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0
ZXI+IHBsYXRmb3JtV3JpdGVyKQotewotICAgIEFTU0VSVChtX3dyaXRlckNsaWVudCk7Ci0gICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIqIHBsYXRmb3JtV3JpdGVyUHRyID0g
cGxhdGZvcm1Xcml0ZXIuZ2V0KCk7Ci0gICAgT3duUHRyPEFzeW5jRmlsZVdyaXRlckJsYWNrQmVy
cnk+IHdyaXRlciA9IEFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6OmNyZWF0ZShwbGF0Zm9ybVdy
aXRlciwgbV93cml0ZXJDbGllbnQpOwotICAgIHBsYXRmb3JtV3JpdGVyUHRyLT5zZXRDbGllbnQo
d3JpdGVyLT5wbGF0Zm9ybVdyaXRlckNsaWVudCgpKTsKLSAgICByZXR1cm4gd3JpdGVyLnJlbGVh
c2UoKTsKLX0KLQotdm9pZCBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGVsZXRl
TWUoKQotewotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHdWFyZGVkUG9pbnRlckRlbGV0ZXI6
OmRlbGV0ZU9uVGhyZWFkKEJsYWNrQmVycnk6OlBsYXRmb3JtOjp3ZWJLaXRUaHJlYWRNZXNzYWdl
Q2xpZW50KCksIHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1BsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Bc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAq
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiBQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc19oCi0jZGVmaW5lIFBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJVUkwuaCIKLQotI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TdHJpbmcgcGxhdGZvcm1GaWxlU3lzdGVt
VHlwZVRvU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtOjpUeXBlKTsK
LQotY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwotY2xhc3MgQXN5bmNGaWxlV3JpdGVyOwotY2xhc3Mg
QXN5bmNGaWxlV3JpdGVyQ2xpZW50OwotCi1jbGFzcyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczogcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzIHsKLXB1YmxpYzoKLSAgICBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBVUkwmIHJv
b3RVUkwgPSBVUkwoKSkKLSAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgICAg
ICwgbV93cml0ZXJDbGllbnQoMCkKLSAgICAgICAgLCBtX3Jvb3RVUkwocm9vdFVSTCkKLSAgICB7
Ci0gICAgfQotCi0gICAgLy8gRm9yIGNyZWF0ZVdyaXRlci4KLSAgICBQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKLSAgICAgICAgOiBtX2NhbGxi
YWNrcyhjYWxsYmFja3MpCi0gICAgICAgICwgbV93cml0ZXJDbGllbnQoY2xpZW50KQotICAgIHsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5T3BlbkZpbGVTeXN0ZW0oQmxhY2tCZXJy
eTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSk7Ci0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeVN1Y2NlZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmFpbChC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUVycm9yKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5UmVhZE1ldGFkYXRhKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYp
OwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRh
dGEoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVJbmZvJik7Ci0gICAgdmlydHVh
bCB2b2lkIG5vdGlmeVJlYWREaXJlY3RvcnkoY29uc3Qgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6
UGxhdGZvcm06OldlYkZpbGVTeXN0ZW1FbnRyeT4mIGVudHJpZXMsIGJvb2wgaGFzTW9yZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUNyZWF0ZUZpbGVXcml0ZXIoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OldlYkZpbGVXcml0ZXIqIHBsYXRmb3JtV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlTWUoKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtPiBjcmVhdGVBc3luY0ZpbGVTeXN0ZW0oUGFzc093blB0cjxCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKTsKLSAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiBjcmVhdGVBc3luY0ZpbGVXcml0ZXIoUGFzc093
blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlcj4gcGxhdGZvcm1Xcml0ZXIp
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgflBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKCkg
eyB9Ci0gICAgT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Ci0g
ICAgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBtX3dyaXRlckNsaWVudDsKLQotcHJpdmF0ZToKLSAg
ICBVUkwgbV9yb290VVJMOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1C
bG9iLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1BsYXRmb3JtQmxvYi5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1CbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJQbGF0
Zm9ybUJsb2IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1CbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViQmxvYkRhdGFJdGVtKiBQbGF0Zm9ybUJsb2I6Om5leHREYXRhSXRlbSgpCi17Ci0gICAg
aWYgKCFtX2Jsb2JEYXRhIHx8IG1fY3VycmVudEl0ZW0gPj0gbV9ibG9iRGF0YS0+aXRlbXMoKS5z
aXplKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVt
ID0gbV9ibG9iRGF0YS0+aXRlbXMoKVttX2N1cnJlbnRJdGVtKytdOwotICAgIEFTU0VSVChpdGVt
LnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpEYXRhIHx8IGl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06
OkZpbGUpOwotICAgIG1fcGxhdGZvcm1CbG9iSXRlbS5tX2lzRGF0YSA9IGl0ZW0udHlwZSA9PSBC
bG9iRGF0YUl0ZW06OkRhdGE7Ci0gICAgbV9wbGF0Zm9ybUJsb2JJdGVtLm1fYnVmZmVyID0gbV9w
bGF0Zm9ybUJsb2JJdGVtLm1faXNEYXRhID8gaXRlbS5kYXRhLT5kYXRhKCkgKyBzdGF0aWNfY2Fz
dDxpbnQ+KGl0ZW0ub2Zmc2V0KSA6IDA7Ci0gICAgbV9wbGF0Zm9ybUJsb2JJdGVtLm1fYnVmZmVy
TGVuZ3RoID0gbV9wbGF0Zm9ybUJsb2JJdGVtLm1faXNEYXRhID8gc3RhdGljX2Nhc3Q8c2l6ZV90
PihpdGVtLmxlbmd0aCkgOiAwOwotICAgIG1fcGxhdGZvcm1CbG9iSXRlbS5tX2ZpbGVOYW1lID0g
bV9wbGF0Zm9ybUJsb2JJdGVtLm1faXNEYXRhID8gZW1wdHlTdHJpbmcoKSA6IGl0ZW0ucGF0aDsK
LSAgICBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9maWxlU3RhcnQgPSBtX3BsYXRmb3JtQmxvYkl0ZW0u
bV9pc0RhdGEgPyAwIDogaXRlbS5vZmZzZXQ7Ci0gICAgbV9wbGF0Zm9ybUJsb2JJdGVtLm1fZmls
ZUxlbmd0aCA9IG1fcGxhdGZvcm1CbG9iSXRlbS5tX2lzRGF0YSA/IDAgOiBpdGVtLmxlbmd0aDsK
LSAgICBtX3BsYXRmb3JtQmxvYkl0ZW0ubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0g
bV9wbGF0Zm9ybUJsb2JJdGVtLm1faXNEYXRhID8gQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkJs
b2JEYXRhSXRlbTo6RE9OT1RDSEVDS0ZJTEVDSEFOR0UgOiBpdGVtLmV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZTsKLQotICAgIHJldHVybiAmbV9wbGF0Zm9ybUJsb2JJdGVtOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUGxhdGZvcm1CbG9iLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUJsb2IuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUJsb2IuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB
Ci0gKi8KLSNpZm5kZWYgUGxhdGZvcm1CbG9iX2gKLSNkZWZpbmUgUGxhdGZvcm1CbG9iX2gKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlICJBc3NlcnRpb25zLmgiCi0jaW5jbHVk
ZSAiQmxvYi5oIgotI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRlICJCbG9i
U3RvcmFnZURhdGEuaCIKLQotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVTeXN0
ZW1GaWxlV3JpdGVyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEJsb2I7Ci0KLWNsYXNzIFBsYXRmb3JtQmxvYjogcHVibGljIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpXZWJCbG9iIHsKLXB1YmxpYzoKLSAgICBQbGF0Zm9ybUJsb2IoQmxv
YiogYmxvYikKLSAgICAgICAgOiBtX2N1cnJlbnRJdGVtKDApCi0gICAgewotICAgICAgICBBU1NF
UlQoYmxvYik7Ci0gICAgICAgIG1fYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJ
bXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChibG9iLT51cmwoKSk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViQmxvYkRhdGFJdGVt
KiBuZXh0RGF0YUl0ZW0oKTsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRh
PiBtX2Jsb2JEYXRhOwotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJCbG9iRGF0YUl0ZW0g
bV9wbGF0Zm9ybUJsb2JJdGVtOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX2N1cnJlbnRJdGVt
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bs
YXRmb3JtRmlsZVdyaXRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEgVVNBCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi0jaW5jbHVkZSAiUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJB
c3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBQbGF0Zm9ybUZpbGVXcml0ZXJD
bGllbnQ6Om5vdGlmeVdyaXRlKGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21wbGV0ZSkKLXsKLSAg
ICBpZiAobV93cml0ZXItPmlzQWJvcnRpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KGNvbXBsZXRlKQotICAgICAgICBtX3dyaXRlci0+ZmluaXNoT3BlcmF0aW9uKCk7Ci0gICAgbV9j
bGllbnQtPmRpZFdyaXRlKGJ5dGVzLCBjb21wbGV0ZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1GaWxl
V3JpdGVyQ2xpZW50Ojpub3RpZnlUcnVuY2F0ZSgpCi17Ci0gICAgaWYgKG1fd3JpdGVyLT5pc0Fi
b3J0aW5nKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd3JpdGVyLT5maW5pc2hPcGVyYXRp
b24oKTsKLSAgICBtX2NsaWVudC0+ZGlkVHJ1bmNhdGUoKTsKLX0KLQotdm9pZCBQbGF0Zm9ybUZp
bGVXcml0ZXJDbGllbnQ6Om5vdGlmeUZhaWwoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVF
cnJvciBlcnJvcikKLXsKLSAgICBpZiAobV93cml0ZXItPmlzQWJvcnRpbmcoKSAmJiBlcnJvciAh
PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUVycm9yQWJvcnQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIFdlIGRvbid0IHJlc2V0IG1faXNBYm9ydGluZyB1bml0bCBuZXcgb3BlcmF0
aW9ucyAod3JpdGUsIHRydW5jYXRlKSBhcnJpdmUuCi0gICAgLy8gbm90aWZ5RmFpbCBmb3IgYWJv
cnQgbWF5IG5vdCBiZSBjYWxsZWQgYmVjYXVzZSB0aGUgcGxhdGZvcm0gd3JpdGVyIG1heSBiZQot
ICAgIC8vIGluIHN1Y2Nlc3NmdWwgc3RhdGUgZm9yIGEgcHJldmlvdXMgb3BlcmF0aW9uICh3cml0
ZSBvciB0cnVuY2F0ZSkgYnV0IHRoZQotICAgIC8vIG5vdGlmaWNhdGlvbiBoYXNuJ3QgYXJyaXZl
ZCBpbiB0aGUgdGhyZWFkIHdlIGFyZSBydW5uaW5nIGluLiBTbyBpZiB3ZSByZXNldAotICAgIC8v
IG1faXNBYm9ydGluZyBoZXJlIGFuZCBBU1NFUlQoIW1faXNBYm9ydGluZykgaW4gb3RoZXIgb3Bl
cmF0aW9ucyB3ZSBjb3VsZCBoaXQKLSAgICAvLyB0aGUgQVNTRVJUIGJlY2F1c2UgbV9pc0Fib3J0
aW5nIG1heSBub3QgYmUgcmVzZXQuCi0KLSAgICBtX3dyaXRlci0+ZmluaXNoT3BlcmF0aW9uKCk7
Ci0gICAgbV9jbGllbnQtPmRpZEZhaWwoc3RhdGljX2Nhc3Q8RmlsZUVycm9yOjpFcnJvckNvZGU+
KGVycm9yKSk7Ci19Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1BsYXRmb3JtRmlsZVdyaXRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlCi0gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYg
UGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50X2gKLSNkZWZpbmUgUGxhdGZvcm1GaWxlV3JpdGVyQ2xp
ZW50X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxh
dGZvcm1XZWJGaWxlU3lzdGVtRmlsZVdyaXRlci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXN5bmNGaWxlV3JpdGVyQmxhY2tC
ZXJyeTsKLWNsYXNzIEFzeW5jRmlsZVdyaXRlckNsaWVudDsKLQotY2xhc3MgUGxhdGZvcm1GaWxl
V3JpdGVyQ2xpZW50OiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXJD
bGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtRmlsZVdyaXRl
ckNsaWVudD4gY3JlYXRlKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBBc3luY0ZpbGVX
cml0ZXJCbGFja0JlcnJ5KiB3cml0ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBsYXRmb3JtRmlsZVdyaXRlckNsaWVudChjbGllbnQsIHdyaXRlcikpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxl
dGUpOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlUcnVuY2F0ZSgpOwotICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlGYWlsKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlRXJyb3IpOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50KEFzeW5jRmlsZVdyaXRlckNsaWVu
dCogY2xpZW50LCBBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5KiB3cml0ZXIpCi0gICAgICAgIDog
bV9jbGllbnQoY2xpZW50KQotICAgICAgICAsIG1fd3JpdGVyKHdyaXRlcikKLSAgICB7IH0KLQot
ICAgIH5QbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQoKSB7IH0KLQotcHJpdmF0ZToKLSAgICBBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIEFzeW5jRmlsZVdyaXRlckJsYWNrQmVy
cnkqIG1fd3JpdGVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgZGVsZXRlT3duZWRQdHI8V2ViQ29yZTo6
UGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50PihXZWJDb3JlOjpQbGF0Zm9ybUZpbGVXcml0ZXJDbGll
bnQqIHB0cikKLXsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6ZGVsZXRlR3VhcmRlZE9iamVj
dChwdHIpOwotfQotCi19Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotICogU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKSAmJiBFTkFCTEUoV09SS0VSUykKLSNpbmNsdWRlICJXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmgiCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKLSNpbmNsdWRl
ICJDcm9zc1RocmVhZFRhc2suaCIKLSNpbmNsdWRlICJXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFj
a0JlcnJ5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJMb2FkZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0KLSNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1NZXNzYWdlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgotCi11c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3Rl
bTsKLXVzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyOwotdXNpbmcgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQ7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6V29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBtb2RlLCBQYXNzT3duUHRyPFdlYkZpbGVTeXN0ZW0+IHBsYXRmb3JtRmlsZVN5c3Rl
bSkKLSAgICA6IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkocGxhdGZvcm1GaWxlU3lzdGVtKQot
ICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX21vZGUobW9kZSkKLXsKLX0KLQotV29y
a2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6fldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnkoKQotewotfQotCi1ib29sIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Ondh
aXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkKLXsKLSAgICBpZiAobV9jb250ZXh0LT50aHJlYWQo
KS0+cnVuTG9vcCgpLnJ1bkluTW9kZShtX2NvbnRleHQsIG1fbW9kZSkgPT0gTWVzc2FnZVF1ZXVl
VGVybWluYXRlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtT25N
YWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRo
LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgV2ViRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0
ZW0od2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZp
ZXIsIHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBzaXplLCBjcmVhdGUs
IGNhbGxiYWNrcywgMCk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6ZGVsZXRlRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVR5cGUgdHlwZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MqIGNhbGxiYWNrcykKLXsKLSAgICBXZWJGaWxlU3lzdGVtOjpkZWxldGVGaWxlU3lzdGVtKHdl
YktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFzZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBz
dGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgY2FsbGJhY2tzKTsKLX0KLQot
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojptb3ZlT25NYWluVGhyZWFkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0s
IGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtl
clBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgcGxh
dGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZpbGVTeXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZp
bGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9p
ZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5T25NYWluVGhyZWFkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNv
bnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgcGxhdGZv
cm1GaWxlU3lzdGVtLT5jb3B5KGZpbGVTeXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZpbGVT
eXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29u
c3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2Fs
bGJhY2tzKQotewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlKGZpbGVTeXN0ZW1VUkxU
b1BhdGgocGF0aCksIGNhbGxiYWNrcyk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBw
YXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQot
ewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVS
TFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRo
LCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQotewot
ICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkxUb1BhdGgo
cGF0aCksIGNhbGxiYWNrcyk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6Y3JlYXRlRmlsZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
RmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhj
bHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tz
KQotewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9Q
YXRoKHBhdGgpLCBleGNsdXNpdmUsIGNhbGxiYWNrcyk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0
IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVE
aXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3Mp
OwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVFeGlzdHNP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRm
b3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQotewotICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+Zmls
ZUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwotfQotCi12b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0c09uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxl
U3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5kaXJlY3RvcnlF
eGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0
ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MqIGNhbGxiYWNrcykKLXsKLSAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWREaXJlY3Rvcnko
ZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKLX0KLQotdm9pZCBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXJPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgQXN5
bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQotewotICAgIFdlYkZpbGVXcml0ZXI6OmNy
ZWF0ZVdyaXRlcihwbGF0Zm9ybUZpbGVTeXN0ZW0sIGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCks
IGNhbGxiYWNrcyk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVS
TCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNr
cykKLXsKLSAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRN
ZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwotfQotCi12b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtKFdvcmtlckds
b2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgbW9k
ZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIEFTU0VS
VChjb250ZXh0KTsKLSAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2so
JldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhy
ZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUsIHNpemUsIGNyZWF0ZSwgbmV3
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgY29udGV4
dCwgbW9kZSwgcm9vdFVSTCkpKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpkZWxldGVGaWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3Rv
cmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAg
IHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3RlbU9uTWFpblRocmVhZCwgYmFzZVBhdGgs
IHN0b3JhZ2VJZGVudGlmaWVyLCB0eXBlLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBjb250ZXh0LCBtb2RlKSkpOwotfQotCi12b2lkIFdvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBj
b25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxs
YmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmVPbk1haW5UaHJl
YWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBh
dGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3Ms
IG1fY29udGV4dCwgbV9tb2RlKSkpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0
aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
LXsKLSAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxl
U3lzdGVtLmdldCgpLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIG5ldyBXb3JrZXJQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2Rl
KSkpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCi17Ci0gICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVPbk1haW5UaHJlYWQsIG1fcGxh
dGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKLX0KLQotdm9p
ZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVseShjb25z
dCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCi17Ci0gICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVh
ZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwot
fQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCi17Ci0gICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQs
IG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKLX0K
LQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlKGNvbnN0
IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlT25N
YWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVzaXZlLCBu
ZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2Nv
bnRleHQsIG1fbW9kZSkpKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBwb3N0
VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVT
eXN0ZW0uZ2V0KCksIHBhdGgsIGV4Y2x1c2l2ZSwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7Ci19Ci0KLXZv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17
Ci0gICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxlRXhpc3RzT25NYWluVGhyZWFkLCBtX3BsYXRmb3Jt
RmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7Ci19Ci0KLXZvaWQgV29y
a2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsK
LSAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZCwgbV9wbGF0
Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwotfQotCi12b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQot
ewotICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCwgbV9wbGF0
Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwotfQotCi12b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVX
cml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIHBvc3RUYXNrVG9NYWluVGhyZWFk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3Jl
YXRlV3JpdGVyT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgY2xpZW50
LCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJh
Y2tzLCBjbGllbnQsIG1fY29udGV4dCwgbV9tb2RlKSkpOwotfQotCi12b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCi17Ci0gICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFk
TWV0YWRhdGFPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBu
ZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2Nv
bnRleHQsIG1fbW9kZSkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkgJiYgRU5BQkxFKFdPUktFUlMpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaAkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0gKiBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeV9oCi0jZGVmaW5lIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnlfaAotCi0j
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKSAmJiBFTkFCTEUoV09SS0VSUykKLSNpbmNsdWRlICJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmgiCi0KLSNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgot
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotY2xhc3MgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M7Ci1jbGFz
cyBXb3JrZXJHbG9iYWxTY29wZTsKLQotY2xhc3MgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeSA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5PiBjcmVhdGUo
V29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0
cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVt
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5KGNvbnRleHQsIG1vZGUsIHBsYXRmb3JtRmlsZVN5c3RlbSkpOwotICAgIH0K
LQotICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiwgY29u
c3QgVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBh
dGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlLCBsb25n
IGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgc3RhdGljIHZvaWQgZGVsZXRlRmlsZVN5c3RlbShXb3JrZXJHbG9iYWxTY29w
ZSosIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3Ry
aW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB+V29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeSgpOwotICAgIHZpcnR1YWwgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0
ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3Qg
VVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBV
UkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJz
aXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVGaWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShj
b25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFVSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBV
UkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0KLXByaXZhdGU6Ci0gICAg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0
IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5
c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKTsKLSAgICBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3Rl
bU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBiYXNl
UGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIGxv
bmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBkZWxldGVGaWxlU3lzdGVtT25NYWluVGhyZWFk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBtb3ZlT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmls
ZVN5c3RlbSosIGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBh
dGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGlj
IHZvaWQgY29weU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IFVSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBV
UkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAg
c3RhdGljIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJM
JiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0
YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZv
aWQgY3JlYXRlRmlsZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhj
bHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0
YXRpYyB2b2lkIGNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyopOwotICAgIHN0YXRpYyB2b2lkIGZpbGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
VVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAg
IHN0YXRpYyB2b2lkIGRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwm
IHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3Rh
dGljIHZvaWQgcmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZv
aWQgY3JlYXRlV3JpdGVyT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIEFzeW5jRmlsZVdyaXRlckNsaWVudCos
IGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
KTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyopOwotCi0gICAgV29ya2VyR2xvYmFsU2NvcGUqIG1fY29udGV4dDsKLSAg
ICBTdHJpbmcgbV9tb2RlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEZJTEVfU1lTVEVNKSAmJiBFTkFCTEUoV09SS0VSUykKLQotI2VuZGlmIC8vIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5j
RmlsZVdyaXRlckJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotICogU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKSAmJiBFTkFCTEUoV09SS0VSUykKLSNpbmNsdWRlICJXb3JrZXJBc3luY0ZpbGVX
cml0ZXJCbGFja0JlcnJ5LmgiCi0KLSNpbmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgotI2lu
Y2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQmxvYi5oIgotI2lu
Y2x1ZGUgIldvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVk
ZSAiV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCi0KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgV29ya2VyQXN5bmNGaWxlV3JpdGVy
QmxhY2tCZXJyeTo6d3JpdGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBwbGF0Zm9ybVdyaXRlciwgbG9uZyBs
b25nIHBvc2l0aW9uLCBCbG9iKiBibG9iKQotewotICAgIHBsYXRmb3JtV3JpdGVyLT53cml0ZShw
b3NpdGlvbiwgbmV3IFBsYXRmb3JtQmxvYihibG9iKSk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5bmNG
aWxlV3JpdGVyQmxhY2tCZXJyeTo6dHJ1bmNhdGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBwbGF0Zm9ybVdy
aXRlciwgbG9uZyBsb25nIGxlbmd0aCkKLXsKLSAgICBwbGF0Zm9ybVdyaXRlci0+dHJ1bmNhdGUo
bGVuZ3RoKTsKLX0KLQotdm9pZCBXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5OjphYm9y
dE9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OldlYkZpbGVXcml0ZXIqIHBsYXRmb3JtV3JpdGVyKQotewotICAgIHBsYXRmb3JtV3JpdGVy
LT5hYm9ydCgpOwotfQotCi12b2lkIFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6Ondy
aXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogYmxvYikKLXsKLSAgICBiZWdpbldyaXRlT3JU
cnVuY2F0ZSgpOwotICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygm
V29ya2VyQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeTo6d3JpdGVPbk1haW5UaHJlYWQsIG1fcGxh
dGZvcm1Xcml0ZXIuZ2V0KCksIHBvc2l0aW9uLCBibG9iKSk7Ci19Ci0KLXZvaWQgV29ya2VyQXN5
bmNGaWxlV3JpdGVyQmxhY2tCZXJyeTo6dHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCkKLXsKLSAg
ICBiZWdpbldyaXRlT3JUcnVuY2F0ZSgpOwotICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeTo6dHJ1bmNhdGVP
bk1haW5UaHJlYWQsIG1fcGxhdGZvcm1Xcml0ZXIuZ2V0KCksIGxlbmd0aCkpOwotfQotCi12b2lk
IFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6OmFib3J0KCkKLXsKLSAgICBiZWdpbkFi
b3J0KCk7Ci0gICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3Jr
ZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5OjphYm9ydE9uTWFpblRocmVhZCwgbV9wbGF0Zm9y
bVdyaXRlci5nZXQoKSkpOwotfQotCi1ib29sIFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVy
cnk6OndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkKLXsKLSAgICB3aGlsZSAobV9pc09wZXJh
dGlvbkluUHJvZ3Jlc3MpIHsKLSAgICAgICAgaWYgKG1fY29udGV4dC0+dGhyZWFkKCktPnJ1bkxv
b3AoKS5ydW5Jbk1vZGUobV9jb250ZXh0LCBtX21vZGUpID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0
ZWQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1QbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQqIFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNr
QmVycnk6OnBsYXRmb3JtV3JpdGVyQ2xpZW50KCkKLXsKLSAgICBpZiAoIW1fcGxhdGZvcm1Xcml0
ZXJDbGllbnQpCi0gICAgICAgIG1fcGxhdGZvcm1Xcml0ZXJDbGllbnQgPSBXb3JrZXJQbGF0Zm9y
bUZpbGVXcml0ZXJDbGllbnQ6OmNyZWF0ZShtX2NvbnRleHQsIG1fbW9kZSwgbV9jbGllbnQsIHRo
aXMpOwotICAgIHJldHVybiBtX3BsYXRmb3JtV3JpdGVyQ2xpZW50LmdldCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlV3Jp
dGVyQmxhY2tCZXJyeS5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEg
VVNBCi0gKi8KLQotI2lmbmRlZiBXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5X2gKLSNk
ZWZpbmUgV29ya2VyQXN5bmNGaWxlV3JpdGVyQmxhY2tCZXJyeV9oCi0KLSNpZiBFTkFCTEUoRklM
RV9TWVNURU0pICYmIEVOQUJMRShXT1JLRVJTKQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckJs
YWNrQmVycnkuaCIKLQotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVTeXN0ZW1G
aWxlV3JpdGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7Ci0KLWNsYXNzIFdvcmtlckFz
eW5jRmlsZVdyaXRlckJsYWNrQmVycnk6IHB1YmxpYyBBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJBc3luY0ZpbGVXcml0ZXJC
bGFja0JlcnJ5PiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbW9kZSwgUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlcj4g
cGxhdGZvcm1Xcml0ZXIsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5
KGNvbnRleHQsIG1vZGUsIHBsYXRmb3JtV3JpdGVyLCBjbGllbnQpKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBCbG9iKik7Ci0gICAgdmlydHVh
bCB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBhYm9y
dCgpOwotICAgIHZpcnR1YWwgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpOwotICAg
IHZpcnR1YWwgUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50KiBwbGF0Zm9ybVdyaXRlckNsaWVudCgp
OwotCi1wcml2YXRlOgotICAgIFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnkoV29ya2Vy
R2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlcj4gcGxhdGZvcm1Xcml0ZXIsIEFzeW5jRmls
ZVdyaXRlckNsaWVudCogY2xpZW50KQotICAgICAgICA6IEFzeW5jRmlsZVdyaXRlckJsYWNrQmVy
cnkocGxhdGZvcm1Xcml0ZXIsIGNsaWVudCkKLSAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkK
LSAgICAgICAgLCBtX21vZGUobW9kZSkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
d3JpdGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBwbGF0Zm9ybVdyaXRlciwgbG9uZyBsb25nIHBvc2l0aW9u
LCBCbG9iKik7Ci0gICAgc3RhdGljIHZvaWQgdHJ1bmNhdGVPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyKiBwbGF0
Zm9ybVdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgYWJvcnRPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpX
ZWJGaWxlV3JpdGVyKiBwbGF0Zm9ybVdyaXRlcik7Ci0KLSAgICBXb3JrZXJHbG9iYWxTY29wZSog
bV9jb250ZXh0OwotICAgIFN0cmluZyBtX21vZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzMiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkgJiYgRU5BQkxFKFdPUktFUlMpCi0jaW5jbHVkZSAiV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLQotI2luY2x1ZGUgIkNyb3NzVGhy
ZWFkVGFzay5oIgotI2luY2x1ZGUgIldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaCIK
LSNpbmNsdWRlICJXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmgiCi0jaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgotI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgotCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgdm9pZCBwZXJmb3JtVGFza09uTWFpblRocmVh
ZCh2b2lkKiBjb250ZXh0KQotewotICAgIE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPiB0YXNrID0gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayo+KGNvbnRleHQpKTsKLSAgICB0YXNrLT5wZXJmb3JtVGFzaygwKTsKLX0KLQotdm9pZCBw
b3N0VGFza1RvTWFpblRocmVhZChQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+IHRhc2spCi17Ci0gICAgY2FsbE9uTWFpblRocmVhZCgmcGVyZm9ybVRhc2tPbk1haW5UaHJl
YWQsIHRhc2subGVha1B0cigpKTsKLX0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRD
b3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVJbmZv
PiB7Ci0gICAgdHlwZWRlZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUluZm8gVHlwZTsK
LSAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFR5cGUmIGluZm8pCi0gICAgewotICAgICAgICBU
eXBlIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fbW9kaWZpY2F0aW9uVGltZSA9IGluZm8ubV9t
b2RpZmljYXRpb25UaW1lOwotICAgICAgICByZXN1bHQubV9sZW5ndGggPSBpbmZvLm1fbGVuZ3Ro
OwotICAgICAgICByZXN1bHQubV90eXBlID0gaW5mby5tX3R5cGU7Ci0gICAgICAgIHJlc3VsdC5t
X3BsYXRmb3JtUGF0aCA9IGluZm8ubV9wbGF0Zm9ybVBhdGg7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQotfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIHN0ZDo6dmVjdG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxl
U3lzdGVtRW50cnk+ID4gewotICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxh
dGZvcm06OldlYkZpbGVTeXN0ZW1FbnRyeT4gVHlwZTsKLSAgICBzdGF0aWMgVHlwZSBjb3B5KGNv
bnN0IFR5cGUmIGVudHJpZXMpCi0gICAgewotICAgICAgICBUeXBlIHJlc3VsdChlbnRyaWVzLnNp
emUoKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cmllcy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgcmVzdWx0W2ldLm1fbmFtZSA9IGVudHJpZXNbaV0ubV9uYW1lOwot
ICAgICAgICAgICAgcmVzdWx0W2ldLm1faXNEaXJlY3RvcnkgPSBlbnRyaWVzW2ldLm1faXNEaXJl
Y3Rvcnk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci19OwotCi12
b2lkIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlTdG9wKCkK
LXsKLSAgICBtX2NhbGxiYWNrcy5jbGVhcigpOwotICAgIHsKLSAgICAgICAgV1RGOjpNdXRleExv
Y2tlciBsb2NrZXIobV9tdXRleCk7Ci0gICAgICAgIG1fY29udGV4dCA9IDA7Ci0gICAgfQotfQot
Ci12b2lkIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlPcGVu
RmlsZVN5c3RlbShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSogcGxhdGZvcm1G
aWxlU3lzdGVtKQotewotICAgIG1fbXV0ZXgubG9jaygpOwotICAgIGlmICghbV9jb250ZXh0KSB7
Ci0gICAgICAgIG1fbXV0ZXgudW5sb2NrKCk7Ci0gICAgICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkZWxldGVNZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
cG9zdFRhc2tUb1dvcmtlclRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJm5vdGlmeU9wZW5GaWxl
U3lzdGVtT25Xb3JrZXJUaHJlYWQsIHRoaXMsIHBsYXRmb3JtRmlsZVN5c3RlbSkpOwotICAgIG1f
bXV0ZXgudW5sb2NrKCk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6Om5vdGlmeVN1Y2NlZWQoKQotewotICAgIG1fbXV0ZXgubG9jaygpOwotICAgIGlm
ICghbV9jb250ZXh0KSB7Ci0gICAgICAgIG1fbXV0ZXgudW5sb2NrKCk7Ci0gICAgICAgIFBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkZWxldGVNZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgcG9zdFRhc2tUb1dvcmtlclRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2so
Jm5vdGlmeVN1Y2NlZWRPbldvcmtlclRocmVhZCwgdGhpcykpOwotICAgIG1fbXV0ZXgudW5sb2Nr
KCk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5v
dGlmeUZhaWwoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVFcnJvciBlcnJvcikKLXsKLSAg
ICBtX211dGV4LmxvY2soKTsKLSAgICBpZiAoIW1fY29udGV4dCkgewotICAgICAgICBtX211dGV4
LnVubG9jaygpOwotICAgICAgICBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGVs
ZXRlTWUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBvc3RUYXNrVG9Xb3JrZXJU
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZub3RpZnlGYWlsT25Xb3JrZXJUaHJlYWQsIHRoaXMs
IGVycm9yKSk7Ci0gICAgbV9tdXRleC51bmxvY2soKTsKLX0KLQotdm9pZCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5UmVhZE1ldGFkYXRhKGNvbnN0IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYgZmlsZUluZm8pCi17Ci0gICAgbV9tdXRleC5s
b2NrKCk7Ci0gICAgaWYgKCFtX2NvbnRleHQpIHsKLSAgICAgICAgbV9tdXRleC51bmxvY2soKTsK
LSAgICAgICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRlbGV0ZU1lKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFza1RvV29ya2VyVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmbm90aWZ5UmVhZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGZp
bGVJbmZvKSk7Ci0gICAgbV9tdXRleC51bmxvY2soKTsKLX0KLQotdm9pZCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5Q3JlYXRlU25hcHNob3RGaWxlQW5kUmVh
ZE1ldGFkYXRhKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYgZmlsZUlu
Zm8pCi17Ci0gICAgbV9tdXRleC5sb2NrKCk7Ci0gICAgaWYgKCFtX2NvbnRleHQpIHsKLSAgICAg
ICAgbV9tdXRleC51bmxvY2soKTsKLSAgICAgICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M6OmRlbGV0ZU1lKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFz
a1RvV29ya2VyVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmbm90aWZ5Q3JlYXRlU25hcHNob3RG
aWxlQW5kUmVhZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQsIHRoaXMsIGZpbGVJbmZvKSk7Ci0gICAg
bV9tdXRleC51bmxvY2soKTsKLX0KLQotdm9pZCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrczo6bm90aWZ5UmVhZERpcmVjdG9yeShjb25zdCBzdGQ6OnZlY3RvcjxCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbUVudHJ5PiYgZW50cmllcywgYm9vbCBoYXNNb3Jl
KQotewotICAgIG1fbXV0ZXgubG9jaygpOwotICAgIGlmICghbV9jb250ZXh0KSB7Ci0gICAgICAg
IG1fbXV0ZXgudW5sb2NrKCk7Ci0gICAgICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkZWxldGVNZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcG9zdFRhc2tU
b1dvcmtlclRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJm5vdGlmeVJlYWREaXJlY3RvcnlFbnRy
eU9uV29ya2VyVGhyZWFkLCB0aGlzLCBlbnRyaWVzLCBoYXNNb3JlKSk7Ci0gICAgbV9tdXRleC51
bmxvY2soKTsKLX0KLQotdm9pZCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6bm90aWZ5Q3JlYXRlRmlsZVdyaXRlcihCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdy
aXRlciogcGxhdGZvcm1Xcml0ZXIsIGxvbmcgbG9uZyBsZW5ndGgpCi17Ci0gICAgbV9tdXRleC5s
b2NrKCk7Ci0gICAgaWYgKCFtX2NvbnRleHQpIHsKLSAgICAgICAgbV9tdXRleC51bmxvY2soKTsK
LSAgICAgICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRlbGV0ZU1lKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwb3N0VGFza1RvV29ya2VyVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmbm90aWZ5Q3JlYXRlRmlsZVdyaXRlck9uV29ya2VyVGhyZWFkLCB0aGlz
LCBwbGF0Zm9ybVdyaXRlciwgbGVuZ3RoKSk7Ci0gICAgbV9tdXRleC51bmxvY2soKTsKLX0KLQot
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpjcmVhdGVBc3luY0ZpbGVTeXN0ZW0oUGFzc093blB0cjxCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKQotewotICAgIHJldHVy
biBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGUobV9jb250ZXh0LCBtX21v
ZGUsIHBsYXRmb3JtRmlsZVN5c3RlbSk7Ci19Ci0KLVBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVy
PiBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlQXN5bmNGaWxl
V3JpdGVyKFBhc3NPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXI+IHBs
YXRmb3JtV3JpdGVyKQotewotICAgIEFTU0VSVChtX3dyaXRlckNsaWVudCk7Ci0gICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIqIHBsYXRmb3JtV3JpdGVyUHRyID0gcGxhdGZv
cm1Xcml0ZXIuZ2V0KCk7Ci0gICAgT3duUHRyPFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVy
cnk+IHdyaXRlciA9IFdvcmtlckFzeW5jRmlsZVdyaXRlckJsYWNrQmVycnk6OmNyZWF0ZShtX2Nv
bnRleHQsIG1fbW9kZSwgcGxhdGZvcm1Xcml0ZXIsIG1fd3JpdGVyQ2xpZW50KTsKLSAgICBwbGF0
Zm9ybVdyaXRlclB0ci0+c2V0Q2xpZW50KHdyaXRlci0+cGxhdGZvcm1Xcml0ZXJDbGllbnQoKSk7
Ci0gICAgcmV0dXJuIHdyaXRlci5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRlbGV0ZU1lKCkKLXsKLSAgICBkZWxldGVHdWFyZGVk
T2JqZWN0KHRoaXMpOwotfQotCi12b2lkIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpwb3N0VGFza1RvV29ya2VyVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gdGFzaykKLXsKLSAgICBtX2NvbnRleHQtPnRocmVhZCgpLT53b3JrZXJM
b2FkZXJQcm94eSgpLnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUodGFzaywgbV9t
b2RlKTsKLX0KLQotdm9pZCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6
bm90aWZ5T3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcywgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSkKLXsK
LSAgICBjYWxsYmFja3MtPlBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlP
cGVuRmlsZVN5c3RlbShwbGF0Zm9ybUZpbGVTeXN0ZW0pOwotfQotCi12b2lkIFdvcmtlclBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlTdWNjZWVkT25Xb3JrZXJUaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCi17Ci0gICAgY2FsbGJhY2tzLT5QbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrczo6bm90aWZ5U3VjY2VlZCgpOwotfQotCi12b2lkIFdvcmtlclBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpub3RpZnlGYWlsT25Xb3JrZXJUaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KiBjYWxsYmFja3MsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlRXJyb3IgZXJyb3IpCi17
Ci0gICAgY2FsbGJhY2tzLT5QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6bm90aWZ5
RmFpbChlcnJvcik7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M6Om5vdGlmeVJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tz
LCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUluZm8mIGZpbGVJbmZvKQotewot
ICAgIGNhbGxiYWNrcy0+UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeVJl
YWRNZXRhZGF0YShmaWxlSW5mbyk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M6Om5vdGlmeUNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YU9u
V29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZUluZm8mIGZpbGVJbmZvKQotewotICAgIGNhbGxiYWNrcy0+UGxhdGZvcm1Bc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeUNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRh
ZGF0YShmaWxlSW5mbyk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6Om5vdGlmeVJlYWREaXJlY3RvcnlFbnRyeU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyog
Y2FsbGJhY2tzLCBjb25zdCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmls
ZVN5c3RlbUVudHJ5PiYgZW50cmllcywgYm9vbCBoYXNNb3JlKQotewotICAgIGNhbGxiYWNrcy0+
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeVJlYWREaXJlY3RvcnkoZW50
cmllcywgaGFzTW9yZSk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6Om5vdGlmeUNyZWF0ZUZpbGVXcml0ZXJPbldvcmtlclRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNh
bGxiYWNrcywgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIqIHBsYXRmb3JtV3Jp
dGVyLCBsb25nIGxvbmcgbGVuZ3RoKQotewotICAgIGNhbGxiYWNrcy0+UGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6Om5vdGlmeUNyZWF0ZUZpbGVXcml0ZXIocGxhdGZvcm1Xcml0ZXIs
IGxlbmd0aCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAkocmV2aXNp
b24gMTU2NjkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEx
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lm
bmRlZiBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrc19oCi0jZGVmaW5lIFdv
cmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzX2gKLQotI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkgJiYgRU5BQkxFKFdPUktFUlMpCi0jaW5jbHVkZSAiQ3Jvc3NUaHJlYWRDb3BpZXIu
aCIKLSNpbmNsdWRlICJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgotCi0jaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtV2ViRmlsZVN5c3RlbUZpbGVXcml0
ZXIuaD4KLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1XZWJGaWxlU3lzdGVtUHJpbWl0aXZl
cy5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZVN5c3RlbSo+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8QmxhY2tC
ZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qPiB7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVj
dCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZVdyaXRlcio+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8
QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVXcml0ZXIqPiB7Ci19OwotCi1jbGFzcyBXb3Jr
ZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczsKLXRlbXBsYXRlPD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKj4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyo+IHsKLX07Ci0KLXRlbXBsYXRl
PD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEJsb2IqPiA6IHB1
YmxpYyBDcm9zc1RocmVhZENvcGllclBhc3NUaHJvdWdoPEJsb2IqPiB7Ci19OwotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXb3JrZXJHbG9i
YWxTY29wZSo+IDogcHVibGljIENyb3NzVGhyZWFkQ29waWVyUGFzc1Rocm91Z2g8V29ya2VyR2xv
YmFsU2NvcGUqPiB7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJh
c2U8ZmFsc2UsIGZhbHNlLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqPiA6IHB1YmxpYyBDcm9zc1Ro
cmVhZENvcGllclBhc3NUaHJvdWdoPEFzeW5jRmlsZVdyaXRlckNsaWVudCo+IHsKLX07Ci0KLXZv
aWQgcG9zdFRhc2tUb01haW5UaHJlYWQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPik7Ci0KLWNsYXNzIFVSTDsKLQotY2xhc3MgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M6IHB1YmxpYyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcywg
cHVibGljIFdvcmtlckdsb2JhbFNjb3BlOjpPYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgbW9kZSwgY29uc3QgVVJMJiByb290VVJMID0gVVJMKCkpCi0gICAgICAgIDogUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCByb290VVJMKQotICAgICAg
ICAsIFdvcmtlckdsb2JhbFNjb3BlOjpPYnNlcnZlcihjb250ZXh0KQotICAgICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQotICAgICAgICAsIG1fbW9kZShtb2RlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICAvLyBGb3IgY3JlYXRlV3JpdGVyLgotICAgIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBXb3JrZXJHbG9iYWxTY29wZSogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBtb2RlKQotICAgICAgICA6IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKGNhbGxiYWNrcywgY2xpZW50KQotICAgICAgICAsIFdvcmtlckdsb2JhbFNjb3Bl
OjpPYnNlcnZlcihjb250ZXh0KQotICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICAg
ICAsIG1fbW9kZShtb2RlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIHBvc3RUYXNrVG9Xb3Jr
ZXJUaHJlYWQoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7Ci0KLSAg
ICAvLyBGcm9tIFdvcmtlckdsb2JhbFNjb3BlOjpPYnNlcnZlci4gVGhpcyB3aWxsIGJlIGNhbGxl
ZCBvbiB3b3JrZXIgdGhyZWFkLgotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTdG9wKCk7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5T3BlbkZpbGVTeXN0ZW0oQmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSk7Ci0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeVN1Y2NlZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmFpbChCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZUVycm9yKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVhZE1ldGFk
YXRhKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYpOwotICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlDcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVJbmZvJik7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlm
eVJlYWREaXJlY3RvcnkoY29uc3Qgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06Oldl
YkZpbGVTeXN0ZW1FbnRyeT4mIGVudHJpZXMsIGJvb2wgaGFzTW9yZSk7Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUNyZWF0ZUZpbGVXcml0ZXIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVX
cml0ZXIqIHBsYXRmb3JtV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGVBc3luY0ZpbGVTeXN0ZW0oUGFzc093blB0
cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVt
KTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiBjcmVhdGVBc3luY0Zp
bGVXcml0ZXIoUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlcj4g
cGxhdGZvcm1Xcml0ZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVNZSgpOwotCi1wcml2YXRl
OgotICAgIH5Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcygpIHsgfQotCi0g
ICAgc3RhdGljIHZvaWQgbm90aWZ5T3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
LCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVt
KTsKLSAgICBzdGF0aWMgdm9pZCBub3RpZnlTdWNjZWVkT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7
Ci0gICAgc3RhdGljIHZvaWQgbm90aWZ5RmFpbE9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyosIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlRXJyb3IpOwotICAgIHN0YXRpYyB2b2lkIG5vdGlmeVJl
YWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyosIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpXZWJGaWxlSW5mbyYpOwotICAgIHN0YXRpYyB2b2lkIG5vdGlmeUNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyosIGNvbnN0IEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlSW5mbyYpOwotICAgIHN0YXRpYyB2b2lkIG5vdGlmeVJlYWRE
aXJlY3RvcnlFbnRyeU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3Jr
ZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyosIGNvbnN0IHN0ZDo6dmVjdG9yPEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVzLCBib29sIGhh
c01vcmUpOwotICAgIHN0YXRpYyB2b2lkIG5vdGlmeUNyZWF0ZUZpbGVXcml0ZXJPbldvcmtlclRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlciogcGxhdGZv
cm1Xcml0ZXIsIGxvbmcgbG9uZyBsZW5ndGgpOwotCi0gICAgV29ya2VyR2xvYmFsU2NvcGUqIG1f
Y29udGV4dDsKLSAgICBTdHJpbmcgbV9tb2RlOwotICAgIFdURjo6TXV0ZXggbV9tdXRleDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9X
b3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtRmlsZVdyaXRl
ckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0gKiBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKSAmJiBFTkFCTEUoV09SS0VSUykKLSNpbmNsdWRlICJXb3JrZXJQbGF0
Zm9ybUZpbGVXcml0ZXJDbGllbnQuaCIKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckJsYWNr
QmVycnkuaCIKLSNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJD
cm9zc1RocmVhZFRhc2suaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCi0jaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgV29ya2VyUGxhdGZvcm1G
aWxlV3JpdGVyQ2xpZW50Kj4gOiBwdWJsaWMgQ3Jvc3NUaHJlYWRDb3BpZXJQYXNzVGhyb3VnaDxX
b3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQqPiB7Ci19OwotCi12b2lkIFdvcmtlclBsYXRm
b3JtRmlsZVdyaXRlckNsaWVudDo6bm90aWZ5V3JpdGVPbldvcmtlclRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50KiBwbGF0Zm9ybUNs
aWVudCwgbG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKQotewotICAgIHBsYXRmb3JtQ2xp
ZW50LT5QbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ6Om5vdGlmeVdyaXRlKGJ5dGVzLCBjb21wbGV0
ZSk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50Ojpub3RpZnlGYWls
T25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclBsYXRmb3JtRmls
ZVdyaXRlckNsaWVudCogcGxhdGZvcm1DbGllbnQsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJG
aWxlRXJyb3IgZXJyb3IpCi17Ci0gICAgcGxhdGZvcm1DbGllbnQtPlBsYXRmb3JtRmlsZVdyaXRl
ckNsaWVudDo6bm90aWZ5RmFpbChlcnJvcik7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1GaWxl
V3JpdGVyQ2xpZW50Ojpub3RpZnlUcnVuY2F0ZU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQqIHBsYXRmb3JtQ2xpZW50
KQotewotICAgIHBsYXRmb3JtQ2xpZW50LT5QbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ6Om5vdGlm
eVRydW5jYXRlKCk7Ci19Ci0KLXZvaWQgV29ya2VyUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50Ojpu
b3RpZnlXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpCi17Ci0gICAgcG9zdFRh
c2tUb1dvcmtlclRocmVhZElmTmVlZGVkKGNyZWF0ZUNhbGxiYWNrVGFzaygmbm90aWZ5V3JpdGVP
bldvcmtlclRocmVhZCwgdGhpcywgYnl0ZXMsIGNvbXBsZXRlKSk7Ci19Ci0KLXZvaWQgV29ya2Vy
UGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50Ojpub3RpZnlUcnVuY2F0ZSgpCi17Ci0gICAgcG9zdFRh
c2tUb1dvcmtlclRocmVhZElmTmVlZGVkKGNyZWF0ZUNhbGxiYWNrVGFzaygmbm90aWZ5VHJ1bmNh
dGVPbldvcmtlclRocmVhZCwgdGhpcykpOwotfQotCi12b2lkIFdvcmtlclBsYXRmb3JtRmlsZVdy
aXRlckNsaWVudDo6bm90aWZ5RmFpbChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUVycm9y
IGVycm9yKQotewotICAgIHBvc3RUYXNrVG9Xb3JrZXJUaHJlYWRJZk5lZWRlZChjcmVhdGVDYWxs
YmFja1Rhc2soJm5vdGlmeUZhaWxPbldvcmtlclRocmVhZCwgdGhpcywgZXJyb3IpKTsKLX0KLQot
dm9pZCBXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ6OnBvc3RUYXNrVG9Xb3JrZXJUaHJl
YWRJZk5lZWRlZChQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2sp
Ci17Ci0gICAgV1RGOjpNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0gICAgaWYgKCFtX2Nv
bnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+dGhyZWFkKCktPndvcmtl
ckxvYWRlclByb3h5KCkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh0YXNrLCBt
X21vZGUpOwotfQotCi19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtRmlsZVdy
aXRlckNsaWVudC5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQotICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK
LSAqLwotCi0jaWZuZGVmIFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudF9oCi0jZGVmaW5l
IFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudF9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pICYmIEVOQUJMRShXT1JLRVJTKQotI2luY2x1ZGUgIlBsYXRmb3JtRmlsZVdyaXRlckNsaWVu
dC5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwotCi1jbGFzcyBXb3JrZXJQbGF0Zm9y
bUZpbGVXcml0ZXJDbGllbnQ6IHB1YmxpYyBQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQsIHB1Ymxp
YyBXb3JrZXJHbG9iYWxTY29wZTo6T2JzZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNsaWVudD4gY3JlYXRlKFdvcmtlckdsb2Jh
bFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUsIEFzeW5jRmlsZVdyaXRlckNsaWVu
dCogY2xpZW50LCBXb3JrZXJBc3luY0ZpbGVXcml0ZXJCbGFja0JlcnJ5KiB3cml0ZXIpCi0gICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlclBsYXRmb3JtRmlsZVdyaXRlckNs
aWVudChjb250ZXh0LCBtb2RlLCBjbGllbnQsIHdyaXRlcikpOwotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpOwotICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlUcnVuY2F0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlG
YWlsKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlRXJyb3IpOwotCi0gICAgLy8gRnJvbSBX
b3JrZXJHbG9iYWxTY29wZTo6T2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3RvcCgp
Ci0gICAgewotICAgICAgICBXVEY6Ok11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLSAgICAg
ICAgbV9jb250ZXh0ID0gMDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV29ya2VyUGxhdGZvcm1G
aWxlV3JpdGVyQ2xpZW50KFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG1vZGUsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBXb3JrZXJBc3luY0ZpbGVXcml0
ZXJCbGFja0JlcnJ5KiB3cml0ZXIpCi0gICAgICAgIDogUGxhdGZvcm1GaWxlV3JpdGVyQ2xpZW50
KGNsaWVudCwgd3JpdGVyKQotICAgICAgICAsIFdvcmtlckdsb2JhbFNjb3BlOjpPYnNlcnZlcihj
b250ZXh0KQotICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICAgICAsIG1fbW9kZSht
b2RlKQotICAgIHsgfQotICAgIH5Xb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQoKSB7IH0K
LSAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJUaHJlYWRJZk5lZWRlZChQYXNzT3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKLQotICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdyaXRl
T25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclBsYXRmb3JtRmls
ZVdyaXRlckNsaWVudCogcGxhdGZvcm1DbGllbnQsIGxvbmcgbG9uZyBieXRlcywgYm9vbCBjb21w
bGV0ZSk7Ci0gICAgc3RhdGljIHZvaWQgbm90aWZ5RmFpbE9uV29ya2VyVGhyZWFkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQqIHBsYXRmb3Jt
Q2xpZW50LCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZUVycm9yKTsKLSAgICBzdGF0aWMg
dm9pZCBub3RpZnlUcnVuY2F0ZU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQqIHBsYXRmb3JtQ2xpZW50KTsKLQotICAg
IFdvcmtlckdsb2JhbFNjb3BlKiBtX2NvbnRleHQ7Ci0gICAgU3RyaW5nIG1fbW9kZTsKLSAgICBX
VEY6Ok11dGV4IG1fbXV0ZXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVz
cGFjZSBXVEYgewotCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBkZWxldGVPd25lZFB0cjxXZWJD
b3JlOjpXb3JrZXJQbGF0Zm9ybUZpbGVXcml0ZXJDbGllbnQ+KFdlYkNvcmU6OldvcmtlclBsYXRm
b3JtRmlsZVdyaXRlckNsaWVudCogcHRyKQotewotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpk
ZWxldGVHdWFyZGVkT2JqZWN0KHB0cik7Ci19Ci0KLX0KLQotI2VuZGlmCi0jZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwu
Y3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5
bmNGaWxlU3lzdGVtRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXN5bmNG
aWxlU3lzdGVtRWZsLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIEFzeW5jRmls
ZVN5c3RlbTo6aXNBdmFpbGFibGUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW0+IEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEFzeW5jRmlsZVN5c3RlbUVmbCgpKTsKLX0KLQotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IEZpbGVTeXN0ZW1UeXBlLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgRmlsZVN5c3Rl
bVR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi1Bc3luY0ZpbGVTeXN0ZW1FZmw6OkFzeW5jRmlsZVN5c3RlbUVm
bCgpCi0gICAgOiBBc3luY0ZpbGVTeXN0ZW0oKQotewotfQotCi1Bc3luY0ZpbGVTeXN0ZW1FZmw6
On5Bc3luY0ZpbGVTeXN0ZW1FZmwoKQotewotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6
bW92ZShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVT
eXN0ZW1FZmw6OmNvcHkoY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
QXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmUoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
QXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBVUkwmLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZUZpbGUoY29uc3QgVVJM
JiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVEaXJl
Y3RvcnkoY29uc3QgVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVt
RWZsOjpmaWxlRXhpc3RzKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5
c3RlbUVmbDo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUVmbDo6cmVhZERpcmVjdG9yeShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGll
bnQqLCBjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmgJKHJldmlzaW9uIDE1NjY5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgIEFzeW5jRmlsZVN5c3RlbUVmbF9oCi0jZGVmaW5lICBBc3luY0ZpbGVTeXN0ZW1FZmxfaAot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M7Ci0KLWNsYXNzIEFzeW5jRmlsZVN5c3RlbUVm
bCA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW0gewotcHVibGljOgotICAgIEFzeW5jRmlsZVN5c3Rl
bUVmbCgpOwotICAgIHZpcnR1YWwgfkFzeW5jRmlsZVN5c3RlbUVmbCgpOwotCi0gICAgdmlydHVh
bCB2b2lkIG1vdmUoY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBVUkwmLCBjb25z
dCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmUoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgVVJMJiwgYm9vbCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGly
ZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
V3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQot
I2VuZGlmIC8vICBBc3luY0ZpbGVTeXN0ZW1FZmxfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAJKHJldmlzaW9uIDE1NjY5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIENoYW5nU2VvayBPaCA8c2hpdmFtaWRvd0BnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZQotICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1HdGsuaCIKLQotI2luY2x1ZGUgIkFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWJvb2wgQXN5bmNGaWxl
U3lzdGVtOjppc0F2YWlsYWJsZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLVBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBBc3luY0ZpbGVTeXN0
ZW06OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBc3luY0ZpbGVTeXN0ZW1H
dGsoKSk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShjb25zdCBT
dHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lz
dGVtVHlwZSwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxi
YWNrcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGNhbGxiYWNrcy0+ZGlkRmFpbChO
T1RfU1VQUE9SVEVEX0VSUik7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtOjpkZWxldGVGaWxl
U3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50
aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBjYWxsYmFj
a3MtPmRpZEZhaWwoTk9UX1NVUFBPUlRFRF9FUlIpOwotfQotCi1Bc3luY0ZpbGVTeXN0ZW1HdGs6
OkFzeW5jRmlsZVN5c3RlbUd0aygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotQXN5
bmNGaWxlU3lzdGVtR3RrOjp+QXN5bmNGaWxlU3lzdGVtR3RrKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6bW92ZShjb25zdCBVUkwmIHNv
dXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwg
Y29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBB
c3luY0ZpbGVTeXN0ZW1HdGs6OnJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0
IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0
azo6cmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wg
ZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3Rr
OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6ZmlsZUV4aXN0cyhjb25z
dCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1H
dGs6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLQotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0
ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpjcmVhdGVTbmFw
c2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQXN5bmNGaWxlU3lzdGVtR3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBDaGFuZ1Nlb2sg
T2ggPHNoaXZhbWlkb3dAZ21haWwuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUKLSAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lmbmRl
ZiAgQXN5bmNGaWxlU3lzdGVtR3RrX2gKLSNkZWZpbmUgIEFzeW5jRmlsZVN5c3RlbUd0a19oCi0K
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczsKLQotY2xhc3MgQXN5bmNGaWxlU3lzdGVtR3Rr
IDogcHVibGljIEFzeW5jRmlsZVN5c3RlbSB7Ci1wdWJsaWM6Ci0gICAgQXN5bmNGaWxlU3lzdGVt
R3RrKCk7Ci0gICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtR3RrKCk7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25Q
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBVUkwm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBi
b29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0
cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVX
cml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYKLQotI2VuZGlmIC8vICBBc3luY0ZpbGVTeXN0ZW1HdGtfaApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAJKHJldmlzaW9uIDE1
NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NCwxMyArOTQsNiBAQCB2b2lkIEJsb2JEYXRhOjphcHBlbmRCbG9i
KGNvbnN0IFVSTCYgdXJsCiAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKHVybCwgb2Zm
c2V0LCBsZW5ndGgpKTsKIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgQmxvYkRh
dGE6OmFwcGVuZFVSTChjb25zdCBVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25n
IGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKLXsKLSAgICBtX2l0ZW1z
LmFwcGVuZChCbG9iRGF0YUl0ZW0odXJsLCBvZmZzZXQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBCbG9iRGF0YTo6c3dhcEl0ZW1zKEJsb2JE
YXRhSXRlbUxpc3QmIGl0ZW1zKQogewogICAgIG1faXRlbXMuc3dhcChpdGVtcyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMSwxOCArMTExLDYgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAgICAg
ewogICAgIH0KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAvLyBDb25zdHJ1Y3RvciBm
b3IgVVJMIHR5cGUgKGUuZy4gRmlsZVN5c3RlbSBmaWxlcykuCi0gICAgQmxvYkRhdGFJdGVtKGNv
bnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUg
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQotICAgICAgICA6IHR5cGUoVVJMKQotICAgICAgICAs
IHVybCh1cmwpCi0gICAgICAgICwgb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBsZW5ndGgobGVu
Z3RoKQotICAgICAgICAsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpCi0gICAgewotICAgIH0KLSNlbmRpZgotCiAgICAgLy8gRGV0YWNoZXMgZnJvbSBj
dXJyZW50IHRocmVhZCBzbyB0aGF0IGl0IGNhbiBiZSBwYXNzZWQgdG8gYW5vdGhlciB0aHJlYWQu
CiAgICAgdm9pZCBkZXRhY2hGcm9tQ3VycmVudFRocmVhZCgpOwogCkBAIC0xMzAsOSArMTE4LDYg
QEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAgICAgICAgIERhdGEsCiAgICAgICAgIEZpbGUsCiAg
ICAgICAgIEJsb2IKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgICwgVVJMCi0jZW5k
aWYKICAgICB9IHR5cGU7CiAKICAgICAvLyBGb3IgRGF0YSB0eXBlLgpAQCAtMTg1LDkgKzE3MCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAg
ICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBs
b25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKICAgICB2
b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxl
bmd0aCk7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIHZvaWQgYXBwZW5kVVJMKGNvbnN0
IFVSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUpOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEJsb2JSZWdpc3RyeUltcGw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDEwICs4NSw2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5k
U3RvcmFnZUl0ZW0KICAgICBmb3IgKEJsb2JEYXRhSXRlbUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0
ZXIgPSBpdGVtcy5iZWdpbigpOyBpdGVyICE9IGl0ZW1zLmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgaWYgKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpEYXRhKQogICAgICAgICAgICAgYmxv
YlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kRGF0YShpdGVyLT5kYXRhLCBpdGVyLT5vZmZzZXQs
IGl0ZXItPmxlbmd0aCk7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICBlbHNlIGlm
IChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRlbTo6VVJMKQotICAgICAgICAgICAgYmxvYlN0b3Jh
Z2VEYXRhLT5tX2RhdGEuYXBwZW5kVVJMKGl0ZXItPnVybCwgaXRlci0+b2Zmc2V0LCBpdGVyLT5s
ZW5ndGgsIGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7Ci0jZW5kaWYKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZp
bGUpOwogICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kRmlsZShpdGVy
LT5wYXRoLCBpdGVyLT5vZmZzZXQsIGl0ZXItPmxlbmd0aCwgaXRlci0+ZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKTsKQEAgLTExNSwxMCArMTExLDYgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjph
cHBlbmRTdG9yYWdlSXRlbQogICAgICAgICBsb25nIGxvbmcgbmV3TGVuZ3RoID0gY3VycmVudExl
bmd0aCA+IGxlbmd0aCA/IGxlbmd0aCA6IGN1cnJlbnRMZW5ndGg7CiAgICAgICAgIGlmIChpdGVy
LT50eXBlID09IEJsb2JEYXRhSXRlbTo6RGF0YSkKICAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0
YS0+bV9kYXRhLmFwcGVuZERhdGEoaXRlci0+ZGF0YSwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBu
ZXdMZW5ndGgpOwotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgZWxzZSBpZiAoaXRl
ci0+dHlwZSA9PSBCbG9iRGF0YUl0ZW06OlVSTCkKLSAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0
YS0+bV9kYXRhLmFwcGVuZFVSTChpdGVyLT51cmwsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3
TGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwotI2VuZGlmCiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpG
aWxlKTsKICAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUoaXRl
ci0+cGF0aCwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgsIGl0ZXItPmV4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZSk7CkBAIC0xNDksMTEgKzE0MSw2IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5
SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGMKICAgICAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OkZpbGU6
CiAgICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxlKGl0ZXItPnBh
dGgsIGl0ZXItPm9mZnNldCwgaXRlci0+bGVuZ3RoLCBpdGVyLT5leHBlY3RlZE1vZGlmaWNhdGlv
blRpbWUpOwogICAgICAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAg
ICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VVJMOgotICAgICAgICAgICAgYmxvYlN0b3JhZ2VEYXRh
LT5tX2RhdGEuYXBwZW5kVVJMKGl0ZXItPnVybCwgaXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgs
IGl0ZXItPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7Ci0gICAgICAgICAgICBicmVhazsKLSNl
bmRpZgogICAgICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6QmxvYjoKICAgICAgICAgICAgIGlmICht
X2Jsb2JzLmNvbnRhaW5zKGl0ZXItPnVybC5zdHJpbmcoKSkpCiAgICAgICAgICAgICAgICAgYXBw
ZW5kU3RvcmFnZUl0ZW1zKGJsb2JTdG9yYWdlRGF0YS5nZXQoKSwgbV9ibG9icy5nZXQoaXRlci0+
dXJsLnN0cmluZygpKS0+aXRlbXMoKSwgaXRlci0+b2Zmc2V0LCBpdGVyLT5sZW5ndGgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMTEgKzE0OCw2IEBAIFBhc3NSZWZQdHI8Rm9ybURh
dGE+IEZvcm1EYXRhOjpkZWVwQ29weSgKICAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1lbnRz
LnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZS5tX3VybCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAjZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgIGNhc2UgRm9y
bURhdGFFbGVtZW50OjplbmNvZGVkVVJMOgotICAgICAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVu
dHMudW5jaGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlLm1fdXJsLCBlLm1fZmlsZVN0YXJ0
LCBlLm1fZmlsZUxlbmd0aCwgZS5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZv
cm1EYXRhLnJlbGVhc2UoKTsKQEAgLTE4MywxNyArMTc4LDYgQEAgdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kQmxvYihjb25zdCBVUkwmIGJsbwogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxl
bWVudChibG9iVVJMKSk7CiB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lk
IEZvcm1EYXRhOjphcHBlbmRVUkwoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgbV9lbGVtZW50cy5h
cHBlbmQoRm9ybURhdGFFbGVtZW50KHVybCwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwg
aW52YWxpZEZpbGVUaW1lKCkpKTsKLX0KLQotdm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMUmFuZ2Uo
Y29uc3QgVVJMJiB1cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91Ymxl
IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKLXsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3Jt
RGF0YUVsZW1lbnQodXJsLCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUp
KTsKLX0KLSNlbmRpZgogCiB2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhj
b25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJv
b2wgaXNNdWx0aVBhcnRGb3JtLCBEb2N1bWVudCogZG9jdW1lbnQsIEVuY29kaW5nVHlwZSBlbmNv
ZGluZ1R5cGUpCiB7CkBAIC0yNjgsMTAgKzI1Miw2IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZEtl
eVZhbHVlUGFpckl0ZW1zKGMKICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IGFkZCB0aGUg
ZmlsZSBpZiB0aGUgcGF0aCBpcyBlbXB0eS4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxl
LT5wYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kRmlsZShm
aWxlLT5wYXRoKCksIHNob3VsZEdlbmVyYXRlRmlsZSk7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGUtPmZpbGVTeXN0ZW1VUkwoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRVUkwoZmlsZS0+ZmlsZVN5c3RlbVVS
TCgpKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIH0KICNpZiBFTkFCTEUoQkxPQikKICAgICAg
ICAgICAgICAgICBlbHNlCkBAIC00NTgsMTUgKzQzOCw2IEBAIHN0YXRpYyB2b2lkIGVuY29kZUVs
ZW1lbnQoRW5jb2RlciYgZW5jb2QKICAgICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoZWxlbWVu
dC5tX3VybC5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybjsKICNlbmRpZgotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkVVJMOgotICAg
ICAgICBlbmNvZGVyLmVuY29kZVN0cmluZyhlbGVtZW50Lm1fdXJsLnN0cmluZygpKTsKLSAgICAg
ICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChlbGVtZW50Lm1fZmlsZVN0YXJ0KTsKLSAgICAgICAgZW5j
b2Rlci5lbmNvZGVJbnQ2NChlbGVtZW50Lm1fZmlsZUxlbmd0aCk7Ci0gICAgICAgIGVuY29kZXIu
ZW5jb2RlRG91YmxlKGVsZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotI2VuZGlmCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC00OTEsOSArNDYyLDYgQEAgc3RhdGljIGJvb2wgZGVjb2RlRWxlbWVudChEZWNvZGVyJiBk
ZWNvZAogICAgIH0KIAogICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZToKLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRV
Ukw6Ci0jZW5kaWYKICAgICB7CiAgICAgICAgIGVsZW1lbnQubV90eXBlID0gc3RhdGljX2Nhc3Q8
Rm9ybURhdGFFbGVtZW50OjpUeXBlPih0eXBlKTsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lT3JV
Ukw7CkBAIC01MTksMTMgKzQ4Nyw3IEBAIHN0YXRpYyBib29sIGRlY29kZUVsZW1lbnQoRGVjb2Rl
ciYgZGVjb2QKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZURvdWJsZShleHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLSAgICAgICAgaWYgKHR5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNv
ZGVkVVJMKQotICAgICAgICAgICAgZWxlbWVudC5tX3VybCA9IFVSTChVUkwoKSwgZmlsZW5hbWVP
clVSTCk7Ci0gICAgICAgIGVsc2UKLSNlbmRpZgogICAgICAgICBlbGVtZW50Lm1fZmlsZW5hbWUg
PSBmaWxlbmFtZU9yVVJMOwotCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIGVsZW1lbnQubV9m
aWxlU3RhcnQgPSBmaWxlU3RhcnQ7CiAgICAgICAgIGVsZW1lbnQubV9maWxlTGVuZ3RoID0gZmls
ZUxlbmd0aDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgJKHJldmlzaW9uIDE1NjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsNiBAQCBwdWJsaWM6CiAjZWxz
ZQogICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3Vs
ZEdlbmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1l
KSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7IH0KICNlbmRpZgot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVVJMJiB1
cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmls
ZU1vZGlmaWNhdGlvblRpbWUpIDogbV90eXBlKGVuY29kZWRVUkwpLCBtX3VybCh1cmwpLCBtX2Zp
bGVTdGFydChzdGFydCksIG1fZmlsZUxlbmd0aChsZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2VuZXJh
dGVGaWxlKGZhbHNlKSB7IH0KLSNlbmRpZgogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgZGF0
YSwKQEAgLTUzLDkgKzUwLDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShCTE9CKQogICAgICAgICAs
IGVuY29kZWRCbG9iCiAjZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgICwg
ZW5jb2RlZFVSTAotI2VuZGlmCiAgICAgfSBtX3R5cGU7CiAgICAgVmVjdG9yPGNoYXI+IG1fZGF0
YTsKICAgICBTdHJpbmcgbV9maWxlbmFtZTsKQEAgLTg2LDEwICs4MCw2IEBAIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgRm9ybURhdGFFbGUKICNlbHNlCiAgICAgICAgIHJldHVybiBhLm1f
ZmlsZW5hbWUgPT0gYi5tX2ZpbGVuYW1lOwogI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotICAgIGlmIChhLm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRVUkwpCi0gICAg
ICAgIHJldHVybiBhLm1fdXJsID09IGIubV91cmw7Ci0jZW5kaWYKIAogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtMTI2LDEwICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRGaWxlUmFu
Z2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRl
RmlsZSA9IGZhbHNlKTsKICAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsK
ICNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICB2b2lkIGFwcGVuZFVSTChjb25z
dCBVUkwmKTsKLSAgICB2b2lkIGFwcGVuZFVSTFJhbmdlKGNvbnN0IFVSTCYsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
Ci0jZW5kaWYKICAgICBjaGFyKiBleHBhbmREYXRhU3RvcmUoc2l6ZV90KTsKIAogICAgIHZvaWQg
ZmxhdHRlbihWZWN0b3I8Y2hhcj4mKSBjb25zdDsgLy8gb21pdHMgZmlsZXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNiBAQCBF
TkFCTEVfRU5DUllQVEVEX01FRElBX1YyX21hY29zeCA9ICQoRU5BCiBFTkFCTEVfRU5DUllQVEVE
X01FRElBX1YyX21hY29zeF8xMDcwID0gOwogRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNv
c3hfMTA4MCA9IDsKIEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjJfbWFjb3N4XzEwOTAgPSBFTkFC
TEVfRU5DUllQVEVEX01FRElBX1YyOwotRU5BQkxFX0ZJTEVfU1lTVEVNID0gOwogRU5BQkxFX0ZJ
TFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GT05UX0xPQURfRVZFTlRTID0gOwogRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJID0gJChFTkFCTEVfRlVMTFNDUkVFTl9BUElfJChQTEFURk9STV9O
QU1FKSk7CkBAIC0xODcsNCArMTg2LDQgQEAgRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAog
RU5BQkxFX0ZUTF9KSVQgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVO
QUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9D
QU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVY
VCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9T
SVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xV
U0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykg
JChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTU19T
VElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVG
SVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9S
VUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykg
JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExF
UikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQp
ICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkg
JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAk
KEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lP
TikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIp
ICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xP
QURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChF
TkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRM
SU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChF
TkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQo
RU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhF
UykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1Jf
UFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVU
Q0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVO
QUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01F
VEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUp
ICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05T
KSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAk
KEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5U
KSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVf
UFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1ND
UklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChF
TkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19GT05UUykg
JChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVO
QUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUikgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAk
KEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RS
QUNLKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFC
TEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQo
RU5BQkxFX0ZUTF9KSVQpICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOworRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykg
JChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09S
QVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklD
RV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRF
UlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JF
U09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChF
TkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVf
Q1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFC
TEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQp
ICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElU
WSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9J
VEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNU
UlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVE
SUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFCTEVfRklMVEVSUykgJChFTkFC
TEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dB
TUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElN
RVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFU
QUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFT
RSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVU
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5E
T1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdB
Q1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAk
KEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VS
U09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lU
X1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JF
U1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMp
ICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAk
KEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NI
QVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFU
QUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJ
WklORykgJChFTkFCTEVfVEhSRUFERURfSFRNTF9QQVJTRVIpICQoRU5BQkxFX1RPVUNIX0lDT05f
TE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9WSURFT19UUkFDSykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VC
R0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dF
Ql9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJM
RV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05B
TUUpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQwLDE0ICs2NDAsNiBAQCB2b2lkIFdlYlBhZ2VQcml2YXRl
Ojppbml0KGNvbnN0IEJsYWNrQmVyCiAgICAgbV9wYWdlLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uo
KFBsYXRmb3JtRGlzcGxheUlEKTApOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0gICAgc3RhdGljIGJvb2wgbG9jYWxGaWxlU3lzdGVtSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAg
ICBpZiAoIWxvY2FsRmlsZVN5c3RlbUluaXRpYWxpemVkKSB7Ci0gICAgICAgIGxvY2FsRmlsZVN5
c3RlbUluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgV2ViQ29yZTo6TG9jYWxGaWxlU3lzdGVt
Ojppbml0aWFsaXplTG9jYWxGaWxlU3lzdGVtKCIvIik7Ci0gICAgfQotI2VuZGlmCi0KICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gVGhlIGNvbXBvc2l0b3Igd2lsbCBi
ZSBuZWVkZWQgZm9yIG92ZXJsYXkgcmVuZGVyaW5nLCBzbyBjcmVhdGUgaXQKICAgICAvLyB1bmNv
bmRpdGlvbmFsbHkuIEl0IHdpbGwgYWxsb2NhdGUgT3BlbkdMIG9iamVjdHMgbGF6aWx5LCBzbyB0
aGlzIGluY3VycwpAQCAtNDg1Niw5ICs0ODQ4LDYgQEAgdm9pZCBXZWJQYWdlOjpjbGVhck5ldmVy
UmVtZW1iZXJTaXRlcygpCiAKIHZvaWQgV2ViUGFnZTo6Y2xlYXJXZWJGaWxlU3lzdGVtKCkKIHsK
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgUGxhdGZvcm06OldlYkZpbGVTeXN0ZW06OmRl
bGV0ZUFsbEZpbGVTeXN0ZW1zKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlOjpjbGVhckNh
Y2hlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91
dERhdGFFbmFibGVGZWF0dXJlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuaW4JKHJldmlzaW9u
IDE1NjY5MSkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91
dERhdGFFbmFibGVGZWF0dXJlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNiBAQCBF
WEVDVVRBQkxFX0FMTE9DQVRPUl9GSVhFRAogRVhQRVJJTUVOVEFMX0ZFQVRVUkUKIEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04KIEZBU1RfTU9CSUxFX1NDUk9MTElORwotRklMRV9TWVNURU0K
IEZJTFRFUlMKIEZJWEVEX1JFUE9SVEVEX1NJWkUKIEZPTlRfTE9BRF9FVkVOVFMKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxNTY2OTEpCisrKyBT
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUxLDExICszNTEsNyBAQCBjb25zdCBjaGFyKiBld2tfc2V0dGluZ3NfZGVmYXVsdF91c2VyX2Fn
CiAgKi8KIHZvaWQgZXdrX3NldHRpbmdzX2ZpbGVfc3lzdGVtX3BhdGhfc2V0KGNvbnN0IGNoYXIq
IHBhdGgpCiB7Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIFdlYkNvcmU6OkxvY2FsRmls
ZVN5c3RlbTo6aW5pdGlhbGl6ZUxvY2FsRmlsZVN5c3RlbShTdHJpbmc6OmZyb21VVEY4KHBhdGgp
KTsKLSNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhdGgpOwotI2VuZGlmCiB9CiAKIHZvaWQgZXdr
X3NldHRpbmdzX2FwcGxpY2F0aW9uX2NhY2hlX3BhdGhfc2V0KGNvbnN0IGNoYXIqIHBhdGgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gMTU2NjkxKQorKysgU291cmNlL1dlYktpdC9t
YWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDcgKzgyLDYgQEAgRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3ggPSAkKEVO
QQogRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMl9tYWNvc3hfMTA3MCA9IDsKIEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjJfbWFjb3N4XzEwODAgPSA7CiBFTkFCTEVfRU5DUllQVEVEX01FRElBX1Yy
X21hY29zeF8xMDkwID0gRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMjsKLUVOQUJMRV9GSUxFX1NZ
U1RFTSA9IDsKIEVOQUJMRV9GSUxURVJTID0gRU5BQkxFX0ZJTFRFUlM7CiBFTkFCTEVfRk9OVF9M
T0FEX0VWRU5UUyA9IDsKIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSA9ICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJXyQoUExBVEZPUk1fTkFNRSkpOwpAQCAtMTg3LDQgKzE4Niw0IEBAIEVOQUJMRV9YU0xU
ID0gRU5BQkxFX1hTTFQ7CiAKIEVOQUJMRV9GVExfSklUID0gOwogCi1GRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5W
QVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykg
JChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04p
ICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVf
Q1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChF
TkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfU0hB
UEVTKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JN
U19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxF
X0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NT
M19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9D
VVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJM
RV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJM
RV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVf
RElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5B
QkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVf
RU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRklMVEVS
UykgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQo
RU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFH
RV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFTKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVS
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVf
SU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lOUFVU
X1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVO
QUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAk
KEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FRElBX0NP
TlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9NRURJQV9TVEFU
SVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVf
TU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChF
TkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSkgJChFTkFC
TEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTykgJChFTkFC
TEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxFX1BST1hJTUlU
WV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVfUVVPVEEpICQo
RU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElB
X1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQo
RU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJM
RV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1ZHKSAk
KEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RF
WFRfQVVUT1NJWklORykgJChFTkFCTEVfVEhSRUFERURfSFRNTF9QQVJTRVIpICQoRU5BQkxFX1RP
VUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChF
TkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQo
RU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VU
KSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBM
QVRGT1JNX05BTUUpKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykg
JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9D
QUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNf
UFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChF
TkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcp
ICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMp
ICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFC
TEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTU19TVElDS1lf
UE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkg
JChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJM
RV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTikgJChF
TkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZB
UykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9T
UEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09M
T1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5B
QkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dF
Ql9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVf
TUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwp
ICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRf
VVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklE
RU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJM
RV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxF
X1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVTT0xV
VElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFE
T1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJ
UykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAk
KEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSKSAk
KEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVO
QUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1Nf
TUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9T
T0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9Y
SFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChGRUFUVVJFX0RF
RklORVNfJChQTEFURk9STV9OQU1FKSk7CkluZGV4OiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2Vi
S2l0RmVhdHVyZXMubTQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9TZXR1cFdlYktp
dEZlYXR1cmVzLm00CShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvYXV0b3Rvb2xzL1NldHVw
V2ViS2l0RmVhdHVyZXMubTQJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNiBAQCAkc3Jj
ZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0dXJlLWRlZmluCiAgICAgRU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQ9MCBcCiAgICAgRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPTAgXAogICAg
IEVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEU9MCBcCi0gICAgRU5BQkxFX0ZJTEVfU1lTVEVNPTAg
XAogICAgIEVOQUJMRV9GSUxURVJTPTEgXAogICAgIEVOQUJMRV9GVFBESVI9MCBcCiAgICAgRU5B
QkxFX0ZPTlRfTE9BRF9FVkVOVFM9MCBcCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0JsYWNr
QmVycnkuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNCbGFja0JlcnJ5
LmNtYWtlCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0JsYWNrQmVy
cnkuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNiBAQCBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfRFJBR19TVVBQT1JUIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfRkFTVF9NT0JJTEVfU0NST0xMSU5HIE9OKQotV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZJTEVfU1lTVEVNIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZJTFRFUlMgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlVMTFNDUkVFTl9BUEkgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0VPTE9DQVRJT04gT04pCkluZGV4OiBTb3Vy
Y2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtl
L1dlYktpdEZlYXR1cmVzLmNtYWtlCShyZXZpc2lvbiAxNTY2OTEpCisrKyBTb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAgbWFj
cm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
RE9XTkxPQURfQVRUUklCVVRFICJUb2dnbGUgZG93bmxvYWQgYXR0cmlidXRlIHN1cHBvcnQiIE9G
RikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRFJBR19TVVBQT1JUICJUb2dnbGUg
RHJhZyBTdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZBU1Rf
TU9CSUxFX1NDUk9MTElORyAiVG9nZ2xlIEZhc3QgTW9iaWxlIFNjcm9sbGluZyBzdXBwb3J0IiBP
RkYpCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZJTEVfU1lTVEVNICJUb2dnbGUg
RmlsZVN5c3RlbSBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0ZJTFRFUlMgIlRvZ2dsZSBTVkcgRmlsdGVycyBzdXBwb3J0IiBPRkYpCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMgIlRvZ2dsZSBGb250IExvYWQgRXZl
bnRzIHN1cHBvcnQiIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRlRQRElS
ICJUb2dnbGUgRlRQIGRpcmVjdG9yeSBzdXBwb3J0IiBPTikKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjY5MSkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA5LTE5
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgY2hlY2std2Via2l0LXN0
eWxlIHNob3VsZCBub3Qgd2FybiBhYm91dCB1c2Ugb2YgQysrMTEg4oCcPj7igJ0gIGluc3RlYWQg
b2Yg4oCcPiA+IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE2NDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weToKKwogMjAxMy0w
OS0zMCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgYnVpbGQg
Zml4YWdlIGZvciBidWlsZHMgd2l0aCBTREtzLgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbQkocmV2aXNpb24gMTU2NjkxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL0ZlYXR1cmVMaXN0LnBtCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw2IEBAIG15
ICgKICAgICAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCwKICAgICAkZG9tNEV2ZW50c0NvbnN0cnVj
dG9yLAogICAgICRkb3dubG9hZEF0dHJpYnV0ZVN1cHBvcnQsCi0gICAgJGZpbGVTeXN0ZW1TdXBw
b3J0LAogICAgICRmaWx0ZXJzU3VwcG9ydCwKICAgICAkZm9udExvYWRFdmVudHNTdXBwb3J0LAog
ICAgICRmdHBEaXJTdXBwb3J0LApAQCAtMjU3LDkgKzI1Niw2IEBAIG15IEBmZWF0dXJlcyA9ICgK
ICAgICB7IG9wdGlvbiA9PiAiZG93bmxvYWQtYXR0cmlidXRlIiwgZGVzYyA9PiAiVG9nZ2xlIERv
d25sb2FkIEF0dHJpYnV0ZSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0RPV05M
T0FEX0FUVFJJQlVURSIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2
YWx1ZSA9PiBcJGRvd25sb2FkQXR0cmlidXRlU3VwcG9ydCB9LAogCi0gICAgeyBvcHRpb24gPT4g
ImZpbGUtc3lzdGVtIiwgZGVzYyA9PiAiVG9nZ2xlIEZpbGUgU3lzdGVtIHN1cHBvcnQiLAotICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfRklMRV9TWVNURU0iLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJy
eSgpLCB2YWx1ZSA9PiBcJGZpbGVTeXN0ZW1TdXBwb3J0IH0sCi0KICAgICB7IG9wdGlvbiA9PiAi
ZmlsdGVycyIsIGRlc2MgPT4gIlRvZ2dsZSBGaWx0ZXJzIHN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfRklMVEVSUyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0
aygpIHx8IGlzRWZsKCkgfHwgaXNCbGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJGZpbHRlcnNTdXBw
b3J0IH0sCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y3BwLnB5CShyZXZpc2lvbiAxNTY2OTEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcC5weQkod29ya2luZyBjb3B5KQpAQCAtMTgzMSwxMCArMTgzMSwxMCBAQCBk
ZWYgY2hlY2tfc3BhY2luZyhmaWxlX2V4dGVuc2lvbiwgY2xlYW5fCiAgICAgIyBGSVhNRTogSXQn
cyBub3Qgb2sgdG8gaGF2ZSBzcGFjZXMgYXJvdW5kIGJpbmFyeSBvcGVyYXRvcnMgbGlrZSAuCiAK
ICAgICAjIFlvdSBzaG91bGQgYWx3YXlzIGhhdmUgd2hpdGVzcGFjZSBhcm91bmQgYmluYXJ5IG9w
ZXJhdG9ycy4KLSAgICAjIEFsYXMsIHdlIGNhbid0IHRlc3QgPCBvciA+IGJlY2F1c2UgdGhleSdy
ZSBsZWdpdGltYXRlbHkgdXNlZCBzYW5zIHNwYWNlcworICAgICMgQWxhcywgd2UgY2FuJ3QgdGVz
dCA8LCA+LCA8PCwgb3IgPj4gYmVjYXVzZSB0aGV5J3JlIGxlZ2l0aW1hdGVseSB1c2VkIHNhbnMg
c3BhY2VzCiAgICAgIyAoYS0+YiwgdmVjdG9yPGludD4gYSkuICBUaGUgb25seSB0aW1lIHdlIGNh
biB0ZWxsIGlzIGEgPCB3aXRoIG5vID4sIGFuZAogICAgICMgb25seSBpZiBpdCdzIG5vdCB0ZW1w
bGF0ZSBwYXJhbXMgbGlzdCBzcGlsbGluZyBpbnRvIHRoZSBuZXh0IGxpbmUuCi0gICAgbWF0Y2hl
ZCA9IHNlYXJjaChyJ1tePD49IVxzXSg9PXwhPXxcKz18LT18XCo9fC89fC98XHw9fCY9fDw8PXw+
Pj18PD18Pj18XHxcfHxcfHwmJnw+Pnw8PClbXjw+PSFcc10nLCBsaW5lKQorICAgIG1hdGNoZWQg
PSBzZWFyY2gocidbXjw+PSFcc10oPT18IT18XCs9fC09fFwqPXwvPXwvfFx8PXwmPXw8PD18Pj49
fDw9fD49fFx8XHx8XHx8JiYpW148Pj0hXHNdJywgbGluZSkKICAgICBpZiBub3QgbWF0Y2hlZDoK
ICAgICAgICAgIyBOb3RlIHRoYXQgd2hpbGUgaXQgc2VlbXMgdGhhdCB0aGUgJzxbXjxdKicgdGVy
bSBpbiB0aGUgZm9sbG93aW5nCiAgICAgICAgICMgcmVnZXhwIGNvdWxkIGJlIHNpbXBsaWZpZWQg
dG8gJzwuKicsIHdoaWNoIHdvdWxkIGluZGVlZCBtYXRjaApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDE1NjY5MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNzM4LDkgKzE3MzgsNyBAQCBjbGFzcyBD
cHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2E8Rm9vKj4gdCA8PD0gJmIgJiAmYzsgLy8gVGVzdCcsICcnKQogICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdhPEZvbyo+IHQgPDw9ICpiIC8gJmM7IC8vIFRlc3QnLCAnJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnaWYgKGE9YiA9PSAxKScsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPSAg
W3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdh
ID0gMTw8MjAnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDw8ICBbd2hpdGVzcGFjZS9vcGVyYXRv
cnNdIFszXScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChhID0gYiA9PSAxKScsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdhID0gMSA8PCAyMCcsICcnKQogICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoJyNpbmNsdWRlIDxzeXMvaW8uaD5cbicsICcnKQog
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoJyNpbXBvcnQgPGZvby9iYXIuaD5c
bicsICcnKQogCkluZGV4OiBUb29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnBy
aQkocmV2aXNpb24gMTU2NjkxKQorKysgVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0
dXJlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAgRkVBVFVSRV9ERUZBVUxU
UyA9IFwKICAgICBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I9MCBcCiAgICAgRU5BQkxF
X0RPV05MT0FEX0FUVFJJQlVURT0wIFwKICAgICBFTkFCTEVfRkFTVF9NT0JJTEVfU0NST0xMSU5H
PTEgXAotICAgIEVOQUJMRV9GSUxFX1NZU1RFTT0wIFwKICAgICBFTkFCTEVfRklMVEVSUz0xIFwK
ICAgICBFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUz0wIFwKICAgICBFTkFCTEVfRlRMX0pJVD0wIFwK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vYXN5bmMt
b3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwxNiArMCwwIEBACi1UZXN0IG1ha2luZyBtdWx0aXBsZSBhc3luYyBGaWxlU3lz
dGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1yZXF1ZXN0
ZWQgRmlsZVN5c3RlbS4KLUdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1TdGFydGlu
ZyBhc3luYyB0ZXN0IHN0YWdlIDEuCi1TdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCi1WZXJp
ZnlpbmcgdGhlIEZpbGVTeXN0ZW0gc3RhdHVzLgotUEFTUyAiL2EsL2IsL2MsL2QyLC9lLC9mIiBp
cyAiL2EsL2IsL2MsL2QyLC9lLC9mIgotUEFTUyBkaXJzQ291bnQgaXMgMwotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
Y3Jvc3MtZmlsZXN5c3RlbS1vcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2Nyb3NzLWZpbGVzeXN0ZW0tb3AtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5
c3RlbS1vcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotVGhp
cyB0ZXN0cyBiYXNpYyBjcm9zcy1maWxlc3lzdGVtIG9wZXJhdGlvbnMuCi1Ecm9wIGZpbGVzIGhl
cmUgaWYgeW91IHRlc3QgdGhpcyBtYW51YWxseQotVmVyaWZ5aW5nIGNvbnRlbnRzIG9mIERhdGFU
cmFuc2Zlckl0ZW1zLi4uCi1QQVNTOiAiMSIgPT0gIjEiCi1QQVNTOiAiZmlsZSIgPT0gImZpbGUi
Ci1QQVNTOiAidHJ1ZSIgPT0gInRydWUiCi1TdWNjZXNzZnVsbHkgc2V0dXAgdGVzdCBlbnZpcm9u
bWVudC4KLWZpbGVfXzA6VGVtcG9yYXJ5OiByZXNldCAvdGVzdAotVGVzdGluZyBjb3B5VG8gYXBw
bGUuZ2lmOiAvcmVzb3VyY2VzID0+IC90ZXN0Ci1QQVNTOiAiYXBwbGUuZ2lmIiA9PSAiYXBwbGUu
Z2lmIgotUEFTUzogIjE0NzYiID09ICIxNDc2IgotVGVzdGluZyBjb3B5VG8gbW96aWxsYS5naWY6
IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJtb3ppbGxhLmdpZiIgPT0gIm1vemlsbGEuZ2lm
IgotUEFTUzogIjI1OTMiID09ICIyNTkzIgotVGVzdGluZyBjb3B5VG8gZHJvcC1maWxlLXN2Zy5z
dmc6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJkcm9wLWZpbGUtc3ZnLnN2ZyIgPT0gImRy
b3AtZmlsZS1zdmcuc3ZnIgotUEFTUzogIjEwOSIgPT0gIjEwOSIKLVRlc3RpbmcgY29weVRvIGNv
cHktYmFja3NsYXNoLWV1Yy5odG1sOiAvcmVzb3VyY2VzID0+IC90ZXN0Ci1QQVNTOiAiY29weS1i
YWNrc2xhc2gtZXVjLmh0bWwiID09ICJjb3B5LWJhY2tzbGFzaC1ldWMuaHRtbCIKLVBBU1M6ICI0
NzgiID09ICI0NzgiCi1UZXN0aW5nIGNvcHlUbyB0ZXN0X2RpcmVjdG9yeS90ZXN0LnR4dDogL3Jl
c291cmNlcyA9PiAvdGVzdAotUEFTUzogInRlc3QudHh0IiA9PSAidGVzdC50eHQiCi1QQVNTOiAi
MTMiID09ICIxMyIKLWZpbGVfXzA6VGVtcG9yYXJ5OiByZXNldCAvdGVzdAotVGVzdGluZyBjb3B5
VG8gbW96aWxsYS5naWY6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJtb3ppbGxhLmdpZiIg
PT0gIm1vemlsbGEuZ2lmIgotUEFTUzogIjI1OTMiID09ICIyNTkzIgotVGVzdGluZyBjb3B5VG8g
ZHJvcC1maWxlLXN2Zy5zdmc6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJkcm9wLWZpbGUt
c3ZnLnN2ZyIgPT0gImRyb3AtZmlsZS1zdmcuc3ZnIgotUEFTUzogIjEwOSIgPT0gIjEwOSIKLVRl
c3RpbmcgY29weVRvIGNvcHktYmFja3NsYXNoLWV1Yy5odG1sOiAvcmVzb3VyY2VzID0+IC90ZXN0
Ci1QQVNTOiAiY29weS1iYWNrc2xhc2gtZXVjLmh0bWwiID09ICJjb3B5LWJhY2tzbGFzaC1ldWMu
aHRtbCIKLVBBU1M6ICI0NzgiID09ICI0NzgiCi1UZXN0aW5nIGNvcHlUbyB0ZXN0X2RpcmVjdG9y
eS90ZXN0LnR4dDogL3Jlc291cmNlcyA9PiAvdGVzdAotUEFTUzogInRlc3QudHh0IiA9PSAidGVz
dC50eHQiCi1QQVNTOiAiMTMiID09ICIxMyIKLVN1Y2Nlc3NmdWxseSByYW4gMiB0ZXN0cy4KLUNs
ZWFudXAgZG9uZS4KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Nyb3NzLWZp
bGVzeXN0ZW0tb3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDI2NCArMCwwIEBACi08aHRtbD4KLTxib2R5PgotPGRpdj5UaGlzIHRlc3RzIGJh
c2ljIGNyb3NzLWZpbGVzeXN0ZW0gb3BlcmF0aW9ucy48L2Rpdj4KLQotPGRpdiBpZD0iZGVzdGlu
YXRpb24iIHN0eWxlPSJtaW4taGVpZ2h0OjEwMHB4OyBib3JkZXI6IHNvbGlkIDFweCBibGFjayI+
RHJvcCBmaWxlcyBoZXJlIGlmIHlvdSB0ZXN0IHRoaXMgbWFudWFsbHk8L2Rpdj4KLQotPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgbWV0aG9kcyA9IFsgJ2NvcHlUbycs
ICdtb3ZlVG8nIF07Ci12YXIgc291cmNlVGVzdERpcmVjdG9yeSwgZGVzdFRlc3REaXJlY3Rvcnk7
Ci0KLXZhciBkZXN0RGlyZWN0b3J5UGF0aCA9ICcvdGVzdCc7Ci12YXIgc291cmNlRGlyZWN0b3J5
UGF0aCA9ICcuLi8uLi9lZGl0aW5nL3Bhc3RlYm9hcmQvcmVzb3VyY2VzJzsKLQotLy8gQWN0dWFs
IGZpbGVzIGluIHRoZSBzb3VyY2VEaXJlY3RvcnlQYXRoLgotdmFyIHRlc3RGaWxlcyA9IFsKLSAg
ICB7IHBhdGg6J2FwcGxlLmdpZicgfSwKLSAgICB7IHBhdGg6J21vemlsbGEuZ2lmJyB9LAotICAg
IHsgcGF0aDonZHJvcC1maWxlLXN2Zy5zdmcnIH0sCi0gICAgeyBwYXRoOidjb3B5LWJhY2tzbGFz
aC1ldWMuaHRtbCcgfSwKLSAgICB7IHBhdGg6J3Rlc3RfZGlyZWN0b3J5JywgZGlyZWN0b3J5OnRy
dWUgfSwKLSAgICB7IHBhdGg6J3Rlc3RfZGlyZWN0b3J5L3Rlc3QudHh0JyB9Ci1dOwotCi0vLyBO
b3RlOiBmb3Igbm93IHdlIGRvbid0IHJ1biBtb3ZlVG8gdGVzdCBzaW5jZSBkcmFnLWFuZC1kcm9w
IGlzb2xhdGVkCi0vLyBmaWxlc3lzdGVtLCB3aGljaCB3ZSB1c2UgZm9yIHNvdXJjZSBmaWxlc3lz
dGVtLCBpcyByZWFkLW9ubHkuCi0vLyBGSVhNRTogYWxsb3cgd3JpdGluZyB0byBQRVJTSVNURU5U
IGZpbGVzeXN0ZW0gd2l0aG91dCBxdW90YSBlcnJvciBpbgotLy8gRHVtcFJlbmRlclRyZWUgc28g
dGhhdCB3ZSBjYW4gdGVzdCBURU1QT1JBUlkgPC0+IFBFUlNJU1RFTlQgY3Jvc3Mgb3BlcmF0aW9u
Ci0vLyBjaGVja3MuCi12YXIgdGVzdHMgPSBbCi0gICAgdGVzdENvcHlGaWxlLAotICAgIHRlc3RD
b3B5RGlyZWN0b3J5LAotXTsKLQotZnVuY3Rpb24gbG9nKHRleHQpCi17Ci0gICAgdmFyIGNvbnNv
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwotICAgIGNvbnNvbGUuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOwotICAgIGNvbnNvbGUuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3QoZXhwZWN0LCBhY3R1YWwpCi17Ci0gICAgbG9nKChleHBlY3QgPT0gYWN0dWFsID8gJ1BBU1Mn
IDogJ0ZBSUwnKSArICc6ICInICsgZXhwZWN0ICsgJyIgPT0gIicgKyBhY3R1YWwgKyAnIicpOwot
fQotCi0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2sobXNnKQotewotICAgIHJldHVybiBmdW5jdGlv
bihlKSB7Ci0gICAgICAgIGNvbnNvbGUubG9nKGUpOwotICAgICAgICBsb2coJ0VSUk9SOicgKyBt
c2cgKyAnOiAnICsgZS5jb2RlKTsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24g
c2V0dXBEZXN0RmlsZVN5c3RlbShzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICB3ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbSh3aW5kb3cuVEVNUE9SQVJZLCAxMDI0LCBmdW5jdGlvbiAoZnMpIHsKLSAgICAg
ICAgZnMucm9vdC5nZXREaXJlY3RvcnkoCi0gICAgICAgICAgICBkZXN0RGlyZWN0b3J5UGF0aCwK
LSAgICAgICAgICAgIHtjcmVhdGU6dHJ1ZX0sCi0gICAgICAgICAgICBmdW5jdGlvbiAoZW50cnkp
IHsKLSAgICAgICAgICAgICAgICBkZXN0VGVzdERpcmVjdG9yeSA9IGVudHJ5OwotICAgICAgICAg
ICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVy
cm9yQ2FsbGJhY2soJ2Rlc3Q6IGNyZWF0ZURpcmVjdG9yeSgnICsgZGVzdERpcmVjdG9yeVBhdGgg
KyAnKScpKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKCdkZXN0OiByZXF1ZXN0RmlsZVN5c3RlbSBm
b3IgUEVSU0lTVEVOVCcpKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdHMoaW5kZXgsIHN1Y2Nlc3ND
YWxsYmFjaykgewotICAgIGlmIChpbmRleCA+PSB0ZXN0cy5sZW5ndGgpIHsKLSAgICAgICAgc3Vj
Y2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIG5leHQgPSBm
dW5jdGlvbigpIHsgcnVuVGVzdHMoaW5kZXggKyAxLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAg
IHJlc2V0RGlyZWN0b3J5KGRlc3RUZXN0RGlyZWN0b3J5LCBmdW5jdGlvbigpIHsgdGVzdHNbaW5k
ZXhdKG5leHQpOyB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdENvcHlGaWxlKHN1Y2Nlc3NDYWxsYmFj
aykgewotICAgIHRlc3RPbkZpbGUoMCwgJ2NvcHlUbycsIHN1Y2Nlc3NDYWxsYmFjayk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3RDb3B5RGlyZWN0b3J5KHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIHRlc3RP
bkRpcmVjdG9yeSgwLCAnY29weVRvJywgc3VjY2Vzc0NhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24g
dGVzdE9uRmlsZShpbmRleCwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICBpZiAoaW5k
ZXggPj0gdGVzdEZpbGVzLmxlbmd0aCkgewotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgbmV4dCA9IGZ1bmN0aW9uKCkgeyB0ZXN0T25G
aWxlKGluZGV4ICsgMSwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIGlmICh0ZXN0
RmlsZXNbaW5kZXhdLmRpcmVjdG9yeSkgewotICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgdmFyIGZpbGUgPSB0ZXN0RmlsZXNbaW5kZXhdOwotICAgIGxvZygnVGVz
dGluZyAnICsgbWV0aG9kICsgJyAnICsgZmlsZS5wYXRoICsgJzogJyArIHNvdXJjZVRlc3REaXJl
Y3RvcnkuZnVsbFBhdGggKyAnID0+ICcgKyBkZXN0VGVzdERpcmVjdG9yeS5mdWxsUGF0aCk7Ci0g
ICAgc291cmNlVGVzdERpcmVjdG9yeS5nZXRGaWxlKAotICAgICAgICBmaWxlLnBhdGgsIHtjcmVh
dGU6ZmFsc2V9LCBmdW5jdGlvbihzb3VyY2UpIHsKLSAgICAgICAgICAgIHNvdXJjZVttZXRob2Rd
KGRlc3RUZXN0RGlyZWN0b3J5LCAnJywgZnVuY3Rpb24oZGVzdCkgewotICAgICAgICAgICAgICAg
IHZlcmlmeUZpbGUoc291cmNlLCBkZXN0LCBuZXh0KTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2Fs
bGJhY2soJ3Rlc3RPbkZpbGU6ICcgKyBtZXRob2QgKyAnOicgKyBmaWxlLnBhdGgpKTsKLSAgICAg
ICAgfSwgZXJyb3JDYWxsYmFjaygndGVzdE9uRmlsZTogZ2V0RmlsZTonICsgZmlsZS5wYXRoKSk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPbkRpcmVjdG9yeShpbmRleCwgbWV0aG9kLCBzdWNjZXNzQ2Fs
bGJhY2spIHsKLSAgICBpZiAoaW5kZXggPj0gdGVzdEZpbGVzLmxlbmd0aCkgewotICAgICAgICBz
dWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgbmV4dCA9
IGZ1bmN0aW9uKCkgeyB0ZXN0T25GaWxlKGluZGV4ICsgMSwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJh
Y2spOyB9OwotICAgIGlmICghdGVzdEZpbGVzW2luZGV4XS5kaXJlY3RvcnkpIHsKLSAgICAgICAg
bmV4dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHZhciBmaWxlID0gdGVzdEZpbGVz
W2luZGV4XTsKLSAgICBsb2coJ1Rlc3RpbmcgJyArIG1ldGhvZCArICcgJyArIGZpbGUucGF0aCAr
ICc6ICcgKyBzb3VyY2VUZXN0RGlyZWN0b3J5LmZ1bGxQYXRoICsgJyA9PiAnICsgZGVzdFRlc3RE
aXJlY3RvcnkuZnVsbFBhdGgpOwotICAgIHNvdXJjZVRlc3REaXJlY3RvcnkuZ2V0RGlyZWN0b3J5
KAotICAgICAgICBmaWxlLnBhdGgsIHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlvbihzb3VyY2UpIHsK
LSAgICAgICAgICAgIHNvdXJjZVttZXRob2RdKGRlc3RUZXN0RGlyZWN0b3J5LCAnJywgZnVuY3Rp
b24oZGVzdCkgewotICAgICAgICAgICAgICAgIHZlcmlmeUZpbGUoc291cmNlLCBkZXN0LCBuZXh0
KTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2soJ3Rlc3RPbkRpcmVjdG9yeTogJyArIG1l
dGhvZCArICc6JyArIGZpbGUucGF0aCkpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKCd0ZXN0
T25EaXJlY3Rvcnk6IGdldERpcmVjdG9yeTonICsgZmlsZS5wYXRoKSk7Ci19Ci0KLWZ1bmN0aW9u
IHZlcmlmeUZpbGUoc291cmNlLCBkZXN0LCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICB0ZXN0KHNv
dXJjZS5uYW1lLCBkZXN0Lm5hbWUpOwotICAgIHNvdXJjZS5nZXRNZXRhZGF0YShmdW5jdGlvbihz
b3VyY2VNZXRhZGF0YSkgewotICAgICAgICB2YXIgZXhwZWN0ZWRTaXplID0gc291cmNlTWV0YWRh
dGEuc2l6ZTsKLSAgICAgICAgZGVzdC5nZXRNZXRhZGF0YShmdW5jdGlvbihkZXN0TWV0YWRhdGEp
IHsKLSAgICAgICAgICAgIHRlc3QoZXhwZWN0ZWRTaXplLCBkZXN0TWV0YWRhdGEuc2l6ZSk7Ci0g
ICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFjaygn
Z2V0TWV0YWRhdGE6JyArIGRlc3QuZnVsbFBhdGgpKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKCdn
ZXRNZXRhZGF0YTonICsgc291cmNlLmZ1bGxQYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeURp
cmVjdG9yeShzb3VyY2UsIGRlc3QsIHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIGdldERpcmVjdG9y
eUVudHJpZXMoc291cmNlLCBmdW5jdGlvbihzb3VyY2VFbnRyaWVzKSB7Ci0gICAgICAgIGdldERp
cmVjdG9yeUVudHJpZXMoZGVzdCwgZnVuY3Rpb24oZGVzdEVudHJpZXMpIHsKLSAgICAgICAgICAg
IHNvdXJjZUVudHJpZXMuc29ydCgpOwotICAgICAgICAgICAgZGVzdEVudHJpZXMuc29ydCgpOwot
ICAgICAgICAgICAgdGVzdChzb3VyY2VFbnRyaWVzLmxlbmd0aCwgZGVzdEVudHJpZXMubGVuZ3Ro
KTsKLSAgICAgICAgICAgIHZhciB2ZXJpZnlPbmUgPSBmdW5jdGlvbihpbmRleCkgewotICAgICAg
ICAgICAgICAgIHZlcmlmeUZpbGUoc291cmNlRW50cmllc1tpbmRleF0sIGRlc3RFbnRyaWVzW2lu
ZGV4XSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBzb3Vy
Y2VFbnRyaWVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdmVyaWZ5T25lKGluZGV4ICsgMSk7Ci0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdmVyaWZ5T25lKDApOwot
ICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZ2V0RGlyZWN0b3J5RW50cmllcyhl
bnRyeSwgZW50cmllc0NhbGxiYWNrKSB7Ci0gICAgdmFyIGFsbEVudHJpZXMgPSBbXTsKLSAgICB2
YXIgYWRkRW50cmllcyA9IGZ1bmN0aW9uKGVudHJpZXMsIGNvbnRpbnVlQ2FsbGJhY2spIHsKLSAg
ICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgIGVudHJpZXNDYWxs
YmFjayhhbGxFbnRyaWVzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBhbGxFbnRyaWVzLmNvbmNhdChlbnRyaWVzKTsKLSAgICAgICAgaWYgKGVudHJpZXMubGVuZ3Ro
ICE9IDApIGNvbnRpbnVlQ2FsbGJhY2soKTsKLSAgICB9OwotICAgIHZhciBlbnRyaWVzQ2FsbGJh
Y2sgPSBmdW5jdGlvbihlbnRyaWVzKSB7Ci0gICAgICAgIGFkZEVudHJpZXMoZW50cmllcywgc3Vj
Y2Vzc0NhbGxiYWNrLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJlYWRlci5yZWFkRGlyZWN0
b3J5KGVudHJpZXNDYWxsYmFjayk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0gICAgdmFyIHJlYWRl
ciA9IGVudHJ5LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRGlyZWN0b3J5KGVudHJp
ZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjaygncmVhZERpcmVjdG9yeTogJyArIGVudHJ5LmZ1bGxQ
YXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXBEaXJlY3RvcnkoZGlyZWN0b3J5LCBzdWNjZXNz
Q2FsbGJhY2spIHsKLSAgICBkaXJlY3RvcnkucmVtb3ZlUmVjdXJzaXZlbHkoCi0gICAgICAgIHN1
Y2Nlc3NDYWxsYmFjaywKLSAgICAgICAgZXJyb3JDYWxsYmFjaygncmVtb3ZlUmVjdXJzaXZlbHk6
JyArIGRpcmVjdG9yeS5mdWxsUGF0aCkpOwotfQotCi1mdW5jdGlvbiByZXNldERpcmVjdG9yeShk
aXJlY3RvcnksIHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIHZhciBmcyA9IGRpcmVjdG9yeS5maWxl
c3lzdGVtOwotICAgIHZhciBwYXRoID0gZGlyZWN0b3J5LmZ1bGxQYXRoOwotICAgIGNsZWFudXBE
aXJlY3RvcnkoZGlyZWN0b3J5LCBmdW5jdGlvbigpIHsKLSAgICAgICAgZnMucm9vdC5nZXREaXJl
Y3RvcnkocGF0aCwge2NyZWF0ZTp0cnVlfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coZnMubmFt
ZSArICc6IHJlc2V0ICcgKyBwYXRoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGVycm9y
Q2FsbGJhY2soJ2dldERpcmVjdG9yeShjcmVhdGUpOicgKyBwYXRoKSk7Ci0gICAgfSk7Ci19Ci0K
LWZ1bmN0aW9uIHNldHVwRmlsZXMocm9vdCwgaW5kZXgsIHN1Y2Nlc3NDYWxsYmFjaykKLXsKLSAg
ICBpZiAoaW5kZXggPj0gdGVzdEZpbGVzLmxlbmd0aCkgewotICAgICAgICBzdWNjZXNzQ2FsbGJh
Y2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgZmlsZSA9IHRlc3RGaWxlc1tp
bmRleF07Ci0gICAgdmFyIG1zZyA9ICdjcmVhdGUgdGVzdEZpbGVzWycgKyBpbmRleCArICddOiAn
ICsgZmlsZS5wYXRoOwotICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KSB7IHNldHVw
RmlsZXMocm9vdCwgaW5kZXggKyAxLCBzdWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIGlmIChmaWxl
LmRpcmVjdG9yeSkgewotICAgICAgICByb290LmdldERpcmVjdG9yeShkZXN0RGlyZWN0b3J5UGF0
aCArICcvJyArIGZpbGUucGF0aCwge2NyZWF0ZTp0cnVlfSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2sobXNnKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByb290LmdldEZpbGUoZmls
ZS5wYXRoLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICBlbnRyeS5j
cmVhdGVXcml0ZXIoZnVuY3Rpb24gKHdyaXRlcikgewotICAgICAgICAgICAgd3JpdGVyLnRydW5j
YXRlKGZpbGUuc2l6ZSk7Ci0gICAgICAgICAgICB3cml0ZXIub25lcnJvciA9IGVycm9yQ2FsbGJh
Y2soJ3RydW5jYXRlICcgKyBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICB3cml0ZXIub253
cml0ZWVuZCA9IGNhbGxiYWNrOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKCdjcmVhdGUgd3Jp
dGVyIGZvciAnICsgZW50cnkuZnVsbFBhdGgpKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKG1zZykp
OwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3QoZSkgewotICAgIGUuc3RvcFByb3BhZ2F0aW9uKGUp
OwotICAgIGUucHJldmVudERlZmF1bHQoKTsKLQotICAgIGxvZygnVmVyaWZ5aW5nIGNvbnRlbnRz
IG9mIERhdGFUcmFuc2Zlckl0ZW1zLi4uJyk7Ci0gICAgdmFyIGl0ZW1zID0gZS5kYXRhVHJhbnNm
ZXIuaXRlbXM7Ci0gICAgdGVzdCgxLCBpdGVtcy5sZW5ndGgpOwotICAgIHRlc3QoJ2ZpbGUnLCBp
dGVtc1swXS5raW5kKTsKLQotICAgIHZhciBlbnRyeSA9IGl0ZW1zWzBdLndlYmtpdEdldEFzRW50
cnkoKTsKLSAgICB0ZXN0KHRydWUsIGVudHJ5LmlzRGlyZWN0b3J5KTsKLSAgICBzb3VyY2VUZXN0
RGlyZWN0b3J5ID0gZW50cnk7Ci0gICAgc2V0dXBEZXN0RmlsZVN5c3RlbShmdW5jdGlvbigpIHsK
LSAgICAgICAgbG9nKCdTdWNjZXNzZnVsbHkgc2V0dXAgdGVzdCBlbnZpcm9ubWVudC4nKTsKLSAg
ICAgICAgcnVuVGVzdHMoMCwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsb2coJ1N1Y2Nlc3Nm
dWxseSByYW4gJyArIHRlc3RzLmxlbmd0aCArICcgdGVzdHMuJyk7Ci0gICAgICAgICAgICBjbGVh
bnVwRGlyZWN0b3J5KGRlc3RUZXN0RGlyZWN0b3J5LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBsb2coJ0NsZWFudXAgZG9uZS4nKTsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12YXIgZGVzdGluYXRp
b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVzdGluYXRpb24nKTsKLWRlc3RpbmF0aW9u
LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgZnVuY3Rpb24oZSkgewotICAgIGUuc3RvcFBy
b3BhZ2F0aW9uKCk7Ci0gICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotfSwgZmFsc2UpOwotZGVzdGlu
YXRpb24uYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIHN0YXJ0VGVzdCwgZmFsc2UpOwotCi1pZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dp
dGhGaWxlcyhbc291cmNlRGlyZWN0b3J5UGF0aF0pOwotICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3
YXJkKDEwMCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZGVzdGluYXRpb24ub2Zmc2V0
TGVmdCArIDEwLCBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWln
aHQgLyAyKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLTwvc2NyaXB0PgotPC9i
b2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9y
eS1lbnRyeS10by11cmktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9kaXJlY3RvcnktZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRy
eS10by11cmktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLU9i
dGFpbmluZyBVUkwgZnJvbSBEaXJlY3RvcnlFbnRyeS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCi0KLVBBU1MgdGVzdERpcmVjdG9yeVVSTCBpcyAnZmlsZXN5c3RlbTpmaWxlOi8vL3Rl
bXBvcmFyeS90ZXN0RGlyZWN0b3J5JwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9kaXJl
Y3RvcnktZW50cnktdG8tdXJpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmkuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGlyZWN0b3J5LWVudHJ5LXRvLXVyaS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJn
dW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2VudHJ5LXBvaW50cy1taXNzaW5nLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotRW5zdXJlcyB0aGF0IHdlIGdldCBleGNl
cHRpb25zIHdoZW4gd2UgZG8gbm90IGluY2x1ZGUgcmVxdWlyZWQgYXJndW1lbnRzIGZvciB3ZWJr
aXRSZXF1ZXN0RmlsZVN5c3RlbSBhbmQgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCBt
ZXRob2RzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB3ZWJraXRSZXNv
bHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMuCi1QQVNTIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoIiIp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlkp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9lbnRyeS1wb2ludHMtbWlzc2luZy1hcmd1bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1lbnRzLmh0
bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9lbnRy
eS1wb2ludHMtbWlzc2luZy1hcmd1bWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCdFbnN1cmVzIHRo
YXQgd2UgZ2V0IGV4Y2VwdGlvbnMgd2hlbiB3ZSBkbyBub3QgaW5jbHVkZSByZXF1aXJlZCBhcmd1
bWVudHMgZm9yIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtIGFuZCB3ZWJraXRSZXNvbHZlTG9jYWxG
aWxlU3lzdGVtVVJMIG1ldGhvZHMuJyk7Ci0KLWlmICh3aW5kb3cud2Via2l0UmVzb2x2ZUxvY2Fs
RmlsZVN5c3RlbVVSTCkgewotICAgIHZhciBub3RFbm91Z2hBcmd1bWVudHMgPSAnIlR5cGVFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMiJzsKLSAgICBzaG91bGRUaHJvdygnd2Via2l0UmVzb2x2
ZUxvY2FsRmlsZVN5c3RlbVVSTCgpJywgbm90RW5vdWdoQXJndW1lbnRzKTsKLSAgICBzaG91bGRU
aHJvdygnd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiIiknLCBub3RFbm91Z2hBcmd1
bWVudHMpOwotICAgIHNob3VsZFRocm93KCd3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgpJywgbm90
RW5vdWdoQXJndW1lbnRzKTsKLSAgICBzaG91bGRUaHJvdygnd2Via2l0UmVxdWVzdEZpbGVTeXN0
ZW0oVEVNUE9SQVJZKScsIG5vdEVub3VnaEFyZ3VtZW50cyk7Ci0gICAgc2hvdWxkVGhyb3coJ3dl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMSknLCBub3RFbm91Z2hBcmd1bWVudHMp
OwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cud2Via2l0UmVz
b2x2ZUxvY2FsRmlsZVN5c3RlbVVSTC4iKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZpbGUtYWZ0ZXItcmVsb2FkLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1yZWxvYWQt
Y3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1yZWxvYWQtY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xICswLDAgQEAKLVBBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLWFmdGVyLXJlbG9hZC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWFmdGVyLXJlbG9hZC1jcmFzaC5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1yZWxv
YWQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwhLS0gYmFzZWQgb24gY3JidWcuY29tLzk0
ODk1I2MyMAotICAgICBodHRwOi8vY3JidWcuY29tLzk0ODk1Ci0gICAgIGh0dHA6Ly93ZWJraXQu
b3JnL2IvNzY0NjEgLS0+Ci08c2NyaXB0PgotaWYgKGxvY2F0aW9uLnNlYXJjaCAhPSAnP3JlZW50
ZXInKSB7Ci0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICB9Ci0KLSAgd2Via2l0
UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDI0KjEwMjQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGdvdEZTLCBvbkVycm9yLmJpbmQobnVsbCwgJ3JlcXVlc3RGaWxlU3lzdGVtJykp
OwotfSBlbHNlIHsKLSAgZG9jdW1lbnQud3JpdGUoJ1BBU1MnKTsKLQotICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIG9u
RXJyb3IobXNnLCBlKSB7Ci0gIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gJ0ZBSUw6ICcgKyBl
LmNvZGUgKyAnIG1zZyA9ICcgKyBtc2c7Ci0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gZ290RlMoZnMpIHsKLSAgZnMu
cm9vdC5nZXRGaWxlKCdob2dlJywge2NyZWF0ZTogdHJ1ZX0sCi0gICAgICAgICAgICAgICAgICBn
b3RFbnRyeSwgb25FcnJvci5iaW5kKG51bGwsICdnZXRGaWxlJykpOwotfQotCi1mdW5jdGlvbiBn
b3RFbnRyeShlbnRyeSkgewotICAvLyBJdCBzaG91bGQgbm90IGNhdXNlIGEgY3Jhc2ggdGhhdCBj
YWxsaW5nIEZpbGVFbnRyeS5maWxlKCkgd2hpbGUgdGhlIHBhZ2UgaXMgdW5sb2FkaW5nLgotICBs
b2NhdGlvbi5zZWFyY2ggPSAnP3JlZW50ZXInOwotICBlbnRyeS5maWxlKGdvdEZpbGUsIG9uRXJy
b3IuYmluZChudWxsLCAnZmlsZScpKTsKLX0KLQotZnVuY3Rpb24gZ290RmlsZShmaWxlKSB7Ci0g
IC8vIElnbm9yZSB0aGUgcmVzdWx0IG9mIEZpbGVFbnRyeS5maWxlKCkuCi19Ci08L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWVudHJ5LXRvLXVyaS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUt
ZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1PYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5Lgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB0ZXN0RmlsZVVSTCBpcyAnZmls
ZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RmlsZUVudHJ5LnR4dCcKLVBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1lbnRyeS10by11cmkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1lbnRyeS10by11cmkuaHRtbAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZW50cnktdG8t
dXJpLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUt
ZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCww
IEBACi1PYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeS4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVBBU1MgdGVzdEZpbGUubmFtZSBpcyB0ZXN0RmlsZUVudHJ5Lm5hbWUKLVBB
U1MgdGVzdEZpbGUudHlwZSBpcyAndGV4dC9wbGFpbicKLVBBU1MgdGVzdEZpbGUuc2l6ZSBpcyAw
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxl
LWVudHJ5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsw
LDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGls
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9m
aWxlLWZyb20tZmlsZS1lbnRyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtbWV0YWRhdGEtYWZ0ZXItd3JpdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGhpcyB2ZXJpZmll
cyBGaWxlLnNpemUgKGZvciBhIGZpbGUgZnJvbSBGaWxlU3lzdGVtIEFQSSkgYWx3YXlzIHJldHVy
bnMgdGhlIGZyZXNoIHNpemUgZXZlbiBhZnRlciB0aGUgZmlsZSBpcyBtb2RpZmllZC4KLVdyaXRp
bmcgMTIzNDU2Nzg5MCB0byB0aGUgZmlsZS4uLgotQ3JlYXRlZCBhIHdyaXRlci4KLVdyaXRlIHN1
Y2NlZWRlZC4KLVBBU1MgdGVzdEZpbGUuc2l6ZSBpcyB0ZXN0VGV4dDEubGVuZ3RoCi1Xcml0aW5n
IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IHRvIHRoZSBmaWxlLi4uCi1DcmVhdGVkIGEgd3Jp
dGVyLgotV3JpdGUgc3VjY2VlZGVkLgotUEFTUyB0ZXN0RmlsZS5zaXplIGlzIHRlc3RUZXh0Mi5s
ZW5ndGgKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtbWV0YWRhdGEt
YWZ0ZXItd3JpdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2PlRoaXMgdmVyaWZpZXMgRmlsZS5zaXplIChm
b3IgYSBmaWxlIGZyb20gRmlsZVN5c3RlbSBBUEkpIGFsd2F5cyByZXR1cm5zIHRoZSBmcmVzaCBz
aXplIGV2ZW4gYWZ0ZXIgdGhlIGZpbGUgaXMgbW9kaWZpZWQuPC9kaXY+Ci08ZGl2IGlkPSdjb25z
b2xlJz48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
fQotCi12YXIgZmlsZUVudHJ5Rm9yQ2xlYW51cDsKLXZhciB0ZXN0RmlsZTsKLXZhciB0ZXN0VGV4
dDEgPSAnMTIzNDU2Nzg5MCc7Ci12YXIgdGVzdFRleHQyID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6JzsKLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oCi0gICAgd2luZG93LlRFTVBPUkFS
WSwgMTAwLCBmdW5jdGlvbihmcykgewotICAgICAgICBmcy5yb290LmdldEZpbGUoJ3Rlc3QnLCB7
Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgZmlsZUVudHJ5Rm9y
Q2xlYW51cCA9IGVudHJ5OwotICAgICAgICAgICAgd3JpdGVUZXh0VG9GaWxlKGVudHJ5LCB0ZXN0
VGV4dDEsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGxvZygnV3JpdGUgc3VjY2VlZGVk
LicpOwotICAgICAgICAgICAgICAgIGVudHJ5LmZpbGUob25Xcml0dGVuRmlsZS5iaW5kKHRoaXMs
IGVudHJ5KSwgb25FcnJvcik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgb25FcnJvcik7
Ci0gICAgfSwgb25FcnJvcik7Ci0KLWZ1bmN0aW9uIG9uV3JpdHRlbkZpbGUoZW50cnksIGZpbGUp
IHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2hvdWxkQmUoJ3Rlc3RGaWxlLnNpemUnLCAn
dGVzdFRleHQxLmxlbmd0aCcpOwotICAgIC8vIFdyaXRlIGludG8gdGhpcyBmaWxlIGFnYWluLgot
ICAgIHdyaXRlVGV4dFRvRmlsZShlbnRyeSwgdGVzdFRleHQyLCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgbG9nKCdXcml0ZSBzdWNjZWVkZWQuJyk7Ci0gICAgICAgIGVudHJ5LmZpbGUoZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlsZSBzaXplIHNob3VsZCBiZSB1cGRhdGVkLgotICAg
ICAgICAgICAgc2hvdWxkQmUoJ3Rlc3RGaWxlLnNpemUnLCAndGVzdFRleHQyLmxlbmd0aCcpOwot
ICAgICAgICAgICAgY2xlYW51cCgpOwotICAgICAgICB9LCBvbkVycm9yKTsKLSAgICB9KTsKLX0K
LQotZnVuY3Rpb24gd3JpdGVUZXh0VG9GaWxlKGVudHJ5LCBjb250ZW50cywgc3VjY2Vzc0NhbGxi
YWNrKQotewotICAgIGxvZygnV3JpdGluZyAnICsgY29udGVudHMgKyAnIHRvIHRoZSBmaWxlLi4u
Jyk7Ci0gICAgZW50cnkuY3JlYXRlV3JpdGVyKGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAgICBs
b2coJ0NyZWF0ZWQgYSB3cml0ZXIuJyk7Ci0gICAgICAgIHdyaXRlci53cml0ZShuZXcgQmxvYihb
Y29udGVudHNdLCB7dHlwZToncGxhaW4vdGV4dCd9KSk7Ci0gICAgICAgIHdyaXRlci5vbndyaXRl
ZW5kID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7
Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyh0ZXh0KQotewotICAgIHZhciBjb25zb2xlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKLSAgICBjb25zb2xlLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKLSAgICBjb25zb2xlLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwotfQotCi1mdW5jdGlvbiBvbkVycm9y
KGUpCi17Ci0gICAgbG9nKCdFUlJPUjogJyArIGUuY29kZSk7Ci0gICAgY29uc29sZS5sb2coZSk7
Ci0gICAgY2xlYW51cCgpOwotfQotCi1mdW5jdGlvbiBjbGVhbnVwKCkKLXsKLSAgICBpZiAoZmls
ZUVudHJ5Rm9yQ2xlYW51cCkgewotICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwLnJlbW92ZShl
bmRUZXN0LCBlbmRUZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBlbmRUZXN0KCk7
Ci19Ci0KLWZ1bmN0aW9uIGVuZFRlc3QoKQotewotICAgIGlmICh0ZXN0UnVubmVyKQotICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQt
Y29udGludWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9y
dC1jb250aW51ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAot
VGVzdCB0aGF0IEZpbGVXcml0ZXIgY2FuIGNvbnRpbnVlIGltbWVkaWF0ZWx5IGFmdGVyIGFuIGFi
b3J0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVBBU1MgMTEwMDAwMCBpcyBibG9i
U2l6ZQotc3RhcnRpbmcgdGVzdAotUEFTUyBDYWxsaW5nIHdyaXRlLgotUEFTUyBDYWxsaW5nIGFi
b3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyB3cml0ZXIubGVuZ3RoIGlzIDAKLVBBU1MgU2F3IHdy
aXRlZW5kIDAuCi1QQVNTIENhbGxpbmcgd3JpdGUuCi1QQVNTIHdyaXRlci5sZW5ndGggaXMgMTEw
MDAwMAotUEFTUyBTYXcgd3JpdGVlbmQgMS4KLVBBU1MgQ2FsbGluZyB0cnVuY2F0ZS4KLVBBU1Mg
d3JpdGVyLmxlbmd0aCBpcyAwCi1QQVNTIFNhdyB3cml0ZWVuZCAyLgotUEFTUyBDYWxsaW5nIHdy
aXRlLgotUEFTUyBDYWxsaW5nIGFib3J0IGF0IHRoZSBlbmQgb2YgdGhlIHdyaXRlCi1QQVNTIFNh
dyBhYm9ydAotUEFTUyB3cml0ZXIubGVuZ3RoIGlzIDExMDAwMDAKLVBBU1MgU2F3IHdyaXRlZW5k
IDMuCi1QQVNTIENhbGxpbmcgd3JpdGUuCi1QQVNTIHdyaXRlci5sZW5ndGggaXMgMjIwMDAwMAot
UEFTUyBTYXcgd3JpdGVlbmQgNC4KLVBBU1MgQ2FsbGluZyB0cnVuY2F0ZS4KLVBBU1Mgd3JpdGVy
Lmxlbmd0aCBpcyAwCi1QQVNTIFNhdyB3cml0ZWVuZCA1LgotUEFTUyBDYWxsaW5nIHdyaXRlLgot
UEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyB3cml0ZXIubGVuZ3RoIGlz
IDAKLVBBU1MgU2F3IHdyaXRlZW5kIDYuCi1QQVNTIENhbGxpbmcgdHJ1bmNhdGUuCi1QQVNTIHdy
aXRlci5sZW5ndGggaXMgNwotUEFTUyBTYXcgd3JpdGVlbmQgNy4KLVBBU1MgQWxsIHRlc3RzIGNv
bXBsZXRlLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1j
b250aW51ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9m
aWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtY29udGludWUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxNSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgot
IDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBBYm9ydCBhbmQgQ29udGludWU8L3RpdGxl
PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwv
c2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotIDwvYm9k
eT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3Jp
dGVyLWFib3J0LWRlcHRoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtZGVwdGgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXIt
YWJvcnQtZGVwdGgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5ICswLDAgQEAK
LVRlc3QgdGhhdCBGaWxlV3JpdGVyIGRlZmVuZHMgYWdhaW5zdCBpbmZpbml0ZSByZWN1cnNpb24g
dmlhIGFib3J0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QK
LVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBBU1MgQ2FsbGluZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQK
LVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBBU1MgQ2FsbGluZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQK
LVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBBU1MgU2F3IHNlY3VyaXR5IGVycm9yCi1QQVNTIFNhdyB3
cml0ZWVuZC4KLVBBU1MgU2F3IHdyaXRlZW5kLgotUEFTUyBDYWxsaW5nIHRydW5jYXRlLgotUEFT
UyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyBDYWxsaW5nIHRydW5jYXRlLgot
UEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyBDYWxsaW5nIHRydW5jYXRl
LgotUEFTUyBTYXcgc2VjdXJpdHkgZXJyb3IKLVBBU1MgU2F3IHdyaXRlZW5kLgotUEFTUyBTYXcg
d3JpdGVlbmQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0
LWRlcHRoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtd3JpdGVyLWFib3J0LWRlcHRoLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+
Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEFib3J0IERlcHRoPC90aXRsZT4KLSAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLSA8L2hl
YWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0
ZXItYWJvcnQtZGVwdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3Jp
dGVyLWFib3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMiArMCwwIEBACi1UZXN0IHRoYXQgRmlsZVdyaXRlciBoYW5kbGVzIGFib3J0
IHByb3Blcmx5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QK
LVBBU1MgQ2FsbGluZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQKLVBBU1MgU2F3IHdyaXRlZW5kLgot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmls
ZS13cml0ZXItYWJvcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMCwwIEBACi08IURP
Q1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBBYm9y
dDwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci11dGls
cy5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWFib3J0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5
PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0
ZXItZW1wdHktYmxvYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1w
dHktYmxvYi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVz
dCB0aGF0IEZpbGVXcml0ZXIgd29ya3Mgd2l0aG91dCBjcmFzaCB3aGVuIHRyeWluZyB0byB3cml0
ZSBhbiBlbXB0eSBibG9iLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5n
IHRlc3QKLVBBU1MgU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxvYi5odG1sCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXIt
ZW1wdHktYmxvYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICswLDAgQEAKLTwhRE9DVFlQ
RSBIVE1MPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5GaWxlIFdyaXRlciB3aXRoIGVtcHR5IEJs
b2I8L3RpdGxlPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgot
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3Jp
dGVyLWVtcHR5LWJsb2IuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXIt
ZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMgcHJvcGVy
IHByb2dyZXNzIGV2ZW50cy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1zdGFydGlu
ZyB0ZXN0Ci1QQVNTIFNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWV2ZW50cy5odG1sCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08
aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgRXZlbnRzPC90aXRsZT4KLSAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3Njcmlw
dD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgot
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZmlsZS13cml0ZXItZXZlbnRzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgot
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtd3JpdGVyLWdjLWJsb2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IGEgYmxvYiB3b24ndCBn
ZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQgYnkgYSBGaWxlV3Jp
dGVyLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1Mg
U3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtd3JpdGVyLWdjLWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhl
YWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEdDIEJsb2I8L3RpdGxlPgotICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0PgotIDwvaGVh
ZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRl
ci1nYy1ibG9iLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUt
d3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLVRlc3Qgb2YgZXh0
ZW5kaW5nIGEgZmlsZSB1c2luZyB0cnVuY2F0ZSgpLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgVHJ1bmNhdGUgZXh0ZW5zaW9uIHZlcmlmaWVkLgot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0
ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNiArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFk
PgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3RpdGxlPgotICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0
PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0g
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9m
aWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08
L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVy
LXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUt
d3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEzICswLDAgQEAKLVRlc3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBw
aW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgTmVnYXRpdmUgc2VlayB2YWxpZGF0ZWQuCi1QQVNTIFBv
c2l0aXZlIHNlZWsgdmFsaWRhdGVkLgotUEFTUyBOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRhdGVk
LgotUEFTUyBBbGwgd3JpdGVzIHZlcmlmaWVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3Jp
dGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBA
Ci08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRl
ciBXcml0ZSBPdmVybGFwcGVkPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBl
ZC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1t
aXNzaW5nLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLW1pc3NpbmctYXJndW1lbnRzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UZXN0IGhvdyBmaWxlIHN5
c3RlbSBtZXRob2RzIHJlYWN0IHRvIHRvbyBmZXcgYXJndW1lbnRzLgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbShURU1QT1JBUlkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbWlzc2luZy1hcmd1bWVudHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1taXNz
aW5nLWFyZ3VtZW50cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1taXNzaW5nLWFyZ3VtZW50cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oJ1Rlc3QgaG93IGZpbGUgc3lzdGVt
IG1ldGhvZHMgcmVhY3QgdG8gdG9vIGZldyBhcmd1bWVudHMuJyk7Ci1zaG91bGRUaHJvdygid2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0oKSIpOwotc2hvdWxkVGhyb3coIndlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFRFTVBPUkFSWSkiKTsKLXNob3VsZFRocm93KCJ3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtVVJMKCkiKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jh
c2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9maWxlc3lzdGVtLW5vLWNhbGxiYWNrLW51bGwtcHRyLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0t
bm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xICswLDAgQEAKLVBBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxl
c3lzdGVtLW5vLWNhbGxiYWNrLW51bGwtcHRyLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHIt
Y3Jhc2guaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2guaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxOSArMCwwIEBACi08IS0tCi0gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9j
aHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYzMjA0Ci0gIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTUzOQotLS0+Ci08ZGl2IGlkPSJsb2ciPkZBSUw8L2Rpdj4KLTxz
Y3JpcHQ+Ci0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICBpZiAod2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgICAv
LyBUaGVzZSB0d28gY2FsbHMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBidXQgc2hvdWxkIE5P
VCBjYXVzZSBhIE5VTEwgcG9pbnRlciBjcmFzaDoKLSAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1VUkwoJycsIGZ1bmN0aW9uKCkge30pOwotICAgICAgdHJ5IHsKLSAgICAgICAgICB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCk7Ci0gICAgICB9Ci0gICAgICBj
YXRjaChlKSB7Ci0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVy
SFRNTCA9ICJQQVNTIjsKLSAgICAgIH0KLSAgfQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1yZWZlcmVuY2UtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVyZW5j
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVyZW5jZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTQgKzAsMCBAQAotVGhpcyB0ZXN0cyBpZiBFbnRyaWVzIHJldHVybmVkIGJ5IGNhbGxi
YWNrcyBrZWVwIGZ1bmN0aW9uaW5nIGV2ZW4gYWZ0ZXIgd2UgbG9zZSBhIHJlZmVyZW5jZSB0byB0
aGUgZmlsZXN5c3RlbSBpbiB0aGUgc2NyaXB0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLQotUnVubmluZyBydW5UZXN0MSgpLi4uCi1SdW5uaW5nIHJ1blRlc3QyKCkuLi4KLVJ1bm5p
bmcgcnVuVGVzdDMoKS4uLgotUnVubmluZyBydW5UZXN0NCgpLi4uCi1QQVNTIHRlc3RFbnRyaWVz
Lmxlbmd0aCBpcyA0Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tcmVm
ZXJlbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGVzeXN0ZW0tcmVmZXJlbmNlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVyZW5jZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXJlZmVyZW5jZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS11
bnNlcmlhbGl6YWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdW5zZXJpYWxpemFibGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS11
bnNlcmlhbGl6YWJsZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBA
QAotVGhpcyB0ZXN0cyBpZiB0aGUgZmlsZXN5c3RlbSBvYmplY3QgaXMgdW5zZXJpYWxpemFibGUg
YnkgZGVmYXVsdAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotRGF0YUNsb25lRXJy
b3I6IERPTSBFeGNlcHRpb24gMjUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5
c3RlbS11bnNlcmlhbGl6YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmh0bWwJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVuc2VyaWFsaXph
YmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tdW5zZXJpYWxp
emFibGUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdp
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlc3lzdGVtLXVyaS1vcmlnaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xICswLDAgQEAKLVBBU1NFRDogb3JpZ2luIHdhcyBodHRwOi8vd3d3LndlYmtpdC5vcmc6
ODA4MApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9y
aWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxl
c3lzdGVtLXVyaS1vcmlnaW4uaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEzICswLDAgQEAKLTxhIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGhyZWY9ImZpbGVzeXN0
ZW06aHR0cDovL3d3dy53ZWJraXQub3JnOjgwODAvdGVtcG9yYXJ5L2EvYi9jL2ZpbGUudHh0Ij5m
b288L2E+Ci08cD5UaGlzIHRleHQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlLiBJdCBzaG91bGQgYmUg
b3ZlcndyaXR0ZW4gYnkgdGhlIHJ1bm5pbmcgb2YgdGhlIHRlc3QuPC9wPgotPHNjcmlwdD4KLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwotICAgIHZhciBleHBlY3RlZE9yaWdpbiA9ICdodHRwOi8vd3d3LndlYmtpdC5vcmc6ODA4MCc7
Ci0gICAgdmFyIGFjdHVhbE9yaWdpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdh
JylbMF0ub3JpZ2luOwotICAgIHZhciByZXN1bHRFbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgncCcpWzBdOwotICAgIGlmIChhY3R1YWxPcmlnaW4gPT0gZXhwZWN0ZWRPcmlnaW4p
Ci0gICAgICAgIHJlc3VsdEVsdC5pbm5lclRleHQgPSAnUEFTU0VEOiBvcmlnaW4gd2FzICcgKyBl
eHBlY3RlZE9yaWdpbjsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdEVsdC5pbm5lclRleHQgPSAn
RkFJTEVEOiBleHBlY3RlZCBvcmlnaW46ICcgKyBleHBlY3RlZE9yaWdpbiArICcgYnV0IGdvdDog
JyArIGFjdHVhbE9yaWdpbjsKLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZsYWdzLXBhc3NpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9mbGFncy1wYXNzaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmctZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLVBhc3NpbmcgRmxhZ3Mg
cGFyYW1ldGVyIHRlc3RzLiBUaGlzIHRlc3QgY2hlY2tzIGlmIHBhc3NpbmcgRmxhZ3MgcGFyYW1l
dGVycyB0byBEaXJlY3RvcnlFbnRyeS5nZXRGaWxlIGRvZXMgbm90IGNyYXNoIGFuZCB3b3JrcyBh
cyBleHBlY3RlZC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLSogUGFzc2luZyBK
U09OIEZsYWdzIG9iamVjdC4KLSogUGFzc2luZyBKU09OIEZsYWdzIG9iamVjdCAod2l0aCBleGNs
dXNpdmU9dHJ1ZSkuCi0qIFBhc3NpbmcgbnVsbCBhcyBhIGZsYWdzIHBhcmFtZXRlci4KLSogUGFz
c2luZyBhIG51bWJlciBhcyBhIGZsYWdzIHBhcmFtZXRlci4KLUNhdWdodCBleGNlcHRpb246IFR5
cGVFcnJvcjogTm90IGFuIG9iamVjdC4KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIGV4
cGVjdGVkQ2FsbGJhY2tzQ291bnQgaXMgMQotUEFTUyB1bmV4cGVjdGVkQ2FsbGJhY2tzQ291bnQg
aXMgMAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9mbGFncy1wYXNzaW5nLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmcuaHRt
bAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdz
LXBhc3NpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vaW5wdXQtYWNjZXNzLWVudHJpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9pbnB1dC1hY2Nlc3MtZW50cmllcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9p
bnB1dC1hY2Nlc3MtZW50cmllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzAsMCBAQAotVGVzdHMgYWNjZXNzaW5nIHdlYmtpdEVudHJpZXMgZG9lcyBub3QgY3Jhc2ggd2hl
biBpbnB1dCB0eXBlIGlzIG5vdCBmaWxlCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQot
Ci1QQVNTIGlucHV0LndlYmtpdEVudHJpZXMubGVuZ3RoIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vaW5wdXQtYWNjZXNzLWVudHJpZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vaW5wdXQtYWNjZXNzLWVudHJpZXMuaHRtbAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2lucHV0LWFjY2Vzcy1l
bnRyaWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLTxib2R5PgotPGlucHV0IG5hbWU9ImlucHV0IiBpZD0iaW5wdXQiPjwvaW5w
dXQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbignVGVzdHMgYWNjZXNzaW5nIHdlYmtpdEVudHJpZXMg
ZG9lcyBub3QgY3Jhc2ggd2hlbiBpbnB1dCB0eXBlIGlzIG5vdCBmaWxlJyk7Ci0KLXZhciBpbnB1
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dCcpOwotc2hvdWxkRXZhbHVhdGVUbygn
aW5wdXQud2Via2l0RW50cmllcy5sZW5ndGgnLCAwKTsKLQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVub3VnaC1hcmd1
bWVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQgKzAsMCBAQAotVGhpcyB0ZXN0IHRyaWVz
IGNhbGxpbmcgdmFyaW91cyBmaWxlc3lzdGVtIGZ1bmN0aW9ucyB3aXRoIHRvbyBmZXcgYXJndW1l
bnRzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB3ZWJraXRSZXNvbHZl
TG9jYWxGaWxlU3lzdGVtVVJMKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCi1QQVNTIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtKFBFUlNJU1RFTlQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShQRVJTSVNURU5ULCAx
MDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotU3Vj
Y2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFy
eQotUEFTUyBmaWxlU3lzdGVtLnJvb3QucmVtb3ZlUmVjdXJzaXZlbHkoKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgZmlsZVN5c3RlbS5yb290
Lm1vdmVUbygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
LgotUEFTUyBmaWxlU3lzdGVtLnJvb3QuY29weVRvKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHJlYWRlci5yZWFkRW50cmllcygpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBlbnRyaWVz
Lml0ZW0oKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4K
LVBBU1MgZW50cnkuY3JlYXRlV3JpdGVyKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIGVudHJ5LmZpbGUoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mgd3JpdGVyLndyaXRlKCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdyaXRlci5z
ZWVrKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1Q
QVNTIHdyaXRlci50cnVuY2F0ZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFy
Z3VtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9u
b3QtZW5vdWdoLWFyZ3VtZW50cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVub3VnaC1hcmd1bWVudHMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw2MSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1k
ZXNjcmlwdGlvbignVGhpcyB0ZXN0IHRyaWVzIGNhbGxpbmcgdmFyaW91cyBmaWxlc3lzdGVtIGZ1
bmN0aW9ucyB3aXRoIHRvbyBmZXcgYXJndW1lbnRzLicpOwotCi1mdW5jdGlvbiBlcnJvckNhbGxi
YWNrKGVycm9yKQotewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5jb2RlKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKGZzKQot
ewotICAgIGZpbGVTeXN0ZW0gPSBmczsKLSAgICBkZWJ1ZygiU3VjY2Vzc2Z1bGx5IG9idGFpbmVk
IFBlcnNpc3RlbnQgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLQotICAgIHNob3Vs
ZFRocm93KCJmaWxlU3lzdGVtLnJvb3QucmVtb3ZlUmVjdXJzaXZlbHkoKSIpOwotICAgIHNob3Vs
ZFRocm93KCJmaWxlU3lzdGVtLnJvb3QubW92ZVRvKCkiKTsKLSAgICBzaG91bGRUaHJvdygiZmls
ZVN5c3RlbS5yb290LmNvcHlUbygpIik7Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNy
ZWF0ZVJlYWRlcigpOwotICAgIHNob3VsZFRocm93KCJyZWFkZXIucmVhZEVudHJpZXMoKSIpOwot
Ci0gICAgcmVhZGVyLnJlYWRFbnRyaWVzKGZ1bmN0aW9uKGVudHJpZXMpIHsKLSAgICAgICAgd2lu
ZG93LmVudHJpZXMgPSBlbnRyaWVzOwotICAgICAgICBzaG91bGRUaHJvdygiZW50cmllcy5pdGVt
KCkiKTsKLQotICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgiL3Rlc3QiLCB7IGNyZWF0
ZTogdHJ1ZSB9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgd2luZG93LmVudHJ5ID0g
ZW50cnk7Ci0gICAgICAgICAgICBzaG91bGRUaHJvdygiZW50cnkuY3JlYXRlV3JpdGVyKCkiKTsK
LSAgICAgICAgICAgIHNob3VsZFRocm93KCJlbnRyeS5maWxlKCkiKTsKLQotICAgICAgICAgICAg
ZW50cnkuY3JlYXRlV3JpdGVyKGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAgICAgICAgICAgIHdp
bmRvdy53cml0ZXIgPSB3cml0ZXI7Ci0KLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygid3Jp
dGVyLndyaXRlKCkiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygid3JpdGVyLnNlZWso
KSIpOwotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJ3cml0ZXIudHJ1bmNhdGUoKSIpOwot
Ci0gICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0p
IHsKLSAgICBzaG91bGRUaHJvdygid2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgpIik7
Ci0gICAgc2hvdWxkVGhyb3coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKCkiKTsKLSAgICBzaG91
bGRUaHJvdygid2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCkiKTsKLSAgICBzaG91
bGRUaHJvdygid2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCwgMTAwKSIpOwotICAg
IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci19IGVsc2UKLSAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1
cHBvcnQuIik7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9vcC1jb3B5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtY29weS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1jb3B5LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw4OCArMCwwIEBACi0qIFJ1bm5pbmc6IENvcHlGaWxlU2lt
cGxlCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2IiLmNvcHlUbygiL2EiLCAiYyIpCi1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9jIG5hbWU6YyB0eXBlOkZJTEV9Ci0qIFJ1bm5p
bmc6IENvcHlEaXJlY3RvcnlTaW1wbGUKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIuY29weVRvKCIv
YSIsICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBl
OkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpi
IHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYyBu
YW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IENvcHlGaWxlVG9EaWZmZXJlbnREaXJl
Y3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIuY29weVRvKCIvYyIsICJkIikKLVBBU1MgVmVy
aWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpkIHR5cGU6RklMRX0KLSogUnVu
bmluZzogQ29weUZpbGVXaXRoRW1wdHlOYW1lCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2IiLmNvcHlU
bygiL2MiLCAibnVsbCIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1l
OmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9i
IG5hbWU6YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYy9i
IG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlGaWxlV2l0aEVtcHR5TmFtZVRvU2Ft
ZURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0q
IFJ1bm5pbmc6IENvcHlGaWxlV2l0aFNhbWVOYW1lCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNv
ZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6
YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2Ig
bmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogQ29weUZvck5vbkV4aXN0ZW50RW50cnkKLVBB
U1MgU3VjY2VlZGVkOiAiL2EvYiIucmVtb3ZlKCkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29k
ZSArICIiIGlzICIxIgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTph
IHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2MgbmFt
ZTpjIHR5cGU6RElSRUNUT1JZfQotKiBSdW5uaW5nOiBDb3B5RW50cnlUb05vbkV4aXN0ZW50RGly
ZWN0b3J5Ci1QQVNTIFN1Y2NlZWRlZDogIi9jIi5yZW1vdmUoKQotUEFTUyB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
YSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlFbnRyeVRvSXRzQ2hpbGQK
LVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyB0aGlzLmV4cGVj
dGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IENvcHlS
ZWN1cnNpdmUKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiL2IiLCAiYSIpCi1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0K
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpGSUxF
fQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYi9kIG5hbWU6ZCB0eXBlOkZJ
TEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9hIG5hbWU6YSB0eXBlOkRJ
UkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2EvYiBuYW1lOmIg
dHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9hL2Iv
YyBuYW1lOmMgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2Iv
YS9iL2QgbmFtZTpkIHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdDb3B5RmlsZVRv
RmlsZQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuY29weVRvKCIvIiwgImIiKQotUEFTUyBWZXJpZmll
ZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3
cml0aW5nQ29weURpcmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2Ei
LmNvcHlUbygiLyIsICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5h
bWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9h
L2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9j
IG5hbWU6YyB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9jL2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdDb3B5RmlsZVRv
RGlyZWN0b3J5Ci1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkZJTEV9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1
bm5pbmc6IE92ZXJ3cml0aW5nQ29weURpcmVjdG9yeVRvRmlsZQotUEFTUyB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
YSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYiBuYW1lOmIgdHlwZTpGSUxFfQotKiBSdW5uaW5nOiBPdmVyd3JpdGluZ0NvcHlGaWxlVG9O
b25lbXB0eURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjki
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpGSUxFfQot
UEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZ
fQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYyBuYW1lOmMgdHlwZTpGSUxF
fQotKiBSdW5uaW5nOiBPdmVyd3JpdGluZ0NvcHlEaXJlY3RvcnlUb05vbmVtcHR5RGlyZWN0b3J5
Ci1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVy
aWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpkIHR5cGU6RklMRX0KLUZpbmlzaGVk
IHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWNvcHkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtY29weS5odG1s
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtY29w
eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L29wLWNvcHkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC10ZXN0cy1o
ZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtZW50
cnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkxICswLDAgQEAKLSogUnVubmlu
ZzogQ3JlYXRlU2ltcGxlCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldERpcmVjdG9yeSgiYSIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImIiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5U
Ulkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTog
RU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogQ3JlYXRlTmVzdGVk
Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldERpcmVjdG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRlZDog
Ii9hIi5nZXREaXJlY3RvcnkoImIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5nZXREaXJlY3Rv
cnkoImMiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iL2MiLmdldERpcmVjdG9yeSgiZCIpCi1QQVNT
IFN1Y2NlZWRlZDogIi9hL2IvYy9kIi5nZXRGaWxlKCJlIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9hL2IvYy9kL2UgbmFtZTplIHR5cGU6RklMRX0KLSogUnVubmluZzogQ3Jl
YXRlTmVzdGVkV2l0aEFic29sdXRlUGF0aAotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldERp
cmVjdG9yeSgiL2EiKQotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldERpcmVjdG9yeSgiL2Ev
YiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9kdW1teSIuZ2V0RGlyZWN0b3J5KCIvYS9iL2MiKQotUEFT
UyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldERpcmVjdG9yeSgiL2EvYi9jL2QiKQotUEFTUyBTdWNj
ZWVkZWQ6ICIvZHVtbXkiLmdldEZpbGUoIi9hL2IvYy9kL2UiKQotUEFTUyBWZXJpZmllZCBlbnRy
eTogRU5UUlkge3BhdGg6L2R1bW15IG5hbWU6ZHVtbXkgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iL2MvZC9lIG5hbWU6ZSB0eXBlOkZJTEV9Ci0q
IFJ1bm5pbmc6IENyZWF0ZU5lc3RlZFdpdGhSZWxhdGl2ZVBhdGgKLVBBU1MgU3VjY2VlZGVkOiAi
L2EiLmdldERpcmVjdG9yeSgiLi9iIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9y
eSgiLi8uLi4iKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RGlyZWN0b3J5KCIuLi9iIikKLVBB
U1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9yeSgiLi4vLi4vYi9jIikKLVBBU1MgU3VjY2Vl
ZGVkOiAiL2EiLmdldERpcmVjdG9yeSgiL2EvLi4vLi4vZCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9h
Ii5nZXREaXJlY3RvcnkoIi9hLy4uLy4uL2IvLi9jLy4uLy4uLy4uLy4uLy4uL2UiKQotUEFTUyBT
dWNjZWVkZWQ6ICIvYSIuZ2V0RGlyZWN0b3J5KCIuLi4vZiIpCi1QQVNTIHRoaXMuZXhwZWN0ZWRF
cnJvckNvZGUgKyAiIiBpcyAiMSIKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldEZpbGUoIi4vYi50
eHQiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RmlsZSgiLi4vYi50eHQiKQotUEFTUyBTdWNj
ZWVkZWQ6ICIvYSIuZ2V0RmlsZSgiLi4vLi4vYi9jLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9h
Ii5nZXRGaWxlKCIvYS8uLi8uLi9kLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRGaWxl
KCIvYS8uLi8uLi9iLy4vYy8uLi8uLi8uLi8uLi8uLi9lLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDog
Ii9hIi5nZXRGaWxlKCIuLi4vZi50eHQiKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsg
IiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlw
ZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6
YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5h
bWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9i
L2MgbmFtZTpjIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3Bh
dGg6L2QgbmFtZTpkIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2UgbmFtZTplIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2Vz
IE5PVCBleGlzdDogL2YKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2YK
LVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9nCi1QQVNTIFZlcmlmaWVkIGVu
dHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9nCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9iLnR4dCBuYW1lOmIudHh0IHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9iLnR4dCBuYW1lOmIudHh0IHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50
cnk6IEVOVFJZIHtwYXRoOi9iL2MudHh0IG5hbWU6Yy50eHQgdHlwZTpGSUxFfQotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2QudHh0IG5hbWU6ZC50eHQgdHlwZTpGSUxFfQotUEFT
UyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2UudHh0IG5hbWU6ZS50eHQgdHlwZTpGSUxF
fQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2YudHh0Ci1QQVNTIFZlcmlm
aWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9mLnR4dAotUEFTUyBWZXJpZmllZCBlbnRyeSBk
b2VzIE5PVCBleGlzdDogL2cudHh0Ci1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0
OiAvYS9nLnR4dAotKiBSdW5uaW5nOiBHZXRFeGlzdGluZ0VudHJ5Ci1QQVNTIFN1Y2NlZWRlZDog
Ii8iLmdldERpcmVjdG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImIiKQot
UEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXREaXJlY3RvcnkoImEiKQotUEFTUyB0aGlzLmVudmlyb25t
ZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmZ1bGxQYXRoIGlzICIvYSIKLVBBU1MgdGhpcy5lbnZp
cm9ubWVudFt0aGlzLmVudHJ5LmZ1bGxQYXRoXS5pc0ZpbGUgKyAiIiBpcyAiZmFsc2UiCi1QQVNT
IHRoaXMuZW52aXJvbm1lbnRbdGhpcy5lbnRyeS5mdWxsUGF0aF0uaXNEaXJlY3RvcnkgKyAiIiBp
cyAidHJ1ZSIKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYiIpCi1QQVNTIHRoaXMuZW52
aXJvbm1lbnRbdGhpcy5lbnRyeS5mdWxsUGF0aF0uZnVsbFBhdGggaXMgIi9iIgotUEFTUyB0aGlz
LmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRmlsZSArICIiIGlzICJ0cnVlIgot
UEFTUyB0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRGlyZWN0b3J5ICsg
IiIgaXMgImZhbHNlIgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTph
IHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFt
ZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogR2V0Tm9uRXhpc3RlbnQKLVBBU1MgdGhpcy5leHBl
Y3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsg
IiIgaXMgIjEiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMSIKLVBBU1Mg
dGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotKiBSdW5uaW5nOiBHZXRGaWxlRm9y
RGlyZWN0b3J5Ci1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMTEiCi1QQVNT
IHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMTEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IEdldERp
cmVjdG9yeUZvckZpbGUKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxMSIK
LVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxMSIKLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENyZWF0
ZVdpdGhFeGNsdXNpdmUKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5Igot
UEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVu
dHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVk
IGVudHJ5OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIgdHlwZTpGSUxFfQotRmluaXNoZWQgcnVubmlu
ZyB0ZXN0cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LWVudHJ5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3At
Z2V0LWVudHJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRh
dGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vb3AtZ2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwyNiArMCwwIEBACi0qIFJ1bm5pbmc6IEdldE1ldGFkYXRhCi1QQVNTIFN1Y2NlZWRlZDogIi8i
LmdldE1ldGFkYXRhKCkKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RGlyZWN0b3J5KCIvYSIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRb
Ii9hLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUiXSBpcyA+PSB0aGlzLnJvdW5kZWRTdGFydERh
dGUKLVBBU1MgU3VjY2VlZGVkOiAiL2ZpbGUxIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52
aXJvbm1lbnRbIi9maWxlMS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5y
b3VuZGVkU3RhcnREYXRlCi1QQVNTIFN1Y2NlZWRlZDogIi9maWxlMiIuZ2V0TWV0YWRhdGEoKQot
UEFTUyB0aGlzLmVudmlyb25tZW50WyIvZmlsZTIucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSJd
IGlzID49IHRoaXMucm91bmRlZFN0YXJ0RGF0ZQotUEFTUyB0aGlzLmVudmlyb25tZW50WyIvZmls
ZTIuc2l6ZSJdIGlzIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMi5yZXR1cm5lZC5zaXplIl0KLVBB
U1MgU3VjY2VlZGVkOiAiL2ZpbGUzIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1l
bnRbIi9maWxlMy5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5yb3VuZGVk
U3RhcnREYXRlCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMy5zaXplIl0gaXMgdGhpcy5l
bnZpcm9ubWVudFsiL2ZpbGUzLnJldHVybmVkLnNpemUiXQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5n
ZXRGaWxlKCIvYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9iIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRo
aXMuZW52aXJvbm1lbnRbIi9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUiXSBpcyA+PSB0aGlz
LnJvdW5kZWRTdGFydERhdGUKLVBBU1MgU3VjY2VlZGVkOiAiL3RtcCIucmVtb3ZlKCkKLVBBU1Mg
dGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyB0aGlzLmVudmlyb25tZW50
WyIvYS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5lbnZpcm9ubWVudFsi
Ly5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0KLVBBU1MgdGhpcy5lbnZpcm9ubWVudFsiL2Iu
cmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSJdIGlzID49IHRoaXMuZW52aXJvbm1lbnRbIi8ucmV0
dXJuZWQubW9kaWZpY2F0aW9uVGltZSJdCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9iLnJldHVy
bmVkLm1vZGlmaWNhdGlvblRpbWUiXSBpcyA+PSB0aGlzLmVudmlyb25tZW50WyIvYS5yZXR1cm5l
ZC5tb2RpZmljYXRpb25UaW1lIl0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1tZXRhZGF0YS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1tZXRhZGF0YS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29w
LWdldC1tZXRhZGF0YS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXRl
c3RzLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFyZW50LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L29wLWdldC1wYXJlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAg
QEAKLSogUnVubmluZzogR2V0UGFyZW50Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldFBhcmVudCgp
Ci1QYXJlbnQgZW50cnk6IEVOVFJZIHtwYXRoOi8gbmFtZTogdHlwZTpESVJFQ1RPUll9Ci1QQVNT
IFN1Y2NlZWRlZDogIi9hIi5nZXRQYXJlbnQoKQotUGFyZW50IGVudHJ5OiBFTlRSWSB7cGF0aDov
IG5hbWU6IHR5cGU6RElSRUNUT1JZfQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5nZXRQYXJlbnQo
KQotUGFyZW50IGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1Q
QVNTIFN1Y2NlZWRlZDogIi9hL2IvYyIuZ2V0UGFyZW50KCkKLVBhcmVudCBlbnRyeTogRU5UUlkg
e3BhdGg6L2EvYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBF
TlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpGSUxFfQotRmluaXNoZWQgcnVu
bmluZyB0ZXN0cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LXBhcmVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFy
ZW50Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9vcC1nZXQtcGFyZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvb3AtZ2V0LXBhcmVudC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL29wLXRlc3RzLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1tb3ZlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL29wLW1vdmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDgzICswLDAgQEAK
LSogUnVubmluZzogTW92ZUZpbGVTaW1wbGUKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIubW92ZVRv
KCIvYSIsICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0
eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2IK
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2MgbmFtZTpjIHR5cGU6RklMRX0K
LSogUnVubmluZzogTW92ZURpcmVjdG9yeVNpbXBsZQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iIi5t
b3ZlVG8oIi9hIiwgImMiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFt
ZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDog
L2EvYgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYyBuYW1lOmMgdHlwZTpE
SVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IE1vdmVGaWxlVG9EaWZmZXJlbnREaXJlY3RvcnkKLVBBU1Mg
U3VjY2VlZGVkOiAiL2EvYiIubW92ZVRvKCIvYyIsICJkIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50
cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2IKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9jL2QgbmFtZTpkIHR5cGU6RklMRX0KLSogUnVubmluZzogTW92ZUZpbGVXaXRoRW1wdHlOYW1l
Ci1QQVNTIFN1Y2NlZWRlZDogIi9hL2IiLm1vdmVUbygiL2MiLCAibnVsbCIpCi1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9iCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBF
TlRSWSB7cGF0aDovYy9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE1vdmVGaWxlV2l0
aEVtcHR5TmFtZVRvU2FtZURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsg
IiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlw
ZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6
YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE1vdmVGaWxlV2l0aFNhbWVOYW1lCi1QQVNTIHRoaXMu
ZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogTW92ZUZvck5vbkV4
aXN0ZW50RW50cnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIucmVtb3ZlKCkKLVBBU1MgdGhpcy5l
eHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5U
Ulkge3BhdGg6L2MgbmFtZTpjIHR5cGU6RElSRUNUT1JZfQotKiBSdW5uaW5nOiBNb3ZlRW50cnlU
b05vbkV4aXN0ZW50RGlyZWN0b3J5Ci1QQVNTIFN1Y2NlZWRlZDogIi9jIi5yZW1vdmUoKQotUEFT
UyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVu
dHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE1vdmVF
bnRyeVRvSXRzQ2hpbGQKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5Igot
UEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVu
dHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVk
IGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVy
aWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0q
IFJ1bm5pbmc6IE1vdmVSZWN1cnNpdmUKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLm1vdmVUbygiL2Ii
LCAiYSIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYQotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9hL2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZ
fQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYS9iL2MgbmFtZTpjIHR5cGU6
RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2EvYi9kIG5hbWU6ZCB0
eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nTW92ZUZpbGVUb0ZpbGUKLVBBU1MgU3Vj
Y2VlZGVkOiAiL2EiLm1vdmVUbygiLyIsICJiIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nTW92ZURp
cmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLm1vdmVUbygiLyIs
ICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBlOkRJ
UkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2IgbmFtZTpiIHR5
cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hCi0qIFJ1bm5p
bmc6IE92ZXJ3cml0aW5nTW92ZUZpbGVUb0RpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJy
b3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBu
YW1lOmEgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFt
ZTpiIHR5cGU6RElSRUNUT1JZfQotKiBSdW5uaW5nOiBPdmVyd3JpdGluZ01vdmVEaXJlY3RvcnlU
b0ZpbGUKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBW
ZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmlu
ZzogT3ZlcndyaXRpbmdNb3ZlRmlsZVRvTm9uZW1wdHlEaXJlY3RvcnkKLVBBU1MgdGhpcy5leHBl
Y3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3Bh
dGg6L2EgbmFtZTphIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtw
YXRoOi9iL2MgbmFtZTpjIHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdNb3ZlRGly
ZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsg
IiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlw
ZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6
YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYyBuYW1lOmMg
dHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYy9kIG5h
bWU6ZCB0eXBlOkZJTEV9Ci1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9vcC1tb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL29wLW1vdmUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiAr
MCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRp
bC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1tb3ZlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZWFkLWRpcmVjdG9y
eS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L29wLXJlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwyMiArMCwwIEBACi0qIFJ1bm5pbmc6IFJlYWREaXJlY3RvcnkK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuY3JlYXRlUmVhZGVyKCkucmVhZEVudHJpZXMoKQotRW50cmll
czogW0VOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0sCi0gRU5UUlkge3BhdGg6
L2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfSwKLSBFTlRSWSB7cGF0aDovYyBuYW1lOmMgdHlwZTpG
SUxFfSwKLSBFTlRSWSB7cGF0aDovZCBuYW1lOmQgdHlwZTpGSUxFfSwKLSBFTlRSWSB7cGF0aDov
ZSBuYW1lOmUgdHlwZTpESVJFQ1RPUll9LAotIEVOVFJZIHtwYXRoOi9mIG5hbWU6ZiB0eXBlOkZJ
TEV9LAotIEVOVFJZIHtwYXRoOi9nIG5hbWU6ZyB0eXBlOkRJUkVDVE9SWX1dCi1QQVNTIFN1Y2Nl
ZWRlZDogIi9jIi5yZW1vdmUoKQotUEFTUyBTdWNjZWVkZWQ6ICIvZSIucmVtb3ZlKCkKLVBBU1Mg
U3VjY2VlZGVkOiAiL2YiLnJlbW92ZSgpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmNyZWF0ZVJlYWRl
cigpLnJlYWRFbnRyaWVzKCkKLUVudHJpZXM6IFtFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpE
SVJFQ1RPUll9LAotIEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0sCi0gRU5U
Ulkge3BhdGg6L2QgbmFtZTpkIHR5cGU6RklMRX0sCi0gRU5UUlkge3BhdGg6L2cgbmFtZTpnIHR5
cGU6RElSRUNUT1JZfV0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5Lmh0bWwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZWFkLWRpcmVjdG9yeS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29w
LXJlYWQtZGlyZWN0b3J5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3At
dGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVtb3Zl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMyArMCwwIEBACi0qIFJ1bm5pbmc6
IFJlbW92ZVNpbXBsZQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIucmVtb3ZlKCkKLVBBU1MgU3VjY2Vl
ZGVkOiAiL2IiLnJlbW92ZSgpCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAi
OSIKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hCi1QQVNTIFZlcmlmaWVk
IGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYgotKiBSdW5uaW5nOiBSZW1vdmVOb25SZWN1cnNpdmVX
aXRoQ2hpbGRyZW4KLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFT
UyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQot
UEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYiBuYW1lOmIgdHlwZTpESVJFQ1RP
Ull9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9jIG5hbWU6YyB0eXBlOkZJ
TEV9Ci0qIFJ1bm5pbmc6IFJlbW92ZVJlY3Vyc2l2ZVdpdGhvdXRDaGlsZHJlbgotUEFTUyBTdWNj
ZWVkZWQ6ICIvYSIucmVtb3ZlUmVjdXJzaXZlbHkoKQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2Vz
IE5PVCBleGlzdDogL2EKLSogUnVubmluZzogUmVtb3ZlUmVjdXJzaXZlV2l0aENoaWxkcmVuCi1Q
QVNTIFN1Y2NlZWRlZDogIi9hIi5yZW1vdmVSZWN1cnNpdmVseSgpCi1QQVNTIHRoaXMuZXhwZWN0
ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhp
c3Q6IC9hCi1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9vcC1yZW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vb3AtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCww
IEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgot
PHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1yZW1vdmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InJlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1j
aGFycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1jaGFycy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzcgKzAsMCBAQAotKiBSdW5uaW5nOiBSZXN0cmlj
dGVkQ2hhcnMKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYTxiIikKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuZ2V0RmlsZSgiYT5iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYTpi
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYT9iIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiYSpiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYSJiIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYXxiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiPGFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiOmFiIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiP2FiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
KmFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiImFiIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgifGFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWI8IikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWI6IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiYWI/IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWIqIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWIiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiYWJ8IikKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBT
dWNjZWVkZWQ6ICIvYWIiLmNvcHlUbygiLyIsICIgYTxiIikKLVBBU1MgU3VjY2VlZGVkOiAiL2Fi
Ii5jb3B5VG8oIi8iLCAiIGE6YiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hYiIuY29weVRvKCIvIiwg
IiBhP2IiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYWIiLmNvcHlUbygiLyIsICIgYSpiIikKLVBBU1Mg
U3VjY2VlZGVkOiAiL2FiIi5jb3B5VG8oIi8iLCAiIGEiYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9h
YiIuY29weVRvKCIvIiwgIiBhfGIiKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIg
aXMgIjkiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVy
aWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hYiBuYW1lOmFiIHR5cGU6RElSRUNUT1JZfQotUEFT
UyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2E8YiBuYW1lOmE8YiB0eXBlOkZJTEV9Ci1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovIGF8YiBuYW1lOiBhfGIgdHlwZTpESVJF
Q1RPUll9Ci1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9vcC1yZXN0cmljdGVkLWNoYXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMuaHRtbAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1y
ZXN0cmljdGVkLWNoYXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3At
dGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLW5hbWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1u
YW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLW5hbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw1MSArMCwwIEBACi0qIFJ1bm5pbmc6IFJlc3RyaWN0ZWROYW1lcwotUEFTUyB0aGlz
LmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjIiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNv
ZGUgKyAiIiBpcyAiMiIKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY29uIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQ09OIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiQ29uIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY09uLnR4dCIpCi1QQVNTIFN1
Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvY29OIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgicHJuIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiUFJOIikKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuZ2V0RmlsZSgiUHJuIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgicFJu
LnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvcHJOIikKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuZ2V0RmlsZSgiYXV4IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQVVY
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQXV4IikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiYVV4LnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvYXVY
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgibnVsIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiTlVMIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiTnVsIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiblVsLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8i
LmdldEZpbGUoImEvbnVMIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY29tMSIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoIkNPTTIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5n
ZXRGaWxlKCJDb200IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY09NNy5mb28iKQot
UEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhL2NvTTkiKQotUEFTUyBTdWNjZWVkZWQ6ICIv
Ii5nZXRGaWxlKCJscHQxIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiTFBUMiIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoIkxwdDQiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5n
ZXRGaWxlKCJsUFQ3LmZvbyIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvbHBUOSIp
Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImZvbyAiKQotUEFTUyBTdWNjZWVkZWQ6ICIv
Ii5nZXRGaWxlKCJmb28KLSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImZvby4iKQot
UEFTUyBTdWNjZWVkZWQ6ICIvYSIuY29weVRvKCIvIiwgImZvbyAgIikKLVBBU1MgU3VjY2VlZGVk
OiAiL2EiLmNvcHlUbygiLyIsICJmb28JIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygi
LyIsICJmb28uLiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5tb3ZlVG8oIi8iLCAiZm9vICAgICIp
Ci1QQVNTIFN1Y2NlZWRlZDogIi9iIi5tb3ZlVG8oIi8iLCAiZm9vCQkiKQotUEFTUyBTdWNjZWVk
ZWQ6ICIvYyIubW92ZVRvKCIvIiwgImZvby4uLi4uIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9mb28gICAgIG5hbWU6Zm9vICAgICB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVy
aWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9mb28JCSBuYW1lOmZvbwkJIHR5cGU6RElSRUNUT1JZ
fQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2Zvby4uLi4uIG5hbWU6Zm9vLi4u
Li4gdHlwZTpESVJFQ1RPUll9Ci1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLW5hbWVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtbmFtZXMuaHRtbAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0
ZWQtbmFtZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9vcC1yZXN0cmljdGVkLW5hbWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLXVuaWNvZGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9v
cC1yZXN0cmljdGVkLXVuaWNvZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC11bmljb2RlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSArMCwwIEBACi0qIFJ1bm5pbmc6IFJlc3RyaWN0
ZWRVbmljb2RlQ2hhcnMKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWIiKQotUEFTUyB0
aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdl
dEZpbGUoImEBYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImECYiIpCi1QQVNTIFN1
Y2NlZWRlZDogIi8iLmdldEZpbGUoImEDYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUo
ImEEYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEFYiIpCi1QQVNTIFN1Y2NlZWRl
ZDogIi8iLmdldEZpbGUoImEGYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEHYiIp
Ci1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEIYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8i
LmdldEZpbGUoImEJYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEKLWIiKQotUEFT
UyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhC2IiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRG
aWxlKCJhDGIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhCi1iIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiYQ5iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YQ9iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRBiIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiYRFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRJiIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRNiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiYRRiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRViIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRZiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiYRdiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRhiIikKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuZ2V0RmlsZSgiYRliIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRpi
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRtiIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiYRxiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYR1iIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYR5iIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9hYiBuYW1lOmFiIHR5cGU6RklMRX0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMu
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVk
LXVuaWNvZGUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEy
ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11
dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXRlc3RzLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVhZC1kaXJlY3RvcnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQgKzAsMCBAQAotRGlyZWN0b3J5UmVhZGVyLnJl
YWRFbnRyaWVzKCkgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkK
LVBBU1MgcmVhZEVudHJpZXNDb3VudCBpcyBlbnRyaWVzQ2FsbGJhY2tDb3VudAotUEFTUyByZXN1
bHRFbnRyaWVzLmxlbmd0aCBpcyB0ZXN0RW50cmllc0NvdW50Ci1FbnRyeTovYSBpc0RpcmVjdG9y
eTp0cnVlCi1QQVNTIHRlc3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRoXSBpcyBlbnRyeS5pc0RpcmVj
dG9yeQotRW50cnk6L2IgaXNEaXJlY3Rvcnk6ZmFsc2UKLVBBU1MgdGVzdEVudHJpZXNbZW50cnku
ZnVsbFBhdGhdIGlzIGVudHJ5LmlzRGlyZWN0b3J5Ci1FbnRyeTovYyBpc0RpcmVjdG9yeTp0cnVl
Ci1QQVNTIHRlc3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRoXSBpcyBlbnRyeS5pc0RpcmVjdG9yeQot
RW50cnk6L2QgaXNEaXJlY3Rvcnk6ZmFsc2UKLVBBU1MgdGVzdEVudHJpZXNbZW50cnkuZnVsbFBh
dGhdIGlzIGVudHJ5LmlzRGlyZWN0b3J5Ci1FbnRyeTovZSBpc0RpcmVjdG9yeTpmYWxzZQotUEFT
UyB0ZXN0RW50cmllc1tlbnRyeS5mdWxsUGF0aF0gaXMgZW50cnkuaXNEaXJlY3RvcnkKLUVudHJ5
Oi9mIGlzRGlyZWN0b3J5OnRydWUKLVBBU1MgdGVzdEVudHJpZXNbZW50cnkuZnVsbFBhdGhdIGlz
IGVudHJ5LmlzRGlyZWN0b3J5Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3JlYWQtZGly
ZWN0b3J5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
YWQtZGlyZWN0b3J5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsw
LDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGls
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9yZWFkLWRpcmVjdG9yeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9hc3lu
Yy1vcGVyYXRpb25zLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTA2ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRl
c3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4iKTsKLQotdmFy
IGZpbGVTeXN0ZW0gPSBudWxsOwotCi12YXIgYTsKLXZhciBiOwotdmFyIGM7Ci12YXIgZDsKLQot
dmFyIHBhdGhzID0gW107Ci12YXIgZGlyc0NvdW50ID0gMDsKLXZhciByZWFkZXIgPSBudWxsOwot
Ci1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkdvdCBlcnJvcjog
IiArIGVycm9yLmNvZGUpOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9v
dCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXNDYWxsYmFjayhl
bnRyaWVzKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIHBhdGhzLnB1c2goZW50cmllc1tpXS5mdWxsUGF0aCk7Ci0gICAgICAgIGlmIChl
bnRyaWVzW2ldLmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgZGlyc0NvdW50Kys7Ci0gICAgfQot
ICAgIGlmICghZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVu
dHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGF0
aHMuc29ydCgpOwotICAgICAgICBzaG91bGRCZSgnIicgKyBwYXRocy5qb2luKCcsJykgKyAnIics
ICciL2EsL2IsL2MsL2QyLC9lLC9mIicpOwotICAgICAgICBzaG91bGRCZSgiZGlyc0NvdW50Iiwg
IjMiKTsKLSAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290KTsKLSAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnkoKSB7Ci0g
ICAgZGVidWcoIlZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuIik7Ci0gICAgcmVhZGVy
ID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRW50cmll
cyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBhc3luY1Rl
c3QyKCkgewotICAgIGRlYnVnKCJTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuIik7Ci0KLSAg
ICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKLSAgICB2YXIgZG9uZSA9IGZ1bmN0aW9u
KCkgeyBoZWxwZXIuZG9uZSgpOyB9OwotCi0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYS5j
b3B5VG8oYiwgJ3RtcCcsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVu
KGZ1bmN0aW9uKCkgeyBhLmdldE1ldGFkYXRhKGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAg
ICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBiLmdldFBhcmVudChkb25lLCBlcnJvckNhbGxiYWNr
KTsgfSk7Ci0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYy5jb3B5VG8oZmlsZVN5c3RlbS5y
b290LCAnZicsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0
aW9uKCkgeyBkLm1vdmVUbyhmaWxlU3lzdGVtLnJvb3QsICdkMicsIGRvbmUsIGVycm9yQ2FsbGJh
Y2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVtLnJvb3QuZ2V0
RmlsZSgnZScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAg
IGhlbHBlci5qb2luKHZlcmlmeSk7Ci19Ci0KLWZ1bmN0aW9uIGFzeW5jVGVzdDEoKSB7Ci0gICAg
ZGVidWcoIlN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4iKTsKLQotICAgIHZhciBoZWxwZXIg
PSBuZXcgSm9pbkhlbHBlcigpOwotICAgIHZhciByb290ID0gZmlsZVN5c3RlbS5yb290OwotCi0g
ICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVl
fSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgYSA9IGVudHJ5OwotICAgICAgICBoZWxwZXIu
ZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVu
Y3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24o
ZW50cnkpIHsKLSAgICAgICAgYiA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAg
IH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJv
b3QuZ2V0RGlyZWN0b3J5KCdjJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAg
ICAgICAgYyA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2Fs
bGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgn
ZCcsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIGQgPSBlbnRyeTsK
LSAgICAgICAgaGVscGVyLmRvbmUoKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0KLSAg
ICBoZWxwZXIuam9pbihhc3luY1Rlc3QyKTsKLX0KLQotaWYgKHRoaXMud2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0pIHsKLSAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB2YXIgaGVscGVyID0g
bmV3IEpvaW5IZWxwZXIoKTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgewotICAgIHdlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtLmFwcGx5KHRoaXMsIFt0aGlzLlRFTVBPUkFSWSwgMTAwLCBmdW5j
dGlvbihmcykgewotICAgICAgICBkZWJ1ZygiR290IEZpbGVTeXN0ZW06IiArIGZzLm5hbWUpOwot
ICAgICAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZp
bGVTeXN0ZW0ucm9vdCwgZnVuY3Rpb24oKXsgaGVscGVyLmRvbmUoKTsgfSwgZXJyb3JDYWxsYmFj
ayk7Ci0gICAgfSwgZXJyb3JDYWxsYmFja10pOyB9KTsKLSAgICBkZWJ1ZygicmVxdWVzdGVkIEZp
bGVTeXN0ZW0uIik7Ci0gICAgaGVscGVyLmpvaW4oYXN5bmNUZXN0MSk7Ci19IGVsc2UKLSAgICBk
ZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10
by11cmkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9kaXJlY3RvcnktZW50cnktdG8tdXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10by11cmku
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBv
cnRTY3JpcHRzKCdmcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIk9idGFpbmlu
ZyBVUkwgZnJvbSBEaXJlY3RvcnlFbnRyeS4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwot
dmFyIHRlc3REaXJlY3RvcnlOYW1lID0gJ3Rlc3REaXJlY3RvcnknOwotdmFyIHRlc3REaXJlY3Rv
cnlVUkkgPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgdGVz
dEZhaWxlZCgiRXJyb3Igb2NjdXJlZDoiICsgZXJyb3IuY29kZSk7Ci0gICAgZmluaXNoSlNUZXN0
KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJ5VG9VUkwoZW50cnkpIHsKLSAgICB0ZXN0RGlyZWN0b3J5
VVJMID0gZW50cnkudG9VUkwoKTsKLSAgICBzaG91bGRCZSgidGVzdERpcmVjdG9yeVVSTCIsICIn
ZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RGlyZWN0b3J5JyIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVUZXN0RGlyZWN0b3J5KCkgewotICAgIGZp
bGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkodGVzdERpcmVjdG9yeU5hbWUsIHtjcmVhdGU6dHJ1
ZX0sIGVudHJ5VG9VUkwsIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVt
Q2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgcmVtb3ZlQWxsSW5EaXJl
Y3RvcnkoZmlsZVN5c3RlbS5yb290LCBjcmVhdGVUZXN0RGlyZWN0b3J5LCBlcnJvckNhbGxiYWNr
KTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2Via2l0UmVxdWVzdEZpbGVTeXN0
ZW0oVEVNUE9SQVJZLCAxMDAsIGZpbGVTeXN0ZW1DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8t
dXJpLXN5bmMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLXN5
bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotaW1wb3J0U2NyaXB0cygnZnMt
d29ya2VyLWNvbW1vbi5qcycpOwotaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7Ci0KLWRlc2NyaXB0aW9uKCJPYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVu
dHJ5LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhU
RU1QT1JBUlksIDEwMCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290
KTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9ICd0ZXN0RmlsZUVudHJ5LnR4dCc7Ci12YXIgdGVzdEZp
bGVFbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0
cnVlfSk7Ci0KLXNob3VsZEJlKCJ0ZXN0RmlsZUVudHJ5LnRvVVJMKCkiLCAiJ2ZpbGVzeXN0ZW06
ZmlsZTovLy90ZW1wb3JhcnkvdGVzdEZpbGVFbnRyeS50eHQnIik7Ci0KLXJlbW92ZUFsbEluRGly
ZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJpLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1l
bnRyeS10by11cmkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmkuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlw
dHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy10ZXN0LXV0
aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBVUkwgZnJvbSBGaWxlRW50cnku
Iik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciB0ZXN0RmlsZU5hbWUgPSAndGVzdEZp
bGVFbnRyeS50eHQnOwotdmFyIHRlc3RGaWxlVVJJID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JD
YWxsYmFjayhlcnJvcikgewotICAgIHRlc3RGYWlsZWQoIkVycm9yIG9jY3VyZWQ6IiArIGVycm9y
LmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBlbnRyeVRvVVJMKGVu
dHJ5KSB7Ci0gICAgdGVzdEZpbGVVUkwgPSBlbnRyeS50b1VSTCgpOwotICAgIHNob3VsZEJlKCJ0
ZXN0RmlsZVVSTCIsICInZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RmlsZUVudHJ5
LnR4dCciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZp
bGUoKSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRl
OnRydWV9LCBlbnRyeVRvVVJMLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5
c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92ZUFsbElu
RGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2sp
OwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bShURU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUt
ZW50cnktc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUt
ZW50cnktc3luYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyMCArMCwwIEBACi0vLyBGSVhNRTog
bW92ZSB0aGlzIHVuZGVyIHdvcmtlcnMvcmVzb3VyY2VzCi1pbXBvcnRTY3JpcHRzKCdmcy13b3Jr
ZXItY29tbW9uLmpzJyk7Ci1pbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMnKTsKLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBGaWxlIGZyb20gRmlsZUVudHJ5
U3luYy4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMo
dGhpcy5URU1QT1JBUlksIDEwMCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3Rl
bS5yb290KTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9ICcvdGVzdEZpbGVFbnRyeS50eHQnOwotCi12
YXIgdGVzdEZpbGVFbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwg
e2NyZWF0ZTp0cnVlfSk7Ci12YXIgdGVzdEZpbGUgPSB0ZXN0RmlsZUVudHJ5LmZpbGUoKTsKLQot
c2hvdWxkQmUoInRlc3RGaWxlLm5hbWUiLCAidGVzdEZpbGVFbnRyeS5uYW1lIik7Ci1zaG91bGRC
ZSgidGVzdEZpbGUudHlwZSIsICIndGV4dC9wbGFpbiciKTsKLXNob3VsZEJlKCJ0ZXN0RmlsZS5z
aXplIiwgIjAiKTsKLQotcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7
Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxl
LWZyb20tZmlsZS1lbnRyeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi1pZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1v
bi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNj
cmlwdGlvbigiT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuIik7Ci0KLXZhciBmaWxlU3lz
dGVtID0gbnVsbDsKLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlRW50cnkudHh0JzsKLXZh
ciB0ZXN0RmlsZUVudHJ5ID0gbnVsbDsKLXZhciB0ZXN0RmlsZSA9IG51bGw7Ci0KLWZ1bmN0aW9u
IGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICB0ZXN0RmFpbGVkKCJFcnJvciBvY2N1cmVkOiIg
KyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZUNh
bGxiYWNrKGZpbGUpIHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2hvdWxkQmUoInRlc3RG
aWxlLm5hbWUiLCAidGVzdEZpbGVFbnRyeS5uYW1lIik7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxl
LnR5cGUiLCAiJ3RleHQvcGxhaW4nIik7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLnNpemUiLCAi
MCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBnZXRGaWxlRnJvbUVudHJ5
KGVudHJ5KSB7Ci0gICAgdGVzdEZpbGVFbnRyeSA9IGVudHJ5OwotICAgIGVudHJ5LmZpbGUoZmls
ZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUo
KSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRy
dWV9LCBnZXRGaWxlRnJvbUVudHJ5LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZmls
ZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92ZUFs
bEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJh
Y2spOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbShURU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXIt
YWJvcnQtY29udGludWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5qcwkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRl
ci1hYm9ydC1jb250aW51ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxODggKzAsMCBAQAotaWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21t
b24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQot
Ci1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgY2FuIGNvbnRpbnVlIGltbWVkaWF0
ZWx5IGFmdGVyIGFuIGFib3J0LiIpOwotCi12YXIgc2F3V3JpdGVTdGFydDsKLXZhciBzYXdBYm9y
dDsKLXZhciBzYXdXcml0ZUVuZDsKLXZhciB3cml0ZXI7Ci12YXIgZXhwZWN0ZWRMZW5ndGg7Ci12
YXIgdHJ1bmNhdGVMZW5ndGg7Ci12YXIgYmxvYlNpemUgPSAxMTAwMDAwOwotdmFyIGN1cnJlbnRU
ZXN0ID0gMDsKLXZhciBibG9iID0gZ2V0QmxvYigpOwotCi0vLyBmaWxlU3lzdGVtT3ZlcmhlYWQg
aXMgYW4gZXN0aW1hdGUgb2YgZXh0cmEgc2l6ZSBuZWVkZWQgdG8gc2F2ZSBhIGZ1bGwgZmlsZQot
Ly8gc3lzdGVtLCBpdCBuZWVkIHRvIGJlIGxhcmdlIGVub3VnaCB0byBhdm9pZCB0ZXN0IGZhaWx1
cmUgZHVlIHRvIGZpbGUgc3lzdGVtCi0vLyBxdW90YSBsaW1pdC4KLXZhciBmaWxlU3lzdGVtT3Zl
cmhlYWQgPSBibG9iU2l6ZSAqIDUgLyAxMDAwICsgMTAyNDsKLXZhciBmaWxlU3lzdGVtU2l6ZSA9
IGJsb2JTaXplICogMiArIGZpbGVTeXN0ZW1PdmVyaGVhZDsKLQotdmFyIG1ldGhvZFNldCA9IFsK
LSAgeyAgLy8gU2V0dXAgbWV0aG9kIHNldCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3
cml0ZSBiZWZvcmUgY29tcGxldGlvbi4KLSAgICBhY3Rpb24gOiBzdGFydFdyaXRlLAotICAgIHZl
cmlmeUxlbmd0aCA6IDAsCi0gICAgb253cml0ZXN0YXJ0IDogYWJvcnRXcml0ZSwKLSAgICBvbnBy
b2dyZXNzIDogbm9wLAotICAgIG9ud3JpdGUgOiBvbkVycm9yLAotICAgIG9uYWJvcnQgOiBsb2dB
Ym9ydCwKLSAgICBvbndyaXRlZW5kIDogY2hlY2tMZW5ndGhBbmRTdGFydE5leHRUZXN0Ci0gIH0s
Ci0gIHsgIC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgd3JpdGUuCi0gICAgYWN0
aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2ZXJpZnlMZW5ndGggOiBibG9iU2l6ZSwKLSAgICBvbndy
aXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9w
LAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFu
ZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAgeyAvLyBNZXRob2Qgc2V0IHRoYXQgZG9lcyBhIGNvbXBs
ZXRlIHRydW5jYXRlLCBqdXN0IHRvIGNsZWFuIHVwLgotICAgIGFjdGlvbiA6IHN0YXJ0VHJ1bmNh
dGUsCi0gICAgdHJ1bmNhdGVMZW5ndGggOiAwLAotICAgIHZlcmlmeUxlbmd0aCA6IDAsCi0gICAg
b253cml0ZXN0YXJ0IDogbm9wLAotICAgIG9ucHJvZ3Jlc3MgOiBub3AsCi0gICAgb253cml0ZSA6
IG5vcCwKLSAgICBvbmFib3J0IDogb25FcnJvciwKLSAgICBvbndyaXRlZW5kIDogY2hlY2tMZW5n
dGhBbmRTdGFydE5leHRUZXN0Ci0gIH0sCi0gIHsgIC8vIFNldHVwIG1ldGhvZCBzZXQgdGhhdCB3
cml0ZXMsIHRoZW4gYWJvcnRzIHRoYXQgd3JpdGUganVzdCBhdCBjb21wbGV0aW9uLgotICAgIGFj
dGlvbiA6IHN0YXJ0V3JpdGUsCi0gICAgdmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUsCi0gICAgb253
cml0ZXN0YXJ0IDogbm9wLAotICAgIG9ucHJvZ3Jlc3MgOiBhYm9ydE9uQ29tcGxldGUsCi0gICAg
b253cml0ZSA6IG5vcCwKLSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAgb253cml0ZWVuZCA6
IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7ICAvLyBNZXRob2Qgc2V0IHRo
YXQgZG9lcyBhIGNvbXBsZXRlIHdyaXRlLgotICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUsCi0gICAg
dmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUgKiAyLCAvLyBBZGQgaW4gbGVmdG92ZXJzIGZyb20gcHJl
dmlvdXMgbWV0aG9kLgotICAgIG9ud3JpdGVzdGFydCA6IG5vcCwKLSAgICBvbnByb2dyZXNzIDog
bm9wLAotICAgIG9ud3JpdGUgOiBub3AsCi0gICAgb25hYm9ydCA6IG9uRXJyb3IsCi0gICAgb253
cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7IC8vIE1ldGhv
ZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgdHJ1bmNhdGUsIGp1c3QgdG8gY2xlYW4gdXAuCi0g
ICAgYWN0aW9uIDogc3RhcnRUcnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxlbmd0aCA6IDAsCi0gICAg
dmVyaWZ5TGVuZ3RoIDogMCwKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVz
cyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAg
IG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAgeyAgLy8g
U2V0dXAgbWV0aG9kIHNldCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3cml0ZSBhcyBp
dCBzdGFydHMuCi0gICAgYWN0aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2ZXJpZnlMZW5ndGggOiAw
LAotICAgIG9ud3JpdGVzdGFydCA6IGFib3J0V3JpdGUsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwK
LSAgICBvbndyaXRlIDogb25FcnJvciwKLSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAgb253
cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7IC8vIE1ldGhv
ZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgdHJ1bmNhdGUuCi0gICAgYWN0aW9uIDogc3RhcnRU
cnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxlbmd0aCA6IDcsCi0gICAgdmVyaWZ5TGVuZ3RoIDogNywK
LSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndy
aXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVj
a0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfQotXTsKLQotZnVuY3Rpb24gbm9wKCkgewotfQot
Ci1mdW5jdGlvbiB0ZW5YQmxvYihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0gICAgfQot
ICAgIHJldHVybiBuZXcgQmxvYihiYik7Ci19Ci0KLWZ1bmN0aW9uIGdldEJsb2IoKSB7Ci0gICAg
Ly8gTGV0J3MgbWFrZSBpdCBhYm91dCBhIG1lZ2FieXRlLgotICAgIHZhciBibG9iID0gdGVuWEJs
b2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2Ip
OwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7
Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIHZhciBzaXplID0gYmxvYi5zaXplOwot
ICAgIHNob3VsZEJlKCIiICsgc2l6ZSwgImJsb2JTaXplIik7Ci0gICAgcmV0dXJuIGJsb2I7Ci19
Ci0KLWZ1bmN0aW9uIGFib3J0V3JpdGUoZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJv
cnQiKTsKLSAgICB3cml0ZXIuYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gYWJvcnRPbkNvbXBsZXRl
KGUpIHsKLSAgICBpZiAoZS5sb2FkZWQgPT0gZS50b3RhbCkgewotICAgICAgICB0ZXN0UGFzc2Vk
KCJDYWxsaW5nIGFib3J0IGF0IHRoZSBlbmQgb2YgdGhlIHdyaXRlIik7Ci0gICAgICAgIHdyaXRl
ci5hYm9ydCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nQWJvcnQoZSkgewotICAgIHRlc3RQ
YXNzZWQoIlNhdyBhYm9ydCIpOwotfQotCi1mdW5jdGlvbiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4
dFRlc3QoZSkgewotICAgIHNob3VsZEJlKCJ3cml0ZXIubGVuZ3RoIiwgIiIgKyBleHBlY3RlZExl
bmd0aCk7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kICIgKyBjdXJyZW50VGVzdCArICIu
Iik7Ci0gICAgKytjdXJyZW50VGVzdDsKLSAgICBpZiAoY3VycmVudFRlc3QgPCBtZXRob2RTZXQu
bGVuZ3RoKQotICAgICAgICBydW5UZXN0KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RQYXNz
ZWQoIkFsbCB0ZXN0cyBjb21wbGV0ZS4iKTsKLSAgICAgICAgY2xlYW5VcCgpOwotICAgIH0KLX0K
LQotZnVuY3Rpb24gc3RhcnRXcml0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIHdyaXRl
LiIpOwotICAgIHdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRUcnVuY2F0
ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIHRydW5jYXRlLiIpOwotICAgIHdyaXRlci50
cnVuY2F0ZSh0cnVuY2F0ZUxlbmd0aCk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwV3JpdGVyKG1ldGhv
ZFNldEluZGV4LCB3cml0ZXIpIHsKLSAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0KLSAg
ICB2YXIgbWV0aG9kcyA9IG1ldGhvZFNldFttZXRob2RTZXRJbmRleF07Ci0gICAgd3JpdGVyLm9u
YWJvcnQgPSBtZXRob2RzLm9uYWJvcnQ7Ci0gICAgd3JpdGVyLm9ud3JpdGVzdGFydCA9IG1ldGhv
ZHMub253cml0ZXN0YXJ0OwotICAgIHdyaXRlci5vbnByb2dyZXNzID0gbWV0aG9kcy5vbnByb2dy
ZXNzOwotICAgIHdyaXRlci5vbndyaXRlID0gbWV0aG9kcy5vbndyaXRlOwotICAgIHdyaXRlci5v
bndyaXRlZW5kID0gbWV0aG9kcy5vbndyaXRlZW5kOwotICAgIGV4cGVjdGVkTGVuZ3RoID0gbWV0
aG9kcy52ZXJpZnlMZW5ndGg7Ci0gICAgdHJ1bmNhdGVMZW5ndGggPSBtZXRob2RzLnRydW5jYXRl
TGVuZ3RoOwotICAgIG1ldGhvZHMuYWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7
Ci0gICAgc2V0dXBXcml0ZXIoY3VycmVudFRlc3QsIHdyaXRlcik7Ci19Ci0KLXZhciBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLXNldHVwQW5kUnVuVGVzdChmaWxlU3lzdGVtU2l6ZSwgJ2ZpbGUtd3Jp
dGVyLWFib3J0JywKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZmlsZUVudHJ5LCBmaWxlV3Jp
dGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVFbnRyeUZvckNsZWFudXAgPSBmaWxlRW50
cnk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7Ci0gICAgICAgICAg
ICAgICAgICAgIHJ1blRlc3QoKTsKLSAgICAgICAgICAgICAgICB9KTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtZGVwdGguanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxl
LXdyaXRlci1hYm9ydC1kZXB0aC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0g
ICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQg
RmlsZVdyaXRlciBkZWZlbmRzIGFnYWluc3QgaW5maW5pdGUgcmVjdXJzaW9uIHZpYSBhYm9ydC4i
KTsKLQotdmFyIHNhd1dyaXRlU3RhcnQ7Ci12YXIgc2F3QWJvcnQ7Ci12YXIgc2F3V3JpdGVFbmQ7
Ci12YXIgd3JpdGVyOwotdmFyIGJsb2IgPSBuZXcgQmxvYihbImxvcmVtIGlwc3VtIl0pOwotdmFy
IHJlY3Vyc2lvbkRlcHRoID0gMDsKLXZhciBtZXRob2Q7Ci12YXIgdGVzdHNSdW4gPSAwOwotCi1m
dW5jdGlvbiBvbldyaXRlU3RhcnQoZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQi
KTsKLSAgICArK3JlY3Vyc2lvbkRlcHRoOwotICAgIHdyaXRlci5hYm9ydCgpOwotfQotCi0vLyBX
ZSBzaG91bGQgYWx3YXlzIGFib3J0IGJlZm9yZSBjb21wbGV0aW9uLgotZnVuY3Rpb24gb25Xcml0
ZShlKSB7Ci0gICAgdGVzdEZhaWxlZCgiSW4gb25Xcml0ZS4iKTsKLX0KLQotZnVuY3Rpb24gb25B
Ym9ydChlKSB7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IGFib3J0Iik7Ci0gICAgdHJ5IHsKLSAgICAg
IG1ldGhvZCgpOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICBhc3NlcnQoZXguY29kZSA9PSAy
KTsgIC8vIFNlY3VyaXR5IGVycm9yCi0gICAgICB0ZXN0UGFzc2VkKCJTYXcgc2VjdXJpdHkgZXJy
b3IiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVFbmQoZSkgewotICAgIC0tcmVjdXJz
aW9uRGVwdGg7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kLiIpOwotICAgIGlmICghcmVj
dXJzaW9uRGVwdGgpIHsKLSAgICAgICAgKyt0ZXN0c1J1bjsKLSAgICAgICAgaWYgKHRlc3RzUnVu
ID09IDEpIHsKLSAgICAgICAgICAgIG1ldGhvZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgdHJ1bmNhdGUuIik7Ci0gICAgICAgICAgICAgICAgd3Jp
dGVyLnRydW5jYXRlKDcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0VGltZW91dCht
ZXRob2QsIDApOyAgLy8gSW52b2tlIGZyb20gdGhlIHRvcCBsZXZlbCwgc28gdGhhdCB3ZSdyZSBu
b3QgYWxyZWFkeSBpbiBhIGhhbmRsZXIuCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBj
bGVhblVwKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodW51c2Vk
RmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgd3JpdGVyID0gZmlsZVdyaXRlcjsKLSAgICBt
ZXRob2QgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgd3JpdGUu
Iik7Ci0gICAgICAgIHdyaXRlci53cml0ZShibG9iKTsKLSAgICB9Ci0gICAgZmlsZVdyaXRlci5v
bmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxlV3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0OwotICAg
IGZpbGVXcml0ZXIub253cml0ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIu
b253cml0ZSA9IG9uV3JpdGU7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gb25Xcml0ZUVu
ZDsKLSAgICBtZXRob2QoKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBB
bmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXItYWJvcnQtZGVwdGgnLCBydW5UZXN0
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0
ZXItYWJvcnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLXdyaXRlci1hYm9ydC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw4NCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0g
ICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQg
RmlsZVdyaXRlciBoYW5kbGVzIGFib3J0IHByb3Blcmx5LiIpOwotCi12YXIgc2F3V3JpdGVTdGFy
dDsKLXZhciBzYXdBYm9ydDsKLXZhciBzYXdXcml0ZUVuZDsKLXZhciB3cml0ZXI7Ci0KLWZ1bmN0
aW9uIHRlblhCbG9iKGJsb2IpIHsKLSAgICB2YXIgYmIgPSBbXTsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwOyArK2kpIHsKLSAgICAgICAgYmIucHVzaChibG9iKTsKLSAgICB9Ci0gICAgcmV0
dXJuIG5ldyBCbG9iKGJiKTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZVN0YXJ0KGUpIHsKLSAgICBh
c3NlcnQod3JpdGVyKTsKLSAgICBhc3NlcnQod3JpdGVyLnJlYWR5U3RhdGUgPT0gd3JpdGVyLldS
SVRJTkcpOwotICAgIGFzc2VydChlLnR5cGUgPT0gIndyaXRlc3RhcnQiKTsKLSAgICBhc3NlcnQo
IXNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydCgh
ZS5sb2FkZWQpOwotICAgIHNhd1dyaXRlU3RhcnQgPSB0cnVlOwotICAgIHRlc3RQYXNzZWQoIkNh
bGxpbmcgYWJvcnQiKTsKLSAgICB3cml0ZXIuYWJvcnQoKTsKLX0KLQotLy8gV2Ugc2hvdWxkIGFs
d2F5cyBhYm9ydCBiZWZvcmUgY29tcGxldGlvbi4KLWZ1bmN0aW9uIG9uV3JpdGUoZSkgewotICAg
IHRlc3RGYWlsZWQoIkluIG9uV3JpdGUuIik7Ci19Ci0KLWZ1bmN0aW9uIG9uQWJvcnQoZSkgewot
ICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7Ci0gICAgYXNzZXJ0
KHdyaXRlci5lcnJvci5jb2RlID09IHdyaXRlci5lcnJvci5BQk9SVF9FUlIpOwotICAgIGFzc2Vy
dChzYXdXcml0ZVN0YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQo
IXNhd0Fib3J0KTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJhYm9ydCIpOwotICAgIHNhd0Fib3J0
ID0gdHJ1ZTsKLSAgICB0ZXN0UGFzc2VkKCJTYXcgYWJvcnQiKTsKLX0KLQotZnVuY3Rpb24gb25X
cml0ZUVuZChlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05F
KTsKLSAgICBhc3NlcnQod3JpdGVyLmVycm9yLmNvZGUgPT0gd3JpdGVyLmVycm9yLkFCT1JUX0VS
Uik7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdBYm9ydCk7Ci0g
ICAgYXNzZXJ0KCFzYXdXcml0ZUVuZCk7Ci0gICAgYXNzZXJ0KGUudHlwZSA9PSAid3JpdGVlbmQi
KTsKLSAgICBzYXdXcml0ZUVuZCA9IHRydWU7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5k
LiIpOwotICAgIHdyaXRlci5hYm9ydCgpOyAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBkb2VzIG5vdGhp
bmcgaW4gcmVhZHlTdGF0ZSBET05FLgotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gc3Rh
cnRXcml0ZShmaWxlV3JpdGVyKSB7Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBhYm91dCBhIG1lZ2Fi
eXRlLgotICAgIHZhciBibG9iID0gdGVuWEJsb2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1bSJdKSk7
Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsK
LSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwot
ICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJv
cjsKLSAgICBmaWxlV3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0OwotICAgIGZpbGVXcml0ZXIub253
cml0ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9IG9uV3Jp
dGU7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gb25Xcml0ZUVuZDsKLSAgICBmaWxlV3Jp
dGVyLmFib3J0KCk7ICAvLyBWZXJpZnkgdGhhdCB0aGlzIGRvZXMgbm90aGluZyBpbiByZWFkeVN0
YXRlIElOSVQuCi0gICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVu
VGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRlKGZpbGVX
cml0ZXIpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIq
MTAyNCoxMDI0LCAnZmlsZS13cml0ZXItYWJvcnQnLCBydW5UZXN0KTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUt
d3JpdGVyLWVtcHR5LWJsb2IuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyOSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAg
aW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMo
J2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgRmls
ZVdyaXRlciB3b3JrcyB3aXRob3V0IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGFuIGVtcHR5
IGJsb2IuIik7Ci0KLXZhciBmaWxlRW50cnk7Ci0KLWZ1bmN0aW9uIG9uVGVzdFN1Y2Nlc3MoKSB7
Ci0gICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuIik7Ci0gICAgY2xlYW5V
cCgpOwotfQotCi1mdW5jdGlvbiBzdGFydFdyaXRlKHdyaXRlcikgewotICAgIHZhciBibG9iID0g
bmV3IEJsb2IoWyIiXSk7Ci0gICAgd3JpdGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIHdyaXRl
ci5vbndyaXRlZW5kID0gb25UZXN0U3VjY2VzczsKLSAgICB3cml0ZXIud3JpdGUoYmxvYik7Ci19
Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodW51c2VkRmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAg
c3RhcnRXcml0ZShmaWxlV3JpdGVyKTsKLSAgICBnYygpOwotfQotdmFyIGpzVGVzdElzQXN5bmMg
PSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIgKiAxMDI0ICogMTAyNCwgJ2ZpbGUtd3JpdGVyLWVt
cHR5LWJsb2InLCBydW5UZXN0KTsKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmls
ZS13cml0ZXItZXZlbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNCArMCwwIEBACi1pZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1v
bi5qcycpOwotICAgIGlmICghKCdkZXNjcmlwdGlvbicgaW4gc2VsZikpICAvLyBTaGFyZWQgd29y
a2VycyB3aWxsIGFscmVhZHkgaGF2ZSBpbXBvcnRlZCB0aGlzLCBhbmQgaW1wb3J0aW5nIHR3aWNl
IHdvdWxkIGJyZWFrIGl0LgotICAgICAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGls
cy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMg
cHJvcGVyIHByb2dyZXNzIGV2ZW50cy4iKTsKLQotdmFyIGZpbGVFbnRyeTsKLXZhciBzYXdXcml0
ZVN0YXJ0OwotdmFyIHNhd1dyaXRlOwotdmFyIHNhd1dyaXRlRW5kOwotdmFyIHNhd1Byb2dyZXNz
OwotdmFyIHdyaXRlcjsKLXZhciBsYXN0UHJvZ3Jlc3MgPSAwOwotdmFyIHRvQmVXcml0dGVuOwot
Ci1mdW5jdGlvbiB0ZW5YQmxvYihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0gICAgfQot
ICAgIHJldHVybiBuZXcgQmxvYihiYik7Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVTdGFydChlKSB7
Ci0gICAgYXNzZXJ0KHdyaXRlcik7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdy
aXRlci5XUklUSU5HKTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJ3cml0ZXN0YXJ0Iik7Ci0gICAg
YXNzZXJ0KCFzYXdXcml0ZVN0YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1Byb2dyZXNzKTsKLSAgICBh
c3NlcnQoIXNhd1dyaXRlKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3NlcnQo
IWUubG9hZGVkKTsKLSAgICBhc3NlcnQoZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3
V3JpdGVTdGFydCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIG9uUHJvZ3Jlc3MoZSkgewotICAgIGFz
c2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuV1JJVElORyk7Ci0gICAgYXNzZXJ0KHNh
d1dyaXRlU3RhcnQpOwotICAgIGFzc2VydCghc2F3V3JpdGUpOwotICAgIGFzc2VydCghc2F3V3Jp
dGVFbmQpOwotICAgIGFzc2VydChlLnR5cGUgPT0gInByb2dyZXNzIik7Ci0gICAgYXNzZXJ0KGUu
bG9hZGVkIDw9IGUudG90YWwpOwotICAgIGFzc2VydChsYXN0UHJvZ3Jlc3MgPCBlLmxvYWRlZCk7
Ci0gICAgYXNzZXJ0KGUudG90YWwgPT0gdG9CZVdyaXR0ZW4pOwotICAgIGxhc3RQcm9ncmVzcyA9
IGUubG9hZGVkOwotICAgIHNhd1Byb2dyZXNzID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gb25Xcml0
ZShlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05FKTsKLSAg
ICBhc3NlcnQoc2F3V3JpdGVTdGFydCk7Ci0gICAgYXNzZXJ0KHNhd1Byb2dyZXNzKTsKLSAgICBh
c3NlcnQobGFzdFByb2dyZXNzID09IGUudG90YWwpOwotICAgIGFzc2VydCghc2F3V3JpdGUpOwot
ICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydChlLnR5cGUgPT0gIndyaXRlIik7
Ci0gICAgYXNzZXJ0KGUubG9hZGVkID09IGUudG90YWwpOwotICAgIGFzc2VydChlLnRvdGFsID09
IHRvQmVXcml0dGVuKTsKLSAgICBzYXdXcml0ZSA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIG9uV3Jp
dGVFbmQoZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7
Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdQcm9ncmVzcyk7Ci0g
ICAgYXNzZXJ0KHNhd1dyaXRlKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBhc3Nl
cnQoZS50eXBlID09ICJ3cml0ZWVuZCIpOwotICAgIGFzc2VydChlLmxvYWRlZCA9PSBlLnRvdGFs
KTsKLSAgICBhc3NlcnQoZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3V3JpdGVFbmQg
PSB0cnVlOwotICAgIHRlc3RQYXNzZWQoIlNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4iKTsKLSAg
ICBjbGVhblVwKCk7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0V3JpdGUoZmlsZVdyaXRlcikgewotICAg
IC8vIExldCdzIG1ha2UgaXQgYWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxvYiA9IHRlblhC
bG9iKG5ldyBCbG9iKFsibG9yZW0gaXBzdW0iXSkpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9i
KTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2Ip
OwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICB0b0JlV3JpdHRlbiA9IGJsb2Iuc2l6
ZTsKLSAgICB3cml0ZXIgPSBmaWxlV3JpdGVyOwotICAgIGZpbGVXcml0ZXIub25lcnJvciA9IG9u
RXJyb3I7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlc3RhcnQgPSBvbldyaXRlU3RhcnQ7Ci0gICAg
ZmlsZVdyaXRlci5vbnByb2dyZXNzID0gb25Qcm9ncmVzczsKLSAgICBmaWxlV3JpdGVyLm9ud3Jp
dGUgPSBvbldyaXRlOwotICAgIGZpbGVXcml0ZXIub253cml0ZWVuZCA9IG9uV3JpdGVFbmQ7Ci0g
ICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRG
aWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBhc3NlcnQodHlwZW9mIGZpbGVXcml0ZXIuYWRk
RXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyk7Ci0gICAgYXNzZXJ0KHR5cGVvZiBmaWxlV3Jp
dGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicpOwotICAgIGFzc2VydCh0eXBl
b2YgZmlsZVdyaXRlci5kaXNwYXRjaEV2ZW50ID09PSAnZnVuY3Rpb24nKTsKLSAgICBzdGFydFdy
aXRlKGZpbGVXcml0ZXIpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRS
dW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXItZXZlbnRzJywgcnVuVGVzdCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJs
b2IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9maWxlLXdyaXRlci1nYy1ibG9iLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAg
IGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRz
KCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IGEg
YmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQg
YnkgYSBGaWxlV3JpdGVyLiIpOwotCi12YXIgZmlsZUVudHJ5OwotCi1mdW5jdGlvbiBvblRlc3RT
dWNjZXNzKCkgewotICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLiIpOwot
ICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gdGVuWEJsb2IoYmxvYikgewotICAgIHZhciBi
YiA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgewotICAgICAgICBiYi5w
dXNoKGJsb2IpOwotICAgIH0KLSAgICByZXR1cm4gbmV3IEJsb2IoYmIpOwotfQotCi1mdW5jdGlv
biBzdGFydFdyaXRlKHdyaXRlcikgewotICAgIC8vIExldCdzIG1ha2UgaXQgYWJvdXQgYSBtZWdh
Ynl0ZS4KLSAgICB2YXIgYmxvYiA9IHRlblhCbG9iKG5ldyBCbG9iKFsibG9yZW0gaXBzdW0iXSkp
OwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7
Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsK
LSAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0gICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBv
blRlc3RTdWNjZXNzOwotICAgIHdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVu
VGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRlKGZpbGVX
cml0ZXIpOwotICAgIGdjKCk7Ci19Ci12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1zZXR1cEFu
ZFJ1blRlc3QoMioxMDI0KjEwMjQsICdmaWxlLXdyaXRlci1nYy1ibG9iJywgcnVuVGVzdCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5
bmMtdHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDAgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMo
Jy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB1
c2luZyBGaWxlV3JpdGVyU3luYy50cnVuY2F0ZSB0byBleHRlbmQgYSBmaWxlLiIpOwotCi0vLyBT
dGFydCB3aXRoIGFuIGVtcHR5IEZpbGVTeXN0ZW0uCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJlbW92ZUFsbEluRGly
ZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotCi0vLyBQcmVwYXJlIGEgZmlsZSB3aXRoIHNh
bXBsZSBjb250ZW50cy4KLXZhciBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdhJywg
e2NyZWF0ZTp0cnVlLCBleGNsdXNpdmU6dHJ1ZX0pOwotdmFyIHdyaXRlciA9IGVudHJ5LmNyZWF0
ZVdyaXRlcigpOwotYXNzZXJ0KCF3cml0ZXIucG9zaXRpb24pOwotdmFyIHRlc3REYXRhID0gInRl
c3QgZGF0YSI7Ci13cml0ZXIud3JpdGUobmV3IEJsb2IoW3Rlc3REYXRhXSkpOwotYXNzZXJ0KHdy
aXRlci5sZW5ndGggPT0gdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24g
PT0gd3JpdGVyLmxlbmd0aCk7Ci0KLS8vIEV4dGVuZCB0aGUgZmlsZSB2aWEgdHJ1bmNhdGUuCi12
YXIgZXh0ZW5zaW9uTGVuZ3RoID0gMTA7Ci13cml0ZXIudHJ1bmNhdGUod3JpdGVyLmxlbmd0aCAr
IGV4dGVuc2lvbkxlbmd0aCk7Ci0KLS8vIFZlcmlmeSB0aGUgY29udGVudHMuCi1hc3NlcnQod3Jp
dGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25MZW5ndGgpOwotYXNzZXJ0
KHdyaXRlci5wb3NpdGlvbiA9PSB0ZXN0RGF0YS5sZW5ndGgpOwotdmFyIGZpbGUgPSBlbnRyeS5m
aWxlKCk7Ci12YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXJTeW5jKCk7Ci12YXIgY29udGVudHMg
PSByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwotdmFyIGk7Ci1mb3IgKGkgPSAwOyBp
IDwgdGVzdERhdGEubGVuZ3RoOyArK2kpCi0gICAgYXNzZXJ0KGNvbnRlbnRzLmNoYXJDb2RlQXQo
aSkgPT0gdGVzdERhdGEuY2hhckNvZGVBdChpKSk7Ci1mb3IgKDsgaSA8IHdyaXRlci5sZW5ndGg7
ICsraSkKLSAgICBhc3NlcnQoIWNvbnRlbnRzLmNoYXJDb2RlQXQoaSkpOwotCi10ZXN0UGFzc2Vk
KCJUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13
cml0ZS1vdmVybGFwcGVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzCShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2Zp
bGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5
MSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHVz
aW5nIEZpbGVXcml0ZXJTeW5jLnNlZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcgZXhpc3RpbmcgZGF0
YSBpbiBhIGZpbGUuIik7Ci0KLS8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgRmlsZVN5c3RlbS4KLXZh
ciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKHRoaXMuVEVNUE9SQVJZ
LCAxMDApOwotcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0KLS8v
IFByZXBhcmUgYSBmaWxlIHdpdGggc2FtcGxlIGNvbnRlbnRzLgotdmFyIGVudHJ5ID0gZmlsZVN5
c3RlbS5yb290LmdldEZpbGUoJ2EnLCB7Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0cnVlfSk7Ci12
YXIgd3JpdGVyID0gZW50cnkuY3JlYXRlV3JpdGVyKCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlv
bik7Ci12YXIgdGVzdERhdGEgPSAidGVzdCBkYXRhIjsKLXZhciBibG9iID0gbmV3IEJsb2IoW3Rl
c3REYXRhXSk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSB0
ZXN0RGF0YS5sZW5ndGgpOwotYXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9PSB3cml0ZXIubGVuZ3Ro
KTsKLQotLy8gU2VlayBiYWNrIHRvIGZyb20gdGhlIGVuZCwgdGhlbiBvdmVyd3JpdGUsIGV4dGVu
ZGluZyB0aGUgZmlsZS4KLXZhciBleHRlbnNpb25PZmZzZXQgPSAtNDsKLXdyaXRlci5zZWVrKGV4
dGVuc2lvbk9mZnNldCk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci0KLS8vIFZlcmlmeSB0aGUgY29u
dGVudHMuCi1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSAyICogdGVzdERhdGEubGVuZ3RoICsgZXh0
ZW5zaW9uT2Zmc2V0KTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7
Ci12YXIgZmlsZSA9IGVudHJ5LmZpbGUoKTsKLXZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlclN5
bmMoKTsKLXZhciBjb250ZW50cyA9IHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7Ci12
YXIgaTsKLWZvciAoaSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25PZmZzZXQ7
ICsraSkKLSAgICBhc3NlcnQoY29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0ZXN0RGF0YS5jaGFy
Q29kZUF0KGkpKTsKLXZhciBqOwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5sZW5ndGg7ICsraSwg
KytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJD
b2RlQXQoaikpOwotdGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAxIHZlcmlmaWVkLiIpOwot
Ci0vLyBUcnVuY2F0ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29udGVudHMuCi13cml0
ZXIudHJ1bmNhdGUoMCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1hc3NlcnQoIXdyaXRl
ci5sZW5ndGgpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0g
dGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0
aCk7Ci0KLS8vIFNlZWsgZm9yd2FyZCBmcm9tIHRoZSBiZWdpbm5pbmcsIHRoZW4gb3ZlcndyaXRl
LCBleHRlbmRpbmcgdGhlIGZpbGUuCi1leHRlbnNpb25PZmZzZXQgPSA0Owotd3JpdGVyLnNlZWso
ZXh0ZW5zaW9uT2Zmc2V0KTsKLXdyaXRlci53cml0ZShibG9iKTsKLWFzc2VydCh3cml0ZXIubGVu
Z3RoID09IHRlc3REYXRhLmxlbmd0aCArIGV4dGVuc2lvbk9mZnNldCk7Ci1hc3NlcnQod3JpdGVy
LnBvc2l0aW9uID09IHdyaXRlci5sZW5ndGgpOwotCi0vLyBWZXJpZnkgdGhlIGNvbnRlbnRzLgot
Y29udGVudHMgPSByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwotZm9yIChpID0gMDsg
aSA8IGV4dGVuc2lvbk9mZnNldDsgKytpKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0
KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaSkpOwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5s
ZW5ndGg7ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRl
c3REYXRhLmNoYXJDb2RlQXQoaikpOwotdGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAyIHZl
cmlmaWVkLiIpOwotCi0vLyBUcnVuY2F0ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29u
dGVudHMuCi13cml0ZXIudHJ1bmNhdGUoMCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1h
c3NlcnQoIXdyaXRlci5sZW5ndGgpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotd3JpdGVyLndyaXRl
KGJsb2IpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0aCk7Ci1h
c3NlcnQod3JpdGVyLnBvc2l0aW9uID09IHdyaXRlci5sZW5ndGgpOwotCi0vLyBTZWVrIGZvcndh
cmQgZnJvbSB0aGUgYmVnaW5uaW5nLCB0aGVuIG92ZXJ3cml0ZSBpbiB0aGUgbWlkZGxlIG9mIHRo
ZSBmaWxlLgotZXh0ZW5zaW9uT2Zmc2V0ID0gNDsKLXdyaXRlci5zZWVrKGV4dGVuc2lvbk9mZnNl
dCk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSAyICogdGVz
dERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gdGVzdERhdGEubGVuZ3Ro
ICsgZXh0ZW5zaW9uT2Zmc2V0KTsKLQotLy8gVmVyaWZ5IHRoZSBjb250ZW50cy4KLWNvbnRlbnRz
ID0gcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTsKLWZvciAoaSA9IDA7IGkgPCBleHRl
bnNpb25PZmZzZXQ7ICsraSkKLSAgICBhc3NlcnQoY29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0
ZXN0RGF0YS5jaGFyQ29kZUF0KGkpKTsKLWZvciAoaiA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGgg
KyBleHRlbnNpb25PZmZzZXQ7ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29k
ZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwotZm9yIChqID0gZXh0ZW5zaW9uT2Zm
c2V0OyBpIDwgd3JpdGVyLmxlbmd0aDsgKytpLCArK2opCi0gICAgYXNzZXJ0KGNvbnRlbnRzLmNo
YXJDb2RlQXQoaSkgPT0gdGVzdERhdGEuY2hhckNvZGVBdChqKSk7Ci10ZXN0UGFzc2VkKCJPdmVy
bGFwcGVkIHdyaXRlIDMgdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0
ZW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRl
LWV4dGVuZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi1pZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwot
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwot
ICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IG9mIGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4iKTsKLQotZnVu
Y3Rpb24gb25UZXN0U3VjY2VlZGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRl
bnNpb24gdmVyaWZpZWQuIik7Ci0gICAgY2xlYW5VcCgpOwotfQotCi1mdW5jdGlvbiB0cnVuY2F0
ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uU3VjY2VzcykKLXsK
LSAgICB2YXIgZXh0ZW5zaW9uID0gNTsKLSAgICB2YXIgbGVuZ3RoQ2hlY2tlciA9IGZ1bmN0aW9u
KCkgewotICAgICAgICB2ZXJpZnlGaWxlTGVuZ3RoKGZpbGVFbnRyeSwgY29udGVudHMubGVuZ3Ro
ICsgZXh0ZW5zaW9uLCBvblN1Y2Nlc3MpOwotICAgIH07Ci0gICAgdmFyIGV4dGVuc2lvbkNoZWNr
ZXIgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVu
dHJ5LCBjb250ZW50cy5sZW5ndGgsIGV4dGVuc2lvbiwgbGVuZ3RoQ2hlY2tlcik7Ci0gICAgfTsK
LSAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmVyaWZ5Qnl0
ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCBjb250ZW50cywgZXh0ZW5zaW9uQ2hlY2tlcik7
Ci0gICAgfTsKLSAgICBmaWxlV3JpdGVyLnRydW5jYXRlKGNvbnRlbnRzLmxlbmd0aCArIGV4dGVu
c2lvbik7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0g
ICAgdmFyIGNvbnRlbnRzID0gIkxvcmVtIGlwc3VtIjsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50
cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRlbnRzLAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdy
aXRlciwgY29udGVudHMsIG9uVGVzdFN1Y2NlZWRlZCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci19
Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXNldHVwQW5kUnVuVGVzdCgxMDI0LCAnZmls
ZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRp
bHMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTY5ICsw
LDAgQEAKLWZ1bmN0aW9uIHN0cmluZ2lmeU9iaihvKQotewotICAgIHMgPSAiIjsKLSAgICBpZiAo
bykKLSAgICAgICAgZm9yIChpbmRleCBpbiBvKSB7Ci0gICAgICAgICAgICBzICs9IGluZGV4ICsg
IjogIiArIG9baW5kZXhdICsgIjsiOwotICAgICAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLWZ1
bmN0aW9uIG9uRXJyb3IoZSkKLXsKLSAgICB0ZXN0RmFpbGVkKCJHb3QgZXJyb3I6ICIgKyBzdHJp
bmdpZnlPYmooZSkpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0KHMpCi17
Ci0gICAgaWYgKCFzKSB7Ci0gICAgICAgIHZhciBlID0gbmV3IEVycm9yKCJBc3NlcnRpb24gZmFp
bGVkLiAiKTsKLSAgICAgICAgb25FcnJvcihlKTsKLSAgICAgICAgdGhyb3cgZTsKLSAgICB9Ci19
Ci0KLXZhciBmaWxlRW50cnlGb3JDbGVhbnVwOyAgLy8gU2V0IGFzIHNvb24gYXMgd2UgaGF2ZSBv
bmUuCi0KLWZ1bmN0aW9uIGNsZWFuVXAoKQotewotICAgIGlmIChmaWxlRW50cnlGb3JDbGVhbnVw
KSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwLnJlbW92
ZShmaW5pc2hKU1Rlc3QsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLS8vIEdlbmVyaWMgZnVuY3Rpb24gdGhhdCBnZXRzIGEgRmlsZSBmcm9tIGEgRmlsZUVu
dHJ5IGFuZCBjYWxscyBhIGN1c3RvbSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gb24gaXQuCi1mdW5j
dGlvbiB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGdW5jLCBhcmcwLCBhcmcx
LCBvblN1Y2Nlc3MpCi17Ci0gICAgZmlsZUVudHJ5LmZpbGUoCi0gICAgICAgIGZ1bmN0aW9uKGZp
bGUpIHsKLSAgICAgICAgICAgIHZlcmlmeUZ1bmMoZmlsZSwgYXJnMCwgYXJnMSwgb25TdWNjZXNz
KTsKLSAgICAgICAgfSwKLSAgICAgICAgb25FcnJvcik7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlv
biB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5RmlsZUxlbmd0
aEhlbHBlcihmaWxlLCBsZW5ndGgsIHVudXNlZCwgb25TdWNjZXNzKQotewotICAgIGFzc2VydChm
aWxlLnNpemUgPT0gbGVuZ3RoKTsKLSAgICBvblN1Y2Nlc3MoKTsKLX0KLQotLy8gVmVyaWZpZXMg
dGhhdCB0aGUgY29udGVudHMgb2YgZmlsZUVudHJ5IGhhdmUgdGhlIHN1cHBsaWVkIGxlbmd0aC4K
LWZ1bmN0aW9uIHZlcmlmeUZpbGVMZW5ndGgoZmlsZUVudHJ5LCBsZW5ndGgsIG9uU3VjY2VzcykK
LXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGaWxlTGVuZ3RoSGVs
cGVyLCBsZW5ndGgsIG51bGwsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1
c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlSXNa
ZXJvZXNIZWxwZXIoZmlsZSwgc3RhcnQsIGxlbmd0aCwgb25TdWNjZXNzKQotewotICAgIHZhciBm
aWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKLSAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSBv
bkVycm9yOwotICAgIGZpbGVSZWFkZXIub25sb2FkID0KLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gZmlsZVJlYWRlci5yZXN1bHQ7Ci0gICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGFzc2VydChy
ZXN1bHQuY2hhckNvZGVBdChpKSA9PSAwKTsKLSAgICAgICAgICAgIG9uU3VjY2VzcygpOwotICAg
ICAgICB9OwotICAgIGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUuc2xpY2Uoc3Rh
cnQsIHN0YXJ0ICsgbGVuZ3RoKSk7Ci19Ci0KLS8vIFZlcmlmaWVzIHRoYXQgZmlsZUVudHJ5LCBh
dCBvZmZzZXQsIGlzIGFsbCB6ZXJvZXMgZm9yIGxlbmd0aCBieXRlcy4KLWZ1bmN0aW9uIHZlcmlm
eUJ5dGVSYW5nZUlzWmVyb2VzKGZpbGVFbnRyeSwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2VzcykK
LXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VJc1pl
cm9lc0hlbHBlciwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBm
dW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0
ZVJhbmdlQXNTdHJpbmdIZWxwZXIoZmlsZSwgc3RhcnQsIGRhdGEsIG9uU3VjY2VzcykKLXsKLSAg
ICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7Ci0gICAgZmlsZVJlYWRlci5vbmVy
cm9yID0gb25FcnJvcjsKLSAgICBmaWxlUmVhZGVyLm9ubG9hZCA9Ci0gICAgICAgIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgYXNzZXJ0KGZpbGVSZWFkZXIucmVzdWx0ID09IGRhdGEpOwotICAg
ICAgICAgICAgb25TdWNjZXNzKCk7Ci0gICAgICAgIH07Ci0gICAgZmlsZVJlYWRlci5yZWFkQXNU
ZXh0KGZpbGUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgZGF0YS5sZW5ndGgpKTsKLX0KLQotLy8gVmVy
aWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmlsZUVudHJ5LCBhdCBvZmZzZXQsIG1hdGNoIGNv
bnRlbnRzIFthIHN0cmluZ10uCi1mdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxl
RW50cnksIG9mZnNldCwgY29udGVudHMsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29u
dGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZ0hlbHBlciwgb2Zmc2V0LCBj
b250ZW50cywgb25TdWNjZXNzKTsKLX0KLQotLy8gQ3JlYXRlcyBhIGZpbGUgY2FsbGVkIGZpbGVO
YW1lIGluIGZpbGVTeXN0ZW0ncyByb290IGRpcmVjdG9yeSwgdHJ1bmNhdGVzIGl0IHRvIHplcm8g
bGVuZ3RoIGp1c3QgaW4gY2FzZSwgYW5kIGNhbGxzIG9uU3VjY2VzcywgcGFzc2luZyBpdCBhIEZp
bGVFbnRyeSBhbmQgRmlsZVdyaXRlciBmb3IgdGhlIG5ldyBmaWxlLgotZnVuY3Rpb24gY3JlYXRl
RW1wdHlGaWxlKGZpbGVTeXN0ZW0sIGZpbGVOYW1lLCBvblN1Y2Nlc3MpCi17Ci0gICAgZnVuY3Rp
b24gZ2V0U3VjY2Vzc0Z1bmMoZmlsZUVudHJ5KSB7Ci0gICAgICAgIC8vIENyZWF0ZSBhIGZyZXNo
IEZpbGVXcml0ZXIgaGVyZSwgcmF0aGVyIHRoYW4gcGFzcyBpbiB0aGUgdXNlZCBvbmUuCi0gICAg
ICAgIC8vIFRoaXMgd2F5IHdlIGRvbid0IGFjY2lkZW50YWxseSBsZWF2ZSBvdXIgZXZlbnQgaGFu
ZGxlcnMgYXR0YWNoZWQuCi0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIoZnVuY3Rpb24oZncpIHsKLSAgICAgICAgICAgICAgICBv
blN1Y2Nlc3MoZmlsZUVudHJ5LCBmdyk7Ci0gICAgICAgICAgICB9LCBvbkVycm9yKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBnZXRGaWxlV3JpdGVyQ2FsbGJhY2soZmlsZUVudHJ5
KSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbihmaWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICB2
YXIgc3VjY2Vzc0Z1bmMgPSBnZXRTdWNjZXNzRnVuYyhmaWxlRW50cnkpOwotICAgICAgICAgICAg
ZmlsZVdyaXRlci5vbkVycm9yID0gb25FcnJvcjsKLSAgICAgICAgICAgIGZpbGVXcml0ZXIub253
cml0ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGZpbGVXcml0ZXIub253cml0ZSA9
IG51bGw7Ci0gICAgICAgICAgICAgICAgdmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50cnksIDAsIHN1
Y2Nlc3NGdW5jKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBmaWxlV3JpdGVyLnRydW5j
YXRlKDApOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uRmlsZUVudHJ5KGZpbGVF
bnRyeSkgewotICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwID0gZmlsZUVudHJ5OwotICAgICAg
ICB2YXIgb25GaWxlV3JpdGVyID0gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVFbnRyeSk7Ci0g
ICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIob25GaWxlV3JpdGVyLCBvbkVycm9yKTsKLSAg
ICB9Ci0gICAgYXNzZXJ0KGZpbGVTeXN0ZW0pOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxl
KGZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBvbkZpbGVFbnRyeSwgb25FcnJvcik7Ci19Ci0KLWZ1
bmN0aW9uIHdyaXRlU3RyaW5nKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgb2Zmc2V0LCBkYXRhLCBv
blN1Y2Nlc3MpCi17Ci0gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbZGF0YV0pOwotICAgIGZpbGVX
cml0ZXIuc2VlayhvZmZzZXQpOwotICAgIGZpbGVXcml0ZXIud3JpdGUoYmxvYik7Ci0gICAgZmls
ZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBpZiAob2Zmc2V0IDwgMCkKLSAgICAgICAg
b2Zmc2V0ICs9IGZpbGVXcml0ZXIubGVuZ3RoOwotICAgIGFzc2VydChvZmZzZXQgPj0gMCk7Ci0g
ICAgZmlsZVdyaXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbGVXcml0ZXIu
b253cml0ZSA9IG51bGw7Ci0gICAgICAgIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5nKGZpbGVFbnRy
eSwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHNldEZp
bGVDb250ZW50cyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIGNvbnRlbnRzLCBvblN1Y2Nlc3MpIHsK
LSAgICBmaWxlV3JpdGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIGZpbGVXcml0ZXIub253cml0
ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBudWxsOwotICAg
ICAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRlbnRzLCBvblN1
Y2Nlc3MpOwotICAgIH07Ci0gICAgZmlsZVdyaXRlci50cnVuY2F0ZSgwKTsKLX0KLQotZnVuY3Rp
b24gc2V0dXBBbmRSdW5UZXN0KHNpemUsIHRlc3ROYW1lLCB0ZXN0RnVuYykKLXsKLSAgICBpZiAo
IXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVx
dWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBkZWJ1Zygic3RhcnRpbmcgdGVzdCIpOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KFRFTVBPUkFSWSwgc2l6ZSwgZnVuY3Rpb24oZnMpIHsKLSAgICAgICAgY3JlYXRlRW1wdHlGaWxl
KGZzLCB0ZXN0TmFtZSwgdGVzdEZ1bmMpOwotICAgIH0sIG9uRXJyb3IpOwotfQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0ZS1vdmVy
bGFwcGVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5qcwkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0
ZS1vdmVybGFwcGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAKLWlmICh0aGlz
LmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy13b3JrZXItY29tbW9uLmpz
Jyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnZmlsZS13cml0ZXItdXRpbHMuanMnKTsKLX0KLQotZGVz
Y3JpcHRpb24oIlRlc3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBwaW5n
IGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxlLiIpOwotCi12YXIgZmlsZUVudHJ5OwotdmFyIGZpbGVX
cml0ZXI7Ci12YXIgdGVzdERhdGEgPSAiTG9yZW0gaXBzdW0iOwotdmFyIHNlZWtCYWNrd2FyZE9m
ZnNldCA9IC00OwotdmFyIHNlZWtGb3J3YXJkT2Zmc2V0ID0gNDsKLQotZnVuY3Rpb24gb25UZXN0
U3VjY2VlZGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJBbGwgd3JpdGVzIHZlcmlmaWVkLiIpOwot
ICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZUVu
ZCgpIHsKLSAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIHRlc3REYXRhLmxl
bmd0aCArIHNlZWtGb3J3YXJkT2Zmc2V0LCB0ZXN0RGF0YS5zbGljZShzZWVrRm9yd2FyZE9mZnNl
dCksIG9uVGVzdFN1Y2NlZWRlZCk7Ci19Ci0KLWZ1bmN0aW9uIHZhbGlkYXRlTm9uZXh0ZW5kaW5n
V3JpdGVTdGFydCgpIHsKLSAgICB0ZXN0UGFzc2VkKCJOb25leHRlbmRpbmcgd3JpdGUgdmFsaWRh
dGVkLiIpOwotICAgIGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGgg
KiAyKTsKLSAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIDAsIHRlc3REYXRh
LnNsaWNlKDAsIHNlZWtGb3J3YXJkT2Zmc2V0KSwgdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZUVu
ZCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3ROb25leHRlbmRpbmdXcml0ZSgpIHsKLSAgICB3cml0ZVN0
cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHNlZWtGb3J3YXJkT2Zmc2V0LCB0ZXN0RGF0YSwg
dmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZVN0YXJ0KTsKLX0KLQotZnVuY3Rpb24gc2V0dXBOb25l
eHRlbmRpbmdXcml0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJQb3NpdGl2ZSBzZWVrIHZhbGlkYXRl
ZC4iKTsKLSAgICBzZXRGaWxlQ29udGVudHMoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCB0ZXN0RGF0
YSArIHRlc3REYXRhLCB0ZXN0Tm9uZXh0ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlvbiB2YWxp
ZGF0ZVNlZWtGb3J3YXJkKCkgewotICAgIGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0
RGF0YS5sZW5ndGggKyBzZWVrRm9yd2FyZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNT
dHJpbmcoZmlsZUVudHJ5LCAwLCB0ZXN0RGF0YS5zbGljZSgwLCBzZWVrRm9yd2FyZE9mZnNldCks
IHNldHVwTm9uZXh0ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2Vla0ZvcndhcmQo
KSB7Ci0gICAgd3JpdGVTdHJpbmcoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBzZWVrRm9yd2FyZE9m
ZnNldCwgdGVzdERhdGEsIHZhbGlkYXRlU2Vla0ZvcndhcmQpOwotfQotCi1mdW5jdGlvbiBzZXR1
cFNlZWtGb3J3YXJkKCkgewotICAgIHRlc3RQYXNzZWQoIk5lZ2F0aXZlIHNlZWsgdmFsaWRhdGVk
LiIpOwotICAgIHNldEZpbGVDb250ZW50cyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHRlc3REYXRh
LCB0ZXN0U2Vla0ZvcndhcmQpOwotfQotCi1mdW5jdGlvbiB2YWxpZGF0ZVNlZWtCYWNrd2FyZCgp
IHsKLSAgICBhc3NlcnQoZmlsZVdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0aCAr
IHNlZWtCYWNrd2FyZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVu
dHJ5LCAwLCB0ZXN0RGF0YS5zbGljZSgwLCB0ZXN0RGF0YS5sZW5ndGggKyBzZWVrQmFja3dhcmRP
ZmZzZXQpLCBzZXR1cFNlZWtGb3J3YXJkKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNlZWtCYWNrd2Fy
ZCgpIHsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHNlZWtCYWNrd2Fy
ZE9mZnNldCwgdGVzdERhdGEsIHZhbGlkYXRlU2Vla0JhY2t3YXJkKTsKLX0KLQotLy8gRWFjaCB0
ZXN0IGhhcyAzIHBoYXNlczogc2V0dXAsIGV4ZWN1dGlvbiwgYW5kIHZhbGlkYXRpb24uICBJbiB0
aGUgc2V0dXAgcGhhc2UsIHdlIG1ha2Ugc3VyZSB0aGF0IHRoZXJlJ3MgYSBGaWxlV3JpdGVyIHBv
aW50aW5nIGF0IGEgZmlsZSB3aXRoIGFwcHJvcHJpYXRlCi0vLyBkYXRhIGZvciB0aGUgdGVzdCB3
ZSB3YW50IHRvIHJ1bi4gIEluIHRoZSBleGVjdXRpb24gcGhhc2UsIHdlIGRvIGEgc2VlayBhbmQg
YSB3cml0ZSwgYW5kIHRoZSB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgZG9lcyB0aG9zZSBhbHNvIHZh
bGlkYXRlcyB0aGF0IHRoZSBkYXRhCi0vLyBhY3R1YWxseSBnb3Qgd3JpdHRlbi4gIFNvIGluIHRo
ZSB2YWxpZGF0aW9uIHBoYXNlLCB3ZSBvbmx5IGhhdmUgdG8gY2hlY2sgdGhhdCB0aGUgcmVzdCBv
ZiB0aGUgZmlsZSBkaWRuJ3QgZ2V0IGNvcnJ1cHRlZCB3aGlsZSB3ZSB3ZXJlIHdyaXRpbmcgb3Vy
IGJpdC4KLWZ1bmN0aW9uIHJ1blRlc3QoZmlsZUVudHJ5SW4sIGZpbGVXcml0ZXJJbikgewotICAg
IGZpbGVFbnRyeSA9IGZpbGVFbnRyeUluOwotICAgIGZpbGVXcml0ZXIgPSBmaWxlV3JpdGVySW47
Ci0gICAgc2V0RmlsZUNvbnRlbnRzKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgdGVzdERhdGEsIHRl
c3RTZWVrQmFja3dhcmQpOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1zZXR1cEFu
ZFJ1blRlc3QoMTAyNCwgJ2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZCcsIHJ1blRlc3QpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9m
cy10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDky
ICswLDAgQEAKLWZ1bmN0aW9uIGJpbmRDYWxsYmFjayhvYmosIGNhbGxiYWNrLCBhcmcxLCBhcmcy
LCBhcmczKQotewotICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHsKLSAgICAgICAgaWYgKGFyZyA9
PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBjYWxsYmFjay5hcHBseShvYmosIFthcmcxLCBhcmcy
LCBhcmczXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG9iaiwg
W2FyZywgYXJnMSwgYXJnMiwgYXJnM10pOwotICAgIH07Ci19Ci0KLS8vIFVzYWdlOgotLy8gICB2
YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXI7Ci0vLwotLy8gICBoZWxwZXIucnVuKGZ1bmN0aW9u
KCkgeyAvKiBkbyBzb21ldGhpbmcgdGhhdCBldmVudHVhbGx5IGNhbGxzIGhlbHBlci5kb25lKCk7
ICovIH0pOwotLy8gICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhpbmcgdGhh
dCBldmVudHVhbGx5IGNhbGxzIGhlbHBlci5kb25lKCk7ICovIH0pOwotLy8gICAuLi4KLS8vICAg
aGVscGVyLmpvaW4oam9pbkNhbGxiYWNrKTsKLS8vCi12YXIgSm9pbkhlbHBlciA9IGZ1bmN0aW9u
KCkKLXsKLSAgICB0aGlzLnBlbmRpbmdPcGVyYXRpb25zID0gW107Ci0gICAgdGhpcy5wZW5kaW5n
T3BlcmF0aW9uQ291bnQgPSAwOwotICAgIHRoaXMuam9pbkNhbGxiYWNrID0gbnVsbDsKLQotICAg
IHRoaXMucnVuID0gZnVuY3Rpb24ob3BlcmF0aW9uKQotICAgIHsKLSAgICAgICAgdGhpcy5wZW5k
aW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICAgICAgb3BlcmF0aW9uKCk7Ci0gICAgfTsKLQotICAg
IC8vIENhbGwgdGhpcyB3aGVuIGFuIG9wZXJhdGlvbiBpcyBkb25lLgotICAgIHRoaXMuZG9uZSA9
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMucGVuZGluZ09wZXJhdGlvbkNvdW50LS07
Ci0gICAgICAgIGlmICh0aGlzLnBlbmRpbmdPcGVyYXRpb25Db3VudCA9PSAwICYmIHRoaXMuam9p
bkNhbGxiYWNrKQotICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJhY2soKTsKLSAgICB9OwotCi0g
ICAgLy8gVGhpcyBldmVudHVhbGx5IGNhbGxzIHRoZSBqb2luQ2FsbGJhY2sgd2hlbiBoZWxwZXIu
ZG9uZSgpIGlzIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGhlbHBlci5ydW4oKSBpcyBjYWxsZWQu
Ci0gICAgdGhpcy5qb2luID0gZnVuY3Rpb24oam9pbkNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
aWYgKHRoaXMucGVuZGluZ09wZXJhdGlvbkNvdW50ID09IDApCi0gICAgICAgICAgICBqb2luQ2Fs
bGJhY2soKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJhY2sgPSBq
b2luQ2FsbGJhY2s7Ci0gICAgfTsKLX07Ci0KLS8vIFJlbW92ZSBldmVyeXRoaW5nIGluIHRoZSBn
aXZlbiBkaXJlY3RvcnkuCi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3Rvcnks
IHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciBSZW1vdmVBbGxJbkRp
cmVjdG9yeUhlbHBlciA9IGZ1bmN0aW9uKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykg
ewotICAgICAgICB0aGlzLmVudHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMuZG9uZSA9IGZh
bHNlOwotICAgICAgICB0aGlzLnJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0Nh
bGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBl
cnJvckNhbGxiYWNrOwotCi0gICAgICAgIHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2sgPSBiaW5k
Q2FsbGJhY2sodGhpcywgZnVuY3Rpb24oZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICgtLXRoaXMuZW50cmllc0NvdW50ID09IDAgJiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhp
cy5kb25lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuZW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNr
KHRoaXMsIGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHRoaXMu
ZW50cmllc0NvdW50Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3Rv
cnkpCi0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhp
cy5lbnRyeVJlbW92ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKHRoaXMuZW50
cnlSZW1vdmVkQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFk
ZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7
Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmVudHJpZXNDb3VudCA+IDApCi0gICAgICAgICAg
ICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3VjY2Vz
c0NhbGxiYWNrKQotICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIHRoaXMucmVtb3ZlQWxsSW5EaXJlY3RvcnkgPSBmdW5jdGlvbihk
aXJlY3RvcnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMucmVhZGVyID0gZGlyZWN0b3J5
LmNyZWF0ZVJlYWRlcigpOwotICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhp
cy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH07Ci0gICAg
fTsKLQotICAgIHZhciBoZWxwZXIgPSBuZXcgUmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxwZXIoc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIucmVtb3ZlQWxsSW5EaXJl
Y3RvcnkoZGlyZWN0b3J5KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2Vy
LWNvbW1vbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMCwwIEBACi1mdW5jdGlvbiByZW1v
dmVBbGxJbkRpcmVjdG9yeVN5bmMoZGlyZWN0b3J5KSB7Ci0gICAgaWYgKCFkaXJlY3RvcnkpCi0g
ICAgICAgIHJldHVybjsKLSAgICB2YXIgcmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigp
OwotICAgIGRvIHsKLSAgICAgICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVhZEVudHJpZXMoKTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAoZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICBlbnRy
aWVzW2ldLnJlbW92ZVJlY3Vyc2l2ZWx5KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZW50cmllc1tpXS5yZW1vdmUoKTsKLSAgICAgICAgfQotICAgIH0gd2hpbGUgKGVudHJp
ZXMubGVuZ3RoKTsKLX0KLQotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cyAmJiAhdGhpcy53ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5
c3RlbSBBUEkuJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWNvcHkuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1jb3B5LmpzCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWNvcHkuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMjU3ICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAg
ewotICAgICAgICBuYW1lOiAnQ29weUZpbGVTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2EnLCAn
YycpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAgICAgICAgXSwKLSAg
ICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlEaXJlY3RvcnlTaW1wbGUnLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9
Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAgICAgICBdLAotICAg
ICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJl
Y3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0g
ICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RmlsZVRvRGlmZmVy
ZW50RGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
L2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfQotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5jb3B5KCcvYS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAg
cG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5
OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9jL2QnfQotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAn
Q29weUZpbGVXaXRoRW1wdHlOYW1lJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2EvYicsICcvYycsIG51bGwpOyB9LAotICAgICAgICBd
LAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2MvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAgIG5hbWU6ICdDb3B5RmlsZVdpdGhFbXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5
KCcvYS9iJywgJy9hJywgbnVsbCwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7
IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYid9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZp
bGVXaXRoU2FtZU5hbWUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICdDb3B5Rm9yTm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9jJywg
J2InLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlFbnRyeVRvTm9uRXhp
c3RlbnREaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJS
KTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5
RW50cnlUb0l0c0NoaWxkJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9j
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy9hL2InLCAnZCcs
IEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVy
cm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlSZWN1cnNpdmUnLAotICAg
ICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYi9kJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6
dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYS9iL2QnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYScsIGlzRGly
ZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2InLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYS9iL2MnfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2IvYS9iL2QnfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAg
ICAgbmFtZTogIk92ZXJ3cml0aW5nQ29weUZpbGVUb0ZpbGUiLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EifSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJiIik7fQotICAgICAgICBdLAotICAg
ICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAgIG5hbWU6ICJPdmVyd3JpdGluZ0NvcHlEaXJlY3RvcnlUb0VtcHR5RGlyZWN0b3J5IiwKLSAg
ICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIiwgaXNEaXJl
Y3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAg
dGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIs
Ii8iLCJjIik7fQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Ii9hIiwgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Ii9hL2IifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvYiJ9LAotICAgICAgICBdLAotICAgIH0s
Ci0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdDb3B5RmlsZVRvRGlyZWN0b3J5IiwK
LSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9LAotICAgICAgICBd
LAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVy
LmNvcHkoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30K
LSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVl
fSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5n
Q29weURpcmVjdG9yeVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAg
ICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJiIixGaWxlRXJyb3IuSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTogdHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAgIG5hbWU6ICJPdmVyd3JpdGluZ0NvcHlGaWxlVG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAg
ICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5J
TlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2Iv
YyJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRp
bmdDb3B5RGlyZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIs
IGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
aGVscGVyLmNvcHkoIi9hIiwiLyIsImMiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9F
UlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgIH0sCi1d
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQtZW50
cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9vcC1nZXQtZW50cnkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE1NSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ0Ny
ZWF0ZVNpbXBsZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8n
LCAnYScsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InLCB7Y3JlYXRlOnRydWV9KTsgfQotICAgICAgICBdLAot
ICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0gICAgICAgIF0s
Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDcmVhdGVOZXN0ZWQnLAotICAgICAgICBw
cmVjb25kaXRpb246IFsgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7Y3JlYXRlOnRydWV9KTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcv
YScsICdiJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EvYicsICdjJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EvYi9j
JywgJ2QnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnL2EvYi9jL2QnLCAnZScsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAg
ICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2IvYy9kL2UnfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTog
J0NyZWF0ZU5lc3RlZFdpdGhBYnNvbHV0ZVBhdGgnLAotICAgICAgICBwcmVjb25kaXRpb246IFsK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2R1bW15JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15
JywgJy9hL2InLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvZHVtbXknLCAnL2EvYi9jJywge2NyZWF0ZTp0cnVl
fSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9y
eSgnL2R1bW15JywgJy9hL2IvYy9kJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9kdW1teScsICcvYS9iL2MvZC9lJywg
e2NyZWF0ZTp0cnVlfSk7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvZHVtbXknLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYi9jL2QvZSd9LAotICAgICAgICBdLAotICAgIH0sCi0gICAg
ewotICAgICAgICBuYW1lOiAnQ3JlYXRlTmVzdGVkV2l0aFJlbGF0aXZlUGF0aCcsCi0gICAgICAg
IHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5
OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4vYicsIHtjcmVhdGU6dHJ1
ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3Rv
cnkoJy9hJywgJy4vLi4uJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4vYicsIHtjcmVhdGU6dHJ1
ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3Rv
cnkoJy9hJywgJy4uLy4uL2IvYycsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy9hLy4uLy4uL2QnLCB7
Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RGlyZWN0b3J5KCcvYScsICcvYS8uLi8uLi9iLy4vYy8uLi8uLi8uLi8uLi8uLi9lJywge2Ny
ZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dERpcmVjdG9yeSgnL2EnLCAnLi4uL2YnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcvYS8uLi8uLi4v
ZycsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EnLCAnLi9iLnR4dCcsIHtj
cmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvYScsICcuLi9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi8uLi9iL2MudHh0Jywg
e2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy9hJywgJy9hLy4uLy4uL2QudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9hLy4uLy4u
L2IvLi9jLy4uLy4uLy4uLy4uLy4uL2UudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy4uLi9mLnR4dCcs
IHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvYScsICcvYS8uLi8uLi4vZy50eHQnLCB7Y3JlYXRlOnRydWV9LCBGaWxlRXJy
b3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9kJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9lJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9mJywgbm9uZXhpc3RlbnQ6dHJ1ZX0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2YnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2cnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EvZycsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYS9iLnR4dCd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi50eHQnfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2IvYy50eHQnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2QudHh0
J30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9lLnR4dCd9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvZi50eHQnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvZi50eHQnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2cu
dHh0Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2cudHh0
Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAg
IG5hbWU6ICdHZXRFeGlzdGluZ0VudHJ5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbIF0sCi0g
ICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dERpcmVjdG9yeSgnLycsICdhJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYicsIHtjcmVhdGU6dHJ1ZX0pOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy8n
LCAnYScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2InKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6
ICdHZXROb25FeGlzdGVudCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3Rv
cnkoJy8nLCAnYScsIHt9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYicsIHt9LCBGaWxlRXJy
b3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldERpcmVjdG9yeSgnLycsICcvbm9uZXhpc3RlbnQvYScsIHtjcmVhdGU6dHJ1ZX0sIEZp
bGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICcvbm9uZXhpc3RlbnQvYicsIHtjcmVhdGU6dHJ1ZX0sIEZp
bGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0
aW9uOiBbIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRGaWxlRm9yRGlyZWN0
b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhJywge30sIEZp
bGVFcnJvci5UWVBFX01JU01BVENIX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnL2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFU
Q0hfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAg
fSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXREaXJlY3RvcnlGb3JGaWxlJywKLSAgICAgICAg
cHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJ30KLSAgICAgICAgXSwK
LSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFUQ0hfRVJSKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcv
JywgJy9hJywge30sIEZpbGVFcnJvci5UWVBFX01JU01BVENIX0VSUik7IH0sCi0gICAgICAgIF0s
Ci0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnfQot
ICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ3JlYXRlV2l0aEV4Y2x1
c2l2ZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAg
ICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldERpcmVjdG9yeSgnLycsICdhJywge2NyZWF0ZTp0cnVlLCBleGNsdXNpdmU6dHJ1
ZX0sIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InLCB7Y3JlYXRlOnRydWUs
IGV4Y2x1c2l2ZTp0cnVlfSwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0K
LSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9
Ci0gICAgICAgIF0sCi0gICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcwkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1nZXQt
bWV0YWRhdGEuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjcgKzAsMCBAQAotdmFyIHRlc3RDYXNl
cyA9IFsKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRNZXRhZGF0YScsCi0gICAgICAgIHByZWNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvdG1wJ30sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9maWxlMScsIHNpemU6MH0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9maWxl
MicsIHNpemU6MTB9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZmlsZTMnLCBzaXplOjkwfSwK
LSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy8nKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJy9hJywge2NyZWF0ZTp0cnVlfSk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvYScp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRNZXRhZGF0YSgn
L2ZpbGUxJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1l
dGFkYXRhKCcvZmlsZTInKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0TWV0YWRhdGEoJy9maWxlMycpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJy9iJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvYicpOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy90bXAnKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy90bXAnLCBG
aWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLnNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCcvYS5yZXR1cm5lZC5tb2RpZmlj
YXRpb25UaW1lJywgJy8ucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScpOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5zaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgn
L2IucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScsICcvLnJldHVybmVkLm1vZGlmaWNhdGlvblRp
bWUnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuc2hvdWxkQmVH
cmVhdGVyVGhhbk9yRXF1YWwoJy9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUnLCAnL2EucmV0
dXJuZWQubW9kaWZpY2F0aW9uVGltZScpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25k
aXRpb246IFsgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvb3AtZ2V0LXBhcmVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1wYXJlbnQuanMJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LXBhcmVu
dC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyMSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwot
ICAgIHsKLSAgICAgICAgbmFtZTogJ0dldFBhcmVudCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy8nKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcvYScpOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy9hL2InKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcvYS9iL2Mn
KTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9j
J30sCi0gICAgICAgIF0sCi0gICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1tb3ZlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjUyICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAg
ICBuYW1lOiAnTW92ZUZpbGVTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycpOyB9Ci0g
ICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYics
IG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAgICAg
ICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVEaXJlY3RvcnlTaW1wbGUn
LAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0
b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAgICAg
ICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBub25l
eGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0b3J5
OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRmls
ZVRvRGlmZmVyZW50RGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0
cnVlfQotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgbm9uZXhpc3Rl
bnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAgICAgICBdLAotICAg
IH0sCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRoRW1wdHlOYW1lJywKLSAgICAg
ICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVz
dHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIubW92ZSgnL2EvYics
ICcvYycsIG51bGwpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hL2InLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2MvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdN
b3ZlRmlsZVdpdGhFbXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9h
JywgbnVsbCwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAg
IF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAg
ICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRoU2FtZU5h
bWUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5h
bWU6ICdNb3ZlRm9yTm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jJywgaXNEaXJl
Y3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9jJywgJ2InLCBGaWxlRXJy
b3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAg
ICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVFbnRyeVRvTm9uRXhpc3RlbnREaXJlY3Rv
cnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAot
ICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5y
ZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1v
dmUoJy9hL2InLCAnL2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAg
ICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0g
ICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRW50cnlUb0l0c0No
aWxkJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hJywgJy9hL2InLCAnZCcsIEZpbGVFcnJvci5J
TlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVycm9yLklOVkFMSURf
TU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9
LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVSZWN1cnNpdmUnLAotICAgICAgICBwcmVjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9k
J30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLm1vdmUoJy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9z
dGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYi9hL2IvYyd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9h
L2IvZCd9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3Zlcndy
aXRpbmdNb3ZlRmlsZVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAg
ICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiJ9LAotICAgICAg
ICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVs
cGVyLm1vdmUoIi9hIiwiLyIsImIiKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICB9LAot
ICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRW1wdHlEaXJl
Y3RvcnkiLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoi
L2EiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBd
LAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVy
Lm1vdmUoIi9hIiwiLyIsImMiKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2MvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIG5v
bmV4aXN0ZW50OnRydWV9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1l
OiAiT3ZlcndyaXRpbmdNb3ZlRmlsZVRvRGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiLEZp
bGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAg
cG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9
LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRmlsZSIs
Ci0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlz
RGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAg
XSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBl
ci5tb3ZlKCIvYSIsIi8iLCJiIixGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTt9
Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2EiLCBpc0RpcmVjdG9yeTogdHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9i
In0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGlu
Z01vdmVGaWxlVG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIs
IGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9F
UlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5
OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAg
IH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRGlyZWN0b3J5VG9Ob25l
bXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1
bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoi
L2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0
czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIs
ImMiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAg
ICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGly
ZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1yZWFkLWRpcmVjdG9yeS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0
b3J5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzICsw
LDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnUmVhZERpcmVj
dG9yeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGly
ZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIH0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9kJywgfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2UnLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2YnLCB9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvZycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2MnfSwKLSAgICAgICAgXSwKLSAg
ICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVh
ZERpcmVjdG9yeSgnLycpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LnJlbW92ZSgnL2UnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
cmVtb3ZlKCcvZicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5y
ZWFkRGlyZWN0b3J5KCcvJyk7IH0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L29wLXJlbW92ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2MiArMCwwIEBACi12YXIgdGVzdENh
c2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZVNpbXBsZScsCi0gICAgICAgIHBy
ZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRl
c3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2En
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvYicp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy8nLCBG
aWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfQotICAgICAgICBdLAotICAgICAg
ICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3Rl
bnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgbm9uZXhpc3RlbnQ6dHJ1ZX0K
LSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZU5vblJlY3Vy
c2l2ZVdpdGhDaGlsZHJlbicsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2Mn
LH0KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvYScsIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9jJyx9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdSZW1vdmVS
ZWN1cnNpdmVXaXRob3V0Q2hpbGRyZW4nLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAg
ICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVt
b3ZlUmVjdXJzaXZlbHkoJy9hJyk7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50OnRydWV9LAotICAg
ICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnUmVtb3ZlUmVjdXJzaXZlV2l0
aENoaWxkcmVuJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2In
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsfQotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5yZW1vdmVSZWN1cnNpdmVseSgnL2EnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlUmVjdXJzaXZlbHkoJy8nLCBGaWxlRXJyb3IuSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAg
ICAgIF0sCi0gICAgfSwKLV07Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1jaGFycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtY2hhcnMuanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3At
cmVzdHJpY3RlZC1jaGFycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi12YXIg
dGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRDaGFycycsCi0g
ICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYWInLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAg
IC8vIFRlc3QgZm9yIGRpZmZpY3VsdCBjaGFyYWN0ZXJzIGluICdwYXRoJyBwYXJhbWV0ZXJzLgot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E8Yics
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2E+YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E6YicsIHtjcmVhdGU6
dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRG
aWxlKCcvJywgJ2E/YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EqYicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2EiYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2F8YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnPGFiJywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnOmFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnP2FiJywge2NyZWF0ZTp0
cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnKmFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnImFiJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
fGFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYjwnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYjonLCB7
Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdhYj8nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYionLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0Rmls
ZSgnLycsICdhYiInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYnwnLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLQotICAgICAgICAgICAgLy8gT25seSAnXFwnIGlzIGRpc2FsbG93ZWQuCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVxcYicsIHtjcmVhdGU6
dHJ1ZX0sIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotCi0gICAgICAg
ICAgICAvLyBUZXN0IGZvciBkaWZmaWN1bHQgY2hhcmFjdGVycyBpbiAnbmFtZScgcGFyYW1ldGVy
cy4KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8n
LCAnIGE8YicsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5j
b3B5KCcvYWInLCAnLycsICcgYTpiJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywgJyBhP2InLCAwKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnIGEqYicsIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYWInLCAnLycs
ICcgYSJiJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNv
cHkoJy9hYicsICcvJywgJyBhfGInLCAwKTsgfSwKLQotICAgICAgICAgICAgLy8gJ05hbWUnIHBh
cmFtZXRlciBjYW5ub3QgY29udGFpbiAnLycgb3IgJ1xcJy4KLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnYS9iJywgRmlsZUVycm9yLklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmNvcHkoJy9hYicsICcvJywgJ2FcXGInLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYWInLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonYTxiJywgaXNEaXJlY3Rvcnk6ZmFsc2V9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicgYXxiJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1u
YW1lcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL29wLXJlc3RyaWN0ZWQtbmFtZXMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1uYW1lcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAg
ICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWROYW1lcycsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBb
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnLics
IHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5TRUNVUklUWV9FUlIpOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJy4uJywge2NyZWF0ZTp0cnVl
fSwgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnY29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ09OJywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnQ29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnY09uLnR4dCcsIHtjcmVh
dGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ2EvY29OJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdwcm4nLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0Rmls
ZSgnLycsICdQUk4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdQcm4nLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdw
Um4udHh0Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYS9wck4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LQotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2F1
eCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ0FVWCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0F1eCcsIHtjcmVh
dGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ2FVeC50eHQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2F1WCcsIHtjcmVhdGU6
dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dEZpbGUoJy8nLCAnbnVsJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnTlVMJywge2NyZWF0ZTp0cnVlfSwg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnTnVsJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnblVsLnR4dCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Ev
bnVMJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdjb20xJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ09NMics
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ0NvbTQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdjT003LmZvbycsIHtj
cmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvJywgJ2EvY29NOScsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbHB0MScsIHtjcmVh
dGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ0xQVDInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdMcHQ0Jywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnbFBUNy5mb28nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2xwVDknLCB7Y3JlYXRlOnRydWV9
LCAwKTsgfSwKLQotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2ZvbyAnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdmb29cbicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2Zvby4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuY29weSgnL2EnLCAnLycsICdmb28gICcsIDApOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYScsICcvJywgJ2Zvb1x0JywgMCk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy8nLCAn
Zm9vLi4nLCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIubW92
ZSgnL2EnLCAnLycsICdmb28gICAgJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLm1vdmUoJy9iJywgJy8nLCAnZm9vXHRcdCcsIDApOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYycsICcvJywgJ2Zvby4uLi4uJywg
MCk7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2ZvbyAgICAnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2Zvb1x0XHQnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2Zvby4uLi4uJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAot
XTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJp
Y3RlZC11bmljb2RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC11bmljb2RlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtdW5p
Y29kZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi12YXIgdGVzdENhc2VzID0g
WwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRVbmljb2RlQ2hhcnMnLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYicsIHtjcmVhdGU6dHJ1ZX0pOyB9
LAotCi0gICAgICAgICAgICAvLyBFbWJlZGRlZCBOVUxzIGFyZW4ndCBhbGxvd2VkOyBhbnl0aGlu
ZyBlbHNlIGluIHRoZSBmaXJzdCAzMiBpcyBmYWlyIGdhbWUuCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwMGInLCB7Y3JlYXRlOnRydWV9
LCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDAxYicsIHtjcmVhdGU6
dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRG
aWxlKCcvJywgJ2FcdTAwMDJiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwM2InLCB7Y3JlYXRl
OnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RmlsZSgnLycsICdhXHUwMDA0YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDViJywge2NyZWF0
ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dEZpbGUoJy8nLCAnYVx1MDAwNmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA3YicsIHtjcmVh
dGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ2FcdTAwMDhiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwOWInLCB7Y3Jl
YXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdhXHUwMDBhYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMGJiJywge2Ny
ZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnYVx1MDAwY2InLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDBkYicsIHtj
cmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvJywgJ2FcdTAwMGViJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwZmInLCB7
Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdhXHUwMDEwYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTFiJywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxMmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDEzYics
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTRiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxNWIn
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDE2YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTdi
Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxOGInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDE5
YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMWFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAx
YmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDFjYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAw
MWRiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxZWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfQot
ICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hYid9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvb3AtdGVzdHMtaGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxMyArMCwwIEBACi0v
LyBIZWxwZXIgcm91dGluZS4KLWZ1bmN0aW9uIHRvU3RyaW5nKG9iaikgewotICAgIGlmIChvYmog
PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIHJldHVybiAidW5kZWZpbmVkIjsKLSAgICB9IGVsc2Ug
aWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHsKLSAgICAgICAgaWYgKG9iai5sZW5ndGggIT0g
dW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICB2YXIgc3RyaW5nQXJyYXkgPSBbXTsKLSAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAg
IHN0cmluZ0FycmF5LnB1c2godG9TdHJpbmcob2JqW2ldKSk7Ci0gICAgICAgICAgICBzdHJpbmdB
cnJheS5zb3J0KCk7Ci0gICAgICAgICAgICByZXR1cm4gJ1snICsgc3RyaW5nQXJyYXkuam9pbign
LFxuICcpICsgJ10nOwotICAgICAgICB9IGVsc2UgaWYgKG9iai5pc0RpcmVjdG9yeSB8fCBvYmou
aXNGaWxlKSB7Ci0gICAgICAgICAgICByZXR1cm4gJ0VOVFJZIHtwYXRoOicgKyBvYmouZnVsbFBh
dGggKyAnIG5hbWU6JyArIG9iai5uYW1lICsgKG9iai5pc0RpcmVjdG9yeSA/ICcgdHlwZTpESVJF
Q1RPUlknIDogJyB0eXBlOkZJTEUnKSArICd9JzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHJldHVybiBvYmogKyAiIjsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICByZXR1
cm4gb2JqICsgIiI7Ci19Ci0KLS8vIENyZWF0ZXMgYSB0ZXN0IGVudmlyb25tZW50IGZvciB0aGUg
Z2l2ZW4gZW50cmllcyB3aGVyZSBlbnRyaWVzIGlzIGFuIGFycmF5IG9mIHtmdWxsUGF0aDpTdHJp
bmcsIGlzRGlyZWN0b3J5OmJvb2xlYW59IG9iamVjdC4KLS8vIFdoZW4gdGhlIHdvcmxkIGlzIGNy
ZWF0ZWQgc3VjY2Vzc2Z1bGx5LCBzdWNjZXNzQ2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYW4gb2Jq
ZWN0IHRoYXQgaG9sZHMgYWxsIHRoZSBjcmVhdGVkIGVudHJ5IG9iamVjdHMuCi1mdW5jdGlvbiBj
cmVhdGVUZXN0RW52aXJvbm1lbnQoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKQotewotICAgIHZhciBIZWxwZXIgPSBmdW5jdGlvbihmaWxlU3lzdGVt
LCBlbnRyaWVzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi0gICAgewotICAgICAg
ICB0aGlzLmZpbGVTeXN0ZW0gPSBmaWxlU3lzdGVtOwotICAgICAgICB0aGlzLmVudHJpZXMgPSBl
bnRyaWVzOwotICAgICAgICB0aGlzLmN1cnJlbnQgPSAwOwotICAgICAgICB0aGlzLnN1Y2Nlc3ND
YWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrID0g
ZXJyb3JDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHt9OwotCi0gICAgICAg
IHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxiYWNrID0gZnVuY3Rpb24oZW50cnksIHNpemUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5pc0ZpbGUgJiYgc2l6ZSA+IDApIHsKLSAgICAg
ICAgICAgICAgICBlbnRyeS5jcmVhdGVXcml0ZXIoYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9u
KHdyaXRlcikgewotICAgICAgICAgICAgICAgICAgICB3cml0ZXIudHJ1bmNhdGUoc2l6ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbmVycm9yID0gYmluZENhbGxiYWNrKHRoaXMsIHRo
aXMuY3JlYXRlRXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbndy
aXRlZW5kID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeS5mdWxsUGF0aF0gPSBlbnRyeTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnkuZnVsbFBhdGggKyAnLnNp
emUnXSA9IHNpemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5leHRFbnRy
eSgpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KSwgYmluZENh
bGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjaykpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50
cnkuZnVsbFBhdGhdID0gZW50cnk7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5
LmZ1bGxQYXRoICsgJy5zaXplJ10gPSAwOwotICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXh0RW50
cnkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjayA9IGZ1
bmN0aW9uKGVycm9yLCBlbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgn
R290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIHdoaWxlIGNyZWF0aW5nICcg
KyB0b1N0cmluZyhlbnRyeSkpOwotICAgICAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrKGVycm9y
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY3JlYXRlTmV4dEVudHJ5ID0gZnVuY3Rpb24o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ID49IHRoaXMuZW50cmll
cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayh0aGlzLmVu
dmlyb25tZW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLmVudHJpZXNbdGhpcy5jdXJyZW50KytdOwotICAgICAg
ICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGZpbGVTeXN0ZW0u
cm9vdC5nZXREaXJlY3RvcnkoZW50cnkuZnVsbFBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGJpbmRDYWxs
YmFjayh0aGlzLCB0aGlzLmNyZWF0ZVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlz
LCB0aGlzLmNyZWF0ZUVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge2NyZWF0ZTp0
cnVlfSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxiYWNrLCBlbnRy
eS5zaXplKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjaykpOwot
ICAgICAgICB9OwotICAgIH07Ci0KLSAgICBpZiAoIWVudHJpZXMgfHwgIWVudHJpZXMubGVuZ3Ro
KSB7Ci0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh7fSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBIZWxwZXIoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIuY3JlYXRlTmV4dEVudHJ5KCk7
Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeVRlc3RFbnZpcm9ubWVudChmaWxlU3lzdGVtLCBlbnRyaWVz
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi17Ci0gICAgdmFyIEhlbHBlciA9IGZ1
bmN0aW9uKGZpbGVTeXN0ZW0sIGVudHJpZXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIHRoaXMuZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07Ci0gICAgICAg
IHRoaXMuZW50cmllcyA9IGVudHJpZXM7Ci0gICAgICAgIHRoaXMuY3VycmVudCA9IDA7Ci0gICAg
ICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlz
LmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrOwotICAgICAgICB0aGlzLmV4cGVjdGVkTm9u
ZXhpc3RlbnQgPSBmYWxzZTsKLQotICAgICAgICB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayA9
IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBlY3Rl
ZE5vbmV4aXN0ZW50KSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnRm91bmQgdW5leHBl
Y3RlZCBlbnRyeSAnICsgZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAgICAgIHRoaXMuZXJy
b3JDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHRlc3RQYXNzZWQoJ1ZlcmlmaWVkIGVudHJ5OiAnICsgdG9TdHJpbmcoZW50cnkp
KTsKLSAgICAgICAgICAgIHRoaXMudmVyaWZ5TmV4dEVudHJ5KCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aGlzLnZlcmlmeUVycm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihlcnJvciwgZW50cnkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQpIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDog
JyArIGVudHJ5LmZ1bGxQYXRoKTsKLSAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeU5leHRFbnRy
eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChlcnJvciA9PSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUikKLSAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCdOb3QgZm91bmQ6ICcgKyBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyAr
IGVycm9yLmNvZGUgKyAnIGZvciAnICsgZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAgdGhp
cy5lcnJvckNhbGxiYWNrKGVycm9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMudmVyaWZ5
TmV4dEVudHJ5ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5j
dXJyZW50ID49IHRoaXMuZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1
Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMuZW50cmllc1t0aGlzLmN1cnJlbnQrK107Ci0g
ICAgICAgICAgICB0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQgPSBlbnRyeS5ub25leGlzdGVudDsK
LSAgICAgICAgICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICBmaWxl
U3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KGVudHJ5LmZ1bGxQYXRoLCB7fSwgYmluZENhbGxiYWNr
KHRoaXMsIHRoaXMudmVyaWZ5U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRo
aXMudmVyaWZ5RXJyb3JDYWxsYmFjaywgZW50cnkpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge30sIGJp
bmRDYWxsYmFjayh0aGlzLCB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFj
ayh0aGlzLCB0aGlzLnZlcmlmeUVycm9yQ2FsbGJhY2ssIGVudHJ5KSk7Ci0gICAgICAgIH07Ci0g
ICAgfTsKLQotICAgIGlmICghZW50cmllcyB8fCAhZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGhlbHBl
ciA9IG5ldyBIZWxwZXIoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKLSAgICBoZWxwZXIudmVyaWZ5TmV4dEVudHJ5KCk7Ci19Ci0KLS8vIHRlc3RD
YXNlIG11c3QgaGF2ZSBwcmVjb25kaXRpb24sIHBvc3Rjb25kaXRpb24gYW5kIHRlc3QgZnVuY3Rp
b24gZmllbGQuCi0vLyAoU2VlIHJlc291cmNlcy9vcC0qLmpzIGZvciBleGFtcGxlcy4pCi1mdW5j
dGlvbiBydW5PcGVyYXRpb25UZXN0KGZpbGVTeXN0ZW0sIHRlc3RDYXNlLCBzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spCi17Ci0gICAgdmFyIE9wZXJhdGlvblRlc3RIZWxwZXIgPSBmdW5j
dGlvbihmaWxlU3lzdGVtLCB0ZXN0Q2FzZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KQotICAgIHsKLSAgICAgICAgdGhpcy5maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKLSAgICAgICAg
dGhpcy50ZXN0Q2FzZSA9IHRlc3RDYXNlOwotICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9
IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrID0gZXJyb3JDYWxs
YmFjazsKLSAgICAgICAgdGhpcy5zdGFnZSA9ICcnOwotICAgICAgICB0aGlzLmVudmlyb25tZW50
ID0ge307Ci0gICAgICAgIHRoaXMuY3VycmVudFRlc3QgPSAwOwotCi0gICAgICAgIHRoaXMuY3Vy
cmVudFJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsKLQotICAg
ICAgICB0aGlzLmdldFN5bWJvbFN0cmluZyA9IGZ1bmN0aW9uKHN5bWJvbCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuICd0aGlzLmVudmlyb25tZW50WyInICsgc3ltYm9sICsgJyJdJzsK
LSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRlc3RTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlv
bigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3RlZEVycm9yQ29kZSkg
ewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2Up
OwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hp
bGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuZW50cnkgPSBu
dWxsOwotICAgICAgICB0aGlzLnRlc3RHZXRTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbihlbnRy
eSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCF0aGlzLmV4cGVjdGVkRXJyb3JDb2RlKSB7
Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnU3VjY2VlZGVkOiAnICsgdGhpcy5zdGFnZSk7
Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnRyeSA9IGVudHJ5OwotICAgICAgICAgICAgICAgIHNo
b3VsZEJlLmFwcGx5KHRoaXMsIFsndGhpcy5lbnZpcm9ubWVudFt0aGlzLmVudHJ5LmZ1bGxQYXRo
XS5mdWxsUGF0aCcsICciJyArIGVudHJ5LmZ1bGxQYXRoICsgJyInXSk7Ci0gICAgICAgICAgICAg
ICAgc2hvdWxkQmUuYXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVs
bFBhdGhdLmlzRmlsZSArICIiJywgJyInICsgZW50cnkuaXNGaWxlICsgJyInXSk7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50
cnkuZnVsbFBhdGhdLmlzRGlyZWN0b3J5ICsgIiInLCAnIicgKyBlbnRyeS5pc0RpcmVjdG9yeSAr
ICciJ10pOwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVk
ZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMudGVz
dENyZWF0ZVN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIXRoaXMuZXhwZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCdTdWNjZWVkZWQ6ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICB0
aGlzLmVudmlyb25tZW50W2VudHJ5LmZ1bGxQYXRoXSA9IGVudHJ5OwotICAgICAgICAgICAgICAg
IHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2Up
OwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMudGVzdEdldFBhcmVudFN1Y2Nlc3NDYWxsYmFj
ayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZXhw
ZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZWVkZWQ6
ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygnUGFyZW50IGVudHJ5OiAn
ICsgdG9TdHJpbmcoZW50cnkpKTsKLSAgICAgICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdVbmV4cGVj
dGVkbHkgc3VjY2VlZGVkIHdoaWxlICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgfTsKLQotICAg
ICAgICB0aGlzLnRlc3RSZWFkRW50cmllc1N1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJp
ZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVkRXJyb3JDb2RlKQot
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUg
JyArIHRoaXMuc3RhZ2UpOwotCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJp
ZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkRW50cmllcy5wdXNoKGVu
dHJpZXNbaV0pOwotCi0gICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLmN1cnJlbnRSZWFkZXIucmVhZEVudHJpZXMoYmluZENhbGxiYWNrKHRoaXMs
IHRoaXMudGVzdFJlYWRFbnRyaWVzU3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMs
IHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMu
c3RhZ2UpOwotICAgICAgICAgICAgZGVidWcoJ0VudHJpZXM6ICcgKyB0b1N0cmluZyh0aGlzLnJl
YWRFbnRyaWVzKSk7Ci0gICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgdGhpcy50ZXN0TWV0YWRhdGFTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlvbiht
ZXRhZGF0YSwgZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3Rl
ZEVycm9yQ29kZSkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyAr
IHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgICAgIHZhciBzeW1ib2wgPSBlbnRyeSArICcucmV0
dXJuZWQubW9kaWZpY2F0aW9uVGltZSc7Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVu
dFtzeW1ib2xdID0gbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAgICAgICAgICB2
YXIgZW50cnlNZXRhZGF0YVN0cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGVudHJ5ICE9ICcvJykgewotICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbC5hcHBseSh0aGlzLCBbZW50cnlNZXRhZGF0YVN0cmlu
ZywgJ3RoaXMucm91bmRlZFN0YXJ0RGF0ZSddKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKG1ldGFkYXRhLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5l
bnZpcm9ubWVudFtlbnRyeSArICcucmV0dXJuZWQuc2l6ZSddID0gbWV0YWRhdGEuc2l6ZTsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIGVudHJ5U2l6ZVN0cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3Ry
aW5nKGVudHJ5ICsgJy5yZXR1cm5lZC5zaXplJyk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBl
eHBlY3RlZFNpemVTdHJpbmcgPSB0aGlzLmdldFN5bWJvbFN0cmluZyhlbnRyeSArICcuc2l6ZScp
OwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZS5hcHBseSh0aGlzLCBbZXhwZWN0ZWRTaXpl
U3RyaW5nLCBlbnRyeVNpemVTdHJpbmddKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgdGhpcy5ydW5OZXh0VGVzdCgpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZGx5IHN1Y2NlZWRlZCB3aGlsZSAnICsgdGhpcy5z
dGFnZSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy50ZXN0RXJyb3JDYWxsYmFjayA9IGZ1
bmN0aW9uKGVycm9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBlY3RlZEVy
cm9yQ29kZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlLmFwcGx5KHRoaXMsIFsndGhpcy5l
eHBlY3RlZEVycm9yQ29kZSArICIiJywgJyInICsgZXJyb3IuY29kZSArICciJ10pOwotICAgICAg
ICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNv
ZGUgKyAnIHdoaWxlICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9y
Q2FsbGJhY2soZXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8v
IE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSAgICAgICAgdGhpcy5nZXRGaWxlID0gZnVuY3Rpb24oZW50cnksIHBhdGgsIGZs
YWdzLCBleHBlY3RlZEVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBl
Y3RlZEVycm9yQ29kZSA9IGV4cGVjdGVkRXJyb3JDb2RlOwotICAgICAgICAgICAgdGhpcy5zdGFn
ZSA9ICciJyArIGVudHJ5ICsgJyIuZ2V0RmlsZSgiJyArIHBhdGggKyAnIiknOwotICAgICAgICAg
ICAgdmFyIHN1Y2Nlc3NDYWxsYmFjayA9IChmbGFncyAmJiBmbGFncy5jcmVhdGUpID8gdGhpcy50
ZXN0Q3JlYXRlU3VjY2Vzc0NhbGxiYWNrIDogdGhpcy50ZXN0R2V0U3VjY2Vzc0NhbGxiYWNrOwot
ICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uZ2V0RmlsZShwYXRoLCBmbGFncywg
YmluZENhbGxiYWNrKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0
aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXRE
aXJlY3RvcnkgPSBmdW5jdGlvbihlbnRyeSwgcGF0aCwgZmxhZ3MsIGV4cGVjdGVkRXJyb3JDb2Rl
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0
ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5n
ZXREaXJlY3RvcnkoIicgKyBwYXRoICsgJyIpJzsKLSAgICAgICAgICAgIHZhciBzdWNjZXNzQ2Fs
bGJhY2sgPSAoZmxhZ3MgJiYgZmxhZ3MuY3JlYXRlKSA/IHRoaXMudGVzdENyZWF0ZVN1Y2Nlc3ND
YWxsYmFjayA6IHRoaXMudGVzdEdldFN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgICAgIHRoaXMu
ZW52aXJvbm1lbnRbZW50cnldLmdldERpcmVjdG9yeShwYXRoLCBmbGFncywgYmluZENhbGxiYWNr
KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RFcnJv
ckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXRQYXJlbnQgPSBmdW5j
dGlvbihlbnRyeSwgZXhwZWN0ZWRFcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRo
aXMuZXhwZWN0ZWRFcnJvckNvZGUgPSBleHBlY3RlZEVycm9yQ29kZTsKLSAgICAgICAgICAgIHRo
aXMuc3RhZ2UgPSAnIicgKyBlbnRyeSArICciLmdldFBhcmVudCgpJzsKLSAgICAgICAgICAgIHRo
aXMuZW52aXJvbm1lbnRbZW50cnldLmdldFBhcmVudChiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50
ZXN0R2V0UGFyZW50U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVz
dEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLmdldE1ldGFkYXRh
ID0gZnVuY3Rpb24oZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAg
ICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5nZXRNZXRhZGF0YSgpJzsKLSAgICAg
ICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdldE1ldGFkYXRhKGJpbmRDYWxsYmFjayh0
aGlzLCB0aGlzLnRlc3RNZXRhZGF0YVN1Y2Nlc3NDYWxsYmFjaywgZW50cnkpLCBiaW5kQ2FsbGJh
Y2sodGhpcywgdGhpcy50ZXN0RXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9OwotCi0gICAgICAg
IHRoaXMucmVtb3ZlID0gZnVuY3Rpb24oZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNv
ZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5yZW1vdmUoKSc7
Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmUoYmluZENhbGxiYWNr
KHRoaXMsIHRoaXMudGVzdFN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlz
LnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5yZW1vdmVS
ZWN1cnNpdmVseSA9IGZ1bmN0aW9uKGVudHJ5LCBleHBlY3RlZEVycm9yQ29kZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9IGV4cGVjdGVkRXJyb3JDb2Rl
OwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICciJyArIGVudHJ5ICsgJyIucmVtb3ZlUmVjdXJz
aXZlbHkoKSc7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmVSZWN1
cnNpdmVseShiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmlu
ZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQot
ICAgICAgICB0aGlzLnJlYWREaXJlY3RvcnkgPSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0ZWRFcnJv
ckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgPSBl
eHBlY3RlZEVycm9yQ29kZTsKLSAgICAgICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsKLSAg
ICAgICAgICAgIHRoaXMuc3RhZ2UgPSAnIicgKyBlbnRyeSArICciLmNyZWF0ZVJlYWRlcigpLnJl
YWRFbnRyaWVzKCknOwotICAgICAgICAgICAgdGhpcy5jdXJyZW50UmVhZGVyID0gdGhpcy5lbnZp
cm9ubWVudFtlbnRyeV0uY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRS
ZWFkZXIucmVhZEVudHJpZXMoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFJlYWRFbnRyaWVz
U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJh
Y2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLmNvcHkgPSBmdW5jdGlvbihlbnRyeSwg
ZGVzdGluYXRpb25QYXJlbnQsIG5ld05hbWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7
Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7
Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5jb3B5VG8oIicgKyBk
ZXN0aW5hdGlvblBhcmVudCArICciLCAiJyArIG5ld05hbWUgKyAnIiknOwotICAgICAgICAgICAg
dGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uY29weVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGluYXRp
b25QYXJlbnRdLCBuZXdOYW1lLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0Nh
bGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAg
ICAgICAgfTsKLQotICAgICAgICB0aGlzLm1vdmUgPSBmdW5jdGlvbihlbnRyeSwgZGVzdGluYXRp
b25QYXJlbnQsIG5ld05hbWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAg
ICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5tb3ZlVG8oIicgKyBkZXN0aW5hdGlv
blBhcmVudCArICciLCAiJyArIG5ld05hbWUgKyAnIiknOwotICAgICAgICAgICAgdGhpcy5lbnZp
cm9ubWVudFtlbnRyeV0ubW92ZVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGluYXRpb25QYXJlbnRd
LCBuZXdOYW1lLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNrKSwg
YmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsK
LQotICAgICAgICB0aGlzLnNob3VsZEJlID0gZnVuY3Rpb24oc3ltYm9sMSwgc3ltYm9sMikKLSAg
ICAgICAgewotICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgW3RoaXMuZ2V0U3ltYm9s
U3RyaW5nKHN5bWJvbDEpLCB0aGlzLmdldFN5bWJvbFN0cmluZyhzeW1ib2wyKV0pOwotICAgICAg
ICAgICAgdGhpcy5ydW5OZXh0VGVzdCgpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuc2hv
dWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwgPSBmdW5jdGlvbihzeW1ib2wxLCBzeW1ib2wyKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbC5hcHBseSh0aGlz
LCBbdGhpcy5nZXRTeW1ib2xTdHJpbmcoc3ltYm9sMSksIHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5
bWJvbDIpXSk7Ci0gICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgdGhpcy5zdGFydCA9IGZ1bmN0aW9uKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9ICcnOwotICAgICAgICAg
ICAgdGhpcy5zdGFnZSA9ICdyZXNldHRpbmcgZmlsZXN5c3RlbSc7Ci0gICAgICAgICAgICAvLyBS
ZWNvcmQgcm91bmRlZCBzdGFydCBkYXRlIChjdXJyZW50IHRpbWUgbWludXMgOTk5IG1zZWMpIGhl
cmUgZm9yIHRoZSBjb21wYXJpc29uLiBFbnRyeS5nZXRNZXRhZGF0YSgpIG1heSByZXR1cm4gdGhl
IGxhc3QgbW9kIHRpbWUgaW4gc2Vjb25kcyBhY2N1cmFjeSB3aGlsZSBuZXcgRGF0ZSgpIGlzIG1p
bGxpc2Vjb25kcyBhY2N1cmFjeS4KLSAgICAgICAgICAgIHRoaXMucm91bmRlZFN0YXJ0RGF0ZSA9
IG5ldyBEYXRlKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSA5OTkpOwotICAgICAgICAgICAgcmVt
b3ZlQWxsSW5EaXJlY3RvcnkodGhpcy5maWxlU3lzdGVtLnJvb3QsIGJpbmRDYWxsYmFjayh0aGlz
LCB0aGlzLnNldFVwKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2sp
KTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnNldFVwID0gZnVuY3Rpb24oKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gJyc7Ci0gICAgICAgICAg
ICB0aGlzLnN0YWdlID0gJ3NldHRpbmcgdXAgdGVzdCBwcmVjb25kaXRpb24nOwotICAgICAgICAg
ICAgY3JlYXRlVGVzdEVudmlyb25tZW50KHRoaXMuZmlsZVN5c3RlbSwgdGhpcy50ZXN0Q2FzZS5w
cmVjb25kaXRpb24sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnJ1blRlc3RzKSwgYmluZENhbGxi
YWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICB0aGlzLnJ1bk5leHRUZXN0ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAodGhpcy5jdXJyZW50VGVzdCA+PSB0aGlzLnRlc3RDYXNlLnRlc3RzLmxlbmd0aCkgewotICAg
ICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy50ZXN0Q2FzZS50ZXN0c1t0aGlzLmN1cnJlbnRU
ZXN0KytdKHRoaXMpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMucnVuVGVzdHMgPSBmdW5j
dGlvbihlbnZpcm9ubWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVu
dCA9IGVudmlyb25tZW50OwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFsnLyddID0gdGhp
cy5maWxlU3lzdGVtLnJvb3Q7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0gMDsKLSAg
ICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlz
LnZlcmlmeSA9IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3Rl
ZEVycm9yQ29kZSA9ICcnOwotICAgICAgICAgICAgaWYgKCF0aGlzLnRlc3RDYXNlLnBvc3Rjb25k
aXRpb24pIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuc3RhZ2Ug
PSAndmVyaWZ5aW5nIHRlc3QgcG9zdGNvbmRpdGlvbic7Ci0gICAgICAgICAgICB2ZXJpZnlUZXN0
RW52aXJvbm1lbnQodGhpcy5maWxlU3lzdGVtLCB0aGlzLnRlc3RDYXNlLnBvc3Rjb25kaXRpb24s
IHRoaXMuc3VjY2Vzc0NhbGxiYWNrLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0RXJyb3JD
YWxsYmFjaykpOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB2YXIgaGVscGVyID0gbmV3IE9w
ZXJhdGlvblRlc3RIZWxwZXIoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjayk7Ci0gICAgaGVscGVyLnN0YXJ0KCk7Ci19Ci0KLXZhciBjdXJyZW50VGVz
dCA9IDA7Ci12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci1mdW5jdGlvbiBydW5OZXh0VGVzdCgpIHsK
LSAgICBpZiAoY3VycmVudFRlc3QgPj0gdGVzdENhc2VzLmxlbmd0aCkgewotICAgICAgICBkZWJ1
ZygnRmluaXNoZWQgcnVubmluZyB0ZXN0cy4nKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgdGVzdENhc2UgPSB0ZXN0Q2FzZXNbY3Vy
cmVudFRlc3QrK107Ci0gICAgZGVidWcoJyogUnVubmluZzogJyArIHRlc3RDYXNlLm5hbWUpOwot
ICAgIHJ1bk9wZXJhdGlvblRlc3QoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHJ1bk5leHRUZXN0LCBl
cnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAg
IGlmIChlcnJvciAmJiBlcnJvci5jb2RlKQotICAgICAgICB0ZXN0RmFpbGVkKCdHb3QgZXJyb3Ig
JyArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBmaWxl
U3lzdGVtQ2FsbGJhY2soZnMpCi17Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJ1bk5leHRU
ZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFyZWQtd29y
a2VyLXN0dWIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9zaGFyZWQtd29ya2VyLXN0dWIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zdHViLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotLy8gV2UgZG9uJ3Qgc3RhcnQganMtdGVzdC1w
cmUuanMgZGlyZWN0bHkgYXMgdGhlIHdvcmtlciBzY3JpcHQgYmVjYXVzZSBpdCBzY3Jld3MKLS8v
IHVwIHRoZSBiYXNlIG9mIGFsbCByZWxhdGl2ZSBwYXRocyBwYXNzZWQgdG8gaW1wb3J0U2NyaXB0
cy4KLWltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lz
dGVudC1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1z
eW5jLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNj
cmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1v
bi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMn
KTsKLX0KLQotZGVzY3JpcHRpb24oIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyBQRVJTSVNU
RU5UIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1T
eW5jKFBFUlNJU1RFTlQsIDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVS
U0lTVEVOVCBGaWxlU3lzdGVtOiIgKyBmaWxlU3lzdGVtLm5hbWUpOwotc2hvdWxkQmVUcnVlKCJm
aWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCIpOwotc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5m
dWxsUGF0aCIsICciLyInKTsKLWZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50
LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1ICswLDAg
QEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNv
dXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oInJlcXVlc3RGaWxlU3lz
dGVtIFBFUlNJU1RFTlQgdGVzdC4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotCi1mdW5j
dGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3VyZWQgd2hp
bGUgcmVxdWVzdGluZyBhIFBFUlNJU1RFTlQgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwot
ICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsK
LSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQ
RVJTSVNURU5UIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgc2hvdWxkQmVU
cnVlKCJmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCIpOwotICAgIHNob3VsZEJlKCJmaWxlU3lz
dGVtLnJvb3QuZnVsbFBhdGgiLCAnIi8iJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZh
ciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBFUlNJU1RF
TlQsIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRv
bmx5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL3NpbXBsZS1yZWFkb25seS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCww
IEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNv
dXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJGaWxlU3lzdGVtIEFQ
SSByZWFkb25seSBhdHRyaWJ1dGVzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtOwotdmFyIGZp
bGVFbnRyeTsKLXZhciBmaWxlTWV0YWRhdGE7Ci0KLWZ1bmN0aW9uIHNldFJlYWRvbmx5UHJvcGVy
dHkocHJvcGVydHksIHZhbHVlKQotewotICAgIG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0g
ICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgIiArIHByb3BlcnR5KTsK
LSAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsgIiA9ICIgKyB2YWx1ZSk7Ci0gICAgbmV3VmFsdWUg
PSBldmFsKHByb3BlcnR5KTsKLSAgICBpZiAob2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsKLSAgICAg
ICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIgaXMgc3RpbGwgIiArIG9sZFZhbHVlKTsKLSAgICB9
IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMgY2hhbmdl
ZCIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnIpIHsKLSAgdGVzdEZh
aWxlZChlcnIpOwotICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0RmlsZUNhbGxi
YWNrKGVudHJ5KSB7Ci0gIGZpbGVFbnRyeSA9IGVudHJ5OwotICBzZXRSZWFkb25seVByb3BlcnR5
KCJmaWxlRW50cnkuaXNGaWxlIiwgImZhbHNlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZp
bGVFbnRyeS5pc0RpcmVjdG9yeSIsICJ0cnVlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZp
bGVFbnRyeS5uYW1lIiwgIidiYXInIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZpbGVFbnRy
eS5mdWxsUGF0aCIsICInYmFyJyIpOwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxlRW50cnku
ZmlsZXN5c3RlbSIsICJudWxsIik7Ci0gIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBz
dWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgZmlsZVN5c3RlbSA9IGZzOwotICBzZXRSZWFkb25seVBy
b3BlcnR5KCJmaWxlU3lzdGVtLm5hbWUiLCAiJ2JhciciKTsKLSAgcm9vdCA9IGV2YWxBbmRMb2co
InJvb3QgPSBmaWxlU3lzdGVtLnJvb3QiKTsKLSAgZXZhbEFuZExvZygicm9vdC5nZXRGaWxlKCdm
b28nLCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxlQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIik7Ci19
Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1y
ZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1n
ZXRkaXJlY3RvcnkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3Rvcnku
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpz
Jyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Jyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwot
fQotCi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5RW50cnkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3Qu
Iik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhl
cnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1Q
T1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwot
fQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7
Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToi
ICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVT
eXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LmdldERpcmVjdG9yeSgpIik7Ci0g
ICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxB
bmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1
aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5q
cwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGZpbGUuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNj
cmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigi
RGlyZWN0b3J5RW50cnkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lz
dGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVn
KCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06
IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNj
ZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1l
KTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAg
IHNob3VsZFRocm93KCJyb290LmdldEZpbGUoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1ldmFsQW5kTG9nKCJ3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbShURU1QT1JBUlksIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsi
KTsKLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFk
YXRhLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS5qcwkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVx
dWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2ICsw
LDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9y
ZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIkRpcmVjdG9yeUVu
dHJ5LmdldE1ldGFkYXRhIHJlcXVpcmVkIGFyZ3VtZW50cyB0ZXN0LiIpOwotCi12YXIgZmlsZVN5
c3RlbSA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICBkZWJ1
ZygiRXJyb3Igb2NjdXJlZCB3aGlsZSByZXF1ZXN0aW5nIGEgVEVNUE9SQVJZIGZpbGUgc3lzdGVt
OiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gc3Vj
Y2Vzc0NhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGRlYnVnKCJTdWNj
ZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFt
ZSk7Ci0gICAgcm9vdCA9IGV2YWxBbmRMb2coInJvb3QgPSBmaWxlU3lzdGVtLnJvb3QiKTsKLSAg
ICBzaG91bGRUaHJvdygicm9vdC5nZXRNZXRhZGF0YSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7
Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVt
b3ZlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVk
LWFyZ3VtZW50cy1yZW1vdmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9m
cy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2Zz
LXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiRW50cnkucmVtb3ZlKCkgcmVxdWly
ZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rp
b24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxl
IHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAg
ICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1Q
T1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFu
ZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LnJl
bW92ZSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAw
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUt
dGVtcG9yYXJ5LXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotaWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13
b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRl
c3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRF
TVBPUkFSWSB0ZXN0LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtU3luYyhURU1QT1JBUlksIDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQg
VEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci1zaG91bGRCZVRydWUo
ImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIik7Ci1zaG91bGRCZSgiZmlsZVN5c3RlbS5yb290
LmZ1bGxQYXRoIiwgJyIvIicpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5
LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUgKzAsMCBA
QAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3Vy
Y2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVTeXN0
ZW0gVEVNUE9SQVJZIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rp
b24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCdFcnJvciBvY2N1cmVkIHdoaWxl
IHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06JyArIGVycm9yLmNvZGUpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAg
ICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1Q
T1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICBzaG91bGRCZVRydWUo
ImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIik7Ci0gICAgc2hvdWxkQmUoImZpbGVTeXN0ZW0u
cm9vdC5mdWxsUGF0aCIsICciLyInKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotdmFyIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAx
MDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5q
cwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAot
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCBtYWtpbmcgbXVsdGlw
bGUgc3luY2hyb25vdXMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLiIpOwotCi12YXIgZmlsZVN5c3Rl
bSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJl
bW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotCi0vLyBTdGFnZSAxIChw
cmVwYXJlKQotdmFyIGEgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1
ZX0pOwotdmFyIGIgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0
cnVlfSk7Ci12YXIgYyA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRl
OnRydWV9KTsKLXZhciBkID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2QnLCB7Y3JlYXRlOnRy
dWV9KTsKLQotLy8gU3RhZ2UgMiAodGVzdCkKLXZhciBhX2NvcHkgPSBhLmNvcHlUbyhiLCAndG1w
Jyk7Ci12YXIgbWV0YWRhdGEgPSBhLmdldE1ldGFkYXRhKCk7Ci12YXIgYl9wYXJlbnQgPSBiLmdl
dFBhcmVudCgpOwotdmFyIGNfY29weSA9IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2YnKTsK
LXZhciBkX25ldyA9IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Ci12YXIgZSA9IGZp
bGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSk7Ci0KLS8vIFZlcmlmeQot
dmFyIHJlYWRlciA9IGZpbGVTeXN0ZW0ucm9vdC5jcmVhdGVSZWFkZXIoKTsKLXZhciBkaXJzQ291
bnQgPSAwOwotdmFyIHBhdGhzID0gW107Ci1kbyB7Ci0gICAgdmFyIGVudHJpZXMgPSByZWFkZXIu
cmVhZEVudHJpZXMoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgcGF0aHMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKLSAgICAgICAg
aWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICBkaXJzQ291bnQrKzsKLSAg
ICB9Ci19IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7Ci0KLXBhdGhzLnNvcnQoKTsKLXNob3VsZEJl
KCciJyArIHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7Ci1z
aG91bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxl
U3lzdGVtLnJvb3QpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RF
TVBMQVRFLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Njcmlw
dC10ZXN0cy9maWxlc3lzdGVtLXJlZmVyZW5jZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmpzCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRl
c3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAg
QEAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGlmIEVudHJpZXMgcmV0dXJuZWQgYnkgY2FsbGJh
Y2tzIGtlZXAgZnVuY3Rpb25pbmcgZXZlbiBhZnRlciB3ZSBsb3NlIGEgcmVmZXJlbmNlIHRvIHRo
ZSBmaWxlc3lzdGVtIGluIHRoZSBzY3JpcHQuIik7Ci0KLXZhciB0ZXN0RGlyZWN0b3J5ID0gbnVs
bDsKLXZhciB0ZXN0RW50cmllcyA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJy
b3IpCi17Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsK
LSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdDEocm9vdCkKLXsKLSAg
ICBkZWJ1ZygiUnVubmluZyBydW5UZXN0MSgpLi4uIik7Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBK
b2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsg
fTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnYScsIHtjcmVh
dGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0
aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9y
Q2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVj
dG9yeSgnYycsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAg
IGdjKCk7Ci0gICAgaGVscGVyLmpvaW4oZnVuY3Rpb24oKSB7IHJ1blRlc3QyKHJvb3QpOyB9KTsK
LX0KLQotZnVuY3Rpb24gcnVuVGVzdDIocm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5U
ZXN0MigpLi4uIik7Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFy
IGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGhlbHBlci5ydW4o
ZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnL2IvMScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVy
cm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldEZp
bGUoJy9iLzInLCB7Y3JlYXRlOnRydWV9LCBkb25lLCBlcnJvckNhbGxiYWNrKTsgfSk7Ci0gICAg
aGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCcvYi8zJywge2NyZWF0ZTp0cnVl
fSwgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOwotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7
IHJvb3QuZ2V0RmlsZSgnL2IvNCcsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2sp
OyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYics
IHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlvbihlbnRyeSkgeyB0ZXN0RGlyZWN0b3J5ID0gZW50cnk7
IGhlbHBlci5kb25lKCk7IH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGdjKCk7Ci0gICAg
aGVscGVyLmpvaW4oZnVuY3Rpb24oKSB7IHJ1blRlc3QzKCk7IH0pOwotfQotCi1mdW5jdGlvbiBy
dW5UZXN0MygpCi17Ci0gICAgZGVidWcoIlJ1bm5pbmcgcnVuVGVzdDMoKS4uLiIpOwotICAgIHRl
c3REaXJlY3RvcnkuY3JlYXRlUmVhZGVyKCkucmVhZEVudHJpZXMoZW50cmllc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKLSAgICB0ZXN0RGlyZWN0b3J5ID0gbnVsbDsKLSAgICBnYygpOwotfQot
Ci1mdW5jdGlvbiBlbnRyaWVzQ2FsbGJhY2soZW50cmllcykKLXsKLSAgICBkZWJ1ZygiUnVubmlu
ZyBydW5UZXN0NCgpLi4uIik7Ci0gICAgdGVzdEVudHJpZXMgPSBlbnRyaWVzOwotICAgIHNob3Vs
ZEJlKCJ0ZXN0RW50cmllcy5sZW5ndGgiLCAiNCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpCi17Ci0gICAgdmFyIHJvb3QgPSBmcy5y
b290OwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZzLnJvb3QsIGZ1bmN0aW9uKCkgeyBydW5U
ZXN0MShyb290KTsgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgZnMgPSBudWxsOwotICAgIGdjKCk7
Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0od2luZG93
LlRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfSBl
bHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0
LiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9maWxl
c3lzdGVtLXVuc2VyaWFsaXphYmxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS5qcwkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0
cy9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5ICsw
LDAgQEAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGlmIHRoZSBmaWxlc3lzdGVtIG9iamVjdCBp
cyB1bnNlcmlhbGl6YWJsZSBieSBkZWZhdWx0Iik7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2so
ZXJyb3IpCi17Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5jb2Rl
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNr
KGZzKQotewotICAgIHRyeSB7Ci0gICAgICAgIHBvc3RNZXNzYWdlKGZzLCAnKicpOwotICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgZGVidWcoZS5tZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBmaW5p
c2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gb25tZXNzYWdlKCkKLXsKLX0KLQotaWYgKHdpbmRv
dy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdtZXNzYWdlJywgb25tZXNzYWdlLCBmYWxzZSk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEw
MCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVn
KCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2Zs
YWdzLXBhc3NpbmcuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSw5NCArMCwwIEBACi1kZXNjcmlwdGlvbigiUGFzc2luZyBGbGFncyBwYXJhbWV0ZXIgdGVzdHMu
IFRoaXMgdGVzdCBjaGVja3MgaWYgcGFzc2luZyBGbGFncyBwYXJhbWV0ZXJzIHRvIERpcmVjdG9y
eUVudHJ5LmdldEZpbGUgZG9lcyBub3QgY3Jhc2ggYW5kIHdvcmtzIGFzIGV4cGVjdGVkLiIpOwot
Ci12YXIgdGVzdEZpbGVOYW1lID0gJy9ub25fZXhpc3RlbnRfZmlsZSc7Ci12YXIgZmlsZVN5c3Rl
bSA9IG51bGw7Ci12YXIgZXhwZWN0ZWRDYWxsYmFja3NDb3VudCA9IDA7Ci12YXIgdW5leHBlY3Rl
ZENhbGxiYWNrc0NvdW50ID0gMDsKLXZhciBleHBlY3RlZCA9IGZ1bmN0aW9uKGUpIHsgZXhwZWN0
ZWRDYWxsYmFja3NDb3VudCsrOyB9OwotdmFyIHVuZXhwZWN0ZWQgPSBmdW5jdGlvbihlKSB7IHVu
ZXhwZWN0ZWRDYWxsYmFja3NDb3VudCsrOyB9OwotCi12YXIgdGVzdHNMaXN0ID0gWwotICAgIHJ1
bk9iamVjdFRlc3QsCi0gICAgY2xlYW51cEFuZFJ1bk5leHQsCi0gICAgcnVuSlNPTlRlc3QsCi0g
ICAgcnVuSlNPTlRlc3RXaXRoRXhjbHVzaXZlLAotICAgIHJ1bk51bGxUZXN0LAotICAgIHJ1bk5v
bk9iamVjdFRlc3QKLV07Ci12YXIgdGVzdENvdW50ZXIgPSAwOwotCi1mdW5jdGlvbiBydW5OZXh0
VGVzdCh2KSB7Ci0gICAgaWYgKHRlc3RDb3VudGVyID09IHRlc3RzTGlzdC5sZW5ndGgpIHsKLSAg
ICAgICAgZGVidWcoIkZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuIik7Ci0gICAgICAgIHNob3VsZEJl
KCdleHBlY3RlZENhbGxiYWNrc0NvdW50JywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUoJ3VuZXhw
ZWN0ZWRDYWxsYmFja3NDb3VudCcsICcwJyk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
IH0gZWxzZQotICAgICAgICAodGVzdHNMaXN0W3Rlc3RDb3VudGVyKytdKSgpOwotfQotCi1mdW5j
dGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3VyZWQgZHVy
aW5nIHJlcXVlc3RpbmcgVGVtcG9yYXJ5IEZpbGVTeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWZ1bmN0aW9uIHJ1bk51
bGxUZXN0KHYpIHsKLSAgICBkZWJ1ZygiKiBQYXNzaW5nIG51bGwgYXMgYSBmbGFncyBwYXJhbWV0
ZXIuIik7Ci0KLSAgICAvLyBUaGlzIHNob3VsZCBiZSBvayBhbmQgd2UgdHJlYXQgaXQgYXMge2Zh
bHNlLCBmYWxzZX0gRmxhZ3MuCi0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVO
YW1lLCBudWxsLCBydW5OZXh0VGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHJ1
bk5vbk9iamVjdFRlc3QodikgewotICAgIGRlYnVnKCIqIFBhc3NpbmcgYSBudW1iZXIgYXMgYSBm
bGFncyBwYXJhbWV0ZXIuIik7Ci0KLSAgICB0cnkgewotICAgICAgICAvLyBUaGlzIHNob3VsZCBi
ZSBub3QgYmUgb2sgYmVjYXVzZSA3IGlzIG5vdCBhbiBvYmplY3QuCi0gICAgICAgIGZpbGVTeXN0
ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwgNywgZXJyb3JDYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7Ci0gICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgZGVidWcoIkNhdWdodCBleGNlcHRp
b246ICIgKyBleCk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBydW5PYmplY3RUZXN0KHYpIHsKLSAgICAvLyBXZWJLaXRGbGFncyBubyBsb25nZXIgaGFzIGEg
dmlzaWJsZSBjb25zdHJ1Y3Rvci4KLSAgICBpZiAod2luZG93LldlYktpdEZsYWdzKQotICAgICAg
ICB0aHJvdyAiVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnN0cnVjdG9yIGZvciBXZWJLaXRGbGFncyEi
OwotICAgIHJ1bk5leHRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkpTT05UZXN0KHYpIHsKLSAg
ICBkZWJ1ZygiKiBQYXNzaW5nIEpTT04gRmxhZ3Mgb2JqZWN0LiIpOwotCi0gICAgZmlsZVN5c3Rl
bS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNlfSwgdW5leHBlY3RlZCwg
ZXhwZWN0ZWQpOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2Ny
ZWF0ZTp0cnVlfSwgcnVuTmV4dFRlc3QsIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBy
dW5KU09OVGVzdFdpdGhFeGNsdXNpdmUodikgewotICAgIGRlYnVnKCIqIFBhc3NpbmcgSlNPTiBG
bGFncyBvYmplY3QgKHdpdGggZXhjbHVzaXZlPXRydWUpLiIpOwotCi0gICAgLy8gVGhpcyBzaG91
bGQgZmFpbC4KLSAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSh0ZXN0RmlsZU5hbWUsIHtjcmVh
dGU6dHJ1ZSwgZXhjbHVzaXZlOnRydWV9LCBlcnJvckNhbGxiYWNrLCBydW5OZXh0VGVzdCk7Ci19
Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBjbGVhbnVwQW5kUnVuTmV4dCh2KSB7
Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNl
fSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBlbnRyeSBiZWZvcmUg
c3RhcnQgdGVzdGluZy4KLSAgICAgICAgZW50cnkucmVtb3ZlKHJ1bk5leHRUZXN0LCBlcnJvckNh
bGxiYWNrKTsKLSAgICB9LCBydW5OZXh0VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGVTeXN0ZW1D
YWxsYmFjayhmcykgewotICAgIGZpbGVTeXN0ZW0gPSBmczsKLSAgICBjbGVhbnVwQW5kUnVuTmV4
dCgpOwotfQotCi1pZiAod2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdp
bmRvdy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
LX0gZWxzZQotICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3Vw
cG9ydC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMv
cmVhZC1kaXJlY3RvcnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw5NSArMCwwIEBACi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5
UmVhZGVyLnJlYWRFbnRyaWVzKCkgdGVzdC4iKTsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZh
ciByZWFkZXIgPSBudWxsOwotdmFyIHJlc3VsdEVudHJpZXMgPSBbXTsKLQotdmFyIHJlYWRFbnRy
aWVzQ291bnQgPSAwOwotdmFyIGVudHJpZXNDYWxsYmFja0NvdW50ID0gMDsKLQotLy8gcGF0aDog
aXNEaXJlY3RvcnkgbWFwLgotdmFyIHRlc3RFbnRyaWVzID0gewotICAgICcvYSc6IHRydWUsCi0g
ICAgJy9iJzogZmFsc2UsCi0gICAgJy9jJzogdHJ1ZSwKLSAgICAnL2QnOiBmYWxzZSwKLSAgICAn
L2UnOiBmYWxzZSwKLSAgICAnL2YnOiB0cnVlLAotfTsKLXZhciB0ZXN0RW50cmllc0NvdW50ID0g
MDsKLQotZnVuY3Rpb24gZW5kVGVzdCgpCi17Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmls
ZVN5c3RlbS5yb290KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZXJyb3JD
YWxsYmFjayhlcnJvcikKLXsKLSAgICBkZWJ1ZygiRXJyb3Igb2NjdXJlZDoiICsgZXJyb3IuY29k
ZSk7Ci0gICAgZW5kVGVzdCgpOwotfQotCi12YXIgZW50cnkgPSBudWxsOwotZnVuY3Rpb24gdmVy
aWZ5VGVzdFJlc3VsdCgpCi17Ci0gICAgc2hvdWxkQmUoJ3JlYWRFbnRyaWVzQ291bnQnLCAnZW50
cmllc0NhbGxiYWNrQ291bnQnKTsKLSAgICBzaG91bGRCZSgncmVzdWx0RW50cmllcy5sZW5ndGgn
LCAndGVzdEVudHJpZXNDb3VudCcpOwotICAgIHJlc3VsdEVudHJpZXMuc29ydChmdW5jdGlvbihh
LCBiKSB7IHJldHVybiAoYS5mdWxsUGF0aCA+IGIuZnVsbFBhdGgpID8gMSA6IChhLmZ1bGxQYXRo
IDwgYi5mdWxsUGF0aCkgPyAtMSA6IDA7IH0pOwotICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHRF
bnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGVudHJ5ID0gcmVzdWx0RW50cmllc1tpXTsK
LSAgICAgICAgZGVidWcoJ0VudHJ5OicgKyBlbnRyeS5mdWxsUGF0aCArICcgaXNEaXJlY3Rvcnk6
JyArIGVudHJ5LmlzRGlyZWN0b3J5KTsKLSAgICAgICAgc2hvdWxkQmUoJ3Rlc3RFbnRyaWVzW2Vu
dHJ5LmZ1bGxQYXRoXScsICdlbnRyeS5pc0RpcmVjdG9yeScpOwotICAgIH0KLX0KLQotZnVuY3Rp
b24gZW50cmllc0NhbGxiYWNrKGVudHJpZXMpCi17Ci0gICAgZW50cmllc0NhbGxiYWNrQ291bnQr
KzsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkKLSAgICAg
ICAgcmVzdWx0RW50cmllcy5wdXNoKGVudHJpZXNbaV0pOwotCi0gICAgaWYgKGVudHJpZXMubGVu
Z3RoKSB7Ci0gICAgICAgIHJlYWRFbnRyaWVzQ291bnQrKzsKLSAgICAgICAgcmVhZGVyLnJlYWRF
bnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgLy8gTXVzdCBoYXZlIHJlYWQgYWxsIHRoZSBlbnRyaWVzLgotICAgICAgICB2ZXJpZnlU
ZXN0UmVzdWx0KCk7Ci0gICAgICAgIGVuZFRlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1
blJlYWREaXJlY3RvcnlUZXN0KCkKLXsKLSAgICByZWFkRW50cmllc0NvdW50Kys7Ci0gICAgcmVh
ZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRW50
cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBwcmVw
YXJlRm9yVGVzdCgpCi17Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAg
dmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGZvciAodmFy
IHBhdGggaW4gdGVzdEVudHJpZXMpIHsKLSAgICAgICAgdGVzdEVudHJpZXNDb3VudCsrOwotICAg
ICAgICBpZiAodGVzdEVudHJpZXNbcGF0aF0pCi0gICAgICAgICAgICBoZWxwZXIucnVuKGZ1bmN0
aW9uKCkgeyBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KHBhdGgsIHtjcmVhdGU6dHJ1ZX0s
IGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGVs
cGVyLnJ1bihmdW5jdGlvbigpIHsgZmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwge2NyZWF0
ZTp0cnVlfSwgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOwotICAgIH0KLSAgICBoZWxwZXIuam9p
bihydW5SZWFkRGlyZWN0b3J5VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjayhm
cykKLXsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRh
aW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgcmVt
b3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290LCBwcmVwYXJlRm9yVGVzdCwgZXJyb3JD
YWxsYmFjayk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAg
ICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSh3aW5kb3cuVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBz
dXBwb3J0LiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1wZXJz
aXN0ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLXJlcXVlc3RGaWxlU3lzdGVtIFBF
UlNJU1RFTlQgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN1Y2Nlc3Nm
dWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50Ci1Q
QVNTIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgZmlsZVN5c3RlbS5y
b290LmZ1bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUt
cGVyc2lzdGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9zaW1wbGUtcGVyc2lzdGVudC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw5ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
c2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotRmlsZVN5c3RlbSBBUEkgcmVhZG9ubHkgYXR0cmli
dXRlcyB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVz
dEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aykKLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZVN5c3RlbS5uYW1lCi1maWxl
U3lzdGVtLm5hbWUgPSAnYmFyJwotUEFTUyBmaWxlU3lzdGVtLm5hbWUgaXMgc3RpbGwgZmlsZV9f
MDpUZW1wb3JhcnkKLXJvb3QgPSBmaWxlU3lzdGVtLnJvb3QKLXJvb3QuZ2V0RmlsZSgnZm9vJywg
e2NyZWF0ZTp0cnVlfSwgZ2V0RmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQotdHJ5aW5nIHRv
IHNldCByZWFkb25seSBwcm9wZXJ0eSBmaWxlRW50cnkuaXNGaWxlCi1maWxlRW50cnkuaXNGaWxl
ID0gZmFsc2UKLVBBU1MgZmlsZUVudHJ5LmlzRmlsZSBpcyBzdGlsbCB0cnVlCi10cnlpbmcgdG8g
c2V0IHJlYWRvbmx5IHByb3BlcnR5IGZpbGVFbnRyeS5pc0RpcmVjdG9yeQotZmlsZUVudHJ5Lmlz
RGlyZWN0b3J5ID0gdHJ1ZQotUEFTUyBmaWxlRW50cnkuaXNEaXJlY3RvcnkgaXMgc3RpbGwgZmFs
c2UKLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZUVudHJ5Lm5hbWUKLWZpbGVF
bnRyeS5uYW1lID0gJ2JhcicKLVBBU1MgZmlsZUVudHJ5Lm5hbWUgaXMgc3RpbGwgZm9vCi10cnlp
bmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5IGZpbGVFbnRyeS5mdWxsUGF0aAotZmlsZUVudHJ5
LmZ1bGxQYXRoID0gJ2JhcicKLVBBU1MgZmlsZUVudHJ5LmZ1bGxQYXRoIGlzIHN0aWxsIC9mb28K
LXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZUVudHJ5LmZpbGVzeXN0ZW0KLWZp
bGVFbnRyeS5maWxlc3lzdGVtID0gbnVsbAotUEFTUyBmaWxlRW50cnkuZmlsZXN5c3RlbSBpcyBz
dGlsbCBbb2JqZWN0IERPTUZpbGVTeXN0ZW1dCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3NpbXBsZS1yZWFkb25seS1maWxlLW9iamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1maWxlLW9iamVjdC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9zaW1wbGUtcmVhZG9ubHktZmlsZS1vYmplY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDIyICswLDAgQEAKLVRlc3QgcmVhZG9ubHkgYXR0cmlidXRlcyBvZiBGaWxlLgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0o
VEVNUE9SQVJZLCAxMDAsIGZpbGVTeXN0ZW1DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci1yZW1v
dmVBbGxJbkRpcmVjdG9yeShmaWxlU3lzdGVtLnJvb3QsIGNyZWF0ZVRlc3RGaWxlLCBlcnJvckNh
bGxiYWNrKTsKLWZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0
cnVlfSwgZ2V0RmlsZUZyb21FbnRyeSwgZXJyb3JDYWxsYmFjayk7Ci10ZXN0RmlsZUVudHJ5LmZp
bGUoZmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLXRyeWluZyB0byBzZXQgcmVhZG9ubHkg
cHJvcGVydHkgdGVzdEZpbGUuc2l6ZQotdGVzdEZpbGUuc2l6ZSA9IDEKLVBBU1MgdGVzdEZpbGUu
c2l6ZSBpcyBzdGlsbCAwCi10cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5IHRlc3RGaWxl
LnR5cGUKLXRlc3RGaWxlLnR5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJwotUEFTUyB0
ZXN0RmlsZS50eXBlIGlzIHN0aWxsIHRleHQvcGxhaW4KLXRyeWluZyB0byBzZXQgcmVhZG9ubHkg
cHJvcGVydHkgdGVzdEZpbGUubmFtZQotdGVzdEZpbGUubmFtZSA9ICdiYXInCi1QQVNTIHRlc3RG
aWxlLm5hbWUgaXMgc3RpbGwgdGVzdEZpbGVFbnRyeS50eHQKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWZpbGUtb2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1maWxlLW9iamVjdC5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2lt
cGxlLXJlYWRvbmx5LWZpbGUtb2JqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9InJlc291
cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotZGVz
Y3JpcHRpb24oIlRlc3QgcmVhZG9ubHkgYXR0cmlidXRlcyBvZiBGaWxlLiIpOwotCi12YXIgZmls
ZVN5c3RlbSA9IG51bGw7Ci12YXIgdGVzdEZpbGVOYW1lID0gJy90ZXN0RmlsZUVudHJ5LnR4dCc7
Ci12YXIgdGVzdEZpbGVFbnRyeSA9IG51bGw7Ci12YXIgdGVzdEZpbGUgPSBudWxsOwotCi1mdW5j
dGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKLXsKLSAgICBvbGRWYWx1
ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHBy
b3BlcnR5ICIgKyBwcm9wZXJ0eSk7Ci0gICAgZXZhbEFuZExvZyhwcm9wZXJ0eSArICIgPSAiICsg
dmFsdWUpOwotICAgIG5ld1ZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAgaWYgKG9sZFZhbHVl
ID09IG5ld1ZhbHVlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkgKyAiIGlzIHN0aWxs
ICIgKyBvbGRWYWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZChwcm9wZXJ0
eSArICIgdmFsdWUgd2FzIGNoYW5nZWQiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGVycm9yQ2Fs
bGJhY2soZXJyb3IpIHsKLSAgICB0ZXN0RmFpbGVkKCJFcnJvciBvY2N1cmVkOiIgKyBlcnJvci5j
b2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZUNhbGxiYWNrKGZp
bGUpIHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidGVz
dEZpbGUuc2l6ZSIsICIxIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgidGVzdEZpbGUudHlw
ZSIsICInYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyIpOwotICAgIHNldFJlYWRvbmx5UHJvcGVy
dHkoInRlc3RGaWxlLm5hbWUiLCAiJ2JhciciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gZ2V0RmlsZUZyb21FbnRyeShlbnRyeSkgewotICAgIHRlc3RGaWxlRW50cnkgPSBl
bnRyeTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0RmlsZUVudHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsiKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAg
ZXZhbEFuZExvZygiZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRl
OnRydWV9LCBnZXRGaWxlRnJvbUVudHJ5LCBlcnJvckNhbGxiYWNrKTsiKTsKLX0KLQotZnVuY3Rp
b24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGV2
YWxBbmRMb2coInJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVz
dEZpbGUsIGVycm9yQ2FsbGJhY2spOyIpOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7
Ci1ldmFsQW5kTG9nKCJ3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmls
ZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsiKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25s
eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUt
cmVhZG9ubHkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3NpbXBsZS1yZWFkb25seS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAg
QEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2lt
cGxlLXJlYWRvbmx5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGRpcmVj
dG9yeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1y
ZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMyArMCwwIEBACi1EaXJlY3RvcnlFbnRyeSByZXF1aXJlZCBhcmd1bWVudHMgdGVz
dC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLXdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotU3Vj
Y2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5
Ci1yb290ID0gZmlsZVN5c3RlbS5yb290Ci1QQVNTIHJvb3QuZ2V0RGlyZWN0b3J5KCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1
aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGRp
cmVjdG9yeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFy
Z3VtZW50cy1nZXRkaXJlY3RvcnkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMt
Z2V0ZmlsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVx
dWlyZWQtYXJndW1lbnRzLWdldGZpbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEzICswLDAgQEAKLURpcmVjdG9yeUVudHJ5IHJlcXVpcmVkIGFyZ3VtZW50cyB0ZXN0LgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVN
UE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci1TdWNjZXNzZnVs
bHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLXJvb3Qg
PSBmaWxlU3lzdGVtLnJvb3QKLVBBU1Mgcm9vdC5nZXRGaWxlKCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdl
dGZpbGUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRmaWxlLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9z
aW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlcXVpcmVkLWFyZ3Vt
ZW50cy1nZXRtZXRhZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFk
YXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1EaXJlY3Rv
cnlFbnRyeS5nZXRNZXRhZGF0YSByZXF1aXJlZCBhcmd1bWVudHMgdGVzdC4KLQotT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgotCi0KLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwg
MTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9idGFp
bmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1yb290ID0gZmlsZVN5
c3RlbS5yb290Ci1QQVNTIHJvb3QuZ2V0TWV0YWRhdGEoKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
c2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdl
dG1ldGFkYXRhLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRh
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLXJlbW92ZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJl
ZC1hcmd1bWVudHMtcmVtb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3Zl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1FbnRyeS5yZW1v
dmUoKSByZXF1aXJlZCBhcmd1bWVudHMgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi0KLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBG
aWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1yb290ID0gZmlsZVN5c3RlbS5yb290Ci1QQVNT
IHJvb3QucmVtb3ZlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtcmVtb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1l
bnRzLXJlbW92ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVk
LWFyZ3VtZW50cy1yZW1vdmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVtcG9y
YXJ5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEyICswLDAgQEAKLXJlcXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFSWSB0ZXN0LgotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFS
WSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTIGZpbGVTeXN0ZW0ubmFtZS5sZW5n
dGggPiAwIGlzIHRydWUKLVBBU1MgZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10
ZW1wb3JhcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAKLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtdGVtcG9y
YXJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJh
dGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNyArMCwwIEBACi1bV29ya2VyXSBUZXN0IG1ha2luZyBtdWx0aXBsZSBh
c3luYyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
LQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCi1b
V29ya2VyXSByZXF1ZXN0ZWQgRmlsZVN5c3RlbS4KLVtXb3JrZXJdIEdvdCBGaWxlU3lzdGVtOmZp
bGVfXzA6VGVtcG9yYXJ5Ci1bV29ya2VyXSBTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDEuCi1b
V29ya2VyXSBTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCi1bV29ya2VyXSBWZXJpZnlpbmcg
dGhlIEZpbGVTeXN0ZW0gc3RhdHVzLgotUEFTUyBbV29ya2VyXSAiL2EsL2IsL2MsL2QyLC9lLC9m
IiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgotUEFTUyBbV29ya2VyXSBkaXJzQ291bnQgaXMgMwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3lu
Yy1vcGVyYXRpb25zLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3Jp
cHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMu
anMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZGV0
YWNoZWQtZnJhbWUtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotUEFTUwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZGV0YWNoZWQtZnJhbWUtY3Jhc2guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hl
ZC1mcmFtZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLSBodHRwOi8vY3JidWcu
Y29tLzE0NzU5MgotICAgICBodHRwOi8vd2Via2l0Lm9yZy9iLzk2MzU0IC0tPgotPHNjcmlwdD4K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1kb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7Ci0KLWZ1bmN0aW9uIHJ1blRlc3Qo
KQotewotICAgIGFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBjbGVhcik7Ci19Ci0KLWZ1bmN0
aW9uIGNsZWFyKGV2ZW50KQotewotICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gIiI7Ci0g
ICAgc2V0VGltZW91dChkb25lLCAwKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgZG9j
dW1lbnQuYm9keS5pbm5lclRleHQgPSAiUEFTUyI7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLTwvc2NyaXB0PgotPGlmcmFt
ZSBpZD0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0
bWwiLz4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50
cnktdG8tdXJpLXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMSArMCwwIEBACi1bV29ya2VyXSBPYnRhaW5pbmcgVVJMIGZyb20gRmlsZUVudHJ5LgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJj
ZXMvZmlsZS1lbnRyeS10by11cmktc3luYy5qcwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZUVudHJ5
LnRvVVJMKCkgaXMgJ2ZpbGVzeXN0ZW06ZmlsZTovLy90ZW1wb3JhcnkvdGVzdEZpbGVFbnRyeS50
eHQnCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11
cmktc3luYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11cmktc3lu
Yy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCcuLi9yZXNv
dXJjZXMvZmlsZS1lbnRyeS10by11cmktc3luYy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxl
LWZyb20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTMgKzAsMCBAQAotW1dvcmtlcl0gT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuCi0KLU9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNl
cy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1lIGlz
IHRlc3RGaWxlRW50cnkubmFtZQotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0
L3BsYWluJwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5zaXplIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50
cnktc3luYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzAsMCBAQAotW1dv
cmtlcl0gT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnlTeW5jLgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS1mcm9t
LWZpbGUtZW50cnktc3luYy5qcwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RG
aWxlRW50cnkubmFtZQotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWlu
JwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5zaXplIGlzIDAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUt
ZW50cnktc3luYy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9maWxlLWZyb20t
ZmlsZS1lbnRyeS1zeW5jLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVu
dHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2Zp
bGUtZnJvbS1maWxlLWVudHJ5LmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVt
cHR5LWJsb2ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxl
LXdyaXRlci1lbXB0eS1ibG9iLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSAr
MCwwIEBACi1bV29ya2VyXSBUZXN0IHRoYXQgRmlsZVdyaXRlciB3b3JrcyB3aXRob3V0IGNyYXNo
IHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGFuIGVtcHR5IGJsb2IuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1w
dHktYmxvYi5qcwotW1dvcmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBbV29ya2VyXSBTdWNjZXNz
ZnVsbHkgd3JvdGUgYmxvYi4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLXdyaXRlci1lbXB0eS1ibG9iLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci1lbXB0eS1ibG9iLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotPCFE
T0NUWVBFIEhUTUw+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkZpbGUgV3JpdGVyIHdpdGggZW1w
dHkgQmxvYiBpbiBXb3JrZXI8L3RpdGxlPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXdv
cmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5q
cyIpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3Jp
dGVyLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotW1dvcmtlcl0gVGVzdCB0aGF0IEZpbGVX
cml0ZXIgcHJvZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2ZW50cy4KLQotT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1l
dmVudHMuanMKLVtXb3JrZXJdIHN0YXJ0aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gU2F3IGFsbCB0
aGUgcmlnaHQgZXZlbnRzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMt
c2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29y
a2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2Vy
XSBUZXN0IHRoYXQgRmlsZVdyaXRlciBwcm9kdWNlcyBwcm9wZXIgcHJvZ3Jlc3MgZXZlbnRzLgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3Vy
Y2VzL3NoYXJlZC13b3JrZXItc3R1Yi5qcwotW1dvcmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBb
V29ya2VyXSBTYXcgYWxsIHRoZSByaWdodCBldmVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLXNoYXJlZC13b3JrZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRl
ci1ldmVudHMtc2hhcmVkLXdvcmtlci5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtc2hhcmVkLXdv
cmtlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1M
PgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEV2ZW50cyBTaGFyZWQg
V29ya2VyPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3Jp
cHQ+Ci0gICAgICAgIHZhciB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL3NoYXJl
ZC13b3JrZXItc3R1Yi5qcyIsIHRydWUgLyogc2hhcmVkICovKTsKLSAgICAgICAgd29ya2VyLnBv
cnQucG9zdE1lc3NhZ2UoIklNUE9SVDpmaWxlLXdyaXRlci1ldmVudHMuanMiKTsKLSAgICA8L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZl
bnRzLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4
ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZp
bGUgV3JpdGVyIEV2ZW50cyBXb3JrZXI8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4K
LSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgd29ya2VyID0gc3RhcnRXb3JrZXIoIi4uL3Jl
c291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0g
PC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJsb2ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdGhhdCBhIGJsb2Igd29uJ3QgZ2V0
IGdhcmJhZ2UtY29sbGVjdGVkIHdoaWxlIGJlaW5nIHdyaXR0ZW4gb3V0IGJ5IGEgRmlsZVdyaXRl
ci4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jl
c291cmNlcy9maWxlLXdyaXRlci1nYy1ibG9iLmpzCi1bV29ya2VyXSBzdGFydGluZyB0ZXN0Ci1Q
QVNTIFtXb3JrZXJdIFN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLgotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1nYy1ibG9i
Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOCAr
MCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxl
IFdyaXRlciBHQyBCbG9iIFdvcmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5Pgot
ICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KLSAgICA8c2NyaXB0PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVz
b3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0g
PC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3Jp
dGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy10
cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAg
QEAKLVtXb3JrZXJdIFRlc3QgdXNpbmcgRmlsZVdyaXRlclN5bmMudHJ1bmNhdGUgdG8gZXh0ZW5k
IGEgZmlsZS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6
IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC5qcwotUEFTUyBb
V29ya2VyXSBUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRl
LWV4dGVuZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9DVFlQRSBI
VE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIFN5bmMgVHJ1bmNh
dGUtVG8tRXh0ZW5kPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAg
IDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmls
ZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3lu
Yy13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiAr
MCwwIEBACi1bV29ya2VyXSBUZXN0IHVzaW5nIEZpbGVXcml0ZXJTeW5jLnNlZWsgdG8gd3JpdGUg
b3ZlcmxhcHBpbmcgZXhpc3RpbmcgZGF0YSBpbiBhIGZpbGUuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3lu
Yy13cml0ZS1vdmVybGFwcGVkLmpzCi1QQVNTIFtXb3JrZXJdIE92ZXJsYXBwZWQgd3JpdGUgMSB2
ZXJpZmllZC4KLVBBU1MgW1dvcmtlcl0gT3ZlcmxhcHBlZCB3cml0ZSAyIHZlcmlmaWVkLgotUEFT
UyBbV29ya2VyXSBPdmVybGFwcGVkIHdyaXRlIDMgdmVyaWZpZWQuCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtd3Jp
dGUtb3ZlcmxhcHBlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLTwhRE9D
VFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIFN5bmMg
VHJ1bmNhdGUtVG8tRXh0ZW5kPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJj
ZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzIik7Ci0gICAgPC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotIDwvYm9keT4KLTwvaHRtbD4KLQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
d3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRl
LWV4dGVuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotW1dv
cmtlcl0gVGVzdCBvZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmls
ZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCi1bV29ya2VyXSBzdGFydGluZyB0ZXN0Ci1QQVNT
IFtXb3JrZXJdIFRydW5jYXRlIGV4dGVuc2lvbiB2ZXJpZmllZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRl
ci10cnVuY2F0ZS1leHRlbmQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4K
LSA8aGVhZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgVHJ1bmNhdGUtVG8tRXh0ZW5kIFdvcmtl
cjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0Pgot
ICAgICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRy
dW5jYXRlLWV4dGVuZC5qcyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0
bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBl
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdXNpbmcgRmls
ZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxl
LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVz
b3VyY2VzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuanMKLVtXb3JrZXJdIHN0YXJ0aW5n
IHRlc3QKLVBBU1MgW1dvcmtlcl0gTmVnYXRpdmUgc2VlayB2YWxpZGF0ZWQuCi1QQVNTIFtXb3Jr
ZXJdIFBvc2l0aXZlIHNlZWsgdmFsaWRhdGVkLgotUEFTUyBbV29ya2VyXSBOb25leHRlbmRpbmcg
d3JpdGUgdmFsaWRhdGVkLgotUEFTUyBbV29ya2VyXSBBbGwgd3JpdGVzIHZlcmlmaWVkLgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJs
YXBwZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRl
LW92ZXJsYXBwZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOCArMCwwIEBACi08IURPQ1RZ
UEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBXcml0ZSBP
dmVybGFwcGVkIFdvcmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
LSAgICA8c2NyaXB0PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2Vz
L2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2Vz
L2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFt
ZS1jcmFzaC1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPHNjcmlwdD4KLXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJkZXRhY2hlZC1m
cmFtZS1jcmFzaC13b3JrZXIuanMiKTsKLXdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgcmVsYXlNZXNzYWdlKTsKLQotZnVuY3Rpb24gcmVsYXlNZXNzYWdlKGV2ZW50KQotewotICAg
IHBhcmVudC5wb3N0TWVzc2FnZShldmVudC5kYXRhLCBsb2NhdGlvbi5vcmlnaW4pOwotfQotPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJj
ZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtd29ya2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFz
aC13b3JrZXIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC13b3JrZXIuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMCwwIEBACi1wb3N0TWVzc2FnZSgiUmVhZHkiKTsKLXJ1bigp
OwotCi1mdW5jdGlvbiBydW4oKQotewotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBP
UkFSWSwgMSwgcnVuKTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MyArMCwwIEBACi1bV29ya2VyXSByZXF1ZXN0RmlsZVN5c3RlbSBQRVJTSVNURU5UIHRlc3QuCi0K
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291
cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwotW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5IG9idGFpbmVk
IFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKLVBBU1MgW1dvcmtlcl0g
ZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQotUEFTUyBbV29ya2VyXSBmaWxlU3lz
dGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3lu
Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVtXb3JrZXJdIHdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtU3luYyBQRVJTSVNURU5UIHRlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQot
Ci1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpz
Ci1bV29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZp
bGVfXzA6UGVyc2lzdGVudAotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4g
MCBpcyB0cnVlCi1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1z
eW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNl
cy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXBlcnNpc3RlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVh
ZD4KLTxib2R5PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMv
c2ltcGxlLXBlcnNpc3RlbnQuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFy
eS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnkt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVtXb3JrZXJdIHJl
cXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFSWSB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS5q
cwotW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZp
bGVfXzA6VGVtcG9yYXJ5Ci1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAw
IGlzIHRydWUKLVBBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3lu
Yy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBv
cmFyeS1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1b
V29ya2VyXSByZXF1ZXN0RmlsZVN5c3RlbVN5bmMgVEVNUE9SQVJZIHRlc3QuCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1w
bGUtdGVtcG9yYXJ5LXN5bmMuanMKLVtXb3JrZXJdIFN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1Q
T1JBUlkgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQotUEFTUyBbV29ya2VyXSBmaWxlU3lz
dGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9v
dC5mdWxsUGF0aCBpcyAiLyIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRl
bXBvcmFyeS1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3Jr
ZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMnKTsKLTwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS5odG1sCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVt
cG9yYXJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4u
L3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMt
b3BlcmF0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVy
YXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1bV29y
a2VyXSBUZXN0IG1ha2luZyBtdWx0aXBsZSBzeW5jaHJvbm91cyBGaWxlU3lzdGVtIG9wZXJhdGlv
bnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4u
L3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMKLVBBU1MgW1dvcmtlcl0gIi9hLC9iLC9jLC9k
MiwvZSwvZiIgaXMgIi9hLC9iLC9jLC9kMiwvZSwvZiIKLVBBU1MgW1dvcmtlcl0gZGlyc0NvdW50
IGlzIDMKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlv
bnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zeW5jLW9wZXJhdGlvbnMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlv
bnMuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZl
cnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
ZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTYgKzAsMCBAQAotVGVzdCB0aGF0IE11dGF0aW9uIFJlY29yZHMgYXJlIGRlbGl2ZXJl
ZCBmb2xsb3dpbmcgRmlsZVN5c3RlbSBjYWxsYmFja3MuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMF0u
dHlwZSBpcyAiYXR0cmlidXRlcyIKLVBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMg
ImZvbyIKLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgotUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiYmF6
IgotCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNh
bGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
TXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0bWwJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmls
ZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY1ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgotd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotdmFyIG11dGF0aW9uczsKLQotZnVuY3Rpb24gdGVzdEZpbGVzeXN0ZW0oKSB7Ci0g
ICAgdmFyIGRpdjsKLSAgICB2YXIgZmlsZUVudHJ5OwotICAgIHZhciBvYnNlcnZlcjsKLQotICAg
IGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICBtdXRhdGlvbnMgPSBudWxsOwotICAgICAgICBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgb2JzZXJ2ZXIgPSBu
ZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICBtdXRhdGlvbnMg
PSBtOwotICAgICAgICB9KTsKLQotICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRy
aWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOwotCi0gICAgICAgIHdlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgNSoxMDI0KjEwMjQsIGZ1bmN0aW9uKGZzKSB7Ci0g
ICAgICAgICAgICBmcy5yb290LmdldEZpbGUoJ2Zvby50eHQnLCB7Y3JlYXRlOiB0cnVlLCBleGNs
dXNlOiB0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAgICAgICBmaWxlRW50cnkg
PSBlbnRyeTsKLSAgICAgICAgICAgICAgICBmaWxlRW50cnkuZ2V0UGFyZW50KG11dGF0ZUFmdGVy
R2V0UGFyZW50KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBtdXRhdGVBZnRlckdldFBhcmVudCgpIHsKLSAgICAgICAgZGl2LnNldEF0dHJpYnV0
ZSgnZm9vJywgJ2JhcicpOwotICAgICAgICBmaWxlRW50cnkucmVtb3ZlKG11dGF0ZUFmdGVyUmVt
b3ZlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtdXRhdGVBZnRlclJlbW92ZSgpIHsKLSAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZm9vIicpOwotCi0gICAgICAgIG11dGF0aW9u
cyA9IG51bGw7Ci0gICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2JheicsICdiYXQnKTsKLSAgICAg
ICAgc2V0VGltZW91dChmaW5pc2gsIDApOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZpbmlzaCgp
IHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwotICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Ci0gICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciYmF6IicpOwotCi0gICAgICAg
IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgZGVidWcoJycpOwotICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICB9Ci0KLSAgICBzdGFydCgpOwotfQotCi1kZXNjcmlwdGlvbignVGVz
dCB0aGF0IE11dGF0aW9uIFJlY29yZHMgYXJlIGRlbGl2ZXJlZCBmb2xsb3dpbmcgRmlsZVN5c3Rl
bSBjYWxsYmFja3MuJyk7Ci0KLWlmICghd2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7
Ci0gICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShGSUxFX1NZU1RFTSkn
KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0gZWxzZQotICAgIHRlc3RGaWxlc3lzdGVtKCk7Ci08
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVy
YXRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMCwwIEBACi1UZXN0IG1ha2luZyBtdWx0aXBsZSBh
c3luYyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
LQotCi1yZXF1ZXN0ZWQgRmlsZVN5c3RlbS4KLUdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9y
YXJ5Ci1TdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDEuCi1TdGFydGluZyBhc3luYyB0ZXN0IHN0
YWdlIDIuCi1WZXJpZnlpbmcgdGhlIEZpbGVTeXN0ZW0gc3RhdHVzLgotUEFTUyAiL2EsL2IsL2Ms
L2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgotUEFTUyBkaXJzQ291bnQgaXMgMwot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMuaHRt
bAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5j
LW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+
Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9u
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Nyb3NzLWZpbGVzeXN0ZW0tb3AtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
Y3Jvc3MtZmlsZXN5c3RlbS1vcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkg
KzAsMCBAQAotVGhpcyB0ZXN0cyBiYXNpYyBjcm9zcy1maWxlc3lzdGVtIG9wZXJhdGlvbnMuCi1E
cm9wIGZpbGVzIGhlcmUgaWYgeW91IHRlc3QgdGhpcyBtYW51YWxseQotVmVyaWZ5aW5nIGNvbnRl
bnRzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLi4uCi1QQVNTOiAiMSIgPT0gIjEiCi1QQVNTOiAiZmls
ZSIgPT0gImZpbGUiCi1QQVNTOiAidHJ1ZSIgPT0gInRydWUiCi1TdWNjZXNzZnVsbHkgc2V0dXAg
dGVzdCBlbnZpcm9ubWVudC4KLWZpbGVfXzA6VGVtcG9yYXJ5OiByZXNldCAvdGVzdAotVGVzdGlu
ZyBjb3B5VG8gYXBwbGUuZ2lmOiAvcmVzb3VyY2VzID0+IC90ZXN0Ci1QQVNTOiAiYXBwbGUuZ2lm
IiA9PSAiYXBwbGUuZ2lmIgotUEFTUzogIjE0NzYiID09ICIxNDc2IgotVGVzdGluZyBjb3B5VG8g
bW96aWxsYS5naWY6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJtb3ppbGxhLmdpZiIgPT0g
Im1vemlsbGEuZ2lmIgotUEFTUzogIjI1OTMiID09ICIyNTkzIgotVGVzdGluZyBjb3B5VG8gZHJv
cC1maWxlLXN2Zy5zdmc6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJkcm9wLWZpbGUtc3Zn
LnN2ZyIgPT0gImRyb3AtZmlsZS1zdmcuc3ZnIgotUEFTUzogIjEwOSIgPT0gIjEwOSIKLVRlc3Rp
bmcgY29weVRvIGNvcHktYmFja3NsYXNoLWV1Yy5odG1sOiAvcmVzb3VyY2VzID0+IC90ZXN0Ci1Q
QVNTOiAiY29weS1iYWNrc2xhc2gtZXVjLmh0bWwiID09ICJjb3B5LWJhY2tzbGFzaC1ldWMuaHRt
bCIKLVBBU1M6ICI0NzgiID09ICI0NzgiCi1UZXN0aW5nIGNvcHlUbyB0ZXN0X2RpcmVjdG9yeS90
ZXN0LnR4dDogL3Jlc291cmNlcyA9PiAvdGVzdAotUEFTUzogInRlc3QudHh0IiA9PSAidGVzdC50
eHQiCi1QQVNTOiAiMTMiID09ICIxMyIKLWZpbGVfXzA6VGVtcG9yYXJ5OiByZXNldCAvdGVzdAot
VGVzdGluZyBjb3B5VG8gbW96aWxsYS5naWY6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6ICJt
b3ppbGxhLmdpZiIgPT0gIm1vemlsbGEuZ2lmIgotUEFTUzogIjI1OTMiID09ICIyNTkzIgotVGVz
dGluZyBjb3B5VG8gZHJvcC1maWxlLXN2Zy5zdmc6IC9yZXNvdXJjZXMgPT4gL3Rlc3QKLVBBU1M6
ICJkcm9wLWZpbGUtc3ZnLnN2ZyIgPT0gImRyb3AtZmlsZS1zdmcuc3ZnIgotUEFTUzogIjEwOSIg
PT0gIjEwOSIKLVRlc3RpbmcgY29weVRvIGNvcHktYmFja3NsYXNoLWV1Yy5odG1sOiAvcmVzb3Vy
Y2VzID0+IC90ZXN0Ci1QQVNTOiAiY29weS1iYWNrc2xhc2gtZXVjLmh0bWwiID09ICJjb3B5LWJh
Y2tzbGFzaC1ldWMuaHRtbCIKLVBBU1M6ICI0NzgiID09ICI0NzgiCi1UZXN0aW5nIGNvcHlUbyB0
ZXN0X2RpcmVjdG9yeS90ZXN0LnR4dDogL3Jlc291cmNlcyA9PiAvdGVzdAotUEFTUzogInRlc3Qu
dHh0IiA9PSAidGVzdC50eHQiCi1QQVNTOiAiMTMiID09ICIxMyIKLVN1Y2Nlc3NmdWxseSByYW4g
MiB0ZXN0cy4KLUNsZWFudXAgZG9uZS4KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2Nyb3NzLWZpbGVzeXN0ZW0tb3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC5odG1sCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vY3Jvc3MtZmlsZXN5c3RlbS1vcC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2NCArMCwwIEBACi08aHRtbD4KLTxib2R5PgotPGRpdj5U
aGlzIHRlc3RzIGJhc2ljIGNyb3NzLWZpbGVzeXN0ZW0gb3BlcmF0aW9ucy48L2Rpdj4KLQotPGRp
diBpZD0iZGVzdGluYXRpb24iIHN0eWxlPSJtaW4taGVpZ2h0OjEwMHB4OyBib3JkZXI6IHNvbGlk
IDFweCBibGFjayI+RHJvcCBmaWxlcyBoZXJlIGlmIHlvdSB0ZXN0IHRoaXMgbWFudWFsbHk8L2Rp
dj4KLQotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgbWV0aG9kcyA9
IFsgJ2NvcHlUbycsICdtb3ZlVG8nIF07Ci12YXIgc291cmNlVGVzdERpcmVjdG9yeSwgZGVzdFRl
c3REaXJlY3Rvcnk7Ci0KLXZhciBkZXN0RGlyZWN0b3J5UGF0aCA9ICcvdGVzdCc7Ci12YXIgc291
cmNlRGlyZWN0b3J5UGF0aCA9ICcuLi8uLi9lZGl0aW5nL3Bhc3RlYm9hcmQvcmVzb3VyY2VzJzsK
LQotLy8gQWN0dWFsIGZpbGVzIGluIHRoZSBzb3VyY2VEaXJlY3RvcnlQYXRoLgotdmFyIHRlc3RG
aWxlcyA9IFsKLSAgICB7IHBhdGg6J2FwcGxlLmdpZicgfSwKLSAgICB7IHBhdGg6J21vemlsbGEu
Z2lmJyB9LAotICAgIHsgcGF0aDonZHJvcC1maWxlLXN2Zy5zdmcnIH0sCi0gICAgeyBwYXRoOidj
b3B5LWJhY2tzbGFzaC1ldWMuaHRtbCcgfSwKLSAgICB7IHBhdGg6J3Rlc3RfZGlyZWN0b3J5Jywg
ZGlyZWN0b3J5OnRydWUgfSwKLSAgICB7IHBhdGg6J3Rlc3RfZGlyZWN0b3J5L3Rlc3QudHh0JyB9
Ci1dOwotCi0vLyBOb3RlOiBmb3Igbm93IHdlIGRvbid0IHJ1biBtb3ZlVG8gdGVzdCBzaW5jZSBk
cmFnLWFuZC1kcm9wIGlzb2xhdGVkCi0vLyBmaWxlc3lzdGVtLCB3aGljaCB3ZSB1c2UgZm9yIHNv
dXJjZSBmaWxlc3lzdGVtLCBpcyByZWFkLW9ubHkuCi0vLyBGSVhNRTogYWxsb3cgd3JpdGluZyB0
byBQRVJTSVNURU5UIGZpbGVzeXN0ZW0gd2l0aG91dCBxdW90YSBlcnJvciBpbgotLy8gRHVtcFJl
bmRlclRyZWUgc28gdGhhdCB3ZSBjYW4gdGVzdCBURU1QT1JBUlkgPC0+IFBFUlNJU1RFTlQgY3Jv
c3Mgb3BlcmF0aW9uCi0vLyBjaGVja3MuCi12YXIgdGVzdHMgPSBbCi0gICAgdGVzdENvcHlGaWxl
LAotICAgIHRlc3RDb3B5RGlyZWN0b3J5LAotXTsKLQotZnVuY3Rpb24gbG9nKHRleHQpCi17Ci0g
ICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwotICAg
IGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOwotICAg
IGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3QoZXhwZWN0LCBhY3R1YWwpCi17Ci0gICAgbG9nKChleHBlY3QgPT0gYWN0
dWFsID8gJ1BBU1MnIDogJ0ZBSUwnKSArICc6ICInICsgZXhwZWN0ICsgJyIgPT0gIicgKyBhY3R1
YWwgKyAnIicpOwotfQotCi0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2sobXNnKQotewotICAgIHJl
dHVybiBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGNvbnNvbGUubG9nKGUpOwotICAgICAgICBsb2co
J0VSUk9SOicgKyBtc2cgKyAnOiAnICsgZS5jb2RlKTsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfTsKLX0K
LQotZnVuY3Rpb24gc2V0dXBEZXN0RmlsZVN5c3RlbShzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSh3aW5kb3cuVEVNUE9SQVJZLCAxMDI0LCBmdW5jdGlvbiAo
ZnMpIHsKLSAgICAgICAgZnMucm9vdC5nZXREaXJlY3RvcnkoCi0gICAgICAgICAgICBkZXN0RGly
ZWN0b3J5UGF0aCwKLSAgICAgICAgICAgIHtjcmVhdGU6dHJ1ZX0sCi0gICAgICAgICAgICBmdW5j
dGlvbiAoZW50cnkpIHsKLSAgICAgICAgICAgICAgICBkZXN0VGVzdERpcmVjdG9yeSA9IGVudHJ5
OwotICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIGVycm9yQ2FsbGJhY2soJ2Rlc3Q6IGNyZWF0ZURpcmVjdG9yeSgnICsgZGVzdERp
cmVjdG9yeVBhdGggKyAnKScpKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKCdkZXN0OiByZXF1ZXN0
RmlsZVN5c3RlbSBmb3IgUEVSU0lTVEVOVCcpKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdHMoaW5k
ZXgsIHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIGlmIChpbmRleCA+PSB0ZXN0cy5sZW5ndGgpIHsK
LSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
dmFyIG5leHQgPSBmdW5jdGlvbigpIHsgcnVuVGVzdHMoaW5kZXggKyAxLCBzdWNjZXNzQ2FsbGJh
Y2spOyB9OwotICAgIHJlc2V0RGlyZWN0b3J5KGRlc3RUZXN0RGlyZWN0b3J5LCBmdW5jdGlvbigp
IHsgdGVzdHNbaW5kZXhdKG5leHQpOyB9KTsKLX0KLQotZnVuY3Rpb24gdGVzdENvcHlGaWxlKHN1
Y2Nlc3NDYWxsYmFjaykgewotICAgIHRlc3RPbkZpbGUoMCwgJ2NvcHlUbycsIHN1Y2Nlc3NDYWxs
YmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RDb3B5RGlyZWN0b3J5KHN1Y2Nlc3NDYWxsYmFjaykg
ewotICAgIHRlc3RPbkRpcmVjdG9yeSgwLCAnY29weVRvJywgc3VjY2Vzc0NhbGxiYWNrKTsKLX0K
LQotZnVuY3Rpb24gdGVzdE9uRmlsZShpbmRleCwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spIHsK
LSAgICBpZiAoaW5kZXggPj0gdGVzdEZpbGVzLmxlbmd0aCkgewotICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgbmV4dCA9IGZ1bmN0aW9u
KCkgeyB0ZXN0T25GaWxlKGluZGV4ICsgMSwgbWV0aG9kLCBzdWNjZXNzQ2FsbGJhY2spOyB9Owot
ICAgIGlmICh0ZXN0RmlsZXNbaW5kZXhdLmRpcmVjdG9yeSkgewotICAgICAgICBuZXh0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFyIGZpbGUgPSB0ZXN0RmlsZXNbaW5kZXhdOwot
ICAgIGxvZygnVGVzdGluZyAnICsgbWV0aG9kICsgJyAnICsgZmlsZS5wYXRoICsgJzogJyArIHNv
dXJjZVRlc3REaXJlY3RvcnkuZnVsbFBhdGggKyAnID0+ICcgKyBkZXN0VGVzdERpcmVjdG9yeS5m
dWxsUGF0aCk7Ci0gICAgc291cmNlVGVzdERpcmVjdG9yeS5nZXRGaWxlKAotICAgICAgICBmaWxl
LnBhdGgsIHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlvbihzb3VyY2UpIHsKLSAgICAgICAgICAgIHNv
dXJjZVttZXRob2RdKGRlc3RUZXN0RGlyZWN0b3J5LCAnJywgZnVuY3Rpb24oZGVzdCkgewotICAg
ICAgICAgICAgICAgIHZlcmlmeUZpbGUoc291cmNlLCBkZXN0LCBuZXh0KTsKLSAgICAgICAgICAg
IH0sIGVycm9yQ2FsbGJhY2soJ3Rlc3RPbkZpbGU6ICcgKyBtZXRob2QgKyAnOicgKyBmaWxlLnBh
dGgpKTsKLSAgICAgICAgfSwgZXJyb3JDYWxsYmFjaygndGVzdE9uRmlsZTogZ2V0RmlsZTonICsg
ZmlsZS5wYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RPbkRpcmVjdG9yeShpbmRleCwgbWV0aG9k
LCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICBpZiAoaW5kZXggPj0gdGVzdEZpbGVzLmxlbmd0aCkg
ewotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICB2YXIgbmV4dCA9IGZ1bmN0aW9uKCkgeyB0ZXN0T25GaWxlKGluZGV4ICsgMSwgbWV0aG9kLCBz
dWNjZXNzQ2FsbGJhY2spOyB9OwotICAgIGlmICghdGVzdEZpbGVzW2luZGV4XS5kaXJlY3Rvcnkp
IHsKLSAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHZhciBmaWxl
ID0gdGVzdEZpbGVzW2luZGV4XTsKLSAgICBsb2coJ1Rlc3RpbmcgJyArIG1ldGhvZCArICcgJyAr
IGZpbGUucGF0aCArICc6ICcgKyBzb3VyY2VUZXN0RGlyZWN0b3J5LmZ1bGxQYXRoICsgJyA9PiAn
ICsgZGVzdFRlc3REaXJlY3RvcnkuZnVsbFBhdGgpOwotICAgIHNvdXJjZVRlc3REaXJlY3Rvcnku
Z2V0RGlyZWN0b3J5KAotICAgICAgICBmaWxlLnBhdGgsIHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlv
bihzb3VyY2UpIHsKLSAgICAgICAgICAgIHNvdXJjZVttZXRob2RdKGRlc3RUZXN0RGlyZWN0b3J5
LCAnJywgZnVuY3Rpb24oZGVzdCkgewotICAgICAgICAgICAgICAgIHZlcmlmeUZpbGUoc291cmNl
LCBkZXN0LCBuZXh0KTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2soJ3Rlc3RPbkRpcmVj
dG9yeTogJyArIG1ldGhvZCArICc6JyArIGZpbGUucGF0aCkpOwotICAgICAgICB9LCBlcnJvckNh
bGxiYWNrKCd0ZXN0T25EaXJlY3Rvcnk6IGdldERpcmVjdG9yeTonICsgZmlsZS5wYXRoKSk7Ci19
Ci0KLWZ1bmN0aW9uIHZlcmlmeUZpbGUoc291cmNlLCBkZXN0LCBzdWNjZXNzQ2FsbGJhY2spIHsK
LSAgICB0ZXN0KHNvdXJjZS5uYW1lLCBkZXN0Lm5hbWUpOwotICAgIHNvdXJjZS5nZXRNZXRhZGF0
YShmdW5jdGlvbihzb3VyY2VNZXRhZGF0YSkgewotICAgICAgICB2YXIgZXhwZWN0ZWRTaXplID0g
c291cmNlTWV0YWRhdGEuc2l6ZTsKLSAgICAgICAgZGVzdC5nZXRNZXRhZGF0YShmdW5jdGlvbihk
ZXN0TWV0YWRhdGEpIHsKLSAgICAgICAgICAgIHRlc3QoZXhwZWN0ZWRTaXplLCBkZXN0TWV0YWRh
dGEuc2l6ZSk7Ci0gICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgfSwgZXJy
b3JDYWxsYmFjaygnZ2V0TWV0YWRhdGE6JyArIGRlc3QuZnVsbFBhdGgpKTsKLSAgICB9LCBlcnJv
ckNhbGxiYWNrKCdnZXRNZXRhZGF0YTonICsgc291cmNlLmZ1bGxQYXRoKSk7Ci19Ci0KLWZ1bmN0
aW9uIHZlcmlmeURpcmVjdG9yeShzb3VyY2UsIGRlc3QsIHN1Y2Nlc3NDYWxsYmFjaykgewotICAg
IGdldERpcmVjdG9yeUVudHJpZXMoc291cmNlLCBmdW5jdGlvbihzb3VyY2VFbnRyaWVzKSB7Ci0g
ICAgICAgIGdldERpcmVjdG9yeUVudHJpZXMoZGVzdCwgZnVuY3Rpb24oZGVzdEVudHJpZXMpIHsK
LSAgICAgICAgICAgIHNvdXJjZUVudHJpZXMuc29ydCgpOwotICAgICAgICAgICAgZGVzdEVudHJp
ZXMuc29ydCgpOwotICAgICAgICAgICAgdGVzdChzb3VyY2VFbnRyaWVzLmxlbmd0aCwgZGVzdEVu
dHJpZXMubGVuZ3RoKTsKLSAgICAgICAgICAgIHZhciB2ZXJpZnlPbmUgPSBmdW5jdGlvbihpbmRl
eCkgewotICAgICAgICAgICAgICAgIHZlcmlmeUZpbGUoc291cmNlRW50cmllc1tpbmRleF0sIGRl
c3RFbnRyaWVzW2luZGV4XSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChp
bmRleCA+PSBzb3VyY2VFbnRyaWVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdmVyaWZ5T25lKGluZGV4ICsg
MSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdmVy
aWZ5T25lKDApOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZ2V0RGlyZWN0
b3J5RW50cmllcyhlbnRyeSwgZW50cmllc0NhbGxiYWNrKSB7Ci0gICAgdmFyIGFsbEVudHJpZXMg
PSBbXTsKLSAgICB2YXIgYWRkRW50cmllcyA9IGZ1bmN0aW9uKGVudHJpZXMsIGNvbnRpbnVlQ2Fs
bGJhY2spIHsKLSAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAg
IGVudHJpZXNDYWxsYmFjayhhbGxFbnRyaWVzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBhbGxFbnRyaWVzLmNvbmNhdChlbnRyaWVzKTsKLSAgICAgICAgaWYgKGVu
dHJpZXMubGVuZ3RoICE9IDApIGNvbnRpbnVlQ2FsbGJhY2soKTsKLSAgICB9OwotICAgIHZhciBl
bnRyaWVzQ2FsbGJhY2sgPSBmdW5jdGlvbihlbnRyaWVzKSB7Ci0gICAgICAgIGFkZEVudHJpZXMo
ZW50cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJlYWRl
ci5yZWFkRGlyZWN0b3J5KGVudHJpZXNDYWxsYmFjayk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0g
ICAgdmFyIHJlYWRlciA9IGVudHJ5LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFkRGly
ZWN0b3J5KGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjaygncmVhZERpcmVjdG9yeTogJyAr
IGVudHJ5LmZ1bGxQYXRoKSk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXBEaXJlY3RvcnkoZGlyZWN0
b3J5LCBzdWNjZXNzQ2FsbGJhY2spIHsKLSAgICBkaXJlY3RvcnkucmVtb3ZlUmVjdXJzaXZlbHko
Ci0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjaywKLSAgICAgICAgZXJyb3JDYWxsYmFjaygncmVtb3Zl
UmVjdXJzaXZlbHk6JyArIGRpcmVjdG9yeS5mdWxsUGF0aCkpOwotfQotCi1mdW5jdGlvbiByZXNl
dERpcmVjdG9yeShkaXJlY3RvcnksIHN1Y2Nlc3NDYWxsYmFjaykgewotICAgIHZhciBmcyA9IGRp
cmVjdG9yeS5maWxlc3lzdGVtOwotICAgIHZhciBwYXRoID0gZGlyZWN0b3J5LmZ1bGxQYXRoOwot
ICAgIGNsZWFudXBEaXJlY3RvcnkoZGlyZWN0b3J5LCBmdW5jdGlvbigpIHsKLSAgICAgICAgZnMu
cm9vdC5nZXREaXJlY3RvcnkocGF0aCwge2NyZWF0ZTp0cnVlfSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2coZnMubmFtZSArICc6IHJlc2V0ICcgKyBwYXRoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sIGVycm9yQ2FsbGJhY2soJ2dldERpcmVjdG9yeShjcmVhdGUpOicgKyBwYXRoKSk7Ci0g
ICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwRmlsZXMocm9vdCwgaW5kZXgsIHN1Y2Nlc3NDYWxs
YmFjaykKLXsKLSAgICBpZiAoaW5kZXggPj0gdGVzdEZpbGVzLmxlbmd0aCkgewotICAgICAgICBz
dWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB2YXIgZmlsZSA9
IHRlc3RGaWxlc1tpbmRleF07Ci0gICAgdmFyIG1zZyA9ICdjcmVhdGUgdGVzdEZpbGVzWycgKyBp
bmRleCArICddOiAnICsgZmlsZS5wYXRoOwotICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKGVu
dHJ5KSB7IHNldHVwRmlsZXMocm9vdCwgaW5kZXggKyAxLCBzdWNjZXNzQ2FsbGJhY2spOyB9Owot
ICAgIGlmIChmaWxlLmRpcmVjdG9yeSkgewotICAgICAgICByb290LmdldERpcmVjdG9yeShkZXN0
RGlyZWN0b3J5UGF0aCArICcvJyArIGZpbGUucGF0aCwge2NyZWF0ZTp0cnVlfSwgY2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2sobXNnKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByb290
LmdldEZpbGUoZmlsZS5wYXRoLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAg
ICAgICBlbnRyeS5jcmVhdGVXcml0ZXIoZnVuY3Rpb24gKHdyaXRlcikgewotICAgICAgICAgICAg
d3JpdGVyLnRydW5jYXRlKGZpbGUuc2l6ZSk7Ci0gICAgICAgICAgICB3cml0ZXIub25lcnJvciA9
IGVycm9yQ2FsbGJhY2soJ3RydW5jYXRlICcgKyBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAgICAg
ICB3cml0ZXIub253cml0ZWVuZCA9IGNhbGxiYWNrOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNr
KCdjcmVhdGUgd3JpdGVyIGZvciAnICsgZW50cnkuZnVsbFBhdGgpKTsKLSAgICB9LCBlcnJvckNh
bGxiYWNrKG1zZykpOwotfQotCi1mdW5jdGlvbiBzdGFydFRlc3QoZSkgewotICAgIGUuc3RvcFBy
b3BhZ2F0aW9uKGUpOwotICAgIGUucHJldmVudERlZmF1bHQoKTsKLQotICAgIGxvZygnVmVyaWZ5
aW5nIGNvbnRlbnRzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLi4uJyk7Ci0gICAgdmFyIGl0ZW1zID0g
ZS5kYXRhVHJhbnNmZXIuaXRlbXM7Ci0gICAgdGVzdCgxLCBpdGVtcy5sZW5ndGgpOwotICAgIHRl
c3QoJ2ZpbGUnLCBpdGVtc1swXS5raW5kKTsKLQotICAgIHZhciBlbnRyeSA9IGl0ZW1zWzBdLndl
YmtpdEdldEFzRW50cnkoKTsKLSAgICB0ZXN0KHRydWUsIGVudHJ5LmlzRGlyZWN0b3J5KTsKLSAg
ICBzb3VyY2VUZXN0RGlyZWN0b3J5ID0gZW50cnk7Ci0gICAgc2V0dXBEZXN0RmlsZVN5c3RlbShm
dW5jdGlvbigpIHsKLSAgICAgICAgbG9nKCdTdWNjZXNzZnVsbHkgc2V0dXAgdGVzdCBlbnZpcm9u
bWVudC4nKTsKLSAgICAgICAgcnVuVGVzdHMoMCwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBs
b2coJ1N1Y2Nlc3NmdWxseSByYW4gJyArIHRlc3RzLmxlbmd0aCArICcgdGVzdHMuJyk7Ci0gICAg
ICAgICAgICBjbGVhbnVwRGlyZWN0b3J5KGRlc3RUZXN0RGlyZWN0b3J5LCBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBsb2coJ0NsZWFudXAgZG9uZS4nKTsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12
YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVzdGluYXRpb24nKTsK
LWRlc3RpbmF0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgZnVuY3Rpb24oZSkgewot
ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotfSwgZmFs
c2UpOwotZGVzdGluYXRpb24uYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIHN0YXJ0VGVzdCwgZmFs
c2UpOwotCi1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQotICAgIGV2ZW50U2VuZGVy
LmJlZ2luRHJhZ1dpdGhGaWxlcyhbc291cmNlRGlyZWN0b3J5UGF0aF0pOwotICAgIGV2ZW50U2Vu
ZGVyLmxlYXBGb3J3YXJkKDEwMCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZGVzdGlu
YXRpb24ub2Zmc2V0TGVmdCArIDEwLCBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRIZWlnaHQgLyAyKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9kaXJlY3RvcnktZW50cnktdG8tdXJpLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Rp
cmVjdG9yeS1lbnRyeS10by11cmktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEw
ICswLDAgQEAKLU9idGFpbmluZyBVUkwgZnJvbSBEaXJlY3RvcnlFbnRyeS4KLQotT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGVzdERpcmVjdG9yeVVSTCBpcyAnZmlsZXN5c3Rl
bTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RGlyZWN0b3J5JwotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9kaXJlY3RvcnktZW50cnktdG8tdXJpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRyeS10by11cmkuaHRtbAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2RpcmVjdG9yeS1lbnRy
eS10by11cmkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGlyZWN0b3J5LWVudHJ5LXRv
LXVyaS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRz
LW1pc3NpbmctYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2VudHJ5LXBvaW50cy1taXNzaW5nLWFyZ3VtZW50cy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotRW5zdXJlcyB0aGF0
IHdlIGdldCBleGNlcHRpb25zIHdoZW4gd2UgZG8gbm90IGluY2x1ZGUgcmVxdWlyZWQgYXJndW1l
bnRzIGZvciB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSBhbmQgd2Via2l0UmVzb2x2ZUxvY2FsRmls
ZVN5c3RlbVVSTCBtZXRob2RzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFT
UyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVT
eXN0ZW1VUkwoIiIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bShURU1QT1JBUlkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9lbnRyeS1wb2ludHMtbWlzc2luZy1hcmd1bWVudHMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZW50cnktcG9pbnRzLW1pc3Npbmct
YXJndW1lbnRzLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9lbnRyeS1wb2ludHMtbWlzc2luZy1hcmd1bWVudHMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9u
KCdFbnN1cmVzIHRoYXQgd2UgZ2V0IGV4Y2VwdGlvbnMgd2hlbiB3ZSBkbyBub3QgaW5jbHVkZSBy
ZXF1aXJlZCBhcmd1bWVudHMgZm9yIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtIGFuZCB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMIG1ldGhvZHMuJyk7Ci0KLWlmICh3aW5kb3cud2Via2l0
UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCkgewotICAgIHZhciBub3RFbm91Z2hBcmd1bWVudHMg
PSAnIlR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMiJzsKLSAgICBzaG91bGRUaHJvdygn
d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgpJywgbm90RW5vdWdoQXJndW1lbnRzKTsK
LSAgICBzaG91bGRUaHJvdygnd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiIiknLCBu
b3RFbm91Z2hBcmd1bWVudHMpOwotICAgIHNob3VsZFRocm93KCd3ZWJraXRSZXF1ZXN0RmlsZVN5
c3RlbSgpJywgbm90RW5vdWdoQXJndW1lbnRzKTsKLSAgICBzaG91bGRUaHJvdygnd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZKScsIG5vdEVub3VnaEFyZ3VtZW50cyk7Ci0gICAgc2hv
dWxkVGhyb3coJ3dlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMSknLCBub3RFbm91
Z2hBcmd1bWVudHMpOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyB3aW5k
b3cud2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTC4iKTsKLTwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtYWZ0ZXItcmVsb2FkLWNyYXNoLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1h
ZnRlci1yZWxvYWQtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1hZnRlci1yZWxvYWQtY3Jhc2gtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLVBBU1MKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLWFmdGVyLXJlbG9hZC1jcmFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWFmdGVyLXJlbG9hZC1jcmFzaC5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmls
ZS1hZnRlci1yZWxvYWQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBA
Ci08IURPQ1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTwhLS0gYmFzZWQgb24g
Y3JidWcuY29tLzk0ODk1I2MyMAotICAgICBodHRwOi8vY3JidWcuY29tLzk0ODk1Ci0gICAgIGh0
dHA6Ly93ZWJraXQub3JnL2IvNzY0NjEgLS0+Ci08c2NyaXB0PgotaWYgKGxvY2F0aW9uLnNlYXJj
aCAhPSAnP3JlZW50ZXInKSB7Ci0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICB9
Ci0KLSAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDI0KjEwMjQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdEZTLCBvbkVycm9yLmJpbmQobnVsbCwgJ3JlcXVlc3RG
aWxlU3lzdGVtJykpOwotfSBlbHNlIHsKLSAgZG9jdW1lbnQud3JpdGUoJ1BBU1MnKTsKLQotICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci0K
LWZ1bmN0aW9uIG9uRXJyb3IobXNnLCBlKSB7Ci0gIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0g
J0ZBSUw6ICcgKyBlLmNvZGUgKyAnIG1zZyA9ICcgKyBtc2c7Ci0gIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotZnVuY3Rpb24gZ290RlMo
ZnMpIHsKLSAgZnMucm9vdC5nZXRGaWxlKCdob2dlJywge2NyZWF0ZTogdHJ1ZX0sCi0gICAgICAg
ICAgICAgICAgICBnb3RFbnRyeSwgb25FcnJvci5iaW5kKG51bGwsICdnZXRGaWxlJykpOwotfQot
Ci1mdW5jdGlvbiBnb3RFbnRyeShlbnRyeSkgewotICAvLyBJdCBzaG91bGQgbm90IGNhdXNlIGEg
Y3Jhc2ggdGhhdCBjYWxsaW5nIEZpbGVFbnRyeS5maWxlKCkgd2hpbGUgdGhlIHBhZ2UgaXMgdW5s
b2FkaW5nLgotICBsb2NhdGlvbi5zZWFyY2ggPSAnP3JlZW50ZXInOwotICBlbnRyeS5maWxlKGdv
dEZpbGUsIG9uRXJyb3IuYmluZChudWxsLCAnZmlsZScpKTsKLX0KLQotZnVuY3Rpb24gZ290Rmls
ZShmaWxlKSB7Ci0gIC8vIElnbm9yZSB0aGUgcmVzdWx0IG9mIEZpbGVFbnRyeS5maWxlKCkuCi19
Ci08L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLWVudHJ5
LXRvLXVyaS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZpbGUtZW50cnktdG8tdXJpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZW50cnktdG8tdXJpLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1PYnRhaW5pbmcgVVJMIGZyb20g
RmlsZUVudHJ5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB0ZXN0Rmls
ZVVSTCBpcyAnZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RmlsZUVudHJ5LnR4dCcK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1lbnRyeS10by11cmkuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1lbnRyeS10by11cmku
aHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtZW50cnktdG8tdXJpLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtZW50cnkt
dG8tdXJpLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMiArMCwwIEBACi1PYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeS4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGVzdEZpbGUubmFtZSBpcyB0ZXN0RmlsZUVu
dHJ5Lm5hbWUKLVBBU1MgdGVzdEZpbGUudHlwZSBpcyAndGV4dC9wbGFpbicKLVBBU1MgdGVzdEZp
bGUuc2l6ZSBpcyAwCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtZnJvbS1maWxl
LWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9
InJlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1h
ZnRlci13cml0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGUtbWV0YWRhdGEtYWZ0ZXItd3JpdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1h
ZnRlci13cml0ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAot
VGhpcyB2ZXJpZmllcyBGaWxlLnNpemUgKGZvciBhIGZpbGUgZnJvbSBGaWxlU3lzdGVtIEFQSSkg
YWx3YXlzIHJldHVybnMgdGhlIGZyZXNoIHNpemUgZXZlbiBhZnRlciB0aGUgZmlsZSBpcyBtb2Rp
ZmllZC4KLVdyaXRpbmcgMTIzNDU2Nzg5MCB0byB0aGUgZmlsZS4uLgotQ3JlYXRlZCBhIHdyaXRl
ci4KLVdyaXRlIHN1Y2NlZWRlZC4KLVBBU1MgdGVzdEZpbGUuc2l6ZSBpcyB0ZXN0VGV4dDEubGVu
Z3RoCi1Xcml0aW5nIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IHRvIHRoZSBmaWxlLi4uCi1D
cmVhdGVkIGEgd3JpdGVyLgotV3JpdGUgc3VjY2VlZGVkLgotUEFTUyB0ZXN0RmlsZS5zaXplIGlz
IHRlc3RUZXh0Mi5sZW5ndGgKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtbWV0YWRhdGEtYWZ0ZXItd3JpdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRlci13cml0ZS5odG1sCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS1tZXRhZGF0YS1hZnRl
ci13cml0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2PlRoaXMgdmVyaWZpZXMg
RmlsZS5zaXplIChmb3IgYSBmaWxlIGZyb20gRmlsZVN5c3RlbSBBUEkpIGFsd2F5cyByZXR1cm5z
IHRoZSBmcmVzaCBzaXplIGV2ZW4gYWZ0ZXIgdGhlIGZpbGUgaXMgbW9kaWZpZWQuPC9kaXY+Ci08
ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KLTxzY3JpcHQ+Ci0KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotfQotCi12YXIgZmlsZUVudHJ5Rm9yQ2xlYW51cDsKLXZhciB0ZXN0RmlsZTsK
LXZhciB0ZXN0VGV4dDEgPSAnMTIzNDU2Nzg5MCc7Ci12YXIgdGVzdFRleHQyID0gJ2FiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6JzsKLQotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oCi0gICAgd2lu
ZG93LlRFTVBPUkFSWSwgMTAwLCBmdW5jdGlvbihmcykgewotICAgICAgICBmcy5yb290LmdldEZp
bGUoJ3Rlc3QnLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAg
ZmlsZUVudHJ5Rm9yQ2xlYW51cCA9IGVudHJ5OwotICAgICAgICAgICAgd3JpdGVUZXh0VG9GaWxl
KGVudHJ5LCB0ZXN0VGV4dDEsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGxvZygnV3Jp
dGUgc3VjY2VlZGVkLicpOwotICAgICAgICAgICAgICAgIGVudHJ5LmZpbGUob25Xcml0dGVuRmls
ZS5iaW5kKHRoaXMsIGVudHJ5KSwgb25FcnJvcik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fSwgb25FcnJvcik7Ci0gICAgfSwgb25FcnJvcik7Ci0KLWZ1bmN0aW9uIG9uV3JpdHRlbkZpbGUo
ZW50cnksIGZpbGUpIHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2hvdWxkQmUoJ3Rlc3RG
aWxlLnNpemUnLCAndGVzdFRleHQxLmxlbmd0aCcpOwotICAgIC8vIFdyaXRlIGludG8gdGhpcyBm
aWxlIGFnYWluLgotICAgIHdyaXRlVGV4dFRvRmlsZShlbnRyeSwgdGVzdFRleHQyLCBmdW5jdGlv
bigpIHsKLSAgICAgICAgbG9nKCdXcml0ZSBzdWNjZWVkZWQuJyk7Ci0gICAgICAgIGVudHJ5LmZp
bGUoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlsZSBzaXplIHNob3VsZCBiZSB1
cGRhdGVkLgotICAgICAgICAgICAgc2hvdWxkQmUoJ3Rlc3RGaWxlLnNpemUnLCAndGVzdFRleHQy
Lmxlbmd0aCcpOwotICAgICAgICAgICAgY2xlYW51cCgpOwotICAgICAgICB9LCBvbkVycm9yKTsK
LSAgICB9KTsKLX0KLQotZnVuY3Rpb24gd3JpdGVUZXh0VG9GaWxlKGVudHJ5LCBjb250ZW50cywg
c3VjY2Vzc0NhbGxiYWNrKQotewotICAgIGxvZygnV3JpdGluZyAnICsgY29udGVudHMgKyAnIHRv
IHRoZSBmaWxlLi4uJyk7Ci0gICAgZW50cnkuY3JlYXRlV3JpdGVyKGZ1bmN0aW9uKHdyaXRlcikg
ewotICAgICAgICBsb2coJ0NyZWF0ZWQgYSB3cml0ZXIuJyk7Ci0gICAgICAgIHdyaXRlci53cml0
ZShuZXcgQmxvYihbY29udGVudHNdLCB7dHlwZToncGxhaW4vdGV4dCd9KSk7Ci0gICAgICAgIHdy
aXRlci5vbndyaXRlZW5kID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB3cml0ZXIub25lcnJv
ciA9IG9uRXJyb3I7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyh0ZXh0KQotewotICAgIHZh
ciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKLSAgICBjb25z
b2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKLSAgICBjb25z
b2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwotfQotCi1mdW5j
dGlvbiBvbkVycm9yKGUpCi17Ci0gICAgbG9nKCdFUlJPUjogJyArIGUuY29kZSk7Ci0gICAgY29u
c29sZS5sb2coZSk7Ci0gICAgY2xlYW51cCgpOwotfQotCi1mdW5jdGlvbiBjbGVhbnVwKCkKLXsK
LSAgICBpZiAoZmlsZUVudHJ5Rm9yQ2xlYW51cCkgewotICAgICAgICBmaWxlRW50cnlGb3JDbGVh
bnVwLnJlbW92ZShlbmRUZXN0LCBlbmRUZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBlbmRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVuZFRlc3QoKQotewotICAgIGlmICh0ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13
cml0ZXItYWJvcnQtY29udGludWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxl
LXdyaXRlci1hYm9ydC1jb250aW51ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDEgKzAsMCBAQAotVGVzdCB0aGF0IEZpbGVXcml0ZXIgY2FuIGNvbnRpbnVlIGltbWVkaWF0ZWx5
IGFmdGVyIGFuIGFib3J0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVBBU1MgMTEw
MDAwMCBpcyBibG9iU2l6ZQotc3RhcnRpbmcgdGVzdAotUEFTUyBDYWxsaW5nIHdyaXRlLgotUEFT
UyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyB3cml0ZXIubGVuZ3RoIGlzIDAK
LVBBU1MgU2F3IHdyaXRlZW5kIDAuCi1QQVNTIENhbGxpbmcgd3JpdGUuCi1QQVNTIHdyaXRlci5s
ZW5ndGggaXMgMTEwMDAwMAotUEFTUyBTYXcgd3JpdGVlbmQgMS4KLVBBU1MgQ2FsbGluZyB0cnVu
Y2F0ZS4KLVBBU1Mgd3JpdGVyLmxlbmd0aCBpcyAwCi1QQVNTIFNhdyB3cml0ZWVuZCAyLgotUEFT
UyBDYWxsaW5nIHdyaXRlLgotUEFTUyBDYWxsaW5nIGFib3J0IGF0IHRoZSBlbmQgb2YgdGhlIHdy
aXRlCi1QQVNTIFNhdyBhYm9ydAotUEFTUyB3cml0ZXIubGVuZ3RoIGlzIDExMDAwMDAKLVBBU1Mg
U2F3IHdyaXRlZW5kIDMuCi1QQVNTIENhbGxpbmcgd3JpdGUuCi1QQVNTIHdyaXRlci5sZW5ndGgg
aXMgMjIwMDAwMAotUEFTUyBTYXcgd3JpdGVlbmQgNC4KLVBBU1MgQ2FsbGluZyB0cnVuY2F0ZS4K
LVBBU1Mgd3JpdGVyLmxlbmd0aCBpcyAwCi1QQVNTIFNhdyB3cml0ZWVuZCA1LgotUEFTUyBDYWxs
aW5nIHdyaXRlLgotUEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyB3cml0
ZXIubGVuZ3RoIGlzIDAKLVBBU1MgU2F3IHdyaXRlZW5kIDYuCi1QQVNTIENhbGxpbmcgdHJ1bmNh
dGUuCi1QQVNTIHdyaXRlci5sZW5ndGggaXMgNwotUEFTUyBTYXcgd3JpdGVlbmQgNy4KLVBBU1Mg
QWxsIHRlc3RzIGNvbXBsZXRlLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdy
aXRlci1hYm9ydC1jb250aW51ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5odG1sCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtY29u
dGludWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMCwwIEBACi08IURPQ1RZUEUgSFRN
TD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBBYm9ydCBhbmQgQ29u
dGludWU8L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXIt
dXRpbHMuanMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgotIDwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2ZpbGUtd3JpdGVyLWFib3J0LWRlcHRoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQtZGVwdGgtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS13cml0ZXItYWJvcnQtZGVwdGgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDI5ICswLDAgQEAKLVRlc3QgdGhhdCBGaWxlV3JpdGVyIGRlZmVuZHMgYWdhaW5zdCBpbmZpbml0
ZSByZWN1cnNpb24gdmlhIGFib3J0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0
YXJ0aW5nIHRlc3QKLVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBBU1MgQ2FsbGluZyBhYm9ydAotUEFT
UyBTYXcgYWJvcnQKLVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBBU1MgQ2FsbGluZyBhYm9ydAotUEFT
UyBTYXcgYWJvcnQKLVBBU1MgQ2FsbGluZyB3cml0ZS4KLVBBU1MgU2F3IHNlY3VyaXR5IGVycm9y
Ci1QQVNTIFNhdyB3cml0ZWVuZC4KLVBBU1MgU2F3IHdyaXRlZW5kLgotUEFTUyBDYWxsaW5nIHRy
dW5jYXRlLgotUEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyBDYWxsaW5n
IHRydW5jYXRlLgotUEFTUyBDYWxsaW5nIGFib3J0Ci1QQVNTIFNhdyBhYm9ydAotUEFTUyBDYWxs
aW5nIHRydW5jYXRlLgotUEFTUyBTYXcgc2VjdXJpdHkgZXJyb3IKLVBBU1MgU2F3IHdyaXRlZW5k
LgotUEFTUyBTYXcgd3JpdGVlbmQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUt
d3JpdGVyLWFib3J0LWRlcHRoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWRlcHRoLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0
bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEFib3J0IERlcHRoPC90aXRsZT4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3Nj
cmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZmlsZS13cml0ZXItYWJvcnQtZGVwdGguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08
L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1h
Ym9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2ZpbGUtd3JpdGVyLWFib3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWFib3J0LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UZXN0IHRoYXQgRmlsZVdyaXRlciBo
YW5kbGVzIGFib3J0IHByb3Blcmx5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0
YXJ0aW5nIHRlc3QKLVBBU1MgQ2FsbGluZyBhYm9ydAotUEFTUyBTYXcgYWJvcnQKLVBBU1MgU2F3
IHdyaXRlZW5kLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci1hYm9y
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdy
aXRlci1hYm9ydC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vZmlsZS13cml0ZXItYWJvcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSAr
MCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxl
IFdyaXRlciBBYm9ydDwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxl
LXdyaXRlci11dGlscy5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWFib3J0LmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZmlsZS13cml0ZXItZW1wdHktYmxvYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmls
ZS13cml0ZXItZW1wdHktYmxvYi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzAsMCBAQAotVGVzdCB0aGF0IEZpbGVXcml0ZXIgd29ya3Mgd2l0aG91dCBjcmFzaCB3aGVuIHRy
eWluZyB0byB3cml0ZSBhbiBlbXB0eSBibG9iLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZW1wdHktYmxv
Yi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS13cml0ZXItZW1wdHktYmxvYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICswLDAg
QEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5GaWxlIFdyaXRlciB3
aXRoIGVtcHR5IEJsb2I8L3RpdGxlPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LXV0aWxzLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS13cml0ZXItZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJv
ZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2ZW50cy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi1zdGFydGluZyB0ZXN0Ci1QQVNTIFNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4KLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZXZlbnRzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWV2ZW50cy5odG1s
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13
cml0ZXItZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotPCFET0NU
WVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgRXZlbnRz
PC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxz
LmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZmlsZS13cml0ZXItZXZlbnRzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5
PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0
ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWdjLWJsb2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdCB0aGF0IGEg
YmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQg
YnkgYSBGaWxlV3JpdGVyLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5n
IHRlc3QKLVBBU1MgU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxvYi5odG1sCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItZ2MtYmxv
Yi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgot
PGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEdDIEJsb2I8L3RpdGxlPgot
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2Ny
aXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9maWxlLXdyaXRlci1nYy1ibG9iLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRl
LWV4dGVuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVu
Y2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAK
LVRlc3Qgb2YgZXh0ZW5kaW5nIGEgZmlsZSB1c2luZyB0cnVuY2F0ZSgpLgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgVHJ1bmNhdGUgZXh0ZW5zaW9u
IHZlcmlmaWVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVu
Y2F0ZS1leHRlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxo
dG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQ8
L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMu
anMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LSA8L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVRlc3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdy
aXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxlLgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLXN0YXJ0aW5nIHRlc3QKLVBBU1MgTmVnYXRpdmUgc2VlayB2YWxpZGF0
ZWQuCi1QQVNTIFBvc2l0aXZlIHNlZWsgdmFsaWRhdGVkLgotUEFTUyBOb25leHRlbmRpbmcgd3Jp
dGUgdmFsaWRhdGVkLgotUEFTUyBBbGwgd3JpdGVzIHZlcmlmaWVkLgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJs
YXBwZWQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRs
ZT5GaWxlIFdyaXRlciBXcml0ZSBPdmVybGFwcGVkPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0g
PGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItd3Jp
dGUtb3ZlcmxhcHBlZC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotIDwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLW1pc3NpbmctYXJndW1lbnRz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZXN5c3RlbS1taXNzaW5nLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLW1pc3NpbmctYXJn
dW1lbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UZXN0
IGhvdyBmaWxlIHN5c3RlbSBtZXRob2RzIHJlYWN0IHRvIHRvbyBmZXcgYXJndW1lbnRzLgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFT
UyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlkpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtVVJMKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbWlzc2luZy1hcmd1
bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmls
ZXN5c3RlbS1taXNzaW5nLWFyZ3VtZW50cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1taXNzaW5nLWFyZ3VtZW50cy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oJ1Rlc3QgaG93
IGZpbGUgc3lzdGVtIG1ldGhvZHMgcmVhY3QgdG8gdG9vIGZldyBhcmd1bWVudHMuJyk7Ci1zaG91
bGRUaHJvdygid2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oKSIpOwotc2hvdWxkVGhyb3coIndlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSkiKTsKLXNob3VsZFRocm93KCJ3ZWJraXRSZXNv
bHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkiKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2st
bnVsbC1wdHItY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLW5vLWNhbGxiYWNrLW51bGwtcHRyLWNyYXNoLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLVBBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlc3lzdGVtLW5vLWNhbGxiYWNrLW51bGwtcHRyLWNyYXNoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJh
Y2stbnVsbC1wdHItY3Jhc2guaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tbm8tY2FsbGJhY2stbnVsbC1wdHItY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMCwwIEBACi08IS0tCi0gIGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYzMjA0Ci0gIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTUzOQotLS0+Ci08ZGl2IGlkPSJsb2ciPkZB
SUw8L2Rpdj4KLTxzY3JpcHQ+Ci0gIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICBpZiAod2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KSB7Ci0gICAgICAvLyBUaGVzZSB0d28gY2FsbHMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBi
dXQgc2hvdWxkIE5PVCBjYXVzZSBhIE5VTEwgcG9pbnRlciBjcmFzaDoKLSAgICAgIHdlYmtpdFJl
c29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoJycsIGZ1bmN0aW9uKCkge30pOwotICAgICAgdHJ5IHsK
LSAgICAgICAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCk7Ci0gICAg
ICB9Ci0gICAgICBjYXRjaChlKSB7Ci0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xvZycpLmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICAgIH0KLSAgfQotPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS1yZWZlcmVuY2UtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lz
dGVtLXJlZmVyZW5jZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVyZW5jZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotVGhpcyB0ZXN0cyBpZiBFbnRyaWVzIHJldHVy
bmVkIGJ5IGNhbGxiYWNrcyBrZWVwIGZ1bmN0aW9uaW5nIGV2ZW4gYWZ0ZXIgd2UgbG9zZSBhIHJl
ZmVyZW5jZSB0byB0aGUgZmlsZXN5c3RlbSBpbiB0aGUgc2NyaXB0LgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotUnVubmluZyBydW5UZXN0MSgpLi4uCi1SdW5uaW5nIHJ1blRlc3Qy
KCkuLi4KLVJ1bm5pbmcgcnVuVGVzdDMoKS4uLgotUnVubmluZyBydW5UZXN0NCgpLi4uCi1QQVNT
IHRlc3RFbnRyaWVzLmxlbmd0aCBpcyA0Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGVzeXN0ZW0tcmVmZXJlbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXJlZmVyZW5jZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEwICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXJlZmVyZW5jZS5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdW5zZXJpYWxpemFibGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTAgKzAsMCBAQAotVGhpcyB0ZXN0cyBpZiB0aGUgZmlsZXN5c3RlbSBvYmplY3QgaXMgdW5z
ZXJpYWxpemFibGUgYnkgZGVmYXVsdAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQot
RGF0YUNsb25lRXJyb3I6IERPTSBFeGNlcHRpb24gMjUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmh0bWwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVt
LXVuc2VyaWFsaXphYmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ZpbGVzeXN0
ZW0tdW5zZXJpYWxpemFibGUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0
ZW0tdXJpLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXVyaS1vcmlnaW4tZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLVBBU1NFRDogb3JpZ2luIHdhcyBodHRwOi8vd3d3
LndlYmtpdC5vcmc6ODA4MApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVz
eXN0ZW0tdXJpLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlc3lzdGVtLXVyaS1vcmlnaW4uaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdXJpLW9yaWdpbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLTxhIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGhy
ZWY9ImZpbGVzeXN0ZW06aHR0cDovL3d3dy53ZWJraXQub3JnOjgwODAvdGVtcG9yYXJ5L2EvYi9j
L2ZpbGUudHh0Ij5mb288L2E+Ci08cD5UaGlzIHRleHQgc2hvdWxkIG5vdCBiZSB2aXNpYmxlLiBJ
dCBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIHJ1bm5pbmcgb2YgdGhlIHRlc3QuPC9wPgot
PHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwotICAgIHZhciBleHBlY3RlZE9yaWdpbiA9ICdodHRwOi8vd3d3LndlYmtp
dC5vcmc6ODA4MCc7Ci0gICAgdmFyIGFjdHVhbE9yaWdpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdhJylbMF0ub3JpZ2luOwotICAgIHZhciByZXN1bHRFbHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpWzBdOwotICAgIGlmIChhY3R1YWxPcmlnaW4gPT0gZXhw
ZWN0ZWRPcmlnaW4pCi0gICAgICAgIHJlc3VsdEVsdC5pbm5lclRleHQgPSAnUEFTU0VEOiBvcmln
aW4gd2FzICcgKyBleHBlY3RlZE9yaWdpbjsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdEVsdC5p
bm5lclRleHQgPSAnRkFJTEVEOiBleHBlY3RlZCBvcmlnaW46ICcgKyBleHBlY3RlZE9yaWdpbiAr
ICcgYnV0IGdvdDogJyArIGFjdHVhbE9yaWdpbjsKLTwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9mbGFncy1wYXNzaW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdz
LXBhc3NpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAKLVBh
c3NpbmcgRmxhZ3MgcGFyYW1ldGVyIHRlc3RzLiBUaGlzIHRlc3QgY2hlY2tzIGlmIHBhc3Npbmcg
RmxhZ3MgcGFyYW1ldGVycyB0byBEaXJlY3RvcnlFbnRyeS5nZXRGaWxlIGRvZXMgbm90IGNyYXNo
IGFuZCB3b3JrcyBhcyBleHBlY3RlZC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0K
LSogUGFzc2luZyBKU09OIEZsYWdzIG9iamVjdC4KLSogUGFzc2luZyBKU09OIEZsYWdzIG9iamVj
dCAod2l0aCBleGNsdXNpdmU9dHJ1ZSkuCi0qIFBhc3NpbmcgbnVsbCBhcyBhIGZsYWdzIHBhcmFt
ZXRlci4KLSogUGFzc2luZyBhIG51bWJlciBhcyBhIGZsYWdzIHBhcmFtZXRlci4KLUNhdWdodCBl
eGNlcHRpb246IFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4KLUZpbmlzaGVkIHJ1bm5pbmcgdGVz
dHMuCi1QQVNTIGV4cGVjdGVkQ2FsbGJhY2tzQ291bnQgaXMgMQotUEFTUyB1bmV4cGVjdGVkQ2Fs
bGJhY2tzQ291bnQgaXMgMAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9mbGFncy1wYXNz
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdz
LXBhc3NpbmcuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZsYWdzLXBhc3NpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBA
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZmxh
Z3MtcGFzc2luZy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vaW5wdXQtYWNjZXNzLWVudHJpZXMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9pbnB1dC1hY2Nlc3MtZW50
cmllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9pbnB1dC1hY2Nlc3MtZW50cmllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdHMgYWNjZXNzaW5nIHdlYmtpdEVudHJpZXMgZG9lcyBu
b3QgY3Jhc2ggd2hlbiBpbnB1dCB0eXBlIGlzIG5vdCBmaWxlCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1QQVNTIGlucHV0LndlYmtpdEVudHJpZXMubGVuZ3RoIGlzIDAKLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vaW5wdXQtYWNjZXNzLWVudHJpZXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vaW5wdXQtYWNjZXNzLWVudHJpZXMu
aHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2lu
cHV0LWFjY2Vzcy1lbnRyaWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxib2R5PgotPGlucHV0IG5hbWU9ImlucHV0IiBpZD0i
aW5wdXQiPjwvaW5wdXQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbignVGVzdHMgYWNjZXNzaW5nIHdl
YmtpdEVudHJpZXMgZG9lcyBub3QgY3Jhc2ggd2hlbiBpbnB1dCB0eXBlIGlzIG5vdCBmaWxlJyk7
Ci0KLXZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dCcpOwotc2hvdWxk
RXZhbHVhdGVUbygnaW5wdXQud2Via2l0RW50cmllcy5sZW5ndGgnLCAwKTsKLQotPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vbm90
LWVub3VnaC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFy
Z3VtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQgKzAsMCBAQAotVGhp
cyB0ZXN0IHRyaWVzIGNhbGxpbmcgdmFyaW91cyBmaWxlc3lzdGVtIGZ1bmN0aW9ucyB3aXRoIHRv
byBmZXcgYXJndW1lbnRzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHdl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBFUlNJU1RFTlQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShQ
RVJTSVNURU5ULCAxMDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzLgotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3RlbTpmaWxl
X18wOlRlbXBvcmFyeQotUEFTUyBmaWxlU3lzdGVtLnJvb3QucmVtb3ZlUmVjdXJzaXZlbHkoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgZmls
ZVN5c3RlbS5yb290Lm1vdmVUbygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzLgotUEFTUyBmaWxlU3lzdGVtLnJvb3QuY29weVRvKCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHJlYWRlci5yZWFkRW50
cmllcygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgot
UEFTUyBlbnRyaWVzLml0ZW0oKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KLVBBU1MgZW50cnkuY3JlYXRlV3JpdGVyKCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIGVudHJ5LmZpbGUoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mgd3JpdGVyLndy
aXRlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1Q
QVNTIHdyaXRlci5zZWVrKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMuCi1QQVNTIHdyaXRlci50cnVuY2F0ZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9u
b3QtZW5vdWdoLWFyZ3VtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVub3VnaC1hcmd1bWVudHMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw2MSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbignVGhpcyB0ZXN0IHRyaWVzIGNhbGxpbmcgdmFyaW91cyBm
aWxlc3lzdGVtIGZ1bmN0aW9ucyB3aXRoIHRvbyBmZXcgYXJndW1lbnRzLicpOwotCi1mdW5jdGlv
biBlcnJvckNhbGxiYWNrKGVycm9yKQotewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkOiIgKyBl
cnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gc3VjY2Vzc0Nh
bGxiYWNrKGZzKQotewotICAgIGZpbGVTeXN0ZW0gPSBmczsKLSAgICBkZWJ1ZygiU3VjY2Vzc2Z1
bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsK
LQotICAgIHNob3VsZFRocm93KCJmaWxlU3lzdGVtLnJvb3QucmVtb3ZlUmVjdXJzaXZlbHkoKSIp
OwotICAgIHNob3VsZFRocm93KCJmaWxlU3lzdGVtLnJvb3QubW92ZVRvKCkiKTsKLSAgICBzaG91
bGRUaHJvdygiZmlsZVN5c3RlbS5yb290LmNvcHlUbygpIik7Ci0gICAgcmVhZGVyID0gZmlsZVN5
c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHNob3VsZFRocm93KCJyZWFkZXIucmVhZEVu
dHJpZXMoKSIpOwotCi0gICAgcmVhZGVyLnJlYWRFbnRyaWVzKGZ1bmN0aW9uKGVudHJpZXMpIHsK
LSAgICAgICAgd2luZG93LmVudHJpZXMgPSBlbnRyaWVzOwotICAgICAgICBzaG91bGRUaHJvdygi
ZW50cmllcy5pdGVtKCkiKTsKLQotICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgiL3Rl
c3QiLCB7IGNyZWF0ZTogdHJ1ZSB9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgd2lu
ZG93LmVudHJ5ID0gZW50cnk7Ci0gICAgICAgICAgICBzaG91bGRUaHJvdygiZW50cnkuY3JlYXRl
V3JpdGVyKCkiKTsKLSAgICAgICAgICAgIHNob3VsZFRocm93KCJlbnRyeS5maWxlKCkiKTsKLQot
ICAgICAgICAgICAgZW50cnkuY3JlYXRlV3JpdGVyKGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAg
ICAgICAgICAgIHdpbmRvdy53cml0ZXIgPSB3cml0ZXI7Ci0KLSAgICAgICAgICAgICAgICBzaG91
bGRUaHJvdygid3JpdGVyLndyaXRlKCkiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygi
d3JpdGVyLnNlZWsoKSIpOwotICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJ3cml0ZXIudHJ1
bmNhdGUoKSIpOwotCi0gICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVz
dEZpbGVTeXN0ZW0pIHsKLSAgICBzaG91bGRUaHJvdygid2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5
c3RlbVVSTCgpIik7Ci0gICAgc2hvdWxkVGhyb3coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKCki
KTsKLSAgICBzaG91bGRUaHJvdygid2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCki
KTsKLSAgICBzaG91bGRUaHJvdygid2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCwg
MTAwKSIpOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEw
MCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Ci19IGVsc2UKLSAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVT
eXN0ZW0gQVBJIHN1cHBvcnQuIik7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1jb3B5LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtY29weS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1jb3B5
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4OCArMCwwIEBACi0qIFJ1bm5pbmc6
IENvcHlGaWxlU2ltcGxlCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2IiLmNvcHlUbygiL2EiLCAiYyIp
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RP
Ull9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJ
TEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9jIG5hbWU6YyB0eXBlOkZJ
TEV9Ci0qIFJ1bm5pbmc6IENvcHlEaXJlY3RvcnlTaW1wbGUKLVBBU1MgU3VjY2VlZGVkOiAiL2Ev
YiIuY29weVRvKCIvYSIsICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9h
IG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9hL2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2EvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IENvcHlGaWxlVG9E
aWZmZXJlbnREaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIuY29weVRvKCIvYyIsICJk
IikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVD
VE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6
RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpkIHR5cGU6
RklMRX0KLSogUnVubmluZzogQ29weUZpbGVXaXRoRW1wdHlOYW1lCi1QQVNTIFN1Y2NlZWRlZDog
Ii9hL2IiLmNvcHlUbygiL2MiLCAibnVsbCIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRS
WSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRS
WSB7cGF0aDovYy9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlGaWxlV2l0aEVt
cHR5TmFtZVRvU2FtZURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIg
aXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpE
SVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0
eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlGaWxlV2l0aFNhbWVOYW1lCi1QQVNTIHRoaXMuZXhw
ZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtw
YXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogQ29weUZvck5vbkV4aXN0
ZW50RW50cnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIucmVtb3ZlKCkKLVBBU1MgdGhpcy5leHBl
Y3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3Bh
dGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2MgbmFtZTpjIHR5cGU6RElSRUNUT1JZfQotKiBSdW5uaW5nOiBDb3B5RW50cnlUb05v
bkV4aXN0ZW50RGlyZWN0b3J5Ci1QQVNTIFN1Y2NlZWRlZDogIi9jIi5yZW1vdmUoKQotUEFTUyB0
aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBF
TlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENvcHlFbnRy
eVRvSXRzQ2hpbGQKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFT
UyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVu
dHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1
bm5pbmc6IENvcHlSZWN1cnNpdmUKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiL2IiLCAi
YSIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJF
Q1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBl
OkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1l
OmMgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYi9kIG5h
bWU6ZCB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9hIG5h
bWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9i
L2EvYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYi9hL2IvYyBuYW1lOmMgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5U
Ulkge3BhdGg6L2IvYS9iL2QgbmFtZTpkIHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRp
bmdDb3B5RmlsZVRvRmlsZQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuY29weVRvKCIvIiwgImIiKQot
UEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RklMRX0KLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1
bm5pbmc6IE92ZXJ3cml0aW5nQ29weURpcmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkKLVBBU1MgU3Vj
Y2VlZGVkOiAiL2EiLmNvcHlUbygiLyIsICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9jL2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogT3ZlcndyaXRp
bmdDb3B5RmlsZVRvRGlyZWN0b3J5Ci1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBp
cyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkZJ
TEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIgdHlwZTpESVJF
Q1RPUll9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nQ29weURpcmVjdG9yeVRvRmlsZQotUEFTUyB0
aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBF
TlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIgdHlwZTpGSUxFfQotKiBSdW5uaW5nOiBPdmVyd3JpdGlu
Z0NvcHlGaWxlVG9Ob25lbXB0eURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2Rl
ICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEg
dHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5
cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYyBuYW1l
OmMgdHlwZTpGSUxFfQotKiBSdW5uaW5nOiBPdmVyd3JpdGluZ0NvcHlEaXJlY3RvcnlUb05vbmVt
cHR5RGlyZWN0b3J5Ci1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0K
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0K
LVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jIG5hbWU6YyB0eXBlOkRJUkVDVE9S
WX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpkIHR5cGU6RklM
RX0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L29wLWNvcHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
b3AtY29weS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vb3AtY29weS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL29wLWNvcHkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNl
cy9vcC10ZXN0cy1oZWxwZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9vcC1nZXQtZW50cnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkxICswLDAg
QEAKLSogUnVubmluZzogQ3JlYXRlU2ltcGxlCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldERpcmVj
dG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImIiKQotUEFTUyBWZXJpZmll
ZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJp
ZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzog
Q3JlYXRlTmVzdGVkCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldERpcmVjdG9yeSgiYSIpCi1QQVNT
IFN1Y2NlZWRlZDogIi9hIi5nZXREaXJlY3RvcnkoImIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9i
Ii5nZXREaXJlY3RvcnkoImMiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9iL2MiLmdldERpcmVjdG9y
eSgiZCIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2IvYy9kIi5nZXRGaWxlKCJlIikKLVBBU1MgVmVy
aWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYy9kL2UgbmFtZTplIHR5cGU6RklMRX0KLSog
UnVubmluZzogQ3JlYXRlTmVzdGVkV2l0aEFic29sdXRlUGF0aAotUEFTUyBTdWNjZWVkZWQ6ICIv
ZHVtbXkiLmdldERpcmVjdG9yeSgiL2EiKQotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldERp
cmVjdG9yeSgiL2EvYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9kdW1teSIuZ2V0RGlyZWN0b3J5KCIv
YS9iL2MiKQotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldERpcmVjdG9yeSgiL2EvYi9jL2Qi
KQotUEFTUyBTdWNjZWVkZWQ6ICIvZHVtbXkiLmdldEZpbGUoIi9hL2IvYy9kL2UiKQotUEFTUyBW
ZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2R1bW15IG5hbWU6ZHVtbXkgdHlwZTpESVJFQ1RP
Ull9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iL2MvZC9lIG5hbWU6ZSB0
eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IENyZWF0ZU5lc3RlZFdpdGhSZWxhdGl2ZVBhdGgKLVBBU1Mg
U3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9yeSgiLi9iIikKLVBBU1MgU3VjY2VlZGVkOiAiL2Ei
LmdldERpcmVjdG9yeSgiLi8uLi4iKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RGlyZWN0b3J5
KCIuLi9iIikKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9yeSgiLi4vLi4vYi9jIikK
LVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVjdG9yeSgiL2EvLi4vLi4vZCIpCi1QQVNTIFN1
Y2NlZWRlZDogIi9hIi5nZXREaXJlY3RvcnkoIi9hLy4uLy4uL2IvLi9jLy4uLy4uLy4uLy4uLy4u
L2UiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RGlyZWN0b3J5KCIuLi4vZiIpCi1QQVNTIHRo
aXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMSIKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLmdl
dEZpbGUoIi4vYi50eHQiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RmlsZSgiLi4vYi50eHQi
KQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RmlsZSgiLi4vLi4vYi9jLnR4dCIpCi1QQVNTIFN1
Y2NlZWRlZDogIi9hIi5nZXRGaWxlKCIvYS8uLi8uLi9kLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDog
Ii9hIi5nZXRGaWxlKCIvYS8uLi8uLi9iLy4vYy8uLi8uLi8uLi8uLi8uLi9lLnR4dCIpCi1QQVNT
IFN1Y2NlZWRlZDogIi9hIi5nZXRGaWxlKCIuLi4vZi50eHQiKQotUEFTUyB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
YSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZ
IHtwYXRoOi9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVO
VFJZIHtwYXRoOi9iL2MgbmFtZTpjIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRy
eTogRU5UUlkge3BhdGg6L2QgbmFtZTpkIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBl
bnRyeTogRU5UUlkge3BhdGg6L2UgbmFtZTplIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmll
ZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2YKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1Qg
ZXhpc3Q6IC9hL2YKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9nCi1QQVNT
IFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9nCi1QQVNTIFZlcmlmaWVkIGVudHJ5
OiBFTlRSWSB7cGF0aDovYS9iLnR4dCBuYW1lOmIudHh0IHR5cGU6RklMRX0KLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iLnR4dCBuYW1lOmIudHh0IHR5cGU6RklMRX0KLVBBU1Mg
VmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2MudHh0IG5hbWU6Yy50eHQgdHlwZTpGSUxF
fQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2QudHh0IG5hbWU6ZC50eHQgdHlw
ZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2UudHh0IG5hbWU6ZS50
eHQgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2YudHh0
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9mLnR4dAotUEFTUyBWZXJp
ZmllZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2cudHh0Ci1QQVNTIFZlcmlmaWVkIGVudHJ5IGRv
ZXMgTk9UIGV4aXN0OiAvYS9nLnR4dAotKiBSdW5uaW5nOiBHZXRFeGlzdGluZ0VudHJ5Ci1QQVNT
IFN1Y2NlZWRlZDogIi8iLmdldERpcmVjdG9yeSgiYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdl
dEZpbGUoImIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXREaXJlY3RvcnkoImEiKQotUEFTUyB0
aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmZ1bGxQYXRoIGlzICIvYSIKLVBB
U1MgdGhpcy5lbnZpcm9ubWVudFt0aGlzLmVudHJ5LmZ1bGxQYXRoXS5pc0ZpbGUgKyAiIiBpcyAi
ZmFsc2UiCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbdGhpcy5lbnRyeS5mdWxsUGF0aF0uaXNEaXJl
Y3RvcnkgKyAiIiBpcyAidHJ1ZSIKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYiIpCi1Q
QVNTIHRoaXMuZW52aXJvbm1lbnRbdGhpcy5lbnRyeS5mdWxsUGF0aF0uZnVsbFBhdGggaXMgIi9i
IgotUEFTUyB0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRmlsZSArICIi
IGlzICJ0cnVlIgotUEFTUyB0aGlzLmVudmlyb25tZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlz
RGlyZWN0b3J5ICsgIiIgaXMgImZhbHNlIgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3Bh
dGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzogR2V0Tm9uRXhpc3RlbnQKLVBB
U1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBp
cyAiMSIKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotKiBSdW5uaW5n
OiBHZXRGaWxlRm9yRGlyZWN0b3J5Ci1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBp
cyAiMTEiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMTEiCi1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1
bm5pbmc6IEdldERpcmVjdG9yeUZvckZpbGUKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSAr
ICIiIGlzICIxMSIKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxMSIKLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkZJTEV9Ci0qIFJ1
bm5pbmc6IENyZWF0ZVdpdGhFeGNsdXNpdmUKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSAr
ICIiIGlzICI5IgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIgdHlwZTpGSUxFfQotRmlu
aXNoZWQgcnVubmluZyB0ZXN0cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0
LWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29w
LWdldC1lbnRyeS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vb3AtZ2V0LWVudHJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBA
QAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9v
cC1nZXQtbWV0YWRhdGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyNiArMCwwIEBACi0qIFJ1bm5pbmc6IEdldE1ldGFkYXRhCi1QQVNTIFN1
Y2NlZWRlZDogIi8iLmdldE1ldGFkYXRhKCkKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RGlyZWN0
b3J5KCIvYSIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRoaXMu
ZW52aXJvbm1lbnRbIi9hLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUiXSBpcyA+PSB0aGlzLnJv
dW5kZWRTdGFydERhdGUKLVBBU1MgU3VjY2VlZGVkOiAiL2ZpbGUxIi5nZXRNZXRhZGF0YSgpCi1Q
QVNTIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0g
aXMgPj0gdGhpcy5yb3VuZGVkU3RhcnREYXRlCi1QQVNTIFN1Y2NlZWRlZDogIi9maWxlMiIuZ2V0
TWV0YWRhdGEoKQotUEFTUyB0aGlzLmVudmlyb25tZW50WyIvZmlsZTIucmV0dXJuZWQubW9kaWZp
Y2F0aW9uVGltZSJdIGlzID49IHRoaXMucm91bmRlZFN0YXJ0RGF0ZQotUEFTUyB0aGlzLmVudmly
b25tZW50WyIvZmlsZTIuc2l6ZSJdIGlzIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMi5yZXR1cm5l
ZC5zaXplIl0KLVBBU1MgU3VjY2VlZGVkOiAiL2ZpbGUzIi5nZXRNZXRhZGF0YSgpCi1QQVNTIHRo
aXMuZW52aXJvbm1lbnRbIi9maWxlMy5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0g
dGhpcy5yb3VuZGVkU3RhcnREYXRlCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9maWxlMy5zaXpl
Il0gaXMgdGhpcy5lbnZpcm9ubWVudFsiL2ZpbGUzLnJldHVybmVkLnNpemUiXQotUEFTUyBTdWNj
ZWVkZWQ6ICIvIi5nZXRGaWxlKCIvYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9iIi5nZXRNZXRhZGF0
YSgpCi1QQVNTIHRoaXMuZW52aXJvbm1lbnRbIi9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUi
XSBpcyA+PSB0aGlzLnJvdW5kZWRTdGFydERhdGUKLVBBU1MgU3VjY2VlZGVkOiAiL3RtcCIucmVt
b3ZlKCkKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyB0aGlz
LmVudmlyb25tZW50WyIvYS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0gaXMgPj0gdGhpcy5l
bnZpcm9ubWVudFsiLy5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0KLVBBU1MgdGhpcy5lbnZp
cm9ubWVudFsiL2IucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSJdIGlzID49IHRoaXMuZW52aXJv
bm1lbnRbIi8ucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSJdCi1QQVNTIHRoaXMuZW52aXJvbm1l
bnRbIi9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUiXSBpcyA+PSB0aGlzLmVudmlyb25tZW50
WyIvYS5yZXR1cm5lZC5tb2RpZmljYXRpb25UaW1lIl0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMu
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1tZXRhZGF0YS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtbWV0YWRhdGEuaHRt
bAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdl
dC1tZXRhZGF0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL29wLXRlc3RzLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0K
LQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1wYXJlbnQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQt
cGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL29wLWdldC1wYXJlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE3ICswLDAgQEAKLSogUnVubmluZzogR2V0UGFyZW50Ci1QQVNTIFN1Y2NlZWRlZDogIi8i
LmdldFBhcmVudCgpCi1QYXJlbnQgZW50cnk6IEVOVFJZIHtwYXRoOi8gbmFtZTogdHlwZTpESVJF
Q1RPUll9Ci1QQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXRQYXJlbnQoKQotUGFyZW50IGVudHJ5OiBF
TlRSWSB7cGF0aDovIG5hbWU6IHR5cGU6RElSRUNUT1JZfQotUEFTUyBTdWNjZWVkZWQ6ICIvYS9i
Ii5nZXRQYXJlbnQoKQotUGFyZW50IGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpE
SVJFQ1RPUll9Ci1QQVNTIFN1Y2NlZWRlZDogIi9hL2IvYyIuZ2V0UGFyZW50KCkKLVBhcmVudCBl
bnRyeTogRU5UUlkge3BhdGg6L2EvYiBuYW1lOmIgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBB
U1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpGSUxFfQot
RmluaXNoZWQgcnVubmluZyB0ZXN0cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3At
Z2V0LXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9vcC1nZXQtcGFyZW50Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9vcC1nZXQtcGFyZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQg
KzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0
aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtZ2V0LXBhcmVudC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXRlc3RzLWhlbHBlci5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1v
dmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9vcC1tb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL29wLW1vdmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDgzICswLDAgQEAKLSogUnVubmluZzogTW92ZUZpbGVTaW1wbGUKLVBBU1MgU3VjY2VlZGVkOiAi
L2EvYiIubW92ZVRvKCIvYSIsICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1Qg
ZXhpc3Q6IC9hL2IKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2MgbmFtZTpj
IHR5cGU6RklMRX0KLSogUnVubmluZzogTW92ZURpcmVjdG9yeVNpbXBsZQotUEFTUyBTdWNjZWVk
ZWQ6ICIvYS9iIi5tb3ZlVG8oIi9hIiwgImMiKQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeSBkb2Vz
IE5PVCBleGlzdDogL2EvYgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYyBu
YW1lOmMgdHlwZTpESVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IE1vdmVGaWxlVG9EaWZmZXJlbnREaXJl
Y3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIubW92ZVRvKCIvYyIsICJkIikKLVBBU1MgVmVy
aWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1Mg
VmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hL2IKLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9jL2QgbmFtZTpkIHR5cGU6RklMRX0KLSogUnVubmluZzogTW92ZUZpbGVX
aXRoRW1wdHlOYW1lCi1QQVNTIFN1Y2NlZWRlZDogIi9hL2IiLm1vdmVUbygiL2MiLCAibnVsbCIp
Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RP
Ull9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYS9iCi1QQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYy9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6
IE1vdmVGaWxlV2l0aEVtcHR5TmFtZVRvU2FtZURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
YSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE1vdmVGaWxlV2l0aFNhbWVOYW1l
Ci1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IgbmFtZTpiIHR5cGU6RklMRX0KLSogUnVubmluZzog
TW92ZUZvck5vbkV4aXN0ZW50RW50cnkKLVBBU1MgU3VjY2VlZGVkOiAiL2EvYiIucmVtb3ZlKCkK
LVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICIxIgotUEFTUyBWZXJpZmllZCBl
bnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmll
ZCBlbnRyeTogRU5UUlkge3BhdGg6L2MgbmFtZTpjIHR5cGU6RElSRUNUT1JZfQotKiBSdW5uaW5n
OiBNb3ZlRW50cnlUb05vbkV4aXN0ZW50RGlyZWN0b3J5Ci1QQVNTIFN1Y2NlZWRlZDogIi9jIi5y
ZW1vdmUoKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjEiCi1QQVNTIFZl
cmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1
bm5pbmc6IE1vdmVFbnRyeVRvSXRzQ2hpbGQKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSAr
ICIiIGlzICI5IgotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1Q
QVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9iIG5hbWU6YiB0eXBlOkRJUkVDVE9S
WX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hL2IvYyBuYW1lOmMgdHlwZTpE
SVJFQ1RPUll9Ci0qIFJ1bm5pbmc6IE1vdmVSZWN1cnNpdmUKLVBBU1MgU3VjY2VlZGVkOiAiL2Ei
Lm1vdmVUbygiL2IiLCAiYSIpCi1QQVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAv
YQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYSBuYW1lOmEgdHlwZTpESVJF
Q1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9hL2IgbmFtZTpiIHR5
cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IvYS9iL2Mg
bmFtZTpjIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9iL2Ev
Yi9kIG5hbWU6ZCB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nTW92ZUZpbGVUb0Zp
bGUKLVBBU1MgU3VjY2VlZGVkOiAiL2EiLm1vdmVUbygiLyIsICJiIikKLVBBU1MgVmVyaWZpZWQg
ZW50cnk6IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IE92ZXJ3
cml0aW5nTW92ZURpcmVjdG9yeVRvRW1wdHlEaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiL2Ei
Lm1vdmVUbygiLyIsICJjIikKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9jIG5h
bWU6YyB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9j
L2IgbmFtZTpiIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6
IC9hCi0qIFJ1bm5pbmc6IE92ZXJ3cml0aW5nTW92ZUZpbGVUb0RpcmVjdG9yeQotUEFTUyB0aGlz
LmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRS
WSB7cGF0aDovYSBuYW1lOmEgdHlwZTpGSUxFfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkg
e3BhdGg6L2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfQotKiBSdW5uaW5nOiBPdmVyd3JpdGluZ01v
dmVEaXJlY3RvcnlUb0ZpbGUKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5
IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNU
T1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RklM
RX0KLSogUnVubmluZzogT3ZlcndyaXRpbmdNb3ZlRmlsZVRvTm9uZW1wdHlEaXJlY3RvcnkKLVBB
U1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlzICI5IgotUEFTUyBWZXJpZmllZCBlbnRy
eTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RklMRX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6
IEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkRJUkVDVE9SWX0KLVBBU1MgVmVyaWZpZWQgZW50
cnk6IEVOVFJZIHtwYXRoOi9iL2MgbmFtZTpjIHR5cGU6RklMRX0KLSogUnVubmluZzogT3Zlcndy
aXRpbmdNb3ZlRGlyZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9yeQotUEFTUyB0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDov
YSBuYW1lOmEgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYS9iIG5hbWU6YiB0eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0
aDovYyBuYW1lOmMgdHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7
cGF0aDovYy9kIG5hbWU6ZCB0eXBlOkZJTEV9Ci1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1tb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLW1vdmUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1tb3ZlLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1y
ZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMiArMCwwIEBACi0qIFJ1bm5pbmc6IFJl
YWREaXJlY3RvcnkKLVBBU1MgU3VjY2VlZGVkOiAiLyIuY3JlYXRlUmVhZGVyKCkucmVhZEVudHJp
ZXMoKQotRW50cmllczogW0VOVFJZIHtwYXRoOi9hIG5hbWU6YSB0eXBlOkRJUkVDVE9SWX0sCi0g
RU5UUlkge3BhdGg6L2IgbmFtZTpiIHR5cGU6RElSRUNUT1JZfSwKLSBFTlRSWSB7cGF0aDovYyBu
YW1lOmMgdHlwZTpGSUxFfSwKLSBFTlRSWSB7cGF0aDovZCBuYW1lOmQgdHlwZTpGSUxFfSwKLSBF
TlRSWSB7cGF0aDovZSBuYW1lOmUgdHlwZTpESVJFQ1RPUll9LAotIEVOVFJZIHtwYXRoOi9mIG5h
bWU6ZiB0eXBlOkZJTEV9LAotIEVOVFJZIHtwYXRoOi9nIG5hbWU6ZyB0eXBlOkRJUkVDVE9SWX1d
Ci1QQVNTIFN1Y2NlZWRlZDogIi9jIi5yZW1vdmUoKQotUEFTUyBTdWNjZWVkZWQ6ICIvZSIucmVt
b3ZlKCkKLVBBU1MgU3VjY2VlZGVkOiAiL2YiLnJlbW92ZSgpCi1QQVNTIFN1Y2NlZWRlZDogIi8i
LmNyZWF0ZVJlYWRlcigpLnJlYWRFbnRyaWVzKCkKLUVudHJpZXM6IFtFTlRSWSB7cGF0aDovYSBu
YW1lOmEgdHlwZTpESVJFQ1RPUll9LAotIEVOVFJZIHtwYXRoOi9iIG5hbWU6YiB0eXBlOkRJUkVD
VE9SWX0sCi0gRU5UUlkge3BhdGg6L2QgbmFtZTpkIHR5cGU6RklMRX0sCi0gRU5UUlkge3BhdGg6
L2cgbmFtZTpnIHR5cGU6RElSRUNUT1JZfV0KLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlYWQtZGlyZWN0b3J5Lmh0bWwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZWFk
LWRpcmVjdG9yeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vb3AtcmVtb3ZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMyArMCwwIEBA
Ci0qIFJ1bm5pbmc6IFJlbW92ZVNpbXBsZQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIucmVtb3ZlKCkK
LVBBU1MgU3VjY2VlZGVkOiAiL2IiLnJlbW92ZSgpCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNv
ZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnkgZG9lcyBOT1QgZXhpc3Q6IC9hCi1Q
QVNTIFZlcmlmaWVkIGVudHJ5IGRvZXMgTk9UIGV4aXN0OiAvYgotKiBSdW5uaW5nOiBSZW1vdmVO
b25SZWN1cnNpdmVXaXRoQ2hpbGRyZW4KLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIi
IGlzICI5IgotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6
RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYiBuYW1lOmIg
dHlwZTpESVJFQ1RPUll9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYS9jIG5h
bWU6YyB0eXBlOkZJTEV9Ci0qIFJ1bm5pbmc6IFJlbW92ZVJlY3Vyc2l2ZVdpdGhvdXRDaGlsZHJl
bgotUEFTUyBTdWNjZWVkZWQ6ICIvYSIucmVtb3ZlUmVjdXJzaXZlbHkoKQotUEFTUyBWZXJpZmll
ZCBlbnRyeSBkb2VzIE5PVCBleGlzdDogL2EKLSogUnVubmluZzogUmVtb3ZlUmVjdXJzaXZlV2l0
aENoaWxkcmVuCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5yZW1vdmVSZWN1cnNpdmVseSgpCi1QQVNT
IHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiOSIKLVBBU1MgVmVyaWZpZWQgZW50cnkg
ZG9lcyBOT1QgZXhpc3Q6IC9hCi1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZW1vdmUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMyArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Zz
LXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC1yZW1vdmUuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3At
cmVzdHJpY3RlZC1jaGFycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC1j
aGFycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzcgKzAsMCBAQAotKiBSdW5u
aW5nOiBSZXN0cmljdGVkQ2hhcnMKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYTxiIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYT5iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiYTpiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYT9iIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYSpiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiYSJiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYXxiIikKLVBBU1MgU3VjY2Vl
ZGVkOiAiLyIuZ2V0RmlsZSgiPGFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiOmFi
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiP2FiIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiKmFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiImFiIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgifGFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiYWI8IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWI6IikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWI/IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YWIqIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYWIiIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiYWJ8IikKLVBBU1MgdGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiIGlz
ICI5IgotUEFTUyBTdWNjZWVkZWQ6ICIvYWIiLmNvcHlUbygiLyIsICIgYTxiIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiL2FiIi5jb3B5VG8oIi8iLCAiIGE6YiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hYiIu
Y29weVRvKCIvIiwgIiBhP2IiKQotUEFTUyBTdWNjZWVkZWQ6ICIvYWIiLmNvcHlUbygiLyIsICIg
YSpiIikKLVBBU1MgU3VjY2VlZGVkOiAiL2FiIi5jb3B5VG8oIi8iLCAiIGEiYiIpCi1QQVNTIFN1
Y2NlZWRlZDogIi9hYiIuY29weVRvKCIvIiwgIiBhfGIiKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJy
b3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAi
OSIKLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hYiBuYW1lOmFiIHR5cGU6RElS
RUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2E8YiBuYW1lOmE8YiB0
eXBlOkZJTEV9Ci1QQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovIGF8YiBuYW1lOiBh
fGIgdHlwZTpESVJFQ1RPUll9Ci1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLWNoYXJzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtY2hhcnMuaHRtbAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0
ZWQtY2hhcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9vcC1yZXN0cmljdGVkLWNoYXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLW5hbWVzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3At
cmVzdHJpY3RlZC1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLW5hbWVzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0qIFJ1bm5pbmc6IFJlc3RyaWN0ZWROYW1l
cwotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjIiCi1QQVNTIHRoaXMuZXhw
ZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMiIKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
Y29uIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQ09OIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiQ29uIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiY09uLnR4
dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvY29OIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgicHJuIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiUFJOIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiUHJuIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgicFJuLnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvcHJOIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYXV4IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiQVVYIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiQXV4IikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYVV4LnR4dCIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdl
dEZpbGUoImEvYXVYIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgibnVsIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiTlVMIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiTnVsIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiblVsLnR4dCIpCi1QQVNTIFN1
Y2NlZWRlZDogIi8iLmdldEZpbGUoImEvbnVMIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiY29tMSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoIkNPTTIiKQotUEFTUyBTdWNj
ZWVkZWQ6ICIvIi5nZXRGaWxlKCJDb200IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
Y09NNy5mb28iKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhL2NvTTkiKQotUEFTUyBT
dWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJscHQxIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiTFBUMiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoIkxwdDQiKQotUEFTUyBTdWNj
ZWVkZWQ6ICIvIi5nZXRGaWxlKCJsUFQ3LmZvbyIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZp
bGUoImEvbHBUOSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImZvbyAiKQotUEFTUyBT
dWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJmb28KLSIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZp
bGUoImZvby4iKQotUEFTUyBTdWNjZWVkZWQ6ICIvYSIuY29weVRvKCIvIiwgImZvbyAgIikKLVBB
U1MgU3VjY2VlZGVkOiAiL2EiLmNvcHlUbygiLyIsICJmb28JIikKLVBBU1MgU3VjY2VlZGVkOiAi
L2EiLmNvcHlUbygiLyIsICJmb28uLiIpCi1QQVNTIFN1Y2NlZWRlZDogIi9hIi5tb3ZlVG8oIi8i
LCAiZm9vICAgICIpCi1QQVNTIFN1Y2NlZWRlZDogIi9iIi5tb3ZlVG8oIi8iLCAiZm9vCQkiKQot
UEFTUyBTdWNjZWVkZWQ6ICIvYyIubW92ZVRvKCIvIiwgImZvby4uLi4uIikKLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9mb28gICAgIG5hbWU6Zm9vICAgICB0eXBlOkRJUkVDVE9S
WX0KLVBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9mb28JCSBuYW1lOmZvbwkJIHR5
cGU6RElSRUNUT1JZfQotUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2Zvby4uLi4u
IG5hbWU6Zm9vLi4uLi4gdHlwZTpESVJFQ1RPUll9Ci1GaW5pc2hlZCBydW5uaW5nIHRlc3RzLgot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLW5hbWVzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtbmFt
ZXMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L29wLXJlc3RyaWN0ZWQtbmFtZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBA
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNj
cmlwdCBzcmM9InJlc291cmNlcy9vcC1yZXN0cmljdGVkLW5hbWVzLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1yZXN0cmlj
dGVkLXVuaWNvZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9vcC1yZXN0cmljdGVkLXVuaWNvZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vb3AtcmVzdHJpY3RlZC11bmlj
b2RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSArMCwwIEBACi0qIFJ1bm5p
bmc6IFJlc3RyaWN0ZWRVbmljb2RlQ2hhcnMKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YWIiKQotUEFTUyB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlICsgIiIgaXMgIjkiCi1QQVNTIFN1Y2Nl
ZWRlZDogIi8iLmdldEZpbGUoImEBYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEC
YiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEDYiIpCi1QQVNTIFN1Y2NlZWRlZDog
Ii8iLmdldEZpbGUoImEEYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEFYiIpCi1Q
QVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEGYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdl
dEZpbGUoImEHYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUoImEIYiIpCi1QQVNTIFN1
Y2NlZWRlZDogIi8iLmdldEZpbGUoImEJYiIpCi1QQVNTIFN1Y2NlZWRlZDogIi8iLmdldEZpbGUo
ImEKLWIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhC2IiKQotUEFTUyBTdWNjZWVk
ZWQ6ICIvIi5nZXRGaWxlKCJhDGIiKQotUEFTUyBTdWNjZWVkZWQ6ICIvIi5nZXRGaWxlKCJhCi1i
IikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYQ5iIikKLVBBU1MgU3VjY2VlZGVkOiAi
LyIuZ2V0RmlsZSgiYQ9iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRBiIikKLVBB
U1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRFiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0
RmlsZSgiYRJiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRNiIikKLVBBU1MgU3Vj
Y2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRRiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgi
YRViIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRZiIikKLVBBU1MgU3VjY2VlZGVk
OiAiLyIuZ2V0RmlsZSgiYRdiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRhiIikK
LVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRliIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIu
Z2V0RmlsZSgiYRpiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRtiIikKLVBBU1Mg
U3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYRxiIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0Rmls
ZSgiYR1iIikKLVBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYR5iIikKLVBBU1MgVmVyaWZp
ZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9hYiBuYW1lOmFiIHR5cGU6RklMRX0KLUZpbmlzaGVkIHJ1
bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQt
dW5pY29kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9v
cC1yZXN0cmljdGVkLXVuaWNvZGUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL29wLXJlc3RyaWN0ZWQtdW5pY29kZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtdW5p
Y29kZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL29wLXRlc3RzLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3RvcnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVj
dG9yeS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQgKzAsMCBAQAotRGlyZWN0
b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi0KLVN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06ZmlsZV9f
MDpUZW1wb3JhcnkKLVBBU1MgcmVhZEVudHJpZXNDb3VudCBpcyBlbnRyaWVzQ2FsbGJhY2tDb3Vu
dAotUEFTUyByZXN1bHRFbnRyaWVzLmxlbmd0aCBpcyB0ZXN0RW50cmllc0NvdW50Ci1FbnRyeTov
YSBpc0RpcmVjdG9yeTp0cnVlCi1QQVNTIHRlc3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRoXSBpcyBl
bnRyeS5pc0RpcmVjdG9yeQotRW50cnk6L2IgaXNEaXJlY3Rvcnk6ZmFsc2UKLVBBU1MgdGVzdEVu
dHJpZXNbZW50cnkuZnVsbFBhdGhdIGlzIGVudHJ5LmlzRGlyZWN0b3J5Ci1FbnRyeTovYyBpc0Rp
cmVjdG9yeTp0cnVlCi1QQVNTIHRlc3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRoXSBpcyBlbnRyeS5p
c0RpcmVjdG9yeQotRW50cnk6L2QgaXNEaXJlY3Rvcnk6ZmFsc2UKLVBBU1MgdGVzdEVudHJpZXNb
ZW50cnkuZnVsbFBhdGhdIGlzIGVudHJ5LmlzRGlyZWN0b3J5Ci1FbnRyeTovZSBpc0RpcmVjdG9y
eTpmYWxzZQotUEFTUyB0ZXN0RW50cmllc1tlbnRyeS5mdWxsUGF0aF0gaXMgZW50cnkuaXNEaXJl
Y3RvcnkKLUVudHJ5Oi9mIGlzRGlyZWN0b3J5OnRydWUKLVBBU1MgdGVzdEVudHJpZXNbZW50cnku
ZnVsbFBhdGhdIGlzIGVudHJ5LmlzRGlyZWN0b3J5Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5jLW9w
ZXJhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTA2ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAg
ICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVz
Y3JpcHRpb24oIlRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9u
cy4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotCi12YXIgYTsKLXZhciBiOwotdmFyIGM7
Ci12YXIgZDsKLQotdmFyIHBhdGhzID0gW107Ci12YXIgZGlyc0NvdW50ID0gMDsKLXZhciByZWFk
ZXIgPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWco
IkdvdCBlcnJvcjogIiArIGVycm9yLmNvZGUpOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZp
bGVTeXN0ZW0ucm9vdCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJp
ZXNDYWxsYmFjayhlbnRyaWVzKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIHBhdGhzLnB1c2goZW50cmllc1tpXS5mdWxsUGF0aCk7Ci0g
ICAgICAgIGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgZGlyc0NvdW50
Kys7Ci0gICAgfQotICAgIGlmICghZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgcmVhZGVyLnJl
YWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgcGF0aHMuc29ydCgpOwotICAgICAgICBzaG91bGRCZSgnIicgKyBwYXRocy5qb2lu
KCcsJykgKyAnIicsICciL2EsL2IsL2MsL2QyLC9lLC9mIicpOwotICAgICAgICBzaG91bGRCZSgi
ZGlyc0NvdW50IiwgIjMiKTsKLSAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3Rl
bS5yb290KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB2
ZXJpZnkoKSB7Ci0gICAgZGVidWcoIlZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuIik7
Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRl
ci5yZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5j
dGlvbiBhc3luY1Rlc3QyKCkgewotICAgIGRlYnVnKCJTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdl
IDIuIik7Ci0KLSAgICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKLSAgICB2YXIgZG9u
ZSA9IGZ1bmN0aW9uKCkgeyBoZWxwZXIuZG9uZSgpOyB9OwotCi0gICAgaGVscGVyLnJ1bihmdW5j
dGlvbigpIHsgYS5jb3B5VG8oYiwgJ3RtcCcsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAg
ICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmdldE1ldGFkYXRhKGRvbmUsIGVycm9yQ2FsbGJh
Y2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBiLmdldFBhcmVudChkb25lLCBl
cnJvckNhbGxiYWNrKTsgfSk7Ci0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYy5jb3B5VG8o
ZmlsZVN5c3RlbS5yb290LCAnZicsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxw
ZXIucnVuKGZ1bmN0aW9uKCkgeyBkLm1vdmVUbyhmaWxlU3lzdGVtLnJvb3QsICdkMicsIGRvbmUs
IGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxlU3lz
dGVtLnJvb3QuZ2V0RmlsZSgnZScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2sp
OyB9KTsKLQotICAgIGhlbHBlci5qb2luKHZlcmlmeSk7Ci19Ci0KLWZ1bmN0aW9uIGFzeW5jVGVz
dDEoKSB7Ci0gICAgZGVidWcoIlN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4iKTsKLQotICAg
IHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigpOwotICAgIHZhciByb290ID0gZmlsZVN5c3Rl
bS5yb290OwotCi0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdhJywg
e2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgYSA9IGVudHJ5OwotICAg
ICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhl
bHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVl
fSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgYiA9IGVudHJ5OwotICAgICAgICBoZWxwZXIu
ZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVu
Y3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdjJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24o
ZW50cnkpIHsKLSAgICAgICAgYyA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAg
IH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJv
b3QuZ2V0RmlsZSgnZCcsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAg
IGQgPSBlbnRyeTsKLSAgICAgICAgaGVscGVyLmRvbmUoKTsKLSAgICB9LCBlcnJvckNhbGxiYWNr
KTsgfSk7Ci0KLSAgICBoZWxwZXIuam9pbihhc3luY1Rlc3QyKTsKLX0KLQotaWYgKHRoaXMud2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB2
YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkg
ewotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtLmFwcGx5KHRoaXMsIFt0aGlzLlRFTVBPUkFS
WSwgMTAwLCBmdW5jdGlvbihmcykgewotICAgICAgICBkZWJ1ZygiR290IEZpbGVTeXN0ZW06IiAr
IGZzLm5hbWUpOwotICAgICAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgICAgIHJlbW92ZUFsbElu
RGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgZnVuY3Rpb24oKXsgaGVscGVyLmRvbmUoKTsgfSwg
ZXJyb3JDYWxsYmFjayk7Ci0gICAgfSwgZXJyb3JDYWxsYmFja10pOyB9KTsKLSAgICBkZWJ1Zygi
cmVxdWVzdGVkIEZpbGVTeXN0ZW0uIik7Ci0gICAgaGVscGVyLmpvaW4oYXN5bmNUZXN0MSk7Ci19
IGVsc2UKLSAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBv
cnQuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVj
dG9yeS1lbnRyeS10by11cmkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9kaXJlY3RvcnktZW50cnktdG8tdXJpLmpzCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1l
bnRyeS10by11cmkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotaWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMn
KTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMn
KTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRp
b24oIk9idGFpbmluZyBVUkwgZnJvbSBEaXJlY3RvcnlFbnRyeS4iKTsKLQotdmFyIGZpbGVTeXN0
ZW0gPSBudWxsOwotdmFyIHRlc3REaXJlY3RvcnlOYW1lID0gJ3Rlc3REaXJlY3RvcnknOwotdmFy
IHRlc3REaXJlY3RvcnlVUkkgPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9y
KSB7Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJlZDoiICsgZXJyb3IuY29kZSk7Ci0gICAg
ZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJ5VG9VUkwoZW50cnkpIHsKLSAgICB0
ZXN0RGlyZWN0b3J5VVJMID0gZW50cnkudG9VUkwoKTsKLSAgICBzaG91bGRCZSgidGVzdERpcmVj
dG9yeVVSTCIsICInZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RGlyZWN0b3J5JyIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVUZXN0RGlyZWN0b3J5
KCkgewotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkodGVzdERpcmVjdG9yeU5hbWUs
IHtjcmVhdGU6dHJ1ZX0sIGVudHJ5VG9VUkwsIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlv
biBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgcmVt
b3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290LCBjcmVhdGVUZXN0RGlyZWN0b3J5LCBl
cnJvckNhbGxiYWNrKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIGZpbGVTeXN0ZW1DYWxsYmFjaywgZXJyb3JD
YWxsYmFjayk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2Zp
bGUtZW50cnktdG8tdXJpLXN5bmMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLmpzCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50
cnktdG8tdXJpLXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotaW1wb3J0
U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0KLWRlc2NyaXB0aW9uKCJPYnRhaW5pbmcgVVJM
IGZyb20gRmlsZUVudHJ5LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtU3luYyhURU1QT1JBUlksIDEwMCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmls
ZVN5c3RlbS5yb290KTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9ICd0ZXN0RmlsZUVudHJ5LnR4dCc7
Ci12YXIgdGVzdEZpbGVFbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFt
ZSwge2NyZWF0ZTp0cnVlfSk7Ci0KLXNob3VsZEJlKCJ0ZXN0RmlsZUVudHJ5LnRvVVJMKCkiLCAi
J2ZpbGVzeXN0ZW06ZmlsZTovLy90ZW1wb3JhcnkvdGVzdEZpbGVFbnRyeS50eHQnIik7Ci0KLXJl
bW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotZmluaXNoSlNUZXN0KCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnkt
dG8tdXJpLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS1lbnRyeS10by11cmkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmkuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAg
IGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRz
KCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRz
KCdmcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBVUkwgZnJv
bSBGaWxlRW50cnkuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciB0ZXN0RmlsZU5h
bWUgPSAndGVzdEZpbGVFbnRyeS50eHQnOwotdmFyIHRlc3RGaWxlVVJJID0gbnVsbDsKLQotZnVu
Y3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIHRlc3RGYWlsZWQoIkVycm9yIG9jY3Vy
ZWQ6IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBl
bnRyeVRvVVJMKGVudHJ5KSB7Ci0gICAgdGVzdEZpbGVVUkwgPSBlbnRyeS50b1VSTCgpOwotICAg
IHNob3VsZEJlKCJ0ZXN0RmlsZVVSTCIsICInZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90
ZXN0RmlsZUVudHJ5LnR4dCciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24g
Y3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVO
YW1lLCB7Y3JlYXRlOnRydWV9LCBlbnRyeVRvVVJMLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVu
Y3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAg
IHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVy
cm9yQ2FsbGJhY2spOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmls
ZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmls
ZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyMCArMCwwIEBA
Ci0vLyBGSVhNRTogbW92ZSB0aGlzIHVuZGVyIHdvcmtlcnMvcmVzb3VyY2VzCi1pbXBvcnRTY3Jp
cHRzKCdmcy13b3JrZXItY29tbW9uLmpzJyk7Ci1pbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBGaWxlIGZy
b20gRmlsZUVudHJ5U3luYy4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5
bmMoZmlsZVN5c3RlbS5yb290KTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9ICcvdGVzdEZpbGVFbnRy
eS50eHQnOwotCi12YXIgdGVzdEZpbGVFbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRl
c3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci12YXIgdGVzdEZpbGUgPSB0ZXN0RmlsZUVudHJ5
LmZpbGUoKTsKLQotc2hvdWxkQmUoInRlc3RGaWxlLm5hbWUiLCAidGVzdEZpbGVFbnRyeS5uYW1l
Iik7Ci1zaG91bGRCZSgidGVzdEZpbGUudHlwZSIsICIndGV4dC9wbGFpbiciKTsKLXNob3VsZEJl
KCJ0ZXN0RmlsZS5zaXplIiwgIjAiKTsKLQotcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVT
eXN0ZW0ucm9vdCk7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnkuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRy
eS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0MiAr
MCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMt
d29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXRlc3QtdXRpbC5qcycp
OwotfQotCi1kZXNjcmlwdGlvbigiT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuIik7Ci0K
LXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlRW50
cnkudHh0JzsKLXZhciB0ZXN0RmlsZUVudHJ5ID0gbnVsbDsKLXZhciB0ZXN0RmlsZSA9IG51bGw7
Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICB0ZXN0RmFpbGVkKCJFcnJv
ciBvY2N1cmVkOiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVu
Y3Rpb24gZmlsZUNhbGxiYWNrKGZpbGUpIHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2hv
dWxkQmUoInRlc3RGaWxlLm5hbWUiLCAidGVzdEZpbGVFbnRyeS5uYW1lIik7Ci0gICAgc2hvdWxk
QmUoInRlc3RGaWxlLnR5cGUiLCAiJ3RleHQvcGxhaW4nIik7Ci0gICAgc2hvdWxkQmUoInRlc3RG
aWxlLnNpemUiLCAiMCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBnZXRG
aWxlRnJvbUVudHJ5KGVudHJ5KSB7Ci0gICAgdGVzdEZpbGVFbnRyeSA9IGVudHJ5OwotICAgIGVu
dHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gY3Jl
YXRlVGVzdEZpbGUoKSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1l
LCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxlRnJvbUVudHJ5LCBlcnJvckNhbGxiYWNrKTsKLX0KLQot
ZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwot
ICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUs
IGVycm9yQ2FsbGJhY2spOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRS
ZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZmlsZS13cml0ZXItYWJvcnQtY29udGludWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5qcwko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxODgg
KzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2Zz
LXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGls
cy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgY2FuIGNvbnRp
bnVlIGltbWVkaWF0ZWx5IGFmdGVyIGFuIGFib3J0LiIpOwotCi12YXIgc2F3V3JpdGVTdGFydDsK
LXZhciBzYXdBYm9ydDsKLXZhciBzYXdXcml0ZUVuZDsKLXZhciB3cml0ZXI7Ci12YXIgZXhwZWN0
ZWRMZW5ndGg7Ci12YXIgdHJ1bmNhdGVMZW5ndGg7Ci12YXIgYmxvYlNpemUgPSAxMTAwMDAwOwot
dmFyIGN1cnJlbnRUZXN0ID0gMDsKLXZhciBibG9iID0gZ2V0QmxvYigpOwotCi0vLyBmaWxlU3lz
dGVtT3ZlcmhlYWQgaXMgYW4gZXN0aW1hdGUgb2YgZXh0cmEgc2l6ZSBuZWVkZWQgdG8gc2F2ZSBh
IGZ1bGwgZmlsZQotLy8gc3lzdGVtLCBpdCBuZWVkIHRvIGJlIGxhcmdlIGVub3VnaCB0byBhdm9p
ZCB0ZXN0IGZhaWx1cmUgZHVlIHRvIGZpbGUgc3lzdGVtCi0vLyBxdW90YSBsaW1pdC4KLXZhciBm
aWxlU3lzdGVtT3ZlcmhlYWQgPSBibG9iU2l6ZSAqIDUgLyAxMDAwICsgMTAyNDsKLXZhciBmaWxl
U3lzdGVtU2l6ZSA9IGJsb2JTaXplICogMiArIGZpbGVTeXN0ZW1PdmVyaGVhZDsKLQotdmFyIG1l
dGhvZFNldCA9IFsKLSAgeyAgLy8gU2V0dXAgbWV0aG9kIHNldCB0aGF0IHdyaXRlcywgdGhlbiBh
Ym9ydHMgdGhhdCB3cml0ZSBiZWZvcmUgY29tcGxldGlvbi4KLSAgICBhY3Rpb24gOiBzdGFydFdy
aXRlLAotICAgIHZlcmlmeUxlbmd0aCA6IDAsCi0gICAgb253cml0ZXN0YXJ0IDogYWJvcnRXcml0
ZSwKLSAgICBvbnByb2dyZXNzIDogbm9wLAotICAgIG9ud3JpdGUgOiBvbkVycm9yLAotICAgIG9u
YWJvcnQgOiBsb2dBYm9ydCwKLSAgICBvbndyaXRlZW5kIDogY2hlY2tMZW5ndGhBbmRTdGFydE5l
eHRUZXN0Ci0gIH0sCi0gIHsgIC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgd3Jp
dGUuCi0gICAgYWN0aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2ZXJpZnlMZW5ndGggOiBibG9iU2l6
ZSwKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBv
bndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBj
aGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAgeyAvLyBNZXRob2Qgc2V0IHRoYXQg
ZG9lcyBhIGNvbXBsZXRlIHRydW5jYXRlLCBqdXN0IHRvIGNsZWFuIHVwLgotICAgIGFjdGlvbiA6
IHN0YXJ0VHJ1bmNhdGUsCi0gICAgdHJ1bmNhdGVMZW5ndGggOiAwLAotICAgIHZlcmlmeUxlbmd0
aCA6IDAsCi0gICAgb253cml0ZXN0YXJ0IDogbm9wLAotICAgIG9ucHJvZ3Jlc3MgOiBub3AsCi0g
ICAgb253cml0ZSA6IG5vcCwKLSAgICBvbmFib3J0IDogb25FcnJvciwKLSAgICBvbndyaXRlZW5k
IDogY2hlY2tMZW5ndGhBbmRTdGFydE5leHRUZXN0Ci0gIH0sCi0gIHsgIC8vIFNldHVwIG1ldGhv
ZCBzZXQgdGhhdCB3cml0ZXMsIHRoZW4gYWJvcnRzIHRoYXQgd3JpdGUganVzdCBhdCBjb21wbGV0
aW9uLgotICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUsCi0gICAgdmVyaWZ5TGVuZ3RoIDogYmxvYlNp
emUsCi0gICAgb253cml0ZXN0YXJ0IDogbm9wLAotICAgIG9ucHJvZ3Jlc3MgOiBhYm9ydE9uQ29t
cGxldGUsCi0gICAgb253cml0ZSA6IG5vcCwKLSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAg
b253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7ICAvLyBN
ZXRob2Qgc2V0IHRoYXQgZG9lcyBhIGNvbXBsZXRlIHdyaXRlLgotICAgIGFjdGlvbiA6IHN0YXJ0
V3JpdGUsCi0gICAgdmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUgKiAyLCAvLyBBZGQgaW4gbGVmdG92
ZXJzIGZyb20gcHJldmlvdXMgbWV0aG9kLgotICAgIG9ud3JpdGVzdGFydCA6IG5vcCwKLSAgICBv
bnByb2dyZXNzIDogbm9wLAotICAgIG9ud3JpdGUgOiBub3AsCi0gICAgb25hYm9ydCA6IG9uRXJy
b3IsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAot
ICB7IC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgdHJ1bmNhdGUsIGp1c3QgdG8g
Y2xlYW4gdXAuCi0gICAgYWN0aW9uIDogc3RhcnRUcnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxlbmd0
aCA6IDAsCi0gICAgdmVyaWZ5TGVuZ3RoIDogMCwKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0g
ICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBv
bkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAg
fSwKLSAgeyAgLy8gU2V0dXAgbWV0aG9kIHNldCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhh
dCB3cml0ZSBhcyBpdCBzdGFydHMuCi0gICAgYWN0aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2ZXJp
ZnlMZW5ndGggOiAwLAotICAgIG9ud3JpdGVzdGFydCA6IGFib3J0V3JpdGUsCi0gICAgb25wcm9n
cmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogb25FcnJvciwKLSAgICBvbmFib3J0IDogbG9nQWJv
cnQsCi0gICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAot
ICB7IC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgdHJ1bmNhdGUuCi0gICAgYWN0
aW9uIDogc3RhcnRUcnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxlbmd0aCA6IDcsCi0gICAgdmVyaWZ5
TGVuZ3RoIDogNywKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5v
cCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3Jp
dGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfQotXTsKLQotZnVuY3Rpb24g
bm9wKCkgewotfQotCi1mdW5jdGlvbiB0ZW5YQmxvYihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxv
Yik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgQmxvYihiYik7Ci19Ci0KLWZ1bmN0aW9uIGdldEJs
b2IoKSB7Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBhYm91dCBhIG1lZ2FieXRlLgotICAgIHZhciBi
bG9iID0gdGVuWEJsb2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9IHRl
blhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVu
WEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIHZhciBzaXplID0g
YmxvYi5zaXplOwotICAgIHNob3VsZEJlKCIiICsgc2l6ZSwgImJsb2JTaXplIik7Ci0gICAgcmV0
dXJuIGJsb2I7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0V3JpdGUoZSkgewotICAgIHRlc3RQYXNzZWQo
IkNhbGxpbmcgYWJvcnQiKTsKLSAgICB3cml0ZXIuYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gYWJv
cnRPbkNvbXBsZXRlKGUpIHsKLSAgICBpZiAoZS5sb2FkZWQgPT0gZS50b3RhbCkgewotICAgICAg
ICB0ZXN0UGFzc2VkKCJDYWxsaW5nIGFib3J0IGF0IHRoZSBlbmQgb2YgdGhlIHdyaXRlIik7Ci0g
ICAgICAgIHdyaXRlci5hYm9ydCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nQWJvcnQoZSkg
ewotICAgIHRlc3RQYXNzZWQoIlNhdyBhYm9ydCIpOwotfQotCi1mdW5jdGlvbiBjaGVja0xlbmd0
aEFuZFN0YXJ0TmV4dFRlc3QoZSkgewotICAgIHNob3VsZEJlKCJ3cml0ZXIubGVuZ3RoIiwgIiIg
KyBleHBlY3RlZExlbmd0aCk7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kICIgKyBjdXJy
ZW50VGVzdCArICIuIik7Ci0gICAgKytjdXJyZW50VGVzdDsKLSAgICBpZiAoY3VycmVudFRlc3Qg
PCBtZXRob2RTZXQubGVuZ3RoKQotICAgICAgICBydW5UZXN0KCk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIHRlc3RQYXNzZWQoIkFsbCB0ZXN0cyBjb21wbGV0ZS4iKTsKLSAgICAgICAgY2xlYW5VcCgp
OwotICAgIH0KLX0KLQotZnVuY3Rpb24gc3RhcnRXcml0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJD
YWxsaW5nIHdyaXRlLiIpOwotICAgIHdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24g
c3RhcnRUcnVuY2F0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIHRydW5jYXRlLiIpOwot
ICAgIHdyaXRlci50cnVuY2F0ZSh0cnVuY2F0ZUxlbmd0aCk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVw
V3JpdGVyKG1ldGhvZFNldEluZGV4LCB3cml0ZXIpIHsKLSAgICB3cml0ZXIub25lcnJvciA9IG9u
RXJyb3I7Ci0KLSAgICB2YXIgbWV0aG9kcyA9IG1ldGhvZFNldFttZXRob2RTZXRJbmRleF07Ci0g
ICAgd3JpdGVyLm9uYWJvcnQgPSBtZXRob2RzLm9uYWJvcnQ7Ci0gICAgd3JpdGVyLm9ud3JpdGVz
dGFydCA9IG1ldGhvZHMub253cml0ZXN0YXJ0OwotICAgIHdyaXRlci5vbnByb2dyZXNzID0gbWV0
aG9kcy5vbnByb2dyZXNzOwotICAgIHdyaXRlci5vbndyaXRlID0gbWV0aG9kcy5vbndyaXRlOwot
ICAgIHdyaXRlci5vbndyaXRlZW5kID0gbWV0aG9kcy5vbndyaXRlZW5kOwotICAgIGV4cGVjdGVk
TGVuZ3RoID0gbWV0aG9kcy52ZXJpZnlMZW5ndGg7Ci0gICAgdHJ1bmNhdGVMZW5ndGggPSBtZXRo
b2RzLnRydW5jYXRlTGVuZ3RoOwotICAgIG1ldGhvZHMuYWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9u
IHJ1blRlc3QoKSB7Ci0gICAgc2V0dXBXcml0ZXIoY3VycmVudFRlc3QsIHdyaXRlcik7Ci19Ci0K
LXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXNldHVwQW5kUnVuVGVzdChmaWxlU3lzdGVtU2l6
ZSwgJ2ZpbGUtd3JpdGVyLWFib3J0JywKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZmlsZUVu
dHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVFbnRyeUZvckNsZWFu
dXAgPSBmaWxlRW50cnk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7
Ci0gICAgICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsKLSAgICAgICAgICAgICAgICB9KTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJv
cnQtZGVwdGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1k
ZXB0aC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IHRoYXQgRmlsZVdyaXRlciBkZWZlbmRzIGFnYWluc3QgaW5maW5pdGUgcmVjdXJzaW9u
IHZpYSBhYm9ydC4iKTsKLQotdmFyIHNhd1dyaXRlU3RhcnQ7Ci12YXIgc2F3QWJvcnQ7Ci12YXIg
c2F3V3JpdGVFbmQ7Ci12YXIgd3JpdGVyOwotdmFyIGJsb2IgPSBuZXcgQmxvYihbImxvcmVtIGlw
c3VtIl0pOwotdmFyIHJlY3Vyc2lvbkRlcHRoID0gMDsKLXZhciBtZXRob2Q7Ci12YXIgdGVzdHNS
dW4gPSAwOwotCi1mdW5jdGlvbiBvbldyaXRlU3RhcnQoZSkgewotICAgIHRlc3RQYXNzZWQoIkNh
bGxpbmcgYWJvcnQiKTsKLSAgICArK3JlY3Vyc2lvbkRlcHRoOwotICAgIHdyaXRlci5hYm9ydCgp
OwotfQotCi0vLyBXZSBzaG91bGQgYWx3YXlzIGFib3J0IGJlZm9yZSBjb21wbGV0aW9uLgotZnVu
Y3Rpb24gb25Xcml0ZShlKSB7Ci0gICAgdGVzdEZhaWxlZCgiSW4gb25Xcml0ZS4iKTsKLX0KLQot
ZnVuY3Rpb24gb25BYm9ydChlKSB7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IGFib3J0Iik7Ci0gICAg
dHJ5IHsKLSAgICAgIG1ldGhvZCgpOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICBhc3NlcnQo
ZXguY29kZSA9PSAyKTsgIC8vIFNlY3VyaXR5IGVycm9yCi0gICAgICB0ZXN0UGFzc2VkKCJTYXcg
c2VjdXJpdHkgZXJyb3IiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVFbmQoZSkgewot
ICAgIC0tcmVjdXJzaW9uRGVwdGg7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kLiIpOwot
ICAgIGlmICghcmVjdXJzaW9uRGVwdGgpIHsKLSAgICAgICAgKyt0ZXN0c1J1bjsKLSAgICAgICAg
aWYgKHRlc3RzUnVuID09IDEpIHsKLSAgICAgICAgICAgIG1ldGhvZCA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgdHJ1bmNhdGUuIik7Ci0gICAgICAg
ICAgICAgICAgd3JpdGVyLnRydW5jYXRlKDcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
c2V0VGltZW91dChtZXRob2QsIDApOyAgLy8gSW52b2tlIGZyb20gdGhlIHRvcCBsZXZlbCwgc28g
dGhhdCB3ZSdyZSBub3QgYWxyZWFkeSBpbiBhIGhhbmRsZXIuCi0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBjbGVhblVwKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1
blRlc3QodW51c2VkRmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgd3JpdGVyID0gZmlsZVdy
aXRlcjsKLSAgICBtZXRob2QgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNh
bGxpbmcgd3JpdGUuIik7Ci0gICAgICAgIHdyaXRlci53cml0ZShibG9iKTsKLSAgICB9Ci0gICAg
ZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxlV3JpdGVyLm9uYWJvcnQgPSBv
bkFib3J0OwotICAgIGZpbGVXcml0ZXIub253cml0ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0OwotICAg
IGZpbGVXcml0ZXIub253cml0ZSA9IG9uV3JpdGU7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlZW5k
ID0gb25Xcml0ZUVuZDsKLSAgICBtZXRob2QoKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0
cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXItYWJvcnQtZGVw
dGgnLCBydW5UZXN0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZmlsZS13cml0ZXItYWJvcnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC5qcwkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1h
Ym9ydC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4NCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAg
IGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9u
KCJUZXN0IHRoYXQgRmlsZVdyaXRlciBoYW5kbGVzIGFib3J0IHByb3Blcmx5LiIpOwotCi12YXIg
c2F3V3JpdGVTdGFydDsKLXZhciBzYXdBYm9ydDsKLXZhciBzYXdXcml0ZUVuZDsKLXZhciB3cml0
ZXI7Ci0KLWZ1bmN0aW9uIHRlblhCbG9iKGJsb2IpIHsKLSAgICB2YXIgYmIgPSBbXTsKLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICAgICAgYmIucHVzaChibG9iKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG5ldyBCbG9iKGJiKTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZVN0YXJ0
KGUpIHsKLSAgICBhc3NlcnQod3JpdGVyKTsKLSAgICBhc3NlcnQod3JpdGVyLnJlYWR5U3RhdGUg
PT0gd3JpdGVyLldSSVRJTkcpOwotICAgIGFzc2VydChlLnR5cGUgPT0gIndyaXRlc3RhcnQiKTsK
LSAgICBhc3NlcnQoIXNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwot
ICAgIGFzc2VydCghZS5sb2FkZWQpOwotICAgIHNhd1dyaXRlU3RhcnQgPSB0cnVlOwotICAgIHRl
c3RQYXNzZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICB3cml0ZXIuYWJvcnQoKTsKLX0KLQotLy8g
V2Ugc2hvdWxkIGFsd2F5cyBhYm9ydCBiZWZvcmUgY29tcGxldGlvbi4KLWZ1bmN0aW9uIG9uV3Jp
dGUoZSkgewotICAgIHRlc3RGYWlsZWQoIkluIG9uV3JpdGUuIik7Ci19Ci0KLWZ1bmN0aW9uIG9u
QWJvcnQoZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7
Ci0gICAgYXNzZXJ0KHdyaXRlci5lcnJvci5jb2RlID09IHdyaXRlci5lcnJvci5BQk9SVF9FUlIp
OwotICAgIGFzc2VydChzYXdXcml0ZVN0YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsK
LSAgICBhc3NlcnQoIXNhd0Fib3J0KTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJhYm9ydCIpOwot
ICAgIHNhd0Fib3J0ID0gdHJ1ZTsKLSAgICB0ZXN0UGFzc2VkKCJTYXcgYWJvcnQiKTsKLX0KLQot
ZnVuY3Rpb24gb25Xcml0ZUVuZChlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09
IHdyaXRlci5ET05FKTsKLSAgICBhc3NlcnQod3JpdGVyLmVycm9yLmNvZGUgPT0gd3JpdGVyLmVy
cm9yLkFCT1JUX0VSUik7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChz
YXdBYm9ydCk7Ci0gICAgYXNzZXJ0KCFzYXdXcml0ZUVuZCk7Ci0gICAgYXNzZXJ0KGUudHlwZSA9
PSAid3JpdGVlbmQiKTsKLSAgICBzYXdXcml0ZUVuZCA9IHRydWU7Ci0gICAgdGVzdFBhc3NlZCgi
U2F3IHdyaXRlZW5kLiIpOwotICAgIHdyaXRlci5hYm9ydCgpOyAgLy8gVmVyaWZ5IHRoYXQgdGhp
cyBkb2VzIG5vdGhpbmcgaW4gcmVhZHlTdGF0ZSBET05FLgotICAgIGNsZWFuVXAoKTsKLX0KLQot
ZnVuY3Rpb24gc3RhcnRXcml0ZShmaWxlV3JpdGVyKSB7Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBh
Ym91dCBhIG1lZ2FieXRlLgotICAgIHZhciBibG9iID0gdGVuWEJsb2IobmV3IEJsb2IoWyJsb3Jl
bSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5Y
QmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhC
bG9iKGJsb2IpOwotICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7Ci0gICAgZmlsZVdyaXRlci5vbmVy
cm9yID0gb25FcnJvcjsKLSAgICBmaWxlV3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0OwotICAgIGZp
bGVXcml0ZXIub253cml0ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIub253
cml0ZSA9IG9uV3JpdGU7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gb25Xcml0ZUVuZDsK
LSAgICBmaWxlV3JpdGVyLmFib3J0KCk7ICAvLyBWZXJpZnkgdGhhdCB0aGlzIGRvZXMgbm90aGlu
ZyBpbiByZWFkeVN0YXRlIElOSVQuCi0gICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKLX0KLQot
ZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFy
dFdyaXRlKGZpbGVXcml0ZXIpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBB
bmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXItYWJvcnQnLCBydW5UZXN0KTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1w
dHktYmxvYi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxv
Yi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyOSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGlt
cG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IHRoYXQgRmlsZVdyaXRlciB3b3JrcyB3aXRob3V0IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIHdy
aXRlIGFuIGVtcHR5IGJsb2IuIik7Ci0KLXZhciBmaWxlRW50cnk7Ci0KLWZ1bmN0aW9uIG9uVGVz
dFN1Y2Nlc3MoKSB7Ci0gICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuIik7
Ci0gICAgY2xlYW5VcCgpOwotfQotCi1mdW5jdGlvbiBzdGFydFdyaXRlKHdyaXRlcikgewotICAg
IHZhciBibG9iID0gbmV3IEJsb2IoWyIiXSk7Ci0gICAgd3JpdGVyLm9uZXJyb3IgPSBvbkVycm9y
OwotICAgIHdyaXRlci5vbndyaXRlZW5kID0gb25UZXN0U3VjY2VzczsKLSAgICB3cml0ZXIud3Jp
dGUoYmxvYik7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodW51c2VkRmlsZUVudHJ5LCBmaWxlV3Jp
dGVyKSB7Ci0gICAgc3RhcnRXcml0ZShmaWxlV3JpdGVyKTsKLSAgICBnYygpOwotfQotdmFyIGpz
VGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIgKiAxMDI0ICogMTAyNCwgJ2Zp
bGUtd3JpdGVyLWVtcHR5LWJsb2InLCBydW5UZXN0KTsKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVu
dHMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvZmlsZS13cml0ZXItZXZlbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNCAr
MCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMt
d29ya2VyLWNvbW1vbi5qcycpOwotICAgIGlmICghKCdkZXNjcmlwdGlvbicgaW4gc2VsZikpICAv
LyBTaGFyZWQgd29ya2VycyB3aWxsIGFscmVhZHkgaGF2ZSBpbXBvcnRlZCB0aGlzLCBhbmQgaW1w
b3J0aW5nIHR3aWNlIHdvdWxkIGJyZWFrIGl0LgotICAgICAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxl
LXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IEZpbGVXcml0
ZXIgcHJvZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2ZW50cy4iKTsKLQotdmFyIGZpbGVFbnRyeTsK
LXZhciBzYXdXcml0ZVN0YXJ0OwotdmFyIHNhd1dyaXRlOwotdmFyIHNhd1dyaXRlRW5kOwotdmFy
IHNhd1Byb2dyZXNzOwotdmFyIHdyaXRlcjsKLXZhciBsYXN0UHJvZ3Jlc3MgPSAwOwotdmFyIHRv
QmVXcml0dGVuOwotCi1mdW5jdGlvbiB0ZW5YQmxvYihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxv
Yik7Ci0gICAgfQotICAgIHJldHVybiBuZXcgQmxvYihiYik7Ci19Ci0KLWZ1bmN0aW9uIG9uV3Jp
dGVTdGFydChlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlcik7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFk
eVN0YXRlID09IHdyaXRlci5XUklUSU5HKTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJ3cml0ZXN0
YXJ0Iik7Ci0gICAgYXNzZXJ0KCFzYXdXcml0ZVN0YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1Byb2dy
ZXNzKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsK
LSAgICBhc3NlcnQoIWUubG9hZGVkKTsKLSAgICBhc3NlcnQoZS50b3RhbCA9PSB0b0JlV3JpdHRl
bik7Ci0gICAgc2F3V3JpdGVTdGFydCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIG9uUHJvZ3Jlc3Mo
ZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuV1JJVElORyk7Ci0g
ICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydCghc2F3V3JpdGUpOwotICAgIGFz
c2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydChlLnR5cGUgPT0gInByb2dyZXNzIik7Ci0g
ICAgYXNzZXJ0KGUubG9hZGVkIDw9IGUudG90YWwpOwotICAgIGFzc2VydChsYXN0UHJvZ3Jlc3Mg
PCBlLmxvYWRlZCk7Ci0gICAgYXNzZXJ0KGUudG90YWwgPT0gdG9CZVdyaXR0ZW4pOwotICAgIGxh
c3RQcm9ncmVzcyA9IGUubG9hZGVkOwotICAgIHNhd1Byb2dyZXNzID0gdHJ1ZTsKLX0KLQotZnVu
Y3Rpb24gb25Xcml0ZShlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRl
ci5ET05FKTsKLSAgICBhc3NlcnQoc2F3V3JpdGVTdGFydCk7Ci0gICAgYXNzZXJ0KHNhd1Byb2dy
ZXNzKTsKLSAgICBhc3NlcnQobGFzdFByb2dyZXNzID09IGUudG90YWwpOwotICAgIGFzc2VydCgh
c2F3V3JpdGUpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydChlLnR5cGUg
PT0gIndyaXRlIik7Ci0gICAgYXNzZXJ0KGUubG9hZGVkID09IGUudG90YWwpOwotICAgIGFzc2Vy
dChlLnRvdGFsID09IHRvQmVXcml0dGVuKTsKLSAgICBzYXdXcml0ZSA9IHRydWU7Ci19Ci0KLWZ1
bmN0aW9uIG9uV3JpdGVFbmQoZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3
cml0ZXIuRE9ORSk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdQ
cm9ncmVzcyk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5k
KTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJ3cml0ZWVuZCIpOwotICAgIGFzc2VydChlLmxvYWRl
ZCA9PSBlLnRvdGFsKTsKLSAgICBhc3NlcnQoZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAg
c2F3V3JpdGVFbmQgPSB0cnVlOwotICAgIHRlc3RQYXNzZWQoIlNhdyBhbGwgdGhlIHJpZ2h0IGV2
ZW50cy4iKTsKLSAgICBjbGVhblVwKCk7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0V3JpdGUoZmlsZVdy
aXRlcikgewotICAgIC8vIExldCdzIG1ha2UgaXQgYWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2YXIg
YmxvYiA9IHRlblhCbG9iKG5ldyBCbG9iKFsibG9yZW0gaXBzdW0iXSkpOwotICAgIGJsb2IgPSB0
ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRl
blhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICB0b0JlV3JpdHRl
biA9IGJsb2Iuc2l6ZTsKLSAgICB3cml0ZXIgPSBmaWxlV3JpdGVyOwotICAgIGZpbGVXcml0ZXIu
b25lcnJvciA9IG9uRXJyb3I7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlc3RhcnQgPSBvbldyaXRl
U3RhcnQ7Ci0gICAgZmlsZVdyaXRlci5vbnByb2dyZXNzID0gb25Qcm9ncmVzczsKLSAgICBmaWxl
V3JpdGVyLm9ud3JpdGUgPSBvbldyaXRlOwotICAgIGZpbGVXcml0ZXIub253cml0ZWVuZCA9IG9u
V3JpdGVFbmQ7Ci0gICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVu
VGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBhc3NlcnQodHlwZW9mIGZp
bGVXcml0ZXIuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyk7Ci0gICAgYXNzZXJ0KHR5
cGVvZiBmaWxlV3JpdGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicpOwotICAg
IGFzc2VydCh0eXBlb2YgZmlsZVdyaXRlci5kaXNwYXRjaEV2ZW50ID09PSAnZnVuY3Rpb24nKTsK
LSAgICBzdGFydFdyaXRlKGZpbGVXcml0ZXIpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVl
Owotc2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXItZXZlbnRzJywgcnVu
VGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUt
d3JpdGVyLWdjLWJsb2IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1nYy1ibG9iLmpzCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJs
b2IuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBp
bXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigi
VGVzdCB0aGF0IGEgYmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hpbGUgYmVpbmcg
d3JpdHRlbiBvdXQgYnkgYSBGaWxlV3JpdGVyLiIpOwotCi12YXIgZmlsZUVudHJ5OwotCi1mdW5j
dGlvbiBvblRlc3RTdWNjZXNzKCkgewotICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSB3cm90
ZSBibG9iLiIpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gdGVuWEJsb2IoYmxvYikg
ewotICAgIHZhciBiYiA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgewot
ICAgICAgICBiYi5wdXNoKGJsb2IpOwotICAgIH0KLSAgICByZXR1cm4gbmV3IEJsb2IoYmIpOwot
fQotCi1mdW5jdGlvbiBzdGFydFdyaXRlKHdyaXRlcikgewotICAgIC8vIExldCdzIG1ha2UgaXQg
YWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxvYiA9IHRlblhCbG9iKG5ldyBCbG9iKFsibG9y
ZW0gaXBzdW0iXSkpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVu
WEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5Y
QmxvYihibG9iKTsKLSAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0gICAgd3JpdGVyLm9u
d3JpdGVlbmQgPSBvblRlc3RTdWNjZXNzOwotICAgIHdyaXRlci53cml0ZShibG9iKTsKLX0KLQot
ZnVuY3Rpb24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFy
dFdyaXRlKGZpbGVXcml0ZXIpOwotICAgIGdjKCk7Ci19Ci12YXIganNUZXN0SXNBc3luYyA9IHRy
dWU7Ci1zZXR1cEFuZFJ1blRlc3QoMioxMDI0KjEwMjQsICdmaWxlLXdyaXRlci1nYy1ibG9iJywg
cnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2Zp
bGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1l
eHRlbmQuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNDAgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGlt
cG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1w
b3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotICAgIGltcG9ydFNj
cmlwdHMoJy4uL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlw
dGlvbigiVGVzdCB1c2luZyBGaWxlV3JpdGVyU3luYy50cnVuY2F0ZSB0byBleHRlbmQgYSBmaWxl
LiIpOwotCi0vLyBTdGFydCB3aXRoIGFuIGVtcHR5IEZpbGVTeXN0ZW0uCi12YXIgZmlsZVN5c3Rl
bSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJl
bW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotCi0vLyBQcmVwYXJlIGEg
ZmlsZSB3aXRoIHNhbXBsZSBjb250ZW50cy4KLXZhciBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5n
ZXRGaWxlKCdhJywge2NyZWF0ZTp0cnVlLCBleGNsdXNpdmU6dHJ1ZX0pOwotdmFyIHdyaXRlciA9
IGVudHJ5LmNyZWF0ZVdyaXRlcigpOwotYXNzZXJ0KCF3cml0ZXIucG9zaXRpb24pOwotdmFyIHRl
c3REYXRhID0gInRlc3QgZGF0YSI7Ci13cml0ZXIud3JpdGUobmV3IEJsb2IoW3Rlc3REYXRhXSkp
OwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0
ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci0KLS8vIEV4dGVuZCB0aGUgZmlsZSB2aWEg
dHJ1bmNhdGUuCi12YXIgZXh0ZW5zaW9uTGVuZ3RoID0gMTA7Ci13cml0ZXIudHJ1bmNhdGUod3Jp
dGVyLmxlbmd0aCArIGV4dGVuc2lvbkxlbmd0aCk7Ci0KLS8vIFZlcmlmeSB0aGUgY29udGVudHMu
Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25MZW5n
dGgpOwotYXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9PSB0ZXN0RGF0YS5sZW5ndGgpOwotdmFyIGZp
bGUgPSBlbnRyeS5maWxlKCk7Ci12YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXJTeW5jKCk7Ci12
YXIgY29udGVudHMgPSByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwotdmFyIGk7Ci1m
b3IgKGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpCi0gICAgYXNzZXJ0KGNvbnRlbnRz
LmNoYXJDb2RlQXQoaSkgPT0gdGVzdERhdGEuY2hhckNvZGVBdChpKSk7Ci1mb3IgKDsgaSA8IHdy
aXRlci5sZW5ndGg7ICsraSkKLSAgICBhc3NlcnQoIWNvbnRlbnRzLmNoYXJDb2RlQXQoaSkpOwot
Ci10ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rl
c3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13
cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFw
cGVkLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw5MSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1w
b3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBv
cnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0
aW9uKCJUZXN0IHVzaW5nIEZpbGVXcml0ZXJTeW5jLnNlZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcg
ZXhpc3RpbmcgZGF0YSBpbiBhIGZpbGUuIik7Ci0KLS8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgRmls
ZVN5c3RlbS4KLXZhciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKHRo
aXMuVEVNUE9SQVJZLCAxMDApOwotcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0u
cm9vdCk7Ci0KLS8vIFByZXBhcmUgYSBmaWxlIHdpdGggc2FtcGxlIGNvbnRlbnRzLgotdmFyIGVu
dHJ5ID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2EnLCB7Y3JlYXRlOnRydWUsIGV4Y2x1c2l2
ZTp0cnVlfSk7Ci12YXIgd3JpdGVyID0gZW50cnkuY3JlYXRlV3JpdGVyKCk7Ci1hc3NlcnQoIXdy
aXRlci5wb3NpdGlvbik7Ci12YXIgdGVzdERhdGEgPSAidGVzdCBkYXRhIjsKLXZhciBibG9iID0g
bmV3IEJsb2IoW3Rlc3REYXRhXSk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVy
Lmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGgpOwotYXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9PSB3
cml0ZXIubGVuZ3RoKTsKLQotLy8gU2VlayBiYWNrIHRvIGZyb20gdGhlIGVuZCwgdGhlbiBvdmVy
d3JpdGUsIGV4dGVuZGluZyB0aGUgZmlsZS4KLXZhciBleHRlbnNpb25PZmZzZXQgPSAtNDsKLXdy
aXRlci5zZWVrKGV4dGVuc2lvbk9mZnNldCk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci0KLS8vIFZl
cmlmeSB0aGUgY29udGVudHMuCi1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSAyICogdGVzdERhdGEu
bGVuZ3RoICsgZXh0ZW5zaW9uT2Zmc2V0KTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3Jp
dGVyLmxlbmd0aCk7Ci12YXIgZmlsZSA9IGVudHJ5LmZpbGUoKTsKLXZhciByZWFkZXIgPSBuZXcg
RmlsZVJlYWRlclN5bmMoKTsKLXZhciBjb250ZW50cyA9IHJlYWRlci5yZWFkQXNCaW5hcnlTdHJp
bmcoZmlsZSk7Ci12YXIgaTsKLWZvciAoaSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGggKyBleHRl
bnNpb25PZmZzZXQ7ICsraSkKLSAgICBhc3NlcnQoY29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0
ZXN0RGF0YS5jaGFyQ29kZUF0KGkpKTsKLXZhciBqOwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5s
ZW5ndGg7ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRl
c3REYXRhLmNoYXJDb2RlQXQoaikpOwotdGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAxIHZl
cmlmaWVkLiIpOwotCi0vLyBUcnVuY2F0ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29u
dGVudHMuCi13cml0ZXIudHJ1bmNhdGUoMCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1h
c3NlcnQoIXdyaXRlci5sZW5ndGgpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotYXNzZXJ0KHdyaXRl
ci5sZW5ndGggPT0gdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0g
d3JpdGVyLmxlbmd0aCk7Ci0KLS8vIFNlZWsgZm9yd2FyZCBmcm9tIHRoZSBiZWdpbm5pbmcsIHRo
ZW4gb3ZlcndyaXRlLCBleHRlbmRpbmcgdGhlIGZpbGUuCi1leHRlbnNpb25PZmZzZXQgPSA0Owot
d3JpdGVyLnNlZWsoZXh0ZW5zaW9uT2Zmc2V0KTsKLXdyaXRlci53cml0ZShibG9iKTsKLWFzc2Vy
dCh3cml0ZXIubGVuZ3RoID09IHRlc3REYXRhLmxlbmd0aCArIGV4dGVuc2lvbk9mZnNldCk7Ci1h
c3NlcnQod3JpdGVyLnBvc2l0aW9uID09IHdyaXRlci5sZW5ndGgpOwotCi0vLyBWZXJpZnkgdGhl
IGNvbnRlbnRzLgotY29udGVudHMgPSByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwot
Zm9yIChpID0gMDsgaSA8IGV4dGVuc2lvbk9mZnNldDsgKytpKQotICAgIGFzc2VydChjb250ZW50
cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaSkpOwotZm9yIChqID0gMDsg
aSA8IHdyaXRlci5sZW5ndGg7ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29k
ZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwotdGVzdFBhc3NlZCgiT3ZlcmxhcHBl
ZCB3cml0ZSAyIHZlcmlmaWVkLiIpOwotCi0vLyBUcnVuY2F0ZSBiYWNrIHRvIGVtcHR5IGFuZCBy
ZXNldCB0aGUgY29udGVudHMuCi13cml0ZXIudHJ1bmNhdGUoMCk7Ci1hc3NlcnQoIXdyaXRlci5w
b3NpdGlvbik7Ci1hc3NlcnQoIXdyaXRlci5sZW5ndGgpOwotd3JpdGVyLndyaXRlKGJsb2IpOwot
d3JpdGVyLndyaXRlKGJsb2IpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRh
Lmxlbmd0aCk7Ci1hc3NlcnQod3JpdGVyLnBvc2l0aW9uID09IHdyaXRlci5sZW5ndGgpOwotCi0v
LyBTZWVrIGZvcndhcmQgZnJvbSB0aGUgYmVnaW5uaW5nLCB0aGVuIG92ZXJ3cml0ZSBpbiB0aGUg
bWlkZGxlIG9mIHRoZSBmaWxlLgotZXh0ZW5zaW9uT2Zmc2V0ID0gNDsKLXdyaXRlci5zZWVrKGV4
dGVuc2lvbk9mZnNldCk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0
aCA9PSAyICogdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gdGVz
dERhdGEubGVuZ3RoICsgZXh0ZW5zaW9uT2Zmc2V0KTsKLQotLy8gVmVyaWZ5IHRoZSBjb250ZW50
cy4KLWNvbnRlbnRzID0gcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTsKLWZvciAoaSA9
IDA7IGkgPCBleHRlbnNpb25PZmZzZXQ7ICsraSkKLSAgICBhc3NlcnQoY29udGVudHMuY2hhckNv
ZGVBdChpKSA9PSB0ZXN0RGF0YS5jaGFyQ29kZUF0KGkpKTsKLWZvciAoaiA9IDA7IGkgPCB0ZXN0
RGF0YS5sZW5ndGggKyBleHRlbnNpb25PZmZzZXQ7ICsraSwgKytqKQotICAgIGFzc2VydChjb250
ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwotZm9yIChqID0g
ZXh0ZW5zaW9uT2Zmc2V0OyBpIDwgd3JpdGVyLmxlbmd0aDsgKytpLCArK2opCi0gICAgYXNzZXJ0
KGNvbnRlbnRzLmNoYXJDb2RlQXQoaSkgPT0gdGVzdERhdGEuY2hhckNvZGVBdChqKSk7Ci10ZXN0
UGFzc2VkKCJPdmVybGFwcGVkIHdyaXRlIDMgdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXIt
dHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3Jp
dGVyLXRydW5jYXRlLWV4dGVuZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi1p
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNv
bW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IG9mIGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUo
KS4iKTsKLQotZnVuY3Rpb24gb25UZXN0U3VjY2VlZGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJU
cnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7Ci0gICAgY2xlYW5VcCgpOwotfQotCi1mdW5j
dGlvbiB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9u
U3VjY2VzcykKLXsKLSAgICB2YXIgZXh0ZW5zaW9uID0gNTsKLSAgICB2YXIgbGVuZ3RoQ2hlY2tl
ciA9IGZ1bmN0aW9uKCkgewotICAgICAgICB2ZXJpZnlGaWxlTGVuZ3RoKGZpbGVFbnRyeSwgY29u
dGVudHMubGVuZ3RoICsgZXh0ZW5zaW9uLCBvblN1Y2Nlc3MpOwotICAgIH07Ci0gICAgdmFyIGV4
dGVuc2lvbkNoZWNrZXIgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlSXNa
ZXJvZXMoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGgsIGV4dGVuc2lvbiwgbGVuZ3RoQ2hlY2tl
cik7Ci0gICAgfTsKLSAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCBjb250ZW50cywgZXh0ZW5z
aW9uQ2hlY2tlcik7Ci0gICAgfTsKLSAgICBmaWxlV3JpdGVyLnRydW5jYXRlKGNvbnRlbnRzLmxl
bmd0aCArIGV4dGVuc2lvbik7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoZmlsZUVudHJ5LCBmaWxl
V3JpdGVyKSB7Ci0gICAgdmFyIGNvbnRlbnRzID0gIkxvcmVtIGlwc3VtIjsKLSAgICB3cml0ZVN0
cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRlbnRzLAotICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVF
bnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uVGVzdFN1Y2NlZWRlZCk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXNldHVwQW5kUnVuVGVz
dCgxMDI0LCAnZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kJywgcnVuVGVzdCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmls
ZS13cml0ZXItdXRpbHMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTY5ICswLDAgQEAKLWZ1bmN0aW9uIHN0cmluZ2lmeU9iaihvKQotewotICAgIHMgPSAi
IjsKLSAgICBpZiAobykKLSAgICAgICAgZm9yIChpbmRleCBpbiBvKSB7Ci0gICAgICAgICAgICBz
ICs9IGluZGV4ICsgIjogIiArIG9baW5kZXhdICsgIjsiOwotICAgICAgICB9Ci0gICAgcmV0dXJu
IHM7Ci19Ci0KLWZ1bmN0aW9uIG9uRXJyb3IoZSkKLXsKLSAgICB0ZXN0RmFpbGVkKCJHb3QgZXJy
b3I6ICIgKyBzdHJpbmdpZnlPYmooZSkpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24g
YXNzZXJ0KHMpCi17Ci0gICAgaWYgKCFzKSB7Ci0gICAgICAgIHZhciBlID0gbmV3IEVycm9yKCJB
c3NlcnRpb24gZmFpbGVkLiAiKTsKLSAgICAgICAgb25FcnJvcihlKTsKLSAgICAgICAgdGhyb3cg
ZTsKLSAgICB9Ci19Ci0KLXZhciBmaWxlRW50cnlGb3JDbGVhbnVwOyAgLy8gU2V0IGFzIHNvb24g
YXMgd2UgaGF2ZSBvbmUuCi0KLWZ1bmN0aW9uIGNsZWFuVXAoKQotewotICAgIGlmIChmaWxlRW50
cnlGb3JDbGVhbnVwKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmaWxlRW50cnlGb3JD
bGVhbnVwLnJlbW92ZShmaW5pc2hKU1Rlc3QsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLS8vIEdlbmVyaWMgZnVuY3Rpb24gdGhhdCBnZXRzIGEgRmlsZSBm
cm9tIGEgRmlsZUVudHJ5IGFuZCBjYWxscyBhIGN1c3RvbSB2ZXJpZmljYXRpb24gZnVuY3Rpb24g
b24gaXQuCi1mdW5jdGlvbiB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGdW5j
LCBhcmcwLCBhcmcxLCBvblN1Y2Nlc3MpCi17Ci0gICAgZmlsZUVudHJ5LmZpbGUoCi0gICAgICAg
IGZ1bmN0aW9uKGZpbGUpIHsKLSAgICAgICAgICAgIHZlcmlmeUZ1bmMoZmlsZSwgYXJnMCwgYXJn
MSwgb25TdWNjZXNzKTsKLSAgICAgICAgfSwKLSAgICAgICAgb25FcnJvcik7Ci19Ci0KLS8vIEhl
bHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVy
aWZ5RmlsZUxlbmd0aEhlbHBlcihmaWxlLCBsZW5ndGgsIHVudXNlZCwgb25TdWNjZXNzKQotewot
ICAgIGFzc2VydChmaWxlLnNpemUgPT0gbGVuZ3RoKTsKLSAgICBvblN1Y2Nlc3MoKTsKLX0KLQot
Ly8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmlsZUVudHJ5IGhhdmUgdGhlIHN1cHBs
aWVkIGxlbmd0aC4KLWZ1bmN0aW9uIHZlcmlmeUZpbGVMZW5ndGgoZmlsZUVudHJ5LCBsZW5ndGgs
IG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlG
aWxlTGVuZ3RoSGVscGVyLCBsZW5ndGgsIG51bGwsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBl
ciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5
Qnl0ZVJhbmdlSXNaZXJvZXNIZWxwZXIoZmlsZSwgc3RhcnQsIGxlbmd0aCwgb25TdWNjZXNzKQot
ewotICAgIHZhciBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKLSAgICBmaWxlUmVhZGVy
Lm9uZXJyb3IgPSBvbkVycm9yOwotICAgIGZpbGVSZWFkZXIub25sb2FkID0KLSAgICAgICAgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZmlsZVJlYWRlci5yZXN1bHQ7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAg
ICAgIGFzc2VydChyZXN1bHQuY2hhckNvZGVBdChpKSA9PSAwKTsKLSAgICAgICAgICAgIG9uU3Vj
Y2VzcygpOwotICAgICAgICB9OwotICAgIGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZp
bGUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKSk7Ci19Ci0KLS8vIFZlcmlmaWVzIHRoYXQg
ZmlsZUVudHJ5LCBhdCBvZmZzZXQsIGlzIGFsbCB6ZXJvZXMgZm9yIGxlbmd0aCBieXRlcy4KLWZ1
bmN0aW9uIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2VzKGZpbGVFbnRyeSwgb2Zmc2V0LCBsZW5ndGgs
IG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlC
eXRlUmFuZ2VJc1plcm9lc0hlbHBlciwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2Vzcyk7Ci19Ci0K
LS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rp
b24gdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmdIZWxwZXIoZmlsZSwgc3RhcnQsIGRhdGEsIG9uU3Vj
Y2VzcykKLXsKLSAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7Ci0gICAgZmls
ZVJlYWRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxlUmVhZGVyLm9ubG9hZCA9Ci0gICAg
ICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0KGZpbGVSZWFkZXIucmVzdWx0ID09
IGRhdGEpOwotICAgICAgICAgICAgb25TdWNjZXNzKCk7Ci0gICAgICAgIH07Ci0gICAgZmlsZVJl
YWRlci5yZWFkQXNUZXh0KGZpbGUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgZGF0YS5sZW5ndGgpKTsK
LX0KLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmlsZUVudHJ5LCBhdCBvZmZz
ZXQsIG1hdGNoIGNvbnRlbnRzIFthIHN0cmluZ10uCi1mdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VB
c1N0cmluZyhmaWxlRW50cnksIG9mZnNldCwgY29udGVudHMsIG9uU3VjY2VzcykKLXsKLSAgICB2
ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZ0hlbHBl
ciwgb2Zmc2V0LCBjb250ZW50cywgb25TdWNjZXNzKTsKLX0KLQotLy8gQ3JlYXRlcyBhIGZpbGUg
Y2FsbGVkIGZpbGVOYW1lIGluIGZpbGVTeXN0ZW0ncyByb290IGRpcmVjdG9yeSwgdHJ1bmNhdGVz
IGl0IHRvIHplcm8gbGVuZ3RoIGp1c3QgaW4gY2FzZSwgYW5kIGNhbGxzIG9uU3VjY2VzcywgcGFz
c2luZyBpdCBhIEZpbGVFbnRyeSBhbmQgRmlsZVdyaXRlciBmb3IgdGhlIG5ldyBmaWxlLgotZnVu
Y3Rpb24gY3JlYXRlRW1wdHlGaWxlKGZpbGVTeXN0ZW0sIGZpbGVOYW1lLCBvblN1Y2Nlc3MpCi17
Ci0gICAgZnVuY3Rpb24gZ2V0U3VjY2Vzc0Z1bmMoZmlsZUVudHJ5KSB7Ci0gICAgICAgIC8vIENy
ZWF0ZSBhIGZyZXNoIEZpbGVXcml0ZXIgaGVyZSwgcmF0aGVyIHRoYW4gcGFzcyBpbiB0aGUgdXNl
ZCBvbmUuCi0gICAgICAgIC8vIFRoaXMgd2F5IHdlIGRvbid0IGFjY2lkZW50YWxseSBsZWF2ZSBv
dXIgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQuCi0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIoZnVuY3Rpb24oZncpIHsKLSAgICAg
ICAgICAgICAgICBvblN1Y2Nlc3MoZmlsZUVudHJ5LCBmdyk7Ci0gICAgICAgICAgICB9LCBvbkVy
cm9yKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBnZXRGaWxlV3JpdGVyQ2FsbGJh
Y2soZmlsZUVudHJ5KSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbihmaWxlV3JpdGVyKSB7Ci0g
ICAgICAgICAgICB2YXIgc3VjY2Vzc0Z1bmMgPSBnZXRTdWNjZXNzRnVuYyhmaWxlRW50cnkpOwot
ICAgICAgICAgICAgZmlsZVdyaXRlci5vbkVycm9yID0gb25FcnJvcjsKLSAgICAgICAgICAgIGZp
bGVXcml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGZpbGVXcml0
ZXIub253cml0ZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgdmVyaWZ5RmlsZUxlbmd0aChmaWxl
RW50cnksIDAsIHN1Y2Nlc3NGdW5jKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBmaWxl
V3JpdGVyLnRydW5jYXRlKDApOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uRmls
ZUVudHJ5KGZpbGVFbnRyeSkgewotICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwID0gZmlsZUVu
dHJ5OwotICAgICAgICB2YXIgb25GaWxlV3JpdGVyID0gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZp
bGVFbnRyeSk7Ci0gICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIob25GaWxlV3JpdGVyLCBv
bkVycm9yKTsKLSAgICB9Ci0gICAgYXNzZXJ0KGZpbGVTeXN0ZW0pOwotICAgIGZpbGVTeXN0ZW0u
cm9vdC5nZXRGaWxlKGZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBvbkZpbGVFbnRyeSwgb25FcnJv
cik7Ci19Ci0KLWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgb2Zm
c2V0LCBkYXRhLCBvblN1Y2Nlc3MpCi17Ci0gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbZGF0YV0p
OwotICAgIGZpbGVXcml0ZXIuc2VlayhvZmZzZXQpOwotICAgIGZpbGVXcml0ZXIud3JpdGUoYmxv
Yik7Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBpZiAob2Zmc2V0IDwg
MCkKLSAgICAgICAgb2Zmc2V0ICs9IGZpbGVXcml0ZXIubGVuZ3RoOwotICAgIGFzc2VydChvZmZz
ZXQgPj0gMCk7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGZpbGVXcml0ZXIub253cml0ZSA9IG51bGw7Ci0gICAgICAgIHZlcmlmeUJ5dGVSYW5nZUFzU3Ry
aW5nKGZpbGVFbnRyeSwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpOwotICAgIH07Ci19Ci0KLWZ1
bmN0aW9uIHNldEZpbGVDb250ZW50cyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIGNvbnRlbnRzLCBv
blN1Y2Nlc3MpIHsKLSAgICBmaWxlV3JpdGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIGZpbGVX
cml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGUg
PSBudWxsOwotICAgICAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNv
bnRlbnRzLCBvblN1Y2Nlc3MpOwotICAgIH07Ci0gICAgZmlsZVdyaXRlci50cnVuY2F0ZSgwKTsK
LX0KLQotZnVuY3Rpb24gc2V0dXBBbmRSdW5UZXN0KHNpemUsIHRlc3ROYW1lLCB0ZXN0RnVuYykK
LXsKLSAgICBpZiAoIXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgICAgIGRlYnVnKCJU
aGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBkZWJ1Zygic3RhcnRpbmcgdGVzdCIpOwotICAgIHdlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgc2l6ZSwgZnVuY3Rpb24oZnMpIHsKLSAgICAgICAgY3Jl
YXRlRW1wdHlGaWxlKGZzLCB0ZXN0TmFtZSwgdGVzdEZ1bmMpOwotICAgIH0sIG9uRXJyb3IpOwot
fQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRl
ci13cml0ZS1vdmVybGFwcGVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5qcwkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxl
LXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAg
QEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy13b3Jr
ZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnZmlsZS13cml0ZXItdXRpbHMuanMn
KTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRl
IG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxlLiIpOwotCi12YXIgZmlsZUVudHJ5
OwotdmFyIGZpbGVXcml0ZXI7Ci12YXIgdGVzdERhdGEgPSAiTG9yZW0gaXBzdW0iOwotdmFyIHNl
ZWtCYWNrd2FyZE9mZnNldCA9IC00OwotdmFyIHNlZWtGb3J3YXJkT2Zmc2V0ID0gNDsKLQotZnVu
Y3Rpb24gb25UZXN0U3VjY2VlZGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJBbGwgd3JpdGVzIHZl
cmlmaWVkLiIpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gdmFsaWRhdGVOb25leHRl
bmRpbmdXcml0ZUVuZCgpIHsKLSAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnks
IHRlc3REYXRhLmxlbmd0aCArIHNlZWtGb3J3YXJkT2Zmc2V0LCB0ZXN0RGF0YS5zbGljZShzZWVr
Rm9yd2FyZE9mZnNldCksIG9uVGVzdFN1Y2NlZWRlZCk7Ci19Ci0KLWZ1bmN0aW9uIHZhbGlkYXRl
Tm9uZXh0ZW5kaW5nV3JpdGVTdGFydCgpIHsKLSAgICB0ZXN0UGFzc2VkKCJOb25leHRlbmRpbmcg
d3JpdGUgdmFsaWRhdGVkLiIpOwotICAgIGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0
RGF0YS5sZW5ndGggKiAyKTsKLSAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnks
IDAsIHRlc3REYXRhLnNsaWNlKDAsIHNlZWtGb3J3YXJkT2Zmc2V0KSwgdmFsaWRhdGVOb25leHRl
bmRpbmdXcml0ZUVuZCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3ROb25leHRlbmRpbmdXcml0ZSgpIHsK
LSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHNlZWtGb3J3YXJkT2Zmc2V0
LCB0ZXN0RGF0YSwgdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZVN0YXJ0KTsKLX0KLQotZnVuY3Rp
b24gc2V0dXBOb25leHRlbmRpbmdXcml0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJQb3NpdGl2ZSBz
ZWVrIHZhbGlkYXRlZC4iKTsKLSAgICBzZXRGaWxlQ29udGVudHMoZmlsZUVudHJ5LCBmaWxlV3Jp
dGVyLCB0ZXN0RGF0YSArIHRlc3REYXRhLCB0ZXN0Tm9uZXh0ZW5kaW5nV3JpdGUpOwotfQotCi1m
dW5jdGlvbiB2YWxpZGF0ZVNlZWtGb3J3YXJkKCkgewotICAgIGFzc2VydChmaWxlV3JpdGVyLmxl
bmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKyBzZWVrRm9yd2FyZE9mZnNldCk7Ci0gICAgdmVyaWZ5
Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCB0ZXN0RGF0YS5zbGljZSgwLCBzZWVrRm9y
d2FyZE9mZnNldCksIHNldHVwTm9uZXh0ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlvbiB0ZXN0
U2Vla0ZvcndhcmQoKSB7Ci0gICAgd3JpdGVTdHJpbmcoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBz
ZWVrRm9yd2FyZE9mZnNldCwgdGVzdERhdGEsIHZhbGlkYXRlU2Vla0ZvcndhcmQpOwotfQotCi1m
dW5jdGlvbiBzZXR1cFNlZWtGb3J3YXJkKCkgewotICAgIHRlc3RQYXNzZWQoIk5lZ2F0aXZlIHNl
ZWsgdmFsaWRhdGVkLiIpOwotICAgIHNldEZpbGVDb250ZW50cyhmaWxlRW50cnksIGZpbGVXcml0
ZXIsIHRlc3REYXRhLCB0ZXN0U2Vla0ZvcndhcmQpOwotfQotCi1mdW5jdGlvbiB2YWxpZGF0ZVNl
ZWtCYWNrd2FyZCgpIHsKLSAgICBhc3NlcnQoZmlsZVdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3RE
YXRhLmxlbmd0aCArIHNlZWtCYWNrd2FyZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNT
dHJpbmcoZmlsZUVudHJ5LCAwLCB0ZXN0RGF0YS5zbGljZSgwLCB0ZXN0RGF0YS5sZW5ndGggKyBz
ZWVrQmFja3dhcmRPZmZzZXQpLCBzZXR1cFNlZWtGb3J3YXJkKTsKLX0KLQotZnVuY3Rpb24gdGVz
dFNlZWtCYWNrd2FyZCgpIHsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIs
IHNlZWtCYWNrd2FyZE9mZnNldCwgdGVzdERhdGEsIHZhbGlkYXRlU2Vla0JhY2t3YXJkKTsKLX0K
LQotLy8gRWFjaCB0ZXN0IGhhcyAzIHBoYXNlczogc2V0dXAsIGV4ZWN1dGlvbiwgYW5kIHZhbGlk
YXRpb24uICBJbiB0aGUgc2V0dXAgcGhhc2UsIHdlIG1ha2Ugc3VyZSB0aGF0IHRoZXJlJ3MgYSBG
aWxlV3JpdGVyIHBvaW50aW5nIGF0IGEgZmlsZSB3aXRoIGFwcHJvcHJpYXRlCi0vLyBkYXRhIGZv
ciB0aGUgdGVzdCB3ZSB3YW50IHRvIHJ1bi4gIEluIHRoZSBleGVjdXRpb24gcGhhc2UsIHdlIGRv
IGEgc2VlayBhbmQgYSB3cml0ZSwgYW5kIHRoZSB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgZG9lcyB0
aG9zZSBhbHNvIHZhbGlkYXRlcyB0aGF0IHRoZSBkYXRhCi0vLyBhY3R1YWxseSBnb3Qgd3JpdHRl
bi4gIFNvIGluIHRoZSB2YWxpZGF0aW9uIHBoYXNlLCB3ZSBvbmx5IGhhdmUgdG8gY2hlY2sgdGhh
dCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBkaWRuJ3QgZ2V0IGNvcnJ1cHRlZCB3aGlsZSB3ZSB3ZXJl
IHdyaXRpbmcgb3VyIGJpdC4KLWZ1bmN0aW9uIHJ1blRlc3QoZmlsZUVudHJ5SW4sIGZpbGVXcml0
ZXJJbikgewotICAgIGZpbGVFbnRyeSA9IGZpbGVFbnRyeUluOwotICAgIGZpbGVXcml0ZXIgPSBm
aWxlV3JpdGVySW47Ci0gICAgc2V0RmlsZUNvbnRlbnRzKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwg
dGVzdERhdGEsIHRlc3RTZWVrQmFja3dhcmQpOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRy
dWU7Ci1zZXR1cEFuZFJ1blRlc3QoMTAyNCwgJ2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZCcs
IHJ1blRlc3QpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9m
cy10ZXN0LXV0aWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDkyICswLDAgQEAKLWZ1bmN0aW9uIGJpbmRDYWxsYmFjayhvYmosIGNhbGxiYWNr
LCBhcmcxLCBhcmcyLCBhcmczKQotewotICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHsKLSAgICAg
ICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBjYWxsYmFjay5hcHBseShvYmos
IFthcmcxLCBhcmcyLCBhcmczXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNr
LmFwcGx5KG9iaiwgW2FyZywgYXJnMSwgYXJnMiwgYXJnM10pOwotICAgIH07Ci19Ci0KLS8vIFVz
YWdlOgotLy8gICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXI7Ci0vLwotLy8gICBoZWxwZXIu
cnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhpbmcgdGhhdCBldmVudHVhbGx5IGNhbGxzIGhl
bHBlci5kb25lKCk7ICovIH0pOwotLy8gICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBz
b21ldGhpbmcgdGhhdCBldmVudHVhbGx5IGNhbGxzIGhlbHBlci5kb25lKCk7ICovIH0pOwotLy8g
ICAuLi4KLS8vICAgaGVscGVyLmpvaW4oam9pbkNhbGxiYWNrKTsKLS8vCi12YXIgSm9pbkhlbHBl
ciA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLnBlbmRpbmdPcGVyYXRpb25zID0gW107Ci0gICAg
dGhpcy5wZW5kaW5nT3BlcmF0aW9uQ291bnQgPSAwOwotICAgIHRoaXMuam9pbkNhbGxiYWNrID0g
bnVsbDsKLQotICAgIHRoaXMucnVuID0gZnVuY3Rpb24ob3BlcmF0aW9uKQotICAgIHsKLSAgICAg
ICAgdGhpcy5wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICAgICAgb3BlcmF0aW9uKCk7Ci0g
ICAgfTsKLQotICAgIC8vIENhbGwgdGhpcyB3aGVuIGFuIG9wZXJhdGlvbiBpcyBkb25lLgotICAg
IHRoaXMuZG9uZSA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMucGVuZGluZ09wZXJh
dGlvbkNvdW50LS07Ci0gICAgICAgIGlmICh0aGlzLnBlbmRpbmdPcGVyYXRpb25Db3VudCA9PSAw
ICYmIHRoaXMuam9pbkNhbGxiYWNrKQotICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJhY2soKTsK
LSAgICB9OwotCi0gICAgLy8gVGhpcyBldmVudHVhbGx5IGNhbGxzIHRoZSBqb2luQ2FsbGJhY2sg
d2hlbiBoZWxwZXIuZG9uZSgpIGlzIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGhlbHBlci5ydW4o
KSBpcyBjYWxsZWQuCi0gICAgdGhpcy5qb2luID0gZnVuY3Rpb24oam9pbkNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMucGVuZGluZ09wZXJhdGlvbkNvdW50ID09IDApCi0gICAgICAg
ICAgICBqb2luQ2FsbGJhY2soKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5qb2lu
Q2FsbGJhY2sgPSBqb2luQ2FsbGJhY2s7Ci0gICAgfTsKLX07Ci0KLS8vIFJlbW92ZSBldmVyeXRo
aW5nIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuCi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9y
eShkaXJlY3RvcnksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciBS
ZW1vdmVBbGxJbkRpcmVjdG9yeUhlbHBlciA9IGZ1bmN0aW9uKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykgewotICAgICAgICB0aGlzLmVudHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIHRo
aXMuZG9uZSA9IGZhbHNlOwotICAgICAgICB0aGlzLnJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRo
aXMuc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9y
Q2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrOwotCi0gICAgICAgIHRoaXMuZW50cnlSZW1vdmVkQ2Fs
bGJhY2sgPSBiaW5kQ2FsbGJhY2sodGhpcywgZnVuY3Rpb24oZW50cnkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICgtLXRoaXMuZW50cmllc0NvdW50ID09IDAgJiYgdGhpcy5zdWNjZXNzQ2Fs
bGJhY2sgJiYgdGhpcy5kb25lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJh
Y2soKTsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IG51bGw7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuZW50cmllc0NhbGxiYWNrID0g
YmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgICAgIHRoaXMuZW50cmllc0NvdW50Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJpZXNb
aV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVj
dXJzaXZlbHkodGhpcy5lbnRyeVJlbW92ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsK
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVt
b3ZlKHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpCi0gICAgICAgICAgICAg
ICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJy
b3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmVudHJpZXNDb3VudCA+IDAp
Ci0gICAgICAgICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHRoaXMuc3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxi
YWNrKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMucmVtb3ZlQWxsSW5EaXJlY3Rvcnkg
PSBmdW5jdGlvbihkaXJlY3RvcnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMucmVhZGVy
ID0gZGlyZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwotICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVh
ZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAg
ICAgIH07Ci0gICAgfTsKLQotICAgIHZhciBoZWxwZXIgPSBuZXcgUmVtb3ZlQWxsSW5EaXJlY3Rv
cnlIZWxwZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIucmVt
b3ZlQWxsSW5EaXJlY3RvcnkoZGlyZWN0b3J5KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZnMtd29ya2VyLWNvbW1vbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMCwwIEBACi1m
dW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZGlyZWN0b3J5KSB7Ci0gICAgaWYgKCFk
aXJlY3RvcnkpCi0gICAgICAgIHJldHVybjsKLSAgICB2YXIgcmVhZGVyID0gZGlyZWN0b3J5LmNy
ZWF0ZVJlYWRlcigpOwotICAgIGRvIHsKLSAgICAgICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVh
ZEVudHJpZXMoKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAoZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKLSAgICAgICAg
ICAgICAgICBlbnRyaWVzW2ldLnJlbW92ZVJlY3Vyc2l2ZWx5KCk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZW1vdmUoKTsKLSAgICAgICAgfQotICAgIH0g
d2hpbGUgKGVudHJpZXMubGVuZ3RoKTsKLX0KLQotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cyAmJiAh
dGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVx
dWlyZXMgRmlsZVN5c3RlbSBBUEkuJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWNvcHkuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1jb3B5LmpzCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L29wLWNvcHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjU3ICswLDAgQEAKLXZhciB0ZXN0Q2Fz
ZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZpbGVTaW1wbGUnLAotICAgICAgICBw
cmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9Ci0gICAgICAgIF0sCi0gICAgICAg
IHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9h
L2InLCAnL2EnLCAnYycpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAg
ICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlEaXJlY3RvcnlTaW1w
bGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGly
ZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAg
ICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0
b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5
RmlsZVRvRGlmZmVyZW50RGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9y
eTp0cnVlfQotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAg
XSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScs
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAg
ICAgICBuYW1lOiAnQ29weUZpbGVXaXRoRW1wdHlOYW1lJywKLSAgICAgICAgcHJlY29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2EvYicsICcvYycsIG51bGwpOyB9
LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
L2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MvYid9Ci0gICAgICAgIF0sCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RmlsZVdpdGhFbXB0eU5hbWVUb1NhbWVEaXJlY3Rv
cnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2En
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hJywgbnVsbCwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBu
YW1lOiAnQ29weUZpbGVXaXRoU2FtZU5hbWUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hJywgJ2InLCBG
aWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5Rm9yTm9uRXhpc3RlbnRFbnRyeScsCi0g
ICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGly
ZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAg
IHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgn
L2EvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcv
YS9iJywgJy9jJywgJ2InLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0s
Ci0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlF
bnRyeVRvTm9uRXhpc3RlbnREaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2MnLCAnYicsIEZpbGVFcnJvci5O
T1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAg
IG5hbWU6ICdDb3B5RW50cnlUb0l0c0NoaWxkJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRl
c3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywg
Jy9hL2InLCAnZCcsIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hL2IvYycs
ICdkJywgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0s
Ci0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlSZWN1
cnNpdmUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYi9kJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy9iJywgJ2EnKTsgfSwK
LSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9i
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2QnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2IvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2In
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYS9iL2MnfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYS9iL2QnfSwKLSAgICAgICAgXSwKLSAgICB9LAot
ICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nQ29weUZpbGVUb0ZpbGUiLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EifSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJiIik7fQotICAg
ICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ0NvcHlEaXJlY3RvcnlUb0VtcHR5RGly
ZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Ii9hIiwgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hL2IifSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
XSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBl
ci5jb3B5KCIvYSIsIi8iLCJjIik7fQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIiwgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvYiJ9LAotICAgICAg
ICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdDb3B5RmlsZVRv
RGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9
LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNB
VElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGly
ZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTog
Ik92ZXJ3cml0aW5nQ29weURpcmVjdG9yeVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJiIixGaWxl
RXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTog
dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ0NvcHlGaWxlVG9Ob25lbXB0eURpcmVj
dG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czog
WwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImIi
LEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1l
OiAiT3ZlcndyaXRpbmdDb3B5RGlyZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAg
IHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5
OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoi
L2MvZCJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImMiLEZpbGVFcnJvci5JTlZBTElEX01P
RElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGly
ZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBd
LAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9vcC1nZXQtZW50cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9vcC1nZXQtZW50cnkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE1NSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAg
ICAgbmFtZTogJ0NyZWF0ZVNpbXBsZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRE
aXJlY3RvcnkoJy8nLCAnYScsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InLCB7Y3JlYXRlOnRydWV9KTsgfQot
ICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJ30s
Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDcmVhdGVOZXN0ZWQn
LAotICAgICAgICBwcmVjb25kaXRpb246IFsgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7Y3Jl
YXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RGlyZWN0b3J5KCcvYScsICdiJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EvYicsICdjJywge2NyZWF0ZTp0
cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVj
dG9yeSgnL2EvYi9jJywgJ2QnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EvYi9jL2QnLCAnZScsIHtjcmVhdGU6dHJ1
ZX0pOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hL2IvYy9kL2UnfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAg
ICAgICAgbmFtZTogJ0NyZWF0ZU5lc3RlZFdpdGhBYnNvbHV0ZVBhdGgnLAotICAgICAgICBwcmVj
b25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2R1bW15JywgaXNEaXJlY3Rvcnk6
dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hJywge2NyZWF0ZTp0
cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVj
dG9yeSgnL2R1bW15JywgJy9hL2InLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvZHVtbXknLCAnL2EvYi9jJywg
e2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hL2IvYy9kJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9kdW1teScsICcv
YS9iL2MvZC9lJywge2NyZWF0ZTp0cnVlfSk7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvZHVtbXknLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jL2QvZSd9LAotICAgICAgICBdLAot
ICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ3JlYXRlTmVzdGVkV2l0aFJlbGF0aXZlUGF0
aCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScs
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4vYics
IHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXREaXJlY3RvcnkoJy9hJywgJy4vLi4uJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4vYics
IHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXREaXJlY3RvcnkoJy9hJywgJy4uLy4uL2IvYycsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy9h
Ly4uLy4uL2QnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcvYS8uLi8uLi9iLy4vYy8uLi8uLi8uLi8u
Li8uLi9lJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4uL2YnLCB7Y3JlYXRlOnRydWV9KTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScs
ICcvYS8uLi8uLi4vZycsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EnLCAn
Li9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi8u
Li9iL2MudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9hLy4uLy4uL2QudHh0Jywge2NyZWF0ZTp0cnVl
fSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9h
JywgJy9hLy4uLy4uL2IvLi9jLy4uLy4uLy4uLy4uLy4uL2UudHh0Jywge2NyZWF0ZTp0cnVlfSk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywg
Jy4uLi9mLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcvYS8uLi8uLi4vZy50eHQnLCB7Y3JlYXRlOnRy
dWV9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9kJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9l
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9mJywgbm9uZXhp
c3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2YnLCBub25leGlzdGVudDp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2cnLCBub25leGlzdGVudDp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvZycsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYS9iLnR4dCd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi50eHQn
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYy50eHQnfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2QudHh0J30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9lLnR4dCd9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvZi50eHQnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvZi50eHQnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2cudHh0Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hL2cudHh0Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAgIG5hbWU6ICdHZXRFeGlzdGluZ0VudHJ5JywKLSAgICAgICAgcHJlY29uZGl0
aW9uOiBbIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycsICdhJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYicsIHtjcmVh
dGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRE
aXJlY3RvcnkoJy8nLCAnYScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2InKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0
aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAgIG5hbWU6ICdHZXROb25FeGlzdGVudCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWyBd
LAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXREaXJlY3RvcnkoJy8nLCAnYScsIHt9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYics
IHt9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycsICcvbm9uZXhpc3RlbnQvYScsIHtjcmVh
dGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICcvbm9uZXhpc3RlbnQvYicsIHtjcmVh
dGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfQotICAgICAgICBdLAotICAgICAg
ICBwb3N0Y29uZGl0aW9uOiBbIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRG
aWxlRm9yRGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICAgICAgdGVz
dHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycs
ICdhJywge30sIEZpbGVFcnJvci5UWVBFX01JU01BVENIX0VSUik7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnL2EnLCB7fSwgRmlsZUVycm9y
LlRZUEVfTUlTTUFUQ0hfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAg
ICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXREaXJlY3RvcnlGb3JGaWxl
JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJ30K
LSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlT
TUFUQ0hfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RGlyZWN0b3J5KCcvJywgJy9hJywge30sIEZpbGVFcnJvci5UWVBFX01JU01BVENIX0VSUik7IH0s
Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EnfQotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ3Jl
YXRlV2l0aEV4Y2x1c2l2ZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycsICdhJywge2NyZWF0ZTp0cnVlLCBl
eGNsdXNpdmU6dHJ1ZX0sIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InLCB7
Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0cnVlfSwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUik7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5q
cwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9vcC1nZXQtbWV0YWRhdGEuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjcgKzAsMCBAQAot
dmFyIHRlc3RDYXNlcyA9IFsKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRNZXRhZGF0YScsCi0g
ICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvdG1wJ30sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9maWxlMScsIHNpemU6MH0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9maWxlMicsIHNpemU6MTB9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZmlsZTMn
LCBzaXplOjkwfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy8nKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJy9hJywge2NyZWF0
ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1l
dGFkYXRhKCcvYScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRNZXRhZGF0YSgnL2ZpbGUxJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldE1ldGFkYXRhKCcvZmlsZTInKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy9maWxlMycpOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJy9iJywge2NyZWF0ZTp0cnVlfSk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcv
YicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy90
bXAnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRh
dGEoJy90bXAnLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLnNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCcvYS5yZXR1
cm5lZC5tb2RpZmljYXRpb25UaW1lJywgJy8ucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScpOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5zaG91bGRCZUdyZWF0ZXJU
aGFuT3JFcXVhbCgnL2IucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScsICcvLnJldHVybmVkLm1v
ZGlmaWNhdGlvblRpbWUnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJy9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRp
bWUnLCAnL2EucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScpOyB9Ci0gICAgICAgIF0sCi0gICAg
ICAgIHBvc3Rjb25kaXRpb246IFsgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LXBhcmVudC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1wYXJlbnQuanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
b3AtZ2V0LXBhcmVudC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyMSArMCwwIEBACi12YXIgdGVz
dENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ0dldFBhcmVudCcsCi0gICAgICAgIHBy
ZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0
czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy8n
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcv
YScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQo
Jy9hL2InKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFy
ZW50KCcvYS9iL2MnKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYi9jJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1tb3ZlLmpzCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUu
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUyICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0g
ICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBb
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2En
LCAnYycpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYicsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YS9jJ30KLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVEaXJl
Y3RvcnlTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2Ev
YicsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycp
OyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2InLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycs
IGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5h
bWU6ICdNb3ZlRmlsZVRvRGlmZmVyZW50RGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBp
c0RpcmVjdG9yeTp0cnVlfQotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9jJywgJ2QnKTsgfSwK
LSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9i
Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAg
ICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRoRW1wdHlO
YW1lJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwK
LSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
bW92ZSgnL2EvYicsICcvYycsIG51bGwpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29u
ZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2MvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAgIG5hbWU6ICdNb3ZlRmlsZVdpdGhFbXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAg
ICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9y
eTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3Zl
KCcvYS9iJywgJy9hJywgbnVsbCwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7
IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYid9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZp
bGVXaXRoU2FtZU5hbWUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICdNb3ZlRm9yTm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9jJywg
J2InLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVFbnRyeVRvTm9uRXhp
c3RlbnREaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJS
KTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3Zl
RW50cnlUb0l0c0NoaWxkJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9j
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hJywgJy9hL2InLCAnZCcs
IEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVy
cm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVSZWN1cnNpdmUnLAotICAg
ICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYi9kJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6
dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwK
LSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIG5v
bmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hJywgaXNEaXJlY3Rv
cnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iL2EvYicsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2IvYyd9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYi9hL2IvZCd9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBu
YW1lOiAiT3ZlcndyaXRpbmdNb3ZlRmlsZVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YiJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiKTt9Ci0gICAgICAgIF0sCi0gICAgICAg
IHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAg
XSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9y
eVRvRW1wdHlEaXJlY3RvcnkiLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OnRydWV9
LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImMiKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvYiJ9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOiIvYSIsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewot
ICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRmlsZVRvRGlyZWN0b3J5IiwKLSAgICAgICAg
cHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9LAotICAgICAgICBdLAotICAgICAg
ICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9h
IiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAg
XSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAg
ICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVj
dG9yeVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2Ii
fSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikge2hlbHBlci5tb3ZlKCIvYSIsIi8iLCJiIixGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTogdHJ1ZX0sCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6
ICJPdmVyd3JpdGluZ01vdmVGaWxlVG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoi
L2IvYyJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01P
RElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIs
IGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAg
ICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRGly
ZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0
b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAot
ICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1v
dmUoIi9hIiwiLyIsImMiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAg
ICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRo
OiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1yZWFkLWRpcmVjdG9yeS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29w
LXJlYWQtZGlyZWN0b3J5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDIzICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1l
OiAnUmVhZERpcmVjdG9yeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIH0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9kJywgfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2UnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2YnLCB9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvZycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2MnfSwKLSAg
ICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIucmVhZERpcmVjdG9yeSgnLycpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLnJlbW92ZSgnL2UnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIucmVtb3ZlKCcvZicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5yZWFkRGlyZWN0b3J5KCcvJyk7IH0KLSAgICAgICAgXSwKLSAgICB9LAotXTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3At
cmVtb3ZlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL29wLXJlbW92ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2MiArMCwwIEBA
Ci12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZVNpbXBsZScs
Ci0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlz
RGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0s
Ci0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LnJlbW92ZSgnL2EnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
cmVtb3ZlKCcvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5y
ZW1vdmUoJy8nLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfQotICAgICAg
ICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgbm9uZXhp
c3RlbnQ6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jl
bW92ZU5vblJlY3Vyc2l2ZVdpdGhDaGlsZHJlbicsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAg
ICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hL2MnLH0KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvYScsIEZpbGVFcnJvci5JTlZBTElE
X01PRElGSUNBVElPTl9FUlIpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246
IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYS9jJyx9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5h
bWU6ICdSZW1vdmVSZWN1cnNpdmVXaXRob3V0Q2hpbGRyZW4nLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIucmVtb3ZlUmVjdXJzaXZlbHkoJy9hJyk7IH0KLSAgICAgICAgXSwKLSAgICAgICAg
cG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50
OnRydWV9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnUmVtb3Zl
UmVjdXJzaXZlV2l0aENoaWxkcmVuJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYycsfQotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmVSZWN1cnNpdmVseSgnL2EnKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlUmVjdXJzaXZlbHkoJy8nLCBGaWxl
RXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBw
b3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3RlbnQ6
dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgfSwKLV07Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1jaGFycy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtY2hh
cnMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1jaGFycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1MiAr
MCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0
ZWRDaGFycycsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYWInLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsK
LSAgICAgICAgICAgIC8vIFRlc3QgZm9yIGRpZmZpY3VsdCBjaGFyYWN0ZXJzIGluICdwYXRoJyBw
YXJhbWV0ZXJzLgotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2E8YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E+YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E6
YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E/YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EqYicsIHtjcmVh
dGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ2EiYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2F8YicsIHtjcmVhdGU6dHJ1ZX0s
IDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnPGFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnOmFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnP2Fi
Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy8nLCAnKmFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnImFiJywge2NyZWF0
ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dEZpbGUoJy8nLCAnfGFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYjwnLCB7Y3JlYXRlOnRydWV9
LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgn
LycsICdhYjonLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYj8nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYion
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdhYiInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYnwnLCB7Y3JlYXRl
OnRydWV9LCAwKTsgfSwKLQotICAgICAgICAgICAgLy8gT25seSAnXFwnIGlzIGRpc2FsbG93ZWQu
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVxc
YicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9
LAotCi0gICAgICAgICAgICAvLyBUZXN0IGZvciBkaWZmaWN1bHQgY2hhcmFjdGVycyBpbiAnbmFt
ZScgcGFyYW1ldGVycy4KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29w
eSgnL2FiJywgJy8nLCAnIGE8YicsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5jb3B5KCcvYWInLCAnLycsICcgYTpiJywgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywgJyBhP2InLCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAn
IGEqYicsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5
KCcvYWInLCAnLycsICcgYSJiJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywgJyBhfGInLCAwKTsgfSwKLQotICAgICAgICAgICAg
Ly8gJ05hbWUnIHBhcmFtZXRlciBjYW5ub3QgY29udGFpbiAnLycgb3IgJ1xcJy4KLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnYS9iJywgRmls
ZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywgJ2FcXGInLCBGaWxlRXJyb3IuSU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYWInLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonYTxiJywgaXNEaXJlY3Rvcnk6ZmFsc2V9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicgYXxiJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAg
ICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3At
cmVzdHJpY3RlZC1uYW1lcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtbmFtZXMuanMJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1u
YW1lcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi12YXIgdGVzdENhc2VzID0g
WwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWROYW1lcycsCi0gICAgICAgIHByZWNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAg
ICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnLicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5TRUNVUklUWV9FUlIpOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJy4uJywg
e2NyZWF0ZTp0cnVlfSwgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnY29uJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnQ09OJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnY09u
LnR4dCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvY29OJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0K
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdwcm4n
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdQUk4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdQcm4nLCB7Y3JlYXRl
OnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0
RmlsZSgnLycsICdwUm4udHh0Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYS9wck4nLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfSwKLQotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRG
aWxlKCcvJywgJ2F1eCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0FVWCcsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J0F1eCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FVeC50eHQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2F1
WCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbnVsJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnTlVMJywge2Ny
ZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnTnVsJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnblVsLnR4dCcsIHtjcmVhdGU6
dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRG
aWxlKCcvJywgJ2EvbnVMJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdjb20xJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnQ09NMicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0NvbTQnLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdj
T003LmZvbycsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvY29NOScsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
bHB0MScsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0xQVDInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdMcHQ0Jywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnbFBUNy5mb28nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2xwVDknLCB7
Y3JlYXRlOnRydWV9LCAwKTsgfSwKLQotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2ZvbyAnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdmb29cbicsIHtjcmVh
dGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ2Zvby4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2EnLCAnLycsICdmb28gICcsIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYScsICcvJywgJ2Zv
b1x0JywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHko
Jy9hJywgJy8nLCAnZm9vLi4nLCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIubW92ZSgnL2EnLCAnLycsICdmb28gICAgJywgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9iJywgJy8nLCAnZm9vXHRcdCcsIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYycsICcvJywg
J2Zvby4uLi4uJywgMCk7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2ZvbyAgICAnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2Zvb1x0XHQnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2Zvby4uLi4uJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAg
XSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvb3AtcmVzdHJpY3RlZC11bmljb2RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC11bmljb2RlLmpzCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJl
c3RyaWN0ZWQtdW5pY29kZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi12YXIg
dGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRVbmljb2RlQ2hh
cnMnLAotICAgICAgICBwcmVjb25kaXRpb246IFsgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYicsIHtjcmVh
dGU6dHJ1ZX0pOyB9LAotCi0gICAgICAgICAgICAvLyBFbWJlZGRlZCBOVUxzIGFyZW4ndCBhbGxv
d2VkOyBhbnl0aGluZyBlbHNlIGluIHRoZSBmaXJzdCAzMiBpcyBmYWlyIGdhbWUuCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwMGInLCB7
Y3JlYXRlOnRydWV9LCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDAx
YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDJiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAw
M2InLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA0YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAw
MDViJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwNmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUw
MDA3YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDhiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1
MDAwOWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDBhYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Fc
dTAwMGJiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwY2InLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdh
XHUwMDBkYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMGViJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
YVx1MDAwZmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDEwYicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2FcdTAwMTFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxMmInLCB7Y3JlYXRlOnRydWV9LCAw
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycs
ICdhXHUwMDEzYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTRiJywge2NyZWF0ZTp0cnVlfSwg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnYVx1MDAxNWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDE2YicsIHtjcmVhdGU6dHJ1ZX0s
IDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
JywgJ2FcdTAwMTdiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxOGInLCB7Y3JlYXRlOnRydWV9
LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgn
LycsICdhXHUwMDE5YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMWFiJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnYVx1MDAxYmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDFjYicsIHtjcmVhdGU6dHJ1
ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2FcdTAwMWRiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5j
dGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxZWInLCB7Y3JlYXRlOnRy
dWV9LCAwKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hYid9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0
cy1oZWxwZXIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQx
MyArMCwwIEBACi0vLyBIZWxwZXIgcm91dGluZS4KLWZ1bmN0aW9uIHRvU3RyaW5nKG9iaikgewot
ICAgIGlmIChvYmogPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIHJldHVybiAidW5kZWZpbmVkIjsK
LSAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHsKLSAgICAgICAgaWYgKG9i
ai5sZW5ndGggIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICB2YXIgc3RyaW5nQXJyYXkgPSBb
XTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgICAgIHN0cmluZ0FycmF5LnB1c2godG9TdHJpbmcob2JqW2ldKSk7Ci0gICAgICAg
ICAgICBzdHJpbmdBcnJheS5zb3J0KCk7Ci0gICAgICAgICAgICByZXR1cm4gJ1snICsgc3RyaW5n
QXJyYXkuam9pbignLFxuICcpICsgJ10nOwotICAgICAgICB9IGVsc2UgaWYgKG9iai5pc0RpcmVj
dG9yeSB8fCBvYmouaXNGaWxlKSB7Ci0gICAgICAgICAgICByZXR1cm4gJ0VOVFJZIHtwYXRoOicg
KyBvYmouZnVsbFBhdGggKyAnIG5hbWU6JyArIG9iai5uYW1lICsgKG9iai5pc0RpcmVjdG9yeSA/
ICcgdHlwZTpESVJFQ1RPUlknIDogJyB0eXBlOkZJTEUnKSArICd9JzsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHJldHVybiBvYmogKyAiIjsKLSAgICAgICAgfQotICAgIH0gZWxzZQot
ICAgICAgICByZXR1cm4gb2JqICsgIiI7Ci19Ci0KLS8vIENyZWF0ZXMgYSB0ZXN0IGVudmlyb25t
ZW50IGZvciB0aGUgZ2l2ZW4gZW50cmllcyB3aGVyZSBlbnRyaWVzIGlzIGFuIGFycmF5IG9mIHtm
dWxsUGF0aDpTdHJpbmcsIGlzRGlyZWN0b3J5OmJvb2xlYW59IG9iamVjdC4KLS8vIFdoZW4gdGhl
IHdvcmxkIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LCBzdWNjZXNzQ2FsbGJhY2sgaXMgY2FsbGVk
IHdpdGggYW4gb2JqZWN0IHRoYXQgaG9sZHMgYWxsIHRoZSBjcmVhdGVkIGVudHJ5IG9iamVjdHMu
Ci1mdW5jdGlvbiBjcmVhdGVUZXN0RW52aXJvbm1lbnQoZmlsZVN5c3RlbSwgZW50cmllcywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQotewotICAgIHZhciBIZWxwZXIgPSBmdW5jdGlv
bihmaWxlU3lzdGVtLCBlbnRyaWVzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi0g
ICAgewotICAgICAgICB0aGlzLmZpbGVTeXN0ZW0gPSBmaWxlU3lzdGVtOwotICAgICAgICB0aGlz
LmVudHJpZXMgPSBlbnRyaWVzOwotICAgICAgICB0aGlzLmN1cnJlbnQgPSAwOwotICAgICAgICB0
aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lcnJv
ckNhbGxiYWNrID0gZXJyb3JDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHt9
OwotCi0gICAgICAgIHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxiYWNrID0gZnVuY3Rpb24oZW50cnks
IHNpemUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5pc0ZpbGUgJiYgc2l6ZSA+
IDApIHsKLSAgICAgICAgICAgICAgICBlbnRyeS5jcmVhdGVXcml0ZXIoYmluZENhbGxiYWNrKHRo
aXMsIGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAgICAgICAgICAgICAgICB3cml0ZXIudHJ1bmNh
dGUoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbmVycm9yID0gYmluZENhbGxi
YWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICAgICAgICAg
IHdyaXRlci5vbndyaXRlZW5kID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeS5mdWxsUGF0aF0gPSBl
bnRyeTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnkuZnVs
bFBhdGggKyAnLnNpemUnXSA9IHNpemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNy
ZWF0ZU5leHRFbnRyeSgpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAg
ICB9KSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjaykpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuZW52
aXJvbm1lbnRbZW50cnkuZnVsbFBhdGhdID0gZW50cnk7Ci0gICAgICAgICAgICB0aGlzLmVudmly
b25tZW50W2VudHJ5LmZ1bGxQYXRoICsgJy5zaXplJ10gPSAwOwotICAgICAgICAgICAgdGhpcy5j
cmVhdGVOZXh0RW50cnkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY3JlYXRlRXJyb3JD
YWxsYmFjayA9IGZ1bmN0aW9uKGVycm9yLCBlbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAg
dGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIHdoaWxl
IGNyZWF0aW5nICcgKyB0b1N0cmluZyhlbnRyeSkpOwotICAgICAgICAgICAgdGhpcy5lcnJvckNh
bGxiYWNrKGVycm9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY3JlYXRlTmV4dEVudHJ5
ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ID49
IHRoaXMuZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxs
YmFjayh0aGlzLmVudmlyb25tZW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLmVudHJpZXNbdGhpcy5jdXJyZW50
KytdOwotICAgICAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgICAg
IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoZW50cnkuZnVsbFBhdGgsIHtjcmVhdGU6dHJ1
ZX0sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLmNyZWF0ZVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRD
YWxsYmFjayh0aGlzLCB0aGlzLmNyZWF0ZUVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0
aCwge2NyZWF0ZTp0cnVlfSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlU3VjY2Vzc0Nh
bGxiYWNrLCBlbnRyeS5zaXplKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JD
YWxsYmFjaykpOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICBpZiAoIWVudHJpZXMgfHwgIWVu
dHJpZXMubGVuZ3RoKSB7Ci0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh7fSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBIZWxwZXIoZmlsZVN5c3RlbSwgZW50
cmllcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIuY3JlYXRl
TmV4dEVudHJ5KCk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeVRlc3RFbnZpcm9ubWVudChmaWxlU3lz
dGVtLCBlbnRyaWVzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi17Ci0gICAgdmFy
IEhlbHBlciA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW0sIGVudHJpZXMsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMuZmlsZVN5c3RlbSA9IGZpbGVTeXN0
ZW07Ci0gICAgICAgIHRoaXMuZW50cmllcyA9IGVudHJpZXM7Ci0gICAgICAgIHRoaXMuY3VycmVu
dCA9IDA7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwot
ICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrOwotICAgICAgICB0aGlz
LmV4cGVjdGVkTm9uZXhpc3RlbnQgPSBmYWxzZTsKLQotICAgICAgICB0aGlzLnZlcmlmeVN1Y2Nl
c3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
dGhpcy5leHBlY3RlZE5vbmV4aXN0ZW50KSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgn
Rm91bmQgdW5leHBlY3RlZCBlbnRyeSAnICsgZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAg
ICAgIHRoaXMuZXJyb3JDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1ZlcmlmaWVkIGVudHJ5OiAnICsgdG9T
dHJpbmcoZW50cnkpKTsKLSAgICAgICAgICAgIHRoaXMudmVyaWZ5TmV4dEVudHJ5KCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB0aGlzLnZlcmlmeUVycm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihlcnJv
ciwgZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVkTm9uZXhp
c3RlbnQpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdWZXJpZmllZCBlbnRyeSBkb2Vz
IE5PVCBleGlzdDogJyArIGVudHJ5LmZ1bGxQYXRoKTsKLSAgICAgICAgICAgICAgICB0aGlzLnZl
cmlmeU5leHRFbnRyeSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChlcnJvciA9PSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUikKLSAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCdOb3QgZm91bmQ6ICcgKyBlbnRyeS5mdWxsUGF0aCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0
ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIGZvciAnICsgZW50cnkuZnVsbFBhdGgpOwotICAg
ICAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrKGVycm9yKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMudmVyaWZ5TmV4dEVudHJ5ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5jdXJyZW50ID49IHRoaXMuZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMuZW50cmllc1t0aGlzLmN1
cnJlbnQrK107Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQgPSBlbnRyeS5u
b25leGlzdGVudDsKLSAgICAgICAgICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkKLSAgICAgICAg
ICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KGVudHJ5LmZ1bGxQYXRoLCB7fSwg
YmluZENhbGxiYWNrKHRoaXMsIHRoaXMudmVyaWZ5U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxi
YWNrKHRoaXMsIHRoaXMudmVyaWZ5RXJyb3JDYWxsYmFjaywgZW50cnkpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxs
UGF0aCwge30sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayks
IGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnZlcmlmeUVycm9yQ2FsbGJhY2ssIGVudHJ5KSk7Ci0g
ICAgICAgIH07Ci0gICAgfTsKLQotICAgIGlmICghZW50cmllcyB8fCAhZW50cmllcy5sZW5ndGgp
IHsKLSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgdmFyIGhlbHBlciA9IG5ldyBIZWxwZXIoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIudmVyaWZ5TmV4dEVudHJ5KCk7Ci19
Ci0KLS8vIHRlc3RDYXNlIG11c3QgaGF2ZSBwcmVjb25kaXRpb24sIHBvc3Rjb25kaXRpb24gYW5k
IHRlc3QgZnVuY3Rpb24gZmllbGQuCi0vLyAoU2VlIHJlc291cmNlcy9vcC0qLmpzIGZvciBleGFt
cGxlcy4pCi1mdW5jdGlvbiBydW5PcGVyYXRpb25UZXN0KGZpbGVTeXN0ZW0sIHRlc3RDYXNlLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi17Ci0gICAgdmFyIE9wZXJhdGlvblRlc3RI
ZWxwZXIgPSBmdW5jdGlvbihmaWxlU3lzdGVtLCB0ZXN0Q2FzZSwgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5maWxlU3lzdGVtID0gZmlsZVN5c3Rl
bTsKLSAgICAgICAgdGhpcy50ZXN0Q2FzZSA9IHRlc3RDYXNlOwotICAgICAgICB0aGlzLnN1Y2Nl
c3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNr
ID0gZXJyb3JDYWxsYmFjazsKLSAgICAgICAgdGhpcy5zdGFnZSA9ICcnOwotICAgICAgICB0aGlz
LmVudmlyb25tZW50ID0ge307Ci0gICAgICAgIHRoaXMuY3VycmVudFRlc3QgPSAwOwotCi0gICAg
ICAgIHRoaXMuY3VycmVudFJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMucmVhZEVudHJpZXMg
PSBbXTsKLQotICAgICAgICB0aGlzLmdldFN5bWJvbFN0cmluZyA9IGZ1bmN0aW9uKHN5bWJvbCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICd0aGlzLmVudmlyb25tZW50WyInICsgc3lt
Ym9sICsgJyJdJzsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRlc3RTdWNjZXNzQ2FsbGJh
Y2sgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3Rl
ZEVycm9yQ29kZSkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyAr
IHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBz
dWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRo
aXMuZW50cnkgPSBudWxsOwotICAgICAgICB0aGlzLnRlc3RHZXRTdWNjZXNzQ2FsbGJhY2sgPSBm
dW5jdGlvbihlbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCF0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnU3VjY2VlZGVkOiAnICsg
dGhpcy5zdGFnZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnRyeSA9IGVudHJ5OwotICAgICAg
ICAgICAgICAgIHNob3VsZEJlLmFwcGx5KHRoaXMsIFsndGhpcy5lbnZpcm9ubWVudFt0aGlzLmVu
dHJ5LmZ1bGxQYXRoXS5mdWxsUGF0aCcsICciJyArIGVudHJ5LmZ1bGxQYXRoICsgJyInXSk7Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25tZW50W3Ro
aXMuZW50cnkuZnVsbFBhdGhdLmlzRmlsZSArICIiJywgJyInICsgZW50cnkuaXNGaWxlICsgJyIn
XSk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25t
ZW50W3RoaXMuZW50cnkuZnVsbFBhdGhdLmlzRGlyZWN0b3J5ICsgIiInLCAnIicgKyBlbnRyeS5p
c0RpcmVjdG9yeSArICciJ10pOwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsK
LSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0
ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAg
ICAgIHRoaXMudGVzdENyZWF0ZVN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZXhwZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCdTdWNjZWVkZWQ6ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5LmZ1bGxQYXRoXSA9IGVudHJ5OwotICAg
ICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyAr
IHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMudGVzdEdldFBhcmVudFN1
Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIXRoaXMuZXhwZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCdTdWNjZWVkZWQ6ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygnUGFy
ZW50IGVudHJ5OiAnICsgdG9TdHJpbmcoZW50cnkpKTsKLSAgICAgICAgICAgICAgICB0aGlzLnJ1
bk5leHRUZXN0KCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdVbmV4cGVjdGVkbHkgc3VjY2VlZGVkIHdoaWxlICcgKyB0aGlzLnN0YWdlKTsKLSAgICAg
ICAgfTsKLQotICAgICAgICB0aGlzLnRlc3RSZWFkRW50cmllc1N1Y2Nlc3NDYWxsYmFjayA9IGZ1
bmN0aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVk
RXJyb3JDb2RlKQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNj
ZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotCi0gICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkRW50
cmllcy5wdXNoKGVudHJpZXNbaV0pOwotCi0gICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWFkZXIucmVhZEVudHJpZXMoYmluZENh
bGxiYWNrKHRoaXMsIHRoaXMudGVzdFJlYWRFbnRyaWVzU3VjY2Vzc0NhbGxiYWNrKSwgYmluZENh
bGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRl
ZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgZGVidWcoJ0VudHJpZXM6ICcgKyB0b1N0
cmluZyh0aGlzLnJlYWRFbnRyaWVzKSk7Ci0gICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy50ZXN0TWV0YWRhdGFTdWNjZXNzQ2FsbGJhY2sg
PSBmdW5jdGlvbihtZXRhZGF0YSwgZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
dGhpcy5leHBlY3RlZEVycm9yQ29kZSkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1
Y2NlZWRlZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgICAgIHZhciBzeW1ib2wgPSBl
bnRyeSArICcucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSc7Ci0gICAgICAgICAgICAgICAgdGhp
cy5lbnZpcm9ubWVudFtzeW1ib2xdID0gbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZTsKLSAgICAg
ICAgICAgICAgICB2YXIgZW50cnlNZXRhZGF0YVN0cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3RyaW5n
KHN5bWJvbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5ICE9ICcvJykgewotICAgICAgICAg
ICAgICAgICAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbC5hcHBseSh0aGlzLCBbZW50cnlN
ZXRhZGF0YVN0cmluZywgJ3RoaXMucm91bmRlZFN0YXJ0RGF0ZSddKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhLnNpemUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeSArICcucmV0dXJuZWQuc2l6ZSddID0gbWV0YWRh
dGEuc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGVudHJ5U2l6ZVN0cmluZyA9IHRoaXMu
Z2V0U3ltYm9sU3RyaW5nKGVudHJ5ICsgJy5yZXR1cm5lZC5zaXplJyk7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBleHBlY3RlZFNpemVTdHJpbmcgPSB0aGlzLmdldFN5bWJvbFN0cmluZyhlbnRy
eSArICcuc2l6ZScpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZS5hcHBseSh0aGlzLCBb
ZXhwZWN0ZWRTaXplU3RyaW5nLCBlbnRyeVNpemVTdHJpbmddKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgdGhpcy5ydW5OZXh0VGVzdCgpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZGx5IHN1Y2NlZWRlZCB3aGls
ZSAnICsgdGhpcy5zdGFnZSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy50ZXN0RXJyb3JD
YWxsYmFjayA9IGZ1bmN0aW9uKGVycm9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhp
cy5leHBlY3RlZEVycm9yQ29kZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlLmFwcGx5KHRo
aXMsIFsndGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiJywgJyInICsgZXJyb3IuY29kZSArICci
J10pOwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3Ig
JyArIGVycm9yLmNvZGUgKyAnIHdoaWxlICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAg
ICB0aGlzLmVycm9yQ2FsbGJhY2soZXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9Owot
Ci0gICAgICAgIC8vIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAgICAgdGhpcy5nZXRGaWxlID0gZnVuY3Rpb24oZW50
cnksIHBhdGgsIGZsYWdzLCBleHBlY3RlZEVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9IGV4cGVjdGVkRXJyb3JDb2RlOwotICAgICAgICAg
ICAgdGhpcy5zdGFnZSA9ICciJyArIGVudHJ5ICsgJyIuZ2V0RmlsZSgiJyArIHBhdGggKyAnIikn
OwotICAgICAgICAgICAgdmFyIHN1Y2Nlc3NDYWxsYmFjayA9IChmbGFncyAmJiBmbGFncy5jcmVh
dGUpID8gdGhpcy50ZXN0Q3JlYXRlU3VjY2Vzc0NhbGxiYWNrIDogdGhpcy50ZXN0R2V0U3VjY2Vz
c0NhbGxiYWNrOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uZ2V0RmlsZShw
YXRoLCBmbGFncywgYmluZENhbGxiYWNrKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxs
YmFjayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgdGhpcy5nZXREaXJlY3RvcnkgPSBmdW5jdGlvbihlbnRyeSwgcGF0aCwgZmxhZ3MsIGV4cGVj
dGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JD
b2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsg
ZW50cnkgKyAnIi5nZXREaXJlY3RvcnkoIicgKyBwYXRoICsgJyIpJzsKLSAgICAgICAgICAgIHZh
ciBzdWNjZXNzQ2FsbGJhY2sgPSAoZmxhZ3MgJiYgZmxhZ3MuY3JlYXRlKSA/IHRoaXMudGVzdENy
ZWF0ZVN1Y2Nlc3NDYWxsYmFjayA6IHRoaXMudGVzdEdldFN1Y2Nlc3NDYWxsYmFjazsKLSAgICAg
ICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdldERpcmVjdG9yeShwYXRoLCBmbGFncywg
YmluZENhbGxiYWNrKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0
aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXRQ
YXJlbnQgPSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0ZWRFcnJvckNvZGUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgPSBleHBlY3RlZEVycm9yQ29kZTsKLSAg
ICAgICAgICAgIHRoaXMuc3RhZ2UgPSAnIicgKyBlbnRyeSArICciLmdldFBhcmVudCgpJzsKLSAg
ICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdldFBhcmVudChiaW5kQ2FsbGJhY2so
dGhpcywgdGhpcy50ZXN0R2V0UGFyZW50U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRo
aXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlz
LmdldE1ldGFkYXRhID0gZnVuY3Rpb24oZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNv
ZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5nZXRNZXRhZGF0
YSgpJzsKLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdldE1ldGFkYXRhKGJp
bmRDYWxsYmFjayh0aGlzLCB0aGlzLnRlc3RNZXRhZGF0YVN1Y2Nlc3NDYWxsYmFjaywgZW50cnkp
LCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0RXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9
OwotCi0gICAgICAgIHRoaXMucmVtb3ZlID0gZnVuY3Rpb24oZW50cnksIGV4cGVjdGVkRXJyb3JD
b2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhw
ZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAn
Ii5yZW1vdmUoKSc7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmUo
YmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFj
ayh0aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
dGhpcy5yZW1vdmVSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKGVudHJ5LCBleHBlY3RlZEVycm9yQ29k
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9IGV4cGVj
dGVkRXJyb3JDb2RlOwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICciJyArIGVudHJ5ICsgJyIu
cmVtb3ZlUmVjdXJzaXZlbHkoKSc7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5
XS5yZW1vdmVSZWN1cnNpdmVseShiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0Nh
bGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAg
ICAgICAgfTsKLQotICAgICAgICB0aGlzLnJlYWREaXJlY3RvcnkgPSBmdW5jdGlvbihlbnRyeSwg
ZXhwZWN0ZWRFcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0ZWRF
cnJvckNvZGUgPSBleHBlY3RlZEVycm9yQ29kZTsKLSAgICAgICAgICAgIHRoaXMucmVhZEVudHJp
ZXMgPSBbXTsKLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAnIicgKyBlbnRyeSArICciLmNyZWF0
ZVJlYWRlcigpLnJlYWRFbnRyaWVzKCknOwotICAgICAgICAgICAgdGhpcy5jdXJyZW50UmVhZGVy
ID0gdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgICAgICB0
aGlzLmN1cnJlbnRSZWFkZXIucmVhZEVudHJpZXMoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVz
dFJlYWRFbnRyaWVzU3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVz
dEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLmNvcHkgPSBmdW5j
dGlvbihlbnRyeSwgZGVzdGluYXRpb25QYXJlbnQsIG5ld05hbWUsIGV4cGVjdGVkRXJyb3JDb2Rl
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0
ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5j
b3B5VG8oIicgKyBkZXN0aW5hdGlvblBhcmVudCArICciLCAiJyArIG5ld05hbWUgKyAnIiknOwot
ICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uY29weVRvKHRoaXMuZW52aXJvbm1l
bnRbZGVzdGluYXRpb25QYXJlbnRdLCBuZXdOYW1lLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50
ZXN0U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2Fs
bGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLm1vdmUgPSBmdW5jdGlvbihlbnRy
eSwgZGVzdGluYXRpb25QYXJlbnQsIG5ld05hbWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNv
ZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5tb3ZlVG8oIicg
KyBkZXN0aW5hdGlvblBhcmVudCArICciLCAiJyArIG5ld05hbWUgKyAnIiknOwotICAgICAgICAg
ICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0ubW92ZVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGlu
YXRpb25QYXJlbnRdLCBuZXdOYW1lLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vz
c0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsK
LSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnNob3VsZEJlID0gZnVuY3Rpb24oc3ltYm9sMSwg
c3ltYm9sMikKLSAgICAgICAgewotICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgW3Ro
aXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJvbDEpLCB0aGlzLmdldFN5bWJvbFN0cmluZyhzeW1ib2wy
KV0pOwotICAgICAgICAgICAgdGhpcy5ydW5OZXh0VGVzdCgpOwotICAgICAgICB9OwotCi0gICAg
ICAgIHRoaXMuc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwgPSBmdW5jdGlvbihzeW1ib2wxLCBz
eW1ib2wyKQotICAgICAgICB7Ci0gICAgICAgICAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVh
bC5hcHBseSh0aGlzLCBbdGhpcy5nZXRTeW1ib2xTdHJpbmcoc3ltYm9sMSksIHRoaXMuZ2V0U3lt
Ym9sU3RyaW5nKHN5bWJvbDIpXSk7Ci0gICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgdGhpcy5zdGFydCA9IGZ1bmN0
aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9ICcn
OwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICdyZXNldHRpbmcgZmlsZXN5c3RlbSc7Ci0gICAg
ICAgICAgICAvLyBSZWNvcmQgcm91bmRlZCBzdGFydCBkYXRlIChjdXJyZW50IHRpbWUgbWludXMg
OTk5IG1zZWMpIGhlcmUgZm9yIHRoZSBjb21wYXJpc29uLiBFbnRyeS5nZXRNZXRhZGF0YSgpIG1h
eSByZXR1cm4gdGhlIGxhc3QgbW9kIHRpbWUgaW4gc2Vjb25kcyBhY2N1cmFjeSB3aGlsZSBuZXcg
RGF0ZSgpIGlzIG1pbGxpc2Vjb25kcyBhY2N1cmFjeS4KLSAgICAgICAgICAgIHRoaXMucm91bmRl
ZFN0YXJ0RGF0ZSA9IG5ldyBEYXRlKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSA5OTkpOwotICAg
ICAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkodGhpcy5maWxlU3lzdGVtLnJvb3QsIGJpbmRD
YWxsYmFjayh0aGlzLCB0aGlzLnNldFVwKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVy
cm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnNldFVwID0gZnVuY3Rp
b24oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gJyc7
Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJ3NldHRpbmcgdXAgdGVzdCBwcmVjb25kaXRpb24n
OwotICAgICAgICAgICAgY3JlYXRlVGVzdEVudmlyb25tZW50KHRoaXMuZmlsZVN5c3RlbSwgdGhp
cy50ZXN0Q2FzZS5wcmVjb25kaXRpb24sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnJ1blRlc3Rz
KSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAg
fTsKLQotICAgICAgICB0aGlzLnJ1bk5leHRUZXN0ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50VGVzdCA+PSB0aGlzLnRlc3RDYXNlLnRlc3RzLmxl
bmd0aCkgewotICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy50ZXN0Q2FzZS50ZXN0c1t0
aGlzLmN1cnJlbnRUZXN0KytdKHRoaXMpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMucnVu
VGVzdHMgPSBmdW5jdGlvbihlbnZpcm9ubWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50OwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVu
dFsnLyddID0gdGhpcy5maWxlU3lzdGVtLnJvb3Q7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRU
ZXN0ID0gMDsKLSAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgfTsKLQot
ICAgICAgICB0aGlzLnZlcmlmeSA9IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAg
dGhpcy5leHBlY3RlZEVycm9yQ29kZSA9ICcnOwotICAgICAgICAgICAgaWYgKCF0aGlzLnRlc3RD
YXNlLnBvc3Rjb25kaXRpb24pIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFj
aygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRoaXMuc3RhZ2UgPSAndmVyaWZ5aW5nIHRlc3QgcG9zdGNvbmRpdGlvbic7Ci0gICAgICAgICAg
ICB2ZXJpZnlUZXN0RW52aXJvbm1lbnQodGhpcy5maWxlU3lzdGVtLCB0aGlzLnRlc3RDYXNlLnBv
c3Rjb25kaXRpb24sIHRoaXMuc3VjY2Vzc0NhbGxiYWNrLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhp
cy50ZXN0RXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB2YXIgaGVs
cGVyID0gbmV3IE9wZXJhdGlvblRlc3RIZWxwZXIoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgaGVscGVyLnN0YXJ0KCk7Ci19Ci0KLXZh
ciBjdXJyZW50VGVzdCA9IDA7Ci12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci1mdW5jdGlvbiBydW5O
ZXh0VGVzdCgpIHsKLSAgICBpZiAoY3VycmVudFRlc3QgPj0gdGVzdENhc2VzLmxlbmd0aCkgewot
ICAgICAgICBkZWJ1ZygnRmluaXNoZWQgcnVubmluZyB0ZXN0cy4nKTsKLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgdGVzdENhc2UgPSB0
ZXN0Q2FzZXNbY3VycmVudFRlc3QrK107Ci0gICAgZGVidWcoJyogUnVubmluZzogJyArIHRlc3RD
YXNlLm5hbWUpOwotICAgIHJ1bk9wZXJhdGlvblRlc3QoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHJ1
bk5leHRUZXN0LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhl
cnJvcikgewotICAgIGlmIChlcnJvciAmJiBlcnJvci5jb2RlKQotICAgICAgICB0ZXN0RmFpbGVk
KCdHb3QgZXJyb3IgJyArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1m
dW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpCi17Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwot
ICAgIHJ1bk5leHRUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9zaGFyZWQtd29ya2VyLXN0dWIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXN0dWIuanMJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2hhcmVkLXdvcmtl
ci1zdHViLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotLy8gV2UgZG9uJ3Qgc3Rh
cnQganMtdGVzdC1wcmUuanMgZGlyZWN0bHkgYXMgdGhlIHdvcmtlciBzY3JpcHQgYmVjYXVzZSBp
dCBzY3Jld3MKLS8vIHVwIHRoZSBiYXNlIG9mIGFsbCByZWxhdGl2ZSBwYXRocyBwYXNzZWQgdG8g
aW1wb3J0U2NyaXB0cy4KLWltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcycpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9z
aW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5qcwkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUt
cGVyc2lzdGVudC1zeW5jLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLWlmICh0
aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMt
d29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10
ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
U3luYyBQRVJTSVNURU5UIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVz
dEZpbGVTeXN0ZW1TeW5jKFBFUlNJU1RFTlQsIDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkg
b2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOiIgKyBmaWxlU3lzdGVtLm5hbWUpOwotc2hv
dWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCIpOwotc2hvdWxkQmUoImZpbGVT
eXN0ZW0ucm9vdC5mdWxsUGF0aCIsICciLyInKTsKLWZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBs
ZS1wZXJzaXN0ZW50LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDI1ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oInJl
cXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVzdC4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBu
dWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9y
IG9jY3VyZWQgd2hpbGUgcmVxdWVzdGluZyBhIFBFUlNJU1RFTlQgZmlsZSBzeXN0ZW06IiArIGVy
cm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2Fs
bGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxs
eSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCIpOwotICAgIHNob3Vs
ZEJlKCJmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGgiLCAnIi8iJyk7Ci0gICAgZmluaXNoSlNUZXN0
KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtKFBFUlNJU1RFTlQsIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
c2ltcGxlLXJlYWRvbmx5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZWFkb25seS5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSw0OSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJG
aWxlU3lzdGVtIEFQSSByZWFkb25seSBhdHRyaWJ1dGVzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lz
dGVtOwotdmFyIGZpbGVFbnRyeTsKLXZhciBmaWxlTWV0YWRhdGE7Ci0KLWZ1bmN0aW9uIHNldFJl
YWRvbmx5UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQotewotICAgIG9sZFZhbHVlID0gZXZhbChw
cm9wZXJ0eSk7Ci0gICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgIiAr
IHByb3BlcnR5KTsKLSAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsgIiA9ICIgKyB2YWx1ZSk7Ci0g
ICAgbmV3VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAgICBpZiAob2xkVmFsdWUgPT0gbmV3VmFs
dWUpIHsKLSAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIgaXMgc3RpbGwgIiArIG9sZFZh
bHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKHByb3BlcnR5ICsgIiB2YWx1
ZSB3YXMgY2hhbmdlZCIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnIp
IHsKLSAgdGVzdEZhaWxlZChlcnIpOwotICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24g
Z2V0RmlsZUNhbGxiYWNrKGVudHJ5KSB7Ci0gIGZpbGVFbnRyeSA9IGVudHJ5OwotICBzZXRSZWFk
b25seVByb3BlcnR5KCJmaWxlRW50cnkuaXNGaWxlIiwgImZhbHNlIik7Ci0gIHNldFJlYWRvbmx5
UHJvcGVydHkoImZpbGVFbnRyeS5pc0RpcmVjdG9yeSIsICJ0cnVlIik7Ci0gIHNldFJlYWRvbmx5
UHJvcGVydHkoImZpbGVFbnRyeS5uYW1lIiwgIidiYXInIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVy
dHkoImZpbGVFbnRyeS5mdWxsUGF0aCIsICInYmFyJyIpOwotICBzZXRSZWFkb25seVByb3BlcnR5
KCJmaWxlRW50cnkuZmlsZXN5c3RlbSIsICJudWxsIik7Ci0gIGZpbmlzaEpTVGVzdCgpOwotfQot
Ci1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgZmlsZVN5c3RlbSA9IGZzOwotICBz
ZXRSZWFkb25seVByb3BlcnR5KCJmaWxlU3lzdGVtLm5hbWUiLCAiJ2JhciciKTsKLSAgcm9vdCA9
IGV2YWxBbmRMb2coInJvb3QgPSBmaWxlU3lzdGVtLnJvb3QiKTsKLSAgZXZhbEFuZExvZygicm9v
dC5nZXRGaWxlKCdmb28nLCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxlQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spIik7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVk
LWFyZ3VtZW50cy1nZXRkaXJlY3RvcnkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1n
ZXRkaXJlY3RvcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMu
aW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3Jr
ZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3Qt
dXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5RW50cnkgcmVxdWlyZWQgYXJn
dW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJy
b3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVl
c3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxl
U3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkg
RmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygi
cm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LmdldERpcmVj
dG9yeSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAw
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVu
dHMtZ2V0ZmlsZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGZpbGUuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewot
ICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0g
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0g
ICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1k
ZXNjcmlwdGlvbigiRGlyZWN0b3J5RW50cnkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0K
LXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikg
ewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkg
ZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1m
dW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAg
ZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmls
ZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0u
cm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LmdldEZpbGUoKSIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1ldmFsQW5kTG9nKCJ3ZWJr
aXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsiKTsKLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1l
bnRzLWdldG1ldGFkYXRhLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS5qcwko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDI2ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRT
Y3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNj
cmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24o
IkRpcmVjdG9yeUVudHJ5LmdldE1ldGFkYXRhIHJlcXVpcmVkIGFyZ3VtZW50cyB0ZXN0LiIpOwot
Ci12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3Ip
IHsKLSAgICBkZWJ1ZygiRXJyb3Igb2NjdXJlZCB3aGlsZSByZXF1ZXN0aW5nIGEgVEVNUE9SQVJZ
IGZpbGUgc3lzdGVtOiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAg
IGRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZp
bGVTeXN0ZW0ubmFtZSk7Ci0gICAgcm9vdCA9IGV2YWxBbmRMb2coInJvb3QgPSBmaWxlU3lzdGVt
LnJvb3QiKTsKLSAgICBzaG91bGRUaHJvdygicm9vdC5nZXRNZXRhZGF0YSgpIik7Ci0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2co
IndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1h
cmd1bWVudHMtcmVtb3ZlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2lt
cGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYg
KzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4u
L3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4v
cmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiRW50cnkucmVt
b3ZlKCkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVs
bDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBv
Y2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9y
LmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJh
Y2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBv
YnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICBy
b290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRo
cm93KCJyb290LnJlbW92ZSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRF
TVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5q
cwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAs
MCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVT
eXN0ZW1TeW5jIFRFTVBPUkFSWSB0ZXN0LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtU3luYyhURU1QT1JBUlksIDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVs
bHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci1z
aG91bGRCZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIik7Ci1zaG91bGRCZSgiZmls
ZVN5c3RlbS5yb290LmZ1bGxQYXRoIiwgJyIvIicpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1w
bGUtdGVtcG9yYXJ5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjUgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlw
dHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0
cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0
cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigicmVx
dWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVs
bDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCdFcnJvciBv
Y2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06JyArIGVycm9y
LmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJh
Y2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBv
YnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICBz
aG91bGRCZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIik7Ci0gICAgc2hvdWxkQmUo
ImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCIsICciLyInKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0o
VEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMt
b3BlcmF0aW9ucy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDMgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMo
Jy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCBt
YWtpbmcgbXVsdGlwbGUgc3luY2hyb25vdXMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLiIpOwotCi12
YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFS
WSwgMTAwKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotCi0v
LyBTdGFnZSAxIChwcmVwYXJlKQotdmFyIGEgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScs
IHtjcmVhdGU6dHJ1ZX0pOwotdmFyIGIgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCdi
Jywge2NyZWF0ZTp0cnVlfSk7Ci12YXIgYyA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3Rvcnko
J2MnLCB7Y3JlYXRlOnRydWV9KTsKLXZhciBkID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2Qn
LCB7Y3JlYXRlOnRydWV9KTsKLQotLy8gU3RhZ2UgMiAodGVzdCkKLXZhciBhX2NvcHkgPSBhLmNv
cHlUbyhiLCAndG1wJyk7Ci12YXIgbWV0YWRhdGEgPSBhLmdldE1ldGFkYXRhKCk7Ci12YXIgYl9w
YXJlbnQgPSBiLmdldFBhcmVudCgpOwotdmFyIGNfY29weSA9IGMuY29weVRvKGZpbGVTeXN0ZW0u
cm9vdCwgJ2YnKTsKLXZhciBkX25ldyA9IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7
Ci12YXIgZSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSk7Ci0K
LS8vIFZlcmlmeQotdmFyIHJlYWRlciA9IGZpbGVTeXN0ZW0ucm9vdC5jcmVhdGVSZWFkZXIoKTsK
LXZhciBkaXJzQ291bnQgPSAwOwotdmFyIHBhdGhzID0gW107Ci1kbyB7Ci0gICAgdmFyIGVudHJp
ZXMgPSByZWFkZXIucmVhZEVudHJpZXMoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJp
ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgcGF0aHMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRo
KTsKLSAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICBkaXJz
Q291bnQrKzsKLSAgICB9Ci19IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7Ci0KLXBhdGhzLnNvcnQo
KTsKLXNob3VsZEJlKCciJyArIHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIs
L2UsL2YiJyk7Ci1zaG91bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKLXJlbW92ZUFsbEluRGlyZWN0
b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9URU1QTEFURS5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXJlZmVyZW5jZS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVm
ZXJlbmNlLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcwICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGlmIEVudHJpZXMgcmV0dXJu
ZWQgYnkgY2FsbGJhY2tzIGtlZXAgZnVuY3Rpb25pbmcgZXZlbiBhZnRlciB3ZSBsb3NlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBmaWxlc3lzdGVtIGluIHRoZSBzY3JpcHQuIik7Ci0KLXZhciB0ZXN0RGly
ZWN0b3J5ID0gbnVsbDsKLXZhciB0ZXN0RW50cmllcyA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9y
Q2FsbGJhY2soZXJyb3IpCi17Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBl
cnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdDEo
cm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0MSgpLi4uIik7Ci0gICAgdmFyIGhl
bHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVs
cGVyLmRvbmUoKTsgfTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0Rmls
ZSgnYScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxw
ZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0s
IGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBy
b290LmdldERpcmVjdG9yeSgnYycsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2sp
OyB9KTsKLQotICAgIGdjKCk7Ci0gICAgaGVscGVyLmpvaW4oZnVuY3Rpb24oKSB7IHJ1blRlc3Qy
KHJvb3QpOyB9KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdDIocm9vdCkKLXsKLSAgICBkZWJ1Zygi
UnVubmluZyBydW5UZXN0MigpLi4uIik7Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVy
KCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAg
IGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnL2IvMScsIHtjcmVhdGU6dHJ1
ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkg
eyByb290LmdldEZpbGUoJy9iLzInLCB7Y3JlYXRlOnRydWV9LCBkb25lLCBlcnJvckNhbGxiYWNr
KTsgfSk7Ci0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCcvYi8zJywg
e2NyZWF0ZTp0cnVlfSwgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOwotICAgIGhlbHBlci5ydW4o
ZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnL2IvNCcsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVy
cm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERp
cmVjdG9yeSgnYicsIHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlvbihlbnRyeSkgeyB0ZXN0RGlyZWN0
b3J5ID0gZW50cnk7IGhlbHBlci5kb25lKCk7IH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAg
IGdjKCk7Ci0gICAgaGVscGVyLmpvaW4oZnVuY3Rpb24oKSB7IHJ1blRlc3QzKCk7IH0pOwotfQot
Ci1mdW5jdGlvbiBydW5UZXN0MygpCi17Ci0gICAgZGVidWcoIlJ1bm5pbmcgcnVuVGVzdDMoKS4u
LiIpOwotICAgIHRlc3REaXJlY3RvcnkuY3JlYXRlUmVhZGVyKCkucmVhZEVudHJpZXMoZW50cmll
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICB0ZXN0RGlyZWN0b3J5ID0gbnVsbDsKLSAg
ICBnYygpOwotfQotCi1mdW5jdGlvbiBlbnRyaWVzQ2FsbGJhY2soZW50cmllcykKLXsKLSAgICBk
ZWJ1ZygiUnVubmluZyBydW5UZXN0NCgpLi4uIik7Ci0gICAgdGVzdEVudHJpZXMgPSBlbnRyaWVz
OwotICAgIHNob3VsZEJlKCJ0ZXN0RW50cmllcy5sZW5ndGgiLCAiNCIpOwotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpCi17Ci0gICAgdmFy
IHJvb3QgPSBmcy5yb290OwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZzLnJvb3QsIGZ1bmN0
aW9uKCkgeyBydW5UZXN0MShyb290KTsgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgZnMgPSBudWxs
OwotICAgIGdjKCk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsK
LSAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0od2luZG93LlRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVt
IEFQSSBzdXBwb3J0LiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Njcmlw
dC10ZXN0cy9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmlsZXN5c3RlbS11bnNlcmlhbGl6
YWJsZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDI5ICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGlmIHRoZSBmaWxlc3lz
dGVtIG9iamVjdCBpcyB1bnNlcmlhbGl6YWJsZSBieSBkZWZhdWx0Iik7Ci0KLWZ1bmN0aW9uIGVy
cm9yQ2FsbGJhY2soZXJyb3IpCi17Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIg
KyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5
c3RlbUNhbGxiYWNrKGZzKQotewotICAgIHRyeSB7Ci0gICAgICAgIHBvc3RNZXNzYWdlKGZzLCAn
KicpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZGVidWcoZS5tZXNzYWdlKTsKLSAgICB9
Ci0KLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gb25tZXNzYWdlKCkKLXsKLX0K
LQotaWYgKHdpbmRvdy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25tZXNzYWdlLCBmYWxzZSk7Ci0gICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5U
RU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxz
ZQotICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4i
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3Mt
cGFzc2luZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2Ny
aXB0LXRlc3RzL2ZsYWdzLXBhc3NpbmcuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw5NCArMCwwIEBACi1kZXNjcmlwdGlvbigiUGFzc2luZyBGbGFncyBwYXJh
bWV0ZXIgdGVzdHMuIFRoaXMgdGVzdCBjaGVja3MgaWYgcGFzc2luZyBGbGFncyBwYXJhbWV0ZXJz
IHRvIERpcmVjdG9yeUVudHJ5LmdldEZpbGUgZG9lcyBub3QgY3Jhc2ggYW5kIHdvcmtzIGFzIGV4
cGVjdGVkLiIpOwotCi12YXIgdGVzdEZpbGVOYW1lID0gJy9ub25fZXhpc3RlbnRfZmlsZSc7Ci12
YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci12YXIgZXhwZWN0ZWRDYWxsYmFja3NDb3VudCA9IDA7Ci12
YXIgdW5leHBlY3RlZENhbGxiYWNrc0NvdW50ID0gMDsKLXZhciBleHBlY3RlZCA9IGZ1bmN0aW9u
KGUpIHsgZXhwZWN0ZWRDYWxsYmFja3NDb3VudCsrOyB9OwotdmFyIHVuZXhwZWN0ZWQgPSBmdW5j
dGlvbihlKSB7IHVuZXhwZWN0ZWRDYWxsYmFja3NDb3VudCsrOyB9OwotCi12YXIgdGVzdHNMaXN0
ID0gWwotICAgIHJ1bk9iamVjdFRlc3QsCi0gICAgY2xlYW51cEFuZFJ1bk5leHQsCi0gICAgcnVu
SlNPTlRlc3QsCi0gICAgcnVuSlNPTlRlc3RXaXRoRXhjbHVzaXZlLAotICAgIHJ1bk51bGxUZXN0
LAotICAgIHJ1bk5vbk9iamVjdFRlc3QKLV07Ci12YXIgdGVzdENvdW50ZXIgPSAwOwotCi1mdW5j
dGlvbiBydW5OZXh0VGVzdCh2KSB7Ci0gICAgaWYgKHRlc3RDb3VudGVyID09IHRlc3RzTGlzdC5s
ZW5ndGgpIHsKLSAgICAgICAgZGVidWcoIkZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuIik7Ci0gICAg
ICAgIHNob3VsZEJlKCdleHBlY3RlZENhbGxiYWNrc0NvdW50JywgJzEnKTsKLSAgICAgICAgc2hv
dWxkQmUoJ3VuZXhwZWN0ZWRDYWxsYmFja3NDb3VudCcsICcwJyk7Ci0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgIH0gZWxzZQotICAgICAgICAodGVzdHNMaXN0W3Rlc3RDb3VudGVyKytdKSgp
OwotfQotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9y
IG9jY3VyZWQgZHVyaW5nIHJlcXVlc3RpbmcgVGVtcG9yYXJ5IEZpbGVTeXN0ZW06IiArIGVycm9y
LmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWZ1
bmN0aW9uIHJ1bk51bGxUZXN0KHYpIHsKLSAgICBkZWJ1ZygiKiBQYXNzaW5nIG51bGwgYXMgYSBm
bGFncyBwYXJhbWV0ZXIuIik7Ci0KLSAgICAvLyBUaGlzIHNob3VsZCBiZSBvayBhbmQgd2UgdHJl
YXQgaXQgYXMge2ZhbHNlLCBmYWxzZX0gRmxhZ3MuCi0gICAgZmlsZVN5c3RlbS5yb290LmdldEZp
bGUodGVzdEZpbGVOYW1lLCBudWxsLCBydW5OZXh0VGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19Ci0K
LWZ1bmN0aW9uIHJ1bk5vbk9iamVjdFRlc3QodikgewotICAgIGRlYnVnKCIqIFBhc3NpbmcgYSBu
dW1iZXIgYXMgYSBmbGFncyBwYXJhbWV0ZXIuIik7Ci0KLSAgICB0cnkgewotICAgICAgICAvLyBU
aGlzIHNob3VsZCBiZSBub3QgYmUgb2sgYmVjYXVzZSA3IGlzIG5vdCBhbiBvYmplY3QuCi0gICAg
ICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwgNywgZXJyb3JDYWxsYmFj
aywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgZGVidWcoIkNh
dWdodCBleGNlcHRpb246ICIgKyBleCk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiBydW5PYmplY3RUZXN0KHYpIHsKLSAgICAvLyBXZWJLaXRGbGFncyBubyBs
b25nZXIgaGFzIGEgdmlzaWJsZSBjb25zdHJ1Y3Rvci4KLSAgICBpZiAod2luZG93LldlYktpdEZs
YWdzKQotICAgICAgICB0aHJvdyAiVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnN0cnVjdG9yIGZvciBX
ZWJLaXRGbGFncyEiOwotICAgIHJ1bk5leHRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkpTT05U
ZXN0KHYpIHsKLSAgICBkZWJ1ZygiKiBQYXNzaW5nIEpTT04gRmxhZ3Mgb2JqZWN0LiIpOwotCi0g
ICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNlfSwg
dW5leHBlY3RlZCwgZXhwZWN0ZWQpOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RG
aWxlTmFtZSwge2NyZWF0ZTp0cnVlfSwgcnVuTmV4dFRlc3QsIGVycm9yQ2FsbGJhY2spOwotfQot
Ci1mdW5jdGlvbiBydW5KU09OVGVzdFdpdGhFeGNsdXNpdmUodikgewotICAgIGRlYnVnKCIqIFBh
c3NpbmcgSlNPTiBGbGFncyBvYmplY3QgKHdpdGggZXhjbHVzaXZlPXRydWUpLiIpOwotCi0gICAg
Ly8gVGhpcyBzaG91bGQgZmFpbC4KLSAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSh0ZXN0Rmls
ZU5hbWUsIHtjcmVhdGU6dHJ1ZSwgZXhjbHVzaXZlOnRydWV9LCBlcnJvckNhbGxiYWNrLCBydW5O
ZXh0VGVzdCk7Ci19Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBjbGVhbnVwQW5k
UnVuTmV4dCh2KSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7
Y3JlYXRlOmZhbHNlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBl
bnRyeSBiZWZvcmUgc3RhcnQgdGVzdGluZy4KLSAgICAgICAgZW50cnkucmVtb3ZlKHJ1bk5leHRU
ZXN0LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBydW5OZXh0VGVzdCk7Ci19Ci0KLWZ1bmN0aW9u
IGZpbGVTeXN0ZW1DYWxsYmFjayhmcykgewotICAgIGZpbGVTeXN0ZW0gPSBmczsKLSAgICBjbGVh
bnVwQW5kUnVuTmV4dCgpOwotfQotCi1pZiAod2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KSB7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHdlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5
c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9z
Y3JpcHQtdGVzdHMvcmVhZC1kaXJlY3RvcnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcwkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZWFk
LWRpcmVjdG9yeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5NSArMCwwIEBACi1kZXNjcmlwdGlv
bigiRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkgdGVzdC4iKTsKLXZhciBmaWxlU3lzdGVt
ID0gbnVsbDsKLXZhciByZWFkZXIgPSBudWxsOwotdmFyIHJlc3VsdEVudHJpZXMgPSBbXTsKLQot
dmFyIHJlYWRFbnRyaWVzQ291bnQgPSAwOwotdmFyIGVudHJpZXNDYWxsYmFja0NvdW50ID0gMDsK
LQotLy8gcGF0aDogaXNEaXJlY3RvcnkgbWFwLgotdmFyIHRlc3RFbnRyaWVzID0gewotICAgICcv
YSc6IHRydWUsCi0gICAgJy9iJzogZmFsc2UsCi0gICAgJy9jJzogdHJ1ZSwKLSAgICAnL2QnOiBm
YWxzZSwKLSAgICAnL2UnOiBmYWxzZSwKLSAgICAnL2YnOiB0cnVlLAotfTsKLXZhciB0ZXN0RW50
cmllc0NvdW50ID0gMDsKLQotZnVuY3Rpb24gZW5kVGVzdCgpCi17Ci0gICAgcmVtb3ZlQWxsSW5E
aXJlY3RvcnkoZmlsZVN5c3RlbS5yb290KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVu
Y3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikKLXsKLSAgICBkZWJ1ZygiRXJyb3Igb2NjdXJlZDoi
ICsgZXJyb3IuY29kZSk7Ci0gICAgZW5kVGVzdCgpOwotfQotCi12YXIgZW50cnkgPSBudWxsOwot
ZnVuY3Rpb24gdmVyaWZ5VGVzdFJlc3VsdCgpCi17Ci0gICAgc2hvdWxkQmUoJ3JlYWRFbnRyaWVz
Q291bnQnLCAnZW50cmllc0NhbGxiYWNrQ291bnQnKTsKLSAgICBzaG91bGRCZSgncmVzdWx0RW50
cmllcy5sZW5ndGgnLCAndGVzdEVudHJpZXNDb3VudCcpOwotICAgIHJlc3VsdEVudHJpZXMuc29y
dChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5mdWxsUGF0aCA+IGIuZnVsbFBhdGgpID8gMSA6
IChhLmZ1bGxQYXRoIDwgYi5mdWxsUGF0aCkgPyAtMSA6IDA7IH0pOwotICAgIGZvciAoaSA9IDA7
IGkgPCByZXN1bHRFbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGVudHJ5ID0gcmVzdWx0
RW50cmllc1tpXTsKLSAgICAgICAgZGVidWcoJ0VudHJ5OicgKyBlbnRyeS5mdWxsUGF0aCArICcg
aXNEaXJlY3Rvcnk6JyArIGVudHJ5LmlzRGlyZWN0b3J5KTsKLSAgICAgICAgc2hvdWxkQmUoJ3Rl
c3RFbnRyaWVzW2VudHJ5LmZ1bGxQYXRoXScsICdlbnRyeS5pc0RpcmVjdG9yeScpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gZW50cmllc0NhbGxiYWNrKGVudHJpZXMpCi17Ci0gICAgZW50cmllc0Nh
bGxiYWNrQ291bnQrKzsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7
ICsraSkKLSAgICAgICAgcmVzdWx0RW50cmllcy5wdXNoKGVudHJpZXNbaV0pOwotCi0gICAgaWYg
KGVudHJpZXMubGVuZ3RoKSB7Ci0gICAgICAgIHJlYWRFbnRyaWVzQ291bnQrKzsKLSAgICAgICAg
cmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgLy8gTXVzdCBoYXZlIHJlYWQgYWxsIHRoZSBlbnRyaWVzLgotICAg
ICAgICB2ZXJpZnlUZXN0UmVzdWx0KCk7Ci0gICAgICAgIGVuZFRlc3QoKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIHJ1blJlYWREaXJlY3RvcnlUZXN0KCkKLXsKLSAgICByZWFkRW50cmllc0NvdW50
Kys7Ci0gICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJl
YWRlci5yZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1m
dW5jdGlvbiBwcmVwYXJlRm9yVGVzdCgpCi17Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVs
cGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQot
ICAgIGZvciAodmFyIHBhdGggaW4gdGVzdEVudHJpZXMpIHsKLSAgICAgICAgdGVzdEVudHJpZXND
b3VudCsrOwotICAgICAgICBpZiAodGVzdEVudHJpZXNbcGF0aF0pCi0gICAgICAgICAgICBoZWxw
ZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KHBhdGgsIHtj
cmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgZmlsZVN5c3RlbS5yb290LmdldEZpbGUo
cGF0aCwge2NyZWF0ZTp0cnVlfSwgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOwotICAgIH0KLSAg
ICBoZWxwZXIuam9pbihydW5SZWFkRGlyZWN0b3J5VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nl
c3NDYWxsYmFjayhmcykKLXsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFt
ZSk7Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290LCBwcmVwYXJlRm9y
VGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0pIHsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSh3aW5kb3cuVEVNUE9SQVJZLCAx
MDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxl
U3lzdGVtIEFQSSBzdXBwb3J0LiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3Rl
bnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLXJlcXVlc3RG
aWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLVN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQ
ZXJzaXN0ZW50Ci1QQVNTIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1Mg
ZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9zaW1wbGUtcGVyc2lzdGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVyc2lzdGVudC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2lt
cGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotRmlsZVN5c3RlbSBBUEkgcmVh
ZG9ubHkgYXR0cmlidXRlcyB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQot
d2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykKLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZVN5c3Rl
bS5uYW1lCi1maWxlU3lzdGVtLm5hbWUgPSAnYmFyJwotUEFTUyBmaWxlU3lzdGVtLm5hbWUgaXMg
c3RpbGwgZmlsZV9fMDpUZW1wb3JhcnkKLXJvb3QgPSBmaWxlU3lzdGVtLnJvb3QKLXJvb3QuZ2V0
RmlsZSgnZm9vJywge2NyZWF0ZTp0cnVlfSwgZ2V0RmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KQotdHJ5aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSBmaWxlRW50cnkuaXNGaWxlCi1maWxl
RW50cnkuaXNGaWxlID0gZmFsc2UKLVBBU1MgZmlsZUVudHJ5LmlzRmlsZSBpcyBzdGlsbCB0cnVl
Ci10cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5IGZpbGVFbnRyeS5pc0RpcmVjdG9yeQot
ZmlsZUVudHJ5LmlzRGlyZWN0b3J5ID0gdHJ1ZQotUEFTUyBmaWxlRW50cnkuaXNEaXJlY3Rvcnkg
aXMgc3RpbGwgZmFsc2UKLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZUVudHJ5
Lm5hbWUKLWZpbGVFbnRyeS5uYW1lID0gJ2JhcicKLVBBU1MgZmlsZUVudHJ5Lm5hbWUgaXMgc3Rp
bGwgZm9vCi10cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5IGZpbGVFbnRyeS5mdWxsUGF0
aAotZmlsZUVudHJ5LmZ1bGxQYXRoID0gJ2JhcicKLVBBU1MgZmlsZUVudHJ5LmZ1bGxQYXRoIGlz
IHN0aWxsIC9mb28KLXRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZUVudHJ5LmZp
bGVzeXN0ZW0KLWZpbGVFbnRyeS5maWxlc3lzdGVtID0gbnVsbAotUEFTUyBmaWxlRW50cnkuZmls
ZXN5c3RlbSBpcyBzdGlsbCBbb2JqZWN0IERPTUZpbGVTeXN0ZW1dCi1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1maWxlLW9iamVjdC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1m
aWxlLW9iamVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVhZG9ubHktZmlsZS1vYmplY3QtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIyICswLDAgQEAKLVRlc3QgcmVhZG9ubHkgYXR0cmlidXRl
cyBvZiBGaWxlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVz
dEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIGZpbGVTeXN0ZW1DYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeShmaWxlU3lzdGVtLnJvb3QsIGNyZWF0ZVRlc3RG
aWxlLCBlcnJvckNhbGxiYWNrKTsKLWZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFt
ZSwge2NyZWF0ZTp0cnVlfSwgZ2V0RmlsZUZyb21FbnRyeSwgZXJyb3JDYWxsYmFjayk7Ci10ZXN0
RmlsZUVudHJ5LmZpbGUoZmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLXRyeWluZyB0byBz
ZXQgcmVhZG9ubHkgcHJvcGVydHkgdGVzdEZpbGUuc2l6ZQotdGVzdEZpbGUuc2l6ZSA9IDEKLVBB
U1MgdGVzdEZpbGUuc2l6ZSBpcyBzdGlsbCAwCi10cnlpbmcgdG8gc2V0IHJlYWRvbmx5IHByb3Bl
cnR5IHRlc3RGaWxlLnR5cGUKLXRlc3RGaWxlLnR5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtJwotUEFTUyB0ZXN0RmlsZS50eXBlIGlzIHN0aWxsIHRleHQvcGxhaW4KLXRyeWluZyB0byBz
ZXQgcmVhZG9ubHkgcHJvcGVydHkgdGVzdEZpbGUubmFtZQotdGVzdEZpbGUubmFtZSA9ICdiYXIn
Ci1QQVNTIHRlc3RGaWxlLm5hbWUgaXMgc3RpbGwgdGVzdEZpbGVFbnRyeS50eHQKLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWZpbGUtb2JqZWN0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1m
aWxlLW9iamVjdC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWZpbGUtb2JqZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNjMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08
c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3QgcmVhZG9ubHkgYXR0cmlidXRlcyBvZiBGaWxlLiIp
OwotCi12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci12YXIgdGVzdEZpbGVOYW1lID0gJy90ZXN0Rmls
ZUVudHJ5LnR4dCc7Ci12YXIgdGVzdEZpbGVFbnRyeSA9IG51bGw7Ci12YXIgdGVzdEZpbGUgPSBu
dWxsOwotCi1mdW5jdGlvbiBzZXRSZWFkb25seVByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkKLXsK
LSAgICBvbGRWYWx1ZSA9IGV2YWwocHJvcGVydHkpOwotICAgIGRlYnVnKCJ0cnlpbmcgdG8gc2V0
IHJlYWRvbmx5IHByb3BlcnR5ICIgKyBwcm9wZXJ0eSk7Ci0gICAgZXZhbEFuZExvZyhwcm9wZXJ0
eSArICIgPSAiICsgdmFsdWUpOwotICAgIG5ld1ZhbHVlID0gZXZhbChwcm9wZXJ0eSk7Ci0gICAg
aWYgKG9sZFZhbHVlID09IG5ld1ZhbHVlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQocHJvcGVydHkg
KyAiIGlzIHN0aWxsICIgKyBvbGRWYWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZh
aWxlZChwcm9wZXJ0eSArICIgdmFsdWUgd2FzIGNoYW5nZWQiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICB0ZXN0RmFpbGVkKCJFcnJvciBvY2N1cmVk
OiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmls
ZUNhbGxiYWNrKGZpbGUpIHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2V0UmVhZG9ubHlQ
cm9wZXJ0eSgidGVzdEZpbGUuc2l6ZSIsICIxIik7Ci0gICAgc2V0UmVhZG9ubHlQcm9wZXJ0eSgi
dGVzdEZpbGUudHlwZSIsICInYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyIpOwotICAgIHNldFJl
YWRvbmx5UHJvcGVydHkoInRlc3RGaWxlLm5hbWUiLCAiJ2JhciciKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0RmlsZUZyb21FbnRyeShlbnRyeSkgewotICAgIHRlc3RG
aWxlRW50cnkgPSBlbnRyeTsKLSAgICBldmFsQW5kTG9nKCJ0ZXN0RmlsZUVudHJ5LmZpbGUoZmls
ZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsiKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZp
bGUoKSB7Ci0gICAgZXZhbEFuZExvZygiZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVO
YW1lLCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxlRnJvbUVudHJ5LCBlcnJvckNhbGxiYWNrKTsiKTsK
LX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9
IGZzOwotICAgIGV2YWxBbmRMb2coInJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9v
dCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2FsbGJhY2spOyIpOwotfQotCi12YXIganNUZXN0SXNB
c3luYyA9IHRydWU7Ci1ldmFsQW5kTG9nKCJ3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JB
UlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsiKTsKLTwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Np
bXBsZS1yZWFkb25seS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9zaW1wbGUtcmVhZG9ubHkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1l
bnRzLWdldGRpcmVjdG9yeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1EaXJlY3RvcnlFbnRyeSByZXF1aXJlZCBh
cmd1bWVudHMgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLXdlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVf
XzA6VGVtcG9yYXJ5Ci1yb290ID0gZmlsZVN5c3RlbS5yb290Ci1QQVNTIHJvb3QuZ2V0RGlyZWN0
b3J5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0
ZGlyZWN0b3J5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5Lmh0bWwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJn
dW1lbnRzLWdldGRpcmVjdG9yeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAK
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxl
LXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJlY3RvcnkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5Pgot
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJl
ZC1hcmd1bWVudHMtZ2V0ZmlsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGZpbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLURpcmVjdG9yeUVudHJ5IHJlcXVpcmVkIGFyZ3VtZW50
cyB0ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7
Ci1TdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1w
b3JhcnkKLXJvb3QgPSBmaWxlU3lzdGVtLnJvb3QKLVBBU1Mgcm9vdC5nZXRGaWxlKCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQt
YXJndW1lbnRzLWdldGZpbGUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
LTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRmaWxl
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJl
cXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1l
bnRzLWdldG1ldGFkYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCww
IEBACi1EaXJlY3RvcnlFbnRyeS5nZXRNZXRhZGF0YSByZXF1aXJlZCBhcmd1bWVudHMgdGVzdC4K
LQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotU3VjY2Vz
c2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1y
b290ID0gZmlsZVN5c3RlbS5yb290Ci1QQVNTIHJvb3QuZ2V0TWV0YWRhdGEoKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQt
YXJndW1lbnRzLWdldG1ldGFkYXRhLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRh
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRz
LWdldG1ldGFkYXRhLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLXJlbW92ZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Np
bXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1
bWVudHMtcmVtb3ZlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBA
Ci1FbnRyeS5yZW1vdmUoKSByZXF1aXJlZCBhcmd1bWVudHMgdGVzdC4KLQotT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgotCi0KLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAw
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotU3VjY2Vzc2Z1bGx5IG9idGFpbmVk
IFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1yb290ID0gZmlsZVN5c3Rl
bS5yb290Ci1QQVNTIHJvb3QucmVtb3ZlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1y
ZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtcmVtb3ZlLmh0bWwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVx
dWlyZWQtYXJndW1lbnRzLXJlbW92ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAg
QEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2lt
cGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3Jhcnkt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9z
aW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLXJlcXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFSWSB0
ZXN0LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3VjY2Vzc2Z1bGx5IG9idGFp
bmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTIGZpbGVTeXN0
ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRo
IGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVtcG9yYXJ5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1w
b3JhcnkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAK
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
aW1wbGUtdGVtcG9yYXJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNyArMCwwIEBACi1bV29ya2VyXSBUZXN0IG1ha2lu
ZyBtdWx0aXBsZSBhc3luYyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9hc3luYy1vcGVy
YXRpb25zLmpzCi1bV29ya2VyXSByZXF1ZXN0ZWQgRmlsZVN5c3RlbS4KLVtXb3JrZXJdIEdvdCBG
aWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1bV29ya2VyXSBTdGFydGluZyBhc3luYyB0ZXN0
IHN0YWdlIDEuCi1bV29ya2VyXSBTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCi1bV29ya2Vy
XSBWZXJpZnlpbmcgdGhlIEZpbGVTeXN0ZW0gc3RhdHVzLgotUEFTUyBbV29ya2VyXSAiL2EsL2Is
L2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgotUEFTUyBbV29ya2VyXSBkaXJz
Q291bnQgaXMgMwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9w
ZXJhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2FzeW5j
LW9wZXJhdGlvbnMuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFz
aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFt
ZS1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotUEFTUwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZGV0YWNoZWQtZnJhbWUt
Y3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPCEtLSBo
dHRwOi8vY3JidWcuY29tLzE0NzU5MgotICAgICBodHRwOi8vd2Via2l0Lm9yZy9iLzk2MzU0IC0t
PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1kb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7Ci0KLWZ1bmN0
aW9uIHJ1blRlc3QoKQotewotICAgIGFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBjbGVhcik7
Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyKGV2ZW50KQotewotICAgIGRvY3VtZW50LmJvZHkuaW5uZXJU
ZXh0ID0gIiI7Ci0gICAgc2V0VGltZW91dChkb25lLCAwKTsKLX0KLQotZnVuY3Rpb24gZG9uZSgp
Ci17Ci0gICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSAiUEFTUyI7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLX0KLTwvc2Ny
aXB0PgotPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNy
YXNoLWZyYW1lLmh0bWwiLz4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2VyXSBPYnRhaW5pbmcgVVJMIGZyb20gRmls
ZUVudHJ5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2Vy
OiAuLi9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmktc3luYy5qcwotUEFTUyBbV29ya2VyXSB0
ZXN0RmlsZUVudHJ5LnRvVVJMKCkgaXMgJ2ZpbGVzeXN0ZW06ZmlsZTovLy90ZW1wb3JhcnkvdGVz
dEZpbGVFbnRyeS50eHQnCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS1lbnRyeS10by11cmktc3luYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJpLXN5bmMuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRy
eS10by11cmktc3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29y
a2VyKCcuLi9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmktc3luYy5qcycpOwotPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTMgKzAsMCBAQAotW1dvcmtlcl0gT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxl
RW50cnkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6
IC4uL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwotUEFTUyBbV29ya2VyXSB0ZXN0
RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS50
eXBlIGlzICd0ZXh0L3BsYWluJwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5zaXplIGlzIDAKLVBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1z
eW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1m
cm9tLWZpbGUtZW50cnktc3luYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMg
KzAsMCBAQAotW1dvcmtlcl0gT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnlTeW5jLgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJj
ZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5u
YW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS50eXBlIGlz
ICd0ZXh0L3BsYWluJwotUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5zaXplIGlzIDAKLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS1mcm9tLWZpbGUtZW50cnktc3luYy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNl
cy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
ZnJvbS1maWxlLWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUt
ZW50cnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4v
cmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2ItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2VyXSBUZXN0IHRoYXQgRmlsZVdyaXRlciB3b3JrcyB3
aXRob3V0IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGFuIGVtcHR5IGJsb2IuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmls
ZS13cml0ZXItZW1wdHktYmxvYi5qcwotW1dvcmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBbV29y
a2VyXSBTdWNjZXNzZnVsbHkgd3JvdGUgYmxvYi4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUg
KzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkZpbGUgV3Jp
dGVyIHdpdGggZW1wdHkgQmxvYiBpbiBXb3JrZXI8L3RpdGxlPgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgot
PHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXIt
ZW1wdHktYmxvYi5qcyIpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotW1dvcmtlcl0gVGVz
dCB0aGF0IEZpbGVXcml0ZXIgcHJvZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2ZW50cy4KLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9m
aWxlLXdyaXRlci1ldmVudHMuanMKLVtXb3JrZXJdIHN0YXJ0aW5nIHRlc3QKLVBBU1MgW1dvcmtl
cl0gU2F3IGFsbCB0aGUgcmlnaHQgZXZlbnRzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci1ldmVudHMtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50
cy1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCww
IEBACi1bV29ya2VyXSBUZXN0IHRoYXQgRmlsZVdyaXRlciBwcm9kdWNlcyBwcm9wZXIgcHJvZ3Jl
c3MgZXZlbnRzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtl
cjogLi4vcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc3R1Yi5qcwotW1dvcmtlcl0gc3RhcnRpbmcg
dGVzdAotUEFTUyBbV29ya2VyXSBTYXcgYWxsIHRoZSByaWdodCBldmVudHMuCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLXNoYXJlZC13b3Jr
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLXdyaXRlci1ldmVudHMtc2hhcmVkLXdvcmtlci5odG1sCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVu
dHMtc2hhcmVkLXdvcmtlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5ICswLDAgQEAKLTwh
RE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEV2
ZW50cyBTaGFyZWQgV29ya2VyPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAg
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHZhciB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVz
b3VyY2VzL3NoYXJlZC13b3JrZXItc3R1Yi5qcyIsIHRydWUgLyogc2hhcmVkICovKTsKLSAgICAg
ICAgd29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoIklNUE9SVDpmaWxlLXdyaXRlci1ldmVudHMuanMi
KTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItZXZlbnRzLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0g
ICAgPHRpdGxlPkZpbGUgV3JpdGVyIEV2ZW50cyBXb3JrZXI8L3RpdGxlPgotICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotIDwvaGVh
ZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgd29ya2VyID0gc3RhcnRX
b3JrZXIoIi4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMiKTsKLSAgICA8L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0
ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJsb2ItZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdGhhdCBhIGJs
b2Igd29uJ3QgZ2V0IGdhcmJhZ2UtY29sbGVjdGVkIHdoaWxlIGJlaW5nIHdyaXR0ZW4gb3V0IGJ5
IGEgRmlsZVdyaXRlci4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGluZyB3
b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1nYy1ibG9iLmpzCi1bV29ya2VyXSBzdGFy
dGluZyB0ZXN0Ci1QQVNTIFtXb3JrZXJdIFN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLgotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci1nYy1ibG9iLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAg
IDx0aXRsZT5GaWxlIFdyaXRlciBHQyBCbG9iIFdvcmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFk
PgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdv
cmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMiKTsKLSAgICA8L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEwICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdXNpbmcgRmlsZVdyaXRlclN5bmMudHJ1bmNh
dGUgdG8gZXh0ZW5kIGEgZmlsZS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFy
dGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVu
ZC5qcwotUEFTUyBbV29ya2VyXSBUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1l
eHRlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC5odG1sCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1z
eW5jLXRydW5jYXRlLWV4dGVuZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICswLDAgQEAK
LTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVy
IFN5bmMgVHJ1bmNhdGUtVG8tRXh0ZW5kPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+
Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9y
ZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMiKTsKLSAgICA8L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMiArMCwwIEBACi1bV29ya2VyXSBUZXN0IHVzaW5nIEZpbGVXcml0ZXJTeW5jLnNl
ZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcgZXhpc3RpbmcgZGF0YSBpbiBhIGZpbGUuCi0KLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmls
ZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzCi1QQVNTIFtXb3JrZXJdIE92ZXJsYXBw
ZWQgd3JpdGUgMSB2ZXJpZmllZC4KLVBBU1MgW1dvcmtlcl0gT3ZlcmxhcHBlZCB3cml0ZSAyIHZl
cmlmaWVkLgotUEFTUyBbV29ya2VyXSBPdmVybGFwcGVkIHdyaXRlIDMgdmVyaWZpZWQuCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1v
dmVybGFwcGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmh0bWwJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3Jp
dGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICsw
LDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUg
V3JpdGVyIFN5bmMgVHJ1bmNhdGUtVG8tRXh0ZW5kPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0g
PGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2Vy
KCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpzIik7Ci0g
ICAgPC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotIDwvYm9keT4KLTwvaHRtbD4KLQotCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3Jp
dGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEg
KzAsMCBAQAotW1dvcmtlcl0gVGVzdCBvZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRl
KCkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9y
ZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCi1bV29ya2VyXSBzdGFydGlu
ZyB0ZXN0Ci1QQVNTIFtXb3JrZXJdIFRydW5jYXRlIGV4dGVuc2lvbiB2ZXJpZmllZC4KLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRl
bmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzAsMCBAQAotPCFET0NUWVBFIEhU
TUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgVHJ1bmNhdGUtVG8t
RXh0ZW5kIFdvcmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAg
ICA8c2NyaXB0PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL2Zp
bGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8
L2JvZHk+Ci08L2h0bWw+Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItd3Jp
dGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLVtXb3JrZXJdIFRl
c3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJsYXBwaW5nIGV4aXN0aW5nIGRh
dGEgaW4gYSBmaWxlLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdv
cmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuanMKLVtXb3Jr
ZXJdIHN0YXJ0aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gTmVnYXRpdmUgc2VlayB2YWxpZGF0ZWQu
Ci1QQVNTIFtXb3JrZXJdIFBvc2l0aXZlIHNlZWsgdmFsaWRhdGVkLgotUEFTUyBbV29ya2VyXSBO
b25leHRlbmRpbmcgd3JpdGUgdmFsaWRhdGVkLgotUEFTUyBbV29ya2VyXSBBbGwgd3JpdGVzIHZl
cmlmaWVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVy
LXdyaXRlLW92ZXJsYXBwZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLmh0bWwJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
d3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOCArMCww
IEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRsZT5GaWxlIFdy
aXRlciBXcml0ZSBPdmVybGFwcGVkIFdvcmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxi
b2R5PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigi
Li4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXdyaXRlLW92ZXJsYXBwZWQuanMiKTsKLSAgICA8L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Ci0gPC9ib2R5PgotPC9odG1sPgotCi0KLQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZy
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9k
ZXRhY2hlZC1mcmFtZS1jcmFzaC1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHNjcmlwdD4KLXZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KCJkZXRhY2hlZC1mcmFtZS1jcmFzaC13b3JrZXIuanMiKTsKLXdvcmtlci5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgcmVsYXlNZXNzYWdlKTsKLQotZnVuY3Rpb24gcmVsYXlNZXNzYWdlKGV2
ZW50KQotewotICAgIHBhcmVudC5wb3N0TWVzc2FnZShldmVudC5kYXRhLCBsb2NhdGlvbi5vcmln
aW4pOwotfQotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtd29ya2VyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hl
ZC1mcmFtZS1jcmFzaC13b3JrZXIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC13
b3JrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMCwwIEBACi1wb3N0TWVzc2FnZSgiUmVh
ZHkiKTsKLXJ1bigpOwotCi1mdW5jdGlvbiBydW4oKQotewotICAgIHdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFRFTVBPUkFSWSwgMSwgcnVuKTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMyArMCwwIEBACi1bV29ya2VyXSByZXF1ZXN0RmlsZVN5c3RlbSBQRVJTSVNU
RU5UIHRlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3Jr
ZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwotW1dvcmtlcl0gU3VjY2Vzc2Z1
bGx5IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKLVBB
U1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQotUEFTUyBbV29y
a2VyXSBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBl
cnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVtXb3JrZXJdIHdlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtU3luYyBQRVJTSVNURU5UIHRlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lz
dGVudC1zeW5jLmpzCi1bV29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBG
aWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVudAotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5h
bWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxs
UGF0aCBpcyAiLyIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUt
cGVyc2lzdGVudC1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5odG1sCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lz
dGVudC1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIo
Jy4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzJyk7Ci08L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCShyZXZpc2lvbiAx
NTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVy
c2lzdGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0V29ya2VyKCcu
Li9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBs
ZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAK
LVtXb3JrZXJdIHJlcXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFSWSB0ZXN0LgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxl
LXRlbXBvcmFyeS5qcwotW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBG
aWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ubmFt
ZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5yb290LmZ1bGxQ
YXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBM
RVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10
ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
c2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MyArMCwwIEBACi1bV29ya2VyXSByZXF1ZXN0RmlsZVN5c3RlbVN5bmMgVEVNUE9SQVJZIHRlc3Qu
Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jl
c291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMKLVtXb3JrZXJdIFN1Y2Nlc3NmdWxseSBv
YnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQotUEFTUyBbV29y
a2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTIFtXb3JrZXJdIGZp
bGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRt
bAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAs
MCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2Vy
ID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMnKTsK
LTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS5odG1s
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3Rh
cnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzJyk7Ci08L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiAr
MCwwIEBACi1bV29ya2VyXSBUZXN0IG1ha2luZyBtdWx0aXBsZSBzeW5jaHJvbm91cyBGaWxlU3lz
dGVtIG9wZXJhdGlvbnMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGlu
ZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMKLVBBU1MgW1dvcmtlcl0g
Ii9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9jLC9kMiwvZSwvZiIKLVBBU1MgW1dvcmtl
cl0gZGlyc0NvdW50IGlzIDMKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
eW5jLW9wZXJhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9z
eW5jLW9wZXJhdGlvbnMuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlv
bnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9hc3luYy1vcGVyYXRpb25zLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTA2ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBv
cnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRp
b24oIlRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4iKTsK
LQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotCi12YXIgYTsKLXZhciBiOwotdmFyIGM7Ci12YXIg
ZDsKLQotdmFyIHBhdGhzID0gW107Ci12YXIgZGlyc0NvdW50ID0gMDsKLXZhciByZWFkZXIgPSBu
dWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkdvdCBl
cnJvcjogIiArIGVycm9yLmNvZGUpOwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0
ZW0ucm9vdCk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXNDYWxs
YmFjayhlbnRyaWVzKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIHBhdGhzLnB1c2goZW50cmllc1tpXS5mdWxsUGF0aCk7Ci0gICAgICAg
IGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgZGlyc0NvdW50Kys7Ci0g
ICAgfQotICAgIGlmICghZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgcmVhZGVyLnJlYWRFbnRy
aWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgcGF0aHMuc29ydCgpOwotICAgICAgICBzaG91bGRCZSgnIicgKyBwYXRocy5qb2luKCcsJykg
KyAnIicsICciL2EsL2IsL2MsL2QyLC9lLC9mIicpOwotICAgICAgICBzaG91bGRCZSgiZGlyc0Nv
dW50IiwgIjMiKTsKLSAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290
KTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnko
KSB7Ci0gICAgZGVidWcoIlZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuIik7Ci0gICAg
cmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5yZWFk
RW50cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBh
c3luY1Rlc3QyKCkgewotICAgIGRlYnVnKCJTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuIik7
Ci0KLSAgICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKLSAgICB2YXIgZG9uZSA9IGZ1
bmN0aW9uKCkgeyBoZWxwZXIuZG9uZSgpOyB9OwotCi0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigp
IHsgYS5jb3B5VG8oYiwgJ3RtcCcsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxw
ZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmdldE1ldGFkYXRhKGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9
KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBiLmdldFBhcmVudChkb25lLCBlcnJvckNh
bGxiYWNrKTsgfSk7Ci0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYy5jb3B5VG8oZmlsZVN5
c3RlbS5yb290LCAnZicsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVu
KGZ1bmN0aW9uKCkgeyBkLm1vdmVUbyhmaWxlU3lzdGVtLnJvb3QsICdkMicsIGRvbmUsIGVycm9y
Q2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVtLnJv
b3QuZ2V0RmlsZSgnZScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsK
LQotICAgIGhlbHBlci5qb2luKHZlcmlmeSk7Ci19Ci0KLWZ1bmN0aW9uIGFzeW5jVGVzdDEoKSB7
Ci0gICAgZGVidWcoIlN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4iKTsKLQotICAgIHZhciBo
ZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigpOwotICAgIHZhciByb290ID0gZmlsZVN5c3RlbS5yb290
OwotCi0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdhJywge2NyZWF0
ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgYSA9IGVudHJ5OwotICAgICAgICBo
ZWxwZXIuZG9uZSgpOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5y
dW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVlfSwgZnVu
Y3Rpb24oZW50cnkpIHsKLSAgICAgICAgYiA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgp
OwotICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24o
KSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdjJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkp
IHsKLSAgICAgICAgYyA9IGVudHJ5OwotICAgICAgICBoZWxwZXIuZG9uZSgpOwotICAgIH0sIGVy
cm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0
RmlsZSgnZCcsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIGQgPSBl
bnRyeTsKLSAgICAgICAgaGVscGVyLmRvbmUoKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsgfSk7
Ci0KLSAgICBoZWxwZXIuam9pbihhc3luY1Rlc3QyKTsKLX0KLQotaWYgKHRoaXMud2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0pIHsKLSAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB2YXIgaGVs
cGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgewotICAg
IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtLmFwcGx5KHRoaXMsIFt0aGlzLlRFTVBPUkFSWSwgMTAw
LCBmdW5jdGlvbihmcykgewotICAgICAgICBkZWJ1ZygiR290IEZpbGVTeXN0ZW06IiArIGZzLm5h
bWUpOwotICAgICAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgICAgIHJlbW92ZUFsbEluRGlyZWN0
b3J5KGZpbGVTeXN0ZW0ucm9vdCwgZnVuY3Rpb24oKXsgaGVscGVyLmRvbmUoKTsgfSwgZXJyb3JD
YWxsYmFjayk7Ci0gICAgfSwgZXJyb3JDYWxsYmFja10pOyB9KTsKLSAgICBkZWJ1ZygicmVxdWVz
dGVkIEZpbGVTeXN0ZW0uIik7Ci0gICAgaGVscGVyLmpvaW4oYXN5bmNUZXN0MSk7Ci19IGVsc2UK
LSAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1l
bnRyeS10by11cmkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9kaXJlY3RvcnktZW50cnktdG8tdXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2RpcmVjdG9yeS1lbnRyeS10
by11cmkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAg
ICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAg
ICBpbXBvcnRTY3JpcHRzKCdmcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIk9i
dGFpbmluZyBVUkwgZnJvbSBEaXJlY3RvcnlFbnRyeS4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBu
dWxsOwotdmFyIHRlc3REaXJlY3RvcnlOYW1lID0gJ3Rlc3REaXJlY3RvcnknOwotdmFyIHRlc3RE
aXJlY3RvcnlVUkkgPSBudWxsOwotCi1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0g
ICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJlZDoiICsgZXJyb3IuY29kZSk7Ci0gICAgZmluaXNo
SlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJ5VG9VUkwoZW50cnkpIHsKLSAgICB0ZXN0RGly
ZWN0b3J5VVJMID0gZW50cnkudG9VUkwoKTsKLSAgICBzaG91bGRCZSgidGVzdERpcmVjdG9yeVVS
TCIsICInZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RGlyZWN0b3J5JyIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVUZXN0RGlyZWN0b3J5KCkgewot
ICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkodGVzdERpcmVjdG9yeU5hbWUsIHtjcmVh
dGU6dHJ1ZX0sIGVudHJ5VG9VUkwsIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBmaWxl
U3lzdGVtQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgcmVtb3ZlQWxs
SW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290LCBjcmVhdGVUZXN0RGlyZWN0b3J5LCBlcnJvckNh
bGxiYWNrKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIGZpbGVTeXN0ZW1DYWxsYmFjaywgZXJyb3JDYWxsYmFj
ayk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50
cnktdG8tdXJpLXN5bmMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLmpzCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8t
dXJpLXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzAsMCBAQAotaW1wb3J0U2NyaXB0
cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0KLWRlc2NyaXB0aW9uKCJPYnRhaW5pbmcgVVJMIGZyb20g
RmlsZUVudHJ5LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
U3luYyhURU1QT1JBUlksIDEwMCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3Rl
bS5yb290KTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9ICd0ZXN0RmlsZUVudHJ5LnR4dCc7Ci12YXIg
dGVzdEZpbGVFbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwge2Ny
ZWF0ZTp0cnVlfSk7Ci0KLXNob3VsZEJlKCJ0ZXN0RmlsZUVudHJ5LnRvVVJMKCkiLCAiJ2ZpbGVz
eXN0ZW06ZmlsZTovLy90ZW1wb3JhcnkvdGVzdEZpbGVFbnRyeS50eHQnIik7Ci0KLXJlbW92ZUFs
bEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZW50cnktdG8tdXJp
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZmlsZS1lbnRyeS10by11cmkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1lbnRyeS10by11cmkuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMzQgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9y
dFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy10
ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBVUkwgZnJvbSBGaWxl
RW50cnkuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciB0ZXN0RmlsZU5hbWUgPSAn
dGVzdEZpbGVFbnRyeS50eHQnOwotdmFyIHRlc3RGaWxlVVJJID0gbnVsbDsKLQotZnVuY3Rpb24g
ZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIHRlc3RGYWlsZWQoIkVycm9yIG9jY3VyZWQ6IiAr
IGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBlbnRyeVRv
VVJMKGVudHJ5KSB7Ci0gICAgdGVzdEZpbGVVUkwgPSBlbnRyeS50b1VSTCgpOwotICAgIHNob3Vs
ZEJlKCJ0ZXN0RmlsZVVSTCIsICInZmlsZXN5c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0Rmls
ZUVudHJ5LnR4dCciKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRl
VGVzdEZpbGUoKSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7
Y3JlYXRlOnRydWV9LCBlbnRyeVRvVVJMLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24g
ZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJlbW92
ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9yQ2Fs
bGJhY2spOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9t
LWZpbGUtZW50cnktc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9t
LWZpbGUtZW50cnktc3luYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyMCArMCwwIEBACi0vLyBG
SVhNRTogbW92ZSB0aGlzIHVuZGVyIHdvcmtlcnMvcmVzb3VyY2VzCi1pbXBvcnRTY3JpcHRzKCdm
cy13b3JrZXItY29tbW9uLmpzJyk7Ci1pbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMnKTsKLQotZGVzY3JpcHRpb24oIk9idGFpbmluZyBGaWxlIGZyb20gRmls
ZUVudHJ5U3luYy4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7Ci1yZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmls
ZVN5c3RlbS5yb290KTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9ICcvdGVzdEZpbGVFbnRyeS50eHQn
OwotCi12YXIgdGVzdEZpbGVFbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxl
TmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci12YXIgdGVzdEZpbGUgPSB0ZXN0RmlsZUVudHJ5LmZpbGUo
KTsKLQotc2hvdWxkQmUoInRlc3RGaWxlLm5hbWUiLCAidGVzdEZpbGVFbnRyeS5uYW1lIik7Ci1z
aG91bGRCZSgidGVzdEZpbGUudHlwZSIsICIndGV4dC9wbGFpbiciKTsKLXNob3VsZEJlKCJ0ZXN0
RmlsZS5zaXplIiwgIjAiKTsKLQotcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0u
cm9vdCk7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnkuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBA
Ci1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2Vy
LWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXRlc3QtdXRpbC5qcycpOwotfQot
Ci1kZXNjcmlwdGlvbigiT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuIik7Ci0KLXZhciBm
aWxlU3lzdGVtID0gbnVsbDsKLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlRW50cnkudHh0
JzsKLXZhciB0ZXN0RmlsZUVudHJ5ID0gbnVsbDsKLXZhciB0ZXN0RmlsZSA9IG51bGw7Ci0KLWZ1
bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICB0ZXN0RmFpbGVkKCJFcnJvciBvY2N1
cmVkOiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24g
ZmlsZUNhbGxiYWNrKGZpbGUpIHsKLSAgICB0ZXN0RmlsZSA9IGZpbGU7Ci0gICAgc2hvdWxkQmUo
InRlc3RGaWxlLm5hbWUiLCAidGVzdEZpbGVFbnRyeS5uYW1lIik7Ci0gICAgc2hvdWxkQmUoInRl
c3RGaWxlLnR5cGUiLCAiJ3RleHQvcGxhaW4nIik7Ci0gICAgc2hvdWxkQmUoInRlc3RGaWxlLnNp
emUiLCAiMCIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBnZXRGaWxlRnJv
bUVudHJ5KGVudHJ5KSB7Ci0gICAgdGVzdEZpbGVFbnRyeSA9IGVudHJ5OwotICAgIGVudHJ5LmZp
bGUoZmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVz
dEZpbGUoKSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3Jl
YXRlOnRydWV9LCBnZXRGaWxlRnJvbUVudHJ5LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rp
b24gZmlsZVN5c3RlbUNhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJl
bW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgY3JlYXRlVGVzdEZpbGUsIGVycm9y
Q2FsbGJhY2spOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci13ZWJraXRSZXF1ZXN0
RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13
cml0ZXItYWJvcnQtY29udGludWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1jb250aW51ZS5qcwkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxl
LXdyaXRlci1hYm9ydC1jb250aW51ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxODggKzAsMCBA
QAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtl
ci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycp
OwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgY2FuIGNvbnRpbnVlIGlt
bWVkaWF0ZWx5IGFmdGVyIGFuIGFib3J0LiIpOwotCi12YXIgc2F3V3JpdGVTdGFydDsKLXZhciBz
YXdBYm9ydDsKLXZhciBzYXdXcml0ZUVuZDsKLXZhciB3cml0ZXI7Ci12YXIgZXhwZWN0ZWRMZW5n
dGg7Ci12YXIgdHJ1bmNhdGVMZW5ndGg7Ci12YXIgYmxvYlNpemUgPSAxMTAwMDAwOwotdmFyIGN1
cnJlbnRUZXN0ID0gMDsKLXZhciBibG9iID0gZ2V0QmxvYigpOwotCi0vLyBmaWxlU3lzdGVtT3Zl
cmhlYWQgaXMgYW4gZXN0aW1hdGUgb2YgZXh0cmEgc2l6ZSBuZWVkZWQgdG8gc2F2ZSBhIGZ1bGwg
ZmlsZQotLy8gc3lzdGVtLCBpdCBuZWVkIHRvIGJlIGxhcmdlIGVub3VnaCB0byBhdm9pZCB0ZXN0
IGZhaWx1cmUgZHVlIHRvIGZpbGUgc3lzdGVtCi0vLyBxdW90YSBsaW1pdC4KLXZhciBmaWxlU3lz
dGVtT3ZlcmhlYWQgPSBibG9iU2l6ZSAqIDUgLyAxMDAwICsgMTAyNDsKLXZhciBmaWxlU3lzdGVt
U2l6ZSA9IGJsb2JTaXplICogMiArIGZpbGVTeXN0ZW1PdmVyaGVhZDsKLQotdmFyIG1ldGhvZFNl
dCA9IFsKLSAgeyAgLy8gU2V0dXAgbWV0aG9kIHNldCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMg
dGhhdCB3cml0ZSBiZWZvcmUgY29tcGxldGlvbi4KLSAgICBhY3Rpb24gOiBzdGFydFdyaXRlLAot
ICAgIHZlcmlmeUxlbmd0aCA6IDAsCi0gICAgb253cml0ZXN0YXJ0IDogYWJvcnRXcml0ZSwKLSAg
ICBvbnByb2dyZXNzIDogbm9wLAotICAgIG9ud3JpdGUgOiBvbkVycm9yLAotICAgIG9uYWJvcnQg
OiBsb2dBYm9ydCwKLSAgICBvbndyaXRlZW5kIDogY2hlY2tMZW5ndGhBbmRTdGFydE5leHRUZXN0
Ci0gIH0sCi0gIHsgIC8vIE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgd3JpdGUuCi0g
ICAgYWN0aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2ZXJpZnlMZW5ndGggOiBibG9iU2l6ZSwKLSAg
ICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRl
IDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xl
bmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAgeyAvLyBNZXRob2Qgc2V0IHRoYXQgZG9lcyBh
IGNvbXBsZXRlIHRydW5jYXRlLCBqdXN0IHRvIGNsZWFuIHVwLgotICAgIGFjdGlvbiA6IHN0YXJ0
VHJ1bmNhdGUsCi0gICAgdHJ1bmNhdGVMZW5ndGggOiAwLAotICAgIHZlcmlmeUxlbmd0aCA6IDAs
Ci0gICAgb253cml0ZXN0YXJ0IDogbm9wLAotICAgIG9ucHJvZ3Jlc3MgOiBub3AsCi0gICAgb253
cml0ZSA6IG5vcCwKLSAgICBvbmFib3J0IDogb25FcnJvciwKLSAgICBvbndyaXRlZW5kIDogY2hl
Y2tMZW5ndGhBbmRTdGFydE5leHRUZXN0Ci0gIH0sCi0gIHsgIC8vIFNldHVwIG1ldGhvZCBzZXQg
dGhhdCB3cml0ZXMsIHRoZW4gYWJvcnRzIHRoYXQgd3JpdGUganVzdCBhdCBjb21wbGV0aW9uLgot
ICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUsCi0gICAgdmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUsCi0g
ICAgb253cml0ZXN0YXJ0IDogbm9wLAotICAgIG9ucHJvZ3Jlc3MgOiBhYm9ydE9uQ29tcGxldGUs
Ci0gICAgb253cml0ZSA6IG5vcCwKLSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0gICAgb253cml0
ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7ICAvLyBNZXRob2Qg
c2V0IHRoYXQgZG9lcyBhIGNvbXBsZXRlIHdyaXRlLgotICAgIGFjdGlvbiA6IHN0YXJ0V3JpdGUs
Ci0gICAgdmVyaWZ5TGVuZ3RoIDogYmxvYlNpemUgKiAyLCAvLyBBZGQgaW4gbGVmdG92ZXJzIGZy
b20gcHJldmlvdXMgbWV0aG9kLgotICAgIG9ud3JpdGVzdGFydCA6IG5vcCwKLSAgICBvbnByb2dy
ZXNzIDogbm9wLAotICAgIG9ud3JpdGUgOiBub3AsCi0gICAgb25hYm9ydCA6IG9uRXJyb3IsCi0g
ICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7IC8v
IE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgdHJ1bmNhdGUsIGp1c3QgdG8gY2xlYW4g
dXAuCi0gICAgYWN0aW9uIDogc3RhcnRUcnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxlbmd0aCA6IDAs
Ci0gICAgdmVyaWZ5TGVuZ3RoIDogMCwKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25w
cm9ncmVzcyA6IG5vcCwKLSAgICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9y
LAotICAgIG9ud3JpdGVlbmQgOiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfSwKLSAg
eyAgLy8gU2V0dXAgbWV0aG9kIHNldCB0aGF0IHdyaXRlcywgdGhlbiBhYm9ydHMgdGhhdCB3cml0
ZSBhcyBpdCBzdGFydHMuCi0gICAgYWN0aW9uIDogc3RhcnRXcml0ZSwKLSAgICB2ZXJpZnlMZW5n
dGggOiAwLAotICAgIG9ud3JpdGVzdGFydCA6IGFib3J0V3JpdGUsCi0gICAgb25wcm9ncmVzcyA6
IG5vcCwKLSAgICBvbndyaXRlIDogb25FcnJvciwKLSAgICBvbmFib3J0IDogbG9nQWJvcnQsCi0g
ICAgb253cml0ZWVuZCA6IGNoZWNrTGVuZ3RoQW5kU3RhcnROZXh0VGVzdAotICB9LAotICB7IC8v
IE1ldGhvZCBzZXQgdGhhdCBkb2VzIGEgY29tcGxldGUgdHJ1bmNhdGUuCi0gICAgYWN0aW9uIDog
c3RhcnRUcnVuY2F0ZSwKLSAgICB0cnVuY2F0ZUxlbmd0aCA6IDcsCi0gICAgdmVyaWZ5TGVuZ3Ro
IDogNywKLSAgICBvbndyaXRlc3RhcnQgOiBub3AsCi0gICAgb25wcm9ncmVzcyA6IG5vcCwKLSAg
ICBvbndyaXRlIDogbm9wLAotICAgIG9uYWJvcnQgOiBvbkVycm9yLAotICAgIG9ud3JpdGVlbmQg
OiBjaGVja0xlbmd0aEFuZFN0YXJ0TmV4dFRlc3QKLSAgfQotXTsKLQotZnVuY3Rpb24gbm9wKCkg
ewotfQotCi1mdW5jdGlvbiB0ZW5YQmxvYihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0g
ICAgfQotICAgIHJldHVybiBuZXcgQmxvYihiYik7Ci19Ci0KLWZ1bmN0aW9uIGdldEJsb2IoKSB7
Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBhYm91dCBhIG1lZ2FieXRlLgotICAgIHZhciBibG9iID0g
dGVuWEJsb2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhCbG9i
KGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2Io
YmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIHZhciBzaXplID0gYmxvYi5z
aXplOwotICAgIHNob3VsZEJlKCIiICsgc2l6ZSwgImJsb2JTaXplIik7Ci0gICAgcmV0dXJuIGJs
b2I7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0V3JpdGUoZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxp
bmcgYWJvcnQiKTsKLSAgICB3cml0ZXIuYWJvcnQoKTsKLX0KLQotZnVuY3Rpb24gYWJvcnRPbkNv
bXBsZXRlKGUpIHsKLSAgICBpZiAoZS5sb2FkZWQgPT0gZS50b3RhbCkgewotICAgICAgICB0ZXN0
UGFzc2VkKCJDYWxsaW5nIGFib3J0IGF0IHRoZSBlbmQgb2YgdGhlIHdyaXRlIik7Ci0gICAgICAg
IHdyaXRlci5hYm9ydCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nQWJvcnQoZSkgewotICAg
IHRlc3RQYXNzZWQoIlNhdyBhYm9ydCIpOwotfQotCi1mdW5jdGlvbiBjaGVja0xlbmd0aEFuZFN0
YXJ0TmV4dFRlc3QoZSkgewotICAgIHNob3VsZEJlKCJ3cml0ZXIubGVuZ3RoIiwgIiIgKyBleHBl
Y3RlZExlbmd0aCk7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kICIgKyBjdXJyZW50VGVz
dCArICIuIik7Ci0gICAgKytjdXJyZW50VGVzdDsKLSAgICBpZiAoY3VycmVudFRlc3QgPCBtZXRo
b2RTZXQubGVuZ3RoKQotICAgICAgICBydW5UZXN0KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRl
c3RQYXNzZWQoIkFsbCB0ZXN0cyBjb21wbGV0ZS4iKTsKLSAgICAgICAgY2xlYW5VcCgpOwotICAg
IH0KLX0KLQotZnVuY3Rpb24gc3RhcnRXcml0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJDYWxsaW5n
IHdyaXRlLiIpOwotICAgIHdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gc3RhcnRU
cnVuY2F0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJDYWxsaW5nIHRydW5jYXRlLiIpOwotICAgIHdy
aXRlci50cnVuY2F0ZSh0cnVuY2F0ZUxlbmd0aCk7Ci19Ci0KLWZ1bmN0aW9uIHNldHVwV3JpdGVy
KG1ldGhvZFNldEluZGV4LCB3cml0ZXIpIHsKLSAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7
Ci0KLSAgICB2YXIgbWV0aG9kcyA9IG1ldGhvZFNldFttZXRob2RTZXRJbmRleF07Ci0gICAgd3Jp
dGVyLm9uYWJvcnQgPSBtZXRob2RzLm9uYWJvcnQ7Ci0gICAgd3JpdGVyLm9ud3JpdGVzdGFydCA9
IG1ldGhvZHMub253cml0ZXN0YXJ0OwotICAgIHdyaXRlci5vbnByb2dyZXNzID0gbWV0aG9kcy5v
bnByb2dyZXNzOwotICAgIHdyaXRlci5vbndyaXRlID0gbWV0aG9kcy5vbndyaXRlOwotICAgIHdy
aXRlci5vbndyaXRlZW5kID0gbWV0aG9kcy5vbndyaXRlZW5kOwotICAgIGV4cGVjdGVkTGVuZ3Ro
ID0gbWV0aG9kcy52ZXJpZnlMZW5ndGg7Ci0gICAgdHJ1bmNhdGVMZW5ndGggPSBtZXRob2RzLnRy
dW5jYXRlTGVuZ3RoOwotICAgIG1ldGhvZHMuYWN0aW9uKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRl
c3QoKSB7Ci0gICAgc2V0dXBXcml0ZXIoY3VycmVudFRlc3QsIHdyaXRlcik7Ci19Ci0KLXZhciBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXNldHVwQW5kUnVuVGVzdChmaWxlU3lzdGVtU2l6ZSwgJ2Zp
bGUtd3JpdGVyLWFib3J0JywKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZmlsZUVudHJ5LCBm
aWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVFbnRyeUZvckNsZWFudXAgPSBm
aWxlRW50cnk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIHJ1blRlc3QoKTsKLSAgICAgICAgICAgICAgICB9KTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItYWJvcnQtZGVw
dGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC1kZXB0aC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IHRoYXQgRmlsZVdyaXRlciBkZWZlbmRzIGFnYWluc3QgaW5maW5pdGUgcmVjdXJzaW9uIHZpYSBh
Ym9ydC4iKTsKLQotdmFyIHNhd1dyaXRlU3RhcnQ7Ci12YXIgc2F3QWJvcnQ7Ci12YXIgc2F3V3Jp
dGVFbmQ7Ci12YXIgd3JpdGVyOwotdmFyIGJsb2IgPSBuZXcgQmxvYihbImxvcmVtIGlwc3VtIl0p
OwotdmFyIHJlY3Vyc2lvbkRlcHRoID0gMDsKLXZhciBtZXRob2Q7Ci12YXIgdGVzdHNSdW4gPSAw
OwotCi1mdW5jdGlvbiBvbldyaXRlU3RhcnQoZSkgewotICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcg
YWJvcnQiKTsKLSAgICArK3JlY3Vyc2lvbkRlcHRoOwotICAgIHdyaXRlci5hYm9ydCgpOwotfQot
Ci0vLyBXZSBzaG91bGQgYWx3YXlzIGFib3J0IGJlZm9yZSBjb21wbGV0aW9uLgotZnVuY3Rpb24g
b25Xcml0ZShlKSB7Ci0gICAgdGVzdEZhaWxlZCgiSW4gb25Xcml0ZS4iKTsKLX0KLQotZnVuY3Rp
b24gb25BYm9ydChlKSB7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IGFib3J0Iik7Ci0gICAgdHJ5IHsK
LSAgICAgIG1ldGhvZCgpOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICBhc3NlcnQoZXguY29k
ZSA9PSAyKTsgIC8vIFNlY3VyaXR5IGVycm9yCi0gICAgICB0ZXN0UGFzc2VkKCJTYXcgc2VjdXJp
dHkgZXJyb3IiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVFbmQoZSkgewotICAgIC0t
cmVjdXJzaW9uRGVwdGg7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdyaXRlZW5kLiIpOwotICAgIGlm
ICghcmVjdXJzaW9uRGVwdGgpIHsKLSAgICAgICAgKyt0ZXN0c1J1bjsKLSAgICAgICAgaWYgKHRl
c3RzUnVuID09IDEpIHsKLSAgICAgICAgICAgIG1ldGhvZCA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcgdHJ1bmNhdGUuIik7Ci0gICAgICAgICAgICAg
ICAgd3JpdGVyLnRydW5jYXRlKDcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0VGlt
ZW91dChtZXRob2QsIDApOyAgLy8gSW52b2tlIGZyb20gdGhlIHRvcCBsZXZlbCwgc28gdGhhdCB3
ZSdyZSBub3QgYWxyZWFkeSBpbiBhIGhhbmRsZXIuCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBjbGVhblVwKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3Qo
dW51c2VkRmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7Ci0gICAgd3JpdGVyID0gZmlsZVdyaXRlcjsK
LSAgICBtZXRob2QgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkNhbGxpbmcg
d3JpdGUuIik7Ci0gICAgICAgIHdyaXRlci53cml0ZShibG9iKTsKLSAgICB9Ci0gICAgZmlsZVdy
aXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxlV3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0
OwotICAgIGZpbGVXcml0ZXIub253cml0ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0OwotICAgIGZpbGVX
cml0ZXIub253cml0ZSA9IG9uV3JpdGU7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gb25X
cml0ZUVuZDsKLSAgICBtZXRob2QoKTsKLX0KLQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwot
c2V0dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXItYWJvcnQtZGVwdGgnLCBy
dW5UZXN0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmls
ZS13cml0ZXItYWJvcnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1hYm9ydC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw4NCArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9y
dFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0
IHRoYXQgRmlsZVdyaXRlciBoYW5kbGVzIGFib3J0IHByb3Blcmx5LiIpOwotCi12YXIgc2F3V3Jp
dGVTdGFydDsKLXZhciBzYXdBYm9ydDsKLXZhciBzYXdXcml0ZUVuZDsKLXZhciB3cml0ZXI7Ci0K
LWZ1bmN0aW9uIHRlblhCbG9iKGJsb2IpIHsKLSAgICB2YXIgYmIgPSBbXTsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwOyArK2kpIHsKLSAgICAgICAgYmIucHVzaChibG9iKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIG5ldyBCbG9iKGJiKTsKLX0KLQotZnVuY3Rpb24gb25Xcml0ZVN0YXJ0KGUpIHsK
LSAgICBhc3NlcnQod3JpdGVyKTsKLSAgICBhc3NlcnQod3JpdGVyLnJlYWR5U3RhdGUgPT0gd3Jp
dGVyLldSSVRJTkcpOwotICAgIGFzc2VydChlLnR5cGUgPT0gIndyaXRlc3RhcnQiKTsKLSAgICBh
c3NlcnQoIXNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFz
c2VydCghZS5sb2FkZWQpOwotICAgIHNhd1dyaXRlU3RhcnQgPSB0cnVlOwotICAgIHRlc3RQYXNz
ZWQoIkNhbGxpbmcgYWJvcnQiKTsKLSAgICB3cml0ZXIuYWJvcnQoKTsKLX0KLQotLy8gV2Ugc2hv
dWxkIGFsd2F5cyBhYm9ydCBiZWZvcmUgY29tcGxldGlvbi4KLWZ1bmN0aW9uIG9uV3JpdGUoZSkg
ewotICAgIHRlc3RGYWlsZWQoIkluIG9uV3JpdGUuIik7Ci19Ci0KLWZ1bmN0aW9uIG9uQWJvcnQo
ZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuRE9ORSk7Ci0gICAg
YXNzZXJ0KHdyaXRlci5lcnJvci5jb2RlID09IHdyaXRlci5lcnJvci5BQk9SVF9FUlIpOwotICAg
IGFzc2VydChzYXdXcml0ZVN0YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBh
c3NlcnQoIXNhd0Fib3J0KTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJhYm9ydCIpOwotICAgIHNh
d0Fib3J0ID0gdHJ1ZTsKLSAgICB0ZXN0UGFzc2VkKCJTYXcgYWJvcnQiKTsKLX0KLQotZnVuY3Rp
b24gb25Xcml0ZUVuZChlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRl
ci5ET05FKTsKLSAgICBhc3NlcnQod3JpdGVyLmVycm9yLmNvZGUgPT0gd3JpdGVyLmVycm9yLkFC
T1JUX0VSUik7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdBYm9y
dCk7Ci0gICAgYXNzZXJ0KCFzYXdXcml0ZUVuZCk7Ci0gICAgYXNzZXJ0KGUudHlwZSA9PSAid3Jp
dGVlbmQiKTsKLSAgICBzYXdXcml0ZUVuZCA9IHRydWU7Ci0gICAgdGVzdFBhc3NlZCgiU2F3IHdy
aXRlZW5kLiIpOwotICAgIHdyaXRlci5hYm9ydCgpOyAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBkb2Vz
IG5vdGhpbmcgaW4gcmVhZHlTdGF0ZSBET05FLgotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rp
b24gc3RhcnRXcml0ZShmaWxlV3JpdGVyKSB7Ci0gICAgLy8gTGV0J3MgbWFrZSBpdCBhYm91dCBh
IG1lZ2FieXRlLgotICAgIHZhciBibG9iID0gdGVuWEJsb2IobmV3IEJsb2IoWyJsb3JlbSBpcHN1
bSJdKSk7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihi
bG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJs
b2IpOwotICAgIHdyaXRlciA9IGZpbGVXcml0ZXI7Ci0gICAgZmlsZVdyaXRlci5vbmVycm9yID0g
b25FcnJvcjsKLSAgICBmaWxlV3JpdGVyLm9uYWJvcnQgPSBvbkFib3J0OwotICAgIGZpbGVXcml0
ZXIub253cml0ZXN0YXJ0ID0gb25Xcml0ZVN0YXJ0OwotICAgIGZpbGVXcml0ZXIub253cml0ZSA9
IG9uV3JpdGU7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlZW5kID0gb25Xcml0ZUVuZDsKLSAgICBm
aWxlV3JpdGVyLmFib3J0KCk7ICAvLyBWZXJpZnkgdGhhdCB0aGlzIGRvZXMgbm90aGluZyBpbiBy
ZWFkeVN0YXRlIElOSVQuCi0gICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rp
b24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRl
KGZpbGVXcml0ZXIpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5U
ZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXItYWJvcnQnLCBydW5UZXN0KTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxv
Yi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItZW1wdHktYmxvYi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMSwyOSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7
Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNj
cmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0IHRo
YXQgRmlsZVdyaXRlciB3b3JrcyB3aXRob3V0IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGFu
IGVtcHR5IGJsb2IuIik7Ci0KLXZhciBmaWxlRW50cnk7Ci0KLWZ1bmN0aW9uIG9uVGVzdFN1Y2Nl
c3MoKSB7Ci0gICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5IHdyb3RlIGJsb2IuIik7Ci0gICAg
Y2xlYW5VcCgpOwotfQotCi1mdW5jdGlvbiBzdGFydFdyaXRlKHdyaXRlcikgewotICAgIHZhciBi
bG9iID0gbmV3IEJsb2IoWyIiXSk7Ci0gICAgd3JpdGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAg
IHdyaXRlci5vbndyaXRlZW5kID0gb25UZXN0U3VjY2VzczsKLSAgICB3cml0ZXIud3JpdGUoYmxv
Yik7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QodW51c2VkRmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7
Ci0gICAgc3RhcnRXcml0ZShmaWxlV3JpdGVyKTsKLSAgICBnYygpOwotfQotdmFyIGpzVGVzdElz
QXN5bmMgPSB0cnVlOwotc2V0dXBBbmRSdW5UZXN0KDIgKiAxMDI0ICogMTAyNCwgJ2ZpbGUtd3Jp
dGVyLWVtcHR5LWJsb2InLCBydW5UZXN0KTsKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci1ldmVudHMuanMJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZmlsZS13cml0ZXItZXZlbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNCArMCwwIEBA
Ci1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2Vy
LWNvbW1vbi5qcycpOwotICAgIGlmICghKCdkZXNjcmlwdGlvbicgaW4gc2VsZikpICAvLyBTaGFy
ZWQgd29ya2VycyB3aWxsIGFscmVhZHkgaGF2ZSBpbXBvcnRlZCB0aGlzLCBhbmQgaW1wb3J0aW5n
IHR3aWNlIHdvdWxkIGJyZWFrIGl0LgotICAgICAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRl
ci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0aGF0IEZpbGVXcml0ZXIgcHJv
ZHVjZXMgcHJvcGVyIHByb2dyZXNzIGV2ZW50cy4iKTsKLQotdmFyIGZpbGVFbnRyeTsKLXZhciBz
YXdXcml0ZVN0YXJ0OwotdmFyIHNhd1dyaXRlOwotdmFyIHNhd1dyaXRlRW5kOwotdmFyIHNhd1By
b2dyZXNzOwotdmFyIHdyaXRlcjsKLXZhciBsYXN0UHJvZ3Jlc3MgPSAwOwotdmFyIHRvQmVXcml0
dGVuOwotCi1mdW5jdGlvbiB0ZW5YQmxvYihibG9iKSB7Ci0gICAgdmFyIGJiID0gW107Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7Ci0gICAgICAgIGJiLnB1c2goYmxvYik7Ci0g
ICAgfQotICAgIHJldHVybiBuZXcgQmxvYihiYik7Ci19Ci0KLWZ1bmN0aW9uIG9uV3JpdGVTdGFy
dChlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlcik7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRl
ID09IHdyaXRlci5XUklUSU5HKTsKLSAgICBhc3NlcnQoZS50eXBlID09ICJ3cml0ZXN0YXJ0Iik7
Ci0gICAgYXNzZXJ0KCFzYXdXcml0ZVN0YXJ0KTsKLSAgICBhc3NlcnQoIXNhd1Byb2dyZXNzKTsK
LSAgICBhc3NlcnQoIXNhd1dyaXRlKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAgICBh
c3NlcnQoIWUubG9hZGVkKTsKLSAgICBhc3NlcnQoZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0g
ICAgc2F3V3JpdGVTdGFydCA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9uIG9uUHJvZ3Jlc3MoZSkgewot
ICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIuV1JJVElORyk7Ci0gICAgYXNz
ZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydCghc2F3V3JpdGUpOwotICAgIGFzc2VydCgh
c2F3V3JpdGVFbmQpOwotICAgIGFzc2VydChlLnR5cGUgPT0gInByb2dyZXNzIik7Ci0gICAgYXNz
ZXJ0KGUubG9hZGVkIDw9IGUudG90YWwpOwotICAgIGFzc2VydChsYXN0UHJvZ3Jlc3MgPCBlLmxv
YWRlZCk7Ci0gICAgYXNzZXJ0KGUudG90YWwgPT0gdG9CZVdyaXR0ZW4pOwotICAgIGxhc3RQcm9n
cmVzcyA9IGUubG9hZGVkOwotICAgIHNhd1Byb2dyZXNzID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24g
b25Xcml0ZShlKSB7Ci0gICAgYXNzZXJ0KHdyaXRlci5yZWFkeVN0YXRlID09IHdyaXRlci5ET05F
KTsKLSAgICBhc3NlcnQoc2F3V3JpdGVTdGFydCk7Ci0gICAgYXNzZXJ0KHNhd1Byb2dyZXNzKTsK
LSAgICBhc3NlcnQobGFzdFByb2dyZXNzID09IGUudG90YWwpOwotICAgIGFzc2VydCghc2F3V3Jp
dGUpOwotICAgIGFzc2VydCghc2F3V3JpdGVFbmQpOwotICAgIGFzc2VydChlLnR5cGUgPT0gIndy
aXRlIik7Ci0gICAgYXNzZXJ0KGUubG9hZGVkID09IGUudG90YWwpOwotICAgIGFzc2VydChlLnRv
dGFsID09IHRvQmVXcml0dGVuKTsKLSAgICBzYXdXcml0ZSA9IHRydWU7Ci19Ci0KLWZ1bmN0aW9u
IG9uV3JpdGVFbmQoZSkgewotICAgIGFzc2VydCh3cml0ZXIucmVhZHlTdGF0ZSA9PSB3cml0ZXIu
RE9ORSk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlU3RhcnQpOwotICAgIGFzc2VydChzYXdQcm9ncmVz
cyk7Ci0gICAgYXNzZXJ0KHNhd1dyaXRlKTsKLSAgICBhc3NlcnQoIXNhd1dyaXRlRW5kKTsKLSAg
ICBhc3NlcnQoZS50eXBlID09ICJ3cml0ZWVuZCIpOwotICAgIGFzc2VydChlLmxvYWRlZCA9PSBl
LnRvdGFsKTsKLSAgICBhc3NlcnQoZS50b3RhbCA9PSB0b0JlV3JpdHRlbik7Ci0gICAgc2F3V3Jp
dGVFbmQgPSB0cnVlOwotICAgIHRlc3RQYXNzZWQoIlNhdyBhbGwgdGhlIHJpZ2h0IGV2ZW50cy4i
KTsKLSAgICBjbGVhblVwKCk7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0V3JpdGUoZmlsZVdyaXRlcikg
ewotICAgIC8vIExldCdzIG1ha2UgaXQgYWJvdXQgYSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxvYiA9
IHRlblhCbG9iKG5ldyBCbG9iKFsibG9yZW0gaXBzdW0iXSkpOwotICAgIGJsb2IgPSB0ZW5YQmxv
YihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2IoYmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9i
KGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICB0b0JlV3JpdHRlbiA9IGJs
b2Iuc2l6ZTsKLSAgICB3cml0ZXIgPSBmaWxlV3JpdGVyOwotICAgIGZpbGVXcml0ZXIub25lcnJv
ciA9IG9uRXJyb3I7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlc3RhcnQgPSBvbldyaXRlU3RhcnQ7
Ci0gICAgZmlsZVdyaXRlci5vbnByb2dyZXNzID0gb25Qcm9ncmVzczsKLSAgICBmaWxlV3JpdGVy
Lm9ud3JpdGUgPSBvbldyaXRlOwotICAgIGZpbGVXcml0ZXIub253cml0ZWVuZCA9IG9uV3JpdGVF
bmQ7Ci0gICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCh1
bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBhc3NlcnQodHlwZW9mIGZpbGVXcml0
ZXIuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyk7Ci0gICAgYXNzZXJ0KHR5cGVvZiBm
aWxlV3JpdGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicpOwotICAgIGFzc2Vy
dCh0eXBlb2YgZmlsZVdyaXRlci5kaXNwYXRjaEV2ZW50ID09PSAnZnVuY3Rpb24nKTsKLSAgICBz
dGFydFdyaXRlKGZpbGVXcml0ZXIpOwotfQotdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotc2V0
dXBBbmRSdW5UZXN0KDIqMTAyNCoxMDI0LCAnZmlsZS13cml0ZXItZXZlbnRzJywgcnVuVGVzdCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LWdjLWJsb2IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLXdyaXRlci1nYy1ibG9iLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDEgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykg
ewotICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRT
Y3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCB0
aGF0IGEgYmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hpbGUgYmVpbmcgd3JpdHRl
biBvdXQgYnkgYSBGaWxlV3JpdGVyLiIpOwotCi12YXIgZmlsZUVudHJ5OwotCi1mdW5jdGlvbiBv
blRlc3RTdWNjZXNzKCkgewotICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSB3cm90ZSBibG9i
LiIpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gdGVuWEJsb2IoYmxvYikgewotICAg
IHZhciBiYiA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgewotICAgICAg
ICBiYi5wdXNoKGJsb2IpOwotICAgIH0KLSAgICByZXR1cm4gbmV3IEJsb2IoYmIpOwotfQotCi1m
dW5jdGlvbiBzdGFydFdyaXRlKHdyaXRlcikgewotICAgIC8vIExldCdzIG1ha2UgaXQgYWJvdXQg
YSBtZWdhYnl0ZS4KLSAgICB2YXIgYmxvYiA9IHRlblhCbG9iKG5ldyBCbG9iKFsibG9yZW0gaXBz
dW0iXSkpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihibG9iKTsKLSAgICBibG9iID0gdGVuWEJsb2Io
YmxvYik7Ci0gICAgYmxvYiA9IHRlblhCbG9iKGJsb2IpOwotICAgIGJsb2IgPSB0ZW5YQmxvYihi
bG9iKTsKLSAgICB3cml0ZXIub25lcnJvciA9IG9uRXJyb3I7Ci0gICAgd3JpdGVyLm9ud3JpdGVl
bmQgPSBvblRlc3RTdWNjZXNzOwotICAgIHdyaXRlci53cml0ZShibG9iKTsKLX0KLQotZnVuY3Rp
b24gcnVuVGVzdCh1bnVzZWRGaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKLSAgICBzdGFydFdyaXRl
KGZpbGVXcml0ZXIpOwotICAgIGdjKCk7Ci19Ci12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1z
ZXR1cEFuZFJ1blRlc3QoMioxMDI0KjEwMjQsICdmaWxlLXdyaXRlci1nYy1ibG9iJywgcnVuVGVz
dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3Jp
dGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQu
anMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1leHRlbmQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsNDAgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNj
cmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotICAgIGltcG9ydFNjcmlwdHMo
Jy4uL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcycpOwotfQotCi1kZXNjcmlwdGlvbigi
VGVzdCB1c2luZyBGaWxlV3JpdGVyU3luYy50cnVuY2F0ZSB0byBleHRlbmQgYSBmaWxlLiIpOwot
Ci0vLyBTdGFydCB3aXRoIGFuIGVtcHR5IEZpbGVTeXN0ZW0uCi12YXIgZmlsZVN5c3RlbSA9IHdl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLXJlbW92ZUFs
bEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotCi0vLyBQcmVwYXJlIGEgZmlsZSB3
aXRoIHNhbXBsZSBjb250ZW50cy4KLXZhciBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxl
KCdhJywge2NyZWF0ZTp0cnVlLCBleGNsdXNpdmU6dHJ1ZX0pOwotdmFyIHdyaXRlciA9IGVudHJ5
LmNyZWF0ZVdyaXRlcigpOwotYXNzZXJ0KCF3cml0ZXIucG9zaXRpb24pOwotdmFyIHRlc3REYXRh
ID0gInRlc3QgZGF0YSI7Ci13cml0ZXIud3JpdGUobmV3IEJsb2IoW3Rlc3REYXRhXSkpOwotYXNz
ZXJ0KHdyaXRlci5sZW5ndGggPT0gdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9z
aXRpb24gPT0gd3JpdGVyLmxlbmd0aCk7Ci0KLS8vIEV4dGVuZCB0aGUgZmlsZSB2aWEgdHJ1bmNh
dGUuCi12YXIgZXh0ZW5zaW9uTGVuZ3RoID0gMTA7Ci13cml0ZXIudHJ1bmNhdGUod3JpdGVyLmxl
bmd0aCArIGV4dGVuc2lvbkxlbmd0aCk7Ci0KLS8vIFZlcmlmeSB0aGUgY29udGVudHMuCi1hc3Nl
cnQod3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25MZW5ndGgpOwot
YXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9PSB0ZXN0RGF0YS5sZW5ndGgpOwotdmFyIGZpbGUgPSBl
bnRyeS5maWxlKCk7Ci12YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXJTeW5jKCk7Ci12YXIgY29u
dGVudHMgPSByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwotdmFyIGk7Ci1mb3IgKGkg
PSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyArK2kpCi0gICAgYXNzZXJ0KGNvbnRlbnRzLmNoYXJD
b2RlQXQoaSkgPT0gdGVzdERhdGEuY2hhckNvZGVBdChpKSk7Ci1mb3IgKDsgaSA8IHdyaXRlci5s
ZW5ndGg7ICsraSkKLSAgICBhc3NlcnQoIWNvbnRlbnRzLmNoYXJDb2RlQXQoaSkpOwotCi10ZXN0
UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXIt
c3luYy13cml0ZS1vdmVybGFwcGVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmpz
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL2ZpbGUtd3JpdGVyLXN5bmMtd3JpdGUtb3ZlcmxhcHBlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMSw5MSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2Ny
aXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJU
ZXN0IHVzaW5nIEZpbGVXcml0ZXJTeW5jLnNlZWsgdG8gd3JpdGUgb3ZlcmxhcHBpbmcgZXhpc3Rp
bmcgZGF0YSBpbiBhIGZpbGUuIik7Ci0KLS8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgRmlsZVN5c3Rl
bS4KLXZhciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKHRoaXMuVEVN
UE9SQVJZLCAxMDApOwotcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7
Ci0KLS8vIFByZXBhcmUgYSBmaWxlIHdpdGggc2FtcGxlIGNvbnRlbnRzLgotdmFyIGVudHJ5ID0g
ZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2EnLCB7Y3JlYXRlOnRydWUsIGV4Y2x1c2l2ZTp0cnVl
fSk7Ci12YXIgd3JpdGVyID0gZW50cnkuY3JlYXRlV3JpdGVyKCk7Ci1hc3NlcnQoIXdyaXRlci5w
b3NpdGlvbik7Ci12YXIgdGVzdERhdGEgPSAidGVzdCBkYXRhIjsKLXZhciBibG9iID0gbmV3IEJs
b2IoW3Rlc3REYXRhXSk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0
aCA9PSB0ZXN0RGF0YS5sZW5ndGgpOwotYXNzZXJ0KHdyaXRlci5wb3NpdGlvbiA9PSB3cml0ZXIu
bGVuZ3RoKTsKLQotLy8gU2VlayBiYWNrIHRvIGZyb20gdGhlIGVuZCwgdGhlbiBvdmVyd3JpdGUs
IGV4dGVuZGluZyB0aGUgZmlsZS4KLXZhciBleHRlbnNpb25PZmZzZXQgPSAtNDsKLXdyaXRlci5z
ZWVrKGV4dGVuc2lvbk9mZnNldCk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci0KLS8vIFZlcmlmeSB0
aGUgY29udGVudHMuCi1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSAyICogdGVzdERhdGEubGVuZ3Ro
ICsgZXh0ZW5zaW9uT2Zmc2V0KTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVyLmxl
bmd0aCk7Ci12YXIgZmlsZSA9IGVudHJ5LmZpbGUoKTsKLXZhciByZWFkZXIgPSBuZXcgRmlsZVJl
YWRlclN5bmMoKTsKLXZhciBjb250ZW50cyA9IHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmls
ZSk7Ci12YXIgaTsKLWZvciAoaSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGggKyBleHRlbnNpb25P
ZmZzZXQ7ICsraSkKLSAgICBhc3NlcnQoY29udGVudHMuY2hhckNvZGVBdChpKSA9PSB0ZXN0RGF0
YS5jaGFyQ29kZUF0KGkpKTsKLXZhciBqOwotZm9yIChqID0gMDsgaSA8IHdyaXRlci5sZW5ndGg7
ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkpID09IHRlc3REYXRh
LmNoYXJDb2RlQXQoaikpOwotdGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0ZSAxIHZlcmlmaWVk
LiIpOwotCi0vLyBUcnVuY2F0ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0aGUgY29udGVudHMu
Ci13cml0ZXIudHJ1bmNhdGUoMCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlvbik7Ci1hc3NlcnQo
IXdyaXRlci5sZW5ndGgpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotYXNzZXJ0KHdyaXRlci5sZW5n
dGggPT0gdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gd3JpdGVy
Lmxlbmd0aCk7Ci0KLS8vIFNlZWsgZm9yd2FyZCBmcm9tIHRoZSBiZWdpbm5pbmcsIHRoZW4gb3Zl
cndyaXRlLCBleHRlbmRpbmcgdGhlIGZpbGUuCi1leHRlbnNpb25PZmZzZXQgPSA0Owotd3JpdGVy
LnNlZWsoZXh0ZW5zaW9uT2Zmc2V0KTsKLXdyaXRlci53cml0ZShibG9iKTsKLWFzc2VydCh3cml0
ZXIubGVuZ3RoID09IHRlc3REYXRhLmxlbmd0aCArIGV4dGVuc2lvbk9mZnNldCk7Ci1hc3NlcnQo
d3JpdGVyLnBvc2l0aW9uID09IHdyaXRlci5sZW5ndGgpOwotCi0vLyBWZXJpZnkgdGhlIGNvbnRl
bnRzLgotY29udGVudHMgPSByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwotZm9yIChp
ID0gMDsgaSA8IGV4dGVuc2lvbk9mZnNldDsgKytpKQotICAgIGFzc2VydChjb250ZW50cy5jaGFy
Q29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaSkpOwotZm9yIChqID0gMDsgaSA8IHdy
aXRlci5sZW5ndGg7ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5jaGFyQ29kZUF0KGkp
ID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwotdGVzdFBhc3NlZCgiT3ZlcmxhcHBlZCB3cml0
ZSAyIHZlcmlmaWVkLiIpOwotCi0vLyBUcnVuY2F0ZSBiYWNrIHRvIGVtcHR5IGFuZCByZXNldCB0
aGUgY29udGVudHMuCi13cml0ZXIudHJ1bmNhdGUoMCk7Ci1hc3NlcnQoIXdyaXRlci5wb3NpdGlv
bik7Ci1hc3NlcnQoIXdyaXRlci5sZW5ndGgpOwotd3JpdGVyLndyaXRlKGJsb2IpOwotd3JpdGVy
LndyaXRlKGJsb2IpOwotYXNzZXJ0KHdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxlbmd0
aCk7Ci1hc3NlcnQod3JpdGVyLnBvc2l0aW9uID09IHdyaXRlci5sZW5ndGgpOwotCi0vLyBTZWVr
IGZvcndhcmQgZnJvbSB0aGUgYmVnaW5uaW5nLCB0aGVuIG92ZXJ3cml0ZSBpbiB0aGUgbWlkZGxl
IG9mIHRoZSBmaWxlLgotZXh0ZW5zaW9uT2Zmc2V0ID0gNDsKLXdyaXRlci5zZWVrKGV4dGVuc2lv
bk9mZnNldCk7Ci13cml0ZXIud3JpdGUoYmxvYik7Ci1hc3NlcnQod3JpdGVyLmxlbmd0aCA9PSAy
ICogdGVzdERhdGEubGVuZ3RoKTsKLWFzc2VydCh3cml0ZXIucG9zaXRpb24gPT0gdGVzdERhdGEu
bGVuZ3RoICsgZXh0ZW5zaW9uT2Zmc2V0KTsKLQotLy8gVmVyaWZ5IHRoZSBjb250ZW50cy4KLWNv
bnRlbnRzID0gcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTsKLWZvciAoaSA9IDA7IGkg
PCBleHRlbnNpb25PZmZzZXQ7ICsraSkKLSAgICBhc3NlcnQoY29udGVudHMuY2hhckNvZGVBdChp
KSA9PSB0ZXN0RGF0YS5jaGFyQ29kZUF0KGkpKTsKLWZvciAoaiA9IDA7IGkgPCB0ZXN0RGF0YS5s
ZW5ndGggKyBleHRlbnNpb25PZmZzZXQ7ICsraSwgKytqKQotICAgIGFzc2VydChjb250ZW50cy5j
aGFyQ29kZUF0KGkpID09IHRlc3REYXRhLmNoYXJDb2RlQXQoaikpOwotZm9yIChqID0gZXh0ZW5z
aW9uT2Zmc2V0OyBpIDwgd3JpdGVyLmxlbmd0aDsgKytpLCArK2opCi0gICAgYXNzZXJ0KGNvbnRl
bnRzLmNoYXJDb2RlQXQoaSkgPT0gdGVzdERhdGEuY2hhckNvZGVBdChqKSk7Ci10ZXN0UGFzc2Vk
KCJPdmVybGFwcGVkIHdyaXRlIDMgdmVyaWZpZWQuIik7Ci1maW5pc2hKU1Rlc3QoKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNh
dGUtZXh0ZW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRy
dW5jYXRlLWV4dGVuZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi1pZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5q
cycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOwotICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Ci19Ci0KLWRl
c2NyaXB0aW9uKCJUZXN0IG9mIGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4iKTsK
LQotZnVuY3Rpb24gb25UZXN0U3VjY2VlZGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJUcnVuY2F0
ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7Ci0gICAgY2xlYW5VcCgpOwotfQotCi1mdW5jdGlvbiB0
cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uU3VjY2Vz
cykKLXsKLSAgICB2YXIgZXh0ZW5zaW9uID0gNTsKLSAgICB2YXIgbGVuZ3RoQ2hlY2tlciA9IGZ1
bmN0aW9uKCkgewotICAgICAgICB2ZXJpZnlGaWxlTGVuZ3RoKGZpbGVFbnRyeSwgY29udGVudHMu
bGVuZ3RoICsgZXh0ZW5zaW9uLCBvblN1Y2Nlc3MpOwotICAgIH07Ci0gICAgdmFyIGV4dGVuc2lv
bkNoZWNrZXIgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMo
ZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGgsIGV4dGVuc2lvbiwgbGVuZ3RoQ2hlY2tlcik7Ci0g
ICAgfTsKLSAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmVy
aWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCBjb250ZW50cywgZXh0ZW5zaW9uQ2hl
Y2tlcik7Ci0gICAgfTsKLSAgICBmaWxlV3JpdGVyLnRydW5jYXRlKGNvbnRlbnRzLmxlbmd0aCAr
IGV4dGVuc2lvbik7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoZmlsZUVudHJ5LCBmaWxlV3JpdGVy
KSB7Ci0gICAgdmFyIGNvbnRlbnRzID0gIkxvcmVtIGlwc3VtIjsKLSAgICB3cml0ZVN0cmluZyhm
aWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRlbnRzLAotICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwg
ZmlsZVdyaXRlciwgY29udGVudHMsIG9uVGVzdFN1Y2NlZWRlZCk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXNldHVwQW5kUnVuVGVzdCgxMDI0
LCAnZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kJywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0
ZXItdXRpbHMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTY5ICswLDAgQEAKLWZ1bmN0aW9uIHN0cmluZ2lmeU9iaihvKQotewotICAgIHMgPSAiIjsKLSAg
ICBpZiAobykKLSAgICAgICAgZm9yIChpbmRleCBpbiBvKSB7Ci0gICAgICAgICAgICBzICs9IGlu
ZGV4ICsgIjogIiArIG9baW5kZXhdICsgIjsiOwotICAgICAgICB9Ci0gICAgcmV0dXJuIHM7Ci19
Ci0KLWZ1bmN0aW9uIG9uRXJyb3IoZSkKLXsKLSAgICB0ZXN0RmFpbGVkKCJHb3QgZXJyb3I6ICIg
KyBzdHJpbmdpZnlPYmooZSkpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0
KHMpCi17Ci0gICAgaWYgKCFzKSB7Ci0gICAgICAgIHZhciBlID0gbmV3IEVycm9yKCJBc3NlcnRp
b24gZmFpbGVkLiAiKTsKLSAgICAgICAgb25FcnJvcihlKTsKLSAgICAgICAgdGhyb3cgZTsKLSAg
ICB9Ci19Ci0KLXZhciBmaWxlRW50cnlGb3JDbGVhbnVwOyAgLy8gU2V0IGFzIHNvb24gYXMgd2Ug
aGF2ZSBvbmUuCi0KLWZ1bmN0aW9uIGNsZWFuVXAoKQotewotICAgIGlmIChmaWxlRW50cnlGb3JD
bGVhbnVwKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVw
LnJlbW92ZShmaW5pc2hKU1Rlc3QsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLS8vIEdlbmVyaWMgZnVuY3Rpb24gdGhhdCBnZXRzIGEgRmlsZSBmcm9tIGEg
RmlsZUVudHJ5IGFuZCBjYWxscyBhIGN1c3RvbSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gb24gaXQu
Ci1mdW5jdGlvbiB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGdW5jLCBhcmcw
LCBhcmcxLCBvblN1Y2Nlc3MpCi17Ci0gICAgZmlsZUVudHJ5LmZpbGUoCi0gICAgICAgIGZ1bmN0
aW9uKGZpbGUpIHsKLSAgICAgICAgICAgIHZlcmlmeUZ1bmMoZmlsZSwgYXJnMCwgYXJnMSwgb25T
dWNjZXNzKTsKLSAgICAgICAgfSwKLSAgICAgICAgb25FcnJvcik7Ci19Ci0KLS8vIEhlbHBlciBm
dW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Rmls
ZUxlbmd0aEhlbHBlcihmaWxlLCBsZW5ndGgsIHVudXNlZCwgb25TdWNjZXNzKQotewotICAgIGFz
c2VydChmaWxlLnNpemUgPT0gbGVuZ3RoKTsKLSAgICBvblN1Y2Nlc3MoKTsKLX0KLQotLy8gVmVy
aWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmlsZUVudHJ5IGhhdmUgdGhlIHN1cHBsaWVkIGxl
bmd0aC4KLWZ1bmN0aW9uIHZlcmlmeUZpbGVMZW5ndGgoZmlsZUVudHJ5LCBsZW5ndGgsIG9uU3Vj
Y2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGaWxlTGVu
Z3RoSGVscGVyLCBsZW5ndGgsIG51bGwsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhlbHBlciBmdW5j
dGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJh
bmdlSXNaZXJvZXNIZWxwZXIoZmlsZSwgc3RhcnQsIGxlbmd0aCwgb25TdWNjZXNzKQotewotICAg
IHZhciBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKLSAgICBmaWxlUmVhZGVyLm9uZXJy
b3IgPSBvbkVycm9yOwotICAgIGZpbGVSZWFkZXIub25sb2FkID0KLSAgICAgICAgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZmlsZVJlYWRlci5yZXN1bHQ7Ci0gICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGFz
c2VydChyZXN1bHQuY2hhckNvZGVBdChpKSA9PSAwKTsKLSAgICAgICAgICAgIG9uU3VjY2Vzcygp
OwotICAgICAgICB9OwotICAgIGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUuc2xp
Y2Uoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKSk7Ci19Ci0KLS8vIFZlcmlmaWVzIHRoYXQgZmlsZUVu
dHJ5LCBhdCBvZmZzZXQsIGlzIGFsbCB6ZXJvZXMgZm9yIGxlbmd0aCBieXRlcy4KLWZ1bmN0aW9u
IHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2VzKGZpbGVFbnRyeSwgb2Zmc2V0LCBsZW5ndGgsIG9uU3Vj
Y2VzcykKLXsKLSAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFu
Z2VJc1plcm9lc0hlbHBlciwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2Vzcyk7Ci19Ci0KLS8vIEhl
bHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgotZnVuY3Rpb24gdmVy
aWZ5Qnl0ZVJhbmdlQXNTdHJpbmdIZWxwZXIoZmlsZSwgc3RhcnQsIGRhdGEsIG9uU3VjY2VzcykK
LXsKLSAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7Ci0gICAgZmlsZVJlYWRl
ci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBmaWxlUmVhZGVyLm9ubG9hZCA9Ci0gICAgICAgIGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0KGZpbGVSZWFkZXIucmVzdWx0ID09IGRhdGEp
OwotICAgICAgICAgICAgb25TdWNjZXNzKCk7Ci0gICAgICAgIH07Ci0gICAgZmlsZVJlYWRlci5y
ZWFkQXNUZXh0KGZpbGUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgZGF0YS5sZW5ndGgpKTsKLX0KLQot
Ly8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmlsZUVudHJ5LCBhdCBvZmZzZXQsIG1h
dGNoIGNvbnRlbnRzIFthIHN0cmluZ10uCi1mdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmlu
ZyhmaWxlRW50cnksIG9mZnNldCwgY29udGVudHMsIG9uU3VjY2VzcykKLXsKLSAgICB2ZXJpZnlG
aWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZ0hlbHBlciwgb2Zm
c2V0LCBjb250ZW50cywgb25TdWNjZXNzKTsKLX0KLQotLy8gQ3JlYXRlcyBhIGZpbGUgY2FsbGVk
IGZpbGVOYW1lIGluIGZpbGVTeXN0ZW0ncyByb290IGRpcmVjdG9yeSwgdHJ1bmNhdGVzIGl0IHRv
IHplcm8gbGVuZ3RoIGp1c3QgaW4gY2FzZSwgYW5kIGNhbGxzIG9uU3VjY2VzcywgcGFzc2luZyBp
dCBhIEZpbGVFbnRyeSBhbmQgRmlsZVdyaXRlciBmb3IgdGhlIG5ldyBmaWxlLgotZnVuY3Rpb24g
Y3JlYXRlRW1wdHlGaWxlKGZpbGVTeXN0ZW0sIGZpbGVOYW1lLCBvblN1Y2Nlc3MpCi17Ci0gICAg
ZnVuY3Rpb24gZ2V0U3VjY2Vzc0Z1bmMoZmlsZUVudHJ5KSB7Ci0gICAgICAgIC8vIENyZWF0ZSBh
IGZyZXNoIEZpbGVXcml0ZXIgaGVyZSwgcmF0aGVyIHRoYW4gcGFzcyBpbiB0aGUgdXNlZCBvbmUu
Ci0gICAgICAgIC8vIFRoaXMgd2F5IHdlIGRvbid0IGFjY2lkZW50YWxseSBsZWF2ZSBvdXIgZXZl
bnQgaGFuZGxlcnMgYXR0YWNoZWQuCi0gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIoZnVuY3Rpb24oZncpIHsKLSAgICAgICAgICAg
ICAgICBvblN1Y2Nlc3MoZmlsZUVudHJ5LCBmdyk7Ci0gICAgICAgICAgICB9LCBvbkVycm9yKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBmdW5jdGlvbiBnZXRGaWxlV3JpdGVyQ2FsbGJhY2soZmls
ZUVudHJ5KSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbihmaWxlV3JpdGVyKSB7Ci0gICAgICAg
ICAgICB2YXIgc3VjY2Vzc0Z1bmMgPSBnZXRTdWNjZXNzRnVuYyhmaWxlRW50cnkpOwotICAgICAg
ICAgICAgZmlsZVdyaXRlci5vbkVycm9yID0gb25FcnJvcjsKLSAgICAgICAgICAgIGZpbGVXcml0
ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGZpbGVXcml0ZXIub253
cml0ZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgdmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50cnks
IDAsIHN1Y2Nlc3NGdW5jKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBmaWxlV3JpdGVy
LnRydW5jYXRlKDApOwotICAgICAgICB9Ci0gICAgfQotICAgIGZ1bmN0aW9uIG9uRmlsZUVudHJ5
KGZpbGVFbnRyeSkgewotICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwID0gZmlsZUVudHJ5Owot
ICAgICAgICB2YXIgb25GaWxlV3JpdGVyID0gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVFbnRy
eSk7Ci0gICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIob25GaWxlV3JpdGVyLCBvbkVycm9y
KTsKLSAgICB9Ci0gICAgYXNzZXJ0KGZpbGVTeXN0ZW0pOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5n
ZXRGaWxlKGZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBvbkZpbGVFbnRyeSwgb25FcnJvcik7Ci19
Ci0KLWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgb2Zmc2V0LCBk
YXRhLCBvblN1Y2Nlc3MpCi17Ci0gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbZGF0YV0pOwotICAg
IGZpbGVXcml0ZXIuc2VlayhvZmZzZXQpOwotICAgIGZpbGVXcml0ZXIud3JpdGUoYmxvYik7Ci0g
ICAgZmlsZVdyaXRlci5vbmVycm9yID0gb25FcnJvcjsKLSAgICBpZiAob2Zmc2V0IDwgMCkKLSAg
ICAgICAgb2Zmc2V0ICs9IGZpbGVXcml0ZXIubGVuZ3RoOwotICAgIGFzc2VydChvZmZzZXQgPj0g
MCk7Ci0gICAgZmlsZVdyaXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGZpbGVX
cml0ZXIub253cml0ZSA9IG51bGw7Ci0gICAgICAgIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5nKGZp
bGVFbnRyeSwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9u
IHNldEZpbGVDb250ZW50cyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIGNvbnRlbnRzLCBvblN1Y2Nl
c3MpIHsKLSAgICBmaWxlV3JpdGVyLm9uZXJyb3IgPSBvbkVycm9yOwotICAgIGZpbGVXcml0ZXIu
b253cml0ZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBudWxs
OwotICAgICAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRlbnRz
LCBvblN1Y2Nlc3MpOwotICAgIH07Ci0gICAgZmlsZVdyaXRlci50cnVuY2F0ZSgwKTsKLX0KLQot
ZnVuY3Rpb24gc2V0dXBBbmRSdW5UZXN0KHNpemUsIHRlc3ROYW1lLCB0ZXN0RnVuYykKLXsKLSAg
ICBpZiAoIXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgICAgIGRlYnVnKCJUaGlzIHRl
c3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBkZWJ1Zygic3RhcnRpbmcgdGVzdCIpOwotICAgIHdlYmtpdFJlcXVlc3RGaWxl
U3lzdGVtKFRFTVBPUkFSWSwgc2l6ZSwgZnVuY3Rpb24oZnMpIHsKLSAgICAgICAgY3JlYXRlRW1w
dHlGaWxlKGZzLCB0ZXN0TmFtZSwgdGVzdEZ1bmMpOwotICAgIH0sIG9uRXJyb3IpOwotfQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci13cml0
ZS1vdmVybGFwcGVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5qcwkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRl
ci13cml0ZS1vdmVybGFwcGVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAKLWlm
ICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCdmcy13b3JrZXItY29t
bW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnZmlsZS13cml0ZXItdXRpbHMuanMnKTsKLX0K
LQotZGVzY3JpcHRpb24oIlRlc3QgdXNpbmcgRmlsZVdyaXRlci5zZWVrIHRvIHdyaXRlIG92ZXJs
YXBwaW5nIGV4aXN0aW5nIGRhdGEgaW4gYSBmaWxlLiIpOwotCi12YXIgZmlsZUVudHJ5OwotdmFy
IGZpbGVXcml0ZXI7Ci12YXIgdGVzdERhdGEgPSAiTG9yZW0gaXBzdW0iOwotdmFyIHNlZWtCYWNr
d2FyZE9mZnNldCA9IC00OwotdmFyIHNlZWtGb3J3YXJkT2Zmc2V0ID0gNDsKLQotZnVuY3Rpb24g
b25UZXN0U3VjY2VlZGVkKCkKLXsKLSAgICB0ZXN0UGFzc2VkKCJBbGwgd3JpdGVzIHZlcmlmaWVk
LiIpOwotICAgIGNsZWFuVXAoKTsKLX0KLQotZnVuY3Rpb24gdmFsaWRhdGVOb25leHRlbmRpbmdX
cml0ZUVuZCgpIHsKLSAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIHRlc3RE
YXRhLmxlbmd0aCArIHNlZWtGb3J3YXJkT2Zmc2V0LCB0ZXN0RGF0YS5zbGljZShzZWVrRm9yd2Fy
ZE9mZnNldCksIG9uVGVzdFN1Y2NlZWRlZCk7Ci19Ci0KLWZ1bmN0aW9uIHZhbGlkYXRlTm9uZXh0
ZW5kaW5nV3JpdGVTdGFydCgpIHsKLSAgICB0ZXN0UGFzc2VkKCJOb25leHRlbmRpbmcgd3JpdGUg
dmFsaWRhdGVkLiIpOwotICAgIGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9PSB0ZXN0RGF0YS5s
ZW5ndGggKiAyKTsKLSAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIDAsIHRl
c3REYXRhLnNsaWNlKDAsIHNlZWtGb3J3YXJkT2Zmc2V0KSwgdmFsaWRhdGVOb25leHRlbmRpbmdX
cml0ZUVuZCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3ROb25leHRlbmRpbmdXcml0ZSgpIHsKLSAgICB3
cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHNlZWtGb3J3YXJkT2Zmc2V0LCB0ZXN0
RGF0YSwgdmFsaWRhdGVOb25leHRlbmRpbmdXcml0ZVN0YXJ0KTsKLX0KLQotZnVuY3Rpb24gc2V0
dXBOb25leHRlbmRpbmdXcml0ZSgpIHsKLSAgICB0ZXN0UGFzc2VkKCJQb3NpdGl2ZSBzZWVrIHZh
bGlkYXRlZC4iKTsKLSAgICBzZXRGaWxlQ29udGVudHMoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCB0
ZXN0RGF0YSArIHRlc3REYXRhLCB0ZXN0Tm9uZXh0ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlv
biB2YWxpZGF0ZVNlZWtGb3J3YXJkKCkgewotICAgIGFzc2VydChmaWxlV3JpdGVyLmxlbmd0aCA9
PSB0ZXN0RGF0YS5sZW5ndGggKyBzZWVrRm9yd2FyZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJh
bmdlQXNTdHJpbmcoZmlsZUVudHJ5LCAwLCB0ZXN0RGF0YS5zbGljZSgwLCBzZWVrRm9yd2FyZE9m
ZnNldCksIHNldHVwTm9uZXh0ZW5kaW5nV3JpdGUpOwotfQotCi1mdW5jdGlvbiB0ZXN0U2Vla0Zv
cndhcmQoKSB7Ci0gICAgd3JpdGVTdHJpbmcoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBzZWVrRm9y
d2FyZE9mZnNldCwgdGVzdERhdGEsIHZhbGlkYXRlU2Vla0ZvcndhcmQpOwotfQotCi1mdW5jdGlv
biBzZXR1cFNlZWtGb3J3YXJkKCkgewotICAgIHRlc3RQYXNzZWQoIk5lZ2F0aXZlIHNlZWsgdmFs
aWRhdGVkLiIpOwotICAgIHNldEZpbGVDb250ZW50cyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHRl
c3REYXRhLCB0ZXN0U2Vla0ZvcndhcmQpOwotfQotCi1mdW5jdGlvbiB2YWxpZGF0ZVNlZWtCYWNr
d2FyZCgpIHsKLSAgICBhc3NlcnQoZmlsZVdyaXRlci5sZW5ndGggPT0gMiAqIHRlc3REYXRhLmxl
bmd0aCArIHNlZWtCYWNrd2FyZE9mZnNldCk7Ci0gICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmco
ZmlsZUVudHJ5LCAwLCB0ZXN0RGF0YS5zbGljZSgwLCB0ZXN0RGF0YS5sZW5ndGggKyBzZWVrQmFj
a3dhcmRPZmZzZXQpLCBzZXR1cFNlZWtGb3J3YXJkKTsKLX0KLQotZnVuY3Rpb24gdGVzdFNlZWtC
YWNrd2FyZCgpIHsKLSAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIHNlZWtC
YWNrd2FyZE9mZnNldCwgdGVzdERhdGEsIHZhbGlkYXRlU2Vla0JhY2t3YXJkKTsKLX0KLQotLy8g
RWFjaCB0ZXN0IGhhcyAzIHBoYXNlczogc2V0dXAsIGV4ZWN1dGlvbiwgYW5kIHZhbGlkYXRpb24u
ICBJbiB0aGUgc2V0dXAgcGhhc2UsIHdlIG1ha2Ugc3VyZSB0aGF0IHRoZXJlJ3MgYSBGaWxlV3Jp
dGVyIHBvaW50aW5nIGF0IGEgZmlsZSB3aXRoIGFwcHJvcHJpYXRlCi0vLyBkYXRhIGZvciB0aGUg
dGVzdCB3ZSB3YW50IHRvIHJ1bi4gIEluIHRoZSBleGVjdXRpb24gcGhhc2UsIHdlIGRvIGEgc2Vl
ayBhbmQgYSB3cml0ZSwgYW5kIHRoZSB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgZG9lcyB0aG9zZSBh
bHNvIHZhbGlkYXRlcyB0aGF0IHRoZSBkYXRhCi0vLyBhY3R1YWxseSBnb3Qgd3JpdHRlbi4gIFNv
IGluIHRoZSB2YWxpZGF0aW9uIHBoYXNlLCB3ZSBvbmx5IGhhdmUgdG8gY2hlY2sgdGhhdCB0aGUg
cmVzdCBvZiB0aGUgZmlsZSBkaWRuJ3QgZ2V0IGNvcnJ1cHRlZCB3aGlsZSB3ZSB3ZXJlIHdyaXRp
bmcgb3VyIGJpdC4KLWZ1bmN0aW9uIHJ1blRlc3QoZmlsZUVudHJ5SW4sIGZpbGVXcml0ZXJJbikg
ewotICAgIGZpbGVFbnRyeSA9IGZpbGVFbnRyeUluOwotICAgIGZpbGVXcml0ZXIgPSBmaWxlV3Jp
dGVySW47Ci0gICAgc2V0RmlsZUNvbnRlbnRzKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgdGVzdERh
dGEsIHRlc3RTZWVrQmFja3dhcmQpOwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1z
ZXR1cEFuZFJ1blRlc3QoMTAyNCwgJ2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZCcsIHJ1blRl
c3QpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0
LXV0aWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9mcy10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDkyICswLDAgQEAKLWZ1bmN0aW9uIGJpbmRDYWxsYmFjayhvYmosIGNhbGxiYWNrLCBhcmcx
LCBhcmcyLCBhcmczKQotewotICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHsKLSAgICAgICAgaWYg
KGFyZyA9PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBjYWxsYmFjay5hcHBseShvYmosIFthcmcx
LCBhcmcyLCBhcmczXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5
KG9iaiwgW2FyZywgYXJnMSwgYXJnMiwgYXJnM10pOwotICAgIH07Ci19Ci0KLS8vIFVzYWdlOgot
Ly8gICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXI7Ci0vLwotLy8gICBoZWxwZXIucnVuKGZ1
bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhpbmcgdGhhdCBldmVudHVhbGx5IGNhbGxzIGhlbHBlci5k
b25lKCk7ICovIH0pOwotLy8gICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyAvKiBkbyBzb21ldGhp
bmcgdGhhdCBldmVudHVhbGx5IGNhbGxzIGhlbHBlci5kb25lKCk7ICovIH0pOwotLy8gICAuLi4K
LS8vICAgaGVscGVyLmpvaW4oam9pbkNhbGxiYWNrKTsKLS8vCi12YXIgSm9pbkhlbHBlciA9IGZ1
bmN0aW9uKCkKLXsKLSAgICB0aGlzLnBlbmRpbmdPcGVyYXRpb25zID0gW107Ci0gICAgdGhpcy5w
ZW5kaW5nT3BlcmF0aW9uQ291bnQgPSAwOwotICAgIHRoaXMuam9pbkNhbGxiYWNrID0gbnVsbDsK
LQotICAgIHRoaXMucnVuID0gZnVuY3Rpb24ob3BlcmF0aW9uKQotICAgIHsKLSAgICAgICAgdGhp
cy5wZW5kaW5nT3BlcmF0aW9uQ291bnQrKzsKLSAgICAgICAgb3BlcmF0aW9uKCk7Ci0gICAgfTsK
LQotICAgIC8vIENhbGwgdGhpcyB3aGVuIGFuIG9wZXJhdGlvbiBpcyBkb25lLgotICAgIHRoaXMu
ZG9uZSA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMucGVuZGluZ09wZXJhdGlvbkNv
dW50LS07Ci0gICAgICAgIGlmICh0aGlzLnBlbmRpbmdPcGVyYXRpb25Db3VudCA9PSAwICYmIHRo
aXMuam9pbkNhbGxiYWNrKQotICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJhY2soKTsKLSAgICB9
OwotCi0gICAgLy8gVGhpcyBldmVudHVhbGx5IGNhbGxzIHRoZSBqb2luQ2FsbGJhY2sgd2hlbiBo
ZWxwZXIuZG9uZSgpIGlzIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGhlbHBlci5ydW4oKSBpcyBj
YWxsZWQuCi0gICAgdGhpcy5qb2luID0gZnVuY3Rpb24oam9pbkNhbGxiYWNrKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMucGVuZGluZ09wZXJhdGlvbkNvdW50ID09IDApCi0gICAgICAgICAgICBq
b2luQ2FsbGJhY2soKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5qb2luQ2FsbGJh
Y2sgPSBqb2luQ2FsbGJhY2s7Ci0gICAgfTsKLX07Ci0KLS8vIFJlbW92ZSBldmVyeXRoaW5nIGlu
IHRoZSBnaXZlbiBkaXJlY3RvcnkuCi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJl
Y3RvcnksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciBSZW1vdmVB
bGxJbkRpcmVjdG9yeUhlbHBlciA9IGZ1bmN0aW9uKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykgewotICAgICAgICB0aGlzLmVudHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMuZG9u
ZSA9IGZhbHNlOwotICAgICAgICB0aGlzLnJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMuc3Vj
Y2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJh
Y2sgPSBlcnJvckNhbGxiYWNrOwotCi0gICAgICAgIHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2sg
PSBiaW5kQ2FsbGJhY2sodGhpcywgZnVuY3Rpb24oZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICgtLXRoaXMuZW50cmllc0NvdW50ID09IDAgJiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sg
JiYgdGhpcy5kb25lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsK
LSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuZW50cmllc0NhbGxiYWNrID0gYmluZENh
bGxiYWNrKHRoaXMsIGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAg
IHRoaXMuZW50cmllc0NvdW50Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNE
aXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZl
bHkodGhpcy5lbnRyeVJlbW92ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKHRo
aXMuZW50cnlSZW1vdmVkQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhp
cy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxs
YmFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmVudHJpZXNDb3VudCA+IDApCi0gICAg
ICAgICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMu
c3VjY2Vzc0NhbGxiYWNrKQotICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMucmVtb3ZlQWxsSW5EaXJlY3RvcnkgPSBmdW5j
dGlvbihkaXJlY3RvcnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMucmVhZGVyID0gZGly
ZWN0b3J5LmNyZWF0ZVJlYWRlcigpOwotICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJp
ZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH07
Ci0gICAgfTsKLQotICAgIHZhciBoZWxwZXIgPSBuZXcgUmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxw
ZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIucmVtb3ZlQWxs
SW5EaXJlY3RvcnkoZGlyZWN0b3J5KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMt
d29ya2VyLWNvbW1vbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMCwwIEBACi1mdW5jdGlv
biByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZGlyZWN0b3J5KSB7Ci0gICAgaWYgKCFkaXJlY3Rv
cnkpCi0gICAgICAgIHJldHVybjsKLSAgICB2YXIgcmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJl
YWRlcigpOwotICAgIGRvIHsKLSAgICAgICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVhZEVudHJp
ZXMoKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAg
ICBlbnRyaWVzW2ldLnJlbW92ZVJlY3Vyc2l2ZWx5KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgZW50cmllc1tpXS5yZW1vdmUoKTsKLSAgICAgICAgfQotICAgIH0gd2hpbGUg
KGVudHJpZXMubGVuZ3RoKTsKLX0KLQotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cyAmJiAhdGhpcy53
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMg
RmlsZVN5c3RlbSBBUEkuJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWNvcHkuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1jb3B5LmpzCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWNv
cHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjU3ICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBb
Ci0gICAgewotICAgICAgICBuYW1lOiAnQ29weUZpbGVTaW1wbGUnLAotICAgICAgICBwcmVjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3Rz
OiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAn
L2EnLCAnYycpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30KLSAgICAgICAg
XSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlEaXJlY3RvcnlTaW1wbGUnLAot
ICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5
OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2EnLCAnYycpOyB9LAotICAgICAgICBd
LAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGlyZWN0b3J5OnRy
dWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5RmlsZVRv
RGlmZmVyZW50RGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVl
fQotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAgICAgXSwKLSAg
ICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGly
ZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBu
YW1lOiAnQ29weUZpbGVXaXRoRW1wdHlOYW1lJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2EvYicsICcvYycsIG51bGwpOyB9LAotICAg
ICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICdDb3B5RmlsZVdpdGhFbXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAot
ICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBd
LAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5jb3B5KCcvYS9iJywgJy9hJywgbnVsbCwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAn
Q29weUZpbGVXaXRoU2FtZU5hbWUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJy
b3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9z
dGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIG5hbWU6ICdDb3B5Rm9yTm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAg
IHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5
OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3Rz
OiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywg
Jy9jJywgJ2InLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAg
ICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlFbnRyeVRv
Tm9uRXhpc3RlbnREaXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvYid9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hL2InLCAnL2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9V
TkRfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6
ICdDb3B5RW50cnlUb0l0c0NoaWxkJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBb
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy9hL2In
LCAnZCcsIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYS9iJywgJy9hL2IvYycsICdkJywg
RmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAg
ICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRy
dWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ0NvcHlSZWN1cnNpdmUn
LAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYi9kJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJl
Y3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAg
ICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9iL2QnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYScs
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2InLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2IvYS9iL2MnfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2IvYS9iL2QnfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsK
LSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nQ29weUZpbGVUb0ZpbGUiLAotICAgICAgICBwcmVj
b25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EifSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJiIik7fQotICAgICAgICBd
LAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ0NvcHlEaXJlY3RvcnlUb0VtcHR5RGlyZWN0b3J5
IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIiwg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAg
ICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5
KCIvYSIsIi8iLCJjIik7fQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIiwgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Ii9hL2IifSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVj
dG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvYiJ9LAotICAgICAgICBdLAot
ICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdDb3B5RmlsZVRvRGlyZWN0
b3J5IiwKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9h
In0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
aGVscGVyLmNvcHkoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9F
UlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5
OiB0cnVlfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3
cml0aW5nQ29weURpcmVjdG9yeVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikge2hlbHBlci5jb3B5KCIvYSIsIi8iLCJiIixGaWxlRXJyb3Iu
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTogdHJ1ZX0s
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7
Ci0gICAgICAgIG5hbWU6ICJPdmVyd3JpdGluZ0NvcHlGaWxlVG9Ob25lbXB0eURpcmVjdG9yeSIs
Ci0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImIiLEZpbGVF
cnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9z
dGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDoiL2IvYyJ9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3Zl
cndyaXRpbmdDb3B5RGlyZWN0b3J5VG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9
LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7aGVscGVyLmNvcHkoIi9hIiwiLyIsImMiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNB
VElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtm
dWxsUGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5
OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAg
IH0sCi1dOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1n
ZXQtZW50cnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9vcC1nZXQtZW50cnkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE1NSArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFt
ZTogJ0NyZWF0ZVNpbXBsZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3Rv
cnkoJy8nLCAnYScsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InLCB7Y3JlYXRlOnRydWV9KTsgfQotICAgICAg
ICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
JywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0gICAg
ICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdDcmVhdGVOZXN0ZWQnLAotICAg
ICAgICBwcmVjb25kaXRpb246IFsgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7Y3JlYXRlOnRy
dWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0
b3J5KCcvYScsICdiJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EvYicsICdjJywge2NyZWF0ZTp0cnVlfSk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgn
L2EvYi9jJywgJ2QnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EvYi9jL2QnLCAnZScsIHtjcmVhdGU6dHJ1ZX0pOyB9
LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hL2IvYy9kL2UnfSwKLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAg
bmFtZTogJ0NyZWF0ZU5lc3RlZFdpdGhBYnNvbHV0ZVBhdGgnLAotICAgICAgICBwcmVjb25kaXRp
b246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2R1bW15JywgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2R1bW15JywgJy9hJywge2NyZWF0ZTp0cnVlfSk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgn
L2R1bW15JywgJy9hL2InLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvZHVtbXknLCAnL2EvYi9jJywge2NyZWF0
ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERp
cmVjdG9yeSgnL2R1bW15JywgJy9hL2IvYy9kJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9kdW1teScsICcvYS9iL2Mv
ZC9lJywge2NyZWF0ZTp0cnVlfSk7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvZHVtbXknLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jL2QvZSd9LAotICAgICAgICBdLAotICAgIH0s
Ci0gICAgewotICAgICAgICBuYW1lOiAnQ3JlYXRlTmVzdGVkV2l0aFJlbGF0aXZlUGF0aCcsCi0g
ICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGly
ZWN0b3J5OnRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy4vYicsIHtjcmVh
dGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRE
aXJlY3RvcnkoJy9hJywgJy4vLi4uJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4vYicsIHtjcmVh
dGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRE
aXJlY3RvcnkoJy9hJywgJy4uLy4uL2IvYycsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy9hLy4uLy4u
L2QnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcvYS8uLi8uLi9iLy4vYy8uLi8uLi8uLi8uLi8uLi9l
Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4uL2YnLCB7Y3JlYXRlOnRydWV9KTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcvYS8u
Li8uLi4vZycsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EnLCAnLi9iLnR4
dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvYScsICcuLi9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi8uLi9iL2Mu
dHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy9hJywgJy9hLy4uLy4uL2QudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9h
Ly4uLy4uL2IvLi9jLy4uLy4uLy4uLy4uLy4uL2UudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy4uLi9m
LnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvYScsICcvYS8uLi8uLi4vZy50eHQnLCB7Y3JlYXRlOnRydWV9LCBG
aWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9kJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9lJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9mJywgbm9uZXhpc3RlbnQ6
dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2YnLCBub25leGlzdGVudDp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2cnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EvZycsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYS9iLnR4dCd9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi50eHQnfSwKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2IvYy50eHQnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2QudHh0J30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9lLnR4dCd9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvZi50eHQnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDonL2EvZi50eHQnLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2cudHh0Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9h
L2cudHh0Jywgbm9uZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAgIG5hbWU6ICdHZXRFeGlzdGluZ0VudHJ5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBb
IF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldERpcmVjdG9yeSgnLycsICdhJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYicsIHtjcmVhdGU6dHJ1
ZX0pOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3Rv
cnkoJy8nLCAnYScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ2InKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBb
Ci0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAg
IG5hbWU6ICdHZXROb25FeGlzdGVudCcsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWyBdLAotICAg
ICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRE
aXJlY3RvcnkoJy8nLCAnYScsIHt9LCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYicsIHt9LCBG
aWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycsICcvbm9uZXhpc3RlbnQvYScsIHtjcmVhdGU6dHJ1
ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICcvbm9uZXhpc3RlbnQvYicsIHtjcmVhdGU6dHJ1
ZX0sIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0
Y29uZGl0aW9uOiBbIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRGaWxlRm9y
RGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhJywg
e30sIEZpbGVFcnJvci5UWVBFX01JU01BVENIX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnL2EnLCB7fSwgRmlsZUVycm9yLlRZUEVf
TUlTTUFUQ0hfRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0s
Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXREaXJlY3RvcnlGb3JGaWxlJywKLSAg
ICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJ30KLSAgICAg
ICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJ2EnLCB7fSwgRmlsZUVycm9yLlRZUEVfTUlTTUFUQ0hf
RVJSKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0
b3J5KCcvJywgJy9hJywge30sIEZpbGVFcnJvci5UWVBFX01JU01BVENIX0VSUik7IH0sCi0gICAg
ICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EnfQotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnQ3JlYXRlV2l0
aEV4Y2x1c2l2ZScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9
Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnLycsICdhJywge2NyZWF0ZTp0cnVlLCBleGNsdXNp
dmU6dHJ1ZX0sIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2InLCB7Y3JlYXRl
OnRydWUsIGV4Y2x1c2l2ZTp0cnVlfSwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
Uik7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1tZXRhZGF0YS5qcwkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9v
cC1nZXQtbWV0YWRhdGEuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjcgKzAsMCBAQAotdmFyIHRl
c3RDYXNlcyA9IFsKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdHZXRNZXRhZGF0YScsCi0gICAgICAg
IHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvdG1wJ30sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9maWxlMScsIHNpemU6MH0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9maWxlMicsIHNpemU6MTB9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvZmlsZTMnLCBzaXpl
OjkwfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy8nKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvJywgJy9hJywge2NyZWF0ZTp0cnVl
fSk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRh
KCcvYScpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRNZXRh
ZGF0YSgnL2ZpbGUxJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldE1ldGFkYXRhKCcvZmlsZTInKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy9maWxlMycpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJy9iJywge2NyZWF0ZTp0cnVlfSk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldE1ldGFkYXRhKCcvYicpOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUoJy90bXAnKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0TWV0YWRhdGEoJy90
bXAnLCBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLnNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCcvYS5yZXR1cm5lZC5t
b2RpZmljYXRpb25UaW1lJywgJy8ucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScpOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5zaG91bGRCZUdyZWF0ZXJUaGFuT3JF
cXVhbCgnL2IucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScsICcvLnJldHVybmVkLm1vZGlmaWNh
dGlvblRpbWUnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuc2hv
dWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoJy9iLnJldHVybmVkLm1vZGlmaWNhdGlvblRpbWUnLCAn
L2EucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZScpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBv
c3Rjb25kaXRpb246IFsgXSwKLSAgICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LXBhcmVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1wYXJlbnQuanMJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0
LXBhcmVudC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwyMSArMCwwIEBACi12YXIgdGVzdENhc2Vz
ID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ0dldFBhcmVudCcsCi0gICAgICAgIHByZWNvbmRp
dGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hL2IvYyd9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy8nKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcvYScpOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRQYXJlbnQoJy9hL2In
KTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0UGFyZW50KCcv
YS9iL2MnKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAg
ICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYi9jJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLV07CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1tb3ZlLmpzCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLW1vdmUuanMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjUyICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewot
ICAgICAgICBuYW1lOiAnTW92ZUZpbGVTaW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2EvYid9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycp
OyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtm
dWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYicsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9jJ30K
LSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVEaXJlY3RvcnlT
aW1wbGUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlz
RGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hL2InLCAnL2EnLCAnYycpOyB9LAot
ICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2In
LCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycsIGlzRGly
ZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdN
b3ZlRmlsZVRvRGlmZmVyZW50RGlyZWN0b3J5JywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0g
ICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAg
ICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVj
dG9yeTp0cnVlfQotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVu
Y3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9jJywgJ2QnKTsgfSwKLSAgICAg
ICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicv
YScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iJywgbm9u
ZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jL2QnfQotICAgICAgICBd
LAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRoRW1wdHlOYW1lJywK
LSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAg
ICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIubW92ZSgn
L2EvYicsICcvYycsIG51bGwpOyB9LAotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9u
OiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9hL2InLCBub25leGlzdGVudDp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2MvYid9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5h
bWU6ICdNb3ZlRmlsZVdpdGhFbXB0eU5hbWVUb1NhbWVEaXJlY3RvcnknLAotICAgICAgICBwcmVj
b25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVl
fSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9LAotICAgICAgICBdLAotICAgICAgICB0
ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9i
JywgJy9hJywgbnVsbCwgRmlsZUVycm9yLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0g
ICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9
LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnTW92ZUZpbGVXaXRo
U2FtZU5hbWUnLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9
LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hJywgJ2InLCBGaWxlRXJyb3IuSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAgIG5hbWU6ICdNb3ZlRm9yTm9uRXhpc3RlbnRFbnRyeScsCi0gICAgICAgIHByZWNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9jJywg
aXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92ZSgnL2EvYicpOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9jJywgJ2InLCBG
aWxlRXJyb3IuTk9UX0ZPVU5EX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
XSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVFbnRyeVRvTm9uRXhpc3RlbnRE
aXJlY3RvcnknLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYid9
LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLm1vdmUoJy9hL2InLCAnL2MnLCAnYicsIEZpbGVFcnJvci5OT1RfRk9VTkRfRVJSKTsgfSwK
LSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9i
J30sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdNb3ZlRW50cnlU
b0l0c0NoaWxkJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2In
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYi9jJywgaXNE
aXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9hJywgJy9hL2InLCAnZCcsIEZpbGVF
cnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYS9iJywgJy9hL2IvYycsICdkJywgRmlsZUVycm9yLklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYS9iL2MnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwK
LSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ01vdmVSZWN1cnNpdmUnLAotICAgICAgICBw
cmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYS9iL2MnfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDon
L2EvYi9kJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0s
Ci0gICAgICAgIF0sCi0gICAgICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLm1vdmUoJy9hJywgJy9iJywgJ2EnKTsgfSwKLSAgICAgICAgXSwKLSAgICAg
ICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0
ZW50OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAot
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9hL2IvYyd9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OicvYi9hL2IvZCd9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAi
T3ZlcndyaXRpbmdNb3ZlRmlsZVRvRmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiJ9LAot
ICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rj
b25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAgICAgICAgXSwKLSAg
ICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRvRW1w
dHlEaXJlY3RvcnkiLAotICAgICAgICBwcmVjb25kaXRpb246IFsKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2EiLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2Ev
YiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OnRydWV9LAotICAg
ICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
aGVscGVyLm1vdmUoIi9hIiwiLyIsImMiKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25k
aXRpb246IFsKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MiLCBpc0RpcmVjdG9yeTp0cnVlfSwK
LSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YSIsIG5vbmV4aXN0ZW50OnRydWV9LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAg
ICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRmlsZVRvRGlyZWN0b3J5IiwKLSAgICAgICAgcHJlY29u
ZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Ii9hIn0sCi0gICAgICAgICAgICB7ZnVs
bFBhdGg6Ii9iIiwgaXNEaXJlY3Rvcnk6IHRydWV9LAotICAgICAgICBdLAotICAgICAgICB0ZXN0
czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIs
ImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAg
ICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgXSwK
LSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogIk92ZXJ3cml0aW5nTW92ZURpcmVjdG9yeVRv
RmlsZSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIv
YSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IifSwKLSAg
ICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
e2hlbHBlci5tb3ZlKCIvYSIsIi8iLCJiIixGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKTt9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2EiLCBpc0RpcmVjdG9yeTogdHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBh
dGg6Ii9iIn0sCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICJPdmVy
d3JpdGluZ01vdmVGaWxlVG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRo
OiIvYiIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9
LAotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7aGVscGVyLm1vdmUoIi9hIiwiLyIsImIiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNB
VElPTl9FUlIpO30KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOiIvYSJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYiIsIGlzRGly
ZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2IvYyJ9LAotICAgICAgICBd
LAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAiT3ZlcndyaXRpbmdNb3ZlRGlyZWN0b3J5
VG9Ob25lbXB0eURpcmVjdG9yeSIsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAg
ICAge2Z1bGxQYXRoOiIvYSIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxs
UGF0aDoiL2EvYiJ9LAotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0
cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgICAg
ICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7aGVscGVyLm1vdmUoIi9h
IiwiLyIsImMiLEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpO30KLSAgICAgICAg
XSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOiIvYSIs
IGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDoiL2EvYiJ9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOiIvYyIsIGlzRGlyZWN0b3J5OiB0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDoiL2MvZCJ9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC1yZWFkLWRpcmVjdG9yeS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQt
ZGlyZWN0b3J5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL29wLXJlYWQtZGlyZWN0b3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDIzICswLDAgQEAKLXZhciB0ZXN0Q2FzZXMgPSBbCi0gICAgewotICAgICAgICBuYW1lOiAnUmVh
ZERpcmVjdG9yeScsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYics
IGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYycsIH0sCi0gICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9kJywgfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2UnLCBp
c0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2YnLCB9LAotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvZycsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYS9iJ30sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hL2MnfSwKLSAgICAgICAg
XSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIucmVhZERpcmVjdG9yeSgnLycpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5yZW1vdmUoJy9jJyk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLnJlbW92ZSgnL2UnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIucmVtb3ZlKCcvZicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5yZWFkRGlyZWN0b3J5KCcvJyk7IH0KLSAgICAgICAgXSwKLSAgICB9LAotXTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3ZlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVtb3Zl
LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL29wLXJlbW92ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2MiArMCwwIEBACi12YXIg
dGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZVNpbXBsZScsCi0gICAg
ICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0
b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQYXRoOicvYid9Ci0gICAgICAgIF0sCi0gICAg
ICAgIHRlc3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLnJlbW92
ZSgnL2EnKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3Zl
KCcvYicpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5yZW1vdmUo
Jy8nLCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfQotICAgICAgICBdLAot
ICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9u
ZXhpc3RlbnQ6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iJywgbm9uZXhpc3RlbnQ6
dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgbmFtZTogJ1JlbW92ZU5v
blJlY3Vyc2l2ZVdpdGhDaGlsZHJlbicsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAg
ICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1
bGxQYXRoOicvYS9iJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2MnLH0KLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0
aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlKCcvYScsIEZpbGVFcnJvci5JTlZBTElEX01PRElG
SUNBVElPTl9FUlIpOyB9Ci0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAg
ICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2EvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAge2Z1bGxQ
YXRoOicvYS9jJyx9Ci0gICAgICAgIF0sCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG5hbWU6ICdS
ZW1vdmVSZWN1cnNpdmVXaXRob3V0Q2hpbGRyZW4nLAotICAgICAgICBwcmVjb25kaXRpb246IFsK
LSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
XSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIucmVtb3ZlUmVjdXJzaXZlbHkoJy9hJyk7IH0KLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNv
bmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIG5vbmV4aXN0ZW50OnRydWV9
LAotICAgICAgICBdLAotICAgIH0sCi0gICAgewotICAgICAgICBuYW1lOiAnUmVtb3ZlUmVjdXJz
aXZlV2l0aENoaWxkcmVuJywKLSAgICAgICAgcHJlY29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCi0gICAgICAgICAgICB7ZnVsbFBhdGg6
Jy9hL2InLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYycs
fQotICAgICAgICBdLAotICAgICAgICB0ZXN0czogWwotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5yZW1vdmVSZWN1cnNpdmVseSgnL2EnKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIucmVtb3ZlUmVjdXJzaXZlbHkoJy8nLCBGaWxlRXJyb3Iu
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29u
ZGl0aW9uOiBbCi0gICAgICAgICAgICB7ZnVsbFBhdGg6Jy9hJywgbm9uZXhpc3RlbnQ6dHJ1ZX0s
Ci0gICAgICAgIF0sCi0gICAgfSwKLV07Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1jaGFycy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtY2hhcnMuanMJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvb3AtcmVzdHJpY3RlZC1jaGFycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBA
Ci12YXIgdGVzdENhc2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRDaGFy
cycsCi0gICAgICAgIHByZWNvbmRpdGlvbjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYWIn
LCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAg
ICAgICAgIC8vIFRlc3QgZm9yIGRpZmZpY3VsdCBjaGFyYWN0ZXJzIGluICdwYXRoJyBwYXJhbWV0
ZXJzLgotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2E8YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E+YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2E6YicsIHtj
cmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvJywgJ2E/YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAg
ZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EqYicsIHtjcmVhdGU6dHJ1
ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2EiYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2F8YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
PGFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnOmFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnP2FiJywge2Ny
ZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVy
LmdldEZpbGUoJy8nLCAnKmFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnImFiJywge2NyZWF0ZTp0cnVl
fSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUo
Jy8nLCAnfGFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYjwnLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdh
YjonLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYj8nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYionLCB7Y3Jl
YXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdhYiInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYnwnLCB7Y3JlYXRlOnRydWV9
LCAwKTsgfSwKLQotICAgICAgICAgICAgLy8gT25seSAnXFwnIGlzIGRpc2FsbG93ZWQuCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVxcYicsIHtj
cmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotCi0g
ICAgICAgICAgICAvLyBUZXN0IGZvciBkaWZmaWN1bHQgY2hhcmFjdGVycyBpbiAnbmFtZScgcGFy
YW1ldGVycy4KLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2Fi
JywgJy8nLCAnIGE8YicsIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5jb3B5KCcvYWInLCAnLycsICcgYTpiJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywgJyBhP2InLCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnIGEqYics
IDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYWIn
LCAnLycsICcgYSJiJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmNvcHkoJy9hYicsICcvJywgJyBhfGInLCAwKTsgfSwKLQotICAgICAgICAgICAgLy8gJ05h
bWUnIHBhcmFtZXRlciBjYW5ub3QgY29udGFpbiAnLycgb3IgJ1xcJy4KLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2FiJywgJy8nLCAnYS9iJywgRmlsZUVycm9y
LklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmNvcHkoJy9hYicsICcvJywgJ2FcXGInLCBGaWxlRXJyb3IuSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAgXSwKLSAgICAgICAgcG9zdGNvbmRpdGlvbjog
WwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYWInLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonYTxiJywgaXNEaXJlY3Rvcnk6ZmFsc2V9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicgYXxiJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAgICB9LAot
XTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJp
Y3RlZC1uYW1lcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL29wLXJlc3RyaWN0ZWQtbmFtZXMuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC1uYW1lcy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi12YXIgdGVzdENhc2VzID0gWwotICAg
IHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWROYW1lcycsCi0gICAgICAgIHByZWNvbmRpdGlv
bjogWwotICAgICAgICAgICAge2Z1bGxQYXRoOicvYScsIGlzRGlyZWN0b3J5OnRydWV9LAotICAg
ICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0b3J5OnRydWV9LAotICAgICAgICAgICAg
e2Z1bGxQYXRoOicvYycsIGlzRGlyZWN0b3J5OnRydWV9Ci0gICAgICAgIF0sCi0gICAgICAgIHRl
c3RzOiBbCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8n
LCAnLicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVFcnJvci5TRUNVUklUWV9FUlIpOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJy4uJywge2NyZWF0
ZTp0cnVlfSwgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnY29uJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
Q09OJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnQ29uJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnY09uLnR4dCcs
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2EvY29OJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdwcm4nLCB7Y3Jl
YXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RmlsZSgnLycsICdQUk4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdQcm4nLCB7Y3JlYXRlOnRydWV9
LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgn
LycsICdwUm4udHh0Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYS9wck4nLCB7Y3JlYXRlOnRydWV9LCAw
KTsgfSwKLQotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
JywgJ2F1eCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0FVWCcsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0F1eCcs
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2FVeC50eHQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2F1WCcsIHtj
cmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnbnVsJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnTlVMJywge2NyZWF0ZTp0
cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZp
bGUoJy8nLCAnTnVsJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnblVsLnR4dCcsIHtjcmVhdGU6dHJ1ZX0s
IDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcv
JywgJ2EvbnVMJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0KLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdjb20xJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
Q09NMicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ0NvbTQnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdjT003LmZv
bycsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2EvY29NOScsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnbHB0MScs
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ0xQVDInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdMcHQ0Jywge2NyZWF0
ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdl
dEZpbGUoJy8nLCAnbFBUNy5mb28nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhL2xwVDknLCB7Y3JlYXRl
OnRydWV9LCAwKTsgfSwKLQotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5n
ZXRGaWxlKCcvJywgJ2ZvbyAnLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdmb29cbicsIHtjcmVhdGU6dHJ1
ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxl
KCcvJywgJ2Zvby4nLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9u
KGhlbHBlcikgeyBoZWxwZXIuY29weSgnL2EnLCAnLycsICdmb28gICcsIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5jb3B5KCcvYScsICcvJywgJ2Zvb1x0Jywg
MCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmNvcHkoJy9hJywg
Jy8nLCAnZm9vLi4nLCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIubW92ZSgnL2EnLCAnLycsICdmb28gICAgJywgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihoZWxwZXIpIHsgaGVscGVyLm1vdmUoJy9iJywgJy8nLCAnZm9vXHRcdCcsIDApOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5tb3ZlKCcvYycsICcvJywgJ2Zvby4u
Li4uJywgMCk7IH0sCi0gICAgICAgIF0sCi0gICAgICAgIHBvc3Rjb25kaXRpb246IFsKLSAgICAg
ICAgICAgIHtmdWxsUGF0aDonL2ZvbyAgICAnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAg
ICAgIHtmdWxsUGF0aDonL2Zvb1x0XHQnLCBpc0RpcmVjdG9yeTp0cnVlfSwKLSAgICAgICAgICAg
IHtmdWxsUGF0aDonL2Zvby4uLi4uJywgaXNEaXJlY3Rvcnk6dHJ1ZX0KLSAgICAgICAgXSwKLSAg
ICB9LAotXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3At
cmVzdHJpY3RlZC11bmljb2RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvb3AtcmVzdHJpY3RlZC11bmljb2RlLmpzCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLXJlc3RyaWN0
ZWQtdW5pY29kZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi12YXIgdGVzdENh
c2VzID0gWwotICAgIHsKLSAgICAgICAgbmFtZTogJ1Jlc3RyaWN0ZWRVbmljb2RlQ2hhcnMnLAot
ICAgICAgICBwcmVjb25kaXRpb246IFsgXSwKLSAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhYicsIHtjcmVhdGU6dHJ1
ZX0pOyB9LAotCi0gICAgICAgICAgICAvLyBFbWJlZGRlZCBOVUxzIGFyZW4ndCBhbGxvd2VkOyBh
bnl0aGluZyBlbHNlIGluIHRoZSBmaXJzdCAzMiBpcyBmYWlyIGdhbWUuCi0gICAgICAgICAgICBm
dW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwMGInLCB7Y3JlYXRl
OnRydWV9LCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDAxYicsIHtj
cmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBl
ci5nZXRGaWxlKCcvJywgJ2FcdTAwMDJiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwM2InLCB7
Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxw
ZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA0YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDViJywg
e2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwNmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAg
ICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDA3Yics
IHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMDhiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwOWIn
LCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBo
ZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDBhYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAg
ICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMGJi
Jywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAwY2InLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDBk
YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7
IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMGViJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0g
ICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAw
ZmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikg
eyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDEwYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAot
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAw
MTFiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxMmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwK
LSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUw
MDEzYicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVy
KSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMTRiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0s
Ci0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1
MDAxNWInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBl
cikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDE2YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9
LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2Fc
dTAwMTdiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxw
ZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxOGInLCB7Y3JlYXRlOnRydWV9LCAwKTsg
fSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdh
XHUwMDE5YicsIHtjcmVhdGU6dHJ1ZX0sIDApOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVs
cGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywgJ2FcdTAwMWFiJywge2NyZWF0ZTp0cnVlfSwgMCk7
IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAn
YVx1MDAxYmInLCB7Y3JlYXRlOnRydWV9LCAwKTsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGhl
bHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnLycsICdhXHUwMDFjYicsIHtjcmVhdGU6dHJ1ZX0sIDAp
OyB9LAotICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvJywg
J2FcdTAwMWRiJywge2NyZWF0ZTp0cnVlfSwgMCk7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbiho
ZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy8nLCAnYVx1MDAxZWInLCB7Y3JlYXRlOnRydWV9LCAw
KTsgfQotICAgICAgICBdLAotICAgICAgICBwb3N0Y29uZGl0aW9uOiBbCi0gICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hYid9LAotICAgICAgICBdLAotICAgIH0sCi1dOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxwZXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9vcC10ZXN0cy1oZWxw
ZXIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvb3AtdGVzdHMtaGVscGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxMyArMCww
IEBACi0vLyBIZWxwZXIgcm91dGluZS4KLWZ1bmN0aW9uIHRvU3RyaW5nKG9iaikgewotICAgIGlm
IChvYmogPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIHJldHVybiAidW5kZWZpbmVkIjsKLSAgICB9
IGVsc2UgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHsKLSAgICAgICAgaWYgKG9iai5sZW5n
dGggIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICB2YXIgc3RyaW5nQXJyYXkgPSBbXTsKLSAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgICAgIHN0cmluZ0FycmF5LnB1c2godG9TdHJpbmcob2JqW2ldKSk7Ci0gICAgICAgICAgICBz
dHJpbmdBcnJheS5zb3J0KCk7Ci0gICAgICAgICAgICByZXR1cm4gJ1snICsgc3RyaW5nQXJyYXku
am9pbignLFxuICcpICsgJ10nOwotICAgICAgICB9IGVsc2UgaWYgKG9iai5pc0RpcmVjdG9yeSB8
fCBvYmouaXNGaWxlKSB7Ci0gICAgICAgICAgICByZXR1cm4gJ0VOVFJZIHtwYXRoOicgKyBvYmou
ZnVsbFBhdGggKyAnIG5hbWU6JyArIG9iai5uYW1lICsgKG9iai5pc0RpcmVjdG9yeSA/ICcgdHlw
ZTpESVJFQ1RPUlknIDogJyB0eXBlOkZJTEUnKSArICd9JzsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHJldHVybiBvYmogKyAiIjsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAg
ICByZXR1cm4gb2JqICsgIiI7Ci19Ci0KLS8vIENyZWF0ZXMgYSB0ZXN0IGVudmlyb25tZW50IGZv
ciB0aGUgZ2l2ZW4gZW50cmllcyB3aGVyZSBlbnRyaWVzIGlzIGFuIGFycmF5IG9mIHtmdWxsUGF0
aDpTdHJpbmcsIGlzRGlyZWN0b3J5OmJvb2xlYW59IG9iamVjdC4KLS8vIFdoZW4gdGhlIHdvcmxk
IGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LCBzdWNjZXNzQ2FsbGJhY2sgaXMgY2FsbGVkIHdpdGgg
YW4gb2JqZWN0IHRoYXQgaG9sZHMgYWxsIHRoZSBjcmVhdGVkIGVudHJ5IG9iamVjdHMuCi1mdW5j
dGlvbiBjcmVhdGVUZXN0RW52aXJvbm1lbnQoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKQotewotICAgIHZhciBIZWxwZXIgPSBmdW5jdGlvbihmaWxl
U3lzdGVtLCBlbnRyaWVzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi0gICAgewot
ICAgICAgICB0aGlzLmZpbGVTeXN0ZW0gPSBmaWxlU3lzdGVtOwotICAgICAgICB0aGlzLmVudHJp
ZXMgPSBlbnRyaWVzOwotICAgICAgICB0aGlzLmN1cnJlbnQgPSAwOwotICAgICAgICB0aGlzLnN1
Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxi
YWNrID0gZXJyb3JDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHt9OwotCi0g
ICAgICAgIHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxiYWNrID0gZnVuY3Rpb24oZW50cnksIHNpemUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5pc0ZpbGUgJiYgc2l6ZSA+IDApIHsK
LSAgICAgICAgICAgICAgICBlbnRyeS5jcmVhdGVXcml0ZXIoYmluZENhbGxiYWNrKHRoaXMsIGZ1
bmN0aW9uKHdyaXRlcikgewotICAgICAgICAgICAgICAgICAgICB3cml0ZXIudHJ1bmNhdGUoc2l6
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbmVycm9yID0gYmluZENhbGxiYWNrKHRo
aXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRl
ci5vbndyaXRlZW5kID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeS5mdWxsUGF0aF0gPSBlbnRyeTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnkuZnVsbFBhdGgg
KyAnLnNpemUnXSA9IHNpemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5l
eHRFbnRyeSgpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KSwg
YmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFjaykpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1l
bnRbZW50cnkuZnVsbFBhdGhdID0gZW50cnk7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50
W2VudHJ5LmZ1bGxQYXRoICsgJy5zaXplJ10gPSAwOwotICAgICAgICAgICAgdGhpcy5jcmVhdGVO
ZXh0RW50cnkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFj
ayA9IGZ1bmN0aW9uKGVycm9yLCBlbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdEZh
aWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVycm9yLmNvZGUgKyAnIHdoaWxlIGNyZWF0
aW5nICcgKyB0b1N0cmluZyhlbnRyeSkpOwotICAgICAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNr
KGVycm9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuY3JlYXRlTmV4dEVudHJ5ID0gZnVu
Y3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ID49IHRoaXMu
ZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayh0
aGlzLmVudmlyb25tZW50KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLmVudHJpZXNbdGhpcy5jdXJyZW50KytdOwot
ICAgICAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGZpbGVT
eXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoZW50cnkuZnVsbFBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGJp
bmRDYWxsYmFjayh0aGlzLCB0aGlzLmNyZWF0ZVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFj
ayh0aGlzLCB0aGlzLmNyZWF0ZUVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwge2Ny
ZWF0ZTp0cnVlfSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlU3VjY2Vzc0NhbGxiYWNr
LCBlbnRyeS5zaXplKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMuY3JlYXRlRXJyb3JDYWxsYmFj
aykpOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICBpZiAoIWVudHJpZXMgfHwgIWVudHJpZXMu
bGVuZ3RoKSB7Ci0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh7fSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBIZWxwZXIoZmlsZVN5c3RlbSwgZW50cmllcywg
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIuY3JlYXRlTmV4dEVu
dHJ5KCk7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeVRlc3RFbnZpcm9ubWVudChmaWxlU3lzdGVtLCBl
bnRyaWVzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi17Ci0gICAgdmFyIEhlbHBl
ciA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW0sIGVudHJpZXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMuZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW07Ci0g
ICAgICAgIHRoaXMuZW50cmllcyA9IGVudHJpZXM7Ci0gICAgICAgIHRoaXMuY3VycmVudCA9IDA7
Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAg
ICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrOwotICAgICAgICB0aGlzLmV4cGVj
dGVkTm9uZXhpc3RlbnQgPSBmYWxzZTsKLQotICAgICAgICB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxs
YmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5l
eHBlY3RlZE5vbmV4aXN0ZW50KSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnRm91bmQg
dW5leHBlY3RlZCBlbnRyeSAnICsgZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAgICAgICAgIHRo
aXMuZXJyb3JDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1ZlcmlmaWVkIGVudHJ5OiAnICsgdG9TdHJpbmco
ZW50cnkpKTsKLSAgICAgICAgICAgIHRoaXMudmVyaWZ5TmV4dEVudHJ5KCk7Ci0gICAgICAgIH0K
LQotICAgICAgICB0aGlzLnZlcmlmeUVycm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihlcnJvciwgZW50
cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQp
IHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdWZXJpZmllZCBlbnRyeSBkb2VzIE5PVCBl
eGlzdDogJyArIGVudHJ5LmZ1bGxQYXRoKTsKLSAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeU5l
eHRFbnRyeSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChlcnJvciA9PSBGaWxlRXJyb3IuTk9UX0ZPVU5EX0VSUikKLSAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCdOb3QgZm91bmQ6ICcgKyBlbnRyeS5mdWxsUGF0aCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJy
b3IgJyArIGVycm9yLmNvZGUgKyAnIGZvciAnICsgZW50cnkuZnVsbFBhdGgpOwotICAgICAgICAg
ICAgdGhpcy5lcnJvckNhbGxiYWNrKGVycm9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMu
dmVyaWZ5TmV4dEVudHJ5ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
dGhpcy5jdXJyZW50ID49IHRoaXMuZW50cmllcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0
aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMuZW50cmllc1t0aGlzLmN1cnJlbnQr
K107Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkTm9uZXhpc3RlbnQgPSBlbnRyeS5ub25leGlz
dGVudDsKLSAgICAgICAgICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAg
ICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KGVudHJ5LmZ1bGxQYXRoLCB7fSwgYmluZENh
bGxiYWNrKHRoaXMsIHRoaXMudmVyaWZ5U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRo
aXMsIHRoaXMudmVyaWZ5RXJyb3JDYWxsYmFjaywgZW50cnkpKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShlbnRyeS5mdWxsUGF0aCwg
e30sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnZlcmlmeVN1Y2Nlc3NDYWxsYmFjayksIGJpbmRD
YWxsYmFjayh0aGlzLCB0aGlzLnZlcmlmeUVycm9yQ2FsbGJhY2ssIGVudHJ5KSk7Ci0gICAgICAg
IH07Ci0gICAgfTsKLQotICAgIGlmICghZW50cmllcyB8fCAhZW50cmllcy5sZW5ndGgpIHsKLSAg
ICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdmFy
IGhlbHBlciA9IG5ldyBIZWxwZXIoZmlsZVN5c3RlbSwgZW50cmllcywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIudmVyaWZ5TmV4dEVudHJ5KCk7Ci19Ci0KLS8v
IHRlc3RDYXNlIG11c3QgaGF2ZSBwcmVjb25kaXRpb24sIHBvc3Rjb25kaXRpb24gYW5kIHRlc3Qg
ZnVuY3Rpb24gZmllbGQuCi0vLyAoU2VlIHJlc291cmNlcy9vcC0qLmpzIGZvciBleGFtcGxlcy4p
Ci1mdW5jdGlvbiBydW5PcGVyYXRpb25UZXN0KGZpbGVTeXN0ZW0sIHRlc3RDYXNlLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCi17Ci0gICAgdmFyIE9wZXJhdGlvblRlc3RIZWxwZXIg
PSBmdW5jdGlvbihmaWxlU3lzdGVtLCB0ZXN0Q2FzZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5maWxlU3lzdGVtID0gZmlsZVN5c3RlbTsKLSAg
ICAgICAgdGhpcy50ZXN0Q2FzZSA9IHRlc3RDYXNlOwotICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxs
YmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgdGhpcy5lcnJvckNhbGxiYWNrID0gZXJy
b3JDYWxsYmFjazsKLSAgICAgICAgdGhpcy5zdGFnZSA9ICcnOwotICAgICAgICB0aGlzLmVudmly
b25tZW50ID0ge307Ci0gICAgICAgIHRoaXMuY3VycmVudFRlc3QgPSAwOwotCi0gICAgICAgIHRo
aXMuY3VycmVudFJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBbXTsK
LQotICAgICAgICB0aGlzLmdldFN5bWJvbFN0cmluZyA9IGZ1bmN0aW9uKHN5bWJvbCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICd0aGlzLmVudmlyb25tZW50WyInICsgc3ltYm9sICsg
JyJdJzsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnRlc3RTdWNjZXNzQ2FsbGJhY2sgPSBm
dW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3RlZEVycm9y
Q29kZSkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyArIHRoaXMu
c3RhZ2UpOwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVk
ZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMuZW50
cnkgPSBudWxsOwotICAgICAgICB0aGlzLnRlc3RHZXRTdWNjZXNzQ2FsbGJhY2sgPSBmdW5jdGlv
bihlbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCF0aGlzLmV4cGVjdGVkRXJyb3JD
b2RlKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnU3VjY2VlZGVkOiAnICsgdGhpcy5z
dGFnZSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnRyeSA9IGVudHJ5OwotICAgICAgICAgICAg
ICAgIHNob3VsZEJlLmFwcGx5KHRoaXMsIFsndGhpcy5lbnZpcm9ubWVudFt0aGlzLmVudHJ5LmZ1
bGxQYXRoXS5mdWxsUGF0aCcsICciJyArIGVudHJ5LmZ1bGxQYXRoICsgJyInXSk7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25tZW50W3RoaXMuZW50
cnkuZnVsbFBhdGhdLmlzRmlsZSArICIiJywgJyInICsgZW50cnkuaXNGaWxlICsgJyInXSk7Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgWyd0aGlzLmVudmlyb25tZW50W3Ro
aXMuZW50cnkuZnVsbFBhdGhdLmlzRGlyZWN0b3J5ICsgIiInLCAnIicgKyBlbnRyeS5pc0RpcmVj
dG9yeSArICciJ10pOwotICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBz
dWNjZWVkZWQgd2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRo
aXMudGVzdENyZWF0ZVN1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIXRoaXMuZXhwZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCdTdWNjZWVkZWQ6ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAg
ICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5LmZ1bGxQYXRoXSA9IGVudHJ5OwotICAgICAgICAg
ICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQgd2hpbGUgJyArIHRoaXMu
c3RhZ2UpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMudGVzdEdldFBhcmVudFN1Y2Nlc3ND
YWxsYmFjayA9IGZ1bmN0aW9uKGVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXRo
aXMuZXhwZWN0ZWRFcnJvckNvZGUpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdTdWNj
ZWVkZWQ6ICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICBkZWJ1ZygnUGFyZW50IGVu
dHJ5OiAnICsgdG9TdHJpbmcoZW50cnkpKTsKLSAgICAgICAgICAgICAgICB0aGlzLnJ1bk5leHRU
ZXN0KCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdV
bmV4cGVjdGVkbHkgc3VjY2VlZGVkIHdoaWxlICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgfTsK
LQotICAgICAgICB0aGlzLnRlc3RSZWFkRW50cmllc1N1Y2Nlc3NDYWxsYmFjayA9IGZ1bmN0aW9u
KGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLmV4cGVjdGVkRXJyb3JD
b2RlKQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWRseSBzdWNjZWVkZWQg
d2hpbGUgJyArIHRoaXMuc3RhZ2UpOwotCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGVudHJpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkRW50cmllcy5w
dXNoKGVudHJpZXNbaV0pOwotCi0gICAgICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWFkZXIucmVhZEVudHJpZXMoYmluZENhbGxiYWNr
KHRoaXMsIHRoaXMudGVzdFJlYWRFbnRyaWVzU3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNr
KHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRlZDogJyAr
IHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgZGVidWcoJ0VudHJpZXM6ICcgKyB0b1N0cmluZyh0
aGlzLnJlYWRFbnRyaWVzKSk7Ci0gICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgdGhpcy50ZXN0TWV0YWRhdGFTdWNjZXNzQ2FsbGJhY2sgPSBmdW5j
dGlvbihtZXRhZGF0YSwgZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5l
eHBlY3RlZEVycm9yQ29kZSkgewotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ1N1Y2NlZWRl
ZDogJyArIHRoaXMuc3RhZ2UpOwotICAgICAgICAgICAgICAgIHZhciBzeW1ib2wgPSBlbnRyeSAr
ICcucmV0dXJuZWQubW9kaWZpY2F0aW9uVGltZSc7Ci0gICAgICAgICAgICAgICAgdGhpcy5lbnZp
cm9ubWVudFtzeW1ib2xdID0gbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAgICAg
ICAgICB2YXIgZW50cnlNZXRhZGF0YVN0cmluZyA9IHRoaXMuZ2V0U3ltYm9sU3RyaW5nKHN5bWJv
bCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5ICE9ICcvJykgewotICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbC5hcHBseSh0aGlzLCBbZW50cnlNZXRhZGF0
YVN0cmluZywgJ3RoaXMucm91bmRlZFN0YXJ0RGF0ZSddKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAg
dGhpcy5lbnZpcm9ubWVudFtlbnRyeSArICcucmV0dXJuZWQuc2l6ZSddID0gbWV0YWRhdGEuc2l6
ZTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGVudHJ5U2l6ZVN0cmluZyA9IHRoaXMuZ2V0U3lt
Ym9sU3RyaW5nKGVudHJ5ICsgJy5yZXR1cm5lZC5zaXplJyk7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBleHBlY3RlZFNpemVTdHJpbmcgPSB0aGlzLmdldFN5bWJvbFN0cmluZyhlbnRyeSArICcu
c2l6ZScpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZS5hcHBseSh0aGlzLCBbZXhwZWN0
ZWRTaXplU3RyaW5nLCBlbnRyeVNpemVTdHJpbmddKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgdGhpcy5ydW5OZXh0VGVzdCgpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZGx5IHN1Y2NlZWRlZCB3aGlsZSAnICsg
dGhpcy5zdGFnZSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy50ZXN0RXJyb3JDYWxsYmFj
ayA9IGZ1bmN0aW9uKGVycm9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5leHBl
Y3RlZEVycm9yQ29kZSkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlLmFwcGx5KHRoaXMsIFsn
dGhpcy5leHBlY3RlZEVycm9yQ29kZSArICIiJywgJyInICsgZXJyb3IuY29kZSArICciJ10pOwot
ICAgICAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnR290IHVuZXhwZWN0ZWQgZXJyb3IgJyArIGVy
cm9yLmNvZGUgKyAnIHdoaWxlICcgKyB0aGlzLnN0YWdlKTsKLSAgICAgICAgICAgICAgICB0aGlz
LmVycm9yQ2FsbGJhY2soZXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAg
ICAgIC8vIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLSAgICAgICAgdGhpcy5nZXRGaWxlID0gZnVuY3Rpb24oZW50cnksIHBh
dGgsIGZsYWdzLCBleHBlY3RlZEVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5leHBlY3RlZEVycm9yQ29kZSA9IGV4cGVjdGVkRXJyb3JDb2RlOwotICAgICAgICAgICAgdGhp
cy5zdGFnZSA9ICciJyArIGVudHJ5ICsgJyIuZ2V0RmlsZSgiJyArIHBhdGggKyAnIiknOwotICAg
ICAgICAgICAgdmFyIHN1Y2Nlc3NDYWxsYmFjayA9IChmbGFncyAmJiBmbGFncy5jcmVhdGUpID8g
dGhpcy50ZXN0Q3JlYXRlU3VjY2Vzc0NhbGxiYWNrIDogdGhpcy50ZXN0R2V0U3VjY2Vzc0NhbGxi
YWNrOwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uZ2V0RmlsZShwYXRoLCBm
bGFncywgYmluZENhbGxiYWNrKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0
aGlzLCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhp
cy5nZXREaXJlY3RvcnkgPSBmdW5jdGlvbihlbnRyeSwgcGF0aCwgZmxhZ3MsIGV4cGVjdGVkRXJy
b3JDb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0g
ZXhwZWN0ZWRFcnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkg
KyAnIi5nZXREaXJlY3RvcnkoIicgKyBwYXRoICsgJyIpJzsKLSAgICAgICAgICAgIHZhciBzdWNj
ZXNzQ2FsbGJhY2sgPSAoZmxhZ3MgJiYgZmxhZ3MuY3JlYXRlKSA/IHRoaXMudGVzdENyZWF0ZVN1
Y2Nlc3NDYWxsYmFjayA6IHRoaXMudGVzdEdldFN1Y2Nlc3NDYWxsYmFjazsKLSAgICAgICAgICAg
IHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdldERpcmVjdG9yeShwYXRoLCBmbGFncywgYmluZENh
bGxiYWNrKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnRl
c3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5nZXRQYXJlbnQg
PSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0ZWRFcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgPSBleHBlY3RlZEVycm9yQ29kZTsKLSAgICAgICAg
ICAgIHRoaXMuc3RhZ2UgPSAnIicgKyBlbnRyeSArICciLmdldFBhcmVudCgpJzsKLSAgICAgICAg
ICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdldFBhcmVudChiaW5kQ2FsbGJhY2sodGhpcywg
dGhpcy50ZXN0R2V0UGFyZW50U3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRo
aXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLmdldE1l
dGFkYXRhID0gZnVuY3Rpb24oZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0g
ICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5nZXRNZXRhZGF0YSgpJzsK
LSAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRbZW50cnldLmdldE1ldGFkYXRhKGJpbmRDYWxs
YmFjayh0aGlzLCB0aGlzLnRlc3RNZXRhZGF0YVN1Y2Nlc3NDYWxsYmFjaywgZW50cnkpLCBiaW5k
Q2FsbGJhY2sodGhpcywgdGhpcy50ZXN0RXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9OwotCi0g
ICAgICAgIHRoaXMucmVtb3ZlID0gZnVuY3Rpb24oZW50cnksIGV4cGVjdGVkRXJyb3JDb2RlKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRF
cnJvckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5yZW1v
dmUoKSc7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1vdmUoYmluZENh
bGxiYWNrKHRoaXMsIHRoaXMudGVzdFN1Y2Nlc3NDYWxsYmFjayksIGJpbmRDYWxsYmFjayh0aGlz
LCB0aGlzLnRlc3RFcnJvckNhbGxiYWNrKSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGhpcy5y
ZW1vdmVSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKGVudHJ5LCBleHBlY3RlZEVycm9yQ29kZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9IGV4cGVjdGVkRXJy
b3JDb2RlOwotICAgICAgICAgICAgdGhpcy5zdGFnZSA9ICciJyArIGVudHJ5ICsgJyIucmVtb3Zl
UmVjdXJzaXZlbHkoKSc7Ci0gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50W2VudHJ5XS5yZW1v
dmVSZWN1cnNpdmVseShiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxiYWNr
KSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAg
fTsKLQotICAgICAgICB0aGlzLnJlYWREaXJlY3RvcnkgPSBmdW5jdGlvbihlbnRyeSwgZXhwZWN0
ZWRFcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuZXhwZWN0ZWRFcnJvckNv
ZGUgPSBleHBlY3RlZEVycm9yQ29kZTsKLSAgICAgICAgICAgIHRoaXMucmVhZEVudHJpZXMgPSBb
XTsKLSAgICAgICAgICAgIHRoaXMuc3RhZ2UgPSAnIicgKyBlbnRyeSArICciLmNyZWF0ZVJlYWRl
cigpLnJlYWRFbnRyaWVzKCknOwotICAgICAgICAgICAgdGhpcy5jdXJyZW50UmVhZGVyID0gdGhp
cy5lbnZpcm9ubWVudFtlbnRyeV0uY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLmN1
cnJlbnRSZWFkZXIucmVhZEVudHJpZXMoYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdFJlYWRF
bnRyaWVzU3VjY2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9y
Q2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLmNvcHkgPSBmdW5jdGlvbihl
bnRyeSwgZGVzdGluYXRpb25QYXJlbnQsIG5ld05hbWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJv
ckNvZGU7Ci0gICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5jb3B5VG8o
IicgKyBkZXN0aW5hdGlvblBhcmVudCArICciLCAiJyArIG5ld05hbWUgKyAnIiknOwotICAgICAg
ICAgICAgdGhpcy5lbnZpcm9ubWVudFtlbnRyeV0uY29weVRvKHRoaXMuZW52aXJvbm1lbnRbZGVz
dGluYXRpb25QYXJlbnRdLCBuZXdOYW1lLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3Vj
Y2Vzc0NhbGxiYWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2sp
KTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLm1vdmUgPSBmdW5jdGlvbihlbnRyeSwgZGVz
dGluYXRpb25QYXJlbnQsIG5ld05hbWUsIGV4cGVjdGVkRXJyb3JDb2RlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gZXhwZWN0ZWRFcnJvckNvZGU7Ci0g
ICAgICAgICAgICB0aGlzLnN0YWdlID0gJyInICsgZW50cnkgKyAnIi5tb3ZlVG8oIicgKyBkZXN0
aW5hdGlvblBhcmVudCArICciLCAiJyArIG5ld05hbWUgKyAnIiknOwotICAgICAgICAgICAgdGhp
cy5lbnZpcm9ubWVudFtlbnRyeV0ubW92ZVRvKHRoaXMuZW52aXJvbm1lbnRbZGVzdGluYXRpb25Q
YXJlbnRdLCBuZXdOYW1lLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0U3VjY2Vzc0NhbGxi
YWNrKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAg
ICAgfTsKLQotICAgICAgICB0aGlzLnNob3VsZEJlID0gZnVuY3Rpb24oc3ltYm9sMSwgc3ltYm9s
MikKLSAgICAgICAgewotICAgICAgICAgICAgc2hvdWxkQmUuYXBwbHkodGhpcywgW3RoaXMuZ2V0
U3ltYm9sU3RyaW5nKHN5bWJvbDEpLCB0aGlzLmdldFN5bWJvbFN0cmluZyhzeW1ib2wyKV0pOwot
ICAgICAgICAgICAgdGhpcy5ydW5OZXh0VGVzdCgpOwotICAgICAgICB9OwotCi0gICAgICAgIHRo
aXMuc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwgPSBmdW5jdGlvbihzeW1ib2wxLCBzeW1ib2wy
KQotICAgICAgICB7Ci0gICAgICAgICAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbC5hcHBs
eSh0aGlzLCBbdGhpcy5nZXRTeW1ib2xTdHJpbmcoc3ltYm9sMSksIHRoaXMuZ2V0U3ltYm9sU3Ry
aW5nKHN5bWJvbDIpXSk7Ci0gICAgICAgICAgICB0aGlzLnJ1bk5leHRUZXN0KCk7Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgdGhpcy5zdGFydCA9IGZ1bmN0aW9uKCkK
LSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVycm9yQ29kZSA9ICcnOwotICAg
ICAgICAgICAgdGhpcy5zdGFnZSA9ICdyZXNldHRpbmcgZmlsZXN5c3RlbSc7Ci0gICAgICAgICAg
ICAvLyBSZWNvcmQgcm91bmRlZCBzdGFydCBkYXRlIChjdXJyZW50IHRpbWUgbWludXMgOTk5IG1z
ZWMpIGhlcmUgZm9yIHRoZSBjb21wYXJpc29uLiBFbnRyeS5nZXRNZXRhZGF0YSgpIG1heSByZXR1
cm4gdGhlIGxhc3QgbW9kIHRpbWUgaW4gc2Vjb25kcyBhY2N1cmFjeSB3aGlsZSBuZXcgRGF0ZSgp
IGlzIG1pbGxpc2Vjb25kcyBhY2N1cmFjeS4KLSAgICAgICAgICAgIHRoaXMucm91bmRlZFN0YXJ0
RGF0ZSA9IG5ldyBEYXRlKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSA5OTkpOwotICAgICAgICAg
ICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkodGhpcy5maWxlU3lzdGVtLnJvb3QsIGJpbmRDYWxsYmFj
ayh0aGlzLCB0aGlzLnNldFVwKSwgYmluZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2Fs
bGJhY2spKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0aGlzLnNldFVwID0gZnVuY3Rpb24oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVjdGVkRXJyb3JDb2RlID0gJyc7Ci0gICAg
ICAgICAgICB0aGlzLnN0YWdlID0gJ3NldHRpbmcgdXAgdGVzdCBwcmVjb25kaXRpb24nOwotICAg
ICAgICAgICAgY3JlYXRlVGVzdEVudmlyb25tZW50KHRoaXMuZmlsZVN5c3RlbSwgdGhpcy50ZXN0
Q2FzZS5wcmVjb25kaXRpb24sIGJpbmRDYWxsYmFjayh0aGlzLCB0aGlzLnJ1blRlc3RzKSwgYmlu
ZENhbGxiYWNrKHRoaXMsIHRoaXMudGVzdEVycm9yQ2FsbGJhY2spKTsKLSAgICAgICAgfTsKLQot
ICAgICAgICB0aGlzLnJ1bk5leHRUZXN0ID0gZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAodGhpcy5jdXJyZW50VGVzdCA+PSB0aGlzLnRlc3RDYXNlLnRlc3RzLmxlbmd0aCkg
ewotICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy50ZXN0Q2FzZS50ZXN0c1t0aGlzLmN1
cnJlbnRUZXN0KytdKHRoaXMpOwotICAgICAgICB9OwotCi0gICAgICAgIHRoaXMucnVuVGVzdHMg
PSBmdW5jdGlvbihlbnZpcm9ubWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5lbnZp
cm9ubWVudCA9IGVudmlyb25tZW50OwotICAgICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFsnLydd
ID0gdGhpcy5maWxlU3lzdGVtLnJvb3Q7Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnRUZXN0ID0g
MDsKLSAgICAgICAgICAgIHRoaXMucnVuTmV4dFRlc3QoKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICB0aGlzLnZlcmlmeSA9IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5l
eHBlY3RlZEVycm9yQ29kZSA9ICcnOwotICAgICAgICAgICAgaWYgKCF0aGlzLnRlc3RDYXNlLnBv
c3Rjb25kaXRpb24pIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjaygpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMu
c3RhZ2UgPSAndmVyaWZ5aW5nIHRlc3QgcG9zdGNvbmRpdGlvbic7Ci0gICAgICAgICAgICB2ZXJp
ZnlUZXN0RW52aXJvbm1lbnQodGhpcy5maWxlU3lzdGVtLCB0aGlzLnRlc3RDYXNlLnBvc3Rjb25k
aXRpb24sIHRoaXMuc3VjY2Vzc0NhbGxiYWNrLCBiaW5kQ2FsbGJhY2sodGhpcywgdGhpcy50ZXN0
RXJyb3JDYWxsYmFjaykpOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB2YXIgaGVscGVyID0g
bmV3IE9wZXJhdGlvblRlc3RIZWxwZXIoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgaGVscGVyLnN0YXJ0KCk7Ci19Ci0KLXZhciBjdXJy
ZW50VGVzdCA9IDA7Ci12YXIgZmlsZVN5c3RlbSA9IG51bGw7Ci1mdW5jdGlvbiBydW5OZXh0VGVz
dCgpIHsKLSAgICBpZiAoY3VycmVudFRlc3QgPj0gdGVzdENhc2VzLmxlbmd0aCkgewotICAgICAg
ICBkZWJ1ZygnRmluaXNoZWQgcnVubmluZyB0ZXN0cy4nKTsKLSAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2YXIgdGVzdENhc2UgPSB0ZXN0Q2Fz
ZXNbY3VycmVudFRlc3QrK107Ci0gICAgZGVidWcoJyogUnVubmluZzogJyArIHRlc3RDYXNlLm5h
bWUpOwotICAgIHJ1bk9wZXJhdGlvblRlc3QoZmlsZVN5c3RlbSwgdGVzdENhc2UsIHJ1bk5leHRU
ZXN0LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikg
ewotICAgIGlmIChlcnJvciAmJiBlcnJvci5jb2RlKQotICAgICAgICB0ZXN0RmFpbGVkKCdHb3Qg
ZXJyb3IgJyArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlv
biBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpCi17Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIHJ1
bk5leHRUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVl
c3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaGFy
ZWQtd29ya2VyLXN0dWIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXN0dWIuanMJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zdHVi
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotLy8gV2UgZG9uJ3Qgc3RhcnQganMt
dGVzdC1wcmUuanMgZGlyZWN0bHkgYXMgdGhlIHdvcmtlciBzY3JpcHQgYmVjYXVzZSBpdCBzY3Jl
d3MKLS8vIHVwIHRoZSBiYXNlIG9mIGFsbCByZWxhdGl2ZSBwYXRocyBwYXNzZWQgdG8gaW1wb3J0
U2NyaXB0cy4KLWltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cycpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUt
cGVyc2lzdGVudC1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5qcwkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lz
dGVudC1zeW5jLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLWlmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtd29ya2Vy
LWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0
aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyBQ
RVJTSVNURU5UIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gd2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW1TeW5jKFBFUlNJU1RFTlQsIDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWlu
ZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOiIgKyBmaWxlU3lzdGVtLm5hbWUpOwotc2hvdWxkQmVU
cnVlKCJmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCIpOwotc2hvdWxkQmUoImZpbGVTeXN0ZW0u
cm9vdC5mdWxsUGF0aCIsICciLyInKTsKLWZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJz
aXN0ZW50LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1
ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4u
L3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oInJlcXVlc3RG
aWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVzdC4iKTsKLQotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwot
Ci1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3Vy
ZWQgd2hpbGUgcmVxdWVzdGluZyBhIFBFUlNJU1RFTlQgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNv
ZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2so
ZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRh
aW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0gICAgc2hv
dWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCIpOwotICAgIHNob3VsZEJlKCJm
aWxlU3lzdGVtLnJvb3QuZnVsbFBhdGgiLCAnIi8iJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19
Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLXdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBF
UlNJU1RFTlQsIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlYWRvbmx5LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxl
LXJlYWRvbmx5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZWFkb25seS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0
OSArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygn
Li4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJGaWxlU3lz
dGVtIEFQSSByZWFkb25seSBhdHRyaWJ1dGVzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtOwot
dmFyIGZpbGVFbnRyeTsKLXZhciBmaWxlTWV0YWRhdGE7Ci0KLWZ1bmN0aW9uIHNldFJlYWRvbmx5
UHJvcGVydHkocHJvcGVydHksIHZhbHVlKQotewotICAgIG9sZFZhbHVlID0gZXZhbChwcm9wZXJ0
eSk7Ci0gICAgZGVidWcoInRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgIiArIHByb3Bl
cnR5KTsKLSAgICBldmFsQW5kTG9nKHByb3BlcnR5ICsgIiA9ICIgKyB2YWx1ZSk7Ci0gICAgbmV3
VmFsdWUgPSBldmFsKHByb3BlcnR5KTsKLSAgICBpZiAob2xkVmFsdWUgPT0gbmV3VmFsdWUpIHsK
LSAgICAgICAgdGVzdFBhc3NlZChwcm9wZXJ0eSArICIgaXMgc3RpbGwgIiArIG9sZFZhbHVlKTsK
LSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKHByb3BlcnR5ICsgIiB2YWx1ZSB3YXMg
Y2hhbmdlZCIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnIpIHsKLSAg
dGVzdEZhaWxlZChlcnIpOwotICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0Rmls
ZUNhbGxiYWNrKGVudHJ5KSB7Ci0gIGZpbGVFbnRyeSA9IGVudHJ5OwotICBzZXRSZWFkb25seVBy
b3BlcnR5KCJmaWxlRW50cnkuaXNGaWxlIiwgImZhbHNlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVy
dHkoImZpbGVFbnRyeS5pc0RpcmVjdG9yeSIsICJ0cnVlIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVy
dHkoImZpbGVFbnRyeS5uYW1lIiwgIidiYXInIik7Ci0gIHNldFJlYWRvbmx5UHJvcGVydHkoImZp
bGVFbnRyeS5mdWxsUGF0aCIsICInYmFyJyIpOwotICBzZXRSZWFkb25seVByb3BlcnR5KCJmaWxl
RW50cnkuZmlsZXN5c3RlbSIsICJudWxsIik7Ci0gIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5j
dGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgZmlsZVN5c3RlbSA9IGZzOwotICBzZXRSZWFk
b25seVByb3BlcnR5KCJmaWxlU3lzdGVtLm5hbWUiLCAiJ2JhciciKTsKLSAgcm9vdCA9IGV2YWxB
bmRMb2coInJvb3QgPSBmaWxlU3lzdGVtLnJvb3QiKTsKLSAgZXZhbEFuZExvZygicm9vdC5nZXRG
aWxlKCdmb28nLCB7Y3JlYXRlOnRydWV9LCBnZXRGaWxlQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
Iik7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJl
cXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3Np
bXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZGlyZWN0b3J5LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3Vt
ZW50cy1nZXRkaXJlY3RvcnkuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRkaXJl
Y3RvcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0
U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29t
bW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5q
cycpOwotfQotCi1kZXNjcmlwdGlvbigiRGlyZWN0b3J5RW50cnkgcmVxdWlyZWQgYXJndW1lbnRz
IHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxs
YmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3Rpbmcg
YSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVz
dCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVt
ID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5
c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9
IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJyb290LmdldERpcmVjdG9yeSgp
Iik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
LWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBs
ZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0ZmlsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVudHMtZ2V0
ZmlsZS5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldGZpbGUuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjYgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGlt
cG9ydFNjcmlwdHMoJy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1w
b3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlw
dGlvbigiRGlyZWN0b3J5RW50cnkgcmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBm
aWxlU3lzdGVtID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAg
IGRlYnVnKCJFcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBz
eXN0ZW06IiArIGVycm9yLmNvZGUpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlv
biBzdWNjZXNzQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWco
IlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3Rl
bS5uYW1lKTsKLSAgICByb290ID0gZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIp
OwotICAgIHNob3VsZFRocm93KCJyb290LmdldEZpbGUoKSIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi12YXIganNUZXN0SXNBc3luYyA9IHRydWU7Ci1ldmFsQW5kTG9nKCJ3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKTsiKTsKLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcmVxdWlyZWQtYXJndW1lbnRzLWdl
dG1ldGFkYXRhLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1nZXRtZXRhZGF0YS5qcwkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1w
bGUtcmVxdWlyZWQtYXJndW1lbnRzLWdldG1ldGFkYXRhLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDI2ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRz
KCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwotICAgIGltcG9ydFNjcmlwdHMo
Jy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIkRpcmVj
dG9yeUVudHJ5LmdldE1ldGFkYXRhIHJlcXVpcmVkIGFyZ3VtZW50cyB0ZXN0LiIpOwotCi12YXIg
ZmlsZVN5c3RlbSA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAg
ICBkZWJ1ZygiRXJyb3Igb2NjdXJlZCB3aGlsZSByZXF1ZXN0aW5nIGEgVEVNUE9SQVJZIGZpbGUg
c3lzdGVtOiIgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rp
b24gc3VjY2Vzc0NhbGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGRlYnVn
KCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0
ZW0ubmFtZSk7Ci0gICAgcm9vdCA9IGV2YWxBbmRMb2coInJvb3QgPSBmaWxlU3lzdGVtLnJvb3Qi
KTsKLSAgICBzaG91bGRUaHJvdygicm9vdC5nZXRNZXRhZGF0YSgpIik7Ci0gICAgZmluaXNoSlNU
ZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtp
dFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1yZXF1aXJlZC1hcmd1bWVu
dHMtcmVtb3ZlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvc2ltcGxlLXJlcXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXJl
cXVpcmVkLWFyZ3VtZW50cy1yZW1vdmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYgKzAsMCBA
QAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3Vy
Y2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiRW50cnkucmVtb3ZlKCkg
cmVxdWlyZWQgYXJndW1lbnRzIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQot
ZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCJFcnJvciBvY2N1cmVk
IHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06IiArIGVycm9yLmNvZGUp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMp
IHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5l
ZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICByb290ID0g
ZXZhbEFuZExvZygicm9vdCA9IGZpbGVTeXN0ZW0ucm9vdCIpOwotICAgIHNob3VsZFRocm93KCJy
b290LnJlbW92ZSgpIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLXZhciBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLWV2YWxBbmRMb2coIndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFS
WSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOyIpOwotdmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9z
aW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAot
aWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291cmNl
cy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2Vz
L2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZpbGVTeXN0ZW1T
eW5jIFRFTVBPUkFSWSB0ZXN0LiIpOwotCi12YXIgZmlsZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RG
aWxlU3lzdGVtU3luYyhURU1QT1JBUlksIDEwMCk7Ci0KLWRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0
YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci1zaG91bGRC
ZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIik7Ci1zaG91bGRCZSgiZmlsZVN5c3Rl
bS5yb290LmZ1bGxQYXRoIiwgJyIvIicpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVt
cG9yYXJ5LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3JhcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjUg
KzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4u
L3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4v
cmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigicmVxdWVzdEZp
bGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3QuIik7Ci0KLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQot
ZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewotICAgIGRlYnVnKCdFcnJvciBvY2N1cmVk
IHdoaWxlIHJlcXVlc3RpbmcgYSBURU1QT1JBUlkgZmlsZSBzeXN0ZW06JyArIGVycm9yLmNvZGUp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2soZnMp
IHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5l
ZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKLSAgICBzaG91bGRC
ZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIik7Ci0gICAgc2hvdWxkQmUoImZpbGVT
eXN0ZW0ucm9vdC5mdWxsUGF0aCIsICciLyInKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQot
dmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9S
QVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0
aW9ucy5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAs
MCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jl
c291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVz
b3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwotfQotCi1kZXNjcmlwdGlvbigiVGVzdCBtYWtpbmcg
bXVsdGlwbGUgc3luY2hyb25vdXMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLiIpOwotCi12YXIgZmls
ZVN5c3RlbSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAw
KTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVtLnJvb3QpOwotCi0vLyBTdGFn
ZSAxIChwcmVwYXJlKQotdmFyIGEgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScsIHtjcmVh
dGU6dHJ1ZX0pOwotdmFyIGIgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2Ny
ZWF0ZTp0cnVlfSk7Ci12YXIgYyA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7
Y3JlYXRlOnRydWV9KTsKLXZhciBkID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2QnLCB7Y3Jl
YXRlOnRydWV9KTsKLQotLy8gU3RhZ2UgMiAodGVzdCkKLXZhciBhX2NvcHkgPSBhLmNvcHlUbyhi
LCAndG1wJyk7Ci12YXIgbWV0YWRhdGEgPSBhLmdldE1ldGFkYXRhKCk7Ci12YXIgYl9wYXJlbnQg
PSBiLmdldFBhcmVudCgpOwotdmFyIGNfY29weSA9IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwg
J2YnKTsKLXZhciBkX25ldyA9IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Ci12YXIg
ZSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSk7Ci0KLS8vIFZl
cmlmeQotdmFyIHJlYWRlciA9IGZpbGVTeXN0ZW0ucm9vdC5jcmVhdGVSZWFkZXIoKTsKLXZhciBk
aXJzQ291bnQgPSAwOwotdmFyIHBhdGhzID0gW107Ci1kbyB7Ci0gICAgdmFyIGVudHJpZXMgPSBy
ZWFkZXIucmVhZEVudHJpZXMoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgcGF0aHMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKLSAg
ICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICBkaXJzQ291bnQr
KzsKLSAgICB9Ci19IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7Ci0KLXBhdGhzLnNvcnQoKTsKLXNo
b3VsZEJlKCciJyArIHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2Yi
Jyk7Ci1zaG91bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKLXJlbW92ZUFsbEluRGlyZWN0b3J5U3lu
YyhmaWxlU3lzdGVtLnJvb3QpOwotZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRl
c3RzL1RFTVBMQVRFLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3NjcmlwdC10ZXN0cy9maWxlc3lzdGVtLXJlZmVyZW5jZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNl
LmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2Ny
aXB0LXRlc3RzL2ZpbGVzeXN0ZW0tcmVmZXJlbmNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcw
ICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGlmIEVudHJpZXMgcmV0dXJuZWQgYnkg
Y2FsbGJhY2tzIGtlZXAgZnVuY3Rpb25pbmcgZXZlbiBhZnRlciB3ZSBsb3NlIGEgcmVmZXJlbmNl
IHRvIHRoZSBmaWxlc3lzdGVtIGluIHRoZSBzY3JpcHQuIik7Ci0KLXZhciB0ZXN0RGlyZWN0b3J5
ID0gbnVsbDsKLXZhciB0ZXN0RW50cmllcyA9IG51bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJh
Y2soZXJyb3IpCi17Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJvci5j
b2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdDEocm9vdCkK
LXsKLSAgICBkZWJ1ZygiUnVubmluZyBydW5UZXN0MSgpLi4uIik7Ci0gICAgdmFyIGhlbHBlciA9
IG5ldyBKb2luSGVscGVyKCk7Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRv
bmUoKTsgfTsKLQotICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnYScs
IHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVu
KGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUs
IGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290Lmdl
dERpcmVjdG9yeSgnYycsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsK
LQotICAgIGdjKCk7Ci0gICAgaGVscGVyLmpvaW4oZnVuY3Rpb24oKSB7IHJ1blRlc3QyKHJvb3Qp
OyB9KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdDIocm9vdCkKLXsKLSAgICBkZWJ1ZygiUnVubmlu
ZyBydW5UZXN0MigpLi4uIik7Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7Ci0g
ICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGhlbHBl
ci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RmlsZSgnL2IvMScsIHtjcmVhdGU6dHJ1ZX0sIGRv
bmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290
LmdldEZpbGUoJy9iLzInLCB7Y3JlYXRlOnRydWV9LCBkb25lLCBlcnJvckNhbGxiYWNrKTsgfSk7
Ci0gICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCcvYi8zJywge2NyZWF0
ZTp0cnVlfSwgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOwotICAgIGhlbHBlci5ydW4oZnVuY3Rp
b24oKSB7IHJvb3QuZ2V0RmlsZSgnL2IvNCcsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2Fs
bGJhY2spOyB9KTsKLSAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290LmdldERpcmVjdG9y
eSgnYicsIHtjcmVhdGU6ZmFsc2V9LCBmdW5jdGlvbihlbnRyeSkgeyB0ZXN0RGlyZWN0b3J5ID0g
ZW50cnk7IGhlbHBlci5kb25lKCk7IH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKLQotICAgIGdjKCk7
Ci0gICAgaGVscGVyLmpvaW4oZnVuY3Rpb24oKSB7IHJ1blRlc3QzKCk7IH0pOwotfQotCi1mdW5j
dGlvbiBydW5UZXN0MygpCi17Ci0gICAgZGVidWcoIlJ1bm5pbmcgcnVuVGVzdDMoKS4uLiIpOwot
ICAgIHRlc3REaXJlY3RvcnkuY3JlYXRlUmVhZGVyKCkucmVhZEVudHJpZXMoZW50cmllc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICB0ZXN0RGlyZWN0b3J5ID0gbnVsbDsKLSAgICBnYygp
OwotfQotCi1mdW5jdGlvbiBlbnRyaWVzQ2FsbGJhY2soZW50cmllcykKLXsKLSAgICBkZWJ1Zygi
UnVubmluZyBydW5UZXN0NCgpLi4uIik7Ci0gICAgdGVzdEVudHJpZXMgPSBlbnRyaWVzOwotICAg
IHNob3VsZEJlKCJ0ZXN0RW50cmllcy5sZW5ndGgiLCAiNCIpOwotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1mdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpCi17Ci0gICAgdmFyIHJvb3Qg
PSBmcy5yb290OwotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZzLnJvb3QsIGZ1bmN0aW9uKCkg
eyBydW5UZXN0MShyb290KTsgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgZnMgPSBudWxsOwotICAg
IGdjKCk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0o
d2luZG93LlRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
OwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBz
dXBwb3J0LiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0
cy9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmlsZXN5c3RlbS11bnNlcmlhbGl6YWJsZS5q
cwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Njcmlw
dC10ZXN0cy9maWxlc3lzdGVtLXVuc2VyaWFsaXphYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDI5ICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGlmIHRoZSBmaWxlc3lzdGVtIG9i
amVjdCBpcyB1bnNlcmlhbGl6YWJsZSBieSBkZWZhdWx0Iik7Ci0KLWZ1bmN0aW9uIGVycm9yQ2Fs
bGJhY2soZXJyb3IpCi17Ci0gICAgdGVzdEZhaWxlZCgiRXJyb3Igb2NjdXJyZWQ6ICIgKyBlcnJv
ci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNh
bGxiYWNrKGZzKQotewotICAgIHRyeSB7Ci0gICAgICAgIHBvc3RNZXNzYWdlKGZzLCAnKicpOwot
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZGVidWcoZS5tZXNzYWdlKTsKLSAgICB9Ci0KLSAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gb25tZXNzYWdlKCkKLXsKLX0KLQotaWYg
KHdpbmRvdy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdtZXNzYWdlJywgb25tZXNzYWdlLCBmYWxzZSk7Ci0gICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JB
UlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAg
IGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2lu
Zy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRl
c3RzL2ZsYWdzLXBhc3NpbmcuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSw5NCArMCwwIEBACi1kZXNjcmlwdGlvbigiUGFzc2luZyBGbGFncyBwYXJhbWV0ZXIg
dGVzdHMuIFRoaXMgdGVzdCBjaGVja3MgaWYgcGFzc2luZyBGbGFncyBwYXJhbWV0ZXJzIHRvIERp
cmVjdG9yeUVudHJ5LmdldEZpbGUgZG9lcyBub3QgY3Jhc2ggYW5kIHdvcmtzIGFzIGV4cGVjdGVk
LiIpOwotCi12YXIgdGVzdEZpbGVOYW1lID0gJy9ub25fZXhpc3RlbnRfZmlsZSc7Ci12YXIgZmls
ZVN5c3RlbSA9IG51bGw7Ci12YXIgZXhwZWN0ZWRDYWxsYmFja3NDb3VudCA9IDA7Ci12YXIgdW5l
eHBlY3RlZENhbGxiYWNrc0NvdW50ID0gMDsKLXZhciBleHBlY3RlZCA9IGZ1bmN0aW9uKGUpIHsg
ZXhwZWN0ZWRDYWxsYmFja3NDb3VudCsrOyB9OwotdmFyIHVuZXhwZWN0ZWQgPSBmdW5jdGlvbihl
KSB7IHVuZXhwZWN0ZWRDYWxsYmFja3NDb3VudCsrOyB9OwotCi12YXIgdGVzdHNMaXN0ID0gWwot
ICAgIHJ1bk9iamVjdFRlc3QsCi0gICAgY2xlYW51cEFuZFJ1bk5leHQsCi0gICAgcnVuSlNPTlRl
c3QsCi0gICAgcnVuSlNPTlRlc3RXaXRoRXhjbHVzaXZlLAotICAgIHJ1bk51bGxUZXN0LAotICAg
IHJ1bk5vbk9iamVjdFRlc3QKLV07Ci12YXIgdGVzdENvdW50ZXIgPSAwOwotCi1mdW5jdGlvbiBy
dW5OZXh0VGVzdCh2KSB7Ci0gICAgaWYgKHRlc3RDb3VudGVyID09IHRlc3RzTGlzdC5sZW5ndGgp
IHsKLSAgICAgICAgZGVidWcoIkZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuIik7Ci0gICAgICAgIHNo
b3VsZEJlKCdleHBlY3RlZENhbGxiYWNrc0NvdW50JywgJzEnKTsKLSAgICAgICAgc2hvdWxkQmUo
J3VuZXhwZWN0ZWRDYWxsYmFja3NDb3VudCcsICcwJyk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotICAgIH0gZWxzZQotICAgICAgICAodGVzdHNMaXN0W3Rlc3RDb3VudGVyKytdKSgpOwotfQot
Ci1mdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Ci0gICAgZGVidWcoIkVycm9yIG9jY3Vy
ZWQgZHVyaW5nIHJlcXVlc3RpbmcgVGVtcG9yYXJ5IEZpbGVTeXN0ZW06IiArIGVycm9yLmNvZGUp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWZ1bmN0aW9u
IHJ1bk51bGxUZXN0KHYpIHsKLSAgICBkZWJ1ZygiKiBQYXNzaW5nIG51bGwgYXMgYSBmbGFncyBw
YXJhbWV0ZXIuIik7Ci0KLSAgICAvLyBUaGlzIHNob3VsZCBiZSBvayBhbmQgd2UgdHJlYXQgaXQg
YXMge2ZhbHNlLCBmYWxzZX0gRmxhZ3MuCi0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVz
dEZpbGVOYW1lLCBudWxsLCBydW5OZXh0VGVzdCwgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0
aW9uIHJ1bk5vbk9iamVjdFRlc3QodikgewotICAgIGRlYnVnKCIqIFBhc3NpbmcgYSBudW1iZXIg
YXMgYSBmbGFncyBwYXJhbWV0ZXIuIik7Ci0KLSAgICB0cnkgewotICAgICAgICAvLyBUaGlzIHNo
b3VsZCBiZSBub3QgYmUgb2sgYmVjYXVzZSA3IGlzIG5vdCBhbiBvYmplY3QuCi0gICAgICAgIGZp
bGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwgNywgZXJyb3JDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7Ci0gICAgfSBjYXRjaCAoZXgpIHsKLSAgICAgICAgZGVidWcoIkNhdWdodCBl
eGNlcHRpb246ICIgKyBleCk7Ci0gICAgICAgIHJ1bk5leHRUZXN0KCk7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiBydW5PYmplY3RUZXN0KHYpIHsKLSAgICAvLyBXZWJLaXRGbGFncyBubyBsb25nZXIg
aGFzIGEgdmlzaWJsZSBjb25zdHJ1Y3Rvci4KLSAgICBpZiAod2luZG93LldlYktpdEZsYWdzKQot
ICAgICAgICB0aHJvdyAiVGhlcmUgc2hvdWxkIGJlIG5vIGNvbnN0cnVjdG9yIGZvciBXZWJLaXRG
bGFncyEiOwotICAgIHJ1bk5leHRUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkpTT05UZXN0KHYp
IHsKLSAgICBkZWJ1ZygiKiBQYXNzaW5nIEpTT04gRmxhZ3Mgb2JqZWN0LiIpOwotCi0gICAgZmls
ZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOmZhbHNlfSwgdW5leHBl
Y3RlZCwgZXhwZWN0ZWQpOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFt
ZSwge2NyZWF0ZTp0cnVlfSwgcnVuTmV4dFRlc3QsIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5j
dGlvbiBydW5KU09OVGVzdFdpdGhFeGNsdXNpdmUodikgewotICAgIGRlYnVnKCIqIFBhc3Npbmcg
SlNPTiBGbGFncyBvYmplY3QgKHdpdGggZXhjbHVzaXZlPXRydWUpLiIpOwotCi0gICAgLy8gVGhp
cyBzaG91bGQgZmFpbC4KLSAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSh0ZXN0RmlsZU5hbWUs
IHtjcmVhdGU6dHJ1ZSwgZXhjbHVzaXZlOnRydWV9LCBlcnJvckNhbGxiYWNrLCBydW5OZXh0VGVz
dCk7Ci19Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBjbGVhbnVwQW5kUnVuTmV4
dCh2KSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRl
OmZhbHNlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBlbnRyeSBi
ZWZvcmUgc3RhcnQgdGVzdGluZy4KLSAgICAgICAgZW50cnkucmVtb3ZlKHJ1bk5leHRUZXN0LCBl
cnJvckNhbGxiYWNrKTsKLSAgICB9LCBydW5OZXh0VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGVT
eXN0ZW1DYWxsYmFjayhmcykgewotICAgIGZpbGVTeXN0ZW0gPSBmczsKLSAgICBjbGVhbnVwQW5k
UnVuTmV4dCgpOwotfQotCi1pZiAod2luZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0g
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKTsKLX0gZWxzZQotICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBB
UEkgc3VwcG9ydC4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQt
dGVzdHMvcmVhZC1kaXJlY3RvcnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRpcmVjdG9yeS5qcwkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZWFkLWRpcmVj
dG9yeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw5NSArMCwwIEBACi1kZXNjcmlwdGlvbigiRGly
ZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkgdGVzdC4iKTsKLXZhciBmaWxlU3lzdGVtID0gbnVs
bDsKLXZhciByZWFkZXIgPSBudWxsOwotdmFyIHJlc3VsdEVudHJpZXMgPSBbXTsKLQotdmFyIHJl
YWRFbnRyaWVzQ291bnQgPSAwOwotdmFyIGVudHJpZXNDYWxsYmFja0NvdW50ID0gMDsKLQotLy8g
cGF0aDogaXNEaXJlY3RvcnkgbWFwLgotdmFyIHRlc3RFbnRyaWVzID0gewotICAgICcvYSc6IHRy
dWUsCi0gICAgJy9iJzogZmFsc2UsCi0gICAgJy9jJzogdHJ1ZSwKLSAgICAnL2QnOiBmYWxzZSwK
LSAgICAnL2UnOiBmYWxzZSwKLSAgICAnL2YnOiB0cnVlLAotfTsKLXZhciB0ZXN0RW50cmllc0Nv
dW50ID0gMDsKLQotZnVuY3Rpb24gZW5kVGVzdCgpCi17Ci0gICAgcmVtb3ZlQWxsSW5EaXJlY3Rv
cnkoZmlsZVN5c3RlbS5yb290KTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24g
ZXJyb3JDYWxsYmFjayhlcnJvcikKLXsKLSAgICBkZWJ1ZygiRXJyb3Igb2NjdXJlZDoiICsgZXJy
b3IuY29kZSk7Ci0gICAgZW5kVGVzdCgpOwotfQotCi12YXIgZW50cnkgPSBudWxsOwotZnVuY3Rp
b24gdmVyaWZ5VGVzdFJlc3VsdCgpCi17Ci0gICAgc2hvdWxkQmUoJ3JlYWRFbnRyaWVzQ291bnQn
LCAnZW50cmllc0NhbGxiYWNrQ291bnQnKTsKLSAgICBzaG91bGRCZSgncmVzdWx0RW50cmllcy5s
ZW5ndGgnLCAndGVzdEVudHJpZXNDb3VudCcpOwotICAgIHJlc3VsdEVudHJpZXMuc29ydChmdW5j
dGlvbihhLCBiKSB7IHJldHVybiAoYS5mdWxsUGF0aCA+IGIuZnVsbFBhdGgpID8gMSA6IChhLmZ1
bGxQYXRoIDwgYi5mdWxsUGF0aCkgPyAtMSA6IDA7IH0pOwotICAgIGZvciAoaSA9IDA7IGkgPCBy
ZXN1bHRFbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGVudHJ5ID0gcmVzdWx0RW50cmll
c1tpXTsKLSAgICAgICAgZGVidWcoJ0VudHJ5OicgKyBlbnRyeS5mdWxsUGF0aCArICcgaXNEaXJl
Y3Rvcnk6JyArIGVudHJ5LmlzRGlyZWN0b3J5KTsKLSAgICAgICAgc2hvdWxkQmUoJ3Rlc3RFbnRy
aWVzW2VudHJ5LmZ1bGxQYXRoXScsICdlbnRyeS5pc0RpcmVjdG9yeScpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gZW50cmllc0NhbGxiYWNrKGVudHJpZXMpCi17Ci0gICAgZW50cmllc0NhbGxiYWNr
Q291bnQrKzsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkK
LSAgICAgICAgcmVzdWx0RW50cmllcy5wdXNoKGVudHJpZXNbaV0pOwotCi0gICAgaWYgKGVudHJp
ZXMubGVuZ3RoKSB7Ci0gICAgICAgIHJlYWRFbnRyaWVzQ291bnQrKzsKLSAgICAgICAgcmVhZGVy
LnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLy8gTXVzdCBoYXZlIHJlYWQgYWxsIHRoZSBlbnRyaWVzLgotICAgICAgICB2
ZXJpZnlUZXN0UmVzdWx0KCk7Ci0gICAgICAgIGVuZFRlc3QoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHJ1blJlYWREaXJlY3RvcnlUZXN0KCkKLXsKLSAgICByZWFkRW50cmllc0NvdW50Kys7Ci0g
ICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwotICAgIHJlYWRlci5y
ZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlv
biBwcmVwYXJlRm9yVGVzdCgpCi17Ci0gICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7
Ci0gICAgdmFyIGRvbmUgPSBmdW5jdGlvbigpIHsgaGVscGVyLmRvbmUoKTsgfTsKLQotICAgIGZv
ciAodmFyIHBhdGggaW4gdGVzdEVudHJpZXMpIHsKLSAgICAgICAgdGVzdEVudHJpZXNDb3VudCsr
OwotICAgICAgICBpZiAodGVzdEVudHJpZXNbcGF0aF0pCi0gICAgICAgICAgICBoZWxwZXIucnVu
KGZ1bmN0aW9uKCkgeyBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KHBhdGgsIHtjcmVhdGU6
dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgZmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwg
e2NyZWF0ZTp0cnVlfSwgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOwotICAgIH0KLSAgICBoZWxw
ZXIuam9pbihydW5SZWFkRGlyZWN0b3J5VGVzdCk7Ci19Ci0KLWZ1bmN0aW9uIHN1Y2Nlc3NDYWxs
YmFjayhmcykKLXsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0gICAgZGVidWcoIlN1Y2Nlc3NmdWxs
eSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7Ci0g
ICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnkoZmlsZVN5c3RlbS5yb290LCBwcmVwYXJlRm9yVGVzdCwg
ZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWlmICh3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0p
IHsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSh3aW5kb3cuVEVNUE9SQVJZLCAxMDAsIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVt
IEFQSSBzdXBwb3J0LiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICsw
LDAgQEAKLVtXb3JrZXJdIFRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3Bl
cmF0aW9ucy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtl
cjogLi4vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMKLVtXb3JrZXJdIHJlcXVlc3RlZCBG
aWxlU3lzdGVtLgotW1dvcmtlcl0gR290IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVtX
b3JrZXJdIFN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4KLVtXb3JrZXJdIFN0YXJ0aW5nIGFz
eW5jIHRlc3Qgc3RhZ2UgMi4KLVtXb3JrZXJdIFZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0
dXMuCi1QQVNTIFtXb3JrZXJdICIvYSwvYiwvYywvZDIsL2UsL2YiIGlzICIvYSwvYiwvYywvZDIs
L2UsL2YiCi1QQVNTIFtXb3JrZXJdIGRpcnNDb3VudCBpcyAzCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
YXN5bmMtb3BlcmF0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLXdvcmtlciA9IHN0YXJ0
V29ya2VyKCcuLi9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcycpOwotPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSArMCwwIEBACi1QQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9kZXRhY2hlZC1mcmFtZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2RldGFjaGVkLWZyYW1lLWNyYXNoLmh0bWwJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2RldGFjaGVkLWZyYW1lLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08IS0tIGh0dHA6Ly9jcmJ1Zy5jb20vMTQ3NTkyCi0gICAgIGh0
dHA6Ly93ZWJraXQub3JnL2IvOTYzNTQgLS0+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRM
b2FkZWQiLCBydW5UZXN0KTsKLQotZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIGNsZWFyKTsKLX0KLQotZnVuY3Rpb24gY2xlYXIoZXZlbnQpCi17
Ci0gICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSAiIjsKLSAgICBzZXRUaW1lb3V0KGRvbmUs
IDApOwotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4
dCA9ICJQQVNTIjsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotfQotPC9zY3JpcHQ+Ci08aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJy
ZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtZnJhbWUuaHRtbCIvPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10by11cmktc3luYy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS1lbnRyeS10by11cmktc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZW50cnktdG8tdXJp
LXN5bmMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLVtXb3Jr
ZXJdIE9idGFpbmluZyBVUkwgZnJvbSBGaWxlRW50cnkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLWVudHJ5LXRvLXVy
aS1zeW5jLmpzCi1QQVNTIFtXb3JrZXJdIHRlc3RGaWxlRW50cnkudG9VUkwoKSBpcyAnZmlsZXN5
c3RlbTpmaWxlOi8vL3RlbXBvcmFyeS90ZXN0RmlsZUVudHJ5LnR4dCcKLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1lbnRyeS10
by11cmktc3luYy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLWVudHJ5LXRvLXVyaS1zeW5jLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08
c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9maWxlLWVudHJ5LXRv
LXVyaS1zeW5jLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVu
dHJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1bV29ya2Vy
XSBPYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVu
dHJ5LmpzCi1QQVNTIFtXb3JrZXJdIHRlc3RGaWxlLm5hbWUgaXMgdGVzdEZpbGVFbnRyeS5uYW1l
Ci1QQVNTIFtXb3JrZXJdIHRlc3RGaWxlLnR5cGUgaXMgJ3RleHQvcGxhaW4nCi1QQVNTIFtXb3Jr
ZXJdIHRlc3RGaWxlLnNpemUgaXMgMAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5
LXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBACi1bV29ya2VyXSBPYnRhaW5pbmcgRmls
ZSBmcm9tIEZpbGVFbnRyeVN5bmMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1T
dGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpz
Ci1QQVNTIFtXb3JrZXJdIHRlc3RGaWxlLm5hbWUgaXMgdGVzdEZpbGVFbnRyeS5uYW1lCi1QQVNT
IFtXb3JrZXJdIHRlc3RGaWxlLnR5cGUgaXMgJ3RleHQvcGxhaW4nCi1QQVNTIFtXb3JrZXJdIHRl
c3RGaWxlLnNpemUgaXMgMAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCww
IEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIg
PSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMn
KTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1l
bnRyeS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDExICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4K
LXdvcmtlciA9IHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnku
anMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZW1wdHktYmxvYi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItZW1wdHktYmxvYi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2It
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLVtXb3JrZXJdIFRl
c3QgdGhhdCBGaWxlV3JpdGVyIHdvcmtzIHdpdGhvdXQgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gd3Jp
dGUgYW4gZW1wdHkgYmxvYi4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGlu
ZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLmpzCi1bV29ya2Vy
XSBzdGFydGluZyB0ZXN0Ci1QQVNTIFtXb3JrZXJdIFN1Y2Nlc3NmdWxseSB3cm90ZSBibG9iLgot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJs
b2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWVtcHR5LWJsb2IuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1s
PgotPGhlYWQ+Ci08dGl0bGU+RmlsZSBXcml0ZXIgd2l0aCBlbXB0eSBCbG9iIGluIFdvcmtlcjwv
dGl0bGU+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2Pgot
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0Pgotd29ya2VyID0gc3RhcnRXb3JrZXIo
Ii4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1lbXB0eS1ibG9iLmpzIik7Ci08L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMSArMCwwIEBACi1bV29ya2VyXSBUZXN0IHRoYXQgRmlsZVdyaXRlciBwcm9kdWNlcyBwcm9w
ZXIgcHJvZ3Jlc3MgZXZlbnRzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0
aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLWV2ZW50cy5qcwotW1dvcmtlcl0g
c3RhcnRpbmcgdGVzdAotUEFTUyBbV29ya2VyXSBTYXcgYWxsIHRoZSByaWdodCBldmVudHMuCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLXNo
YXJlZC13b3JrZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29ya2VyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItZXZlbnRzLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgdGhhdCBGaWxlV3Jp
dGVyIHByb2R1Y2VzIHByb3BlciBwcm9ncmVzcyBldmVudHMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1z
dHViLmpzCi1bV29ya2VyXSBzdGFydGluZyB0ZXN0Ci1QQVNTIFtXb3JrZXJdIFNhdyBhbGwgdGhl
IHJpZ2h0IGV2ZW50cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxl
LXdyaXRlci1ldmVudHMtc2hhcmVkLXdvcmtlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29y
a2VyLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtd3JpdGVyLWV2ZW50cy1zaGFyZWQtd29ya2VyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4K
LSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgRXZlbnRzIFNoYXJlZCBXb3JrZXI8L3RpdGxlPgotICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0g
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgdmFyIHdv
cmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zdHViLmpzIiwg
dHJ1ZSAvKiBzaGFyZWQgKi8pOwotICAgICAgICB3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgiSU1Q
T1JUOmZpbGUtd3JpdGVyLWV2ZW50cy5qcyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2Jv
ZHk+Ci08L2h0bWw+Ci0KLQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLXdyaXRlci1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1ldmVudHMuaHRtbAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0
ZXItZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTggKzAsMCBAQAotPCFET0NUWVBF
IEhUTUw+Ci08aHRtbD4KLSA8aGVhZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgRXZlbnRzIFdv
cmtlcjwvdGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci0gPC9oZWFkPgotIDxib2R5PgotICAgIDxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICA8c2NyaXB0
PgotICAgICAgICB3b3JrZXIgPSBzdGFydFdvcmtlcigiLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LWV2ZW50cy5qcyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0K
LQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRl
ci1nYy1ibG9iLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1nYy1ibG9iLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItZ2MtYmxvYi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBA
QAotW1dvcmtlcl0gVGVzdCB0aGF0IGEgYmxvYiB3b24ndCBnZXQgZ2FyYmFnZS1jb2xsZWN0ZWQg
d2hpbGUgYmVpbmcgd3JpdHRlbiBvdXQgYnkgYSBGaWxlV3JpdGVyLgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LWdjLWJsb2IuanMKLVtXb3JrZXJdIHN0YXJ0aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gU3VjY2Vz
c2Z1bGx5IHdyb3RlIGJsb2IuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
ZmlsZS13cml0ZXItZ2MtYmxvYi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXIt
Z2MtYmxvYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4ICswLDAgQEAKLTwhRE9DVFlQRSBI
VE1MPgotPGh0bWw+Ci0gPGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIEdDIEJsb2IgV29y
a2VyPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+
Ci0gICAgICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXIt
Z2MtYmxvYi5qcyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+Ci0K
LQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRl
ci1zeW5jLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy10cnVuY2F0ZS1l
eHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotW1dvcmtlcl0gVGVzdCB1
c2luZyBGaWxlV3JpdGVyU3luYy50cnVuY2F0ZSB0byBleHRlbmQgYSBmaWxlLgotCi1PbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUt
d3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLmpzCi1QQVNTIFtXb3JrZXJdIFRydW5jYXRlIGV4
dGVuc2lvbiB2ZXJpZmllZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLXdyaXRlci1zeW5jLXRydW5jYXRlLWV4dGVuZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUt
ZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXN5bmMtdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4KLSA8aGVh
ZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgU3luYyBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3RpdGxl
PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAg
d29ya2VyID0gc3RhcnRXb3JrZXIoIi4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1zeW5jLXRydW5j
YXRlLWV4dGVuZC5qcyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+
Ci0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0
ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXdyaXRlLW92
ZXJsYXBwZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXdyaXRlLW92ZXJsYXBwZWQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLVtXb3JrZXJdIFRl
c3QgdXNpbmcgRmlsZVdyaXRlclN5bmMuc2VlayB0byB3cml0ZSBvdmVybGFwcGluZyBleGlzdGlu
ZyBkYXRhIGluIGEgZmlsZS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1TdGFydGlu
ZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1zeW5jLXdyaXRlLW92ZXJsYXBwZWQu
anMKLVBBU1MgW1dvcmtlcl0gT3ZlcmxhcHBlZCB3cml0ZSAxIHZlcmlmaWVkLgotUEFTUyBbV29y
a2VyXSBPdmVybGFwcGVkIHdyaXRlIDIgdmVyaWZpZWQuCi1QQVNTIFtXb3JrZXJdIE92ZXJsYXBw
ZWQgd3JpdGUgMyB2ZXJpZmllZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQot
VEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLXdyaXRlci1zeW5jLXdyaXRlLW92ZXJsYXBwZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci1zeW5jLXdyaXRl
LW92ZXJsYXBwZWQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItc3luYy13cml0ZS1vdmVybGFwcGVkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci08aHRtbD4K
LSA8aGVhZD4KLSAgICA8dGl0bGU+RmlsZSBXcml0ZXIgU3luYyBUcnVuY2F0ZS1Uby1FeHRlbmQ8
L3RpdGxlPgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotIDwvaGVhZD4KLSA8Ym9keT4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPHNjcmlwdD4KLSAg
ICAgICAgd29ya2VyID0gc3RhcnRXb3JrZXIoIi4uL3Jlc291cmNlcy9maWxlLXdyaXRlci1zeW5j
LXdyaXRlLW92ZXJsYXBwZWQuanMiKTsKLSAgICA8L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0gPC9ib2R5Pgot
PC9odG1sPgotCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0
ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi1bV29ya2VyXSBUZXN0IG9mIGV4dGVu
ZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi1TdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1l
eHRlbmQuanMKLVtXb3JrZXJdIHN0YXJ0aW5nIHRlc3QKLVBBU1MgW1dvcmtlcl0gVHJ1bmNhdGUg
ZXh0ZW5zaW9uIHZlcmlmaWVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNyArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLTxodG1sPgotIDxoZWFkPgotICAgIDx0aXRs
ZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQgV29ya2VyPC90aXRsZT4KLSAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSA8
L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdvcmtlciA9IHN0
YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzIik7
Ci0gICAgPC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotIDwvYm9keT4KLTwvaHRtbD4KLQotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFw
cGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLXdyaXRlci13cml0ZS1vdmVybGFwcGVkLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTQgKzAsMCBAQAotW1dvcmtlcl0gVGVzdCB1c2luZyBGaWxlV3JpdGVyLnNlZWsgdG8gd3Jp
dGUgb3ZlcmxhcHBpbmcgZXhpc3RpbmcgZGF0YSBpbiBhIGZpbGUuCi0KLU9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXIt
d3JpdGUtb3ZlcmxhcHBlZC5qcwotW1dvcmtlcl0gc3RhcnRpbmcgdGVzdAotUEFTUyBbV29ya2Vy
XSBOZWdhdGl2ZSBzZWVrIHZhbGlkYXRlZC4KLVBBU1MgW1dvcmtlcl0gUG9zaXRpdmUgc2VlayB2
YWxpZGF0ZWQuCi1QQVNTIFtXb3JrZXJdIE5vbmV4dGVuZGluZyB3cml0ZSB2YWxpZGF0ZWQuCi1Q
QVNTIFtXb3JrZXJdIEFsbCB3cml0ZXMgdmVyaWZpZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXdy
aXRlLW92ZXJsYXBwZWQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItd3JpdGUtb3ZlcmxhcHBlZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+Ci0g
PGhlYWQ+Ci0gICAgPHRpdGxlPkZpbGUgV3JpdGVyIFdyaXRlIE92ZXJsYXBwZWQgV29ya2VyPC90
aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLSA8L2hlYWQ+Ci0gPGJvZHk+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgIDxzY3JpcHQ+Ci0gICAg
ICAgIHdvcmtlciA9IHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItd3JpdGUt
b3ZlcmxhcHBlZC5qcyIpOwotICAgIDwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSA8L2JvZHk+Ci08L2h0bWw+
Ci0KLQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJj
ZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jh
c2gtZnJhbWUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLWZyYW1lLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08c2NyaXB0
PgotdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoImRldGFjaGVkLWZyYW1lLWNyYXNoLXdvcmtlci5q
cyIpOwotd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWxheU1lc3NhZ2UpOwot
Ci1mdW5jdGlvbiByZWxheU1lc3NhZ2UoZXZlbnQpCi17Ci0gICAgcGFyZW50LnBvc3RNZXNzYWdl
KGV2ZW50LmRhdGEsIGxvY2F0aW9uLm9yaWdpbik7Ci19Ci08L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1j
cmFzaC13b3JrZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLXdvcmtlci5qcwkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3Vy
Y2VzL2RldGFjaGVkLWZyYW1lLWNyYXNoLXdvcmtlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICswLDAgQEAKLXBvc3RNZXNzYWdlKCJSZWFkeSIpOwotcnVuKCk7Ci0KLWZ1bmN0aW9uIHJ1bigp
Ci17Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxLCBydW4pOwotfQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3Rl
bnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3Rl
bnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVtXb3JrZXJd
IHJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0
ZW50LmpzCi1bV29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lz
dGVtOmZpbGVfXzA6UGVyc2lzdGVudAotUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVu
Z3RoID4gMCBpcyB0cnVlCi1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBp
cyAiLyIKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lz
dGVudC1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMg
KzAsMCBAQAotW1dvcmtlcl0gd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RFTlQg
dGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjog
Li4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMKLVtXb3JrZXJdIFN1Y2Nlc3Nm
dWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50Ci1Q
QVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1MgW1dv
cmtlcl0gZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVu
dC1zeW5jLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3Jp
cHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50
LXN5bmMuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1w
ZXJzaXN0ZW50Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTEgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0
Pgotd29ya2VyID0gc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5q
cycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVt
cG9yYXJ5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTMgKzAsMCBAQAotW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0ZW0gVEVN
UE9SQVJZIHRlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3
b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzCi1bV29ya2VyXSBTdWNjZXNz
ZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVBB
U1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQotUEFTUyBbV29y
a2VyXSBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVt
cG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVtXb3JrZXJdIHJlcXVlc3RGaWxl
U3lzdGVtU3luYyBURU1QT1JBUlkgdGVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5q
cwotW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZp
bGVfXzA6VGVtcG9yYXJ5Ci1QQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAw
IGlzIHRydWUKLVBBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3lu
Yy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L3NpbXBsZS10ZW1wb3Jhcnktc3luYy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3Np
bXBsZS10ZW1wb3Jhcnktc3luYy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1w
b3JhcnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS10
ZW1wb3JhcnkuanMnKTsKLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
eW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLVtXb3JrZXJdIFRlc3QgbWFraW5nIG11
bHRpcGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4KLQotT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgotCi0KLVN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3N5bmMtb3Bl
cmF0aW9ucy5qcwotUEFTUyBbV29ya2VyXSAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2Is
L2MsL2QyLC9lLC9mIgotUEFTUyBbV29ya2VyXSBkaXJzQ291bnQgaXMgMwotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5o
dG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBA
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci13b3JrZXIgPSBz
dGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcycpOwotPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS1jcmFzaC1mcmFtZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc291cmNlcy9k
ZXRhY2hlZC1mcmFtZS1jcmFzaC1mcmFtZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUt
Y3Jhc2gtZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD4KLTxzY3JpcHQ+Ci12YXIgd29ya2VyID0gbmV3IFdvcmtlcigiZGV0YWNoZWQtZnJh
bWUtY3Jhc2gtd29ya2VyLmpzIik7Ci13b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IHJlbGF5TWVzc2FnZSk7Ci0KLWZ1bmN0aW9uIHJlbGF5TWVzc2FnZShldmVudCkKLXsKLSAgICBw
YXJlbnQucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSwgbG9jYXRpb24ub3JpZ2luKTsKLX0KLTwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb3VyY2Vz
L2RldGFjaGVkLWZyYW1lLWNyYXNoLXdvcmtlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gt
d29ya2VyLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9yZXNvdXJjZXMvZGV0YWNoZWQtZnJhbWUtY3Jhc2gtd29ya2VyLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzAsMCBAQAotcG9zdE1lc3NhZ2UoIlJlYWR5Iik7Ci1ydW4oKTsK
LQotZnVuY3Rpb24gcnVuKCkKLXsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JB
UlksIDEsIHJ1bik7Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQt
ZmlsZS1lbnRyaWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1lbnRyaWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtZW50cmllcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsODMgKzAsMCBAQAotCi1UZXN0cyB0aGUg
d2Via2l0RW50cmllcyBhdHRyaWJ1dGUgb2YgPGlucHV0IHR5cGU9ImZpbGUiPgotCi1PbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCi0KLQotKiBUZXN0aW5nIHRlc3RDYXNlc1swXQotUEFTUyBkcm9w
cGVkRW50cmllcy5sZW5ndGggaXMgMQotVmVyaWZ5aW5nIGVudHJ5ICgwLzEpOi9VVEY4LnR4dAot
UEFTUyB2ZXJpZnlpbmdFbnRyeS5mdWxsUGF0aCBpcyAiL1VURjgudHh0IgotUEFTUyB0eXBlb2Yg
dmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMgJ2Jvb2xlYW4nCi1QQVNTIHZlcmlmeWluZ0Vu
dHJ5LmlzRGlyZWN0b3J5IGlzIGZhbHNlCi1QQVNTIHJldHVybmVkTWV0YWRhdGEuc2l6ZSBpcyA1
Ci0qIFRlc3RpbmcgdGVzdENhc2VzWzFdCi1QQVNTIGRyb3BwZWRFbnRyaWVzLmxlbmd0aCBpcyAx
Ci1WZXJpZnlpbmcgZW50cnkgKDAvMSk6L2RpcjEKLVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVsbFBh
dGggaXMgIi9kaXIxIgotUEFTUyB0eXBlb2YgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMg
J2Jvb2xlYW4nCi1QQVNTIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzIHRydWUKLVBBU1Mg
cmV0dXJuZWRFbnRyaWVzLmxlbmd0aCBpcyAyCi0vZGlyMS9VVEY4LTIudHh0Ci0vZGlyMS9VVEY4
LnR4dAotKiBUZXN0aW5nIHRlc3RDYXNlc1syXQotUEFTUyBkcm9wcGVkRW50cmllcy5sZW5ndGgg
aXMgMwotVmVyaWZ5aW5nIGVudHJ5ICgwLzMpOi9hcHBsZS5naWYKLVBBU1MgdmVyaWZ5aW5nRW50
cnkuZnVsbFBhdGggaXMgIi9hcHBsZS5naWYiCi1QQVNTIHR5cGVvZiB2ZXJpZnlpbmdFbnRyeS5p
c0RpcmVjdG9yeSBpcyAnYm9vbGVhbicKLVBBU1MgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3Rvcnkg
aXMgZmFsc2UKLVBBU1MgcmV0dXJuZWRNZXRhZGF0YS5zaXplIGlzIDMzNDAKLVZlcmlmeWluZyBl
bnRyeSAoMS8zKTovVVRGOC50eHQKLVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVsbFBhdGggaXMgIi9V
VEY4LnR4dCIKLVBBU1MgdHlwZW9mIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzICdib29s
ZWFuJwotUEFTUyB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyBmYWxzZQotUEFTUyByZXR1
cm5lZE1ldGFkYXRhLnNpemUgaXMgNQotVmVyaWZ5aW5nIGVudHJ5ICgyLzMpOi9ncmVlbi5qcGcK
LVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVsbFBhdGggaXMgIi9ncmVlbi5qcGciCi1QQVNTIHR5cGVv
ZiB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyAnYm9vbGVhbicKLVBBU1MgdmVyaWZ5aW5n
RW50cnkuaXNEaXJlY3RvcnkgaXMgZmFsc2UKLVBBU1MgcmV0dXJuZWRNZXRhZGF0YS5zaXplIGlz
IDc2NAotKiBUZXN0aW5nIHRlc3RDYXNlc1szXQotUEFTUyBkcm9wcGVkRW50cmllcy5sZW5ndGgg
aXMgMgotVmVyaWZ5aW5nIGVudHJ5ICgwLzIpOi9kaXIxCi1QQVNTIHZlcmlmeWluZ0VudHJ5LmZ1
bGxQYXRoIGlzICIvZGlyMSIKLVBBU1MgdHlwZW9mIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5
IGlzICdib29sZWFuJwotUEFTUyB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCi1Q
QVNTIHJldHVybmVkRW50cmllcy5sZW5ndGggaXMgMgotL2RpcjEvVVRGOC0yLnR4dAotL2RpcjEv
VVRGOC50eHQKLVZlcmlmeWluZyBlbnRyeSAoMS8yKTovZGlyMgotUEFTUyB2ZXJpZnlpbmdFbnRy
eS5mdWxsUGF0aCBpcyAiL2RpcjIiCi1QQVNTIHR5cGVvZiB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVj
dG9yeSBpcyAnYm9vbGVhbicKLVBBU1MgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMgdHJ1
ZQotUEFTUyByZXR1cm5lZEVudHJpZXMubGVuZ3RoIGlzIDEKLS9kaXIyL2dyZWVuLmpwZwotKiBU
ZXN0aW5nIHRlc3RDYXNlc1s0XQotUEFTUyBkcm9wcGVkRW50cmllcy5sZW5ndGggaXMgNAotVmVy
aWZ5aW5nIGVudHJ5ICgwLzQpOi9kaXIxCi1QQVNTIHZlcmlmeWluZ0VudHJ5LmZ1bGxQYXRoIGlz
ICIvZGlyMSIKLVBBU1MgdHlwZW9mIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzICdib29s
ZWFuJwotUEFTUyB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyB0cnVlCi1QQVNTIHJldHVy
bmVkRW50cmllcy5sZW5ndGggaXMgMgotL2RpcjEvVVRGOC0yLnR4dAotL2RpcjEvVVRGOC50eHQK
LVZlcmlmeWluZyBlbnRyeSAoMS80KTovVVRGOC50eHQKLVBBU1MgdmVyaWZ5aW5nRW50cnkuZnVs
bFBhdGggaXMgIi9VVEY4LnR4dCIKLVBBU1MgdHlwZW9mIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0
b3J5IGlzICdib29sZWFuJwotUEFTUyB2ZXJpZnlpbmdFbnRyeS5pc0RpcmVjdG9yeSBpcyBmYWxz
ZQotUEFTUyByZXR1cm5lZE1ldGFkYXRhLnNpemUgaXMgNQotVmVyaWZ5aW5nIGVudHJ5ICgyLzQp
Oi90ZXN0LnR4dAotUEFTUyB2ZXJpZnlpbmdFbnRyeS5mdWxsUGF0aCBpcyAiL3Rlc3QudHh0Igot
UEFTUyB0eXBlb2YgdmVyaWZ5aW5nRW50cnkuaXNEaXJlY3RvcnkgaXMgJ2Jvb2xlYW4nCi1QQVNT
IHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlzIGZhbHNlCi1QQVNTIHJldHVybmVkTWV0YWRh
dGEuc2l6ZSBpcyA1Ci1WZXJpZnlpbmcgZW50cnkgKDMvNCk6L2RpcjIKLVBBU1MgdmVyaWZ5aW5n
RW50cnkuZnVsbFBhdGggaXMgIi9kaXIyIgotUEFTUyB0eXBlb2YgdmVyaWZ5aW5nRW50cnkuaXNE
aXJlY3RvcnkgaXMgJ2Jvb2xlYW4nCi1QQVNTIHZlcmlmeWluZ0VudHJ5LmlzRGlyZWN0b3J5IGlz
IHRydWUKLVBBU1MgcmV0dXJuZWRFbnRyaWVzLmxlbmd0aCBpcyAxCi0vZGlyMi9ncmVlbi5qcGcK
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1lbnRyaWVzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtZW50cmll
cy5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUv
aW5wdXQtZmlsZS1lbnRyaWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTM2ICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08Ym9keT4KLTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1l
PSJmaWxlcyIgaWQ9ImZpbGVzIj4KLTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
PgotZGVzY3JpcHRpb24oJ1Rlc3RzIHRoZSB3ZWJraXRFbnRyaWVzIGF0dHJpYnV0ZSBvZiAmbHQ7
aW5wdXQgdHlwZT0iZmlsZSImZ3Q7Jyk7Ci0KLXZhciB0ZXN0Q2FzZXMgPSBbCi0gIC8vIFNpbmds
ZSBmaWxlLgotICBbJ2RpcjEvVVRGOC50eHQnXSwKLSAgLy8gU2luZ2xlIGRpcmVjdG9yeS4KLSAg
WydkaXIxJ10sCi0gIC8vIE11bHRpcGxlIGZpbGVzLgotICBbJ2FwcGxlLmdpZicsICdkaXIxL1VU
RjgudHh0JywgJ2RpcjIvZ3JlZW4uanBnJ10sCi0gIC8vIE11bHRpcGxlIGRpcmVjdG9yaWVzLgot
ICBbJ2RpcjEnLCAnZGlyMiddLAotICAvLyBNaXhlZCBjYXNlLgotICBbJ2RpcjEnLCAnZGlyMS9V
VEY4LnR4dCcsICd0ZXN0LnR4dCcsICdkaXIyJ10KLV07Ci0KLS8vIFRoZSBleHBlY3RlZCBkaXJl
Y3Rvcmllcy9maWxlcyBpbmZvIGluIHRoZSBhY3R1YWwgcmVzb3VyY2VzIGRpcmVjdG9yeS4KLXZh
ciBleHBlY3RlZEZpbGVBdHRyaWJ1dGVzID0gewotICAnZGlyMSc6IHsgJ2RpcmVjdG9yeSc6IHRy
dWUsICdmaWxlcyc6WyAnL2RpcjEvVVRGOC50eHQnLCAnL2RpcjEvVVRGOC0yLnR4dCcgXSB9LAot
ICAnZGlyMic6IHsgJ2RpcmVjdG9yeSc6IHRydWUsICdmaWxlcyc6WyAnL2RpcjIvZ3JlZW4uanBn
JyBdIH0sCi0gICdhcHBsZS5naWYnOiAgICAgICB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3NpemUn
OiAzMzQwIH0sCi0gICd0ZXN0LnR4dCc6ICAgICAgICB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3Np
emUnOiA1IH0sCi0gICdkaXIxL1VURjgudHh0JzogICB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3Np
emUnOiA1IH0sCi0gICdkaXIxL1VURjgtMi50eHQnOiB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3Np
emUnOiA5IH0sCi0gICdkaXIyL2dyZWVuLmpwZyc6ICB7ICdkaXJlY3RvcnknOiBmYWxzZSwgJ3Np
emUnOiA3NjQgfQotfTsKLQotdmFyIGRyb3BwZWRFbnRyaWVzLCB2ZXJpZnlpbmdFbnRyeSwgcmV0
dXJuZWRNZXRhZGF0YSwgcmV0dXJuZWRFbnRyaWVzOwotCi12YXIganNUZXN0SXNBc3luYyA9IHRy
dWU7Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICBkb1Rlc3QoMCk7Ci19Ci0KLWZ1bmN0aW9uIGRvVGVzdChpbmRleCkKLXsKLSAg
ICBpZiAoaW5kZXggPj0gdGVzdENhc2VzLmxlbmd0aCkgewotICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVidWcoJyogVGVzdGluZyB0ZXN0Q2FzZXNb
JyArIGluZGV4ICsgJ10nKTsKLSAgICB2YXIgcGF0aHMgPSB0ZXN0Q2FzZXNbaW5kZXhdOwotICAg
IHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlcycpOwotICAgIGlucHV0
Lm9uY2hhbmdlID0gZnVuY3Rpb24oKSB7IG9uSW5wdXRGaWxlQ2hhbmdlKGluZGV4KTsgfTsKLSAg
ICBpZiAocGF0aHMubGVuZ3RoID4gMSkKLSAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdtdWx0
aXBsZScsICdtdWx0aXBsZScpCi0gICAgZWxzZQotICAgICAgICBpbnB1dC5yZW1vdmVBdHRyaWJ1
dGUoJ211bHRpcGxlJykKLSAgICB2YXIgdGVzdFBhdGhzID0gcGF0aHMubWFwKGZ1bmN0aW9uKHBh
dGgpIHsgcmV0dXJuICcuLi9yZXNvdXJjZXMvJyArIHBhdGggfSk7Ci0gICAgZXZlbnRTZW5kZXIu
YmVnaW5EcmFnV2l0aEZpbGVzKHRlc3RQYXRocyk7Ci0gICAgdmFyIGNlbnRlclggPSBpbnB1dC5v
ZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGggLyAyOwotICAgIHZhciBjZW50ZXJZID0gaW5w
dXQub2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0IC8gMjsKLSAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
Ci19Ci0KLWZ1bmN0aW9uIG9uSW5wdXRGaWxlQ2hhbmdlKGluZGV4KQotewotICAgIGRyb3BwZWRF
bnRyaWVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGVzJykud2Via2l0RW50cmllczsK
LSAgICBzaG91bGRFdmFsdWF0ZVRvKCdkcm9wcGVkRW50cmllcy5sZW5ndGgnLCB0ZXN0Q2FzZXNb
aW5kZXhdLmxlbmd0aCk7Ci0gICAgdmVyaWZ5RW50cnkoaW5kZXgsIDApOwotfQotCi1mdW5jdGlv
biB2ZXJpZnlFbnRyeSh0ZXN0SW5kZXgsIGVudHJ5SW5kZXgpCi17Ci0gICAgaWYgKGVudHJ5SW5k
ZXggPT0gdGVzdENhc2VzW3Rlc3RJbmRleF0ubGVuZ3RoKSB7Ci0gICAgICAgIGRvVGVzdCh0ZXN0
SW5kZXggKyAxKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBlbnRyeSA9IHZl
cmlmeWluZ0VudHJ5ID0gZHJvcHBlZEVudHJpZXNbZW50cnlJbmRleF07Ci0gICAgZGVidWcoJ1Zl
cmlmeWluZyBlbnRyeSAoJyArIGVudHJ5SW5kZXggKyAnLycgKyB0ZXN0Q2FzZXNbdGVzdEluZGV4
XS5sZW5ndGggKyAnKTonICsgZW50cnkuZnVsbFBhdGgpOwotCi0gICAgdmFyIHBhdGggPSB0ZXN0
Q2FzZXNbdGVzdEluZGV4XVtlbnRyeUluZGV4XTsKLSAgICB2YXIgZXhwZWN0ZWQgPSBleHBlY3Rl
ZEZpbGVBdHRyaWJ1dGVzW3BhdGhdOwotICAgIHZhciBleHBlY3RlZFBhdGggPSAnLycgKyBnZXRC
YXNlTmFtZShwYXRoKTsKLQotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndmVyaWZ5aW5nRW50
cnkuZnVsbFBhdGgnLCBleHBlY3RlZFBhdGgpOwotICAgIHNob3VsZEV2YWx1YXRlVG8oJ3Zlcmlm
eWluZ0VudHJ5LmlzRGlyZWN0b3J5JywgZXhwZWN0ZWQuZGlyZWN0b3J5KTsKLQotICAgIHZhciBj
YWxsYmFjayA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlFbnRyeSh0ZXN0SW5kZXgsIGVudHJ5SW5kZXgg
KyAxKTsgfTsKLSAgICBpZiAoZW50cnkuaXNGaWxlKSB7Ci0gICAgICAgIGVudHJ5LmdldE1ldGFk
YXRhKHZlcmlmeUZpbGUuYmluZCh0aGlzLCBleHBlY3RlZCwgY2FsbGJhY2spLCBvbkVycm9yKTsK
LSAgICB9IGVsc2UgewotICAgICAgICB2YXIgcmVhZGVyID0gZW50cnkuY3JlYXRlUmVhZGVyKCk7
Ci0gICAgICAgIHJlYWRlci5yZWFkRW50cmllcyh2ZXJpZnlEaXJlY3RvcnkuYmluZCh0aGlzLCBl
eHBlY3RlZCwgY2FsbGJhY2spLCBvbkVycm9yKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHZlcmlm
eUZpbGUoZXhwZWN0ZWQsIGNhbGxiYWNrLCBtZXRhZGF0YSkKLXsKLSAgICByZXR1cm5lZE1ldGFk
YXRhID0gbWV0YWRhdGE7Ci0gICAgc2hvdWxkRXZhbHVhdGVUbygncmV0dXJuZWRNZXRhZGF0YS5z
aXplJywgZXhwZWN0ZWQuc2l6ZSk7Ci0gICAgY2FsbGJhY2soKTsKLX0KLQotZnVuY3Rpb24gdmVy
aWZ5RGlyZWN0b3J5KGV4cGVjdGVkLCBjYWxsYmFjaywgZW50cmllcykKLXsKLSAgICByZXR1cm5l
ZEVudHJpZXMgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgLy8gU2tpcCB0aGUgZW50cmllcyB0aGF0IHN0YXJ0IHdpdGggJy4nIChz
byB0aGF0IHdlIGRvIG5vdCBnZXQgJy5zdm4nIGV0YykKLSAgICAgICAgaWYgKGVudHJpZXNbaV0u
bmFtZS5pbmRleE9mKCcuJykgPT0gMCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBy
ZXR1cm5lZEVudHJpZXMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKLSAgICB9Ci0gICAgcmV0
dXJuZWRFbnRyaWVzLnNvcnQoKTsKLSAgICBzaG91bGRFdmFsdWF0ZVRvKCdyZXR1cm5lZEVudHJp
ZXMubGVuZ3RoJywgZXhwZWN0ZWQuZmlsZXMubGVuZ3RoKTsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJldHVybmVkRW50cmllcy5sZW5ndGg7IGkrKykKLSAgICAgICAgZGVidWcocmV0dXJuZWRF
bnRyaWVzW2ldKTsKLSAgICBjYWxsYmFjaygpOwotfQotCi1mdW5jdGlvbiBnZXRCYXNlTmFtZShw
YXRoKQotewotICAgIHZhciBjb21wb25lbnRzID0gcGF0aC5zcGxpdCgnLycpOwotICAgIHJldHVy
biBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV07Ci19Ci0KLWZ1bmN0aW9uIG9uRXJy
b3IoZXJyb3IpCi17Ci0gICAgdGVzdEZhaWxlZCgnVGVzdCBmaW5pc2hlZCB3aXRoIHVuZXhwZWN0
ZWQgZXJyb3I6ICcgKyBlcnJvci5jb2RlKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotPC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZpbGVzeXN0ZW0vbm8tY2FjaGUtZmlsZXN5c3RlbS11cmwtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9uby1jYWNoZS1maWxlc3lz
dGVtLXVybC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZmlsZXN5c3RlbS9uby1jYWNoZS1maWxlc3lzdGVtLXVybC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEgKzAsMCBAQAotU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9maWxlc3lzdGVtL25vLWNhY2hlLWZpbGVzeXN0ZW0tdXJsLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL25vLWNhY2hlLWZpbGVz
eXN0ZW0tdXJsLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS9uby1jYWNoZS1maWxlc3lzdGVtLXVybC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDU4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0gIDxib2R5PgotICAg
IDxwIGlkPSJyZXN1bHQiPgotICAgIDwvcD4KLSAgICA8c2NyaXB0PgotICAgIHZhciBleHBlY3Rl
ZCA9IC0xOwotICAgIGZ1bmN0aW9uIGdldEZpbGVXcml0ZXIoY2FsbGJhY2spIHsKLSAgICAgIHdl
YmtpdFJlcXVlc3RGaWxlU3lzdGVtKFBFUlNJU1RFTlQsIDEwMjQsIGZ1bmN0aW9uKGZzKSB7Ci0g
ICAgICAgIGZzLnJvb3QuZ2V0RmlsZSgiL2NhY2hpbmctdGVzdC5qcyIsIHtjcmVhdGU6dHJ1ZX0s
IGZ1bmN0aW9uKGZpbGUpIHsKLSAgICAgICAgICBmaWxlLmNyZWF0ZVdyaXRlcihmdW5jdGlvbih3
cml0ZXIpIHsKLSAgICAgICAgICAgIHdyaXRlci5vbndyaXRlZW5kID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgIHdyaXRlci5vbndyaXRlZW5kID0gdW5kZWZpbmVkOwotICAgICAgICAgICAg
ICBjYWxsYmFjayhmaWxlLCB3cml0ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd3Jp
dGVyLnRydW5jYXRlKDApOwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgIH0pOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIHdyaXRlUmFuZFRvRmlsZSh3cml0ZXIsIGNhbGxiYWNrKSB7
Ci0gICAgICB2YXIgcmFuZCA9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApOwotICAg
ICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgY2FsbGJhY2socmFu
ZCk7Ci0gICAgICB9OwotICAgICAgd3JpdGVyLndyaXRlKG5ldyBCbG9iKFsnZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9IChleHBlY3RlZCA9PSAnICsgcmFuZCAr
ICcpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUiOyddLCB7dHlwZTondGV4dC9wbGFpbid9KSk7Ci0g
ICAgfQotCi0gICAgZ2V0RmlsZVdyaXRlcihmdW5jdGlvbihmaWxlLCB3cml0ZXIpIHsKLSAgICAg
IHdyaXRlUmFuZFRvRmlsZSh3cml0ZXIsIGZ1bmN0aW9uKHJhbmQpIHsKLSAgICAgICAgdmFyIHNj
cmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwotICAgICAgICBzY3JpcHQu
c3JjID0gZmlsZS50b1VSTCgpOwotICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCAh
PSAnP3JlbG9hZD0xJykgewotICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWYg
KyAnP3JlbG9hZD0xJwotICAgICAgICAgIH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
c2NyaXB0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgZmlsZS5yZW1vdmUoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAgIGV4cGVjdGVkID0g
cmFuZDsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpOwotICAgICAg
fSk7Ci0gICAgfSk7Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0g
ICAgfQotICAgIDwvc2NyaXB0PgotICA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb2x2ZS11cmktZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvbHZlLXVyaS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmls
ZXN5c3RlbS9yZXNvbHZlLXVyaS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDIg
KzAsMCBAQAotVGVzdHMgdXNpbmcgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCB0byBv
YnRhaW4gYW4gRW50cnkgZnJvbSBhIFVSTAotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0K
LQotKiBSZXNvbHZpbmcgYSBnZW5lcmF0ZWQgVVJMLgotUEFTUyBleHBlY3RlZFBhdGggaXMgYWN0
dWFsUGF0aAotUEFTUyBpc0ZpbGUgaXMgdHJ1ZQotKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhh
bmQKLVBBU1MgZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgaXNGaWxlIGlzIHRydWUK
LSogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoZG9tYWlu
KQotUEFTUyBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotKiBSZXNvbHZpbmcg
YSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChwb3J0KQotUEFTUyBGaWxlRXJy
b3IuU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUg
d3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChzY2hlbWUpCi1QQVNTIEZpbGVFcnJvci5TRUNVUklUWV9F
UlIgaXMgZXJyb3JDb2RlCi0qIFJlc29sdmluZyBhIGNvbXBsZXRlbHkgYm9ndXMgVVJMLgotUEFT
UyBGaWxlRXJyb3IuRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotKiBSZXNvbHZpbmcgYSBVUkwg
d2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wKLVBBU1MgRmlsZUVycm9yLkVOQ09ESU5HX0VSUiBpcyBl
cnJvckNvZGUKLSogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiB0eXBlIGFu
ZCBmaWxlCi1QQVNTIEZpbGVFcnJvci5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi0qIFJlc29s
dmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3Vz
IHBvcnQpCi1QQVNTIEZpbGVFcnJvci5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi0qIFJlc29s
dmUgYSBwYXRoIHVzaW5nIGJhY2tzbGFzaGVzCi1QQVNTIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQ
YXRoCi1QQVNTIGlzRmlsZSBpcyB0cnVlCi0qIFJlc29sdmUgYSBkaXJlY3RvcnkKLVBBU1MgZXhw
ZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgaXNEaXJlY3RvcnkgaXMgdHJ1ZQotKiBSZXNv
bHZlIGEgcGF0aCB1c2luZyBhIHRyYWlsaW5nIHNsYXNoCi1QQVNTIGV4cGVjdGVkUGF0aCBpcyBh
Y3R1YWxQYXRoCi1QQVNTIGlzRGlyZWN0b3J5IGlzIHRydWUKLSogUmVzb2x2aW5nIGEgcGVyc2lz
dGVudCBVUkwuCi1QQVNTIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIGlzRGlyZWN0
b3J5IGlzIHRydWUKLUZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9maWxlc3lzdGVtL3Jlc29sdmUtdXJpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc29sdmUtdXJpLmh0bWwJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvbHZlLXVyaS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
LTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmkuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMt
dGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU0ICswLDAgQEAKLWZ1bmN0aW9uIGJp
bmRDYWxsYmFjayhvYmosIGNhbGxiYWNrLCBhcmcxLCBhcmcyLCBhcmczKQotewotICAgIHJldHVy
biBmdW5jdGlvbihhcmcpIHsKLSAgICAgICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpCi0gICAgICAg
ICAgICBjYWxsYmFjay5hcHBseShvYmosIFthcmcxLCBhcmcyLCBhcmczXSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG9iaiwgW2FyZywgYXJnMSwgYXJnMiwgYXJn
M10pOwotICAgIH07Ci19Ci0KLS8vIFJlbW92ZSBldmVyeXRoaW5nIGluIHRoZSBnaXZlbiBkaXJl
Y3RvcnkuCi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3RvcnksIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciBSZW1vdmVBbGxJbkRpcmVjdG9yeUhl
bHBlciA9IGZ1bmN0aW9uKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAg
ICB0aGlzLmVudHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlOwotICAg
ICAgICB0aGlzLnJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0g
c3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJvckNhbGxi
YWNrOwotCi0gICAgICAgIHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2sgPSBiaW5kQ2FsbGJhY2so
dGhpcywgZnVuY3Rpb24oZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgtLXRoaXMu
ZW50cmllc0NvdW50ID09IDAgJiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhpcy5kb25lKSB7
Ci0gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAg
ICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0p
OwotCi0gICAgICAgIHRoaXMuZW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRoaXMsIGZ1
bmN0aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHRoaXMuZW50cmllc0Nv
dW50Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAg
ICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhpcy5lbnRyeVJl
bW92ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKHRoaXMuZW50cnlSZW1vdmVk
Q2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoZW50cmllcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVu
dHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0aGlzLmVudHJpZXNDb3VudCA+IDApCi0gICAgICAgICAgICAgICAgdGhp
cy5kb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3VjY2Vzc0NhbGxiYWNr
KQotICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwot
Ci0gICAgICAgIHRoaXMucmVtb3ZlQWxsSW5EaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJlY3Rvcnkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMucmVhZGVyID0gZGlyZWN0b3J5LmNyZWF0ZVJl
YWRlcigpOwotICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5lbnRyaWVz
Q2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAg
IHZhciBoZWxwZXIgPSBuZXcgUmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxwZXIoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIucmVtb3ZlQWxsSW5EaXJlY3RvcnkoZGly
ZWN0b3J5KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlzaW9u
IDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZnMtd29ya2VyLWNvbW1vbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi1mdW5j
dGlvbiBkZWJ1ZyhtZXNzYWdlKQotewotICAgIHBvc3RNZXNzYWdlKCJNRVNHOiIgKyBtZXNzYWdl
KTsKLX0KLQotZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkKLXsKLSAgICBwb3N0TWVzc2FnZSgiRE9O
RToiKTsKLX0KLQotZnVuY3Rpb24gZGVzY3JpcHRpb24obWVzc2FnZSkKLXsKLSAgICBwb3N0TWVz
c2FnZSgnREVTQzonICsgbWVzc2FnZSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQYXNzZWQobXNnKSB7
Ci0gICAgcG9zdE1lc3NhZ2UoIlBBU1M6IiArIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RGYWls
ZWQobXNnKSB7Ci0gICAgcG9zdE1lc3NhZ2UoIkZBSUw6IiArIG1zZyk7Ci19Ci0KLWZ1bmN0aW9u
IHNob3VsZEJlKF9hLCBfYikKLXsKLSAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8fCB0eXBl
b2YgX2IgIT0gInN0cmluZyIpCi0gICAgZGVidWcoIldBUk46IHNob3VsZEJlKCkgZXhwZWN0cyBz
dHJpbmcgYXJndW1lbnRzIik7Ci0gIHZhciBfYXYgPSBldmFsKF9hKTsKLSAgdmFyIF9idiA9IGV2
YWwoX2IpOwotICBpZiAoX2F2ID09PSBfYnYpCi0gICAgdGVzdFBhc3NlZChfYSArICIgaXMgIiAr
IF9iKTsKLSAgZWxzZQotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsg
IiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIgKG9mIHR5cGUg
IiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVUcnVlKF9hKSB7
IHNob3VsZEJlKF9hLCAidHJ1ZSIpOyB9Ci0KLWZ1bmN0aW9uIHJlbW92ZUFsbEluRGlyZWN0b3J5
U3luYyhkaXJlY3RvcnkpIHsKLSAgICBpZiAoIWRpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHZhciByZWFkZXIgPSBkaXJlY3RvcnkuY3JlYXRlUmVhZGVyKCk7Ci0gICAgZG8gewotICAg
ICAgICB2YXIgZW50cmllcyA9IHJlYWRlci5yZWFkRW50cmllcygpOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChlbnRy
aWVzW2ldLmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVj
dXJzaXZlbHkoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbnRyaWVzW2ld
LnJlbW92ZSgpOwotICAgICAgICB9Ci0gICAgfSB3aGlsZSAoZW50cmllcy5sZW5ndGgpOwotfQot
Ci1pZiAodGhpcy5pbXBvcnRTY3JpcHRzICYmICF0aGlzLnJlcXVlc3RGaWxlU3lzdGVtICYmICF0
aGlzLndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgZGVidWcoJ1RoaXMgdGVzdCByZXF1
aXJlcyBGaWxlU3lzdGVtIEFQSS4nKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3Qt
dXRpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3Qt
dXRpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi13aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Ci0KLWZ1bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCi17Ci0g
ICAgZGVidWcoJ1N0YXJ0aW5nIHdvcmtlcjogJyArIHRlc3RTY3JpcHRVUkwpOwotICAgIHZhciB3
b3JrZXIgPSBuZXcgV29ya2VyKHRlc3RTY3JpcHRVUkwpOwotICAgIHdvcmtlci5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChldmVudC5kYXRhLmxlbmd0aCA8
IDUgfHwgZXZlbnQuZGF0YS5jaGFyQXQoNCkgIT0gJzonKSB7Ci0gICAgICAgICAgICBkZWJ1Zygi
R290IGludmFsaWQgbWVzc2FnZSBmcm9tIHdvcmtlcjoiICsgKGV2ZW50LmRhdGEgPyBldmVudC5k
YXRhIDogIm51bGwiKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgY29kZSA9
IGV2ZW50LmRhdGEuc3Vic3RyaW5nKDAsIDQpOwotICAgICAgICAgICAgdmFyIHBheWxvYWQgPSAi
W1dvcmtlcl0gIiArIGV2ZW50LmRhdGEuc3Vic3RyaW5nKDUpOwotICAgICAgICAgICAgaWYgKGNv
ZGUgPT0gIlBBU1MiKQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQocGF5bG9hZCk7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChjb2RlID09ICJGQUlMIikKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKHBheWxvYWQpOwotICAgICAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiREVTQyIpCi0gICAg
ICAgICAgICAgICAgZGVzY3JpcHRpb24ocGF5bG9hZCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChj
b2RlID09ICJET05FIikKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGNvZGUgPT0gIk1FU0ciKQotICAgICAgICAgICAgICAgIGRlYnVnKHBheWxv
YWQpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpCi0gICAgewotICAgICAgICBkZWJ1ZygnR290IGVycm9yIGZyb20gd29ya2VyOiAnICsg
ZXZlbnQubWVzc2FnZSk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvVEVNUExBVEUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0
IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9yZXNv
bHZlLXVyaS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0
ZW0vc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJpLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIwNiArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRTY3JpcHRz
KSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMn
KTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzJyk7Ci19
Ci0KLWRlc2NyaXB0aW9uKCJUZXN0cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVt
VVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMIik7Ci0KLXZhciB0ZXN0RmlsZU5hbWUg
PSAnL3Rlc3RGaWxlJzsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciBleHBlY3RlZFBhdGgg
PSBudWxsOwotdmFyIGFjdHVhbFBhdGggPSBudWxsOwotdmFyIGVycm9yQ29kZSA9IG51bGw7Ci0K
LWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICBpZiAoZXJyb3IgJiYgZXJyb3Iu
Y29kZSkKLSAgICAgICAgZGVidWcoIkVycm9yIG9jY3VycmVkOiAiICsgZXJyb3IuY29kZSk7Ci0g
ICAgdGVzdEZhaWxlZCgiQmFpbGluZyBvdXQgZWFybHkiKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsK
LX0KLQotZnVuY3Rpb24gZXhwZWN0U2VjdXJpdHlFcnJBbmRSdW5OZXh0KGVycm9yKSB7Ci0gICAg
ZXJyb3JDb2RlID0gZXJyb3IuY29kZTsKLSAgICBzaG91bGRCZSgiRmlsZUVycm9yLlNFQ1VSSVRZ
X0VSUiIsICJlcnJvckNvZGUiKTsKLSAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotfQotCi1mdW5j
dGlvbiBleHBlY3RFbmNvZGluZ0VyckFuZFJ1bk5leHQoZXJyb3IpIHsKLSAgICBlcnJvckNvZGUg
PSBlcnJvci5jb2RlOwotICAgIHNob3VsZEJlKCJGaWxlRXJyb3IuRU5DT0RJTkdfRVJSIiwgImVy
cm9yQ29kZSIpOwotICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0
ZVRlc3RGaWxlKGNhbGxiYWNrKSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUodGVzdEZp
bGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1
bmN0aW9uIGFzc2VydFBhdGhzTWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkgewotICAgIGV4cGVjdGVk
UGF0aCA9IGV4cGVjdGVkOwotICAgIGFjdHVhbFBhdGggPSBhY3R1YWw7Ci0gICAgc2hvdWxkQmUo
ImV4cGVjdGVkUGF0aCIsICJhY3R1YWxQYXRoIik7Ci19Ci0KLXZhciBpc0RpcmVjdG9yeSA9IGZh
bHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNEaXJlY3RvcnkoZW50cnkpIHsKLSAgICBpc0RpcmVjdG9y
eSA9IGVudHJ5LmlzRGlyZWN0b3J5OwotICAgIHNob3VsZEJlVHJ1ZSgiaXNEaXJlY3RvcnkiKTsK
LX0KLQotdmFyIGlzRmlsZSA9IGZhbHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNGaWxlKGVudHJ5KSB7
Ci0gICAgaXNGaWxlID0gZW50cnkuaXNGaWxlOwotICAgIHNob3VsZEJlVHJ1ZSgiaXNGaWxlIik7
Ci19Ci0KLS8vIFRlc3QgYm9keSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBydW5CYXNpY1Rlc3QoKSB7Ci0g
ICAgZGVidWcoIiogUmVzb2x2aW5nIGEgZ2VuZXJhdGVkIFVSTC4iKTsKLSAgICBjcmVhdGVUZXN0
RmlsZShmdW5jdGlvbihlbnRyeSkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtVVJMKGVudHJ5LnRvVVJMKCksIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydFBh
dGhzTWF0Y2goZW50cnkuZnVsbFBhdGgsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgYXNzZXJ0
SXNGaWxlKGUpOwotICAgICAgICAgICAgY2xlYW51cEFuZFJ1bk5leHQoKTsKLSAgICAgICAgfSwg
ZXJyb3JDYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkhhbmRtYWRlVVJMKCkg
ewotICAgIGRlYnVnKCIqIFJlc29sdmluZyB0ZXN0IGZpbGUgYnkgaGFuZCIpOwotICAgIGNyZWF0
ZVRlc3RGaWxlKGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS90
ZXN0RmlsZSIsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2godGVz
dEZpbGVOYW1lLCBlLmZ1bGxQYXRoKTsKLSAgICAgICAgICAgIGFzc2VydElzRmlsZShlKTsKLSAg
ICAgICAgICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci0gICAgICAgIH0sIGVycm9yQ2FsbGJhY2sp
OwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ0RvbWFpbigpIHsKLSAgICBkZWJ1Zygi
KiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChkb21haW4p
Iik7Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRw
Oi8vbG9jYWxob3N0OjgwMDAvdGVtcG9yYXJ5L2ZvbyIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdFNl
Y3VyaXR5RXJyQW5kUnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldyb25nUG9ydCgpIHsKLSAg
ICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2lu
IChwb3J0KSIpOwotICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0
ZW06aHR0cDovLzEyNy4wLjAuMTo4MDgwL3RlbXBvcmFyeS9mb28iLCBlcnJvckNhbGxiYWNrLCBl
eHBlY3RTZWN1cml0eUVyckFuZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1NjaGVt
ZSgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJp
dHkgb3JpZ2luIChzY2hlbWUpIik7Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVS
TCgiZmlsZXN5c3RlbTpodHRwczovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCBlcnJv
ckNhbGxiYWNrLCBleHBlY3RTZWN1cml0eUVyckFuZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBy
dW5Cb2d1c1VSTCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBjb21wbGV0ZWx5IGJvZ3Vz
IFVSTC4iKTsKLSAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmb28iLCBlcnJv
ckNhbGxiYWNrLCBleHBlY3RFbmNvZGluZ0VyckFuZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBy
dW5Xcm9uZ1Byb3RvY29sKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRo
ZSB3cm9uZyBwcm90b2NvbCIpOwotICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwo
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9mb28vYmFyL2JheiIsIGVycm9yQ2FsbGJhY2ssIGV4cGVj
dEVuY29kaW5nRXJyQW5kUnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNo
ZXMoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2Vl
biB0eXBlIGFuZCBmaWxlIik7Ci0gICAgY3JlYXRlVGVzdEZpbGUoZnVuY3Rpb24oZW50cnkpIHsK
LSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5dGVzdEZpbGUiLCBlcnJvckNhbGxiYWNrLCBleHBl
Y3RFbmNvZGluZ0VyckFuZFJ1bk5leHQpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBydW5Ob3RF
bm91Z2hTbGFzaGVzMigpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBz
bGFzaCBiZXR3ZWVuIHByb3RvY29sIGFuZCB0eXBlIChib2d1cyBwb3J0KSIpOwotICAgIGNyZWF0
ZVRlc3RGaWxlKGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwdGVtcG9yYXJ5L3Rl
c3RGaWxlIiwgZXJyb3JDYWxsYmFjaywgZXhwZWN0U2VjdXJpdHlFcnJBbmRSdW5OZXh0KTsKLSAg
ICB9KTsKLX0KLQotZnVuY3Rpb24gcnVuVXNlQmFja1NsYXNoZXMoKSB7Ci0gICAgZGVidWcoIiog
UmVzb2x2ZSBhIHBhdGggdXNpbmcgYmFja3NsYXNoZXMiKTsKLSAgICBmaWxlU3lzdGVtLnJvb3Qu
Z2V0RGlyZWN0b3J5KCJmb28iLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAg
ICAgICBlbnRyeS5nZXRGaWxlKCJ0ZXN0RmlsZSIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGYp
IHsKLSAgICAgICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0
ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb29cXHRlc3RGaWxlIiwgZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2goIi9mb28vdGVzdEZpbGUi
LCBlLmZ1bGxQYXRoKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRJc0ZpbGUoZSk7Ci0gICAgICAg
ICAgICAgICAgY2xlYW51cEFuZFJ1bk5leHQoKTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJh
Y2spOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsK
LX0KLQotZnVuY3Rpb24gcnVuRGlyZWN0b3J5KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBk
aXJlY3RvcnkiKTsKLSAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28iLCB7Y3Jl
YXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxG
aWxlU3lzdGVtVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnkv
Zm9vIiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIs
IGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci0gICAgICAg
ICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAg
ICB9LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gcnVuV2l0aFRyYWlsaW5nU2xhc2go
KSB7Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFzaCIp
OwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0s
IGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1V
UkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28vIiwgZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBh
dGgpOwotICAgICAgICAgICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci0gICAgICAgICAgICBjbGVh
bnVwQW5kUnVuTmV4dCgpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBlcnJv
ckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gcnVuUGVyc2lzdGVudFRlc3QoKSB7Ci0gICAgZGVi
dWcoIiogUmVzb2x2aW5nIGEgcGVyc2lzdGVudCBVUkwuIik7Ci0gICAgd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oUEVSU0lTVEVOVCwgMTAwLCBmdW5jdGlvbihmcykgewotICAgICAgICB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGZzLnJvb3QudG9VUkwoKSwgZnVuY3Rpb24oZW50cnkp
IHsKLSAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2goIi8iLCBlbnRyeS5mdWxsUGF0aCk7Ci0g
ICAgICAgICAgICBhc3NlcnRJc0RpcmVjdG9yeShlbnRyeSk7Ci0gICAgICAgICAgICBjbGVhbnVw
QW5kUnVuTmV4dCgpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQot
Ly8gRW5kIG9mIHRlc3QgYm9keSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLXZhciB0ZXN0c0xpc3QgPSBbCi0gICAgcnVuQmFzaWNUZXN0
LAotICAgIHJ1bkhhbmRtYWRlVVJMLAotICAgIHJ1bldyb25nRG9tYWluLAotICAgIHJ1bldyb25n
UG9ydCwKLSAgICBydW5Xcm9uZ1NjaGVtZSwKLSAgICBydW5Cb2d1c1VSTCwKLSAgICBydW5Xcm9u
Z1Byb3RvY29sLAotICAgIHJ1bk5vdEVub3VnaFNsYXNoZXMsCi0gICAgcnVuTm90RW5vdWdoU2xh
c2hlczIsCi0gICAgcnVuVXNlQmFja1NsYXNoZXMsCi0gICAgcnVuRGlyZWN0b3J5LAotICAgIHJ1
bldpdGhUcmFpbGluZ1NsYXNoLAotICAgIHJ1blBlcnNpc3RlbnRUZXN0LAotXTsKLXZhciB0ZXN0
Q291bnRlciA9IDA7Ci0KLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkgewotICAgIGlmICh0ZXN0Q291
bnRlciA9PSB0ZXN0c0xpc3QubGVuZ3RoKSB7Ci0gICAgICAgIGRlYnVnKCJGaW5pc2hlZCBydW5u
aW5nIHRlc3RzLiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgdGVzdHNMaXN0W3Rlc3RDb3VudGVyKytdKCk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXBBbmRS
dW5OZXh0KCkgewotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9vdCwgcnVu
TmV4dFRlc3QsIHJ1bk5leHRUZXN0KTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNhbGxiYWNr
KGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci19
Ci0KLWlmICh0aGlzLndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAganNUZXN0SXNBc3lu
YyA9IHRydWU7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0odGhpcy5URU1QT1JBUlksIDEw
MCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAgIGRlYnVn
KCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKLQotdmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Zp
bGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Zp
bGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNDMgKzAsMCBAQAotW1dvcmtlcl0gVGVzdHMgdXNpbmcgd2Via2l0UmVzb2x2ZUxvY2Fs
RmlsZVN5c3RlbVVSTCB0byBvYnRhaW4gYW4gRW50cnkgZnJvbSBhIFVSTAotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9zY3JpcHQtdGVzdHMvcmVz
b2x2ZS11cmkuanMKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgZ2VuZXJhdGVkIFVSTC4KLVBBU1Mg
W1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxl
IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2aW5nIHRlc3QgZmlsZSBieSBoYW5kCi1QQVNTIFtX
b3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRmlsZSBp
cyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0
eSBvcmlnaW4gKGRvbWFpbikKLVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiBp
cyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNl
Y3VyaXR5IG9yaWdpbiAocG9ydCkKLVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLlNFQ1VSSVRZX0VS
UiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25n
IHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1lKQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJ
VFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBjb21wbGV0ZWx5IGJv
Z3VzIFVSTC4KLVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNv
ZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHByb3RvY29sCi1Q
QVNTIFtXb3JrZXJdIEZpbGVFcnJvci5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2Vy
XSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmlsZQot
UEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtl
cl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHByb3RvY29sIGFuZCB0
eXBlIChib2d1cyBwb3J0KQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlz
IGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBiYWNrc2xhc2hlcwot
UEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBp
c0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgZGlyZWN0b3J5Ci1QQVNTIFtXb3Jr
ZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5
IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFz
aAotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2Vy
XSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIHBlcnNpc3RlbnQg
VVJMLgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29y
a2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSBGaW5pc2hlZCBydW5uaW5nIHRlc3Rz
LgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJs
LXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
ZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9y
ZXNvbHZlLXVybC1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCww
IEBACi1bV29ya2VyXSBUZXN0cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3lu
Y1VSTCB0byBvYnRhaW4gYW4gRW50cnkgZnJvbSBhIFVSTAotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiBzY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3lu
Yy5qcwotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBnZW5lcmF0ZWQgVVJMLgotUEFTUyBbV29ya2Vy
XSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1
ZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQKLVBBU1MgW1dvcmtlcl0g
ZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxlIGlzIHRydWUK
LVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdp
biAoZG9tYWluKQotUEFTUyBbV29ya2VyXSBGaWxlRXhjZXB0aW9uLlNFQ1VSSVRZX0VSUiBpcyBl
cnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3Vy
aXR5IG9yaWdpbiAocG9ydCkKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5TRUNVUklUWV9F
UlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9u
ZyBzZWN1cml0eSBvcmlnaW4gKHNjaGVtZSkKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5T
RUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIGNvbXBsZXRl
bHkgYm9ndXMgVVJMLgotUEFTUyBbV29ya2VyXSBGaWxlRXhjZXB0aW9uLkVOQ09ESU5HX0VSUiBp
cyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHBy
b3RvY29sCi1QQVNTIFtXb3JrZXJdIEZpbGVFeGNlcHRpb24uRU5DT0RJTkdfRVJSIGlzIGVycm9y
Q29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHR5
cGUgYW5kIGZpbGUKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5FTkNPRElOR19FUlIgaXMg
ZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdl
ZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQpCi1QQVNTIFtXb3JrZXJdIEZpbGVFeGNl
cHRpb24uU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgcGF0
aCB1c2luZyBiYWNrc2xhc2hlcwotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFs
UGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEg
ZGlyZWN0b3J5Ci1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNT
IFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2ZSBhIHBhdGgg
dXNpbmcgYSB0cmFpbGluZyBzbGFzaAotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0
dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSAqIFJl
c29sdmluZyBhIHBlcnNpc3RlbnQgVVJMLgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMg
YWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSBG
aW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3Rl
bS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1zeW5jLmh0bWwJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3Jr
ZXJzL3Jlc29sdmUtdXJsLXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBA
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10
ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2Vy
KCdzY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcycpOwotPC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29y
a2Vycy9yZXNvbHZlLXVybC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJs
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzIj48L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci1zdGFydFdvcmtlcignLi4vc2NyaXB0LXRlc3RzL3Jl
c29sdmUtdXJpLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9URU1Q
TEFURS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3Rl
bS93b3JrZXJzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMv
VEVNUExBVEUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2VyKCdZT1VSX0pTX0ZJ
TEVfSEVSRScpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11
cmwtc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0
ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwkocmV2aXNpb24gMTU2
NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvc2NyaXB0
LXRlc3RzL3Jlc29sdmUtdXJsLXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTk5ICswLDAg
QEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi9y
ZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
L3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3RzIHVz
aW5nIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMIHRvIG9idGFpbiBhbiBFbnRy
eSBmcm9tIGEgVVJMIik7Ci0KLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlJzsKLXZhciBm
aWxlU3lzdGVtID0gbnVsbDsKLQotdmFyIGV4cGVjdGVkUGF0aCA9IG51bGw7Ci12YXIgYWN0dWFs
UGF0aCA9IG51bGw7Ci12YXIgZXJyb3JDb2RlID0gbnVsbDsKLQotZnVuY3Rpb24gY3JlYXRlVGVz
dEZpbGUoKSB7Ci0gICAgcmV0dXJuIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFt
ZSwge2NyZWF0ZTp0cnVlfSk7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydEVuY29kaW5nRXJyKGNvZGUp
IHsKLSAgICBlcnJvckNvZGUgPSBjb2RlOwotICAgIHNob3VsZEJlKCJGaWxlRXhjZXB0aW9uLkVO
Q09ESU5HX0VSUiIsICJlcnJvckNvZGUiKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0U2VjdXJpdHlF
cnIoY29kZSkgewotICAgIGVycm9yQ29kZSA9IGNvZGU7Ci0gICAgc2hvdWxkQmUoIkZpbGVFeGNl
cHRpb24uU0VDVVJJVFlfRVJSIiwgImVycm9yQ29kZSIpOwotfQotCi1mdW5jdGlvbiBhc3NlcnRQ
YXRoc01hdGNoKGV4cGVjdGVkLCBhY3R1YWwpIHsKLSAgICBleHBlY3RlZFBhdGggPSBleHBlY3Rl
ZDsKLSAgICBhY3R1YWxQYXRoID0gYWN0dWFsOwotICAgIHNob3VsZEJlKCJleHBlY3RlZFBhdGgi
LCAiYWN0dWFsUGF0aCIpOwotfQotCi12YXIgaXNEaXJlY3RvcnkgPSBmYWxzZTsKLWZ1bmN0aW9u
IGFzc2VydElzRGlyZWN0b3J5KGVudHJ5KSB7Ci0gICAgaXNEaXJlY3RvcnkgPSBlbnRyeS5pc0Rp
cmVjdG9yeTsKLSAgICBzaG91bGRCZVRydWUoImlzRGlyZWN0b3J5Iik7Ci19Ci0KLXZhciBpc0Zp
bGUgPSBmYWxzZTsKLWZ1bmN0aW9uIGFzc2VydElzRmlsZShlbnRyeSkgewotICAgIGlzRmlsZSA9
IGVudHJ5LmlzRmlsZTsKLSAgICBzaG91bGRCZVRydWUoImlzRmlsZSIpOwotfQotCi0vLyBUZXN0
IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotZnVuY3Rpb24gcnVuQmFzaWNUZXN0KCkgewotICAgIGRlYnVnKCIqIFJl
c29sdmluZyBhIGdlbmVyYXRlZCBVUkwuIik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgp
OwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoZW50cnku
dG9VUkwoKSk7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaChlbnRyeS5mdWxsUGF0aCwgZS5mdWxsUGF0
aCk7Ci0gICAgYXNzZXJ0SXNGaWxlKGUpOwotfQotCi1mdW5jdGlvbiBydW5IYW5kbWFkZVVSTCgp
IHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQiKTsKLSAgICBlbnRy
eSA9IGNyZWF0ZVRlc3RGaWxlKCk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5
L3Rlc3RGaWxlIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCh0ZXN0RmlsZU5hbWUsIGUuZnVsbFBh
dGgpOwotICAgIGFzc2VydElzRmlsZShlKTsKLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdEb21haW4o
KSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5
IG9yaWdpbiAoZG9tYWluKSIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2Nh
bEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC90ZW1w
b3JhcnkvZm9vIik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgIGFzc2VydFNlY3VyaXR5RXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBy
dW5Xcm9uZ1BvcnQoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdy
b25nIHNlY3VyaXR5IG9yaWdpbiAocG9ydCkiKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwODAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRj
aCAoZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gcnVuV3JvbmdTY2hlbWUoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJM
IHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1lKSIpOwotICAgIHRyeSB7Ci0g
ICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0
dHBzOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVk
KCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUp
OwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuQm9ndXNVUkwoKSB7Ci0gICAgZGVidWcoIiogUmVz
b2x2aW5nIGEgY29tcGxldGVseSBib2d1cyBVUkwuIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZvbyIpOwotICAgICAgICB0ZXN0RmFp
bGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRFbmNvZGluZ0VycihlLmNv
ZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdQcm90b2NvbCgpIHsKLSAgICBkZWJ1
ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wiKTsKLSAgICB0cnkg
ewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2Zvby9iYXIvYmF6Iik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2VydEVuY29kaW5nRXJyKGUuY29kZSk7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiBydW5Ob3RFbm91Z2hTbGFzaGVzKCkgewotICAgIGRlYnVnKCIqIFJlc29s
dmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmlsZSIpOwotICAgIGVu
dHJ5ID0gY3JlYXRlVGVzdEZpbGUoKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZl
TG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5dGVzdEZpbGUiKTsKLSAgICAgICAgdGVzdEZhaWxlZCgpOwotICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgYXNzZXJ0RW5jb2RpbmdFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNoZXMyKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBh
IFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQp
Iik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHRyeSB7Ci0gICAgICAgIHdl
YmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcu
MC4wLjE6ODAwMHRlbXBvcmFyeS90ZXN0RmlsZSIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgYXNzZXJ0U2VjdXJpdHlFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1blVz
ZUJhY2tTbGFzaGVzKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGJhY2tz
bGFzaGVzIik7Ci0gICAgZW50cnkgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28i
LCB7Y3JlYXRlOnRydWV9KS5nZXRGaWxlKCJ0ZXN0RmlsZSIsIHtjcmVhdGU6dHJ1ZX0pOwotICAg
IHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb29cXHRlc3RGaWxlIik7Ci0gICAgYXNz
ZXJ0UGF0aHNNYXRjaCgiL2Zvby90ZXN0RmlsZSIsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElz
RmlsZShlKTsKLX0KLQotZnVuY3Rpb24gcnVuRGlyZWN0b3J5KCkgewotICAgIGRlYnVnKCIqIFJl
c29sdmUgYSBkaXJlY3RvcnkiKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJl
Y3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Rl
bXBvcmFyeS9mb28iKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vIiwgZS5mdWxsUGF0aCk7
Ci0gICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldpdGhUcmFpbGlu
Z1NsYXNoKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGEgdHJhaWxpbmcg
c2xhc2giKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIs
IHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28v
Iik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAgIGFzc2Vy
dElzRGlyZWN0b3J5KGUpOwotfQotCi1mdW5jdGlvbiBydW5QZXJzaXN0ZW50VGVzdCgpIHsKLSAg
ICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBwZXJzaXN0ZW50IFVSTC4iKTsKLSAgICB2YXIgZnMgPSB3
ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoUEVSU0lTVEVOVCwgMTAwKTsKLSAgICBlbnRyeSA9
IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKGZzLnJvb3QudG9VUkwoKSk7Ci0g
ICAgYXNzZXJ0UGF0aHNNYXRjaCgiLyIsIGVudHJ5LmZ1bGxQYXRoKTsKLSAgICBhc3NlcnRJc0Rp
cmVjdG9yeShlbnRyeSk7Ci19Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12YXIgdGVzdHNMaXN0
ID0gWwotICAgIHJ1bkJhc2ljVGVzdCwKLSAgICBydW5IYW5kbWFkZVVSTCwKLSAgICBydW5Xcm9u
Z0RvbWFpbiwKLSAgICBydW5Xcm9uZ1BvcnQsCi0gICAgcnVuV3JvbmdTY2hlbWUsCi0gICAgcnVu
Qm9ndXNVUkwsCi0gICAgcnVuV3JvbmdQcm90b2NvbCwKLSAgICBydW5Ob3RFbm91Z2hTbGFzaGVz
LAotICAgIHJ1bk5vdEVub3VnaFNsYXNoZXMyLAotICAgIHJ1blVzZUJhY2tTbGFzaGVzLAotICAg
IHJ1bkRpcmVjdG9yeSwKLSAgICBydW5XaXRoVHJhaWxpbmdTbGFzaCwKLSAgICBydW5QZXJzaXN0
ZW50VGVzdCwKLV07Ci12YXIgdGVzdENvdW50ZXIgPSAwOwotCi1pZiAodGhpcy53ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbSkgewotICAgIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3Rl
bVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0
c0xpc3QubGVuZ3RoOyArK2kpIHsKLSAgICAgIHRlc3RzTGlzdFtpXSgpOwotICAgICAgcmVtb3Zl
QWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgICBlbnRyeSA9IG51bGw7
Ci0gICAgfQotICAgIGRlYnVnKCJGaW5pc2hlZCBydW5uaW5nIHRlc3RzLiIpOwotICAgIGZpbmlz
aEpTVGVzdCgpOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lz
dGVtIEFQSSBzdXBwb3J0LiIpOwotCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9uby1jYWNoZS1maWxlc3lzdGVt
LXVybC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9m
aWxlc3lzdGVtL25vLWNhY2hlLWZpbGVzeXN0ZW0tdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL25vLWNhY2hlLWZp
bGVzeXN0ZW0tdXJsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi1T
VUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vbm8tY2FjaGUt
ZmlsZXN5c3RlbS11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZpbGVzeXN0ZW0vbm8tY2FjaGUtZmlsZXN5c3RlbS11cmwuaHRtbAkocmV2aXNpb24gMTU2Njkx
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL25vLWNhY2hlLWZpbGVzeXN0
ZW0tdXJsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNTggKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08aHRtbD4KLSAgPGJvZHk+Ci0gICAgPHAgaWQ9InJlc3VsdCI+Ci0gICAgPC9wPgotICAg
IDxzY3JpcHQ+Ci0gICAgdmFyIGV4cGVjdGVkID0gLTE7Ci0gICAgZnVuY3Rpb24gZ2V0RmlsZVdy
aXRlcihjYWxsYmFjaykgewotICAgICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVO
VCwgMTAyNCwgZnVuY3Rpb24oZnMpIHsKLSAgICAgICAgZnMucm9vdC5nZXRGaWxlKCIvY2FjaGlu
Zy10ZXN0LmpzIiwge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZmlsZSkgewotICAgICAgICAgIGZp
bGUuY3JlYXRlV3JpdGVyKGZ1bmN0aW9uKHdyaXRlcikgewotICAgICAgICAgICAgd3JpdGVyLm9u
d3JpdGVlbmQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgd3JpdGVyLm9ud3JpdGVlbmQg
PSB1bmRlZmluZWQ7Ci0gICAgICAgICAgICAgIGNhbGxiYWNrKGZpbGUsIHdyaXRlcik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB3cml0ZXIudHJ1bmNhdGUoMCk7Ci0gICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gd3JpdGVSYW5k
VG9GaWxlKHdyaXRlciwgY2FsbGJhY2spIHsKLSAgICAgIHZhciByYW5kID0gTWF0aC5yb3VuZChN
YXRoLnJhbmRvbSgpICogMTAwMCk7Ci0gICAgICB3cml0ZXIub253cml0ZWVuZCA9IGZ1bmN0aW9u
KCkgewotICAgICAgICBjYWxsYmFjayhyYW5kKTsKLSAgICAgIH07Ci0gICAgICB3cml0ZXIud3Jp
dGUobmV3IEJsb2IoWydkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1M
ID0gKGV4cGVjdGVkID09ICcgKyByYW5kICsgJykgPyAiU1VDQ0VTUyIgOiAiRkFJTFVSRSI7J10s
IHt0eXBlOid0ZXh0L3BsYWluJ30pKTsKLSAgICB9Ci0KLSAgICBnZXRGaWxlV3JpdGVyKGZ1bmN0
aW9uKGZpbGUsIHdyaXRlcikgewotICAgICAgd3JpdGVSYW5kVG9GaWxlKHdyaXRlciwgZnVuY3Rp
b24ocmFuZCkgewotICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2NyaXB0Jyk7Ci0gICAgICAgIHNjcmlwdC5zcmMgPSBmaWxlLnRvVVJMKCk7Ci0gICAgICAgIGlm
ICh3aW5kb3cubG9jYXRpb24uc2VhcmNoICE9ICc/cmVsb2FkPTEnKSB7Ci0gICAgICAgICAgc2Ny
aXB0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhy
ZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZiArICc/cmVsb2FkPTEnCi0gICAgICAgICAgfTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBzY3JpcHQub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBmaWxlLnJlbW92ZShmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgIH07Ci0gICAg
ICAgIH0KLSAgICAgICAgZXhwZWN0ZWQgPSByYW5kOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKHNjcmlwdCk7Ci0gICAgICB9KTsKLSAgICB9KTsKLQotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB9Ci0gICAgPC9zY3JpcHQ+Ci0gIDwvYm9keT4K
LTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvbHZl
LXVyaS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9m
aWxlc3lzdGVtL3Jlc29sdmUtdXJpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc29sdmUtdXJpLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi1UZXN0cyB1c2luZyB3ZWJraXRSZXNv
bHZlTG9jYWxGaWxlU3lzdGVtVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMCi0KLU9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi0qIFJlc29sdmluZyBhIGdlbmVyYXRlZCBVUkwu
Ci1QQVNTIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIGlzRmlsZSBpcyB0cnVlCi0q
IFJlc29sdmluZyB0ZXN0IGZpbGUgYnkgaGFuZAotUEFTUyBleHBlY3RlZFBhdGggaXMgYWN0dWFs
UGF0aAotUEFTUyBpc0ZpbGUgaXMgdHJ1ZQotKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jv
bmcgc2VjdXJpdHkgb3JpZ2luIChkb21haW4pCi1QQVNTIEZpbGVFcnJvci5TRUNVUklUWV9FUlIg
aXMgZXJyb3JDb2RlCi0qIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBv
cmlnaW4gKHBvcnQpCi1QQVNTIEZpbGVFcnJvci5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi0q
IFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKHNjaGVtZSkK
LVBBU1MgRmlsZUVycm9yLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLSogUmVzb2x2aW5nIGEg
Y29tcGxldGVseSBib2d1cyBVUkwuCi1QQVNTIEZpbGVFcnJvci5FTkNPRElOR19FUlIgaXMgZXJy
b3JDb2RlCi0qIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBwcm90b2NvbAotUEFTUyBG
aWxlRXJyb3IuRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotKiBSZXNvbHZpbmcgYSBVUkwgd2l0
aCBubyBzbGFzaCBiZXR3ZWVuIHR5cGUgYW5kIGZpbGUKLVBBU1MgRmlsZUVycm9yLkVOQ09ESU5H
X0VSUiBpcyBlcnJvckNvZGUKLSogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2Vl
biBwcm90b2NvbCBhbmQgdHlwZSAoYm9ndXMgcG9ydCkKLVBBU1MgRmlsZUVycm9yLlNFQ1VSSVRZ
X0VSUiBpcyBlcnJvckNvZGUKLSogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYmFja3NsYXNoZXMKLVBB
U1MgZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgaXNGaWxlIGlzIHRydWUKLSogUmVz
b2x2ZSBhIGRpcmVjdG9yeQotUEFTUyBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBp
c0RpcmVjdG9yeSBpcyB0cnVlCi0qIFJlc29sdmUgYSBwYXRoIHVzaW5nIGEgdHJhaWxpbmcgc2xh
c2gKLVBBU1MgZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgaXNEaXJlY3RvcnkgaXMg
dHJ1ZQotKiBSZXNvbHZpbmcgYSBwZXJzaXN0ZW50IFVSTC4KLVBBU1MgZXhwZWN0ZWRQYXRoIGlz
IGFjdHVhbFBhdGgKLVBBU1MgaXNEaXJlY3RvcnkgaXMgdHJ1ZQotRmluaXNoZWQgcnVubmluZyB0
ZXN0cy4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQot
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb2x2ZS11cmkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb2x2
ZS11cmkuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9m
aWxlc3lzdGVtL3Jlc29sdmUtdXJpLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBA
QAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwu
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZXNv
bHZlLXVyaS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2Zz
LXRlc3QtdXRpbC5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTQgKzAsMCBAQAotZnVuY3Rpb24gYmluZENhbGxiYWNrKG9iaiwgY2FsbGJhY2ssIGFyZzEs
IGFyZzIsIGFyZzMpCi17Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKGFyZykgewotICAgICAgICBpZiAo
YXJnID09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG9iaiwgW2FyZzEs
IGFyZzIsIGFyZzNdKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2suYXBwbHko
b2JqLCBbYXJnLCBhcmcxLCBhcmcyLCBhcmczXSk7Ci0gICAgfTsKLX0KLQotLy8gUmVtb3ZlIGV2
ZXJ5dGhpbmcgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeS4KLWZ1bmN0aW9uIHJlbW92ZUFsbEluRGly
ZWN0b3J5KGRpcmVjdG9yeSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAg
dmFyIFJlbW92ZUFsbEluRGlyZWN0b3J5SGVscGVyID0gZnVuY3Rpb24oc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIHRoaXMuZW50cmllc0NvdW50ID0gMDsKLSAgICAg
ICAgdGhpcy5kb25lID0gZmFsc2U7Ci0gICAgICAgIHRoaXMucmVhZGVyID0gbnVsbDsKLSAgICAg
ICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgPSBzdWNjZXNzQ2FsbGJhY2s7Ci0gICAgICAgIHRoaXMu
ZXJyb3JDYWxsYmFjayA9IGVycm9yQ2FsbGJhY2s7Ci0KLSAgICAgICAgdGhpcy5lbnRyeVJlbW92
ZWRDYWxsYmFjayA9IGJpbmRDYWxsYmFjayh0aGlzLCBmdW5jdGlvbihlbnRyeSkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKC0tdGhpcy5lbnRyaWVzQ291bnQgPT0gMCAmJiB0aGlzLnN1Y2Nl
c3NDYWxsYmFjayAmJiB0aGlzLmRvbmUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3ND
YWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrID0gbnVsbDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5lbnRyaWVzQ2FsbGJh
Y2sgPSBiaW5kQ2FsbGJhY2sodGhpcywgZnVuY3Rpb24oZW50cmllcykKLSAgICAgICAgewotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5lbnRyaWVzQ291bnQrKzsKLSAgICAgICAgICAgICAgICBpZiAoZW50
cmllc1tpXS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICAgICAgZW50cmllc1tpXS5yZW1v
dmVSZWN1cnNpdmVseSh0aGlzLmVudHJ5UmVtb3ZlZENhbGxiYWNrLCB0aGlzLmVycm9yQ2FsbGJh
Y2spOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZW50cmllc1tp
XS5yZW1vdmUodGhpcy5lbnRyeVJlbW92ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCkKLSAgICAgICAg
ICAgICAgICB0aGlzLnJlYWRlci5yZWFkRW50cmllcyh0aGlzLmVudHJpZXNDYWxsYmFjaywgdGhp
cy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZW50cmllc0NvdW50
ID4gMCkKLSAgICAgICAgICAgICAgICB0aGlzLmRvbmUgPSB0cnVlOwotICAgICAgICAgICAgZWxz
ZSBpZiAodGhpcy5zdWNjZXNzQ2FsbGJhY2spCi0gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNz
Q2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5yZW1vdmVBbGxJbkRpcmVj
dG9yeSA9IGZ1bmN0aW9uKGRpcmVjdG9yeSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5y
ZWFkZXIgPSBkaXJlY3RvcnkuY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgICAgICB0aGlzLnJlYWRl
ci5yZWFkRW50cmllcyh0aGlzLmVudHJpZXNDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsK
LSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdmFyIGhlbHBlciA9IG5ldyBSZW1vdmVBbGxJbkRp
cmVjdG9yeUhlbHBlcihzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIGhlbHBl
ci5yZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3RvcnkpOwotfQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMt
d29ya2VyLWNvbW1vbi5qcwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDU2ICswLDAgQEAKLWZ1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCi17Ci0gICAgcG9z
dE1lc3NhZ2UoIk1FU0c6IiArIG1lc3NhZ2UpOwotfQotCi1mdW5jdGlvbiBmaW5pc2hKU1Rlc3Qo
KQotewotICAgIHBvc3RNZXNzYWdlKCJET05FOiIpOwotfQotCi1mdW5jdGlvbiBkZXNjcmlwdGlv
bihtZXNzYWdlKQotewotICAgIHBvc3RNZXNzYWdlKCdERVNDOicgKyBtZXNzYWdlKTsKLX0KLQot
ZnVuY3Rpb24gdGVzdFBhc3NlZChtc2cpIHsKLSAgICBwb3N0TWVzc2FnZSgiUEFTUzoiICsgbXNn
KTsKLX0KLQotZnVuY3Rpb24gdGVzdEZhaWxlZChtc2cpIHsKLSAgICBwb3N0TWVzc2FnZSgiRkFJ
TDoiICsgbXNnKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmUoX2EsIF9iKQotewotICBpZiAodHlw
ZW9mIF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAhPSAic3RyaW5nIikKLSAgICBkZWJ1Zygi
V0FSTjogc2hvdWxkQmUoKSBleHBlY3RzIHN0cmluZyBhcmd1bWVudHMiKTsKLSAgdmFyIF9hdiA9
IGV2YWwoX2EpOwotICB2YXIgX2J2ID0gZXZhbChfYik7Ci0gIGlmIChfYXYgPT09IF9idikKLSAg
ICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsgX2IpOwotICBlbHNlCi0gICAgdGVzdEZhaWxlZChf
YSArICIgc2hvdWxkIGJlICIgKyBfYnYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2ICsgIiku
IFdhcyAiICsgX2F2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOwotfQotCi1m
dW5jdGlvbiBzaG91bGRCZVRydWUoX2EpIHsgc2hvdWxkQmUoX2EsICJ0cnVlIik7IH0KLQotZnVu
Y3Rpb24gcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGRpcmVjdG9yeSkgewotICAgIGlmICghZGly
ZWN0b3J5KQotICAgICAgICByZXR1cm47Ci0gICAgdmFyIHJlYWRlciA9IGRpcmVjdG9yeS5jcmVh
dGVSZWFkZXIoKTsKLSAgICBkbyB7Ci0gICAgICAgIHZhciBlbnRyaWVzID0gcmVhZGVyLnJlYWRF
bnRyaWVzKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCi0gICAgICAgICAg
ICAgICAgZW50cmllc1tpXS5yZW1vdmVSZWN1cnNpdmVseSgpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKCk7Ci0gICAgICAgIH0KLSAgICB9IHdo
aWxlIChlbnRyaWVzLmxlbmd0aCk7Ci19Ci0KLWlmICh0aGlzLmltcG9ydFNjcmlwdHMgJiYgIXRo
aXMucmVxdWVzdEZpbGVTeXN0ZW0gJiYgIXRoaXMud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsK
LSAgICBkZWJ1ZygnVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJLicpOwotICAgIGZp
bmlzaEpTVGVzdCgpOwotfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5q
cwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMy
ICswLDAgQEAKLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotZnVuY3Rpb24gc3RhcnRX
b3JrZXIodGVzdFNjcmlwdFVSTCkKLXsKLSAgICBkZWJ1ZygnU3RhcnRpbmcgd29ya2VyOiAnICsg
dGVzdFNjcmlwdFVSTCk7Ci0gICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVS
TCk7Ci0gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgaWYgKGV2ZW50LmRhdGEubGVuZ3RoIDwgNSB8fCBldmVudC5kYXRhLmNoYXJBdCg0KSAhPSAn
OicpIHsKLSAgICAgICAgICAgIGRlYnVnKCJHb3QgaW52YWxpZCBtZXNzYWdlIGZyb20gd29ya2Vy
OiIgKyAoZXZlbnQuZGF0YSA/IGV2ZW50LmRhdGEgOiAibnVsbCIpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHZhciBjb2RlID0gZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNCk7Ci0g
ICAgICAgICAgICB2YXIgcGF5bG9hZCA9ICJbV29ya2VyXSAiICsgZXZlbnQuZGF0YS5zdWJzdHJp
bmcoNSk7Ci0gICAgICAgICAgICBpZiAoY29kZSA9PSAiUEFTUyIpCi0gICAgICAgICAgICAgICAg
dGVzdFBhc3NlZChwYXlsb2FkKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkZBSUwi
KQotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQocGF5bG9hZCk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChjb2RlID09ICJERVNDIikKLSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbihwYXlsb2Fk
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkRPTkUiKQotICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiTUVTRyIpCi0g
ICAgICAgICAgICAgICAgZGVidWcocGF5bG9hZCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAg
d29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGRlYnVnKCdH
b3QgZXJyb3IgZnJvbSB3b3JrZXI6ICcgKyBldmVudC5tZXNzYWdlKTsKLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgfQotfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lz
dGVtL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3NjcmlwdC10
ZXN0cy9URU1QTEFURS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Zp
bGVzeXN0ZW0vc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJpLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmkuanMJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9z
Y3JpcHQtdGVzdHMvcmVzb2x2ZS11cmkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjA2ICswLDAg
QEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNv
dXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMoJy4uL3Jlc291
cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRlc3RzIHVzaW5nIHdl
YmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwgdG8gb2J0YWluIGFuIEVudHJ5IGZyb20gYSBV
UkwiKTsKLQotdmFyIHRlc3RGaWxlTmFtZSA9ICcvdGVzdEZpbGUnOwotdmFyIGZpbGVTeXN0ZW0g
PSBudWxsOwotdmFyIGV4cGVjdGVkUGF0aCA9IG51bGw7Ci12YXIgYWN0dWFsUGF0aCA9IG51bGw7
Ci12YXIgZXJyb3JDb2RlID0gbnVsbDsKLQotZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikg
ewotICAgIGlmIChlcnJvciAmJiBlcnJvci5jb2RlKQotICAgICAgICBkZWJ1ZygiRXJyb3Igb2Nj
dXJyZWQ6ICIgKyBlcnJvci5jb2RlKTsKLSAgICB0ZXN0RmFpbGVkKCJCYWlsaW5nIG91dCBlYXJs
eSIpOwotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1mdW5jdGlvbiBleHBlY3RTZWN1cml0eUVy
ckFuZFJ1bk5leHQoZXJyb3IpIHsKLSAgICBlcnJvckNvZGUgPSBlcnJvci5jb2RlOwotICAgIHNo
b3VsZEJlKCJGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIiwgImVycm9yQ29kZSIpOwotICAgIGNsZWFu
dXBBbmRSdW5OZXh0KCk7Ci19Ci0KLWZ1bmN0aW9uIGV4cGVjdEVuY29kaW5nRXJyQW5kUnVuTmV4
dChlcnJvcikgewotICAgIGVycm9yQ29kZSA9IGVycm9yLmNvZGU7Ci0gICAgc2hvdWxkQmUoIkZp
bGVFcnJvci5FTkNPRElOR19FUlIiLCAiZXJyb3JDb2RlIik7Ci0gICAgY2xlYW51cEFuZFJ1bk5l
eHQoKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZpbGUoY2FsbGJhY2spIHsKLSAgICBmaWxl
U3lzdGVtLnJvb3QuZ2V0RmlsZSh0ZXN0RmlsZU5hbWUsIHtjcmVhdGU6dHJ1ZX0sIGNhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0UGF0aHNNYXRjaChleHBlY3Rl
ZCwgYWN0dWFsKSB7Ci0gICAgZXhwZWN0ZWRQYXRoID0gZXhwZWN0ZWQ7Ci0gICAgYWN0dWFsUGF0
aCA9IGFjdHVhbDsKLSAgICBzaG91bGRCZSgiZXhwZWN0ZWRQYXRoIiwgImFjdHVhbFBhdGgiKTsK
LX0KLQotdmFyIGlzRGlyZWN0b3J5ID0gZmFsc2U7Ci1mdW5jdGlvbiBhc3NlcnRJc0RpcmVjdG9y
eShlbnRyeSkgewotICAgIGlzRGlyZWN0b3J5ID0gZW50cnkuaXNEaXJlY3Rvcnk7Ci0gICAgc2hv
dWxkQmVUcnVlKCJpc0RpcmVjdG9yeSIpOwotfQotCi12YXIgaXNGaWxlID0gZmFsc2U7Ci1mdW5j
dGlvbiBhc3NlcnRJc0ZpbGUoZW50cnkpIHsKLSAgICBpc0ZpbGUgPSBlbnRyeS5pc0ZpbGU7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJpc0ZpbGUiKTsKLX0KLQotLy8gVGVzdCBib2R5IGZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWZ1
bmN0aW9uIHJ1bkJhc2ljVGVzdCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBnZW5lcmF0
ZWQgVVJMLiIpOwotICAgIGNyZWF0ZVRlc3RGaWxlKGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAg
IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoZW50cnkudG9VUkwoKSwgZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaChlbnRyeS5mdWxsUGF0aCwgZS5mdWxs
UGF0aCk7Ci0gICAgICAgICAgICBhc3NlcnRJc0ZpbGUoZSk7Ci0gICAgICAgICAgICBjbGVhbnVw
QW5kUnVuTmV4dCgpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9KTsKLX0KLQot
ZnVuY3Rpb24gcnVuSGFuZG1hZGVVUkwoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIHRlc3Qg
ZmlsZSBieSBoYW5kIik7Ci0gICAgY3JlYXRlVGVzdEZpbGUoZnVuY3Rpb24oZW50cnkpIHsKLSAg
ICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8v
MTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L3Rlc3RGaWxlIiwgZnVuY3Rpb24oZSkgewotICAgICAg
ICAgICAgYXNzZXJ0UGF0aHNNYXRjaCh0ZXN0RmlsZU5hbWUsIGUuZnVsbFBhdGgpOwotICAgICAg
ICAgICAgYXNzZXJ0SXNGaWxlKGUpOwotICAgICAgICAgICAgY2xlYW51cEFuZFJ1bk5leHQoKTsK
LSAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldy
b25nRG9tYWluKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9u
ZyBzZWN1cml0eSBvcmlnaW4gKGRvbWFpbikiKTsKLSAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC90ZW1wb3JhcnkvZm9v
IiwgZXJyb3JDYWxsYmFjaywgZXhwZWN0U2VjdXJpdHlFcnJBbmRSdW5OZXh0KTsKLX0KLQotZnVu
Y3Rpb24gcnVuV3JvbmdQb3J0KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRo
IHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKHBvcnQpIik7Ci0gICAgd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwODAvdGVtcG9y
YXJ5L2ZvbyIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdFNlY3VyaXR5RXJyQW5kUnVuTmV4dCk7Ci19
Ci0KLWZ1bmN0aW9uIHJ1bldyb25nU2NoZW1lKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBh
IFVSTCB3aXRoIHRoZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKHNjaGVtZSkiKTsKLSAgICB3ZWJr
aXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmaWxlc3lzdGVtOmh0dHBzOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5L2ZvbyIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdFNlY3VyaXR5RXJyQW5k
UnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkJvZ3VzVVJMKCkgewotICAgIGRlYnVnKCIqIFJl
c29sdmluZyBhIGNvbXBsZXRlbHkgYm9ndXMgVVJMLiIpOwotICAgIHdlYmtpdFJlc29sdmVMb2Nh
bEZpbGVTeXN0ZW1VUkwoImZvbyIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdEVuY29kaW5nRXJyQW5k
UnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldyb25nUHJvdG9jb2woKSB7Ci0gICAgZGVidWco
IiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHByb3RvY29sIik7Ci0gICAgd2Via2l0
UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zvby9iYXIv
YmF6IiwgZXJyb3JDYWxsYmFjaywgZXhwZWN0RW5jb2RpbmdFcnJBbmRSdW5OZXh0KTsKLX0KLQot
ZnVuY3Rpb24gcnVuTm90RW5vdWdoU2xhc2hlcygpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcg
YSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHR5cGUgYW5kIGZpbGUiKTsKLSAgICBjcmVhdGVU
ZXN0RmlsZShmdW5jdGlvbihlbnRyeSkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnl0ZXN0
RmlsZSIsIGVycm9yQ2FsbGJhY2ssIGV4cGVjdEVuY29kaW5nRXJyQW5kUnVuTmV4dCk7Ci0gICAg
fSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNoZXMyKCkgewotICAgIGRlYnVnKCIq
IFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUg
KGJvZ3VzIHBvcnQpIik7Ci0gICAgY3JlYXRlVGVzdEZpbGUoZnVuY3Rpb24oZW50cnkpIHsKLSAg
ICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8v
MTI3LjAuMC4xOjgwMDB0ZW1wb3JhcnkvdGVzdEZpbGUiLCBlcnJvckNhbGxiYWNrLCBleHBlY3RT
ZWN1cml0eUVyckFuZFJ1bk5leHQpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBydW5Vc2VCYWNr
U2xhc2hlcygpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBiYWNrc2xhc2hl
cyIpOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1
ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIGVudHJ5LmdldEZpbGUoInRlc3RGaWxlIiwg
e2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZikgewotICAgICAgICAgICAgd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9y
YXJ5L2Zvb1xcdGVzdEZpbGUiLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
UGF0aHNNYXRjaCgiL2Zvby90ZXN0RmlsZSIsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgICAg
IGFzc2VydElzRmlsZShlKTsKLSAgICAgICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwot
ICAgICAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH0sIGVycm9yQ2FsbGJhY2sp
OwotICAgIH0sIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBydW5EaXJlY3RvcnkoKSB7
Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBhIGRpcmVjdG9yeSIpOwotICAgIGZpbGVTeXN0ZW0ucm9v
dC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0g
ICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDov
LzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAg
ICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vIiwgZS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBhc3Nl
cnRJc0RpcmVjdG9yeShlKTsKLSAgICAgICAgICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci0gICAg
ICAgIH0sIGVycm9yQ2FsbGJhY2spOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5j
dGlvbiBydW5XaXRoVHJhaWxpbmdTbGFzaCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZlIGEgcGF0
aCB1c2luZyBhIHRyYWlsaW5nIHNsYXNoIik7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldERpcmVj
dG9yeSgiZm9vIiwge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5L2Zvby8iLCBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRQ
YXRoc01hdGNoKCIvZm9vIiwgZS5mdWxsUGF0aCk7Ci0gICAgICAgICAgICBhc3NlcnRJc0RpcmVj
dG9yeShlKTsKLSAgICAgICAgICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci0gICAgICAgIH0sIGVy
cm9yQ2FsbGJhY2spOwotICAgIH0sIGVycm9yQ2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiBydW5Q
ZXJzaXN0ZW50VGVzdCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBwZXJzaXN0ZW50IFVS
TC4iKTsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShQRVJTSVNURU5ULCAxMDAsIGZ1bmN0
aW9uKGZzKSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoZnMucm9v
dC50b1VSTCgpLCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRj
aCgiLyIsIGVudHJ5LmZ1bGxQYXRoKTsKLSAgICAgICAgICAgIGFzc2VydElzRGlyZWN0b3J5KGVu
dHJ5KTsKLSAgICAgICAgICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci0gICAgICAgIH0sIGVycm9y
Q2FsbGJhY2spOwotICAgIH0pOwotfQotCi0vLyBFbmQgb2YgdGVzdCBib2R5IGZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdmFyIHRlc3Rz
TGlzdCA9IFsKLSAgICBydW5CYXNpY1Rlc3QsCi0gICAgcnVuSGFuZG1hZGVVUkwsCi0gICAgcnVu
V3JvbmdEb21haW4sCi0gICAgcnVuV3JvbmdQb3J0LAotICAgIHJ1bldyb25nU2NoZW1lLAotICAg
IHJ1bkJvZ3VzVVJMLAotICAgIHJ1bldyb25nUHJvdG9jb2wsCi0gICAgcnVuTm90RW5vdWdoU2xh
c2hlcywKLSAgICBydW5Ob3RFbm91Z2hTbGFzaGVzMiwKLSAgICBydW5Vc2VCYWNrU2xhc2hlcywK
LSAgICBydW5EaXJlY3RvcnksCi0gICAgcnVuV2l0aFRyYWlsaW5nU2xhc2gsCi0gICAgcnVuUGVy
c2lzdGVudFRlc3QsCi1dOwotdmFyIHRlc3RDb3VudGVyID0gMDsKLQotZnVuY3Rpb24gcnVuTmV4
dFRlc3QoKSB7Ci0gICAgaWYgKHRlc3RDb3VudGVyID09IHRlc3RzTGlzdC5sZW5ndGgpIHsKLSAg
ICAgICAgZGVidWcoIkZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuIik7Ci0gICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgIH0gZWxzZQotICAgICAgICB0ZXN0c0xpc3RbdGVzdENvdW50ZXIrK10oKTsK
LX0KLQotZnVuY3Rpb24gY2xlYW51cEFuZFJ1bk5leHQoKSB7Ci0gICAgcmVtb3ZlQWxsSW5EaXJl
Y3RvcnkoZmlsZVN5c3RlbS5yb290LCBydW5OZXh0VGVzdCwgcnVuTmV4dFRlc3QpOwotfQotCi1m
dW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2soZnMpIHsKLSAgICBmaWxlU3lzdGVtID0gZnM7Ci0g
ICAgY2xlYW51cEFuZFJ1bk5leHQoKTsKLX0KLQotaWYgKHRoaXMud2Via2l0UmVxdWVzdEZpbGVT
eXN0ZW0pIHsKLSAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICB3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbSh0aGlzLlRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVt
IEFQSSBzdXBwb3J0LiIpOwotCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0
ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi1bV29ya2VyXSBUZXN0
cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMIHRvIG9idGFpbiBhbiBFbnRy
eSBmcm9tIGEgVVJMCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3
b3JrZXI6IC4uL3NjcmlwdC10ZXN0cy9yZXNvbHZlLXVyaS5qcwotW1dvcmtlcl0gKiBSZXNvbHZp
bmcgYSBnZW5lcmF0ZWQgVVJMLgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFs
UGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcg
dGVzdCBmaWxlIGJ5IGhhbmQKLVBBU1MgW1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBh
dGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxlIGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEg
VVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoZG9tYWluKQotUEFTUyBbV29ya2Vy
XSBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZp
bmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChwb3J0KQotUEFTUyBbV29y
a2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNv
bHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChzY2hlbWUpCi1QQVNT
IFtXb3JrZXJdIEZpbGVFcnJvci5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAq
IFJlc29sdmluZyBhIGNvbXBsZXRlbHkgYm9ndXMgVVJMLgotUEFTUyBbV29ya2VyXSBGaWxlRXJy
b3IuRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwg
d2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wKLVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLkVOQ09ESU5H
X0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xh
c2ggYmV0d2VlbiB0eXBlIGFuZCBmaWxlCi1QQVNTIFtXb3JrZXJdIEZpbGVFcnJvci5FTkNPRElO
R19FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNs
YXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQpCi1QQVNTIFtXb3JrZXJd
IEZpbGVFcnJvci5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmUg
YSBwYXRoIHVzaW5nIGJhY2tzbGFzaGVzCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBh
Y3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRmlsZSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29s
dmUgYSBkaXJlY3RvcnkKLVBBU1MgW1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgK
LVBBU1MgW1dvcmtlcl0gaXNEaXJlY3RvcnkgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEg
cGF0aCB1c2luZyBhIHRyYWlsaW5nIHNsYXNoCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBp
cyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJd
ICogUmVzb2x2aW5nIGEgcGVyc2lzdGVudCBVUkwuCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0
aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3Jr
ZXJdIEZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxl
c3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwtc3luYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwt
c3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLVtXb3JrZXJdIFRlc3RzIHVzaW5nIHdlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEg
VVJMCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1TdGFydGluZyB3b3JrZXI6IHNj
cmlwdC10ZXN0cy9yZXNvbHZlLXVybC1zeW5jLmpzCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIGdl
bmVyYXRlZCBVUkwuCi1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1Q
QVNTIFtXb3JrZXJdIGlzRmlsZSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyB0ZXN0IGZp
bGUgYnkgaGFuZAotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFT
UyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0
aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChkb21haW4pCi1QQVNTIFtXb3JrZXJdIEZpbGVF
eGNlcHRpb24uU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcg
YSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChwb3J0KQotUEFTUyBbV29ya2Vy
XSBGaWxlRXhjZXB0aW9uLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVz
b2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1lKQotUEFT
UyBbV29ya2VyXSBGaWxlRXhjZXB0aW9uLlNFQ1VSSVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3Jr
ZXJdICogUmVzb2x2aW5nIGEgY29tcGxldGVseSBib2d1cyBVUkwuCi1QQVNTIFtXb3JrZXJdIEZp
bGVFeGNlcHRpb24uRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZp
bmcgYSBVUkwgd2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2Vw
dGlvbi5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVS
TCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmlsZQotUEFTUyBbV29ya2VyXSBGaWxl
RXhjZXB0aW9uLkVOQ09ESU5HX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5n
IGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiBwcm90b2NvbCBhbmQgdHlwZSAoYm9ndXMgcG9y
dCkKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2Rl
Ci1bV29ya2VyXSAqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGJhY2tzbGFzaGVzCi1QQVNTIFtXb3Jr
ZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRmlsZSBpcyB0
cnVlCi1bV29ya2VyXSAqIFJlc29sdmUgYSBkaXJlY3RvcnkKLVBBU1MgW1dvcmtlcl0gZXhwZWN0
ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNEaXJlY3RvcnkgaXMgdHJ1ZQot
W1dvcmtlcl0gKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBhIHRyYWlsaW5nIHNsYXNoCi1QQVNTIFtX
b3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0
b3J5IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgcGVyc2lzdGVudCBVUkwuCi1QQVNT
IFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGly
ZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJdIEZpbmlzaGVkIHJ1bm5pbmcgdGVzdHMuCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwtc3luYy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJz
L3Jlc29sdmUtdXJsLXN5bmMuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwtc3luYy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Ci08c2NyaXB0Pgotc3RhcnRXb3JrZXIoJ3NjcmlwdC10ZXN0cy9yZXNvbHZlLXVybC1zeW5j
LmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11
cmwuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxl
c3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11cmwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCAr
MCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0
V29ya2VyKCcuLi9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmkuanMnKTsKLTwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVt
L3dvcmtlcnMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5
c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE0ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0
Pgotc3RhcnRXb3JrZXIoJ1lPVVJfSlNfRklMRV9IRVJFJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3Jr
ZXJzL3NjcmlwdC10ZXN0cy9yZXNvbHZlLXVybC1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9yZXNvbHZl
LXVybC1zeW5jLmpzCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSwxOTkgKzAsMCBAQAotaWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewot
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzJyk7
Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcycpOwot
fQotCi1kZXNjcmlwdGlvbigiVGVzdHMgdXNpbmcgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVN5bmNVUkwgdG8gb2J0YWluIGFuIEVudHJ5IGZyb20gYSBVUkwiKTsKLQotdmFyIHRlc3RGaWxl
TmFtZSA9ICcvdGVzdEZpbGUnOwotdmFyIGZpbGVTeXN0ZW0gPSBudWxsOwotCi12YXIgZXhwZWN0
ZWRQYXRoID0gbnVsbDsKLXZhciBhY3R1YWxQYXRoID0gbnVsbDsKLXZhciBlcnJvckNvZGUgPSBu
dWxsOwotCi1mdW5jdGlvbiBjcmVhdGVUZXN0RmlsZSgpIHsKLSAgICByZXR1cm4gZmlsZVN5c3Rl
bS5yb290LmdldEZpbGUodGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9KTsKLX0KLQotZnVuY3Rp
b24gYXNzZXJ0RW5jb2RpbmdFcnIoY29kZSkgewotICAgIGVycm9yQ29kZSA9IGNvZGU7Ci0gICAg
c2hvdWxkQmUoIkZpbGVFeGNlcHRpb24uRU5DT0RJTkdfRVJSIiwgImVycm9yQ29kZSIpOwotfQot
Ci1mdW5jdGlvbiBhc3NlcnRTZWN1cml0eUVycihjb2RlKSB7Ci0gICAgZXJyb3JDb2RlID0gY29k
ZTsKLSAgICBzaG91bGRCZSgiRmlsZUV4Y2VwdGlvbi5TRUNVUklUWV9FUlIiLCAiZXJyb3JDb2Rl
Iik7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydFBhdGhzTWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkgewot
ICAgIGV4cGVjdGVkUGF0aCA9IGV4cGVjdGVkOwotICAgIGFjdHVhbFBhdGggPSBhY3R1YWw7Ci0g
ICAgc2hvdWxkQmUoImV4cGVjdGVkUGF0aCIsICJhY3R1YWxQYXRoIik7Ci19Ci0KLXZhciBpc0Rp
cmVjdG9yeSA9IGZhbHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNEaXJlY3RvcnkoZW50cnkpIHsKLSAg
ICBpc0RpcmVjdG9yeSA9IGVudHJ5LmlzRGlyZWN0b3J5OwotICAgIHNob3VsZEJlVHJ1ZSgiaXNE
aXJlY3RvcnkiKTsKLX0KLQotdmFyIGlzRmlsZSA9IGZhbHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNG
aWxlKGVudHJ5KSB7Ci0gICAgaXNGaWxlID0gZW50cnkuaXNGaWxlOwotICAgIHNob3VsZEJlVHJ1
ZSgiaXNGaWxlIik7Ci19Ci0KLS8vIFRlc3QgYm9keSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBydW5CYXNp
Y1Rlc3QoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgZ2VuZXJhdGVkIFVSTC4iKTsKLSAg
ICBlbnRyeSA9IGNyZWF0ZVRlc3RGaWxlKCk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9j
YWxGaWxlU3lzdGVtU3luY1VSTChlbnRyeS50b1VSTCgpKTsKLSAgICBhc3NlcnRQYXRoc01hdGNo
KGVudHJ5LmZ1bGxQYXRoLCBlLmZ1bGxQYXRoKTsKLSAgICBhc3NlcnRJc0ZpbGUoZSk7Ci19Ci0K
LWZ1bmN0aW9uIHJ1bkhhbmRtYWRlVVJMKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyB0ZXN0
IGZpbGUgYnkgaGFuZCIpOwotICAgIGVudHJ5ID0gY3JlYXRlVGVzdEZpbGUoKTsKLSAgICB2YXIg
ZSA9IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvdGVzdEZpbGUiKTsKLSAgICBhc3NlcnRQYXRoc01h
dGNoKHRlc3RGaWxlTmFtZSwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNGaWxlKGUpOwotfQot
Ci1mdW5jdGlvbiBydW5Xcm9uZ0RvbWFpbigpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBV
Ukwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChkb21haW4pIik7Ci0gICAgdHJ5IHsK
LSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3RlbXBvcmFyeS9mb28iKTsKLSAgICAgICAgdGVzdEZhaWxl
ZCgpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0U2VjdXJpdHlFcnIoZS5jb2Rl
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bldyb25nUG9ydCgpIHsKLSAgICBkZWJ1ZygiKiBS
ZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChwb3J0KSIpOwot
ICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJm
aWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODA4MC90ZW1wb3JhcnkvZm9vIik7Ci0gICAgICAg
IHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2VydFNlY3VyaXR5
RXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ1NjaGVtZSgpIHsKLSAg
ICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2lu
IChzY2hlbWUpIik7Ci0gICAgdHJ5IHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5
c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cHM6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnkv
Zm9vIik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
IGFzc2VydFNlY3VyaXR5RXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Cb2d1
c1VSTCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBjb21wbGV0ZWx5IGJvZ3VzIFVSTC4i
KTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VS
TCgiZm9vIik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgIGFzc2VydEVuY29kaW5nRXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5X
cm9uZ1Byb3RvY29sKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3
cm9uZyBwcm90b2NvbCIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZp
bGVTeXN0ZW1TeW5jVVJMKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvZm9vL2Jhci9iYXoiKTsKLSAg
ICAgICAgdGVzdEZhaWxlZCgpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0RW5j
b2RpbmdFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNo
ZXMoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2Vl
biB0eXBlIGFuZCBmaWxlIik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHRy
eSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lz
dGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnl0ZXN0RmlsZSIpOwotICAgICAgICB0
ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRFbmNvZGluZ0Vy
cihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuTm90RW5vdWdoU2xhc2hlczIoKSB7
Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2ggYmV0d2VlbiBwcm90
b2NvbCBhbmQgdHlwZSAoYm9ndXMgcG9ydCkiKTsKLSAgICBlbnRyeSA9IGNyZWF0ZVRlc3RGaWxl
KCk7Ci0gICAgdHJ5IHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNV
UkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwdGVtcG9yYXJ5L3Rlc3RGaWxlIik7
Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuVXNlQmFja1NsYXNoZXMoKSB7Ci0gICAgZGVidWcoIiog
UmVzb2x2ZSBhIHBhdGggdXNpbmcgYmFja3NsYXNoZXMiKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0
ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0pLmdldEZpbGUoInRlc3RG
aWxlIiwge2NyZWF0ZTp0cnVlfSk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5
L2Zvb1xcdGVzdEZpbGUiKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vL3Rlc3RGaWxlIiwg
ZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNGaWxlKGUpOwotfQotCi1mdW5jdGlvbiBydW5EaXJl
Y3RvcnkoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBhIGRpcmVjdG9yeSIpOwotICAgIGVudHJ5
ID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgiZm9vIiwge2NyZWF0ZTp0cnVlfSk7Ci0g
ICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgIGFzc2VydFBhdGhz
TWF0Y2goIi9mb28iLCBlLmZ1bGxQYXRoKTsKLSAgICBhc3NlcnRJc0RpcmVjdG9yeShlKTsKLX0K
LQotZnVuY3Rpb24gcnVuV2l0aFRyYWlsaW5nU2xhc2goKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2
ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFzaCIpOwotICAgIGVudHJ5ID0gZmlsZVN5c3Rl
bS5yb290LmdldERpcmVjdG9yeSgiZm9vIiwge2NyZWF0ZTp0cnVlfSk7Ci0gICAgdmFyIGUgPSB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2Zvby8iKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9v
IiwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci19Ci0KLWZ1bmN0aW9u
IHJ1blBlcnNpc3RlbnRUZXN0KCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIHBlcnNpc3Rl
bnQgVVJMLiIpOwotICAgIHZhciBmcyA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyhQRVJT
SVNURU5ULCAxMDApOwotICAgIGVudHJ5ID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5
bmNVUkwoZnMucm9vdC50b1VSTCgpKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKCIvIiwgZW50cnku
ZnVsbFBhdGgpOwotICAgIGFzc2VydElzRGlyZWN0b3J5KGVudHJ5KTsKLX0KLQotLy8gRW5kIG9m
IHRlc3QgYm9keSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLXZhciB0ZXN0c0xpc3QgPSBbCi0gICAgcnVuQmFzaWNUZXN0LAotICAgIHJ1
bkhhbmRtYWRlVVJMLAotICAgIHJ1bldyb25nRG9tYWluLAotICAgIHJ1bldyb25nUG9ydCwKLSAg
ICBydW5Xcm9uZ1NjaGVtZSwKLSAgICBydW5Cb2d1c1VSTCwKLSAgICBydW5Xcm9uZ1Byb3RvY29s
LAotICAgIHJ1bk5vdEVub3VnaFNsYXNoZXMsCi0gICAgcnVuTm90RW5vdWdoU2xhc2hlczIsCi0g
ICAgcnVuVXNlQmFja1NsYXNoZXMsCi0gICAgcnVuRGlyZWN0b3J5LAotICAgIHJ1bldpdGhUcmFp
bGluZ1NsYXNoLAotICAgIHJ1blBlcnNpc3RlbnRUZXN0LAotXTsKLXZhciB0ZXN0Q291bnRlciA9
IDA7Ci0KLWlmICh0aGlzLndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgZmlsZVN5c3Rl
bSA9IHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtU3luYyh0aGlzLlRFTVBPUkFSWSwgMTAwKTsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RzTGlzdC5sZW5ndGg7ICsraSkgewotICAgICAgdGVz
dHNMaXN0W2ldKCk7Ci0gICAgICByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5y
b290KTsKLSAgICAgIGVudHJ5ID0gbnVsbDsKLSAgICB9Ci0gICAgZGVidWcoIkZpbmlzaGVkIHJ1
bm5pbmcgdGVzdHMuIik7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19IGVsc2UKLSAgICBkZWJ1Zygi
VGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7Ci0KLXZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxl
c3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMJKHJldmlz
aW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZnMtdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU0ICswLDAgQEAKLWZ1bmN0
aW9uIGJpbmRDYWxsYmFjayhvYmosIGNhbGxiYWNrLCBhcmcxLCBhcmcyLCBhcmczKQotewotICAg
IHJldHVybiBmdW5jdGlvbihhcmcpIHsKLSAgICAgICAgaWYgKGFyZyA9PSB1bmRlZmluZWQpCi0g
ICAgICAgICAgICBjYWxsYmFjay5hcHBseShvYmosIFthcmcxLCBhcmcyLCBhcmczXSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG9iaiwgW2FyZywgYXJnMSwgYXJn
MiwgYXJnM10pOwotICAgIH07Ci19Ci0KLS8vIFJlbW92ZSBldmVyeXRoaW5nIGluIHRoZSBnaXZl
biBkaXJlY3RvcnkuCi1mdW5jdGlvbiByZW1vdmVBbGxJbkRpcmVjdG9yeShkaXJlY3RvcnksIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciBSZW1vdmVBbGxJbkRpcmVj
dG9yeUhlbHBlciA9IGZ1bmN0aW9uKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewot
ICAgICAgICB0aGlzLmVudHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNl
OwotICAgICAgICB0aGlzLnJlYWRlciA9IG51bGw7Ci0gICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxi
YWNrID0gc3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICB0aGlzLmVycm9yQ2FsbGJhY2sgPSBlcnJv
ckNhbGxiYWNrOwotCi0gICAgICAgIHRoaXMuZW50cnlSZW1vdmVkQ2FsbGJhY2sgPSBiaW5kQ2Fs
bGJhY2sodGhpcywgZnVuY3Rpb24oZW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgt
LXRoaXMuZW50cmllc0NvdW50ID09IDAgJiYgdGhpcy5zdWNjZXNzQ2FsbGJhY2sgJiYgdGhpcy5k
b25lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzQ2FsbGJhY2soKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLnN1Y2Nlc3NDYWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIHRoaXMuZW50cmllc0NhbGxiYWNrID0gYmluZENhbGxiYWNrKHRo
aXMsIGZ1bmN0aW9uKGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHRoaXMuZW50
cmllc0NvdW50Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3Rvcnkp
Ci0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlUmVjdXJzaXZlbHkodGhpcy5l
bnRyeVJlbW92ZWRDYWxsYmFjaywgdGhpcy5lcnJvckNhbGxiYWNrKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVtb3ZlKHRoaXMuZW50cnlS
ZW1vdmVkQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoZW50cmllcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhpcy5yZWFkZXIu
cmVhZEVudHJpZXModGhpcy5lbnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0g
ICAgICAgICAgICBlbHNlIGlmICh0aGlzLmVudHJpZXNDb3VudCA+IDApCi0gICAgICAgICAgICAg
ICAgdGhpcy5kb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3VjY2Vzc0Nh
bGxiYWNrKQotICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAg
IH0pOwotCi0gICAgICAgIHRoaXMucmVtb3ZlQWxsSW5EaXJlY3RvcnkgPSBmdW5jdGlvbihkaXJl
Y3RvcnkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMucmVhZGVyID0gZGlyZWN0b3J5LmNy
ZWF0ZVJlYWRlcigpOwotICAgICAgICAgICAgdGhpcy5yZWFkZXIucmVhZEVudHJpZXModGhpcy5l
bnRyaWVzQ2FsbGJhY2ssIHRoaXMuZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIH07Ci0gICAgfTsK
LQotICAgIHZhciBoZWxwZXIgPSBuZXcgUmVtb3ZlQWxsSW5EaXJlY3RvcnlIZWxwZXIoc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBoZWxwZXIucmVtb3ZlQWxsSW5EaXJlY3Rv
cnkoZGlyZWN0b3J5KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBA
Ci1mdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKQotewotICAgIHBvc3RNZXNzYWdlKCJNRVNHOiIgKyBt
ZXNzYWdlKTsKLX0KLQotZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkKLXsKLSAgICBwb3N0TWVzc2Fn
ZSgiRE9ORToiKTsKLX0KLQotZnVuY3Rpb24gZGVzY3JpcHRpb24obWVzc2FnZSkKLXsKLSAgICBw
b3N0TWVzc2FnZSgnREVTQzonICsgbWVzc2FnZSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RQYXNzZWQo
bXNnKSB7Ci0gICAgcG9zdE1lc3NhZ2UoIlBBU1M6IiArIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RGYWlsZWQobXNnKSB7Ci0gICAgcG9zdE1lc3NhZ2UoIkZBSUw6IiArIG1zZyk7Ci19Ci0KLWZ1
bmN0aW9uIHNob3VsZEJlKF9hLCBfYikKLXsKLSAgaWYgKHR5cGVvZiBfYSAhPSAic3RyaW5nIiB8
fCB0eXBlb2YgX2IgIT0gInN0cmluZyIpCi0gICAgZGVidWcoIldBUk46IHNob3VsZEJlKCkgZXhw
ZWN0cyBzdHJpbmcgYXJndW1lbnRzIik7Ci0gIHZhciBfYXYgPSBldmFsKF9hKTsKLSAgdmFyIF9i
diA9IGV2YWwoX2IpOwotICBpZiAoX2F2ID09PSBfYnYpCi0gICAgdGVzdFBhc3NlZChfYSArICIg
aXMgIiArIF9iKTsKLSAgZWxzZQotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsg
X2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIgKG9m
IHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVUcnVl
KF9hKSB7IHNob3VsZEJlKF9hLCAidHJ1ZSIpOyB9Ci0KLWZ1bmN0aW9uIHJlbW92ZUFsbEluRGly
ZWN0b3J5U3luYyhkaXJlY3RvcnkpIHsKLSAgICBpZiAoIWRpcmVjdG9yeSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHZhciByZWFkZXIgPSBkaXJlY3RvcnkuY3JlYXRlUmVhZGVyKCk7Ci0gICAgZG8g
ewotICAgICAgICB2YXIgZW50cmllcyA9IHJlYWRlci5yZWFkRW50cmllcygpOwotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlm
IChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGVudHJpZXNbaV0ucmVt
b3ZlUmVjdXJzaXZlbHkoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbnRy
aWVzW2ldLnJlbW92ZSgpOwotICAgICAgICB9Ci0gICAgfSB3aGlsZSAoZW50cmllcy5sZW5ndGgp
OwotfQotCi1pZiAodGhpcy5pbXBvcnRTY3JpcHRzICYmICF0aGlzLnJlcXVlc3RGaWxlU3lzdGVt
ICYmICF0aGlzLndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAgZGVidWcoJ1RoaXMgdGVz
dCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSS4nKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2Vy
LXRlc3QtdXRpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDE1NjY5MSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2Vy
LXRlc3QtdXRpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi13aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci0KLWZ1bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwp
Ci17Ci0gICAgZGVidWcoJ1N0YXJ0aW5nIHdvcmtlcjogJyArIHRlc3RTY3JpcHRVUkwpOwotICAg
IHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKHRlc3RTY3JpcHRVUkwpOwotICAgIHdvcmtlci5vbm1l
c3NhZ2UgPSBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChldmVudC5kYXRhLmxl
bmd0aCA8IDUgfHwgZXZlbnQuZGF0YS5jaGFyQXQoNCkgIT0gJzonKSB7Ci0gICAgICAgICAgICBk
ZWJ1ZygiR290IGludmFsaWQgbWVzc2FnZSBmcm9tIHdvcmtlcjoiICsgKGV2ZW50LmRhdGEgPyBl
dmVudC5kYXRhIDogIm51bGwiKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIg
Y29kZSA9IGV2ZW50LmRhdGEuc3Vic3RyaW5nKDAsIDQpOwotICAgICAgICAgICAgdmFyIHBheWxv
YWQgPSAiW1dvcmtlcl0gIiArIGV2ZW50LmRhdGEuc3Vic3RyaW5nKDUpOwotICAgICAgICAgICAg
aWYgKGNvZGUgPT0gIlBBU1MiKQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQocGF5bG9hZCk7
Ci0gICAgICAgICAgICBlbHNlIGlmIChjb2RlID09ICJGQUlMIikKLSAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKHBheWxvYWQpOwotICAgICAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiREVTQyIp
Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24ocGF5bG9hZCk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChjb2RlID09ICJET05FIikKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIk1FU0ciKQotICAgICAgICAgICAgICAgIGRlYnVn
KHBheWxvYWQpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHdvcmtlci5vbmVycm9yID0gZnVu
Y3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBkZWJ1ZygnR290IGVycm9yIGZyb20gd29ya2Vy
OiAnICsgZXZlbnQubWVzc2FnZSk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvVEVN
UExBVEUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0
ZW0vc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08
c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3NjcmlwdC10ZXN0
cy9yZXNvbHZlLXVyaS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Zp
bGVzeXN0ZW0vc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJpLmpzCShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL3Jlc29sdmUt
dXJpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIwNiArMCwwIEBACi1pZiAodGhpcy5pbXBvcnRT
Y3JpcHRzKSB7Ci0gICAgaW1wb3J0U2NyaXB0cygnLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21t
b24uanMnKTsKLSAgICBpbXBvcnRTY3JpcHRzKCcuLi9yZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpz
Jyk7Ci19Ci0KLWRlc2NyaXB0aW9uKCJUZXN0cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxl
U3lzdGVtVVJMIHRvIG9idGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMIik7Ci0KLXZhciB0ZXN0Rmls
ZU5hbWUgPSAnL3Rlc3RGaWxlJzsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLXZhciBleHBlY3Rl
ZFBhdGggPSBudWxsOwotdmFyIGFjdHVhbFBhdGggPSBudWxsOwotdmFyIGVycm9yQ29kZSA9IG51
bGw7Ci0KLWZ1bmN0aW9uIGVycm9yQ2FsbGJhY2soZXJyb3IpIHsKLSAgICBpZiAoZXJyb3IgJiYg
ZXJyb3IuY29kZSkKLSAgICAgICAgZGVidWcoIkVycm9yIG9jY3VycmVkOiAiICsgZXJyb3IuY29k
ZSk7Ci0gICAgdGVzdEZhaWxlZCgiQmFpbGluZyBvdXQgZWFybHkiKTsKLSAgICBmaW5pc2hKU1Rl
c3QoKTsKLX0KLQotZnVuY3Rpb24gZXhwZWN0U2VjdXJpdHlFcnJBbmRSdW5OZXh0KGVycm9yKSB7
Ci0gICAgZXJyb3JDb2RlID0gZXJyb3IuY29kZTsKLSAgICBzaG91bGRCZSgiRmlsZUVycm9yLlNF
Q1VSSVRZX0VSUiIsICJlcnJvckNvZGUiKTsKLSAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotfQot
Ci1mdW5jdGlvbiBleHBlY3RFbmNvZGluZ0VyckFuZFJ1bk5leHQoZXJyb3IpIHsKLSAgICBlcnJv
ckNvZGUgPSBlcnJvci5jb2RlOwotICAgIHNob3VsZEJlKCJGaWxlRXJyb3IuRU5DT0RJTkdfRVJS
IiwgImVycm9yQ29kZSIpOwotICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci19Ci0KLWZ1bmN0aW9u
IGNyZWF0ZVRlc3RGaWxlKGNhbGxiYWNrKSB7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUo
dGVzdEZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19
Ci0KLWZ1bmN0aW9uIGFzc2VydFBhdGhzTWF0Y2goZXhwZWN0ZWQsIGFjdHVhbCkgewotICAgIGV4
cGVjdGVkUGF0aCA9IGV4cGVjdGVkOwotICAgIGFjdHVhbFBhdGggPSBhY3R1YWw7Ci0gICAgc2hv
dWxkQmUoImV4cGVjdGVkUGF0aCIsICJhY3R1YWxQYXRoIik7Ci19Ci0KLXZhciBpc0RpcmVjdG9y
eSA9IGZhbHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNEaXJlY3RvcnkoZW50cnkpIHsKLSAgICBpc0Rp
cmVjdG9yeSA9IGVudHJ5LmlzRGlyZWN0b3J5OwotICAgIHNob3VsZEJlVHJ1ZSgiaXNEaXJlY3Rv
cnkiKTsKLX0KLQotdmFyIGlzRmlsZSA9IGZhbHNlOwotZnVuY3Rpb24gYXNzZXJ0SXNGaWxlKGVu
dHJ5KSB7Ci0gICAgaXNGaWxlID0gZW50cnkuaXNGaWxlOwotICAgIHNob3VsZEJlVHJ1ZSgiaXNG
aWxlIik7Ci19Ci0KLS8vIFRlc3QgYm9keSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBydW5CYXNpY1Rlc3Qo
KSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgZ2VuZXJhdGVkIFVSTC4iKTsKLSAgICBjcmVh
dGVUZXN0RmlsZShmdW5jdGlvbihlbnRyeSkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxG
aWxlU3lzdGVtVVJMKGVudHJ5LnRvVVJMKCksIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFz
c2VydFBhdGhzTWF0Y2goZW50cnkuZnVsbFBhdGgsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAg
YXNzZXJ0SXNGaWxlKGUpOwotICAgICAgICAgICAgY2xlYW51cEFuZFJ1bk5leHQoKTsKLSAgICAg
ICAgfSwgZXJyb3JDYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkhhbmRtYWRl
VVJMKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyB0ZXN0IGZpbGUgYnkgaGFuZCIpOwotICAg
IGNyZWF0ZVRlc3RGaWxlKGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVM
b2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBv
cmFyeS90ZXN0RmlsZSIsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0
Y2godGVzdEZpbGVOYW1lLCBlLmZ1bGxQYXRoKTsKLSAgICAgICAgICAgIGFzc2VydElzRmlsZShl
KTsKLSAgICAgICAgICAgIGNsZWFudXBBbmRSdW5OZXh0KCk7Ci0gICAgICAgIH0sIGVycm9yQ2Fs
bGJhY2spOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBydW5Xcm9uZ0RvbWFpbigpIHsKLSAgICBk
ZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkgb3JpZ2luIChk
b21haW4pIik7Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3Rl
bTpodHRwOi8vbG9jYWxob3N0OjgwMDAvdGVtcG9yYXJ5L2ZvbyIsIGVycm9yQ2FsbGJhY2ssIGV4
cGVjdFNlY3VyaXR5RXJyQW5kUnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldyb25nUG9ydCgp
IHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcgc2VjdXJpdHkg
b3JpZ2luIChwb3J0KSIpOwotICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZp
bGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDgwL3RlbXBvcmFyeS9mb28iLCBlcnJvckNhbGxi
YWNrLCBleHBlY3RTZWN1cml0eUVyckFuZFJ1bk5leHQpOwotfQotCi1mdW5jdGlvbiBydW5Xcm9u
Z1NjaGVtZSgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3Jvbmcg
c2VjdXJpdHkgb3JpZ2luIChzY2hlbWUpIik7Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5
c3RlbVVSTCgiZmlsZXN5c3RlbTpodHRwczovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28i
LCBlcnJvckNhbGxiYWNrLCBleHBlY3RTZWN1cml0eUVyckFuZFJ1bk5leHQpOwotfQotCi1mdW5j
dGlvbiBydW5Cb2d1c1VSTCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBjb21wbGV0ZWx5
IGJvZ3VzIFVSTC4iKTsKLSAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmb28i
LCBlcnJvckNhbGxiYWNrLCBleHBlY3RFbmNvZGluZ0VyckFuZFJ1bk5leHQpOwotfQotCi1mdW5j
dGlvbiBydW5Xcm9uZ1Byb3RvY29sKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmluZyBhIFVSTCB3
aXRoIHRoZSB3cm9uZyBwcm90b2NvbCIpOwotICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0
ZW1VUkwoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9mb28vYmFyL2JheiIsIGVycm9yQ2FsbGJhY2ss
IGV4cGVjdEVuY29kaW5nRXJyQW5kUnVuTmV4dCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3Vn
aFNsYXNoZXMoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggbm8gc2xhc2gg
YmV0d2VlbiB0eXBlIGFuZCBmaWxlIik7Ci0gICAgY3JlYXRlVGVzdEZpbGUoZnVuY3Rpb24oZW50
cnkpIHsKLSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgiZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5dGVzdEZpbGUiLCBlcnJvckNhbGxiYWNr
LCBleHBlY3RFbmNvZGluZ0VyckFuZFJ1bk5leHQpOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBy
dW5Ob3RFbm91Z2hTbGFzaGVzMigpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0
aCBubyBzbGFzaCBiZXR3ZWVuIHByb3RvY29sIGFuZCB0eXBlIChib2d1cyBwb3J0KSIpOwotICAg
IGNyZWF0ZVRlc3RGaWxlKGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVM
b2NhbEZpbGVTeXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwdGVtcG9y
YXJ5L3Rlc3RGaWxlIiwgZXJyb3JDYWxsYmFjaywgZXhwZWN0U2VjdXJpdHlFcnJBbmRSdW5OZXh0
KTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gcnVuVXNlQmFja1NsYXNoZXMoKSB7Ci0gICAgZGVi
dWcoIiogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYmFja3NsYXNoZXMiKTsKLSAgICBmaWxlU3lzdGVt
LnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28iLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkg
ewotICAgICAgICBlbnRyeS5nZXRGaWxlKCJ0ZXN0RmlsZSIsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0
aW9uKGYpIHsKLSAgICAgICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoImZp
bGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb29cXHRlc3RGaWxlIiwg
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2goIi9mb28vdGVz
dEZpbGUiLCBlLmZ1bGxQYXRoKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRJc0ZpbGUoZSk7Ci0g
ICAgICAgICAgICAgICAgY2xlYW51cEFuZFJ1bk5leHQoKTsKLSAgICAgICAgICAgIH0sIGVycm9y
Q2FsbGJhY2spOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LCBlcnJvckNhbGxi
YWNrKTsKLX0KLQotZnVuY3Rpb24gcnVuRGlyZWN0b3J5KCkgewotICAgIGRlYnVnKCIqIFJlc29s
dmUgYSBkaXJlY3RvcnkiKTsKLSAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCJmb28i
LCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgewotICAgICAgICB3ZWJraXRSZXNvbHZl
TG9jYWxGaWxlU3lzdGVtVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1w
b3JhcnkvZm9vIiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgi
L2ZvbyIsIGUuZnVsbFBhdGgpOwotICAgICAgICAgICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci0g
ICAgICAgICAgICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNr
KTsKLSAgICB9LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gcnVuV2l0aFRyYWlsaW5n
U2xhc2goKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGluZyBz
bGFzaCIpOwotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6
dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVT
eXN0ZW1VUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28v
IiwgZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUu
ZnVsbFBhdGgpOwotICAgICAgICAgICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci0gICAgICAgICAg
ICBjbGVhbnVwQW5kUnVuTmV4dCgpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9
LCBlcnJvckNhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gcnVuUGVyc2lzdGVudFRlc3QoKSB7Ci0g
ICAgZGVidWcoIiogUmVzb2x2aW5nIGEgcGVyc2lzdGVudCBVUkwuIik7Ci0gICAgd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oUEVSU0lTVEVOVCwgMTAwLCBmdW5jdGlvbihmcykgewotICAgICAgICB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKGZzLnJvb3QudG9VUkwoKSwgZnVuY3Rpb24o
ZW50cnkpIHsKLSAgICAgICAgICAgIGFzc2VydFBhdGhzTWF0Y2goIi8iLCBlbnRyeS5mdWxsUGF0
aCk7Ci0gICAgICAgICAgICBhc3NlcnRJc0RpcmVjdG9yeShlbnRyeSk7Ci0gICAgICAgICAgICBj
bGVhbnVwQW5kUnVuTmV4dCgpOwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9KTsK
LX0KLQotLy8gRW5kIG9mIHRlc3QgYm9keSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXZhciB0ZXN0c0xpc3QgPSBbCi0gICAgcnVuQmFz
aWNUZXN0LAotICAgIHJ1bkhhbmRtYWRlVVJMLAotICAgIHJ1bldyb25nRG9tYWluLAotICAgIHJ1
bldyb25nUG9ydCwKLSAgICBydW5Xcm9uZ1NjaGVtZSwKLSAgICBydW5Cb2d1c1VSTCwKLSAgICBy
dW5Xcm9uZ1Byb3RvY29sLAotICAgIHJ1bk5vdEVub3VnaFNsYXNoZXMsCi0gICAgcnVuTm90RW5v
dWdoU2xhc2hlczIsCi0gICAgcnVuVXNlQmFja1NsYXNoZXMsCi0gICAgcnVuRGlyZWN0b3J5LAot
ICAgIHJ1bldpdGhUcmFpbGluZ1NsYXNoLAotICAgIHJ1blBlcnNpc3RlbnRUZXN0LAotXTsKLXZh
ciB0ZXN0Q291bnRlciA9IDA7Ci0KLWZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkgewotICAgIGlmICh0
ZXN0Q291bnRlciA9PSB0ZXN0c0xpc3QubGVuZ3RoKSB7Ci0gICAgICAgIGRlYnVnKCJGaW5pc2hl
ZCBydW5uaW5nIHRlc3RzLiIpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgdGVzdHNMaXN0W3Rlc3RDb3VudGVyKytdKCk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFu
dXBBbmRSdW5OZXh0KCkgewotICAgIHJlbW92ZUFsbEluRGlyZWN0b3J5KGZpbGVTeXN0ZW0ucm9v
dCwgcnVuTmV4dFRlc3QsIHJ1bk5leHRUZXN0KTsKLX0KLQotZnVuY3Rpb24gZmlsZVN5c3RlbUNh
bGxiYWNrKGZzKSB7Ci0gICAgZmlsZVN5c3RlbSA9IGZzOwotICAgIGNsZWFudXBBbmRSdW5OZXh0
KCk7Ci19Ci0KLWlmICh0aGlzLndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKSB7Ci0gICAganNUZXN0
SXNBc3luYyA9IHRydWU7Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0odGhpcy5URU1QT1JB
UlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0gZWxzZQotICAg
IGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKLQot
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMvcmVzb2x2ZS11
cmwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNDMgKzAsMCBAQAotW1dvcmtlcl0gVGVzdHMgdXNpbmcgd2Via2l0UmVzb2x2
ZUxvY2FsRmlsZVN5c3RlbVVSTCB0byBvYnRhaW4gYW4gRW50cnkgZnJvbSBhIFVSTAotCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiAuLi9zY3JpcHQtdGVz
dHMvcmVzb2x2ZS11cmkuanMKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgZ2VuZXJhdGVkIFVSTC4K
LVBBU1MgW1dvcmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0g
aXNGaWxlIGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2aW5nIHRlc3QgZmlsZSBieSBoYW5kCi1Q
QVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlz
RmlsZSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRoZSB3cm9uZyBz
ZWN1cml0eSBvcmlnaW4gKGRvbWFpbikKLVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLlNFQ1VSSVRZ
X0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdy
b25nIHNlY3VyaXR5IG9yaWdpbiAocG9ydCkKLVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLlNFQ1VS
SVRZX0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhl
IHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1lKQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3Iu
U0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBjb21wbGV0
ZWx5IGJvZ3VzIFVSTC4KLVBBU1MgW1dvcmtlcl0gRmlsZUVycm9yLkVOQ09ESU5HX0VSUiBpcyBl
cnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHByb3Rv
Y29sCi1QQVNTIFtXb3JrZXJdIEZpbGVFcnJvci5FTkNPRElOR19FUlIgaXMgZXJyb3JDb2RlCi1b
V29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQg
ZmlsZQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuRU5DT0RJTkdfRVJSIGlzIGVycm9yQ29kZQot
W1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3ZWVuIHByb3RvY29s
IGFuZCB0eXBlIChib2d1cyBwb3J0KQotUEFTUyBbV29ya2VyXSBGaWxlRXJyb3IuU0VDVVJJVFlf
RVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgcGF0aCB1c2luZyBiYWNrc2xh
c2hlcwotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29y
a2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZlIGEgZGlyZWN0b3J5Ci1QQVNT
IFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRoCi1QQVNTIFtXb3JrZXJdIGlzRGly
ZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2ZSBhIHBhdGggdXNpbmcgYSB0cmFpbGlu
ZyBzbGFzaAotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBb
V29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIHBlcnNp
c3RlbnQgVVJMLgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFT
UyBbV29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2VyXSBGaW5pc2hlZCBydW5uaW5n
IHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29s
dmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29y
a2Vycy9yZXNvbHZlLXVybC1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0
MyArMCwwIEBACi1bV29ya2VyXSBUZXN0cyB1c2luZyB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtU3luY1VSTCB0byBvYnRhaW4gYW4gRW50cnkgZnJvbSBhIFVSTAotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotU3RhcnRpbmcgd29ya2VyOiBzY3JpcHQtdGVzdHMvcmVzb2x2ZS11
cmwtc3luYy5qcwotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBnZW5lcmF0ZWQgVVJMLgotUEFTUyBb
V29ya2VyXSBleHBlY3RlZFBhdGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUg
aXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQKLVBBU1MgW1dv
cmtlcl0gZXhwZWN0ZWRQYXRoIGlzIGFjdHVhbFBhdGgKLVBBU1MgW1dvcmtlcl0gaXNGaWxlIGlz
IHRydWUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5
IG9yaWdpbiAoZG9tYWluKQotUEFTUyBbV29ya2VyXSBGaWxlRXhjZXB0aW9uLlNFQ1VSSVRZX0VS
UiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25n
IHNlY3VyaXR5IG9yaWdpbiAocG9ydCkKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5TRUNV
UklUWV9FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIHRo
ZSB3cm9uZyBzZWN1cml0eSBvcmlnaW4gKHNjaGVtZSkKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2Vw
dGlvbi5TRUNVUklUWV9FUlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIGNv
bXBsZXRlbHkgYm9ndXMgVVJMLgotUEFTUyBbV29ya2VyXSBGaWxlRXhjZXB0aW9uLkVOQ09ESU5H
X0VSUiBpcyBlcnJvckNvZGUKLVtXb3JrZXJdICogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdy
b25nIHByb3RvY29sCi1QQVNTIFtXb3JrZXJdIEZpbGVFeGNlcHRpb24uRU5DT0RJTkdfRVJSIGlz
IGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCBubyBzbGFzaCBiZXR3
ZWVuIHR5cGUgYW5kIGZpbGUKLVBBU1MgW1dvcmtlcl0gRmlsZUV4Y2VwdGlvbi5FTkNPRElOR19F
UlIgaXMgZXJyb3JDb2RlCi1bV29ya2VyXSAqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNo
IGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3VzIHBvcnQpCi1QQVNTIFtXb3JrZXJdIEZp
bGVFeGNlcHRpb24uU0VDVVJJVFlfRVJSIGlzIGVycm9yQ29kZQotW1dvcmtlcl0gKiBSZXNvbHZl
IGEgcGF0aCB1c2luZyBiYWNrc2xhc2hlcwotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGggaXMg
YWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0ZpbGUgaXMgdHJ1ZQotW1dvcmtlcl0gKiBSZXNv
bHZlIGEgZGlyZWN0b3J5Ci1QQVNTIFtXb3JrZXJdIGV4cGVjdGVkUGF0aCBpcyBhY3R1YWxQYXRo
Ci1QQVNTIFtXb3JrZXJdIGlzRGlyZWN0b3J5IGlzIHRydWUKLVtXb3JrZXJdICogUmVzb2x2ZSBh
IHBhdGggdXNpbmcgYSB0cmFpbGluZyBzbGFzaAotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBhdGgg
aXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29ya2Vy
XSAqIFJlc29sdmluZyBhIHBlcnNpc3RlbnQgVVJMLgotUEFTUyBbV29ya2VyXSBleHBlY3RlZFBh
dGggaXMgYWN0dWFsUGF0aAotUEFTUyBbV29ya2VyXSBpc0RpcmVjdG9yeSBpcyB0cnVlCi1bV29y
a2VyXSBGaW5pc2hlZCBydW5uaW5nIHRlc3RzLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmls
ZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9yZXNvbHZlLXVybC1zeW5jLmh0
bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3Rl
bS93b3JrZXJzL3Jlc29sdmUtdXJsLXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCAr
MCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0
V29ya2VyKCdzY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcycpOwotPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0
ZW0vd29ya2Vycy9yZXNvbHZlLXVybC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29sdmUtdXJsLmh0bWwJKHJldmlzaW9uIDE1
NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Jlc29s
dmUtdXJsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQ+Ci1zdGFydFdvcmtlcignLi4vc2NyaXB0LXRl
c3RzL3Jlc29sdmUtdXJpLmpzJyk7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0
cy9URU1QTEFURS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmls
ZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQt
dGVzdHMvVEVNUExBVEUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0
aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2VyKCdZT1VS
X0pTX0ZJTEVfSEVSRScpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVz
b2x2ZS11cmwtc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Zp
bGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwkocmV2aXNp
b24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dvcmtlcnMv
c2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJsLXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTk5
ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3JpcHRzKCcu
Li8uLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNjcmlwdHMo
Jy4uLy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRpb24oIlRl
c3RzIHVzaW5nIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMIHRvIG9idGFpbiBh
biBFbnRyeSBmcm9tIGEgVVJMIik7Ci0KLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RGaWxlJzsK
LXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotdmFyIGV4cGVjdGVkUGF0aCA9IG51bGw7Ci12YXIg
YWN0dWFsUGF0aCA9IG51bGw7Ci12YXIgZXJyb3JDb2RlID0gbnVsbDsKLQotZnVuY3Rpb24gY3Jl
YXRlVGVzdEZpbGUoKSB7Ci0gICAgcmV0dXJuIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RG
aWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydEVuY29kaW5nRXJy
KGNvZGUpIHsKLSAgICBlcnJvckNvZGUgPSBjb2RlOwotICAgIHNob3VsZEJlKCJGaWxlRXhjZXB0
aW9uLkVOQ09ESU5HX0VSUiIsICJlcnJvckNvZGUiKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0U2Vj
dXJpdHlFcnIoY29kZSkgewotICAgIGVycm9yQ29kZSA9IGNvZGU7Ci0gICAgc2hvdWxkQmUoIkZp
bGVFeGNlcHRpb24uU0VDVVJJVFlfRVJSIiwgImVycm9yQ29kZSIpOwotfQotCi1mdW5jdGlvbiBh
c3NlcnRQYXRoc01hdGNoKGV4cGVjdGVkLCBhY3R1YWwpIHsKLSAgICBleHBlY3RlZFBhdGggPSBl
eHBlY3RlZDsKLSAgICBhY3R1YWxQYXRoID0gYWN0dWFsOwotICAgIHNob3VsZEJlKCJleHBlY3Rl
ZFBhdGgiLCAiYWN0dWFsUGF0aCIpOwotfQotCi12YXIgaXNEaXJlY3RvcnkgPSBmYWxzZTsKLWZ1
bmN0aW9uIGFzc2VydElzRGlyZWN0b3J5KGVudHJ5KSB7Ci0gICAgaXNEaXJlY3RvcnkgPSBlbnRy
eS5pc0RpcmVjdG9yeTsKLSAgICBzaG91bGRCZVRydWUoImlzRGlyZWN0b3J5Iik7Ci19Ci0KLXZh
ciBpc0ZpbGUgPSBmYWxzZTsKLWZ1bmN0aW9uIGFzc2VydElzRmlsZShlbnRyeSkgewotICAgIGlz
RmlsZSA9IGVudHJ5LmlzRmlsZTsKLSAgICBzaG91bGRCZVRydWUoImlzRmlsZSIpOwotfQotCi0v
LyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotZnVuY3Rpb24gcnVuQmFzaWNUZXN0KCkgewotICAgIGRlYnVn
KCIqIFJlc29sdmluZyBhIGdlbmVyYXRlZCBVUkwuIik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0
RmlsZSgpOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwo
ZW50cnkudG9VUkwoKSk7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaChlbnRyeS5mdWxsUGF0aCwgZS5m
dWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNGaWxlKGUpOwotfQotCi1mdW5jdGlvbiBydW5IYW5kbWFk
ZVVSTCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQiKTsKLSAg
ICBlbnRyeSA9IGNyZWF0ZVRlc3RGaWxlKCk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNvbHZlTG9j
YWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVt
cG9yYXJ5L3Rlc3RGaWxlIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCh0ZXN0RmlsZU5hbWUsIGUu
ZnVsbFBhdGgpOwotICAgIGFzc2VydElzRmlsZShlKTsKLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdE
b21haW4oKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNl
Y3VyaXR5IG9yaWdpbiAoZG9tYWluKSIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29s
dmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC90ZW1wb3JhcnkvZm9vIik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgIGFzc2VydFNlY3VyaXR5RXJyKGUuY29kZSk7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiBydW5Xcm9uZ1BvcnQoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGgg
dGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAocG9ydCkiKTsKLSAgICB0cnkgewotICAgICAgICB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwODAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAg
fSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwotICAgIH0K
LX0KLQotZnVuY3Rpb24gcnVuV3JvbmdTY2hlbWUoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5n
IGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1lKSIpOwotICAgIHRy
eSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lz
dGVtOmh0dHBzOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0
RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0eUVycihl
LmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuQm9ndXNVUkwoKSB7Ci0gICAgZGVidWco
IiogUmVzb2x2aW5nIGEgY29tcGxldGVseSBib2d1cyBVUkwuIik7Ci0gICAgdHJ5IHsKLSAgICAg
ICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZvbyIpOwotICAgICAgICB0
ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRFbmNvZGluZ0Vy
cihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdQcm90b2NvbCgpIHsKLSAg
ICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wiKTsKLSAg
ICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2Zvby9iYXIvYmF6Iik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsK
LSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2VydEVuY29kaW5nRXJyKGUuY29kZSk7Ci0g
ICAgfQotfQotCi1mdW5jdGlvbiBydW5Ob3RFbm91Z2hTbGFzaGVzKCkgewotICAgIGRlYnVnKCIq
IFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmlsZSIpOwot
ICAgIGVudHJ5ID0gY3JlYXRlVGVzdEZpbGUoKTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5dGVzdEZpbGUiKTsKLSAgICAgICAgdGVzdEZhaWxlZCgpOwotICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0RW5jb2RpbmdFcnIoZS5jb2RlKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNoZXMyKCkgewotICAgIGRlYnVnKCIqIFJlc29s
dmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUgKGJvZ3Vz
IHBvcnQpIik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHRyeSB7Ci0gICAg
ICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6
Ly8xMjcuMC4wLjE6ODAwMHRlbXBvcmFyeS90ZXN0RmlsZSIpOwotICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgYXNzZXJ0U2VjdXJpdHlFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IHJ1blVzZUJhY2tTbGFzaGVzKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5n
IGJhY2tzbGFzaGVzIik7Ci0gICAgZW50cnkgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5
KCJmb28iLCB7Y3JlYXRlOnRydWV9KS5nZXRGaWxlKCJ0ZXN0RmlsZSIsIHtjcmVhdGU6dHJ1ZX0p
OwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb29cXHRlc3RGaWxlIik7Ci0g
ICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2Zvby90ZXN0RmlsZSIsIGUuZnVsbFBhdGgpOwotICAgIGFz
c2VydElzRmlsZShlKTsKLX0KLQotZnVuY3Rpb24gcnVuRGlyZWN0b3J5KCkgewotICAgIGRlYnVn
KCIqIFJlc29sdmUgYSBkaXJlY3RvcnkiKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5n
ZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVz
b2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4
MDAwL3RlbXBvcmFyeS9mb28iKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vIiwgZS5mdWxs
UGF0aCk7Ci0gICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1bldpdGhU
cmFpbGluZ1NsYXNoKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5nIGEgdHJh
aWxpbmcgc2xhc2giKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3Rvcnko
ImZvbyIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmls
ZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFy
eS9mb28vIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgpOwotICAg
IGFzc2VydElzRGlyZWN0b3J5KGUpOwotfQotCi1mdW5jdGlvbiBydW5QZXJzaXN0ZW50VGVzdCgp
IHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBwZXJzaXN0ZW50IFVSTC4iKTsKLSAgICB2YXIg
ZnMgPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoUEVSU0lTVEVOVCwgMTAwKTsKLSAgICBl
bnRyeSA9IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKGZzLnJvb3QudG9VUkwo
KSk7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiLyIsIGVudHJ5LmZ1bGxQYXRoKTsKLSAgICBhc3Nl
cnRJc0RpcmVjdG9yeShlbnRyeSk7Ci19Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkgZnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12YXIgdGVz
dHNMaXN0ID0gWwotICAgIHJ1bkJhc2ljVGVzdCwKLSAgICBydW5IYW5kbWFkZVVSTCwKLSAgICBy
dW5Xcm9uZ0RvbWFpbiwKLSAgICBydW5Xcm9uZ1BvcnQsCi0gICAgcnVuV3JvbmdTY2hlbWUsCi0g
ICAgcnVuQm9ndXNVUkwsCi0gICAgcnVuV3JvbmdQcm90b2NvbCwKLSAgICBydW5Ob3RFbm91Z2hT
bGFzaGVzLAotICAgIHJ1bk5vdEVub3VnaFNsYXNoZXMyLAotICAgIHJ1blVzZUJhY2tTbGFzaGVz
LAotICAgIHJ1bkRpcmVjdG9yeSwKLSAgICBydW5XaXRoVHJhaWxpbmdTbGFzaCwKLSAgICBydW5Q
ZXJzaXN0ZW50VGVzdCwKLV07Ci12YXIgdGVzdENvdW50ZXIgPSAwOwotCi1pZiAodGhpcy53ZWJr
aXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0ZXN0c0xpc3QubGVuZ3RoOyArK2kpIHsKLSAgICAgIHRlc3RzTGlzdFtpXSgpOwotICAgICAg
cmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgICBlbnRyeSA9
IG51bGw7Ci0gICAgfQotICAgIGRlYnVnKCJGaW5pc2hlZCBydW5uaW5nIHRlc3RzLiIpOwotICAg
IGZpbmlzaEpTVGVzdCgpOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBG
aWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwotCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzL3Njcmlw
dC10ZXN0cy9URU1QTEFURS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvZmlsZXN5c3RlbS93b3JrZXJzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9z
Y3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBA
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10
ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLXN0YXJ0V29ya2Vy
KCdZT1VSX0pTX0ZJTEVfSEVSRScpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVz
dHMvcmVzb2x2ZS11cmwtc3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2ZpbGVzeXN0ZW0vd29ya2Vycy9zY3JpcHQtdGVzdHMvcmVzb2x2ZS11cmwtc3luYy5qcwko
cmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9maWxlc3lzdGVtL3dv
cmtlcnMvc2NyaXB0LXRlc3RzL3Jlc29sdmUtdXJsLXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTk5ICswLDAgQEAKLWlmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKLSAgICBpbXBvcnRTY3Jp
cHRzKCcuLi8uLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcycpOwotICAgIGltcG9ydFNj
cmlwdHMoJy4uLy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKLX0KLQotZGVzY3JpcHRp
b24oIlRlc3RzIHVzaW5nIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMIHRvIG9i
dGFpbiBhbiBFbnRyeSBmcm9tIGEgVVJMIik7Ci0KLXZhciB0ZXN0RmlsZU5hbWUgPSAnL3Rlc3RG
aWxlJzsKLXZhciBmaWxlU3lzdGVtID0gbnVsbDsKLQotdmFyIGV4cGVjdGVkUGF0aCA9IG51bGw7
Ci12YXIgYWN0dWFsUGF0aCA9IG51bGw7Ci12YXIgZXJyb3JDb2RlID0gbnVsbDsKLQotZnVuY3Rp
b24gY3JlYXRlVGVzdEZpbGUoKSB7Ci0gICAgcmV0dXJuIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxl
KHRlc3RGaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSk7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydEVuY29k
aW5nRXJyKGNvZGUpIHsKLSAgICBlcnJvckNvZGUgPSBjb2RlOwotICAgIHNob3VsZEJlKCJGaWxl
RXhjZXB0aW9uLkVOQ09ESU5HX0VSUiIsICJlcnJvckNvZGUiKTsKLX0KLQotZnVuY3Rpb24gYXNz
ZXJ0U2VjdXJpdHlFcnIoY29kZSkgewotICAgIGVycm9yQ29kZSA9IGNvZGU7Ci0gICAgc2hvdWxk
QmUoIkZpbGVFeGNlcHRpb24uU0VDVVJJVFlfRVJSIiwgImVycm9yQ29kZSIpOwotfQotCi1mdW5j
dGlvbiBhc3NlcnRQYXRoc01hdGNoKGV4cGVjdGVkLCBhY3R1YWwpIHsKLSAgICBleHBlY3RlZFBh
dGggPSBleHBlY3RlZDsKLSAgICBhY3R1YWxQYXRoID0gYWN0dWFsOwotICAgIHNob3VsZEJlKCJl
eHBlY3RlZFBhdGgiLCAiYWN0dWFsUGF0aCIpOwotfQotCi12YXIgaXNEaXJlY3RvcnkgPSBmYWxz
ZTsKLWZ1bmN0aW9uIGFzc2VydElzRGlyZWN0b3J5KGVudHJ5KSB7Ci0gICAgaXNEaXJlY3Rvcnkg
PSBlbnRyeS5pc0RpcmVjdG9yeTsKLSAgICBzaG91bGRCZVRydWUoImlzRGlyZWN0b3J5Iik7Ci19
Ci0KLXZhciBpc0ZpbGUgPSBmYWxzZTsKLWZ1bmN0aW9uIGFzc2VydElzRmlsZShlbnRyeSkgewot
ICAgIGlzRmlsZSA9IGVudHJ5LmlzRmlsZTsKLSAgICBzaG91bGRCZVRydWUoImlzRmlsZSIpOwot
fQotCi0vLyBUZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZnVuY3Rpb24gcnVuQmFzaWNUZXN0KCkgewotICAg
IGRlYnVnKCIqIFJlc29sdmluZyBhIGdlbmVyYXRlZCBVUkwuIik7Ci0gICAgZW50cnkgPSBjcmVh
dGVUZXN0RmlsZSgpOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5
bmNVUkwoZW50cnkudG9VUkwoKSk7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaChlbnRyeS5mdWxsUGF0
aCwgZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNGaWxlKGUpOwotfQotCi1mdW5jdGlvbiBydW5I
YW5kbWFkZVVSTCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgdGVzdCBmaWxlIGJ5IGhhbmQi
KTsKLSAgICBlbnRyeSA9IGNyZWF0ZVRlc3RGaWxlKCk7Ci0gICAgdmFyIGUgPSB3ZWJraXRSZXNv
bHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgw
MDAvdGVtcG9yYXJ5L3Rlc3RGaWxlIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCh0ZXN0RmlsZU5h
bWUsIGUuZnVsbFBhdGgpOwotICAgIGFzc2VydElzRmlsZShlKTsKLX0KLQotZnVuY3Rpb24gcnVu
V3JvbmdEb21haW4oKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJMIHdpdGggdGhlIHdy
b25nIHNlY3VyaXR5IG9yaWdpbiAoZG9tYWluKSIpOwotICAgIHRyeSB7Ci0gICAgICAgIHdlYmtp
dFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVtOmh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC90ZW1wb3JhcnkvZm9vIik7Ci0gICAgICAgIHRlc3RGYWlsZWQoKTsKLSAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgIGFzc2VydFNlY3VyaXR5RXJyKGUuY29kZSk7Ci0gICAgfQotfQot
Ci1mdW5jdGlvbiBydW5Xcm9uZ1BvcnQoKSB7Ci0gICAgZGVidWcoIiogUmVzb2x2aW5nIGEgVVJM
IHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAocG9ydCkiKTsKLSAgICB0cnkgewotICAg
ICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRw
Oi8vMTI3LjAuMC4xOjgwODAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgICAgICB0ZXN0RmFpbGVkKCk7
Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0eUVycihlLmNvZGUpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdTY2hlbWUoKSB7Ci0gICAgZGVidWcoIiogUmVz
b2x2aW5nIGEgVVJMIHdpdGggdGhlIHdyb25nIHNlY3VyaXR5IG9yaWdpbiAoc2NoZW1lKSIpOwot
ICAgIHRyeSB7Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJm
aWxlc3lzdGVtOmh0dHBzOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIpOwotICAgICAg
ICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRTZWN1cml0
eUVycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuQm9ndXNVUkwoKSB7Ci0gICAg
ZGVidWcoIiogUmVzb2x2aW5nIGEgY29tcGxldGVseSBib2d1cyBVUkwuIik7Ci0gICAgdHJ5IHsK
LSAgICAgICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZvbyIpOwotICAg
ICAgICB0ZXN0RmFpbGVkKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnRFbmNv
ZGluZ0VycihlLmNvZGUpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gcnVuV3JvbmdQcm90b2NvbCgp
IHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBVUkwgd2l0aCB0aGUgd3JvbmcgcHJvdG9jb2wi
KTsKLSAgICB0cnkgewotICAgICAgICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VS
TCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Zvby9iYXIvYmF6Iik7Ci0gICAgICAgIHRlc3RGYWls
ZWQoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGFzc2VydEVuY29kaW5nRXJyKGUuY29k
ZSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBydW5Ob3RFbm91Z2hTbGFzaGVzKCkgewotICAgIGRl
YnVnKCIqIFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gdHlwZSBhbmQgZmls
ZSIpOwotICAgIGVudHJ5ID0gY3JlYXRlVGVzdEZpbGUoKTsKLSAgICB0cnkgewotICAgICAgICB3
ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VSTCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvdGVtcG9yYXJ5dGVzdEZpbGUiKTsKLSAgICAgICAgdGVzdEZhaWxlZCgpOwot
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgYXNzZXJ0RW5jb2RpbmdFcnIoZS5jb2RlKTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bk5vdEVub3VnaFNsYXNoZXMyKCkgewotICAgIGRlYnVnKCIq
IFJlc29sdmluZyBhIFVSTCB3aXRoIG5vIHNsYXNoIGJldHdlZW4gcHJvdG9jb2wgYW5kIHR5cGUg
KGJvZ3VzIHBvcnQpIik7Ci0gICAgZW50cnkgPSBjcmVhdGVUZXN0RmlsZSgpOwotICAgIHRyeSB7
Ci0gICAgICAgIHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKCJmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMHRlbXBvcmFyeS90ZXN0RmlsZSIpOwotICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgYXNzZXJ0U2VjdXJpdHlFcnIoZS5jb2RlKTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHJ1blVzZUJhY2tTbGFzaGVzKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRo
IHVzaW5nIGJhY2tzbGFzaGVzIik7Ci0gICAgZW50cnkgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGly
ZWN0b3J5KCJmb28iLCB7Y3JlYXRlOnRydWV9KS5nZXRGaWxlKCJ0ZXN0RmlsZSIsIHtjcmVhdGU6
dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwo
ImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb29cXHRlc3RGaWxl
Iik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2Zvby90ZXN0RmlsZSIsIGUuZnVsbFBhdGgpOwot
ICAgIGFzc2VydElzRmlsZShlKTsKLX0KLQotZnVuY3Rpb24gcnVuRGlyZWN0b3J5KCkgewotICAg
IGRlYnVnKCIqIFJlc29sdmUgYSBkaXJlY3RvcnkiKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0u
cm9vdC5nZXREaXJlY3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Vi
a2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iKTsKLSAgICBhc3NlcnRQYXRoc01hdGNoKCIvZm9vIiwg
ZS5mdWxsUGF0aCk7Ci0gICAgYXNzZXJ0SXNEaXJlY3RvcnkoZSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1
bldpdGhUcmFpbGluZ1NsYXNoKCkgewotICAgIGRlYnVnKCIqIFJlc29sdmUgYSBwYXRoIHVzaW5n
IGEgdHJhaWxpbmcgc2xhc2giKTsKLSAgICBlbnRyeSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJl
Y3RvcnkoImZvbyIsIHtjcmVhdGU6dHJ1ZX0pOwotICAgIHZhciBlID0gd2Via2l0UmVzb2x2ZUxv
Y2FsRmlsZVN5c3RlbVN5bmNVUkwoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Rl
bXBvcmFyeS9mb28vIik7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiL2ZvbyIsIGUuZnVsbFBhdGgp
OwotICAgIGFzc2VydElzRGlyZWN0b3J5KGUpOwotfQotCi1mdW5jdGlvbiBydW5QZXJzaXN0ZW50
VGVzdCgpIHsKLSAgICBkZWJ1ZygiKiBSZXNvbHZpbmcgYSBwZXJzaXN0ZW50IFVSTC4iKTsKLSAg
ICB2YXIgZnMgPSB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMoUEVSU0lTVEVOVCwgMTAwKTsK
LSAgICBlbnRyeSA9IHdlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5jVVJMKGZzLnJvb3Qu
dG9VUkwoKSk7Ci0gICAgYXNzZXJ0UGF0aHNNYXRjaCgiLyIsIGVudHJ5LmZ1bGxQYXRoKTsKLSAg
ICBhc3NlcnRJc0RpcmVjdG9yeShlbnRyeSk7Ci19Ci0KLS8vIEVuZCBvZiB0ZXN0IGJvZHkgZnVu
Y3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12
YXIgdGVzdHNMaXN0ID0gWwotICAgIHJ1bkJhc2ljVGVzdCwKLSAgICBydW5IYW5kbWFkZVVSTCwK
LSAgICBydW5Xcm9uZ0RvbWFpbiwKLSAgICBydW5Xcm9uZ1BvcnQsCi0gICAgcnVuV3JvbmdTY2hl
bWUsCi0gICAgcnVuQm9ndXNVUkwsCi0gICAgcnVuV3JvbmdQcm90b2NvbCwKLSAgICBydW5Ob3RF
bm91Z2hTbGFzaGVzLAotICAgIHJ1bk5vdEVub3VnaFNsYXNoZXMyLAotICAgIHJ1blVzZUJhY2tT
bGFzaGVzLAotICAgIHJ1bkRpcmVjdG9yeSwKLSAgICBydW5XaXRoVHJhaWxpbmdTbGFzaCwKLSAg
ICBydW5QZXJzaXN0ZW50VGVzdCwKLV07Ci12YXIgdGVzdENvdW50ZXIgPSAwOwotCi1pZiAodGhp
cy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0ZXN0c0xpc3QubGVuZ3RoOyArK2kpIHsKLSAgICAgIHRlc3RzTGlzdFtpXSgpOwot
ICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci0gICAgICBl
bnRyeSA9IG51bGw7Ci0gICAgfQotICAgIGRlYnVnKCJGaW5pc2hlZCBydW5uaW5nIHRlc3RzLiIp
OwotICAgIGZpbmlzaEpTVGVzdCgpOwotfSBlbHNlCi0gICAgZGVidWcoIlRoaXMgdGVzdCByZXF1
aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOwotCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vZGVsZXRlLWVudHJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vZGVsZXRlLWVudHJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MSArMCwwIEBACi1UZXN0cyBkZWxldGVFbnRyeSBjb21tYW5kLgotCi1lcnJvckNvZGU6IDIKLWVy
cm9yQ29kZTogOAotZXJyb3JDb2RlOiAwCi1lcnJvckNvZGU6IDAKLWVycm9yQ29kZTogMAotZXJy
b3JDb2RlOiAxCi1iYWNrZW5kUm9vdEVudHJ5OiAobnVsbCkKLQotCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVs
ZXRlLWVudHJ5Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsODMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEg
Y2hhcnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0
KTsKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBmaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbDsKLQotICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAg
ICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0
ZUZpbGUoIi9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURp
cmVjdG9yeSgiL2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAg
ICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRl
RmlsZSgiL2Z1Z2EvcGl5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAg
ICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVh
dGVEaXJlY3RvcnkoIi9mb28iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAg
ICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5f
ZGVsZXRlRW50cnkoIkludmFsaWRVUkwiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwK
LQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotICAgICAg
ICAgICAgZmlsZVN5c3RlbU1vZGVsLl9kZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvSW52YWxpZFR5cGUvZnVnYSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAg
ICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0g
ICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX2RlbGV0ZUVudHJ5KCJmaWxlc3lzdGVtOmh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAg
ICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7
Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX2RlbGV0ZUVudHJ5KCJmaWxlc3lzdGVtOmh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvZnVnYSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwot
ICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29k
ZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX2RlbGV0ZUVudHJ5KCJmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAiICsgZXJyb3JDb2Rl
KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5
KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9v
dFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgIH0KLSAgICBdOwotCi0gICAg
SW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci19Ci08L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVzdHMgZGVsZXRlRW50cnkgY29tbWFuZC48L3A+
Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzIgKzAsMCBAQAotVGVzdHMgZGlyZWN0b3J5IHRyZWUgb24gRmlsZVN5
c3RlbVZpZXcuCi0KLVtkaXJlY3RvcnkgdHJlZSBub2RlXQotZXhwYW5kZWQ6IHRydWUKLWVudHJ5
OiAobnVsbCkKLSNjaGlsZHJlbjogMQotICBbZGlyZWN0b3J5IHRyZWUgbm9kZV0KLSAgZXhwYW5k
ZWQ6IHRydWUKLSAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBv
cmFyeS8KLSAgI2NoaWxkcmVuOiAxCi0gICAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCi0gICAgZXhw
YW5kZWQ6IGZhbHNlCi0gICAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAw
L3RlbXBvcmFyeS9ob2dlCi0gICAgI2NoaWxkcmVuOiAwCi0KLVtkaXJlY3RvcnkgdHJlZSBub2Rl
XQotZXhwYW5kZWQ6IHRydWUKLWVudHJ5OiAobnVsbCkKLSNjaGlsZHJlbjogMQotICBbZGlyZWN0
b3J5IHRyZWUgbm9kZV0KLSAgZXhwYW5kZWQ6IHRydWUKLSAgZW50cnk6IGZpbGVzeXN0ZW06aHR0
cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS8KLSAgI2NoaWxkcmVuOiAxCi0gICAgW2RpcmVj
dG9yeSB0cmVlIG5vZGVdCi0gICAgZXhwYW5kZWQ6IHRydWUKLSAgICBlbnRyeTogZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UKLSAgICAjY2hpbGRyZW46IDEK
LSAgICAgIFtkaXJlY3RvcnkgdHJlZSBub2RlXQotICAgICAgZXhwYW5kZWQ6IGZhbHNlCi0gICAg
ICBlbnRyeTogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2Uv
ZnVnYQotICAgICAgI2NoaWxkcmVuOiAwCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVl
Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHZhciByZXNvdXJjZXNQYW5lbCA9IFdlYkluc3BlY3Rvci5z
aG93UGFuZWwoInJlc291cmNlcyIpOwotICAgIHZhciBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50
ID0gcmVzb3VyY2VzUGFuZWwuZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudDsKLSAgICBpZiAoIWZp
bGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQpIHsKLSAgICAgICAgZmlsZVN5c3RlbUxpc3RUcmVlRWxl
bWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudChyZXNvdXJj
ZXNQYW5lbCk7Ci0gICAgICAgIHJlc291cmNlc1BhbmVsLmZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1l
bnQgPSBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50OwotICAgICAgICByZXNvdXJjZXNQYW5lbC5z
aWRlYmFyVHJlZS5hcHBlbmRDaGlsZChmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KTsKLSAgICB9
Ci0KLSAgICB2YXIgZmlsZVN5c3RlbUl0ZW0gPSBudWxsOwotICAgIHZhciBmaWxlU3lzdGVtVmll
dyA9IG51bGw7Ci0gICAgdmFyIGRpcmVjdG9yeVRyZWUgPSBudWxsOwotCi0gICAgdmFyIHJlcXVl
c3RzTGVmdCA9IDA7Ci0gICAgdmFyIHRlc3RTdGVwID0gWwotICAgICAgICBmdW5jdGlvbigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9n
ZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkK
LSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9o
b2dlL2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5j
dGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgi
L2hvZ2UvZnVnYS9waXlvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAg
ICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNu
aWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLCAi
X2ZpbGVTeXN0ZW1BZGRlZCIsIHRlc3RTdGVwLnNoaWZ0KCksIGZhbHNlKTsKLSAgICAgICAgICAg
IGZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQuX3JlZnJlc2hGaWxlU3lzdGVtKCk7Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXZlbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChldmVudC5kYXRhLm5hbWUgIT09ICJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90
ZW1wb3JhcnkiKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgZmlsZVN5
c3RlbUl0ZW0gPSBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50Ll9maWxlU3lzdGVtVHJlZUVsZW1l
bnRCeU5hbWUoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeSIpOwot
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5wcm90b3R5cGUsICJfZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkIiwgdGVzdFN0
ZXAuc2hpZnQoKSwgZmFsc2UpOwotICAgICAgICAgICAgZmlsZVN5c3RlbUl0ZW0uc2VsZWN0KCk7
Ci0gICAgICAgICAgICBmaWxlU3lzdGVtVmlldyA9IGZpbGVTeXN0ZW1JdGVtLl9maWxlU3lzdGVt
VmlldzsKLSAgICAgICAgICAgIGRpcmVjdG9yeVRyZWUgPSBmaWxlU3lzdGVtVmlldy5fZGlyZWN0
b3J5VHJlZTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IGR1bXBEaXJlY3RvcnlUcmVlKGRpcmVjdG9yeVRyZWUpOwotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIiIpOwotCi0gICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0U2VudCgp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKytyZXF1ZXN0c0xlZnQ7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSwgIl9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQi
LCB0ZXN0U3RlcC5zaGlmdCgpLCB0cnVlKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSwgInJlcXVlc3RE
aXJlY3RvcnlDb250ZW50IiwgcmVxdWVzdFNlbnQsIHRydWUpOwotCi0gICAgICAgICAgICBkaXJl
Y3RvcnlUcmVlLmNoaWxkcmVuWzBdLmV4cGFuZFJlY3Vyc2l2ZWx5KCk7Ci0gICAgICAgIH0sCi0K
LSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoLS1yZXF1ZXN0c0xlZnQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZHVtcERpcmVjdG9yeVRyZWUoZGly
ZWN0b3J5VHJlZSk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVt
KHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAg
ICAgfQotICAgIF07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3Rl
cC5zaGlmdCgpKTsKLQotICAgIGZ1bmN0aW9uIGR1bXBEaXJlY3RvcnlUcmVlKHRyZWVOb2RlLCBp
bmRlbnQpCi0gICAgewotICAgICAgICBpbmRlbnQgPSBpbmRlbnQgfHwgIiI7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICJbZGlyZWN0b3J5IHRyZWUgbm9kZV0iKTsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoaW5kZW50ICsgImV4cGFuZGVkOiAiICsg
dHJlZU5vZGUuZXhwYW5kZWQpOwotICAgICAgICBpZiAodHJlZU5vZGUuX2VudHJ5KQotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoaW5kZW50ICsgImVudHJ5OiAiICsgdHJlZU5v
ZGUuX2VudHJ5LnVybCkKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoaW5kZW50ICsgImVudHJ5OiAobnVsbCkiKQotICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChpbmRlbnQgKyAiI2NoaWxkcmVuOiAiICsgdHJlZU5vZGUuY2hpbGRyZW4ubGVu
Z3RoKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWVOb2RlLmNoaWxkcmVuLmxl
bmd0aDsgKytpKQotICAgICAgICAgICAgZHVtcERpcmVjdG9yeVRyZWUodHJlZU5vZGUuY2hpbGRy
ZW5baV0sIGluZGVudCArICIgICIpOwotICAgIH0KLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08cD5UZXN0cyBkaXJlY3RvcnkgdHJlZSBvbiBGaWxlU3lzdGVtVmlldy48L3A+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcwkocmV2aXNpb24g
MTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9m
aWxlc3lzdGVtLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTk3ICswLDAgQEAKLXZhciBp
bml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0ID0gZnVuY3Rpb24oKQotewotICAgIHZhciBuZXh0Q2Fs
bGJhY2tJZCA9IDA7Ci0gICAgdmFyIGNhbGxiYWNrcyA9IHt9OwotCi0gICAgSW5zcGVjdG9yVGVz
dC5Nb2NrRW50cnkgPSBmdW5jdGlvbih1cmwpCi0gICAgewotICAgICAgICB0aGlzLnVybCA9IHVy
bDsKLSAgICB9Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2sgPSBmdW5jdGlv
bihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFja0lkID0gKytuZXh0Q2FsbGJh
Y2tJZDsKLSAgICAgICAgY2FsbGJhY2tzW2NhbGxiYWNrSWRdID0gY2FsbGJhY2s7Ci0gICAgICAg
IHJldHVybiAiZGlzcGF0Y2hDYWxsYmFjay5iaW5kKG51bGwsICIgKyBjYWxsYmFja0lkICsgIiki
OwotICAgIH07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmRpc3BhdGNoQ2FsbGJhY2sgPSBmdW5jdGlv
bihwYWNrZWRBcmdzKQotICAgIHsKLSAgICAgICAgdmFyIGFyZ3MgPSBKU09OLnBhcnNlKHBhY2tl
ZEFyZ3MpOwotICAgICAgICB2YXIgY2FsbGJhY2tJZCA9IGFyZ3Muc2hpZnQoKTsKLSAgICAgICAg
dmFyIGNhbGxiYWNrID0gY2FsbGJhY2tzW2NhbGxiYWNrSWRdOwotICAgICAgICBkZWxldGUgY2Fs
bGJhY2tzW2NhbGxiYWNrSWRdOwotICAgICAgICBjYWxsYmFjay5hcHBseShudWxsLCBhcmdzKTsK
LSAgICB9OwotCi0gICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkgPSBmdW5jdGlvbihw
YXRoLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoImNyZWF0ZURpcmVjdG9yeShlc2NhcGUoXCIiICsgZXNjYXBlKHBhdGgpICsgIlwiKSwgIiAr
IEluc3BlY3RvclRlc3QucmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFjaykgKyAiKSIpOwotICAgIH07
Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZpbGUgPSBmdW5jdGlvbihwYXRoLCBjYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNyZWF0ZUZp
bGUodW5lc2NhcGUoXCIiICsgZXNjYXBlKHBhdGgpICsgIlwiKSwgIiArIEluc3BlY3RvclRlc3Qu
cmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFjaykgKyAiKSIpOwotICAgIH07Ci0KLSAgICBJbnNwZWN0
b3JUZXN0LndyaXRlRmlsZSA9IGZ1bmN0aW9uKHBhdGgsIGNvbnRlbnQsIGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid3JpdGVGaWxlKHVuZXNj
YXBlKFwiIiArIGVzY2FwZShwYXRoKSArICJcIiksIHVuZXNjYXBlKFwiIiArIGVzY2FwZShjb250
ZW50KSArICJcIiksICIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2sp
ICsgIikiKTsKLSAgICB9OwotCi0gICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0gPSBm
dW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoImNsZWFyRmlsZVN5c3RlbSgiICsgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNr
KGNhbGxiYWNrKSArICIpIik7Ci0gICAgfTsKLQotICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVT
eXN0ZW1Sb290UmVxdWVzdFJlc3VsdCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RF
bnRyeSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6
ICIgKyBlcnJvckNvZGUpOwotICAgICAgICBpZiAoYmFja2VuZFJvb3RFbnRyeSkKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJiYWNrZW5kUm9vdEVudHJ5LnVybDogIiArIGJh
Y2tlbmRSb290RW50cnkudXJsKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoImJhY2tlbmRSb290RW50cnk6IChudWxsKSIpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7Ci0gICAgfTsKLQotICAgIEluc3BlY3RvclRlc3QuZHVt
cERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0ID0gZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRy
aWVzKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTog
IiArIGVycm9yQ29kZSk7Ci0KLSAgICAgICAgaWYgKCFlbnRyaWVzKSB7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZW50cmllczogKG51bGwpIik7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZW50cmllczoiKTsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgIiArIGkgKyAiOiIpOwotICAgICAgICAgIGZvciAo
dmFyIGogaW4gZW50cmllc1tpXSkKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCIgICAgIiArIGogKyAiOiAiICsgZW50cmllc1tpXVtqXSk7Ci0gICAgICAgIH0KLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwotICAgIH07Ci0KLSAgICBJbnNwZWN0b3JUZXN0
LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQgPSBmdW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRh
KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVycm9yQ29kZTogIiAr
IGVycm9yQ29kZSk7Ci0gICAgICAgIGlmIChtZXRhZGF0YSkgewotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIm1ldGFkYXRhOiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIiAgbW9kaWZpY2F0aW9uVGltZTogIiArICgibW9kaWZpY2F0aW9uVGltZSIg
aW4gbWV0YWRhdGEgPyAiKGV4aXN0cykiIDogIihudWxsKSIpKTsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIgIHNpemU6ICIgKyAoInNpemUiIGluIG1ldGFkYXRhID8gbWV0
YWRhdGEuc2l6ZSA6ICIobnVsbCkiKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibWV0YWRhdGE6IChudWxsKSIpOwotICAgICAgICB9Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLSAgICB9OwotCi0gICAgSW5zcGVj
dG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0ID0gZnVuY3Rpb24oZXJyb3JDb2Rl
LCBjb250ZW50LCBjaGFyc2V0KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0KLSAgICAgICAgaWYgKGNvbnRlbnQpCi0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiY29udGVudDogXCIiICsgY29udGVu
dCArICJcIiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiY29udGVudDogKG51bGwpIik7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImNoYXJzZXQ6ICIgKyBjaGFyc2V0KTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIiIpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIGRpc3BhdGNoQ2FsbGJhY2soKQotewotICAg
IHZhciBhcmdzID0gSlNPTi5zdHJpbmdpZnkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn
dW1lbnRzKSk7Ci0gICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKDk5OSwgIklu
c3BlY3RvclRlc3QuZGlzcGF0Y2hDYWxsYmFjayh1bmVzY2FwZShcIiIgKyBlc2NhcGUoYXJncykg
KyAiXCIpKSIpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVEaXJlY3RvcnkocGF0aCwgY2FsbGJhY2sp
Ci17Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxLCBkaWRHZXRGaWxl
U3lzdGVtKTsKLQotICAgIGZ1bmN0aW9uIGRpZEdldEZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAg
ICB7Ci0gICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkocGF0aCwge2NyZWF0ZTp0
cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
IH0pOwotICAgIH0KLX0KLQotZnVuY3Rpb24gY3JlYXRlRmlsZShwYXRoLCBjYWxsYmFjaykKLXsK
LSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEsIGRpZEdldEZpbGVTeXN0
ZW0pOwotCi0gICAgZnVuY3Rpb24gZGlkR2V0RmlsZVN5c3RlbShmaWxlU3lzdGVtKQotICAgIHsK
LSAgICAgICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUocGF0aCwge2NyZWF0ZTp0cnVlfSwgZnVu
Y3Rpb24oZW50cnkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAg
IH0KLX0KLQotZnVuY3Rpb24gd3JpdGVGaWxlKHBhdGgsIGNvbnRlbnQsIGNhbGxiYWNrKQotewot
ICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMSwgZGlkR2V0RmlsZVN5c3Rl
bSk7Ci0KLSAgICBmdW5jdGlvbiBkaWRHZXRGaWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgewot
ICAgICAgICBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShwYXRoLCB7Y3JlYXRlOnRydWV9LCBkaWRH
ZXRGaWxlRW50cnkpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRpZEdldEZpbGVFbnRyeShmaWxl
RW50cnkpCi0gICAgewotICAgICAgICBmaWxlRW50cnkuY3JlYXRlV3JpdGVyKGRpZEdldFdyaXRl
cik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZGlkR2V0V3JpdGVyKHdyaXRlcikKLSAgICB7Ci0g
ICAgICAgIHdyaXRlci53cml0ZShuZXcgQmxvYihbY29udGVudF0pKTsKLSAgICAgICAgd3JpdGVy
Lm9ud3JpdGUgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3cml0ZXIucmVhZHlTdGF0
ZSA9PT0gd3JpdGVyLkRPTkUpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAg
fTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyRmlsZVN5c3RlbShjYWxsYmFjaykKLXsKLSAg
ICB3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCJmaWxlc3lzdGVtOiIgKyBsb2NhdGlv
bi5vcmlnaW4gKyAiL3RlbXBvcmFyeS8iLCBkaWRHZXRSb290LCBvbkVycm9yKTsKLQotICAgIGZ1
bmN0aW9uIGRpZEdldFJvb3Qocm9vdCkKLSAgICB7Ci0gICAgICAgIHZhciByZWFkZXIgPSByb290
LmNyZWF0ZVJlYWRlcigpOwotICAgICAgICByZWFkZXIucmVhZEVudHJpZXMoZGlkUmVhZEVudHJp
ZXMpOwotCi0gICAgICAgIHZhciBlbnRyaWVzID0gW107Ci0gICAgICAgIGZ1bmN0aW9uIGRpZFJl
YWRFbnRyaWVzKG5ld0VudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChuZXdFbnRy
aWVzLmxlbmd0aCA9PT0gMCkgewotICAgICAgICAgICAgICAgIHJlbW92ZUFsbCgpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbmV3RW50cmllcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBlbnRyaWVz
LnB1c2gobmV3RW50cmllc1tpXSk7Ci0gICAgICAgICAgICByZWFkZXIucmVhZEVudHJpZXMoZGlk
UmVhZEVudHJpZXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcmVtb3ZlQWxsKCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzLnNoaWZ0KCk7Ci0gICAgICAg
ICAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgZW50cnkucmVtb3Zl
UmVjdXJzaXZlbHkocmVtb3ZlQWxsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBlbnRyeS5yZW1vdmUocmVtb3ZlQWxsKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0
aW9uIG9uRXJyb3IoKQotICAgIHsKLSAgICAgICAgLy8gQXNzdW1lIHRoZSBGaWxlU3lzdGVtIGlz
IHVuaW5pdGlhbGl6ZWQgYW5kIHRoZXJlZm9yZSBlbXB0eS4KLSAgICAgICAgY2FsbGJhY2soKTsK
LSAgICB9Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJl
Y3RvcnktY29udGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29u
dGVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotVGVzdHMg
cmVxdWVzdERpcmVjdG9yeUNvbnRlbnQgY29tbWFuZC4KLQotZXJyb3JDb2RlOiAyCi1lbnRyaWVz
OiAobnVsbCkKLQotZXJyb3JDb2RlOiA4Ci1lbnRyaWVzOiAobnVsbCkKLQotZXJyb3JDb2RlOiAw
Ci1lbnRyaWVzOgotICAwOgotICAgIHVybDogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgw
MDAvdGVtcG9yYXJ5L2hvZ2UvcGl5by5odG1sCi0gICAgbmFtZTogcGl5by5odG1sCi0gICAgaXNE
aXJlY3Rvcnk6IGZhbHNlCi0gICAgaXNUZXh0RmlsZTogdHJ1ZQotICAgIG1pbWVUeXBlOiB0ZXh0
L2h0bWwKLSAgICByZXNvdXJjZVR5cGU6IERvY3VtZW50Ci0gIDE6Ci0gICAgdXJsOiBmaWxlc3lz
dGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZS9mdWdhCi0gICAgbmFtZTog
ZnVnYQotICAgIGlzRGlyZWN0b3J5OiB0cnVlCi0KLWVycm9yQ29kZTogMQotZW50cmllczogKG51
bGwpCi0KLWVycm9yQ29kZTogMgotZW50cmllczogKG51bGwpCi0KLUFsbCB0ZXN0cyBoYXZlIGRv
bmUuCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
cmVxdWVzdC1kaXJlY3RvcnktY29udGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVu
dC5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw3NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1
blRlc3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsOwotCi0gICAgdmFyIHRlc3RTdGVwID0gWwot
ICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y3JlYXRlRGlyZWN0b3J5KCIvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAot
Ci0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dlL2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAg
ICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY3JlYXRlRmlsZSgiL2hvZ2UvcGl5by5odG1sIiwgdGVzdFN0ZXAuc2hpZnQoKSk7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3REaXJlY3RvcnlDb250ZW50KCJJbnZhbGlkVVJMIiwg
dGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JD
b2RlLCBlbnRyaWVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBE
aXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGVudHJpZXMpOwotICAgICAg
ICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvSW52YWxpZFR5cGUvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVx
dWVzdFJlc3VsdChlcnJvckNvZGUsIGVudHJpZXMpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1v
ZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQot
ICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9y
Q29kZSwgZW50cmllcyk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3REaXJl
Y3RvcnlDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnkv
Zm9vIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24o
ZXJyb3JDb2RlLCBlbnRyaWVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGVudHJpZXMpOwot
ICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmls
ZXN5c3RlbTpodHRwOi8vZXhhbXBsZS5jb20vdGVtcG9yYXJ5LyIsIHRlc3RTdGVwLnNoaWZ0KCkp
OwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykgewot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRGlyZWN0b3J5Q29udGVudFJlcXVlc3RSZXN1
bHQoZXJyb3JDb2RlLCBlbnRyaWVzKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2xlYXJG
aWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0
aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFs
bCB0ZXN0cyBoYXZlIGRvbmUuIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOwotICAgICAgICB9Ci0gICAgXTsKLQotICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxl
U3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxwPlRlc3RzIHJlcXVlc3REaXJlY3RvcnlDb250ZW50IGNvbW1hbmQuPC9wPgotPC9ib2R5Pgot
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9yZXF1ZXN0LWZpbGUtY29udGVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI4ICswLDAgQEAKLVRlc3RzIHJlcXVlc3RGaWxlQ29udGVu
dCBjb21tYW5kLgotCi1lcnJvckNvZGU6IDIKLWNvbnRlbnQ6IChudWxsKQotY2hhcnNldDogdW5k
ZWZpbmVkCi0KLWVycm9yQ29kZTogOAotY29udGVudDogKG51bGwpCi1jaGFyc2V0OiB1bmRlZmlu
ZWQKLQotZXJyb3JDb2RlOiAwCi1jb250ZW50OiAiUEFTUyIKLWNoYXJzZXQ6IFVURi04Ci0KLWVy
cm9yQ29kZTogMTEKLWNvbnRlbnQ6IChudWxsKQotY2hhcnNldDogdW5kZWZpbmVkCi0KLWVycm9y
Q29kZTogMQotY29udGVudDogKG51bGwpCi1jaGFyc2V0OiB1bmRlZmluZWQKLQotZXJyb3JDb2Rl
OiAyCi1jb250ZW50OiAobnVsbCkKLWNoYXJzZXQ6IHVuZGVmaW5lZAotCi1BbGwgdGVzdHMgaGF2
ZSBkb25lLgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZmlsZS1jb250ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1s
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL3JlcXVlc3QtZmlsZS1jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
NzkgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLWZ1
bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBmaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbDsKLQotICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAgICAgZnVu
Y3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVj
dG9yeSgiL2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBm
dW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxl
KCIvaG9nZS9mdWdhLnR4dCIsICJwaVBBU1N5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAg
ICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmlsZVN5
c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZUNvbnRlbnQoIkludmFsaWRVUkwiLCB0cnVlLCAyLCA2LCAi
VVRGLTgiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bihlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRl
bnQsIGNoYXJzZXQpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZUNv
bnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL0ludmFsaWRUeXBlL2hvZ2Uv
ZnVnYS50eHQiLCB0cnVlLCAyLCA2LCAiVVRGLTgiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAg
ICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVz
dFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpOwotICAgICAgICAgICAgZmlsZVN5
c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1Z2EudHh0IiwgdHJ1ZSwgMiwgNiwgIlVURi04IiwgdGVz
dFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
LCBjb250ZW50LCBjaGFyc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0
KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50KCJmaWxl
c3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHRydWUsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCAiIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAg
ICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJy
b3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5f
cmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1w
b3JhcnkvZm9vIiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICIiLCB0ZXN0U3RlcC5zaGlm
dCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGNvbnRlbnQs
IGNoYXJzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVD
b250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpOwotICAgICAg
ICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0
cDovL2V4YW1wbGUuY29tL3RlbXBvcmFyeS9mb28udHh0IiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRl
ZmluZWQsICIiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5j
dGlvbihlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGNv
bnRlbnQsIGNoYXJzZXQpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0
ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWxsIHRlc3Rz
IGhhdmUgZG9uZS4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7
Ci0gICAgICAgIH0KLSAgICBdOwotCi0gICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0o
dGVzdFN0ZXAuc2hpZnQoKSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVz
dHMgcmVxdWVzdEZpbGVDb250ZW50IGNvbW1hbmQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZp
bGVzeXN0ZW0tcm9vdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEzICswLDAgQEAKLVRlc3RzIHJlcXVlc3RGaWxlU3lzdGVtUm9v
dCBjb21tYW5kLgotCi1lcnJvckNvZGU6IDAKLWJhY2tlbmRSb290RW50cnkudXJsOiBmaWxlc3lz
dGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvCi0KLWVycm9yQ29kZTogOAotYmFj
a2VuZFJvb3RFbnRyeTogKG51bGwpCi0KLWVycm9yQ29kZTogMgotYmFja2VuZFJvb3RFbnRyeTog
KG51bGwpCi0KLUFsbCB0ZXN0cyBoYXZlIGRvbmUuCi0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVt
L3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVt
LXJvb3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1OCArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNyYz0i
Li4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0ZW0t
dGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
RE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFy
IGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsOwotCi0g
ICAgdmFyIHRlc3RTdGVwID0gWwotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBBZGQgQVBJIHRvIGRlbGV0ZSBhIEZpbGVTeXN0ZW0gY29tcGxldGVs
eSBhbmQgdGVzdCBnZXRGaWxlU3lzdGVtUm9vdCBmb3IKLSAgICAgICAgICAgIC8vIHVuaW5pdGlh
bGl6ZWQgRmlsZVN5c3RlbS4KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRmlsZSgi
L2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVT
eXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAu
c2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNr
ZW5kUm9vdEVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBG
aWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsK
LSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiLCAiZml6emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAg
ICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1Sb290UmVx
dWVzdFJlc3VsdChlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpOwotICAgICAgICAgICAgZmls
ZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoImh0dHA6Ly9leGFtcGxlLmNvbSIs
ICJ0ZW1wb3JhcnkiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBm
dW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1Sb290UmVxdWVzdFJlc3VsdChlcnJvckNv
ZGUsIGJhY2tlbmRSb290RW50cnkpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZp
bGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rp
b24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWxs
IHRlc3RzIGhhdmUgZG9uZS4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7Ci0gICAgICAgIH0KLSAgICBdOwotCi0gICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVT
eXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHA+VGVzdHMgcmVxdWVzdEZpbGVTeXN0ZW1Sb290IGNvbW1hbmQuPC9wPgotPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9y
ZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDIzICswLDAgQEAKLVRlc3RzIHJlcXVlc3RNZXRhZGF0YSBjb21tYW5kLgotCi1lcnJv
ckNvZGU6IDIKLW1ldGFkYXRhOiAobnVsbCkKLQotZXJyb3JDb2RlOiA4Ci1tZXRhZGF0YTogKG51
bGwpCi0KLWVycm9yQ29kZTogMAotbWV0YWRhdGE6Ci0gIG1vZGlmaWNhdGlvblRpbWU6IChleGlz
dHMpCi0gIHNpemU6IDQKLQotZXJyb3JDb2RlOiAwCi1tZXRhZGF0YToKLSAgbW9kaWZpY2F0aW9u
VGltZTogKGV4aXN0cykKLSAgc2l6ZTogMAotCi1lcnJvckNvZGU6IDEKLW1ldGFkYXRhOiAobnVs
bCkKLQotQWxsIHRlc3RzIGhhdmUgZG9uZS4KLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRhLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1l
dGFkYXRhLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDc4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVz
dCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgZmlsZVN5c3RlbU1vZGVsID0gbmV3IFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWw7Ci0KLSAgICB2YXIgdGVzdFN0ZXAgPSBbCi0gICAg
ICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53cml0
ZUZpbGUoIi9ob2dlIiwgImZ1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQot
ICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2Rl
bC5yZXF1ZXN0TWV0YWRhdGEobmV3IEluc3BlY3RvclRlc3QuTW9ja0VudHJ5KCJJbnZhbGlkVVJM
IiksIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVy
cm9yQ29kZSwgbWV0YWRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1ldGFkYXRhKTsKLSAgICAgICAg
ICAgIGZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0TWV0YWRhdGEobmV3IEluc3BlY3RvclRlc3QuTW9j
a0VudHJ5KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9JbnZhbGlkVHlwZSIpLCB0
ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNv
ZGUsIG1ldGFkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBN
ZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBtZXRhZGF0YSk7Ci0gICAgICAgICAgICBm
aWxlU3lzdGVtTW9kZWwucmVxdWVzdE1ldGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRy
eSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiKSwgdGVz
dFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
LCBtZXRhZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0
YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9waXlvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBm
aWxlU3lzdGVtTW9kZWwucmVxdWVzdE1ldGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRy
eSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L3BpeW8iKSwgdGVz
dFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
LCBtZXRhZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0
YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgZmls
ZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnko
ImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iKSwgdGVzdFN0
ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBt
ZXRhZGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRh
dGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgZmlsZVN5
c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkoImZp
bGVzeXN0ZW06aHR0cDovL2V4YW1wbGUuY29tL3RlbXBvcmFyeS9iYXIiKSwgdGVzdFN0ZXAuc2hp
ZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5z
aGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIp
OwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgfQot
ICAgIF07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlm
dCgpKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cD5UZXN0cyByZXF1ZXN0TWV0
YWRhdGEgY29tbWFuZC48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9kZWxldGUtZW50cnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotVGVzdHMgZGVsZXRlRW50cnkg
Y29tbWFuZC4KLQotZXJyb3JDb2RlOiAyCi1lcnJvckNvZGU6IDgKLWVycm9yQ29kZTogMAotZXJy
b3JDb2RlOiAwCi1lcnJvckNvZGU6IDAKLWVycm9yQ29kZTogMQotYmFja2VuZFJvb3RFbnRyeTog
KG51bGwpCi0KLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5
c3RlbS9kZWxldGUtZW50cnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5odG1sCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0
ZS1lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgzICswLDAgQEAKLTwhRE9DVFlQRSBo
dG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3Jj
PSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3Rl
bS10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJET01Db250ZW50TG9hZGVkIiwgcnVuVGVzdCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2
YXIgZmlsZVN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWw7Ci0K
LSAgICB2YXIgdGVzdFN0ZXAgPSBbCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVGaWxlKCIvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0
KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9mdWdhIiwgdGVzdFN0ZXAuc2hp
ZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZpbGUoIi9mdWdhL3BpeW8iLCB0ZXN0U3RlcC5z
aGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvZm9vIiwgdGVzdFN0ZXAu
c2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX2RlbGV0ZUVudHJ5KCJJbnZhbGlkVVJMIiwgdGVz
dFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2Rl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JD
b2RlOiAiICsgZXJyb3JDb2RlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fZGVsZXRl
RW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL0ludmFsaWRUeXBlL2Z1Z2Ei
LCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJv
ckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJl
cnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9k
ZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hv
Z2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbihl
cnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVs
Ll9kZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5
L2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
bihlcnJvckNvZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1v
ZGVsLl9kZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9y
YXJ5LyIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9u
KGVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9k
ZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBv
cmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9u
KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFj
a2VuZFJvb3RFbnRyeSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
OwotICAgICAgICB9Ci0gICAgXTsKLQotICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVt
KHRlc3RTdGVwLnNoaWZ0KCkpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPlRl
c3RzIGRlbGV0ZUVudHJ5IGNvbW1hbmQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0
b3J5LXRyZWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMyICswLDAgQEAKLVRl
c3RzIGRpcmVjdG9yeSB0cmVlIG9uIEZpbGVTeXN0ZW1WaWV3LgotCi1bZGlyZWN0b3J5IHRyZWUg
bm9kZV0KLWV4cGFuZGVkOiB0cnVlCi1lbnRyeTogKG51bGwpCi0jY2hpbGRyZW46IDEKLSAgW2Rp
cmVjdG9yeSB0cmVlIG5vZGVdCi0gIGV4cGFuZGVkOiB0cnVlCi0gIGVudHJ5OiBmaWxlc3lzdGVt
Omh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvCi0gICNjaGlsZHJlbjogMQotICAgIFtk
aXJlY3RvcnkgdHJlZSBub2RlXQotICAgIGV4cGFuZGVkOiBmYWxzZQotICAgIGVudHJ5OiBmaWxl
c3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZQotICAgICNjaGlsZHJl
bjogMAotCi1bZGlyZWN0b3J5IHRyZWUgbm9kZV0KLWV4cGFuZGVkOiB0cnVlCi1lbnRyeTogKG51
bGwpCi0jY2hpbGRyZW46IDEKLSAgW2RpcmVjdG9yeSB0cmVlIG5vZGVdCi0gIGV4cGFuZGVkOiB0
cnVlCi0gIGVudHJ5OiBmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3Jhcnkv
Ci0gICNjaGlsZHJlbjogMQotICAgIFtkaXJlY3RvcnkgdHJlZSBub2RlXQotICAgIGV4cGFuZGVk
OiB0cnVlCi0gICAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBv
cmFyeS9ob2dlCi0gICAgI2NoaWxkcmVuOiAxCi0gICAgICBbZGlyZWN0b3J5IHRyZWUgbm9kZV0K
LSAgICAgIGV4cGFuZGVkOiBmYWxzZQotICAgICAgZW50cnk6IGZpbGVzeXN0ZW06aHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL2Z1Z2EKLSAgICAgICNjaGlsZHJlbjogMAotCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9y
eS10cmVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9kaXJlY3RvcnktdHJlZS5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01D
b250ZW50TG9hZGVkIiwgcnVuVGVzdCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgcmVz
b3VyY2VzUGFuZWwgPSBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKLSAgICB2
YXIgZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudCA9IHJlc291cmNlc1BhbmVsLmZpbGVTeXN0ZW1M
aXN0VHJlZUVsZW1lbnQ7Ci0gICAgaWYgKCFmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50KSB7Ci0g
ICAgICAgIGZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1MaXN0VHJlZUVsZW1lbnQocmVzb3VyY2VzUGFuZWwpOwotICAgICAgICByZXNvdXJjZXNQ
YW5lbC5maWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50ID0gZmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVu
dDsKLSAgICAgICAgcmVzb3VyY2VzUGFuZWwuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQoZmlsZVN5
c3RlbUxpc3RUcmVlRWxlbWVudCk7Ci0gICAgfQotCi0gICAgdmFyIGZpbGVTeXN0ZW1JdGVtID0g
bnVsbDsKLSAgICB2YXIgZmlsZVN5c3RlbVZpZXcgPSBudWxsOwotICAgIHZhciBkaXJlY3RvcnlU
cmVlID0gbnVsbDsKLQotICAgIHZhciByZXF1ZXN0c0xlZnQgPSAwOwotICAgIHZhciB0ZXN0U3Rl
cCA9IFsKLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAg
ICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZS9mdWdhIiwgdGVzdFN0ZXAuc2hpZnQoKSk7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZpbGUoIi9ob2dlL2Z1Z2EvcGl5byIsIHRlc3RTdGVwLnNo
aWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSwgIl9maWxlU3lzdGVtQWRkZWQiLCB0ZXN0U3RlcC5z
aGlmdCgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50Ll9y
ZWZyZXNoRmlsZVN5c3RlbSgpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGV2ZW50
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAiZmlsZXN5
c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5IikKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIGZpbGVTeXN0ZW1JdGVtID0gZmlsZVN5c3RlbUxpc3RUcmVl
RWxlbWVudC5fZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1lKCJmaWxlc3lzdGVtOmh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkiKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLCAiX2RpcmVj
dG9yeUNvbnRlbnRSZWNlaXZlZCIsIHRlc3RTdGVwLnNoaWZ0KCksIGZhbHNlKTsKLSAgICAgICAg
ICAgIGZpbGVTeXN0ZW1JdGVtLnNlbGVjdCgpOwotICAgICAgICAgICAgZmlsZVN5c3RlbVZpZXcg
PSBmaWxlU3lzdGVtSXRlbS5fZmlsZVN5c3RlbVZpZXc7Ci0gICAgICAgICAgICBkaXJlY3RvcnlU
cmVlID0gZmlsZVN5c3RlbVZpZXcuX2RpcmVjdG9yeVRyZWU7Ci0gICAgICAgIH0sCi0KLSAgICAg
ICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkdW1wRGlyZWN0b3J5VHJlZShkaXJlY3RvcnlU
cmVlKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLQotICAgICAg
ICAgICAgZnVuY3Rpb24gcmVxdWVzdFNlbnQoKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICsrcmVxdWVzdHNMZWZ0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUs
ICJfZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkIiwgdGVzdFN0ZXAuc2hpZnQoKSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1Nb2RlbC5wcm90b3R5cGUsICJyZXF1ZXN0RGlyZWN0b3J5Q29udGVudCIsIHJlcXVlc3RTZW50
LCB0cnVlKTsKLQotICAgICAgICAgICAgZGlyZWN0b3J5VHJlZS5jaGlsZHJlblswXS5leHBhbmRS
ZWN1cnNpdmVseSgpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgaWYgKC0tcmVxdWVzdHNMZWZ0KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGR1bXBEaXJlY3RvcnlUcmVlKGRpcmVjdG9yeVRyZWUpOwotCi0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAg
fSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgIH0KLSAgICBdOwotCi0gICAgSW5zcGVjdG9y
VGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci0KLSAgICBmdW5jdGlvbiBk
dW1wRGlyZWN0b3J5VHJlZSh0cmVlTm9kZSwgaW5kZW50KQotICAgIHsKLSAgICAgICAgaW5kZW50
ID0gaW5kZW50IHx8ICIiOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChpbmRlbnQg
KyAiW2RpcmVjdG9yeSB0cmVlIG5vZGVdIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KGluZGVudCArICJleHBhbmRlZDogIiArIHRyZWVOb2RlLmV4cGFuZGVkKTsKLSAgICAgICAg
aWYgKHRyZWVOb2RlLl9lbnRyeSkKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KGluZGVudCArICJlbnRyeTogIiArIHRyZWVOb2RlLl9lbnRyeS51cmwpCi0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGluZGVudCArICJlbnRyeTogKG51
bGwpIikKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoaW5kZW50ICsgIiNjaGlsZHJl
bjogIiArIHRyZWVOb2RlLmNoaWxkcmVuLmxlbmd0aCk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0cmVlTm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGR1bXBE
aXJlY3RvcnlUcmVlKHRyZWVOb2RlLmNoaWxkcmVuW2ldLCBpbmRlbnQgKyAiICAiKTsKLSAgICB9
Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHA+VGVzdHMgZGlyZWN0b3J5IHRyZWUg
b24gRmlsZVN5c3RlbVZpZXcuPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9maWxlc3lzdGVtLXRlc3QuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9m
aWxlc3lzdGVtLXRlc3QuanMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE5NyArMCwwIEBACi12YXIgaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVzdCA9IGZ1
bmN0aW9uKCkKLXsKLSAgICB2YXIgbmV4dENhbGxiYWNrSWQgPSAwOwotICAgIHZhciBjYWxsYmFj
a3MgPSB7fTsKLQotICAgIEluc3BlY3RvclRlc3QuTW9ja0VudHJ5ID0gZnVuY3Rpb24odXJsKQot
ICAgIHsKLSAgICAgICAgdGhpcy51cmwgPSB1cmw7Ci0gICAgfQotCi0gICAgSW5zcGVjdG9yVGVz
dC5yZWdpc3RlckNhbGxiYWNrID0gZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB2
YXIgY2FsbGJhY2tJZCA9ICsrbmV4dENhbGxiYWNrSWQ7Ci0gICAgICAgIGNhbGxiYWNrc1tjYWxs
YmFja0lkXSA9IGNhbGxiYWNrOwotICAgICAgICByZXR1cm4gImRpc3BhdGNoQ2FsbGJhY2suYmlu
ZChudWxsLCAiICsgY2FsbGJhY2tJZCArICIpIjsKLSAgICB9OwotCi0gICAgSW5zcGVjdG9yVGVz
dC5kaXNwYXRjaENhbGxiYWNrID0gZnVuY3Rpb24ocGFja2VkQXJncykKLSAgICB7Ci0gICAgICAg
IHZhciBhcmdzID0gSlNPTi5wYXJzZShwYWNrZWRBcmdzKTsKLSAgICAgICAgdmFyIGNhbGxiYWNr
SWQgPSBhcmdzLnNoaWZ0KCk7Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IGNhbGxiYWNrc1tjYWxs
YmFja0lkXTsKLSAgICAgICAgZGVsZXRlIGNhbGxiYWNrc1tjYWxsYmFja0lkXTsKLSAgICAgICAg
Y2FsbGJhY2suYXBwbHkobnVsbCwgYXJncyk7Ci0gICAgfTsKLQotICAgIEluc3BlY3RvclRlc3Qu
Y3JlYXRlRGlyZWN0b3J5ID0gZnVuY3Rpb24ocGF0aCwgY2FsbGJhY2spCi0gICAgewotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVEaXJlY3RvcnkoZXNjYXBlKFwi
IiArIGVzY2FwZShwYXRoKSArICJcIiksICIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJh
Y2soY2FsbGJhY2spICsgIikiKTsKLSAgICB9OwotCi0gICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVG
aWxlID0gZnVuY3Rpb24ocGF0aCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVGaWxlKHVuZXNjYXBlKFwiIiArIGVzY2FwZShwYXRo
KSArICJcIiksICIgKyBJbnNwZWN0b3JUZXN0LnJlZ2lzdGVyQ2FsbGJhY2soY2FsbGJhY2spICsg
IikiKTsKLSAgICB9OwotCi0gICAgSW5zcGVjdG9yVGVzdC53cml0ZUZpbGUgPSBmdW5jdGlvbihw
YXRoLCBjb250ZW50LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoIndyaXRlRmlsZSh1bmVzY2FwZShcIiIgKyBlc2NhcGUocGF0aCkgKyAiXCIp
LCB1bmVzY2FwZShcIiIgKyBlc2NhcGUoY29udGVudCkgKyAiXCIpLCAiICsgSW5zcGVjdG9yVGVz
dC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrKSArICIpIik7Ci0gICAgfTsKLQotICAgIEluc3Bl
Y3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtID0gZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjbGVhckZpbGVTeXN0ZW0oIiArIElu
c3BlY3RvclRlc3QucmVnaXN0ZXJDYWxsYmFjayhjYWxsYmFjaykgKyAiKSIpOwotICAgIH07Ci0K
LSAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQgPSBmdW5j
dGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCi0gICAgewotICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAiICsgZXJyb3JDb2RlKTsKLSAgICAgICAgaWYg
KGJhY2tlbmRSb290RW50cnkpCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
YmFja2VuZFJvb3RFbnRyeS51cmw6ICIgKyBiYWNrZW5kUm9vdEVudHJ5LnVybCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJiYWNrZW5kUm9vdEVu
dHJ5OiAobnVsbCkiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwotICAg
IH07Ci0KLSAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3Vs
dCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKLSAgICB7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotCi0gICAgICAgIGlm
ICghZW50cmllcykgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImVudHJp
ZXM6IChudWxsKSIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoImVudHJpZXM6Iik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmll
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICIg
KyBpICsgIjoiKTsKLSAgICAgICAgICBmb3IgKHZhciBqIGluIGVudHJpZXNbaV0pCi0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgICIgKyBqICsgIjogIiArIGVudHJpZXNb
aV1bal0pOwotICAgICAgICB9Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsK
LSAgICB9OwotCi0gICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0ID0g
ZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUpOwotICAgICAgICBpZiAobWV0
YWRhdGEpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJtZXRhZGF0YToi
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgIG1vZGlmaWNhdGlvblRp
bWU6ICIgKyAoIm1vZGlmaWNhdGlvblRpbWUiIGluIG1ldGFkYXRhID8gIihleGlzdHMpIiA6ICIo
bnVsbCkiKSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICBzaXplOiAi
ICsgKCJzaXplIiBpbiBtZXRhZGF0YSA/IG1ldGFkYXRhLnNpemUgOiAiKG51bGwpIikpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIm1ldGFk
YXRhOiAobnVsbCkiKTsKLSAgICAgICAgfQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiIik7Ci0gICAgfTsKLQotICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVDb250ZW50UmVxdWVz
dFJlc3VsdCA9IGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKLSAgICB7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUp
OwotCi0gICAgICAgIGlmIChjb250ZW50KQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoImNvbnRlbnQ6IFwiIiArIGNvbnRlbnQgKyAiXCIiKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImNvbnRlbnQ6IChudWxsKSIpOwotCi0g
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJjaGFyc2V0OiAiICsgY2hhcnNldCk7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKLSAgICB9OwotfQotCi1mdW5jdGlv
biBkaXNwYXRjaENhbGxiYWNrKCkKLXsKLSAgICB2YXIgYXJncyA9IEpTT04uc3RyaW5naWZ5KEFy
cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOwotICAgIHRlc3RSdW5uZXIuZXZh
bHVhdGVJbldlYkluc3BlY3Rvcig5OTksICJJbnNwZWN0b3JUZXN0LmRpc3BhdGNoQ2FsbGJhY2so
dW5lc2NhcGUoXCIiICsgZXNjYXBlKGFyZ3MpICsgIlwiKSkiKTsKLX0KLQotZnVuY3Rpb24gY3Jl
YXRlRGlyZWN0b3J5KHBhdGgsIGNhbGxiYWNrKQotewotICAgIHdlYmtpdFJlcXVlc3RGaWxlU3lz
dGVtKFRFTVBPUkFSWSwgMSwgZGlkR2V0RmlsZVN5c3RlbSk7Ci0KLSAgICBmdW5jdGlvbiBkaWRH
ZXRGaWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgewotICAgICAgICBmaWxlU3lzdGVtLnJvb3Qu
Z2V0RGlyZWN0b3J5KHBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGNy
ZWF0ZUZpbGUocGF0aCwgY2FsbGJhY2spCi17Ci0gICAgd2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0o
VEVNUE9SQVJZLCAxLCBkaWRHZXRGaWxlU3lzdGVtKTsKLQotICAgIGZ1bmN0aW9uIGRpZEdldEZp
bGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAgICB7Ci0gICAgICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRG
aWxlKHBhdGgsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7Ci0gICAgICAgICAgICBj
YWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHdyaXRlRmlsZShw
YXRoLCBjb250ZW50LCBjYWxsYmFjaykKLXsKLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShU
RU1QT1JBUlksIDEsIGRpZEdldEZpbGVTeXN0ZW0pOwotCi0gICAgZnVuY3Rpb24gZGlkR2V0Rmls
ZVN5c3RlbShmaWxlU3lzdGVtKQotICAgIHsKLSAgICAgICAgZmlsZVN5c3RlbS5yb290LmdldEZp
bGUocGF0aCwge2NyZWF0ZTp0cnVlfSwgZGlkR2V0RmlsZUVudHJ5KTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBkaWRHZXRGaWxlRW50cnkoZmlsZUVudHJ5KQotICAgIHsKLSAgICAgICAgZmlsZUVu
dHJ5LmNyZWF0ZVdyaXRlcihkaWRHZXRXcml0ZXIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRp
ZEdldFdyaXRlcih3cml0ZXIpCi0gICAgewotICAgICAgICB3cml0ZXIud3JpdGUobmV3IEJsb2Io
W2NvbnRlbnRdKSk7Ci0gICAgICAgIHdyaXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBpZiAod3JpdGVyLnJlYWR5U3RhdGUgPT09IHdyaXRlci5ET05FKQotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi1mdW5jdGlvbiBjbGVh
ckZpbGVTeXN0ZW0oY2FsbGJhY2spCi17Ci0gICAgd2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3Rl
bVVSTCgiZmlsZXN5c3RlbToiICsgbG9jYXRpb24ub3JpZ2luICsgIi90ZW1wb3JhcnkvIiwgZGlk
R2V0Um9vdCwgb25FcnJvcik7Ci0KLSAgICBmdW5jdGlvbiBkaWRHZXRSb290KHJvb3QpCi0gICAg
ewotICAgICAgICB2YXIgcmVhZGVyID0gcm9vdC5jcmVhdGVSZWFkZXIoKTsKLSAgICAgICAgcmVh
ZGVyLnJlYWRFbnRyaWVzKGRpZFJlYWRFbnRyaWVzKTsKLQotICAgICAgICB2YXIgZW50cmllcyA9
IFtdOwotICAgICAgICBmdW5jdGlvbiBkaWRSZWFkRW50cmllcyhuZXdFbnRyaWVzKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobmV3RW50cmllcy5sZW5ndGggPT09IDApIHsKLSAgICAgICAg
ICAgICAgICByZW1vdmVBbGwoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0VudHJpZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKG5ld0VudHJpZXNbaV0pOwotICAgICAg
ICAgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGRpZFJlYWRFbnRyaWVzKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIHJlbW92ZUFsbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChl
bnRyaWVzLmxlbmd0aCA9PT0gMCkgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGVudHJ5
ID0gZW50cmllcy5zaGlmdCgpOwotICAgICAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KQot
ICAgICAgICAgICAgICAgIGVudHJ5LnJlbW92ZVJlY3Vyc2l2ZWx5KHJlbW92ZUFsbCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW50cnkucmVtb3ZlKHJlbW92ZUFsbCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvbkVycm9yKCkKLSAgICB7Ci0gICAgICAg
IC8vIEFzc3VtZSB0aGUgRmlsZVN5c3RlbSBpcyB1bmluaXRpYWxpemVkIGFuZCB0aGVyZWZvcmUg
ZW1wdHkuCi0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfQotfQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxl
c3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMwICswLDAgQEAKLVRlc3RzIHJlcXVlc3REaXJlY3RvcnlDb250ZW50IGNvbW1h
bmQuCi0KLWVycm9yQ29kZTogMgotZW50cmllczogKG51bGwpCi0KLWVycm9yQ29kZTogOAotZW50
cmllczogKG51bGwpCi0KLWVycm9yQ29kZTogMAotZW50cmllczoKLSAgMDoKLSAgICB1cmw6IGZp
bGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlL3BpeW8uaHRtbAot
ICAgIG5hbWU6IHBpeW8uaHRtbAotICAgIGlzRGlyZWN0b3J5OiBmYWxzZQotICAgIGlzVGV4dEZp
bGU6IHRydWUKLSAgICBtaW1lVHlwZTogdGV4dC9odG1sCi0gICAgcmVzb3VyY2VUeXBlOiBEb2N1
bWVudAotICAxOgotICAgIHVybDogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVt
cG9yYXJ5L2hvZ2UvZnVnYQotICAgIG5hbWU6IGZ1Z2EKLSAgICBpc0RpcmVjdG9yeTogdHJ1ZQot
Ci1lcnJvckNvZGU6IDEKLWVudHJpZXM6IChudWxsKQotCi1lcnJvckNvZGU6IDIKLWVudHJpZXM6
IChudWxsKQotCi1BbGwgdGVzdHMgaGF2ZSBkb25lLgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVj
dG9yeS1jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotPHNjcmlw
dCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJmaWxl
c3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsKLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIHZhciBmaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bDsKLQotICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZURpcmVjdG9yeSgiL2hvZ2UiLCB0ZXN0
U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIvaG9nZS9mdWdh
IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZpbGUoIi9ob2dlL3Bp
eW8uaHRtbCIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0
aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RGly
ZWN0b3J5Q29udGVudCgiSW52YWxpZFVSTCIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9
LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKLSAgICAgICAgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRGlyZWN0b3J5Q29udGVudFJlcXVlc3RSZXN1bHQo
ZXJyb3JDb2RlLCBlbnRyaWVzKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVz
dERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL0ludmFs
aWRUeXBlLyIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0
aW9uKGVycm9yQ29kZSwgZW50cmllcykKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wRGlyZWN0b3J5Q29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBlbnRyaWVz
KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQo
ImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiwgdGVzdFN0
ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBl
bnRyaWVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3Rv
cnlDb250ZW50UmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIGVudHJpZXMpOwotICAgICAgICAgICAg
ZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAg
ICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgZW50cmllcykKLSAgICAgICAg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRGlyZWN0b3J5Q29udGVudFJlcXVlc3RS
ZXN1bHQoZXJyb3JDb2RlLCBlbnRyaWVzKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5f
cmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1wbGUuY29tL3Rl
bXBvcmFyeS8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5j
dGlvbihlcnJvckNvZGUsIGVudHJpZXMpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVt
cERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgZW50cmllcyk7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsK
LSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBbGwgdGVzdHMgaGF2ZSBkb25lLiIpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICAgICAgfQotICAgIF07Ci0K
LSAgICBJbnNwZWN0b3JUZXN0LmNsZWFyRmlsZVN5c3RlbSh0ZXN0U3RlcC5zaGlmdCgpKTsKLX0K
LTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cD5UZXN0cyByZXF1ZXN0RGlyZWN0b3J5Q29u
dGVudCBjb21tYW5kLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Zp
bGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVl
c3QtZmlsZS1jb250ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyOCArMCww
IEBACi1UZXN0cyByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC4KLQotZXJyb3JDb2RlOiAyCi1j
b250ZW50OiAobnVsbCkKLWNoYXJzZXQ6IHVuZGVmaW5lZAotCi1lcnJvckNvZGU6IDgKLWNvbnRl
bnQ6IChudWxsKQotY2hhcnNldDogdW5kZWZpbmVkCi0KLWVycm9yQ29kZTogMAotY29udGVudDog
IlBBU1MiCi1jaGFyc2V0OiBVVEYtOAotCi1lcnJvckNvZGU6IDExCi1jb250ZW50OiAobnVsbCkK
LWNoYXJzZXQ6IHVuZGVmaW5lZAotCi1lcnJvckNvZGU6IDEKLWNvbnRlbnQ6IChudWxsKQotY2hh
cnNldDogdW5kZWZpbmVkCi0KLWVycm9yQ29kZTogMgotY29udGVudDogKG51bGwpCi1jaGFyc2V0
OiB1bmRlZmluZWQKLQotQWxsIHRlc3RzIGhhdmUgZG9uZS4KLQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVu
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLTxzY3JpcHQgc3JjPSIuLi9p
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iZmlsZXN5c3RlbS10ZXN0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01D
b250ZW50TG9hZGVkIiwgcnVuVGVzdCk7Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgZmls
ZVN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWw7Ci0KLSAgICB2
YXIgdGVzdFN0ZXAgPSBbCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVEaXJlY3RvcnkoIi9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQo
KSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LndyaXRlRmlsZSgiL2hvZ2UvZnVnYS50eHQiLCAicGlQQVNTeW8i
LCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50
KCJJbnZhbGlkVVJMIiwgdHJ1ZSwgMiwgNiwgIlVURi04IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJl
cXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAgIGZp
bGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9JbnZhbGlkVHlwZS9ob2dlL2Z1Z2EudHh0IiwgdHJ1ZSwgMiwgNiwgIlVURi04
IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJy
b3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBj
aGFyc2V0KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVDb250ZW50
KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wb3JhcnkvaG9nZS9mdWdhLnR4
dCIsIHRydWUsIDIsIDYsICJVVEYtOCIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAot
Ci0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKLSAgICAgICAg
ewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0
KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9k
ZWwuX3JlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAv
dGVtcG9yYXJ5L2hvZ2UiLCB0cnVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVw
LnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29u
dGVudCwgY2hhcnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
RmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCk7Ci0g
ICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3Rl
bTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIsIHRydWUsIHVuZGVmaW5lZCwg
dW5kZWZpbmVkLCAiIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2Rl
LCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVz
dEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly9leGFtcGxlLmNvbS90ZW1wb3JhcnkvZm9v
LnR4dCIsIHRydWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAiIiwgdGVzdFN0ZXAuc2hpZnQoKSk7
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFy
c2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVu
dFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAg
ICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIkFsbCB0ZXN0cyBoYXZlIGRvbmUuIik7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB9Ci0gICAgXTsKLQotICAgIElu
c3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotfQotPC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPlRlc3RzIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5k
LjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0v
cmVxdWVzdC1maWxlc3lzdGVtLXJvb3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtZmls
ZXN5c3RlbS1yb290LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMCwwIEBA
Ci1UZXN0cyByZXF1ZXN0RmlsZVN5c3RlbVJvb3QgY29tbWFuZC4KLQotZXJyb3JDb2RlOiAwCi1i
YWNrZW5kUm9vdEVudHJ5LnVybDogZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVt
cG9yYXJ5LwotCi1lcnJvckNvZGU6IDgKLWJhY2tlbmRSb290RW50cnk6IChudWxsKQotCi1lcnJv
ckNvZGU6IDIKLWJhY2tlbmRSb290RW50cnk6IChudWxsKQotCi1BbGwgdGVzdHMgaGF2ZSBkb25l
LgotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
cXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1s
CShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL3JlcXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hh
cnNldD0iVVRGLTgiPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJmaWxlc3lzdGVtLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4K
LWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBydW5UZXN0KTsK
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBmaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbDsKLQotICAgIHZhciB0ZXN0U3RlcCA9IFsKLSAgICAgICAg
ZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIEFQSSB0byBk
ZWxldGUgYSBGaWxlU3lzdGVtIGNvbXBsZXRlbHkgYW5kIHRlc3QgZ2V0RmlsZVN5c3RlbVJvb3Qg
Zm9yCi0gICAgICAgICAgICAvLyB1bmluaXRpYWxpemVkIEZpbGVTeXN0ZW0uCi0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNyZWF0ZUZpbGUoIi9ob2dlIiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0g
ICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBm
aWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4
MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAg
ICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKLSAgICAgICAgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RSZXF1ZXN0UmVzdWx0KGVy
cm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwu
X3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZpenpidXp6
IiwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJy
b3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBGaWxlU3lzdGVtUm9vdFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5k
Um9vdEVudHJ5KTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0
ZW1Sb290KCJodHRwOi8vZXhhbXBsZS5jb20iLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQo
KSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBiYWNrZW5kUm9v
dEVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlU3lz
dGVtUm9vdFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KTsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwot
ICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFsbCB0ZXN0cyBoYXZlIGRvbmUuIik7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICB9Ci0gICAgXTsKLQot
ICAgIEluc3BlY3RvclRlc3QuY2xlYXJGaWxlU3lzdGVtKHRlc3RTdGVwLnNoaWZ0KCkpOwotfQot
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPlRlc3RzIHJlcXVlc3RGaWxlU3lzdGVtUm9v
dCBjb21tYW5kLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3Rl
bS9yZXF1ZXN0LW1ldGFkYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LW1ldGFkYXRh
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMyArMCwwIEBACi1UZXN0cyByZXF1
ZXN0TWV0YWRhdGEgY29tbWFuZC4KLQotZXJyb3JDb2RlOiAyCi1tZXRhZGF0YTogKG51bGwpCi0K
LWVycm9yQ29kZTogOAotbWV0YWRhdGE6IChudWxsKQotCi1lcnJvckNvZGU6IDAKLW1ldGFkYXRh
OgotICBtb2RpZmljYXRpb25UaW1lOiAoZXhpc3RzKQotICBzaXplOiA0Ci0KLWVycm9yQ29kZTog
MAotbWV0YWRhdGE6Ci0gIG1vZGlmaWNhdGlvblRpbWU6IChleGlzdHMpCi0gIHNpemU6IDAKLQot
ZXJyb3JDb2RlOiAxCi1tZXRhZGF0YTogKG51bGwpCi0KLUFsbCB0ZXN0cyBoYXZlIGRvbmUuCi0K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVz
dC1tZXRhZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCShyZXZpc2lvbiAxNTY2OTEp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3Qt
bWV0YWRhdGEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJVVEYtOCI+Ci08c2NyaXB0IHNy
Yz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImZpbGVzeXN0
ZW0tdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
dmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsOwot
Ci0gICAgdmFyIHRlc3RTdGVwID0gWwotICAgICAgICBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3Qud3JpdGVGaWxlKCIvaG9nZSIsICJmdWdhIiwgdGVzdFN0
ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24oKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwucmVxdWVzdE1ldGFkYXRhKG5ldyBJbnNwZWN0
b3JUZXN0Lk1vY2tFbnRyeSgiSW52YWxpZFVSTCIpLCB0ZXN0U3RlcC5zaGlmdCgpKTsKLSAgICAg
ICAgfSwKLQotICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgICAgICB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJy
b3JDb2RlLCBtZXRhZGF0YSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwucmVxdWVzdE1l
dGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3
LjAuMC4xOjgwMDAvSW52YWxpZFR5cGUiKSwgdGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0s
Ci0KLSAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKLSAgICAgICAgewotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29k
ZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0
YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXBvcmFyeS9ob2dlIiksIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAot
Ci0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUs
IG1ldGFkYXRhKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlRGlyZWN0b3J5KCIv
cGl5byIsIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9u
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRhZGF0
YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXBvcmFyeS9waXlvIiksIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAot
Ci0gICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUs
IG1ldGFkYXRhKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0TWV0YWRhdGEo
bmV3IEluc3BlY3RvclRlc3QuTW9ja0VudHJ5KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC90ZW1wb3JhcnkvZm9vIiksIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0g
ICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUsIG1l
dGFkYXRhKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5yZXF1ZXN0TWV0YWRhdGEobmV3
IEluc3BlY3RvclRlc3QuTW9ja0VudHJ5KCJmaWxlc3lzdGVtOmh0dHA6Ly9leGFtcGxlLmNvbS90
ZW1wb3JhcnkvYmFyIiksIHRlc3RTdGVwLnNoaWZ0KCkpOwotICAgICAgICB9LAotCi0gICAgICAg
IGZ1bmN0aW9uKGVycm9yQ29kZSkKLSAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci0gICAgICAgIH0sCi0KLSAgICAg
ICAgZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiQWxsIHRlc3RzIGhhdmUgZG9uZS4iKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0KCk7Ci0gICAgICAgIH0KLSAgICBdOwotCi0gICAgSW5zcGVjdG9yVGVzdC5j
bGVhckZpbGVTeXN0ZW0odGVzdFN0ZXAuc2hpZnQoKSk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPHA+VGVzdHMgcmVxdWVzdE1ldGFkYXRhIGNvbW1hbmQuPC9wPgotPC9ib2R5Pgot
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9maWxlc3lzdGVt
LWlmcmFtZS1mcm9tLXJlbW90ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9maWxlc3lzdGVtLWlmcmFtZS1mcm9tLXJlbW90ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IGZpbGVzeXN0
ZW06aHR0cDovL2xvY2FsaG9zdDo4MDAwL3RlbXBvcmFyeS9wYWdlLmh0bWwgY3JlYXRlZC4KLUNP
TlNPTEUgTUVTU0FHRTogTm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogZmlsZXN5
c3RlbTpodHRwOi8vbG9jYWxob3N0OjgwMDAvdGVtcG9yYXJ5L3BhZ2UuaHRtbAotVGhpcyB0ZXN0
IGlzIHRvIHNlZSBpZiBhIHJlbW90ZSBmaWxlIGNhbiBpbmNsdWRlIGEgbG9jYWwgcGFnZSB2aWEg
YSBmaWxlc3lzdGVtOiBVUkkgaW4gYW4gaUZyYW1lLgotCi1UZXN0IFBhc3NlZC4gTG9jYWwgcGFn
ZSBub3QgcmVtb3RlbHkgbG9hZGVkIGludG8gaUZyYW1lLgotICAKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0t
aWZyYW1lLWZyb20tcmVtb3RlLmh0bWwJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCwwIEBACi08aHRtbD4gPGhlYWQ+Ci0gICAgPHNjcmlw
dD4KLSAgICAgICAgZnVuY3Rpb24gZG9uZSgpIHsKLSAgICAgICAgICAgIHZhciBwYWdlTG9jYXRp
b24gPSAiZmlsZXN5c3RlbTpodHRwOi8vbG9jYWxob3N0OjgwMDAvdGVtcG9yYXJ5L3BhZ2UuaHRt
bCI7Ci0gICAgICAgICAgICB2YXIgbG9jYWxJZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgICAgICBsb2NhbElmcmFtZUVsZW1lbnQuc2V0QXR0
cmlidXRlKCJpZCIsICJteUZyYW1lIik7Ci0gICAgICAgICAgICBsb2NhbElmcmFtZUVsZW1lbnQu
c2V0QXR0cmlidXRlKCJzcmMiLCBwYWdlTG9jYXRpb24pOwotICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChsb2NhbElmcmFtZUVsZW1lbnQpOwotCi0gICAgICAgICAgICB2YXIg
cmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwotICAgICAgICAgICAg
dmFyIG15RnJhbWVEb2N1bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteUZyYW1lIiku
Y29udGVudERvY3VtZW50OwotICAgICAgICAgICAgaWYgKG15RnJhbWVEb2N1bWVudCkKLSAgICAg
ICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlRlc3QgRmFpbGVkOiBMb2NhbCBwYWdlIHJl
bW90ZWx5IGxvYWRlZCBpbnRvIGlGcmFtZS4iOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiVGVzdCBQYXNzZWQuIExvY2FsIHBhZ2Ugbm90IHJl
bW90ZWx5IGxvYWRlZCBpbnRvIGlGcmFtZS4iOwotCi0gICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIHdhaXQgZm9yIHRoZSBpZnJhbWUgdG8gZG8g
aXRzIGFzeW5jIHdvcmsuCi0gICAgICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMDApOwotICAg
ICAgICB9Ci0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxkaXYgaWQ9ImRp
djAiPgotICAgICAgICBUaGlzIHRlc3QgaXMgdG8gc2VlIGlmIGEgcmVtb3RlIGZpbGUgY2FuIGlu
Y2x1ZGUgYSBsb2NhbCBwYWdlIHZpYSBhIGZpbGVzeXN0ZW06IFVSSSBpbiBhbiBpRnJhbWUuCi0g
ICAgPC9kaXY+Ci0gICAgPGJyPgotICAgIDxkaXYgaWQ9InJlc3VsdCI+Ci0gICAgICAgIFRlc3Qg
bm90IHJ1biBjb3JyZWN0bHkuCi0gICAgPC9kaXY+Ci0gICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3JlYXRlLWZpbGVzeXN0ZW0tZmlsZS5o
dG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9m
aWxlc3lzdGVtLXVybHMtbWF0Y2gtc2VsZi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZmlsZXN5
c3RlbS11cmxzLW1hdGNoLXNlbGYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY2OTEpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxl
c3lzdGVtLXVybHMtbWF0Y2gtc2VsZi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
MiArMCwwIEBACi1BTEVSVDogUEFTUyAoMS8xKSEKLWZpbGVzeXN0ZW06IFVSTHMgYXJlIHNhbWUt
b3JpZ2luIHdpdGggdGhlIHBhZ2UgaW4gd2hpY2ggdGhleSB3ZXJlIGNyZWF0ZWQsIGFuZCBzaG91
bGQgdGhlcmVmb3JlIG1hdGNoIHRoZSAnc2VsZicgc291cmNlIGluIENTUCBkaXJlY3RpdmVzLgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvZmlsZXN5c3RlbS11cmxzLW1hdGNoLXNlbGYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVt
LXVybHMtbWF0Y2gtc2VsZi5odG1sCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9maWxlc3lzdGVtLXVybHMt
bWF0Y2gtc2VsZi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJzY3JpcHQtc3JjICd1bnNhZmUtaW5saW5l
JyAnc2VsZiciPgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPHA+Ci0gICAgICAg
ICAgICBmaWxlc3lzdGVtOiBVUkxzIGFyZSBzYW1lLW9yaWdpbiB3aXRoIHRoZSBwYWdlIGluIHdo
aWNoIHRoZXkgd2VyZQotICAgICAgICAgICAgY3JlYXRlZCwgYW5kIHNob3VsZCB0aGVyZWZvcmUg
bWF0Y2ggdGhlICdzZWxmJyBzb3VyY2UgaW4gQ1NQCi0gICAgICAgICAgICBkaXJlY3RpdmVzLgot
ICAgICAgICA8L3A+Ci0KLSAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZnVuY3Rpb24gcGFzcygpIHsKLSAgICAgICAgICAgICAgICBhbGVydCgi
UEFTUyAoMS8xKSEiKTsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICB3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZ
LCAxMDI0KjEwMjQgLyoxTUIqLywgZnVuY3Rpb24oZnMpIHsKLSAgICAgICAgICAgICAgICBmcy5y
b290LmdldEZpbGUoJ3Bhc3MuanMnLCB7Y3JlYXRlOiB0cnVlfSwgZnVuY3Rpb24oZmlsZUVudHJ5
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIoZnVuY3Rpb24o
ZmlsZVdyaXRlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVdyaXRlci5vbndyaXRl
ZW5kID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY3JpcHQuc3JjID1maWxlRW50cnkudG9VUkwoJ2FwcGxpY2F0aW9uL2phdmFz
Y3JpcHQnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHNjcmlwdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgQmxvYiBhbmQgd3JpdGUgaXQgdG8gcGFzcy5q
cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gbmV3IEJsb2IoWydwYXNzKCk7J10s
IHt0eXBlOiAnYXBwbGljYXRpb24vamF2YXNjcmlwdCd9KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbGVXcml0ZXIud3JpdGUoYik7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwv
Ym9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L2ZpbGVzeXN0ZW0tdXJsLWluLWlmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZmlsZXN5
c3RlbS11cmwtaW4taWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZmlsZXN5c3RlbS11cmwt
aW4taWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICswLDAgQEAKLUFM
RVJUOiBQQVNTICgxLzIpOiBGaWxlIHdyaXR0ZW4KLQotVGhpcyB0ZXN0cyB0aGF0IGZpbGVzeXN0
ZW0gVVJMcyBjcmVhdGVkIGluIGEgc2VjdXJlIGNvbnRleHQgYXJlIHRyZWF0ZWQgYXMgc2VjdXJl
IG9yaWdpbnMuIFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlIGlmcmFtZSByZW5kZXJzIFBBU1MgY29y
cmVjdGx5LCBhbmQgbm8gY29uc29sZSB3YXJuaW5nIGFwcGVhcnMuCi0KLS0tLS0tLS0tCi1GcmFt
ZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JwotLS0tLS0tLS0KLVBBU1MgKDIv
Mik6IEZpbGUgZGlzcGxheWVkCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L21peGVkQ29udGVudC9maWxlc3lzdGVtLXVybC1pbi1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9maWxlc3lzdGVt
LXVybC1pbi1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZmlsZXN5c3RlbS11cmwtaW4taWZyYW1lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxib2R5PgotPGlmcmFtZT48L2lmcmFtZT4KLTxwPgotICBUaGlzIHRlc3RzIHRoYXQgZmls
ZXN5c3RlbSBVUkxzIGNyZWF0ZWQgaW4gYSBzZWN1cmUgY29udGV4dCBhcmUgdHJlYXRlZCBhcwot
ICBzZWN1cmUgb3JpZ2lucy4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGUgaWZyYW1lIHJlbmRlcnMg
UEFTUyBjb3JyZWN0bHksIGFuZCBubwotICBjb25zb2xlIHdhcm5pbmcgYXBwZWFycy4KLTwvcD4K
LQotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWlmIChsb2NhdGlvbi5wcm90b2NvbCAh
PSAnaHR0cHM6JykKLSAgICBsb2NhdGlvbiA9ICdodHRwczovLzEyNy4wLjAuMTo4NDQzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9maWxlc3lzdGVtLXVybC1pbi1pZnJhbWUuaHRtbCc7Ci1lbHNlIHsK
LSAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7Ci0gICAg
aWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfTsKLQotICAg
IC8vIE9wZW5pbmcgYSBmaWxlIHN5c3RlbSB3aXRoIHRlbXBvcmFyeSBzdG9yYWdlCi0gICAgd2lu
ZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgMTAyNCoxMDI0IC8qMU1CKi8s
IGZ1bmN0aW9uKGZzKSB7Ci0gICAgICAgIGZzLnJvb3QuZ2V0RmlsZSgndGVzdC5odG1sJywge2Ny
ZWF0ZTogdHJ1ZX0sIGZ1bmN0aW9uKGZpbGVFbnRyeSkgewotICAgICAgICAgICAgZmlsZUVudHJ5
LmNyZWF0ZVdyaXRlcihmdW5jdGlvbihmaWxlV3JpdGVyKSB7Ci0gICAgICAgICAgICAgICAgZmls
ZVdyaXRlci5vbndyaXRlZW5kID0gZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgICBh
bGVydCgnUEFTUyAoMS8yKTogRmlsZSB3cml0dGVuJyk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
cmFtZS5zcmMgPSBmaWxlRW50cnkudG9VUkwoJ3RleHQvaHRtbCcpOwotICAgICAgICAgICAgICAg
IH07Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgQmxvYiBhbmQgd3JpdGUgaXQg
dG8gbG9nLnR4dC4KLSAgICAgICAgICAgICAgICB2YXIgYiA9IG5ldyBCbG9iKFsnUEFTUyAoMi8y
KTogRmlsZSBkaXNwbGF5ZWQnXSwgeyB0eXBlOiAndGV4dC9odG1sJyB9KTsKLSAgICAgICAgICAg
ICAgICBmaWxlV3JpdGVyLndyaXRlKGIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotfQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxv
Yi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzAsMCBAQAotV2ViU29ja2V0
OiBTZW5kIGEgRmlsZS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1Hb3QgRmlsZVN5
c3RlbSBvYmplY3QuCi1GaWxlIGNyZWF0ZWQuCi1QQVNTIGZpbGVFbnRyeS5pc0ZpbGUgaXMgdHJ1
ZQotV3JvdGUgdG8gZmlsZS4KLUdvdCBGaWxlIG9iamVjdC4KLVBBU1MgUEFTUzogTWVzc2FnZSAj
MC4KLVBBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCi1EZWxldGluZyB0aGUgZmlsZS4K
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1i
bG9iLWZhaWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBXZWJTb2NrZXQgY29ubmVjdGlvbiB0
byAnd3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvJyBmYWlsZWQ6
IEZhaWxlZCB0byBsb2FkIEJsb2I6IGVycm9yIGNvZGUgPSAxCi1XZWJTb2NrZXQgc2hvdWxkIGZh
aWwgdGhlIGNvbm5lY3Rpb24gaWYgaXQgaGFzIGZhaWxlZCB0byByZWFkIGEgQmxvYi4KLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi1Hb3QgRmlsZVN5c3RlbSBvYmplY3QuCi1GaWxlIGNy
ZWF0ZWQuCi1QQVNTIGZpbGVFbnRyeS5pc0ZpbGUgaXMgdHJ1ZQotV3JvdGUgdG8gZmlsZS4KLUdv
dCBGaWxlIG9iamVjdC4KLUZpbGUgZGVsZXRlZC4KLVBBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBp
cyBmYWxzZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2Vu
ZC1maWxlLWJsb2ItZmFpbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC5odG1sCShyZXZpc2lv
biAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjAgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1kZXNjcmlwdGlvbigiV2Vi
U29ja2V0IHNob3VsZCBmYWlsIHRoZSBjb25uZWN0aW9uIGlmIGl0IGhhcyBmYWlsZWQgdG8gcmVh
ZCBhIEJsb2IuIik7Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotZnVuY3Rpb24g
c3RhcnRzV2l0aCh0YXJnZXQsIHByZWZpeCkKLXsKLSAgICByZXR1cm4gdGFyZ2V0LmluZGV4T2Yo
cHJlZml4KSA9PT0gMDsKLX0KLQotdmFyIGZpbGVTeXN0ZW1TaXplID0gMTAyNDsKLXZhciBmaWxl
TmFtZSA9ICJ3ZWJzb2NrZXQtc2VuZC1maWxlLWJsb2ItZmFpbC50eHQiOwotdmFyIG1lc3NhZ2VU
b1dyaXRlID0gIlRoaXMgbWVzc2FnZSBzaG91bGRuJ3QgYmUgc2VudC4iOwotCi1mdW5jdGlvbiBy
dW5UZXN0KCkKLXsKLSAgICBpZiAoIXdpbmRvdy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbSkgewot
ICAgICAgICB0ZXN0RmFpbGVkKCJ3aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0gaXMgbm90
IGF2YWlsYWJsZS4iKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICB3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIGZpbGVTeXN0
ZW1TaXplLCBkaWRHZXRGaWxlU3lzdGVtLCBkaWRGYWlsKTsKLX0KLQotZnVuY3Rpb24gZGlkR2V0
RmlsZVN5c3RlbShmaWxlU3lzdGVtKQotewotICAgIGRlYnVnKCJHb3QgRmlsZVN5c3RlbSBvYmpl
Y3QuIik7Ci0gICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUoZmlsZU5hbWUsIHtjcmVhdGU6IHRy
dWV9LCBkaWRDcmVhdGVGaWxlLCBkaWRGYWlsKTsKLX0KLQotdmFyIGZpbGVFbnRyeTsKLQotZnVu
Y3Rpb24gZGlkQ3JlYXRlRmlsZShlbnRyeSkKLXsKLSAgICBkZWJ1ZygiRmlsZSBjcmVhdGVkLiIp
OwotICAgIGZpbGVFbnRyeSA9IGVudHJ5OwotICAgIHNob3VsZEJlVHJ1ZSgiZmlsZUVudHJ5Lmlz
RmlsZSIpOwotICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIoZGlkR2V0RmlsZVdyaXRlciwgZGlk
RmFpbCk7Ci19Ci0KLWZ1bmN0aW9uIGRpZEdldEZpbGVXcml0ZXIod3JpdGVyKQotewotICAgIHdy
aXRlci50cnVuY2F0ZSgwKTsKLSAgICB3cml0ZXIub25lcnJvciA9IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHRlc3RGYWlsZWQoIkZpbGVXcml0ZXIgb3BlcmF0aW9uIGZhaWxlZC4iKTsKLSAg
ICAgICAgZW5kVGVzdCgpOwotICAgIH07Ci0gICAgd3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICB3cml0ZXIud3JpdGUobmV3IEJsb2IoW21lc3NhZ2VUb1dyaXRlXSkp
OwotICAgICAgICB3cml0ZXIub253cml0ZSA9IGRpZFdyaXRlRmlsZTsKLSAgICB9OwotfQotCi1m
dW5jdGlvbiBkaWRXcml0ZUZpbGUoKQotewotICAgIGRlYnVnKCJXcm90ZSB0byBmaWxlLiIpOwot
ICAgIGZpbGVFbnRyeS5maWxlKGRpZEdldEZpbGUsIGRpZEZhaWwpOwotfQotCi12YXIgZmlsZU9i
amVjdDsKLQotZnVuY3Rpb24gZGlkR2V0RmlsZShmaWxlKQotewotICAgIGRlYnVnKCJHb3QgRmls
ZSBvYmplY3QuIik7Ci0gICAgZmlsZU9iamVjdCA9IGZpbGU7Ci0KLSAgICAvLyBEZWxldGUgdGhl
IGZpbGUgb2JqZWN0IGJlZm9yZSBpdCBpcyByZWFkLiBUaGlzIHNob3VsZCBjYXVzZSB0aGUgc3Vi
c2VxdWVudCByZWFkIG9wZXJhdGlvbgotICAgIC8vIHRvIGZhaWwgcmVsaWFibHkuCi0gICAgZmls
ZUVudHJ5LnJlbW92ZShkaWRSZW1vdmVGaWxlLCBkaWRGYWlsKTsKLX0KLQotZnVuY3Rpb24gZGlk
UmVtb3ZlRmlsZSgpCi17Ci0gICAgZGVidWcoIkZpbGUgZGVsZXRlZC4iKTsKLSAgICBmaWxlRW50
cnkgPSBudWxsOyAvLyBUbyBwcmV2ZW50IHRoZSBmaWxlIGZyb20gZ2V0dGluZyBkZWxldGVkIGFn
YWluLgotICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZWNobyIpOwotICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHdzLnNlbmQoZmlsZU9iamVjdCk7IC8vIFRoaXMgb3BlcmF0aW9uIHNob3Vs
ZCBmYWlsIGFuZCB0aGUgY29ubmVjdGlvbiBzaG91bGQgYmUgYWJvcnRlZC4KLSAgICB9OwotICAg
IHdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGNsb3NlRXZlbnQg
PSBldmVudDsKLSAgICAgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOwot
ICAgICAgICBlbmRUZXN0KCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGlkRmFpbChmaWxlRXJy
b3IpCi17Ci0gICAgdGVzdEZhaWxlZCgiRmlsZVN5c3RlbSBBUEkgb3BlcmF0aW9uIGZhaWxlZDog
ZXJyb3IgY29kZSA9ICIgKyBmaWxlRXJyb3IuY29kZSk7Ci0gICAgZW5kVGVzdCgpOwotfQotCi1m
dW5jdGlvbiBlbmRUZXN0KCkKLXsKLSAgICBpZiAoZmlsZUVudHJ5KSB7Ci0gICAgICAgIGRlYnVn
KCJEZWxldGluZyB0aGUgZmlsZS4iKTsKLSAgICAgICAgZmlsZUVudHJ5LnJlbW92ZShmaW5pc2hK
U1Rlc3QsIGZpbmlzaEpTVGVzdCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1ydW5UZXN0KCk7Ci0KLTwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NlbmQtZmlsZS1ibG9iLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi5odG1sCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQt
ZmlsZS1ibG9iLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE3ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotZGVzY3JpcHRpb24oIldlYlNvY2tldDogU2Vu
ZCBhIEZpbGUuIik7Ci0KLXdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotZnVuY3Rpb24g
c3RhcnRzV2l0aCh0YXJnZXQsIHByZWZpeCkKLXsKLSAgICByZXR1cm4gdGFyZ2V0LmluZGV4T2Yo
cHJlZml4KSA9PT0gMDsKLX0KLQotdmFyIGZpbGVTeXN0ZW1TaXplID0gMTAyNDsKLXZhciBmaWxl
TmFtZSA9ICJ3ZWJzb2NrZXQtc2VuZC1maWxlLWJsb2IudHh0IjsKLXZhciBtZXNzYWdlVG9Xcml0
ZSA9ICJIZWxsbywgd29ybGQhIjsKLQotZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgaWYgKCF3
aW5kb3cud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0pIHsKLSAgICAgICAgdGVzdEZhaWxlZCgid2lu
ZG93LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtIGlzIG5vdCBhdmFpbGFibGUuIik7Ci0gICAgICAg
IGZpbmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgd2Via2l0UmVx
dWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCBmaWxlU3lzdGVtU2l6ZSwgZGlkR2V0RmlsZVN5c3Rl
bSwgZGlkRmFpbCk7Ci19Ci0KLWZ1bmN0aW9uIGRpZEdldEZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkK
LXsKLSAgICBkZWJ1ZygiR290IEZpbGVTeXN0ZW0gb2JqZWN0LiIpOwotICAgIGZpbGVTeXN0ZW0u
cm9vdC5nZXRGaWxlKGZpbGVOYW1lLCB7Y3JlYXRlOiB0cnVlfSwgZGlkQ3JlYXRlRmlsZSwgZGlk
RmFpbCk7Ci19Ci0KLXZhciBmaWxlRW50cnk7Ci0KLWZ1bmN0aW9uIGRpZENyZWF0ZUZpbGUoZW50
cnkpCi17Ci0gICAgZGVidWcoIkZpbGUgY3JlYXRlZC4iKTsKLSAgICBmaWxlRW50cnkgPSBlbnRy
eTsKLSAgICBzaG91bGRCZVRydWUoImZpbGVFbnRyeS5pc0ZpbGUiKTsKLSAgICBmaWxlRW50cnku
Y3JlYXRlV3JpdGVyKGRpZEdldEZpbGVXcml0ZXIsIGRpZEZhaWwpOwotfQotCi1mdW5jdGlvbiBk
aWRHZXRGaWxlV3JpdGVyKHdyaXRlcikKLXsKLSAgICB3cml0ZXIudHJ1bmNhdGUoMCk7Ci0gICAg
d3JpdGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0ZXN0RmFpbGVkKCJG
aWxlV3JpdGVyIG9wZXJhdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIGVuZFRlc3QoKTsKLSAgICB9
OwotICAgIHdyaXRlci5vbndyaXRlID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgd3JpdGVy
LndyaXRlKG5ldyBCbG9iKFttZXNzYWdlVG9Xcml0ZV0pKTsKLSAgICAgICAgd3JpdGVyLm9ud3Jp
dGUgPSBkaWRXcml0ZUZpbGU7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24gZGlkV3JpdGVGaWxlKCkK
LXsKLSAgICBkZWJ1ZygiV3JvdGUgdG8gZmlsZS4iKTsKLSAgICBmaWxlRW50cnkuZmlsZShkaWRH
ZXRGaWxlLCBkaWRGYWlsKTsKLX0KLQotdmFyIGNsb3NlRXZlbnQ7Ci0KLWZ1bmN0aW9uIGRpZEdl
dEZpbGUoZmlsZSkKLXsKLSAgICBkZWJ1ZygiR290IEZpbGUgb2JqZWN0LiIpOwotICAgIHZhciB3
cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvc2VuZC1maWxlLWJsb2IiKTsKLSAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICB3cy5zZW5kKGZpbGUpOwotICAgIH07Ci0gICAgd3Mub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7Ci0gICAg
ICAgIGlmIChzdGFydHNXaXRoKG1lc3NhZ2UsICJQQVNTIikpCi0gICAgICAgICAgICB0ZXN0UGFz
c2VkKG1lc3NhZ2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0RmFpbGVkKG1lc3Nh
Z2UpOwotICAgIH07Ci0gICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAg
ICAgICAgY2xvc2VFdmVudCA9IGV2ZW50OwotICAgICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZl
bnQud2FzQ2xlYW4iKTsKLSAgICAgICAgZW5kVGVzdCgpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9u
IGRpZEZhaWwoZmlsZUVycm9yKQotewotICAgIHRlc3RGYWlsZWQoIkZpbGVTeXN0ZW0gQVBJIG9w
ZXJhdGlvbiBmYWlsZWQ6IGVycm9yIGNvZGUgPSAiICsgZmlsZUVycm9yLmNvZGUpOwotICAgIGVu
ZFRlc3QoKTsKLX0KLQotZnVuY3Rpb24gZW5kVGVzdCgpCi17Ci0gICAgaWYgKGZpbGVFbnRyeSkg
ewotICAgICAgICBkZWJ1ZygiRGVsZXRpbmcgdGhlIGZpbGUuIik7Ci0gICAgICAgIGZpbGVFbnRy
eS5yZW1vdmUoZmluaXNoSlNUZXN0LCBmaW5pc2hKU1Rlc3QpOwotICAgIH0gZWxzZQotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotcnVuVGVzdCgpOwotCi08L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5
bmMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24tZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5OCArMCwwIEBACi1UZXN0IHRoYXQgdGVy
bWluYXRpbmcgdGhlIHdvcmtlciB3aGlsZSBpdCBpcyBwZXJmb3JtaW5nIHN5bmNocm9ub3VzIGZp
bGUgb3IgZGF0YWJhc2Ugb3BlcmF0aW9ucyB3aWxsIG5vdCBjYXVzZSBhbnkgY3Jhc2hlcywgYXNz
ZXJ0cywgZXRjLgotCi1TdGFydGluZyB0ZXN0IHJ1bi4KLVdhaXRpbmcgZm9yIGFsbCB3b3JrZXJz
IHRvIGV4aXQuCi1UZXN0aW5nIGludGVycnVwdGluZzogb3BlbkRhdGFiYXNlU3luYwotU3RhcnRp
bmcgd29ya2Vycy4KLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxCi1TdGFydGVkIHdvcmtlciBjb3Vu
dDogMgotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDMKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA0Ci1T
dGFydGVkIHdvcmtlciBjb3VudDogNQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDYKLVN0YXJ0ZWQg
d29ya2VyIGNvdW50OiA3Ci1TdGFydGVkIHdvcmtlciBjb3VudDogOAotU3RhcnRlZCB3b3JrZXIg
Y291bnQ6IDkKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxMAotU3RhcnRlZCB3b3JrZXIgY291bnQ6
IDExCi1TdGFydGVkIHdvcmtlciBjb3VudDogMTIKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxMwot
U3RhcnRlZCB3b3JrZXIgY291bnQ6IDE0Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTUKLVN0YXJ0
ZWQgd29ya2VyIGNvdW50OiAxNgotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE3Ci1TdGFydGVkIHdv
cmtlciBjb3VudDogMTgKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxOQotU3RhcnRlZCB3b3JrZXIg
Y291bnQ6IDIwCi1TdGFydGVkIHdvcmtlciBjb3VudDogMjEKLVN0YXJ0ZWQgd29ya2VyIGNvdW50
OiAyMgotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIzCi1TdGFydGVkIHdvcmtlciBjb3VudDogMjQK
LVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyNQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI2Ci1TdGFy
dGVkIHdvcmtlciBjb3VudDogMjcKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyOAotU3RhcnRlZCB3
b3JrZXIgY291bnQ6IDI5Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMzAKLVJ1bm5pbmcgb3BlcmF0
aW9uLgotQ2xvc2VkIHdvcmtlciBjb3VudDogMQotQ2xvc2VkIHdvcmtlciBjb3VudDogMgotQ2xv
c2VkIHdvcmtlciBjb3VudDogMwotQ2xvc2VkIHdvcmtlciBjb3VudDogNAotQ2xvc2VkIHdvcmtl
ciBjb3VudDogNQotQ2xvc2VkIHdvcmtlciBjb3VudDogNgotQ2xvc2VkIHdvcmtlciBjb3VudDog
NwotQ2xvc2VkIHdvcmtlciBjb3VudDogOAotQ2xvc2VkIHdvcmtlciBjb3VudDogOQotQ2xvc2Vk
IHdvcmtlciBjb3VudDogMTAKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDExCi1DbG9zZWQgd29ya2Vy
IGNvdW50OiAxMgotQ2xvc2VkIHdvcmtlciBjb3VudDogMTMKLUNsb3NlZCB3b3JrZXIgY291bnQ6
IDE0Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAxNQotQ2xvc2VkIHdvcmtlciBjb3VudDogMTYKLUNs
b3NlZCB3b3JrZXIgY291bnQ6IDE3Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAxOAotQ2xvc2VkIHdv
cmtlciBjb3VudDogMTkKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDIwCi1DbG9zZWQgd29ya2VyIGNv
dW50OiAyMQotQ2xvc2VkIHdvcmtlciBjb3VudDogMjIKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDIz
Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAyNAotQ2xvc2VkIHdvcmtlciBjb3VudDogMjUKLUNsb3Nl
ZCB3b3JrZXIgY291bnQ6IDI2Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAyNwotQ2xvc2VkIHdvcmtl
ciBjb3VudDogMjgKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDI5Ci1DbG9zZWQgd29ya2VyIGNvdW50
OiAzMAotV2FpdGluZyBmb3IgYWxsIHdvcmtlcnMgdG8gZXhpdC4KLVRlc3RpbmcgaW50ZXJydXB0
aW5nOiByZXF1ZXN0RmlsZVN5c3RlbVN5bmMKLVN0YXJ0aW5nIHdvcmtlcnMuCi1TdGFydGVkIHdv
cmtlciBjb3VudDogMQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDIKLVN0YXJ0ZWQgd29ya2VyIGNv
dW50OiAzCi1TdGFydGVkIHdvcmtlciBjb3VudDogNAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDUK
LVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA2Ci1TdGFydGVkIHdvcmtlciBjb3VudDogNwotU3RhcnRl
ZCB3b3JrZXIgY291bnQ6IDgKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA5Ci1TdGFydGVkIHdvcmtl
ciBjb3VudDogMTAKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxMQotU3RhcnRlZCB3b3JrZXIgY291
bnQ6IDEyCi1TdGFydGVkIHdvcmtlciBjb3VudDogMTMKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAx
NAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE1Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTYKLVN0
YXJ0ZWQgd29ya2VyIGNvdW50OiAxNwotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE4Ci1TdGFydGVk
IHdvcmtlciBjb3VudDogMTkKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMAotU3RhcnRlZCB3b3Jr
ZXIgY291bnQ6IDIxCi1TdGFydGVkIHdvcmtlciBjb3VudDogMjIKLVN0YXJ0ZWQgd29ya2VyIGNv
dW50OiAyMwotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI0Ci1TdGFydGVkIHdvcmtlciBjb3VudDog
MjUKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyNgotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI3Ci1T
dGFydGVkIHdvcmtlciBjb3VudDogMjgKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyOQotU3RhcnRl
ZCB3b3JrZXIgY291bnQ6IDMwCi1SdW5uaW5nIG9wZXJhdGlvbi4KLUNsb3NlZCB3b3JrZXIgY291
bnQ6IDEKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDIKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDMKLUNs
b3NlZCB3b3JrZXIgY291bnQ6IDQKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDUKLUNsb3NlZCB3b3Jr
ZXIgY291bnQ6IDYKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDcKLUNsb3NlZCB3b3JrZXIgY291bnQ6
IDgKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDkKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDEwCi1DbG9z
ZWQgd29ya2VyIGNvdW50OiAxMQotQ2xvc2VkIHdvcmtlciBjb3VudDogMTIKLUNsb3NlZCB3b3Jr
ZXIgY291bnQ6IDEzCi1DbG9zZWQgd29ya2VyIGNvdW50OiAxNAotQ2xvc2VkIHdvcmtlciBjb3Vu
dDogMTUKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDE2Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAxNwot
Q2xvc2VkIHdvcmtlciBjb3VudDogMTgKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDE5Ci1DbG9zZWQg
d29ya2VyIGNvdW50OiAyMAotQ2xvc2VkIHdvcmtlciBjb3VudDogMjEKLUNsb3NlZCB3b3JrZXIg
Y291bnQ6IDIyCi1DbG9zZWQgd29ya2VyIGNvdW50OiAyMwotQ2xvc2VkIHdvcmtlciBjb3VudDog
MjQKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDI1Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAyNgotQ2xv
c2VkIHdvcmtlciBjb3VudDogMjcKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDI4Ci1DbG9zZWQgd29y
a2VyIGNvdW50OiAyOQotQ2xvc2VkIHdvcmtlciBjb3VudDogMzAKLVdhaXRpbmcgZm9yIGFsbCB3
b3JrZXJzIHRvIGV4aXQuCi1UZXN0aW5nIGludGVycnVwdGluZzogZmlsZVN5bmNPcGVyYXRpb25z
Ci1TdGFydGluZyB3b3JrZXJzLgotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEKLVN0YXJ0ZWQgd29y
a2VyIGNvdW50OiAyCi1TdGFydGVkIHdvcmtlciBjb3VudDogMwotU3RhcnRlZCB3b3JrZXIgY291
bnQ6IDQKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA1Ci1TdGFydGVkIHdvcmtlciBjb3VudDogNgot
U3RhcnRlZCB3b3JrZXIgY291bnQ6IDcKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiA4Ci1TdGFydGVk
IHdvcmtlciBjb3VudDogOQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDEwCi1TdGFydGVkIHdvcmtl
ciBjb3VudDogMTEKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAxMgotU3RhcnRlZCB3b3JrZXIgY291
bnQ6IDEzCi1TdGFydGVkIHdvcmtlciBjb3VudDogMTQKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAx
NQotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE2Ci1TdGFydGVkIHdvcmtlciBjb3VudDogMTcKLVN0
YXJ0ZWQgd29ya2VyIGNvdW50OiAxOAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDE5Ci1TdGFydGVk
IHdvcmtlciBjb3VudDogMjAKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyMQotU3RhcnRlZCB3b3Jr
ZXIgY291bnQ6IDIyCi1TdGFydGVkIHdvcmtlciBjb3VudDogMjMKLVN0YXJ0ZWQgd29ya2VyIGNv
dW50OiAyNAotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI1Ci1TdGFydGVkIHdvcmtlciBjb3VudDog
MjYKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAyNwotU3RhcnRlZCB3b3JrZXIgY291bnQ6IDI4Ci1T
dGFydGVkIHdvcmtlciBjb3VudDogMjkKLVN0YXJ0ZWQgd29ya2VyIGNvdW50OiAzMAotUnVubmlu
ZyBvcGVyYXRpb24uCi1DbG9zZWQgd29ya2VyIGNvdW50OiAxCi1DbG9zZWQgd29ya2VyIGNvdW50
OiAyCi1DbG9zZWQgd29ya2VyIGNvdW50OiAzCi1DbG9zZWQgd29ya2VyIGNvdW50OiA0Ci1DbG9z
ZWQgd29ya2VyIGNvdW50OiA1Ci1DbG9zZWQgd29ya2VyIGNvdW50OiA2Ci1DbG9zZWQgd29ya2Vy
IGNvdW50OiA3Ci1DbG9zZWQgd29ya2VyIGNvdW50OiA4Ci1DbG9zZWQgd29ya2VyIGNvdW50OiA5
Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAxMAotQ2xvc2VkIHdvcmtlciBjb3VudDogMTEKLUNsb3Nl
ZCB3b3JrZXIgY291bnQ6IDEyCi1DbG9zZWQgd29ya2VyIGNvdW50OiAxMwotQ2xvc2VkIHdvcmtl
ciBjb3VudDogMTQKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDE1Ci1DbG9zZWQgd29ya2VyIGNvdW50
OiAxNgotQ2xvc2VkIHdvcmtlciBjb3VudDogMTcKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDE4Ci1D
bG9zZWQgd29ya2VyIGNvdW50OiAxOQotQ2xvc2VkIHdvcmtlciBjb3VudDogMjAKLUNsb3NlZCB3
b3JrZXIgY291bnQ6IDIxCi1DbG9zZWQgd29ya2VyIGNvdW50OiAyMgotQ2xvc2VkIHdvcmtlciBj
b3VudDogMjMKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDI0Ci1DbG9zZWQgd29ya2VyIGNvdW50OiAy
NQotQ2xvc2VkIHdvcmtlciBjb3VudDogMjYKLUNsb3NlZCB3b3JrZXIgY291bnQ6IDI3Ci1DbG9z
ZWQgd29ya2VyIGNvdW50OiAyOAotQ2xvc2VkIHdvcmtlciBjb3VudDogMjkKLUNsb3NlZCB3b3Jr
ZXIgY291bnQ6IDMwCi1XYWl0aW5nIGZvciBhbGwgd29ya2VycyB0byBleGl0LgotRE9ORQotCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5j
LW9wZXJhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwJKHJldmlzaW9uIDE1NjY5
MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5
bmMtb3BlcmF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsODIgKzAsMCBAQAotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvd29ya2VyLXV0aWwuanMnPjwvc2NyaXB0
PgotPHNjcmlwdD4KLXZhciB3b3JrZXJzU3RhcnRlZDsKLXZhciB3b3JrZXJzQ2xvc2VkOwotCi12
YXIgdGVzdE51bWJlciA9IC0xOwotdmFyIHN5bmNPcGVyYXRpb25UZXN0cyA9IG5ldyBBcnJheSgn
b3BlbkRhdGFiYXNlU3luYycsICdyZXF1ZXN0RmlsZVN5c3RlbVN5bmMnLCAnZmlsZVN5bmNPcGVy
YXRpb25zJyk7Ci0KLS8vIDMwIHdvcmtlcnMgc2VlbWVkIHRvIGNhdXNlIHRoZSBjcmFzaCB0byBo
YXBwZW4gZnJlcXVlbnRseS4KLXZhciB3b3JrZXJzID0gbmV3IEFycmF5KDMwKTsKLQotZnVuY3Rp
b24gc3RhcnROZXh0VGVzdCgpCi17Ci0gICAgdGVzdE51bWJlcisrOwotICAgIGxvZygnV2FpdGlu
ZyBmb3IgYWxsIHdvcmtlcnMgdG8gZXhpdC4nKTsKLSAgICBpZiAodGVzdE51bWJlciA+PSBzeW5j
T3BlcmF0aW9uVGVzdHMubGVuZ3RoKSB7Ci0gICAgICAgIHdhaXRVbnRpbFdvcmtlclRocmVhZHNF
eGl0KGRvbmUpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgd2FpdFVudGlsV29ya2VyVGhy
ZWFkc0V4aXQoc3RhcnRXb3JrZXJzKQotfQotCi1mdW5jdGlvbiBzdGFydFdvcmtlcnMoKQotewot
ICAgIGxvZygnVGVzdGluZyBpbnRlcnJ1cHRpbmc6ICcgKyAgc3luY09wZXJhdGlvblRlc3RzW3Rl
c3ROdW1iZXJdKTsKLSAgICBsb2coJ1N0YXJ0aW5nIHdvcmtlcnMuJyk7Ci0gICAgd29ya2Vyc1N0
YXJ0ZWQgPSAwOwotICAgIHdvcmtlcnNDbG9zZWQgPSAwOwotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgd29ya2Vycy5sZW5ndGg7ICsraSkgewotICAgICAgICB3b3JrZXJzW2ldID0gbmV3IFdvcmtl
cigncmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcz9hcmc9JyArIGkpCi0gICAgICAgIHdvcmtl
cnNbaV0ub25tZXNzYWdlID0gb25Xb3JrZXJTdGFydGVkOwotICAgIH0KLX0KLQotLy8gRG8gb3Vy
IGJlc3QgdG8gdHJ5IHRvIGludGVycnVwdCB0aGUgZGF0YWJhc2Ugb3BlbgotLy8gY2FsbCBieSB3
YWl0aW5nIGZvciB0aGUgd29ya2VyIHRvIHN0YXJ0IGFuZCB0aGVuCi0vLyB0ZWxsaW5nIGl0IHRv
IGRvIHRoZSBvcGVuIGRhdGFiYXNlIGNhbGwgKGFuZAotLy8gdGhlbiB0ZXJtaW5hdGUgdGhlIHdv
cmtlcikuCi1mdW5jdGlvbiBvbldvcmtlclN0YXJ0ZWQoKQotewotICAgIHdvcmtlcnNTdGFydGVk
Kys7Ci0gICAgbG9nKCdTdGFydGVkIHdvcmtlciBjb3VudDogJyArIHdvcmtlcnNTdGFydGVkKTsK
LSAgICBpZiAod29ya2Vyc1N0YXJ0ZWQgPCB3b3JrZXJzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbG9nKCdSdW5uaW5nIG9wZXJhdGlvbi4nKTsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHdvcmtlcnMubGVuZ3RoOyArK2kpCi0gICAgICAgIHdvcmtlcnNbaV0ucG9zdE1lc3NhZ2Uo
c3luY09wZXJhdGlvblRlc3RzW3Rlc3ROdW1iZXJdKTsKLQotICAgIHNldFRpbWVvdXQoJ2Nsb3Nl
V29ya2VyKCknLCAwKTsKLX0KLQotZnVuY3Rpb24gY2xvc2VXb3JrZXIoKQotewotICAgIHdvcmtl
cnNbd29ya2Vyc0Nsb3NlZF0udGVybWluYXRlKCk7Ci0gICAgd29ya2Vyc0Nsb3NlZCsrOwotICAg
IGxvZygnQ2xvc2VkIHdvcmtlciBjb3VudDogJyArIHdvcmtlcnNDbG9zZWQpOwotICAgIGlmICh3
b3JrZXJzQ2xvc2VkIDwgd29ya2Vycy5sZW5ndGgpCi0gICAgICAgIHNldFRpbWVvdXQoJ2Nsb3Nl
V29ya2VyKCknLCAzKTsKLSAgICBlbHNlCi0gICAgICAgIHN0YXJ0TmV4dFRlc3QoKTsKLX0KLQot
ZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgbG9nKCdTdGFydGluZyB0ZXN0IHJ1bi4nKTsKLSAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIH0KLSAgICBzdGFy
dE5leHRUZXN0KCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ncnVuVGVz
dCgpJz4KLTxwPlRlc3QgdGhhdCB0ZXJtaW5hdGluZyB0aGUgd29ya2VyIHdoaWxlIGl0IGlzIHBl
cmZvcm1pbmcgc3luY2hyb25vdXMgZmlsZSBvciBkYXRhYmFzZSBvcGVyYXRpb25zIHdpbGwgbm90
IGNhdXNlIGFueSBjcmFzaGVzLCBhc3NlcnRzLCBldGMuPC9wPgotPGRpdiBpZD0ncmVzdWx0Jz4K
LTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9yZXNvdXJj
ZXMvc3luYy1vcGVyYXRpb25zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw0OCArMjIsNiBAQCBv
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7
ICsraSkgewogICAgICAgICAgICAgaWYgKGV2dC5kYXRhID09ICdvcGVuRGF0YWJhc2VTeW5jJykK
ICAgICAgICAgICAgICAgICBvcGVuRGF0YWJhc2VTeW5jKCcnLCAnJywgJycsIDEpOwotICAgICAg
ICAgICAgZWxzZSBpZiAoZXZ0LmRhdGEgPT0gJ3JlcXVlc3RGaWxlU3lzdGVtU3luYycpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIXRoaXMud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW1TeW5jKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgd2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW1TeW5jKHRoaXMuVEVNUE9SQVJZLCAxMDApOwotICAgICAgICAgICAgfSBlbHNlIGlm
IChldnQuZGF0YSA9PSAnZmlsZVN5bmNPcGVyYXRpb25zJykgewotICAgICAgICAgICAgICAgIGlm
ICghdGhpcy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbVN5bmMpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICAvLyBEbyBtYW55IGRpZmZlcmVudCBzeW5jIGZpbGVz
eXN0ZW0gb3BlcmF0aW9ucy4gSWYgdGhpcyBzdGFydHMgY3Jhc2hpbmcsCi0gICAgICAgICAgICAg
ICAgLy8gdGhlbiBhIHNpbXBsZSBpbnZlc3RpZ2F0aW9uIHdvdWxkIGJlIHRvIGlzb2xhdGUgdGhl
c2UgY29tbWFuZHMuCi0gICAgICAgICAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSB3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7Ci0KLSAgICAgICAgICAgICAg
ICByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLQotICAgICAgICAg
ICAgICAgIC8vIFN0YWdlIDEgKHByZXBhcmUpCi0gICAgICAgICAgICAgICAgdmFyIGEgPSBmaWxl
U3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0pOwotICAgICAgICAgICAgICAg
IHZhciBiID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgnYicsIHtjcmVhdGU6dHJ1ZX0p
OwotICAgICAgICAgICAgICAgIHZhciBjID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgn
YycsIHtjcmVhdGU6dHJ1ZX0pOwotICAgICAgICAgICAgICAgIHZhciBkID0gZmlsZVN5c3RlbS5y
b290LmdldEZpbGUoJ2QnLCB7Y3JlYXRlOnRydWV9KTsKLQotICAgICAgICAgICAgICAgIC8vIFN0
YWdlIDIgKHRlc3QpCi0gICAgICAgICAgICAgICAgdmFyIGFfY29weSA9IGEuY29weVRvKGIsICd0
bXAnKTsKLSAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGEgPSBhLmdldE1ldGFkYXRhKCk7Ci0g
ICAgICAgICAgICAgICAgdmFyIGJfcGFyZW50ID0gYi5nZXRQYXJlbnQoKTsKLSAgICAgICAgICAg
ICAgICB2YXIgY19jb3B5ID0gYy5jb3B5VG8oZmlsZVN5c3RlbS5yb290LCAnZicpOwotICAgICAg
ICAgICAgICAgIHZhciBkX25ldyA9IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Ci0g
ICAgICAgICAgICAgICAgdmFyIGUgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnZScsIHtjcmVh
dGU6dHJ1ZX0pOwotCi0gICAgICAgICAgICAgICAgLy8gVmVyaWZ5Ci0gICAgICAgICAgICAgICAg
dmFyIHJlYWRlciA9IGZpbGVTeXN0ZW0ucm9vdC5jcmVhdGVSZWFkZXIoKTsKLSAgICAgICAgICAg
ICAgICB2YXIgZGlyc0NvdW50ID0gMDsKLSAgICAgICAgICAgICAgICB2YXIgcGF0aHMgPSBbXTsK
LSAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBlbnRyaWVzID0g
cmVhZGVyLnJlYWRFbnRyaWVzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBwYXRocy5w
dXNoKGVudHJpZXNbaV0uZnVsbFBhdGgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZW50cmll
c1tpXS5pc0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcnNDb3VudCsrOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoZW50cmllcy5s
ZW5ndGgpOwotCi0gICAgICAgICAgICAgICAgcmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVT
eXN0ZW0ucm9vdCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGNhdGNoIChlKSB7
CiAgICAgICAgIC8vIFB1cnBvc2VseSBpZ25vcmUgYW55IGV4Y2VwdGlvbnMuIFNpbmNlIHRoZSB3
aG9sZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBpcyB0byB0cnkKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjY4
LDEwICsyNjgsNiBAQCBlZGl0aW5nL3Vuc3VwcG9ydGVkLWNvbnRlbnQvdGFibGUtZGVsZXRlCiBm
YXN0L2RvbS9ydGwtc2Nyb2xsLXRvLWxlZnRtb3N0LWFuZC1yZXNpemUuaHRtbAogZmFzdC90ZXh0
L3VuaWNvZGUtdmFyaWF0aW9uLXNlbGVjdG9yLmh0bWwKIAotIyBSZXF1aXJlcyBFTkFCTEUoRklM
RV9TWVNURU0pCi1mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1lbnRyaWVzLmh0bWwKLWh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2ZpbGVzeXN0ZW0tdXJscy1tYXRj
aC1zZWxmLmh0bWwKLQogIyBYLUNvbnRlbnQtVHlwZS1PcHRpb25zIChFTkFCTEVfTk9TTklGRikg
aXMgbm90IGVuYWJsZWQuCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRUeXBlT3B0aW9ucwog
CkBAIC0xMTk0LDE2ICsxMTkwLDYgQEAgd2Via2l0Lm9yZy9iLzg4MTkxIGZhc3Qvdmlld3BvcnQv
dmlld3Bvcgogd2Via2l0Lm9yZy9iLzg4MTkxIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtbGVnYWN5
LXhodG1sbXAuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg4MTkxIGZhc3Qvdmlld3Bv
cnQvdmlld3BvcnQtbGVnYWN5LXhodG1sbXAtcmVtb3ZlLWFuZC1hZGQuaHRtbCBbIEZhaWx1cmUg
XQogCi0jIFRoZSBFRkwgcG9ydCBoYXMgbm8gc3VwcG9ydCBmb3IgdGhlIEZpbGVTeXN0ZW0gQVBJ
Ci13ZWJraXQub3JnL2IvNjg1OTEgZmFzdC9maWxlc3lzdGVtCi13ZWJraXQub3JnL2IvNjg1OTEg
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNhbGxiYWNrLWRlbGl2ZXJ5Lmh0
bWwKLXdlYmtpdC5vcmcvYi82ODU5MSBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0KLXdlYmtpdC5vcmcv
Yi82ODU5MSBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3Rl
Lmh0bWwKLXdlYmtpdC5vcmcvYi82ODU5MSBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9maWxlc3lzdGVtLXVybC1pbi1pZnJhbWUuaHRtbAotd2Via2l0Lm9yZy9iLzY4NTkxIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0KLXdlYmtpdC5vcmcvYi82ODU5MSBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRtbAotd2Via2l0Lm9y
Zy9iLzY4NTkxIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2Iu
aHRtbAotCiAjIFdLVFIgLyBFRkwncyBEUlQgZG8gbm90IHN1cHBvcnQgc2V0Vmlld01vZGVNZWRp
YUZlYXR1cmUoKS4KIEJ1ZyhFRkwpIGZhc3QvbWVkaWEvdmlldy1tb2RlLW1lZGlhLWZlYXR1cmUu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogQnVnKEVGTCkgZmFzdC9tZWRpYS9tZWRpYS1xdWVy
eS1saXN0LTAyLmh0bWwgWyBGYWlsdXJlIF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNTY2OTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTgwLDE5ICsxODAs
NiBAQCB3ZWJraXQub3JnL2IvOTg5MzggZmFzdC9ldmVudHMvY29uc3RydWN0CiAjIFJlcXVpcmVz
IElORElFX1VJIHN1cHBvcnQKIHdlYmtpdC5vcmcvYi8xMTE0NDYgaW5kaWV1aSBbIFNraXAgXQog
Ci0jIEZpbGVTeXN0ZW0gQVBJIGlzIG5vdCBzdXBwb3J0ZWQuCi13ZWJraXQub3JnL2IvNTg0NDMg
ZmFzdC9maWxlc3lzdGVtIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvNTg0NDMgaHR0cC90ZXN0cy9m
aWxlc3lzdGVtIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvNTg0NDMgaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbSBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzU4NDQzIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1vdGUuaHRtbCBbIFNraXAgXQotd2Via2l0
Lm9yZy9iLzU4NDQzIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Zp
bGVzeXN0ZW0tdXJscy1tYXRjaC1zZWxmLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi81ODQ0
MyBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9maWxlc3lzdGVtLXVybC1pbi1pZnJh
bWUuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzU4NDQzIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzU4
NDQzIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC5o
dG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvNTg0NDMgaHR0cC90ZXN0cy93b3JrZXJzL3Rlcm1p
bmF0ZS1kdXJpbmctc3luYy1vcGVyYXRpb24uaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzU4
NDQzIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVy
eS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvNTg0NDMgZmFzdC9mb3Jtcy9maWxlL2lucHV0
LWZpbGUtZW50cmllcy5odG1sIFsgU2tpcCBdCi0KICMgUmVxdWlyZXMgV2ViUCBzdXBwb3J0Lgog
d2Via2l0Lm9yZy9iLzk4OTM5IGZhc3QvY2FudmFzL2NhbnZhcy10b0RhdGFVUkwtd2VicC5odG1s
IFsgU2tpcCBdCiAjIFJlcXVpcmVzIFdlYlAgMC4yIHN1cHBvcnQuCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTU2NjkxKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAg
LTI4NSwxNyArMjg1LDYgQEAgd2Via2l0Lm9yZy9iLzExNjY1MSBtZWRpYS9jb250ZXh0LW1lbnUt
YQogIyByZXF1aXJlcyB2aWRlby5idWZmZXJlZCB0byBiZSBhYmxlIHRvIHJldHVybiBtdWx0aXBs
ZSB0aW1lcmFuZ2VzCiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWJ1ZmZlcmVkLmh0bWwKIAotIyBG
aWxlU3lzdGVtIEFQSSBpcyBub3Qgc3VwcG9ydGVkLgotZmFzdC9maWxlc3lzdGVtCi1odHRwL3Rl
c3RzL2ZpbGVzeXN0ZW0KLWh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0KLWh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2ZpbGVzeXN0ZW0tdXJscy1tYXRjaC1z
ZWxmLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJhbWUtZnJvbS1yZW1v
dGUuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZmlsZXN5c3RlbS11cmwt
aW4taWZyYW1lLmh0bWwKLWh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxl
LWJsb2IuaHRtbAotaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxv
Yi1mYWlsLmh0bWwKLWZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZmlsZXN5c3RlbS1jYWxsYmFj
ay1kZWxpdmVyeS5odG1sCi0KICMgVGhlIFdlYktpdCBwbHVnaW4gaW1wbGVtZW50YXRpb24gZG9l
cyBub3Qgc3VwcG9ydCBpZnJhbWUgc2hpbXMuCiB3ZWJraXQub3JnL2IvNDYyMjMgcGx1Z2lucy9p
ZnJhbWUtc2hpbXMuaHRtbAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhw
ZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBl
Y3RhdGlvbnMJKHJldmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rl
c3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxOCArMTMzLDYgQEAgaHR0cC90
ZXN0cy93ZWJhcmNoaXZlCiB3ZWJhcmNoaXZlCiBzdmcvd2ViYXJjaGl2ZQogCi0jIEVOQUJMRShG
SUxFX1NZU1RFTSkgaXMgZGlzYWJsZWQuCi1mYXN0L2ZpbGVzeXN0ZW0KLWZhc3QvZm9ybXMvZmls
ZS9pbnB1dC1maWxlLWVudHJpZXMuaHRtbAotaHR0cC90ZXN0cy9maWxlc3lzdGVtCi1odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtCi1odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9maWxlc3lzdGVtLXVybHMtbWF0Y2gtc2VsZi5odG1sCi1odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKLWh0dHAvdGVzdHMvc2Vj
dXJpdHkvbWl4ZWRDb250ZW50L2ZpbGVzeXN0ZW0tdXJsLWluLWlmcmFtZS5odG1sCi1odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLmh0bWwKLWh0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC5odG1sCi1mYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2ZpbGVzeXN0ZW0tY2FsbGJhY2stZGVsaXZlcnkuaHRtbAotCiAjIEVO
QUJMRShRVU9UQSkgaXMgZGlzYWJsZWQuCiBzdG9yYWdlL3N0b3JhZ2VpbmZvLW1pc3NpbmctYXJn
dW1lbnRzLmh0bWwKIHN0b3JhZ2Uvc3RvcmFnZWluZm8tbm8tY2FsbGJhY2tzLmh0bWwKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNTY2
OTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkod29ya2lu
ZyBjb3B5KQpAQCAtMTMzMywxNiArMTMzMyw2IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tc2Vy
dmVkLWFzLXRleHQuaHQKICMgUHJlLUhNVEw1IHBhcnNlciBxdWlya3Mgb25seSBhcHBseSB0byB0
aGUgbWFjIHBvcnQgZm9yIG5vdy4KIGZhc3QvcGFyc2VyL3ByZS1odG1sNS1wYXJzZXItcXVpcmtz
Lmh0bWwKIAotIyBGaWxlU3lzdGVtIEFQSSBpcyBub3Qgc3VwcG9ydGVkLgotZmFzdC9maWxlc3lz
dGVtCi1odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0KLWh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0KLWh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2ZpbGVzeXN0ZW0t
dXJscy1tYXRjaC1zZWxmLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvZmlsZXN5c3RlbS1pZnJh
bWUtZnJvbS1yZW1vdGUuaHRtbAotaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5k
LWZpbGUtYmxvYi5odG1sCi1odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmls
ZS1ibG9iLWZhaWwuaHRtbAotZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9maWxlc3lzdGVtLWNh
bGxiYWNrLWRlbGl2ZXJ5Lmh0bWwKLQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDYyMjMKICMgVGhlIFdlYktpdCBwbHVnaW4gaW1wbGVtZW50YXRpb24gZG9lcyBu
b3Qgc3VwcG9ydCBpZnJhbWUgc2hpbXMuCiBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMJKHJl
dmlzaW9uIDE1NjY5MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBl
Y3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTE4NTQsMTYgKzE4NTQsNiBAQCBodHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLXNlcnZlZC1hcy10ZXh0Lmh0CiAjIFByZS1ITVRMNSBwYXJzZXIgcXVpcmtz
IG9ubHkgYXBwbHkgdG8gdGhlIG1hYyBwb3J0IGZvciBub3cuCiBmYXN0L3BhcnNlci9wcmUtaHRt
bDUtcGFyc2VyLXF1aXJrcy5odG1sCiAKLSMgRmlsZVN5c3RlbSBBUEkgaXMgbm90IHN1cHBvcnRl
ZC4KLWZhc3QvZmlsZXN5c3RlbQotaHR0cC90ZXN0cy9maWxlc3lzdGVtCi1odHRwL3Rlc3RzL2lu
c3BlY3Rvci9maWxlc3lzdGVtCi1odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9maWxlc3lzdGVtLXVybHMtbWF0Y2gtc2VsZi5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5
L2ZpbGVzeXN0ZW0taWZyYW1lLWZyb20tcmVtb3RlLmh0bWwKLWh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2IuaHRtbAotaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9zZW5kLWZpbGUtYmxvYi1mYWlsLmh0bWwKLWZhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvZmlsZXN5c3RlbS1jYWxsYmFjay1kZWxpdmVyeS5odG1sCi0KICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjIzCiAjIFRoZSBXZWJLaXQgcGx1Z2luIGltcGxl
bWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgaWZyYW1lIHNoaW1zLgogcGx1Z2lucy9pZnJhbWUt
c2hpbXMuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>