<?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>220749</bug_id>
          
          <creation_ts>2021-01-19 15:07:04 -0800</creation_ts>
          <short_desc>[run-webkit-tests] Support python layout tests</short_desc>
          <delta_ts>2021-05-24 10:26: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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220876</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=220881</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=220995</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221776</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221784</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222367</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222418</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222599</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222614</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222618</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222656</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222668</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222935</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223212</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223234</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223475</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223522</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223524</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223541</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223575</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223599</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223602</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223835</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223891</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=223905</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224528</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224622</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224702</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226179</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Chris Gambrell">cgambrell</assigned_to>
          <cc>ap</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgambrell</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1720708</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-19 15:07:04 -0800</bug_when>
    <thetext>PHP is advertised as deprecated in Big Sur. We need to evaluate converting our PHP tests to something else, most likely Python. The first step of that is allowing apache to actually run Python files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720709</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-19 15:07:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/73375271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720711</commentid>
    <comment_count>2</comment_count>
      <attachid>417918</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-19 15:10:44 -0800</bug_when>
    <thetext>Created attachment 417918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720753</commentid>
    <comment_count>3</comment_count>
      <attachid>417918</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-19 16:41:10 -0800</bug_when>
    <thetext>Comment on attachment 417918
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:164
&gt; +        for index in range(len(httpd_conf)):

Why does this need to be done dynamically? I would expect all handlers to be defined in httpd.conf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720754</commentid>
    <comment_count>4</comment_count>
      <attachid>417918</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-19 16:41:41 -0800</bug_when>
    <thetext>Comment on attachment 417918
Patch

Marking r- because this breaks tests (we have .py files already).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721610</commentid>
    <comment_count>5</comment_count>
      <attachid>418156</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-22 09:58:04 -0800</bug_when>
    <thetext>Created attachment 418156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721680</commentid>
    <comment_count>6</comment_count>
      <attachid>418169</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-22 12:23:19 -0800</bug_when>
    <thetext>Created attachment 418169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721681</commentid>
    <comment_count>7</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-22 12:25:01 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #6)
&gt; Created attachment 418169 [details]
&gt; Patch

This is most of the change, there are still 3 cases we need to resolve, but the specifics of those cases makes me think it would be best to make those changes in separate bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721804</commentid>
    <comment_count>8</comment_count>
      <attachid>418206</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-22 19:09:40 -0800</bug_when>
    <thetext>Created attachment 418206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722346</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-25 16:33:49 -0800</bug_when>
    <thetext>Committed r271867: &lt;https://trac.webkit.org/changeset/271867&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418206.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417918</attachid>
            <date>2021-01-19 15:10:44 -0800</date>
            <delta_ts>2021-01-22 09:58:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220749-20210119151043.patch</filename>
            <type>text/plain</type>
            <size>2796</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MTYyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDIxLTAxLTE5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c10gU3VwcG9ydCBweXRob24gbGF5b3V0IHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA3
NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMzc1MjcxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5OiBBZGQgLnB5IHRvIGxpc3Qg
b2YgdGVzdGFibGUgZmlsZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHk6CisgICAgICAgIChMYXlvdXRUZXN0QXBh
Y2hlSHR0cGQuX2NvcHlfYXBhY2hlX2NvbmZpZ19maWxlKTogQWxsb3cgUHl0aG9uIGZpbGVzIHRv
IGJlIHJ1bi4KKwogMjAyMS0wMS0xOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW2NvbW1pdC1xdWV1ZV0gQ2FjaGUgY3JlZGVudGlhbHMgZm9yIGh0dHBz
IGluc3RlYWQgb2YgaHR0cApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X2Zp
bmRlci5weQkocmV2aXNpb24gMjcxNTQzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAog
CiAjIFdoZW4gY29sbGVjdGluZyB0ZXN0IGNhc2VzLCB3ZSBpbmNsdWRlIGFueSBmaWxlIHdpdGgg
dGhlc2UgZXh0ZW5zaW9ucy4KLV9zdXBwb3J0ZWRfdGVzdF9leHRlbnNpb25zID0gc2V0KFsnLmh0
bWwnLCAnLnNodG1sJywgJy54bWwnLCAnLnhodG1sJywgJy5wbCcsICcuaHRtJywgJy5waHAnLCAn
LnN2ZycsICcubWh0JywgJy54aHQnXSkKK19zdXBwb3J0ZWRfdGVzdF9leHRlbnNpb25zID0gc2V0
KFsnLmh0bWwnLCAnLnNodG1sJywgJy54bWwnLCAnLnhodG1sJywgJy5wbCcsICcuaHRtJywgJy5w
aHAnLCAnLnB5JywgJy5zdmcnLCAnLm1odCcsICcueGh0J10pCiAKIAogIyBJZiBhbnkgY2hhbmdl
cyBhcmUgbWFkZSBoZXJlIGJlIHN1cmUgdG8gdXBkYXRlIHRoZSBpc1VzZWRJblJlZnRlc3QgbWV0
aG9kIGluIG9sZC1ydW4td2Via2l0LXRlc3RzIGFzIHdlbGwuCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2Fw
YWNoZV9odHRwX3NlcnZlci5weQkocmV2aXNpb24gMjcxNTQzKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkJKHdvcmtp
bmcgY29weSkKQEAgLTE1OSwxMCArMTU5LDEzIEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRw
ZChodHRwX3NlcnZlcl8KICAgICAgICAgIiIiCiAgICAgICAgIGh0dHBkX2NvbmZpZyA9IHNlbGYu
X3BvcnRfb2JqLl9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSgpCiAgICAgICAgIGh0dHBkX2Nv
bmZpZ19jb3B5ID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsICJodHRwZC5jb25mIikKLSAgICAg
ICAgaHR0cGRfY29uZiA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoaHR0cGRfY29u
ZmlnKQorICAgICAgICBodHRwZF9jb25mID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShodHRwZF9jb25maWcpLnNwbGl0bGluZXMoKQogCi0gICAgICAgICMgRklYTUU6IFdoeSBkbyB3
ZSBuZWVkIHRvIGNvcHkgdGhlIGNvbmZpZyBmaWxlIHNpbmNlIHdlJ3JlIG5vdCBtb2RpZnlpbmcg
aXQ/Ci0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGh0dHBkX2NvbmZp
Z19jb3B5LCBodHRwZF9jb25mKQorICAgICAgICBmb3IgaW5kZXggaW4gcmFuZ2UobGVuKGh0dHBk
X2NvbmYpKToKKyAgICAgICAgICAgIGlmICdBZGRIYW5kbGVyIGNnaS1zY3JpcHQnIGluIGh0dHBk
X2NvbmZbaW5kZXhdOgorICAgICAgICAgICAgICAgIGh0dHBkX2NvbmZbaW5kZXhdICs9ICcgLnB5
JworCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGh0dHBkX2NvbmZp
Z19jb3B5LCAnXG4nLmpvaW4oaHR0cGRfY29uZikpCiAKICAgICAgICAgaWYgc2VsZi5wbGF0Zm9y
bS5pc19jeWd3aW4oKToKICAgICAgICAgICAgICMgQ29udmVydCB0byBNU0RPUyBmaWxlIG5hbWlu
ZzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418156</attachid>
            <date>2021-01-22 09:58:04 -0800</date>
            <delta_ts>2021-01-22 12:31:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220749-20210122095803.patch</filename>
            <type>text/plain</type>
            <size>1526</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MTc0NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTAxLTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c10gU3VwcG9ydCBweXRob24gbGF5b3V0IHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA3
NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMzc1MjcxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5OiBBZGQgLmNnaSB0byBsaXN0
IG9mIHRlc3RhYmxlIGZpbGVzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5OgorCiAyMDIxLTAxLTIyICBMYXVybyBN
b3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXZWJEcml2ZXJdIEFkZCBpbmZv
IGFib3V0IGltcG9ydGluZyB0ZXN0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90
ZXN0X2ZpbmRlci5weQkocmV2aXNpb24gMjcxNzQ2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogCiAjIFdoZW4gY29sbGVjdGluZyB0ZXN0IGNhc2VzLCB3ZSBpbmNsdWRlIGFueSBmaWxl
IHdpdGggdGhlc2UgZXh0ZW5zaW9ucy4KLV9zdXBwb3J0ZWRfdGVzdF9leHRlbnNpb25zID0gc2V0
KFsnLmh0bWwnLCAnLnNodG1sJywgJy54bWwnLCAnLnhodG1sJywgJy5wbCcsICcuaHRtJywgJy5w
aHAnLCAnLnN2ZycsICcubWh0JywgJy54aHQnXSkKK19zdXBwb3J0ZWRfdGVzdF9leHRlbnNpb25z
ID0gc2V0KFsnLmNnaScsICcuaHRtbCcsICcuc2h0bWwnLCAnLnhtbCcsICcueGh0bWwnLCAnLnBs
JywgJy5odG0nLCAnLnBocCcsICcuc3ZnJywgJy5taHQnLCAnLnhodCddKQogCiAKICMgSWYgYW55
IGNoYW5nZXMgYXJlIG1hZGUgaGVyZSBiZSBzdXJlIHRvIHVwZGF0ZSB0aGUgaXNVc2VkSW5SZWZ0
ZXN0IG1ldGhvZCBpbiBvbGQtcnVuLXdlYmtpdC10ZXN0cyBhcyB3ZWxsLgo=
</data>
<flag name="commit-queue"
          id="436063"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418169</attachid>
            <date>2021-01-22 12:23:19 -0800</date>
            <delta_ts>2021-01-22 19:09:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220749-20210122122318.patch</filename>
            <type>text/plain</type>
            <size>48350</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MTc1NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDIxLTAxLTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c10gU3VwcG9ydCBweXRob24gbGF5b3V0IHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA3
NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMzc1MjcxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5OgorICAgICAgICAoTGF5b3V0
VGVzdEZpbmRlci5fcmVhbF90ZXN0cyk6IEV4Y2x1ZGUgInRvb2xzIiBkaXJlY3Rvcmllcy4KKyAg
ICAgICAgKExheW91dFRlc3RGaW5kZXIuX2lzX3Rlc3RfZmlsZSk6IFNwZWNpYWwgY2FzZSBmb3Ig
d2ViIHNvY2tldCdzICpfd3NoLnB5IGZpbGVzLgorICAgICAgICAoTGF5b3V0VGVzdEZpbmRlci5f
aXNfdzNjX3Jlc291cmNlX2ZpbGUpOiBFeGNsdWRlIHczYyBQeXRob24gZmlsZXMuCisKIDIwMjEt
MDEtMjIgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXRyaWVkIHRlc3RzIGFyZSBydW4gd2l0aG91dCAtLXByZWZlci1pbnRlZ3JhdGVkLWdwdQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0
X3Rlc3RfZmluZGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X2ZpbmRlci5weQkocmV2aXNpb24gMjcx
NzQ2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bGF5b3V0X3Rlc3RfZmluZGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiAjIFdoZW4gY29sbGVjdGluZyB0
ZXN0IGNhc2VzLCB3ZSBpbmNsdWRlIGFueSBmaWxlIHdpdGggdGhlc2UgZXh0ZW5zaW9ucy4KLV9z
dXBwb3J0ZWRfdGVzdF9leHRlbnNpb25zID0gc2V0KFsnLmh0bWwnLCAnLnNodG1sJywgJy54bWwn
LCAnLnhodG1sJywgJy5wbCcsICcuaHRtJywgJy5waHAnLCAnLnN2ZycsICcubWh0JywgJy54aHQn
XSkKK19zdXBwb3J0ZWRfdGVzdF9leHRlbnNpb25zID0gc2V0KFsnLmh0bWwnLCAnLnNodG1sJywg
Jy54bWwnLCAnLnhodG1sJywgJy5wbCcsICcucHknLCAnLmh0bScsICcucGhwJywgJy5zdmcnLCAn
Lm1odCcsICcueGh0J10pCiAKIAogIyBJZiBhbnkgY2hhbmdlcyBhcmUgbWFkZSBoZXJlIGJlIHN1
cmUgdG8gdXBkYXRlIHRoZSBpc1VzZWRJblJlZnRlc3QgbWV0aG9kIGluIG9sZC1ydW4td2Via2l0
LXRlc3RzIGFzIHdlbGwuCkBAIC0xMDcsNyArMTA3LDcgQEAgY2xhc3MgTGF5b3V0VGVzdEZpbmRl
cihvYmplY3QpOgogCiAgICAgZGVmIF9yZWFsX3Rlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAg
IyBXaGVuIGNvbGxlY3RpbmcgdGVzdCBjYXNlcywgc2tpcCB0aGVzZSBkaXJlY3RvcmllcwotICAg
ICAgICBza2lwcGVkX2RpcmVjdG9yaWVzID0gc2V0KFsnLnN2bicsICdfc3ZuJywgJ3Jlc291cmNl
cycsICdzdXBwb3J0JywgJ3NjcmlwdC10ZXN0cycsICdyZWZlcmVuY2UnLCAncmVmdGVzdCddKQor
ICAgICAgICBza2lwcGVkX2RpcmVjdG9yaWVzID0gc2V0KFsnLnN2bicsICdfc3ZuJywgJ3Jlc291
cmNlcycsICdzdXBwb3J0JywgJ3NjcmlwdC10ZXN0cycsICd0b29scycsICdyZWZlcmVuY2UnLCAn
cmVmdGVzdCddKQogICAgICAgICBmaWxlcyA9IGZpbmRfZmlsZXMuZmluZChzZWxmLl9wb3J0Ll9m
aWxlc3lzdGVtLCBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgcGF0aHMsIHNraXBwZWRf
ZGlyZWN0b3JpZXMsIHNlbGYuX2lzX3Rlc3RfZmlsZSwgc2VsZi5fcG9ydC50ZXN0X2tleSkKICAg
ICAgICAgcmV0dXJuIFtzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZikgZm9yIGYg
aW4gZmlsZXNdCiAKQEAgLTExOCw2ICsxMTgsOSBAQCBjbGFzcyBMYXlvdXRUZXN0RmluZGVyKG9i
amVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgc2VsZi5faXNfdzNj
X3Jlc291cmNlX2ZpbGUoZmlsZXN5c3RlbSwgZGlybmFtZSwgZmlsZW5hbWUpOgogICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB3ZWJzb2NrZXQgdG9v
bGluZworICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnX3dzaC5weScpOgorICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgX2lzX3czY19y
ZXNvdXJjZV9maWxlKHNlbGYsIGZpbGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1lKToKQEAgLTEz
MSw2ICsxMzQsMTAgQEAgY2xhc3MgTGF5b3V0VGVzdEZpbmRlcihvYmplY3QpOgogICAgICAgICAg
ICAganNvbl9kYXRhID0gZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShmaWxlcGF0aCkKICAgICAg
ICAgICAgIHNlbGYuX3czY19yZXNvdXJjZV9maWxlcyA9IGpzb24ubG9hZHMoanNvbl9kYXRhKQog
CisgICAgICAgIF8sIGV4dGVuc2lvbiA9IGZpbGVzeXN0ZW0uc3BsaXRleHQoZmlsZW5hbWUpCisg
ICAgICAgIGlmIGV4dGVuc2lvbiA9PSAnLnB5JzoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisK
ICAgICAgICAgc3VicGF0aCA9IHBhdGhbbGVuKHczY19wYXRoKSArIDE6XS5yZXBsYWNlKCdcXCcs
ICcvJykKICAgICAgICAgaWYgc3VicGF0aCBpbiBzZWxmLl93M2NfcmVzb3VyY2VfZmlsZXNbImZp
bGVzIl06CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjcxNzQ2
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMjEtMDEtMjIgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtydW4td2Via2l0LXRlc3RzXSBTdXBwb3J0IHB5dGhvbiBsYXlvdXQgdGVzdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDc0OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbDVsaWIv
Z2VuZXJhdGUtdGVzdC13cmFwcGVyczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHRtbDVsaWIv
Z2VuZXJhdGUtdGVzdC13cmFwcGVycy5weS4KKyAgICAgICAgKiBodG1sNWxpYi9nZW5lcmF0ZS10
ZXN0LXdyYXBwZXJzLnB5OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvY29uZi9hcGFjaGUyLjIt
aHR0cGQuY29uZjogQWxsb3cgLnB5IGZpbGVzIHRvIGJlIHJ1biBhcyBDR0kgYmluYXJpZXMuCisg
ICAgICAgICogaHR0cC9jb25mL2FwYWNoZTIuNC1odHRwZC5jb25mOiBEaXR0by4KKyAgICAgICAg
KiBodHRwL2NvbmYvYXBhY2hlMi40LXBocDctaHR0cGQuY29uZjogRGl0dG8uCisgICAgICAgICog
aHR0cC9jb25mL2FyY2hsaW51eC1odHRwZC5jb25mOiBEaXR0by4KKyAgICAgICAgKiBodHRwL2Nv
bmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjAuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0cC9j
b25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4xLmNvbmY6IERpdHRvLgorICAgICAgICAqIGh0dHAv
Y29uZi9kZWJpYW4taHR0cGQtMi40LXBocDcuMi5jb25mOiBEaXR0by4KKyAgICAgICAgKiBodHRw
L2NvbmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjMuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0
cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy40LmNvbmY6IERpdHRvLgorICAgICAgICAqIGh0
dHAvY29uZi9mZWRvcmEtaHR0cGQtMi4yLmNvbmY6IERpdHRvLgorICAgICAgICAqIGh0dHAvY29u
Zi9mZWRvcmEtaHR0cGQtMi40LXBocDcuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0cC9jb25m
L2ZlZG9yYS1odHRwZC0yLjQuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0cC9jb25mL2ZsYXRw
YWstaHR0cGQuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0cC9jb25mL3dpbi1odHRwZC0yLjQt
cGhwNS5jb25mOiBEaXR0by4KKyAgICAgICAgKiBodHRwL2NvbmYvd2luLWh0dHBkLTIuNC1waHA3
LmNvbmY6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3RyYWNrL29wZXJhL3RyYWNrL3dlYnZ0dC9w
YXJzaW5nLWN1ZS1kYXRhL2J1aWxkdGVzdHM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL21lZGlh
L3RyYWNrL29wZXJhL3RyYWNrL3dlYnZ0dC9wYXJzaW5nLWN1ZS1kYXRhL2J1aWxkdGVzdHMucHku
CisgICAgICAgICogbWVkaWEvdHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3BhcnNpbmctY3VlLWRh
dGEvYnVpbGR0ZXN0cy5weTogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJnbC9nZW5lcmF0ZS13ZWJn
bC10ZXN0czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVz
dHMucHkuCisgICAgICAgICogd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHk6IFJlbW92ZWQu
CisKIDIwMjEtMDEtMjIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IERpc2FibGUgT3B0aW9uczp1c2VBdE1ldGhvZCBiZWNhdXNlIG9mIGNvbXBhdGliaWxpdHkgaXNz
dWUuCkluZGV4OiBMYXlvdXRUZXN0cy9odG1sNWxpYi9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0bWw1bGliL2dlbmVyYXRlLXRlc3Qtd3JhcHBlcnMJ
KHJldmlzaW9uIDI3MTc0NikJKGZyb20gTGF5b3V0VGVzdHMvaHRtbDVsaWIvZ2VuZXJhdGUtdGVz
dC13cmFwcGVycy5weToyNzE3NDYpCisrKyBMYXlvdXRUZXN0cy9odG1sNWxpYi9nZW5lcmF0ZS10
ZXN0LXdyYXBwZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI0IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMgQ29weXJpZ2h0IChjKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBVc2VkIGZvciBnZW5lcmF0aW5nIExh
eW91dFRlc3QtY29tcGF0aWJsZSBodG1sIGZpbGVzIHRvIHJ1biBodG1sNWxpYiAqLmRhdCBmaWxl
cy4KKworaW1wb3J0IG9zCitpbXBvcnQgZ2xvYgorCisKK2NsYXNzIFdyYXBwZXJHZW5lcmF0b3Io
b2JqZWN0KToKKyAgICBJTlBVVF9ESVJFQ1RPUlkgPSAicmVzb3VyY2VzIgorICAgIElOUFVUX1NV
RkZJWCA9ICIuZGF0IgorICAgIE9VVFBVVF9ESVJFQ1RPUlkgPSAiZ2VuZXJhdGVkIgorICAgIEhB
Uk5FU1NfUFJFRklYID0gInJ1bi0iCisgICAgSEFSTkVTU19TVUZGSVggPSAiLmh0bWwiCisgICAg
RVhQRUNUQUlPTl9TVUZGSVggPSAiLWV4cGVjdGVkLnR4dCIKKyAgICBIQVJORVNTX1RZUEVTID0g
KCJ3cml0ZSIsICJkYXRhIikKKworICAgIEhBUk5FU1NfVEVNUExBVEUgPSAiIiI8IURPQ1RZUEUg
aHRtbD4KKzxzY3JpcHQ+Cit2YXIgdGVzdF9maWxlcyA9IFsgJyUodGVzdF9wYXRoKXMnIF0KKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+
PC9zY3JpcHQ+CislKGV4dHJhX2NvbnRlbnQpcworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9y
dW5uZXIuanMiPjwvc2NyaXB0PgorIiIiCisKKyAgICBkZWYgX2ZpbGVzX2luX2RpcmVjdG9yeV93
aXRoX3N1ZmZpeChzZWxmLCBkaXJlY3RvcnksIHN1ZmZpeCk6CisgICAgICAgIHJldHVybiBnbG9i
Lmdsb2Iob3MucGF0aC5qb2luKGRpcmVjdG9yeSwgJyonICsgc3VmZml4KSkKKworICAgIGRlZiBf
bGFzdF9wYXRoX2NvbXBvbmVudF9yZW1vdmluZ19zdWZmaXgoc2VsZiwgcGF0aCwgc3VmZml4KToK
KyAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXQocGF0aClbLTFdWzotbGVuKHN1ZmZpeCldCisK
KyAgICBkZWYgX3JlbW92ZV9oYXJuZXNzX3ByZWZpeChzZWxmLCBuYW1lKToKKyAgICAgICAgYXNz
ZXJ0KG5hbWUuc3RhcnRzd2l0aChzZWxmLkhBUk5FU1NfUFJFRklYKSkKKyAgICAgICAgcmV0dXJu
IG5hbWVbbGVuKHNlbGYuSEFSTkVTU19QUkVGSVgpOl0KKworICAgIGRlZiBfcmVtb3ZlX2hhcm5l
c3NfdHlwZShzZWxmLCBuYW1lKToKKyAgICAgICAgcGFydHMgPSBuYW1lLnNwbGl0KCctJykKKyAg
ICAgICAgYXNzZXJ0KHBhcnRzWy0xXSBpbiBzZWxmLkhBUk5FU1NfVFlQRVMpCisgICAgICAgIHJl
dHVybiAiLSIuam9pbihwYXJ0c1s6LTFdKQorCisgICAgZGVmIF90ZXN0X25hbWVfZnJvbV9oYXJu
ZXNzX25hbWUoc2VsZiwgbmFtZSk6CisgICAgICAgIG5hbWUgPSBzZWxmLl9yZW1vdmVfaGFybmVz
c19wcmVmaXgobmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlbW92ZV9oYXJuZXNzX3R5cGUo
bmFtZSkKKworICAgIGRlZiBfcmVtb3ZlX3N0YWxlX3Rlc3RzKHNlbGYsIHRlc3RfbmFtZXMpOgor
ICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLl9maWxlc19pbl9kaXJlY3Rvcnlfd2l0aF9zdWZmaXgo
c2VsZi5PVVRQVVRfRElSRUNUT1JZLCBzZWxmLkhBUk5FU1NfU1VGRklYKToKKyAgICAgICAgICAg
IG5hbWUgPSBzZWxmLl9sYXN0X3BhdGhfY29tcG9uZW50X3JlbW92aW5nX3N1ZmZpeChwYXRoLCBz
ZWxmLkhBUk5FU1NfU1VGRklYKQorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX3Rlc3RfbmFtZV9m
cm9tX2hhcm5lc3NfbmFtZShuYW1lKQorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gdGVzdF9u
YW1lczoKKyAgICAgICAgICAgICAgICBwcmludCgiUmVtb3ZpbmcgJXMsICVzIG5vIGxvbmdlciBl
eGlzdHMuIiAlIChwYXRoLCBzZWxmLl9pbnB1dF9wYXRoKG5hbWUpKSkKKyAgICAgICAgICAgICAg
ICBvcy5yZW1vdmUocGF0aCkKKworICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLl9maWxlc19pbl9k
aXJlY3Rvcnlfd2l0aF9zdWZmaXgoc2VsZi5PVVRQVVRfRElSRUNUT1JZLCBzZWxmLkVYUEVDVEFJ
T05fU1VGRklYKToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9sYXN0X3BhdGhfY29tcG9uZW50
X3JlbW92aW5nX3N1ZmZpeChwYXRoLCBzZWxmLkVYUEVDVEFJT05fU1VGRklYKQorICAgICAgICAg
ICAgbmFtZSA9IHNlbGYuX3Rlc3RfbmFtZV9mcm9tX2hhcm5lc3NfbmFtZShuYW1lKQorICAgICAg
ICAgICAgaWYgbmFtZSBub3QgaW4gdGVzdF9uYW1lczoKKyAgICAgICAgICAgICAgICBwcmludCgi
UmVtb3ZpbmcgJXMsICVzIG5vIGxvbmdlciBleGlzdHMuIiAlIChwYXRoLCBzZWxmLl9pbnB1dF9w
YXRoKG5hbWUpKSkKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUocGF0aCkKKworICAgIGRlZiBf
aW5wdXRfcGF0aChzZWxmLCB0ZXN0X25hbWUpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2lu
KHNlbGYuSU5QVVRfRElSRUNUT1JZLCB0ZXN0X25hbWUgKyBzZWxmLklOUFVUX1NVRkZJWCkKKwor
ICAgIGRlZiBfaGFybmVzc19wYXRoKHNlbGYsIHRlc3RfbmFtZSwgdXNlX3dyaXRlKToKKyAgICAg
ICAgaGFybmVzc19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuT1VUUFVUX0RJUkVDVE9SWSwgc2Vs
Zi5IQVJORVNTX1BSRUZJWCArIHRlc3RfbmFtZSkKKyAgICAgICAgaWYgdXNlX3dyaXRlOgorICAg
ICAgICAgICAgaGFybmVzc19wYXRoICs9ICItd3JpdGUiCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBoYXJuZXNzX3BhdGggKz0gIi1kYXRhIgorICAgICAgICByZXR1cm4gaGFybmVzc19wYXRo
ICsgc2VsZi5IQVJORVNTX1NVRkZJWAorCisgICAgZGVmIF9oYXJuZXNzX2NvbnRlbnQoc2VsZiwg
dGVzdF9uYW1lLCB1c2Vfd3JpdGUpOgorICAgICAgICBleHRyYV9jb250ZW50ID0gIiIKKyAgICAg
ICAgaWYgbm90IHVzZV93cml0ZToKKyAgICAgICAgICAgIGV4dHJhX2NvbnRlbnQgPSAiPHNjcmlw
dD53aW5kb3cuZm9yY2VEYXRhVVJMcyA9IHRydWU7PC9zY3JpcHQ+IjsKKyAgICAgICAgcmV0dXJu
IHNlbGYuSEFSTkVTU19URU1QTEFURSAlIHsKKyAgICAgICAgICAgICMgRklYTUU6IC4uIHNob3Vs
ZCBiZSByZWxhdGl2ZSB0byB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgaW4gT1VUUFVUX0RJUkVD
VE9SWQorICAgICAgICAgICAgJ3Rlc3RfcGF0aCc6IG9zLnBhdGguam9pbignLi4nLCBzZWxmLl9p
bnB1dF9wYXRoKHRlc3RfbmFtZSkpLAorICAgICAgICAgICAgJ2V4dHJhX2NvbnRlbnQnOiBleHRy
YV9jb250ZW50LAorICAgICAgICB9CisKKyAgICBkZWYgX3dyaXRlX2hhcm5lc3Moc2VsZiwgdGVz
dF9uYW1lLCB1c2Vfd3JpdGUpOgorICAgICAgICBoYXJuZXNzX2ZpbGUgPSBvcGVuKHNlbGYuX2hh
cm5lc3NfcGF0aCh0ZXN0X25hbWUsIHVzZV93cml0ZSksICJ3IikKKyAgICAgICAgaGFybmVzc19m
aWxlLndyaXRlKHNlbGYuX2hhcm5lc3NfY29udGVudCh0ZXN0X25hbWUsIHVzZV93cml0ZSkpCisK
KyAgICBkZWYgbWFpbihzZWxmKToKKyAgICAgICAgdGVzdF9uYW1lcyA9IFtzZWxmLl9sYXN0X3Bh
dGhfY29tcG9uZW50X3JlbW92aW5nX3N1ZmZpeChwYXRoLCBzZWxmLklOUFVUX1NVRkZJWCkgZm9y
IHBhdGggaW4gc2VsZi5fZmlsZXNfaW5fZGlyZWN0b3J5X3dpdGhfc3VmZml4KHNlbGYuSU5QVVRf
RElSRUNUT1JZLCBzZWxmLklOUFVUX1NVRkZJWCldCisKKyAgICAgICAgc2VsZi5fcmVtb3ZlX3N0
YWxlX3Rlc3RzKHRlc3RfbmFtZXMpCisKKyAgICAgICAgZm9yIG5hbWUgaW4gdGVzdF9uYW1lczoK
KyAgICAgICAgICAgIHNlbGYuX3dyaXRlX2hhcm5lc3MobmFtZSwgVHJ1ZSkKKyAgICAgICAgICAg
IHNlbGYuX3dyaXRlX2hhcm5lc3MobmFtZSwgRmFsc2UpCisKKworaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKKyAgICBXcmFwcGVyR2VuZXJhdG9yKCkubWFpbigpCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9odG1sNWxpYi9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvaHRtbDVsaWIvZ2VuZXJhdGUtdGVz
dC13cmFwcGVycy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odG1sNWxpYi9nZW5lcmF0
ZS10ZXN0LXdyYXBwZXJzLnB5CShyZXZpc2lvbiAyNzE3NDYpCisrKyBMYXlvdXRUZXN0cy9odG1s
NWxpYi9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzLnB5CShub25leGlzdGVudCkKQEAgLTEsMTI0ICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKGMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jCi0jIFVzZWQg
Zm9yIGdlbmVyYXRpbmcgTGF5b3V0VGVzdC1jb21wYXRpYmxlIGh0bWwgZmlsZXMgdG8gcnVuIGh0
bWw1bGliICouZGF0IGZpbGVzLgotCi1pbXBvcnQgb3MKLWltcG9ydCBnbG9iCi0KLQotY2xhc3Mg
V3JhcHBlckdlbmVyYXRvcihvYmplY3QpOgotICAgIElOUFVUX0RJUkVDVE9SWSA9ICJyZXNvdXJj
ZXMiCi0gICAgSU5QVVRfU1VGRklYID0gIi5kYXQiCi0gICAgT1VUUFVUX0RJUkVDVE9SWSA9ICJn
ZW5lcmF0ZWQiCi0gICAgSEFSTkVTU19QUkVGSVggPSAicnVuLSIKLSAgICBIQVJORVNTX1NVRkZJ
WCA9ICIuaHRtbCIKLSAgICBFWFBFQ1RBSU9OX1NVRkZJWCA9ICItZXhwZWN0ZWQudHh0IgotICAg
IEhBUk5FU1NfVFlQRVMgPSAoIndyaXRlIiwgImRhdGEiKQotCi0gICAgSEFSTkVTU19URU1QTEFU
RSA9ICIiIjwhRE9DVFlQRSBodG1sPgotPHNjcmlwdD4KLXZhciB0ZXN0X2ZpbGVzID0gWyAnJSh0
ZXN0X3BhdGgpcycgXQotPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1
bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KLSUoZXh0cmFfY29udGVudClzCi08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Ci0iIiIKLQotICAgIGRlZiBfZmls
ZXNfaW5fZGlyZWN0b3J5X3dpdGhfc3VmZml4KHNlbGYsIGRpcmVjdG9yeSwgc3VmZml4KToKLSAg
ICAgICAgcmV0dXJuIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCAnKicgKyBzdWZm
aXgpKQotCi0gICAgZGVmIF9sYXN0X3BhdGhfY29tcG9uZW50X3JlbW92aW5nX3N1ZmZpeChzZWxm
LCBwYXRoLCBzdWZmaXgpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdChwYXRoKVstMV1b
Oi1sZW4oc3VmZml4KV0KLQotICAgIGRlZiBfcmVtb3ZlX2hhcm5lc3NfcHJlZml4KHNlbGYsIG5h
bWUpOgotICAgICAgICBhc3NlcnQobmFtZS5zdGFydHN3aXRoKHNlbGYuSEFSTkVTU19QUkVGSVgp
KQotICAgICAgICByZXR1cm4gbmFtZVtsZW4oc2VsZi5IQVJORVNTX1BSRUZJWCk6XQotCi0gICAg
ZGVmIF9yZW1vdmVfaGFybmVzc190eXBlKHNlbGYsIG5hbWUpOgotICAgICAgICBwYXJ0cyA9IG5h
bWUuc3BsaXQoJy0nKQotICAgICAgICBhc3NlcnQocGFydHNbLTFdIGluIHNlbGYuSEFSTkVTU19U
WVBFUykKLSAgICAgICAgcmV0dXJuICItIi5qb2luKHBhcnRzWzotMV0pCi0KLSAgICBkZWYgX3Rl
c3RfbmFtZV9mcm9tX2hhcm5lc3NfbmFtZShzZWxmLCBuYW1lKToKLSAgICAgICAgbmFtZSA9IHNl
bGYuX3JlbW92ZV9oYXJuZXNzX3ByZWZpeChuYW1lKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVt
b3ZlX2hhcm5lc3NfdHlwZShuYW1lKQotCi0gICAgZGVmIF9yZW1vdmVfc3RhbGVfdGVzdHMoc2Vs
ZiwgdGVzdF9uYW1lcyk6Ci0gICAgICAgIGZvciBwYXRoIGluIHNlbGYuX2ZpbGVzX2luX2RpcmVj
dG9yeV93aXRoX3N1ZmZpeChzZWxmLk9VVFBVVF9ESVJFQ1RPUlksIHNlbGYuSEFSTkVTU19TVUZG
SVgpOgotICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2xhc3RfcGF0aF9jb21wb25lbnRfcmVtb3Zp
bmdfc3VmZml4KHBhdGgsIHNlbGYuSEFSTkVTU19TVUZGSVgpCi0gICAgICAgICAgICBuYW1lID0g
c2VsZi5fdGVzdF9uYW1lX2Zyb21faGFybmVzc19uYW1lKG5hbWUpCi0gICAgICAgICAgICBpZiBu
YW1lIG5vdCBpbiB0ZXN0X25hbWVzOgotICAgICAgICAgICAgICAgIHByaW50KCJSZW1vdmluZyAl
cywgJXMgbm8gbG9uZ2VyIGV4aXN0cy4iICUgKHBhdGgsIHNlbGYuX2lucHV0X3BhdGgobmFtZSkp
KQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQotCi0gICAgICAgIGZvciBwYXRoIGlu
IHNlbGYuX2ZpbGVzX2luX2RpcmVjdG9yeV93aXRoX3N1ZmZpeChzZWxmLk9VVFBVVF9ESVJFQ1RP
UlksIHNlbGYuRVhQRUNUQUlPTl9TVUZGSVgpOgotICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2xh
c3RfcGF0aF9jb21wb25lbnRfcmVtb3Zpbmdfc3VmZml4KHBhdGgsIHNlbGYuRVhQRUNUQUlPTl9T
VUZGSVgpCi0gICAgICAgICAgICBuYW1lID0gc2VsZi5fdGVzdF9uYW1lX2Zyb21faGFybmVzc19u
YW1lKG5hbWUpCi0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiB0ZXN0X25hbWVzOgotICAgICAg
ICAgICAgICAgIHByaW50KCJSZW1vdmluZyAlcywgJXMgbm8gbG9uZ2VyIGV4aXN0cy4iICUgKHBh
dGgsIHNlbGYuX2lucHV0X3BhdGgobmFtZSkpKQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShw
YXRoKQotCi0gICAgZGVmIF9pbnB1dF9wYXRoKHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAgICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oc2VsZi5JTlBVVF9ESVJFQ1RPUlksIHRlc3RfbmFtZSArIHNlbGYu
SU5QVVRfU1VGRklYKQotCi0gICAgZGVmIF9oYXJuZXNzX3BhdGgoc2VsZiwgdGVzdF9uYW1lLCB1
c2Vfd3JpdGUpOgotICAgICAgICBoYXJuZXNzX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5PVVRQ
VVRfRElSRUNUT1JZLCBzZWxmLkhBUk5FU1NfUFJFRklYICsgdGVzdF9uYW1lKQotICAgICAgICBp
ZiB1c2Vfd3JpdGU6Ci0gICAgICAgICAgICBoYXJuZXNzX3BhdGggKz0gIi13cml0ZSIKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGhhcm5lc3NfcGF0aCArPSAiLWRhdGEiCi0gICAgICAgIHJl
dHVybiBoYXJuZXNzX3BhdGggKyBzZWxmLkhBUk5FU1NfU1VGRklYCi0KLSAgICBkZWYgX2hhcm5l
c3NfY29udGVudChzZWxmLCB0ZXN0X25hbWUsIHVzZV93cml0ZSk6Ci0gICAgICAgIGV4dHJhX2Nv
bnRlbnQgPSAiIgotICAgICAgICBpZiBub3QgdXNlX3dyaXRlOgotICAgICAgICAgICAgZXh0cmFf
Y29udGVudCA9ICI8c2NyaXB0PndpbmRvdy5mb3JjZURhdGFVUkxzID0gdHJ1ZTs8L3NjcmlwdD4i
OwotICAgICAgICByZXR1cm4gc2VsZi5IQVJORVNTX1RFTVBMQVRFICUgewotICAgICAgICAgICAg
IyBGSVhNRTogLi4gc2hvdWxkIGJlIHJlbGF0aXZlIHRvIHRoZSBudW1iZXIgb2YgY29tcG9uZW50
cyBpbiBPVVRQVVRfRElSRUNUT1JZCi0gICAgICAgICAgICAndGVzdF9wYXRoJzogb3MucGF0aC5q
b2luKCcuLicsIHNlbGYuX2lucHV0X3BhdGgodGVzdF9uYW1lKSksCi0gICAgICAgICAgICAnZXh0
cmFfY29udGVudCc6IGV4dHJhX2NvbnRlbnQsCi0gICAgICAgIH0KLQotICAgIGRlZiBfd3JpdGVf
aGFybmVzcyhzZWxmLCB0ZXN0X25hbWUsIHVzZV93cml0ZSk6Ci0gICAgICAgIGhhcm5lc3NfZmls
ZSA9IG9wZW4oc2VsZi5faGFybmVzc19wYXRoKHRlc3RfbmFtZSwgdXNlX3dyaXRlKSwgInciKQot
ICAgICAgICBoYXJuZXNzX2ZpbGUud3JpdGUoc2VsZi5faGFybmVzc19jb250ZW50KHRlc3RfbmFt
ZSwgdXNlX3dyaXRlKSkKLQotICAgIGRlZiBtYWluKHNlbGYpOgotICAgICAgICB0ZXN0X25hbWVz
ID0gW3NlbGYuX2xhc3RfcGF0aF9jb21wb25lbnRfcmVtb3Zpbmdfc3VmZml4KHBhdGgsIHNlbGYu
SU5QVVRfU1VGRklYKSBmb3IgcGF0aCBpbiBzZWxmLl9maWxlc19pbl9kaXJlY3Rvcnlfd2l0aF9z
dWZmaXgoc2VsZi5JTlBVVF9ESVJFQ1RPUlksIHNlbGYuSU5QVVRfU1VGRklYKV0KLQotICAgICAg
ICBzZWxmLl9yZW1vdmVfc3RhbGVfdGVzdHModGVzdF9uYW1lcykKLQotICAgICAgICBmb3IgbmFt
ZSBpbiB0ZXN0X25hbWVzOgotICAgICAgICAgICAgc2VsZi5fd3JpdGVfaGFybmVzcyhuYW1lLCBU
cnVlKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfaGFybmVzcyhuYW1lLCBGYWxzZSkKLQotCi1p
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIFdyYXBwZXJHZW5lcmF0b3IoKS5tYWluKCkK
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0bWw1bGliL2dlbmVyYXRlLXRlc3Qt
d3JhcHBlcnMucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCww
ICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvY29uZi9hcGFjaGUyLjItaHR0cGQuY29uZgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL2NvbmYvYXBhY2hlMi4yLWh0dHBkLmNvbmYJKHJldmlzaW9uIDI3MTc0NikKKysrIExh
eW91dFRlc3RzL2h0dHAvY29uZi9hcGFjaGUyLjItaHR0cGQuY29uZgkod29ya2luZyBjb3B5KQpA
QCAtMTA4LDcgKzEwOCw3IEBAIFNlcnZlclNpZ25hdHVyZSBPbgogICAgIEFkZEVuY29kaW5nIHgt
Y29tcHJlc3MgLloKICAgICBBZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIAotICAgIEFkZEhh
bmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dp
IC5wbCAucHkKIAogICAgIEFkZFR5cGUgdGV4dC9odG1sIC5zaHRtbAogICAgIEFkZEhhbmRsZXIg
c2VydmVyLXBhcnNlZCAuc2h0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9hcGFjaGUy
LjQtaHR0cGQuY29uZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL2NvbmYvYXBhY2hl
Mi40LWh0dHBkLmNvbmYJKHJldmlzaW9uIDI3MTc0NikKKysrIExheW91dFRlc3RzL2h0dHAvY29u
Zi9hcGFjaGUyLjQtaHR0cGQuY29uZgkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBA
IFNlcnZlclNpZ25hdHVyZSBPbgogICAgIEFkZEVuY29kaW5nIHgtY29tcHJlc3MgLloKICAgICBB
ZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIAotICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAu
Y2dpIC5wbAorICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbCAucHkKIAogICAgIEFk
ZFR5cGUgdGV4dC9odG1sIC5zaHRtbAogICAgIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAuc2h0
bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9hcGFjaGUyLjQtcGhwNy1odHRwZC5jb25m
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29uZi9hcGFjaGUyLjQtcGhwNy1odHRw
ZC5jb25mCShyZXZpc2lvbiAyNzE3NDYpCisrKyBMYXlvdXRUZXN0cy9odHRwL2NvbmYvYXBhY2hl
Mi40LXBocDctaHR0cGQuY29uZgkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIFNl
cnZlclNpZ25hdHVyZSBPbgogICAgIEFkZEVuY29kaW5nIHgtY29tcHJlc3MgLloKICAgICBBZGRF
bmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIAotICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dp
IC5wbAorICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbCAucHkKIAogICAgIEFkZFR5
cGUgdGV4dC9odG1sIC5zaHRtbAogICAgIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAuc2h0bWwK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9hcmNobGludXgtaHR0cGQuY29uZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL2NvbmYvYXJjaGxpbnV4LWh0dHBkLmNvbmYJKHJldmlz
aW9uIDI3MTc0NikKKysrIExheW91dFRlc3RzL2h0dHAvY29uZi9hcmNobGludXgtaHR0cGQuY29u
Zgkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIEFkZEVuY29kaW5nIHgtZ3ppcCAu
Z3ogLnRnegogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydCAuY3J0CiBBZGRUeXBl
IGFwcGxpY2F0aW9uL3gtcGtjczctY3JsICAgIC5jcmwKIAotQWRkSGFuZGxlciBjZ2ktc2NyaXB0
IC5jZ2kgLnBsCitBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwgLnB5CiAKIEFkZFR5cGUg
dGV4dC9odG1sIC5zaHRtbAogQWRkT3V0cHV0RmlsdGVyIElOQ0xVREVTIC5zaHRtbApJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4wLmNvbmYKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4wLmNv
bmYJKHJldmlzaW9uIDI3MTc0NikKKysrIExheW91dFRlc3RzL2h0dHAvY29uZi9kZWJpYW4taHR0
cGQtMi40LXBocDcuMC5jb25mCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgQWRk
RW5jb2RpbmcgeC1nemlwIC5neiAudGd6CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gteDUwOS1jYS1j
ZXJ0IC5jcnQKIEFkZFR5cGUgYXBwbGljYXRpb24veC1wa2NzNy1jcmwgICAgLmNybAogCi1BZGRI
YW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwKK0FkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5w
bCAucHkKIAogQWRkVHlwZSB0ZXh0L2h0bWwgLnNodG1sCiBBZGRPdXRwdXRGaWx0ZXIgSU5DTFVE
RVMgLnNodG1sCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1w
aHA3LjEuY29uZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0
dHBkLTIuNC1waHA3LjEuY29uZgkocmV2aXNpb24gMjcxNzQ2KQorKysgTGF5b3V0VGVzdHMvaHR0
cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4xLmNvbmYJKHdvcmtpbmcgY29weSkKQEAgLTEw
NSw3ICsxMDUsNyBAQCBBZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIEFkZFR5cGUgYXBwbGlj
YXRpb24veC14NTA5LWNhLWNlcnQgLmNydAogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXBrY3M3LWNy
bCAgICAuY3JsCiAKLUFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorQWRkSGFuZGxlciBj
Z2ktc2NyaXB0IC5jZ2kgLnBsIC5weQogCiBBZGRUeXBlIHRleHQvaHRtbCAuc2h0bWwKIEFkZE91
dHB1dEZpbHRlciBJTkNMVURFUyAuc2h0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9k
ZWJpYW4taHR0cGQtMi40LXBocDcuMi5jb25mCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvY29uZi9kZWJpYW4taHR0cGQtMi40LXBocDcuMi5jb25mCShyZXZpc2lvbiAyNzE3NDYpCisr
KyBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjIuY29uZgkod29y
a2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIEFkZEVuY29kaW5nIHgtZ3ppcCAuZ3ogLnRn
egogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydCAuY3J0CiBBZGRUeXBlIGFwcGxp
Y2F0aW9uL3gtcGtjczctY3JsICAgIC5jcmwKIAotQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kg
LnBsCitBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwgLnB5CiAKIEFkZFR5cGUgdGV4dC9o
dG1sIC5zaHRtbAogQWRkT3V0cHV0RmlsdGVyIElOQ0xVREVTIC5zaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4zLmNvbmYKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4zLmNvbmYJKHJl
dmlzaW9uIDI3MTc0NikKKysrIExheW91dFRlc3RzL2h0dHAvY29uZi9kZWJpYW4taHR0cGQtMi40
LXBocDcuMy5jb25mCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgQWRkRW5jb2Rp
bmcgeC1nemlwIC5neiAudGd6CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0IC5j
cnQKIEFkZFR5cGUgYXBwbGljYXRpb24veC1wa2NzNy1jcmwgICAgLmNybAogCi1BZGRIYW5kbGVy
IGNnaS1zY3JpcHQgLmNnaSAucGwKK0FkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbCAucHkK
IAogQWRkVHlwZSB0ZXh0L2h0bWwgLnNodG1sCiBBZGRPdXRwdXRGaWx0ZXIgSU5DTFVERVMgLnNo
dG1sCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjQu
Y29uZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0dHBkLTIu
NC1waHA3LjQuY29uZgkocmV2aXNpb24gMjcxNzQ2KQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25m
L2RlYmlhbi1odHRwZC0yLjQtcGhwNy40LmNvbmYJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsx
MDUsNyBAQCBBZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIEFkZFR5cGUgYXBwbGljYXRpb24v
eC14NTA5LWNhLWNlcnQgLmNydAogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXBrY3M3LWNybCAgICAu
Y3JsCiAKLUFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorQWRkSGFuZGxlciBjZ2ktc2Ny
aXB0IC5jZ2kgLnBsIC5weQogCiBBZGRUeXBlIHRleHQvaHRtbCAuc2h0bWwKIEFkZE91dHB1dEZp
bHRlciBJTkNMVURFUyAuc2h0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9mZWRvcmEt
aHR0cGQtMi4yLmNvbmYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZlZG9y
YS1odHRwZC0yLjIuY29uZgkocmV2aXNpb24gMjcxNzQ2KQorKysgTGF5b3V0VGVzdHMvaHR0cC9j
b25mL2ZlZG9yYS1odHRwZC0yLjIuY29uZgkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3
IEBAIEFkZEVuY29kaW5nIHgtZ3ppcCAuZ3ogLnRnegogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXg1
MDktY2EtY2VydCAuY3J0CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtcGtjczctY3JsICAgIC5jcmwK
IAotQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsCitBZGRIYW5kbGVyIGNnaS1zY3JpcHQg
LmNnaSAucGwgLnB5CiAKIEFkZFR5cGUgdGV4dC9odG1sIC5zaHRtbAogQWRkT3V0cHV0RmlsdGVy
IElOQ0xVREVTIC5zaHRtbApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZlZG9yYS1odHRw
ZC0yLjQtcGhwNy5jb25mCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29uZi9mZWRv
cmEtaHR0cGQtMi40LXBocDcuY29uZgkocmV2aXNpb24gMjcxNzQ2KQorKysgTGF5b3V0VGVzdHMv
aHR0cC9jb25mL2ZlZG9yYS1odHRwZC0yLjQtcGhwNy5jb25mCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDksNyArMTA5LDcgQEAgQWRkRW5jb2RpbmcgeC1nemlwIC5neiAudGd6CiBBZGRUeXBlIGFwcGxp
Y2F0aW9uL3gteDUwOS1jYS1jZXJ0IC5jcnQKIEFkZFR5cGUgYXBwbGljYXRpb24veC1wa2NzNy1j
cmwgICAgLmNybAogCi1BZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwKK0FkZEhhbmRsZXIg
Y2dpLXNjcmlwdCAuY2dpIC5wbCAucHkKIAogQWRkVHlwZSB0ZXh0L2h0bWwgLnNodG1sCiBBZGRP
dXRwdXRGaWx0ZXIgSU5DTFVERVMgLnNodG1sCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL2NvbmYv
ZmVkb3JhLWh0dHBkLTIuNC5jb25mCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29u
Zi9mZWRvcmEtaHR0cGQtMi40LmNvbmYJKHJldmlzaW9uIDI3MTc0NikKKysrIExheW91dFRlc3Rz
L2h0dHAvY29uZi9mZWRvcmEtaHR0cGQtMi40LmNvbmYJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3
ICsxMDksNyBAQCBBZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIEFkZFR5cGUgYXBwbGljYXRp
b24veC14NTA5LWNhLWNlcnQgLmNydAogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXBrY3M3LWNybCAg
ICAuY3JsCiAKLUFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorQWRkSGFuZGxlciBjZ2kt
c2NyaXB0IC5jZ2kgLnBsIC5weQogCiBBZGRUeXBlIHRleHQvaHRtbCAuc2h0bWwKIEFkZE91dHB1
dEZpbHRlciBJTkNMVURFUyAuc2h0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9mbGF0
cGFrLWh0dHBkLmNvbmYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZsYXRw
YWstaHR0cGQuY29uZgkocmV2aXNpb24gMjcxNzQ2KQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25m
L2ZsYXRwYWstaHR0cGQuY29uZgkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIEFk
ZEVuY29kaW5nIHgtZ3ppcCAuZ3ogLnRnegogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXg1MDktY2Et
Y2VydCAuY3J0CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtcGtjczctY3JsICAgIC5jcmwKIAotQWRk
SGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsCitBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAu
cGwgLnB5CiAKIEFkZFR5cGUgdGV4dC9odG1sIC5zaHRtbAogQWRkT3V0cHV0RmlsdGVyIElOQ0xV
REVTIC5zaHRtbApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhw
NS5jb25mCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29uZi93aW4taHR0cGQtMi40
LXBocDUuY29uZgkocmV2aXNpb24gMjcxNzQ2KQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dp
bi1odHRwZC0yLjQtcGhwNS5jb25mCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAg
U2VydmVyU2lnbmF0dXJlIE9uCiAgICAgQWRkRW5jb2RpbmcgeC1jb21wcmVzcyAuWgogICAgIEFk
ZEVuY29kaW5nIHgtZ3ppcCAuZ3ogLnRnegogCi0gICAgQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5j
Z2kgLnBsCisgICAgQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsIC5weQogCiAgICAgQWRk
VHlwZSB0ZXh0L2h0bWwgLnNodG1sCiAgICAgQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5zaHRt
bApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29uZi93aW4taHR0cGQtMi40LXBocDcuY29u
ZgkocmV2aXNpb24gMjcxNzQ2KQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0y
LjQtcGhwNy5jb25mCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgU2VydmVyU2ln
bmF0dXJlIE9uCiAgICAgQWRkRW5jb2RpbmcgeC1jb21wcmVzcyAuWgogICAgIEFkZEVuY29kaW5n
IHgtZ3ppcCAuZ3ogLnRnegogCi0gICAgQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsCisg
ICAgQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsIC5weQogCiAgICAgQWRkVHlwZSB0ZXh0
L2h0bWwgLnNodG1sCiAgICAgQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5zaHRtbApJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3BhcnNpbmctY3VlLWRh
dGEvYnVpbGR0ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVy
YS90cmFjay93ZWJ2dHQvcGFyc2luZy1jdWUtZGF0YS9idWlsZHRlc3RzCShyZXZpc2lvbiAyNzE3
NDYpCShmcm9tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3RyYWNrL3dlYnZ0dC9wYXJz
aW5nLWN1ZS1kYXRhL2J1aWxkdGVzdHMucHk6MjcxNzQ2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3BhcnNpbmctY3VlLWRhdGEvYnVpbGR0ZXN0cwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisjIS91c3IvYmluL3B5dGhvbgorCitpbXBvcnQg
b3MKK2ltcG9ydCB1cmxsaWIKK2ltcG9ydCBoYXNobGliCisKK2RvY3RtcGwgPSAiIiI8IWRvY3R5
cGUgaHRtbD4KKzx0aXRsZT5XZWJWVFQgY3VlIGRhdGEgcGFyc2VyIHRlc3QgJXM8L3RpdGxlPgor
PHN0eWxlPnZpZGVvIHsgZGlzcGxheTpub25lIH08L3N0eWxlPgorPHNjcmlwdCBzcmM9Ly4uLy4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS8uLi8u
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0vY29yZS9zdGFuZGFyZHMvaHRtbC1wYXJzaW5nL2h0bWw1bGliX2hhcm5lc3MvdGVtcGxhdGUu
anM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0vY29yZS9zdGFuZGFyZHMvaHRtbC1wYXJzaW5nL2h0
bWw1bGliX2hhcm5lc3MvY29tbW9uLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vY29tbW9u
LmpzPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorcnVuVGVzdHMoWwor
JXMKK10pOworPC9zY3JpcHQ+IiIiCisKK3Rlc3RvYmogPSAie25hbWU6JyVzJywgaW5wdXQ6JyVz
JywgZXhwZWN0ZWQ6JyVzJ30iCisKK2RlZiBhcHBlbmR0ZXN0KHRlc3RzLCBpbnB1dCwgZXhwZWN0
ZWQpOgorICAgIHRlc3RzLmFwcGVuZCh0ZXN0b2JqICUgKGhhc2hsaWIuc2hhMShpbnB1dCkuaGV4
ZGlnZXN0KCksIHVybGxpYi5xdW90ZShpbnB1dFs6LTFdKSwgIHVybGxpYi5xdW90ZShleHBlY3Rl
ZFs6LTFdKSkpCisKK2ZpbGVzID0gb3MubGlzdGRpcignZGF0LycpCitmb3IgZmlsZSBpbiBmaWxl
czoKKyAgICBpZiBvcy5wYXRoLmlzZGlyKCdkYXQvJytmaWxlKSBvciBmaWxlWzBdID09ICIuIjoK
KyAgICAgICAgY29udGludWUKKyAgICB0ZXN0cyA9IFtdCisgICAgaW5wdXQgPSAiIgorICAgIGV4
cGVjdGVkID0gIiIKKyAgICBzdGF0ZSA9ICIiCisgICAgZiA9IG9wZW4oJ2RhdC8nK2ZpbGUpCisg
ICAgd2hpbGUgMToKKyAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQorICAgICAgICBpZiBub3Qg
bGluZToKKyAgICAgICAgICAgIGlmIHN0YXRlICE9ICIiOgorICAgICAgICAgICAgICAgIGFwcGVu
ZHRlc3QodGVzdHMsIGlucHV0LCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBpbnB1dCA9ICIi
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAiIgorICAgICAgICAgICAgICAgIHN0YXRlID0g
IiIKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGxpbmVbMF0gPT0gIiMiOgorICAgICAg
ICAgICAgc3RhdGUgPSBsaW5lCisgICAgICAgICAgICBpZiBsaW5lID09ICIjZG9jdW1lbnQtZnJh
Z21lbnRcbiI6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZCArIGxpbmUKKyAg
ICAgICAgZWxpZiBzdGF0ZSA9PSAiI2RhdGFcbiI6CisgICAgICAgICAgICBpbnB1dCA9IGlucHV0
ICsgbGluZQorICAgICAgICBlbGlmIHN0YXRlID09ICIjZXJyb3JzXG4iOgorICAgICAgICAgICAg
cGFzcworICAgICAgICBlbGlmIHN0YXRlID09ICIjZG9jdW1lbnQtZnJhZ21lbnRcbiI6CisgICAg
ICAgICAgICBpZiBsaW5lID09ICJcbiI6CisgICAgICAgICAgICAgICAgYXBwZW5kdGVzdCh0ZXN0
cywgaW5wdXQsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIGlucHV0ID0gIiIKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZCA9ICIiCisgICAgICAgICAgICAgICAgc3RhdGUgPSAiIgorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkICsgbGluZQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJmYWlsZWQgdG8gcGFy
c2UgZmlsZSAiK2ZpbGUrIiBsaW5lOiIrbGluZSsiIChzdGF0ZTogIitzdGF0ZSsiKSIpCisgICAg
Zi5jbG9zZSgpCisgICAgYmFyZW5hbWUgPSBmaWxlLnJlcGxhY2UoIi5kYXQiLCAiIikKKyAgICBv
dXQgPSBvcGVuKCd0ZXN0cy8nK2JhcmVuYW1lKyIuaHRtbCIsICJ3IikKKyAgICBvdXQud3JpdGUo
ZG9jdG1wbCAlIChiYXJlbmFtZSwgIixcbiIuam9pbih0ZXN0cykpKQorICAgIG91dC5jbG9zZSgp
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS90cmFj
ay93ZWJ2dHQvcGFyc2luZy1jdWUtZGF0YS9idWlsZHRlc3RzCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3Bh
cnNpbmctY3VlLWRhdGEvYnVpbGR0ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay9vcGVyYS90cmFjay93ZWJ2dHQvcGFyc2luZy1jdWUtZGF0YS9idWlsZHRlc3Rz
LnB5CShyZXZpc2lvbiAyNzE3NDYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS90
cmFjay93ZWJ2dHQvcGFyc2luZy1jdWUtZGF0YS9idWlsZHRlc3RzLnB5CShub25leGlzdGVudCkK
QEAgLTEsNjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLQotaW1wb3J0IG9zCi1pbXBvcnQg
dXJsbGliCi1pbXBvcnQgaGFzaGxpYgotCi1kb2N0bXBsID0gIiIiPCFkb2N0eXBlIGh0bWw+Ci08
dGl0bGU+V2ViVlRUIGN1ZSBkYXRhIHBhcnNlciB0ZXN0ICVzPC90aXRsZT4KLTxzdHlsZT52aWRl
byB7IGRpc3BsYXk6bm9uZSB9PC9zdHlsZT4KLTxzY3JpcHQgc3JjPS8uLi8uLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0vLi4vLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9L2NvcmUvc3Rh
bmRhcmRzL2h0bWwtcGFyc2luZy9odG1sNWxpYl9oYXJuZXNzL3RlbXBsYXRlLmpzPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9L2NvcmUvc3RhbmRhcmRzL2h0bWwtcGFyc2luZy9odG1sNWxpYl9oYXJu
ZXNzL2NvbW1vbi5qcz48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPS4uL2NvbW1vbi5qcz48L3Njcmlw
dD4KLTxkaXYgaWQ9bG9nPjwvZGl2PgotPHNjcmlwdD4KLXJ1blRlc3RzKFsKLSVzCi1dKTsKLTwv
c2NyaXB0PiIiIgotCi10ZXN0b2JqID0gIntuYW1lOiclcycsIGlucHV0OiclcycsIGV4cGVjdGVk
Oiclcyd9IgotCi1kZWYgYXBwZW5kdGVzdCh0ZXN0cywgaW5wdXQsIGV4cGVjdGVkKToKLSAgICB0
ZXN0cy5hcHBlbmQodGVzdG9iaiAlIChoYXNobGliLnNoYTEoaW5wdXQpLmhleGRpZ2VzdCgpLCB1
cmxsaWIucXVvdGUoaW5wdXRbOi0xXSksICB1cmxsaWIucXVvdGUoZXhwZWN0ZWRbOi0xXSkpKQot
Ci1maWxlcyA9IG9zLmxpc3RkaXIoJ2RhdC8nKQotZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgaWYg
b3MucGF0aC5pc2RpcignZGF0LycrZmlsZSkgb3IgZmlsZVswXSA9PSAiLiI6Ci0gICAgICAgIGNv
bnRpbnVlCi0gICAgdGVzdHMgPSBbXQotICAgIGlucHV0ID0gIiIKLSAgICBleHBlY3RlZCA9ICIi
Ci0gICAgc3RhdGUgPSAiIgotICAgIGYgPSBvcGVuKCdkYXQvJytmaWxlKQotICAgIHdoaWxlIDE6
Ci0gICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAg
ICAgICAgICBpZiBzdGF0ZSAhPSAiIjoKLSAgICAgICAgICAgICAgICBhcHBlbmR0ZXN0KHRlc3Rz
LCBpbnB1dCwgZXhwZWN0ZWQpCi0gICAgICAgICAgICAgICAgaW5wdXQgPSAiIgotICAgICAgICAg
ICAgICAgIGV4cGVjdGVkID0gIiIKLSAgICAgICAgICAgICAgICBzdGF0ZSA9ICIiCi0gICAgICAg
ICAgICBicmVhawotICAgICAgICBpZiBsaW5lWzBdID09ICIjIjoKLSAgICAgICAgICAgIHN0YXRl
ID0gbGluZQotICAgICAgICAgICAgaWYgbGluZSA9PSAiI2RvY3VtZW50LWZyYWdtZW50XG4iOgot
ICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQgKyBsaW5lCi0gICAgICAgIGVsaWYg
c3RhdGUgPT0gIiNkYXRhXG4iOgotICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCArIGxpbmUKLSAg
ICAgICAgZWxpZiBzdGF0ZSA9PSAiI2Vycm9yc1xuIjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAg
ICAgZWxpZiBzdGF0ZSA9PSAiI2RvY3VtZW50LWZyYWdtZW50XG4iOgotICAgICAgICAgICAgaWYg
bGluZSA9PSAiXG4iOgotICAgICAgICAgICAgICAgIGFwcGVuZHRlc3QodGVzdHMsIGlucHV0LCBl
eHBlY3RlZCkKLSAgICAgICAgICAgICAgICBpbnB1dCA9ICIiCi0gICAgICAgICAgICAgICAgZXhw
ZWN0ZWQgPSAiIgotICAgICAgICAgICAgICAgIHN0YXRlID0gIiIKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZCArIGxpbmUKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZmFpbGVkIHRvIHBhcnNlIGZpbGUgIitm
aWxlKyIgbGluZToiK2xpbmUrIiAoc3RhdGU6ICIrc3RhdGUrIikiKQotICAgIGYuY2xvc2UoKQot
ICAgIGJhcmVuYW1lID0gZmlsZS5yZXBsYWNlKCIuZGF0IiwgIiIpCi0gICAgb3V0ID0gb3Blbign
dGVzdHMvJytiYXJlbmFtZSsiLmh0bWwiLCAidyIpCi0gICAgb3V0LndyaXRlKGRvY3RtcGwgJSAo
YmFyZW5hbWUsICIsXG4iLmpvaW4odGVzdHMpKSkKLSAgICBvdXQuY2xvc2UoKQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3Bh
cnNpbmctY3VlLWRhdGEvYnVpbGR0ZXN0cy5weQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVj
dXRhYmxlCiMjIC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMJKHJldmlzaW9uIDI3MTc0
NikJKGZyb20gTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHk6MjcxNzQ2
KQorKysgTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyNjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJnZW5lcmF0ZXMgd2Vi
Z2wgbGF5b3V0IHRlc3RzIGZyb20gdGhlIEtocm9ub3MgV2ViR0wgQ29uZm9ybWFuY2UgVGVzdHMi
IiIKKworIyBUbyB1c2UgdGhpcywgZ2V0IGEgY29weSBvZiB0aGUgV2ViR0wgY29uZm9ybWFuY2Ug
dGVzdHMgdGhlbiBydW4gdGhpcyBzY3JpcHQKKyMgZWcuCisjCisjICAgY2Qgfi90ZW1wCisjICAg
Z2l0IGNsb25lIGdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdMLmdpdAorIyAgIGNk
IH4vV2ViS2l0L0xheW91dFRlc3RzL3dlYmdsCisjICAgcHl0aG9uIGdlbmVyYXRlLXdlYmdsLXRl
c3RzLnB5IC13IH4vdGVtcC9XZWJHTC9zZGsvdGVzdHMgLWUKKyMKKyMgTm93IGNoZWNrIHJ1biB0
aGUgTGF5b3V0VGVzdHMsIHVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIGFuZCBjaGVjayBpbiB0aGUK
KyMgcmVzdWx0LgorCitpbXBvcnQgY29weQoraW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1w
b3J0IHN5cworaW1wb3J0IHJlCitpbXBvcnQganNvbgoraW1wb3J0IHNodXRpbAorZnJvbSBvcHRw
YXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCisKK2lmIHN5cy52ZXJzaW9uIDwgJzIuNic6CisgIHBy
aW50ICdXcm9uZyBQeXRob24gVmVyc2lvbiAhISE6IE5lZWQgPj0gMi42JworICBzeXMuZXhpdCgx
KQorCisKK0dMT0JBTF9PUFRJT05TID0geworICAjIHZlcnNpb24gdXNlLiBUZXN0cyBhdCBvciBi
ZWxvdyB0aGlzIHdpbGwgYmUgaW5jbHVkZWQuCisgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKworICAj
IHZlcnNpb24gdXNlZCBmb3IgdW5sYWJsZWQgdGVzdHMKKyAgImRlZmF1bHQtdmVyc2lvbiI6ICIy
LjAiLAorCisgICMgSWYgc2V0LCB0aGUgdmVyc2lvbiB3ZSByZXF1aXJlLiBUZXN0cyBiZWxvdyB0
aGlzIHdpbGwgYmUgaWdub3JlZC4KKyAgIm1pbi12ZXJzaW9uIjogIjEuMC4zIiwKK30KKworCitk
ZWYgUmVhZEZpbGUoZmlsZW5hbWUpOgorICAiIiJSZWFkcyBhIGZpbGUgYXMgYSBzdHJpbmciIiIK
KyAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJyIikKKyAgZGF0YSA9IGZpbGUucmVhZCgpCisgIGZp
bGUuY2xvc2UoKQorICByZXR1cm4gZGF0YQorCisKK2RlZiBXcml0ZUZpbGUoZmlsZW5hbWUsIGRh
dGEpOgorICAiIiJXcml0ZXMgYSBzdHJpbmcgYXMgYSBmaWxlIiIiCisgIHByaW50ICJXcml0aW5n
OiAiLCBmaWxlbmFtZQorICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQorICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMoZGlybmFtZSk6CisgICAgb3MubWFrZWRpcnMoZGlybmFtZSkK
KyAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJ3YiIpCisgIGZpbGUud3JpdGUoZGF0YSkKKyAgZmls
ZS5jbG9zZSgpCisKKworZGVmIENvcHlUcmVlKHNyYywgZHN0LCBpZ25vcmU9Tm9uZSk6CisgICIi
IlJlY3Vyc2l2ZWx5IGNvcHkgYSBkaXJlY3RvcnkgdHJlZSIiIgorICBuYW1lcyA9IG9zLmxpc3Rk
aXIoc3JjKQorICBpZiBpZ25vcmUgaXMgbm90IE5vbmU6CisgICAgaWdub3JlZF9uYW1lcyA9IGln
bm9yZShzcmMsIG5hbWVzKQorICBlbHNlOgorICAgIGlnbm9yZWRfbmFtZXMgPSBzZXQoKQorCisg
IGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3QpOgorICAgIG9zLm1ha2VkaXJzKGRzdCkKKyAgZXJy
b3JzID0gW10KKyAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgaWYgbmFtZSBpbiBpZ25vcmVkX25h
bWVzOgorICAgICAgY29udGludWUKKyAgICBzcmNuYW1lID0gb3MucGF0aC5qb2luKHNyYywgbmFt
ZSkKKyAgICBkc3RuYW1lID0gb3MucGF0aC5qb2luKGRzdCwgbmFtZSkKKyAgICB0cnk6CisgICAg
ICBpZiBvcy5wYXRoLmlzZGlyKHNyY25hbWUpOgorICAgICAgICBDb3B5VHJlZShzcmNuYW1lLCBk
c3RuYW1lLCBpZ25vcmUpCisgICAgICBlbHNlOgorICAgICAgICAjIFdpbGwgcmFpc2UgYSBTcGVj
aWFsRmlsZUVycm9yIGZvciB1bnN1cHBvcnRlZCBmaWxlIHR5cGVzCisgICAgICAgIHNodXRpbC5j
b3B5ZmlsZShzcmNuYW1lLCBkc3RuYW1lKQorICAgICMgY2F0Y2ggdGhlIEVycm9yIGZyb20gdGhl
IHJlY3Vyc2l2ZSBjb3B5dHJlZSBzbyB0aGF0IHdlIGNhbgorICAgICMgY29udGludWUgd2l0aCBv
dGhlciBmaWxlcworICAgIGV4Y2VwdCBFcnJvciwgZXJyOgorICAgICAgZXJyb3JzLmV4dGVuZChl
cnIuYXJnc1swXSkKKyAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciwgd2h5OgorICAgICAgZXJy
b3JzLmFwcGVuZCgoc3JjbmFtZSwgZHN0bmFtZSwgc3RyKHdoeSkpKQorICBpZiBlcnJvcnM6Cisg
ICAgcmFpc2UgRXJyb3IsIGVycm9ycworCisKK2RlZiBGaWxlUmVhZGVyKGZpbGVuYW1lKToKKyAg
IiIiQSBGaWxlIGdlbmVyYXRvciB0aGF0IHJldHVybnMgb25seSBub24gZW1wdHksIG5vbiBjb21t
ZW50IGxpbmVzIiIiCisgIGZpbGUgPSBvcGVuKGZpbGVuYW1lLCAiciIpCisgIGxpbmVzID0gZmls
ZS5yZWFkbGluZXMoKQorICBmaWxlLmNsb3NlKCkKKyAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGlu
IGVudW1lcmF0ZShsaW5lcyk6CisgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgIGlmIChsZW4o
bGluZSkgPiAwIGFuZAorICAgICAgICBub3QgbGluZS5zdGFydHN3aXRoKCIjIikgYW5kCisgICAg
ICAgIG5vdCBsaW5lLnN0YXJ0c3dpdGgoIjsiKSBhbmQKKyAgICAgICAgbm90IGxpbmUuc3RhcnRz
d2l0aCgiLy8iKSk6CisgICAgICB5aWVsZCBsaW5lX251bWJlciArIDEsIGxpbmUKKworCitkZWYg
R3JlYXRlclRoYW5PckVxdWFsVG9WZXJzaW9uKGhhdmUsIHdhbnQpOgorICAiIiJDb21wYXJlcyB0
byB2ZXJzaW9uIHN0cmluZ3MiIiIKKyAgaGF2ZSA9IGhhdmUuc3BsaXQoIiAiKVswXS5zcGxpdCgi
LiIpCisgIHdhbnQgPSB3YW50LnNwbGl0KCIgIilbMF0uc3BsaXQoIi4iKQorICBmb3IgbmR4LCB3
YW50X3N0ciBpbiBlbnVtZXJhdGUod2FudCk6CisgICAgd2FudF9udW0gPSBpbnQod2FudF9zdHIp
CisgICAgaGF2ZV9udW0gPSAwCisgICAgaWYgbmR4IDwgbGVuKGhhdmUpOgorICAgICAgaGF2ZV9u
dW0gPSBpbnQoaGF2ZVtuZHhdKQorICAgIGlmIGhhdmVfbnVtIDwgd2FudF9udW06CisgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICBpZiBoYXZlX251bSA+PSB3YW50X251bToKKyAgICAgIHJldHVybiBU
cnVlCisgIHJldHVybiBUcnVlCisKKworZGVmIEdldFRlc3RMaXN0KGxpc3RfZmlsZW5hbWUsIGRl
c3RfZGlyLCBoaWVyYXJjaGljYWxfb3B0aW9ucyk6CisgIGdsb2JhbCBHTE9CQUxfT1BUSU9OUwor
ICB0ZXN0cyA9IFtdCisgIHByZWZpeCA9IG9zLnBhdGguZGlybmFtZShsaXN0X2ZpbGVuYW1lKQor
ICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4gRmlsZVJlYWRlcihsaXN0X2ZpbGVuYW1lKToKKyAg
ICBhcmdzID0gbGluZS5zcGxpdCgpCisgICAgdGVzdF9vcHRpb25zID0ge30KKyAgICBub25fb3B0
aW9ucyA9IFtdCisgICAgdXNlX3Rlc3QgPSBUcnVlCisgICAgd2hpbGUgbGVuKGFyZ3MpOgorICAg
ICAgYXJnID0gYXJncy5wb3AoMCkKKyAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCItIik6CisgICAg
ICAgIGlmIG5vdCBhcmcuc3RhcnRzd2l0aCgiLS0iKToKKyAgICAgICAgICByYWlzZSAiJXM6JWQg
YmFkIG9wdGlvbiIgJSAobGlzdF9maWxlbmFtZSwgbGluZV9udW1iZXIpCisgICAgICAgIG9wdGlv
biA9IGFyZ1syOl0KKyAgICAgICAgaWYgb3B0aW9uID09ICdzbG93JzoKKyAgICAgICAgICBwYXNz
CisgICAgICAgIGVsaWYgb3B0aW9uID09ICdtaW4tdmVyc2lvbicgb3Igb3B0aW9uID09ICJtYXgt
dmVyc2lvbiI6CisgICAgICAgICAgdGVzdF9vcHRpb25zW29wdGlvbl0gPSBhcmdzLnBvcCgwKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXM6JWQgdW5rbm93biBv
cHRpb24gJyVzJyIgJSAobGlzdF9maWxlbmFtZSwgbGluZV9udW1iZXIsIGFyZykpCisgICAgICBl
bHNlOgorICAgICAgICBub25fb3B0aW9ucy5hcHBlbmQoYXJnKQorICAgIHVybCA9IG9zLnBhdGgu
am9pbihwcmVmaXgsICIgIi5qb2luKG5vbl9vcHRpb25zKSkKKworICAgIGlmIG5vdCB1cmwuZW5k
c3dpdGgoIi50eHQiKToKKyAgICAgIGlmICJtaW4tdmVyc2lvbiIgaW4gdGVzdF9vcHRpb25zOgor
ICAgICAgICBtaW5fdmVyc2lvbiA9IHRlc3Rfb3B0aW9uc1sibWluLXZlcnNpb24iXQorICAgICAg
ZWxzZToKKyAgICAgICAgbWluX3ZlcnNpb24gPSBoaWVyYXJjaGljYWxfb3B0aW9uc1siZGVmYXVs
dC12ZXJzaW9uIl0KKworICAgICAgaWYgIm1pbi12ZXJzaW9uIiBpbiBHTE9CQUxfT1BUSU9OUzoK
KyAgICAgICAgdXNlX3Rlc3QgPSBHcmVhdGVyVGhhbk9yRXF1YWxUb1ZlcnNpb24obWluX3ZlcnNp
b24sIEdMT0JBTF9PUFRJT05TWyJtaW4tdmVyc2lvbiJdKQorICAgICAgZWxzZToKKyAgICAgICAg
dXNlX3Rlc3QgPSBHcmVhdGVyVGhhbk9yRXF1YWxUb1ZlcnNpb24oR0xPQkFMX09QVElPTlNbInZl
cnNpb24iXSwgbWluX3ZlcnNpb24pCisKKyAgICBpZiBub3QgdXNlX3Rlc3Q6CisgICAgICBjb250
aW51ZQorCisgICAgaWYgdXJsLmVuZHN3aXRoKCIudHh0Iik6CisgICAgICBpZiAibWluLXZlcnNp
b24iIGluIHRlc3Rfb3B0aW9uczoKKyAgICAgICAgaGllcmFyY2hpY2FsX29wdGlvbnNbImRlZmF1
bHQtdmVyc2lvbiJdID0gdGVzdF9vcHRpb25zWyJtaW4tdmVyc2lvbiJdCisgICAgICB0ZXN0cyA9
IHRlc3RzICsgR2V0VGVzdExpc3QoCisgICAgICAgICAgb3MucGF0aC5qb2luKHByZWZpeCwgdXJs
KSwgZGVzdF9kaXIsIGNvcHkuY29weShoaWVyYXJjaGljYWxfb3B0aW9ucykpCisgICAgZWxzZToK
KyAgICAgIHRlc3RzLmFwcGVuZCh7InVybCI6IHVybH0pCisgIHJldHVybiB0ZXN0cworCisKK2Rl
ZiBtYWluKGFyZ3YpOgorICAiIiJUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uLiIiIgorICBnbG9i
YWwgR0xPQkFMX09QVElPTlMKKworICBwYXJzZXIgPSBPcHRpb25QYXJzZXIoKQorICBwYXJzZXIu
YWRkX29wdGlvbigKKyAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUi
LAorICAgICAgaGVscD0icHJpbnRzIG1vcmUgb3V0cHV0LiIpCisgIHBhcnNlci5hZGRfb3B0aW9u
KAorICAgICAgIi13IiwgIi0td2ViZ2wtY29uZm9ybWFuY2UtdGVzdCIsIGRlc3Q9InNvdXJjZV9k
aXIiLAorICAgICAgaGVscD0icGF0aCB0byB3ZWJnbCBjb25mb3JtYW5jZSB0ZXN0cy4gUkVRVUlS
RUQiKQorICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICAgICItbiIsICItLW5vLWNvcHkiLCBhY3Rp
b249InN0b3JlX3RydWUiLAorICAgICAgaGVscD0iZG8gbm90IGNvcHkgdGVzdHMiKQorICBwYXJz
ZXIuYWRkX29wdGlvbigKKyAgICAgICItZSIsICItLWdlbmVyYXRlLWV4cGVjdGF0aW9ucyIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICBoZWxwPSJnZW5lcmF0ZXQgdGhlIHRlc3QgZXhwZWN0
YXRpb25zIikKKyAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAiLW8iLCAiLS1vdXRwdXQtZGly
IiwgZGVzdD0ib3V0cHV0X2RpciIsCisgICAgICBoZWxwPSJiYXNlIGRpcmVjdG9yeSBmb3Igb3V0
cHV0LiBkZWZhdWx0cyB0byBcJy5cJyIsCisgICAgICBkZWZhdWx0PSIuIikKKworICAob3B0aW9u
cywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3YpCisKKyAgaWYgbm90IG9wdGlv
bnMuc291cmNlX2RpcjoKKyAgICBwYXJzZXIucHJpbnRfaGVscCgpCisgICAgcmV0dXJuIDEKKwor
ICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yICcuJykKKworICBzb3VyY2Vf
ZGlyID0gb3B0aW9ucy5zb3VyY2VfZGlyOworICBvdXRwdXRfZGlyID0gb3B0aW9ucy5vdXRwdXRf
ZGlyOworICB3ZWJnbF90ZXN0c19kaXIgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgInJlc291
cmNlcy93ZWJnbF90ZXN0X2ZpbGVzIikKKworICAjIGNvcHkgYWxsIHRoZSBmaWxlcyBmcm9tIHRo
ZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cy4KKyAgaWYgbm90IG9wdGlvbnMubm9fY29weToKKyAg
ICBDb3B5VHJlZSgKKyAgICAgICAgc291cmNlX2Rpciwgd2ViZ2xfdGVzdHNfZGlyLCBzaHV0aWwu
aWdub3JlX3BhdHRlcm5zKAorICAgICAgICAgICAgJy5naXQnLCAnKi5weWMnLCAndG1wKicpKQor
CisgIHRlc3RfdGVtcGxhdGUgPSBSZWFkRmlsZSgicmVzb3VyY2VzL3dlYmdsLXdyYXBwZXItdGVt
cGxhdGUuaHRtbCIpCisgIGV4cGVjdGF0aW9uX3RlbXBsYXRlID0gUmVhZEZpbGUoInJlc291cmNl
cy93ZWJnbC1leHBlY3RhdGlvbi10ZW1wbGF0ZS50eHQiKQorCisgICMgZ2VuZXJhdGUgd3JhcHBl
cnMgZm9yIGFsbCB0aGUgdGVzdHMKKyAgdGVzdHMgPSBHZXRUZXN0TGlzdChvcy5wYXRoLmpvaW4o
c291cmNlX2RpciwgIjAwX3Rlc3RfbGlzdC50eHQiKSwgIi4iLAorICAgICAgICAgICAgICAgICAg
ICAgIGNvcHkuY29weShHTE9CQUxfT1BUSU9OUykpCisKKyAgZm9yIHRlc3QgaW4gdGVzdHM6Cisg
ICAgdXJsID0gb3MucGF0aC5yZWxwYXRoKHRlc3RbInVybCJdLCBzb3VyY2VfZGlyKQorICAgIGRz
dCA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCB1cmwpCisgICAgZHN0X2RpciA9IG9zLnBhdGgu
ZGlybmFtZShkc3QpCisgICAgc3JjID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbih3ZWJn
bF90ZXN0c19kaXIsIHVybCksIGRzdF9kaXIpLnJlcGxhY2UoIlxcIiwgIi8iKQorICAgIGJhc2Vf
dXJsID0gb3MucGF0aC5yZWxwYXRoKG91dHB1dF9kaXIsIGRzdF9kaXIpLnJlcGxhY2UoIlxcIiwg
Ii8iKQorICAgIHN1YnMgPSB7CisgICAgICAidXJsIjogc3JjLAorICAgICAgInVybF9uYW1lIjog
b3MucGF0aC5iYXNlbmFtZSh1cmwpLAorICAgICAgImJhc2VfdXJsIjogYmFzZV91cmwsCisgICAg
fQorICAgIFdyaXRlRmlsZShkc3QsIHRlc3RfdGVtcGxhdGUgJSBzdWJzKQorICAgIGlmIG9wdGlv
bnMuZ2VuZXJhdGVfZXhwZWN0YXRpb25zOgorICAgICAgZXhwZWN0YXRpb25fZmlsZW5hbWUgPSBv
cy5wYXRoLnNwbGl0ZXh0KGRzdClbMF0gKyAiLWV4cGVjdGVkLnR4dCIKKyAgICAgIFdyaXRlRmls
ZShleHBlY3RhdGlvbl9maWxlbmFtZSwgZXhwZWN0YXRpb25fdGVtcGxhdGUgJSBzdWJzKQorCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsx
Ol0pKQorCisKKworCisKSW5kZXg6IExheW91dFRlc3RzL3dlYmdsL2dlbmVyYXRlLXdlYmdsLXRl
c3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdsL2dlbmVyYXRlLXdlYmdsLXRlc3Rz
CShyZXZpc2lvbiAyNzE3NDYpCisrKyBMYXlvdXRUZXN0cy93ZWJnbC9nZW5lcmF0ZS13ZWJnbC10
ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKICMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvd2ViZ2wv
Z2VuZXJhdGUtd2ViZ2wtdGVzdHMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMg
LTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlv
dXRUZXN0cy93ZWJnbC9nZW5lcmF0ZS13ZWJnbC10ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy93ZWJnbC9nZW5lcmF0ZS13ZWJnbC10ZXN0cy5weQkocmV2aXNpb24gMjcxNzQ2KQor
KysgTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHkJKG5vbmV4aXN0ZW50
KQpAQCAtMSwyNjkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiImdlbmVyYXRlcyB3ZWJn
bCBsYXlvdXQgdGVzdHMgZnJvbSB0aGUgS2hyb25vcyBXZWJHTCBDb25mb3JtYW5jZSBUZXN0cyIi
IgotCi0jIFRvIHVzZSB0aGlzLCBnZXQgYSBjb3B5IG9mIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0
ZXN0cyB0aGVuIHJ1biB0aGlzIHNjcmlwdAotIyBlZy4KLSMKLSMgICBjZCB+L3RlbXAKLSMgICBn
aXQgY2xvbmUgZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wuZ2l0Ci0jICAgY2Qg
fi9XZWJLaXQvTGF5b3V0VGVzdHMvd2ViZ2wKLSMgICBweXRob24gZ2VuZXJhdGUtd2ViZ2wtdGVz
dHMucHkgLXcgfi90ZW1wL1dlYkdML3Nkay90ZXN0cyAtZQotIwotIyBOb3cgY2hlY2sgcnVuIHRo
ZSBMYXlvdXRUZXN0cywgdXBkYXRlIFRlc3RFeHBlY3RhdGlvbnMgYW5kIGNoZWNrIGluIHRoZQot
IyByZXN1bHQuCi0KLWltcG9ydCBjb3B5Ci1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi1pbXBv
cnQgc3lzCi1pbXBvcnQgcmUKLWltcG9ydCBqc29uCi1pbXBvcnQgc2h1dGlsCi1mcm9tIG9wdHBh
cnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLQotaWYgc3lzLnZlcnNpb24gPCAnMi42JzoKLSAgcHJp
bnQgJ1dyb25nIFB5dGhvbiBWZXJzaW9uICEhITogTmVlZCA+PSAyLjYnCi0gIHN5cy5leGl0KDEp
Ci0KLQotR0xPQkFMX09QVElPTlMgPSB7Ci0gICMgdmVyc2lvbiB1c2UuIFRlc3RzIGF0IG9yIGJl
bG93IHRoaXMgd2lsbCBiZSBpbmNsdWRlZC4KLSAgInZlcnNpb24iOiAiMi4wLjAiLAotCi0gICMg
dmVyc2lvbiB1c2VkIGZvciB1bmxhYmxlZCB0ZXN0cwotICAiZGVmYXVsdC12ZXJzaW9uIjogIjIu
MCIsCi0KLSAgIyBJZiBzZXQsIHRoZSB2ZXJzaW9uIHdlIHJlcXVpcmUuIFRlc3RzIGJlbG93IHRo
aXMgd2lsbCBiZSBpZ25vcmVkLgotICAibWluLXZlcnNpb24iOiAiMS4wLjMiLAotfQotCi0KLWRl
ZiBSZWFkRmlsZShmaWxlbmFtZSk6Ci0gICIiIlJlYWRzIGEgZmlsZSBhcyBhIHN0cmluZyIiIgot
ICBmaWxlID0gb3BlbihmaWxlbmFtZSwgInIiKQotICBkYXRhID0gZmlsZS5yZWFkKCkKLSAgZmls
ZS5jbG9zZSgpCi0gIHJldHVybiBkYXRhCi0KLQotZGVmIFdyaXRlRmlsZShmaWxlbmFtZSwgZGF0
YSk6Ci0gICIiIldyaXRlcyBhIHN0cmluZyBhcyBhIGZpbGUiIiIKLSAgcHJpbnQgIldyaXRpbmc6
ICIsIGZpbGVuYW1lCi0gIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCi0gIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJuYW1lKToKLSAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQot
ICBmaWxlID0gb3BlbihmaWxlbmFtZSwgIndiIikKLSAgZmlsZS53cml0ZShkYXRhKQotICBmaWxl
LmNsb3NlKCkKLQotCi1kZWYgQ29weVRyZWUoc3JjLCBkc3QsIGlnbm9yZT1Ob25lKToKLSAgIiIi
UmVjdXJzaXZlbHkgY29weSBhIGRpcmVjdG9yeSB0cmVlIiIiCi0gIG5hbWVzID0gb3MubGlzdGRp
cihzcmMpCi0gIGlmIGlnbm9yZSBpcyBub3QgTm9uZToKLSAgICBpZ25vcmVkX25hbWVzID0gaWdu
b3JlKHNyYywgbmFtZXMpCi0gIGVsc2U6Ci0gICAgaWdub3JlZF9uYW1lcyA9IHNldCgpCi0KLSAg
aWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdCk6Ci0gICAgb3MubWFrZWRpcnMoZHN0KQotICBlcnJv
cnMgPSBbXQotICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICBpZiBuYW1lIGluIGlnbm9yZWRfbmFt
ZXM6Ci0gICAgICBjb250aW51ZQotICAgIHNyY25hbWUgPSBvcy5wYXRoLmpvaW4oc3JjLCBuYW1l
KQotICAgIGRzdG5hbWUgPSBvcy5wYXRoLmpvaW4oZHN0LCBuYW1lKQotICAgIHRyeToKLSAgICAg
IGlmIG9zLnBhdGguaXNkaXIoc3JjbmFtZSk6Ci0gICAgICAgIENvcHlUcmVlKHNyY25hbWUsIGRz
dG5hbWUsIGlnbm9yZSkKLSAgICAgIGVsc2U6Ci0gICAgICAgICMgV2lsbCByYWlzZSBhIFNwZWNp
YWxGaWxlRXJyb3IgZm9yIHVuc3VwcG9ydGVkIGZpbGUgdHlwZXMKLSAgICAgICAgc2h1dGlsLmNv
cHlmaWxlKHNyY25hbWUsIGRzdG5hbWUpCi0gICAgIyBjYXRjaCB0aGUgRXJyb3IgZnJvbSB0aGUg
cmVjdXJzaXZlIGNvcHl0cmVlIHNvIHRoYXQgd2UgY2FuCi0gICAgIyBjb250aW51ZSB3aXRoIG90
aGVyIGZpbGVzCi0gICAgZXhjZXB0IEVycm9yLCBlcnI6Ci0gICAgICBlcnJvcnMuZXh0ZW5kKGVy
ci5hcmdzWzBdKQotICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yLCB3aHk6Ci0gICAgICBlcnJv
cnMuYXBwZW5kKChzcmNuYW1lLCBkc3RuYW1lLCBzdHIod2h5KSkpCi0gIGlmIGVycm9yczoKLSAg
ICByYWlzZSBFcnJvciwgZXJyb3JzCi0KLQotZGVmIEZpbGVSZWFkZXIoZmlsZW5hbWUpOgotICAi
IiJBIEZpbGUgZ2VuZXJhdG9yIHRoYXQgcmV0dXJucyBvbmx5IG5vbiBlbXB0eSwgbm9uIGNvbW1l
bnQgbGluZXMiIiIKLSAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJyIikKLSAgbGluZXMgPSBmaWxl
LnJlYWRsaW5lcygpCi0gIGZpbGUuY2xvc2UoKQotICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4g
ZW51bWVyYXRlKGxpbmVzKToKLSAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgaWYgKGxlbihs
aW5lKSA+IDAgYW5kCi0gICAgICAgIG5vdCBsaW5lLnN0YXJ0c3dpdGgoIiMiKSBhbmQKLSAgICAg
ICAgbm90IGxpbmUuc3RhcnRzd2l0aCgiOyIpIGFuZAotICAgICAgICBub3QgbGluZS5zdGFydHN3
aXRoKCIvLyIpKToKLSAgICAgIHlpZWxkIGxpbmVfbnVtYmVyICsgMSwgbGluZQotCi0KLWRlZiBH
cmVhdGVyVGhhbk9yRXF1YWxUb1ZlcnNpb24oaGF2ZSwgd2FudCk6Ci0gICIiIkNvbXBhcmVzIHRv
IHZlcnNpb24gc3RyaW5ncyIiIgotICBoYXZlID0gaGF2ZS5zcGxpdCgiICIpWzBdLnNwbGl0KCIu
IikKLSAgd2FudCA9IHdhbnQuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpCi0gIGZvciBuZHgsIHdh
bnRfc3RyIGluIGVudW1lcmF0ZSh3YW50KToKLSAgICB3YW50X251bSA9IGludCh3YW50X3N0cikK
LSAgICBoYXZlX251bSA9IDAKLSAgICBpZiBuZHggPCBsZW4oaGF2ZSk6Ci0gICAgICBoYXZlX251
bSA9IGludChoYXZlW25keF0pCi0gICAgaWYgaGF2ZV9udW0gPCB3YW50X251bToKLSAgICAgIHJl
dHVybiBGYWxzZQotICAgIGlmIGhhdmVfbnVtID49IHdhbnRfbnVtOgotICAgICAgcmV0dXJuIFRy
dWUKLSAgcmV0dXJuIFRydWUKLQotCi1kZWYgR2V0VGVzdExpc3QobGlzdF9maWxlbmFtZSwgZGVz
dF9kaXIsIGhpZXJhcmNoaWNhbF9vcHRpb25zKToKLSAgZ2xvYmFsIEdMT0JBTF9PUFRJT05TCi0g
IHRlc3RzID0gW10KLSAgcHJlZml4ID0gb3MucGF0aC5kaXJuYW1lKGxpc3RfZmlsZW5hbWUpCi0g
IGZvciBsaW5lX251bWJlciwgbGluZSBpbiBGaWxlUmVhZGVyKGxpc3RfZmlsZW5hbWUpOgotICAg
IGFyZ3MgPSBsaW5lLnNwbGl0KCkKLSAgICB0ZXN0X29wdGlvbnMgPSB7fQotICAgIG5vbl9vcHRp
b25zID0gW10KLSAgICB1c2VfdGVzdCA9IFRydWUKLSAgICB3aGlsZSBsZW4oYXJncyk6Ci0gICAg
ICBhcmcgPSBhcmdzLnBvcCgwKQotICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoIi0iKToKLSAgICAg
ICAgaWYgbm90IGFyZy5zdGFydHN3aXRoKCItLSIpOgotICAgICAgICAgIHJhaXNlICIlczolZCBi
YWQgb3B0aW9uIiAlIChsaXN0X2ZpbGVuYW1lLCBsaW5lX251bWJlcikKLSAgICAgICAgb3B0aW9u
ID0gYXJnWzI6XQotICAgICAgICBpZiBvcHRpb24gPT0gJ3Nsb3cnOgotICAgICAgICAgIHBhc3MK
LSAgICAgICAgZWxpZiBvcHRpb24gPT0gJ21pbi12ZXJzaW9uJyBvciBvcHRpb24gPT0gIm1heC12
ZXJzaW9uIjoKLSAgICAgICAgICB0ZXN0X29wdGlvbnNbb3B0aW9uXSA9IGFyZ3MucG9wKDApCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlczolZCB1bmtub3duIG9w
dGlvbiAnJXMnIiAlIChsaXN0X2ZpbGVuYW1lLCBsaW5lX251bWJlciwgYXJnKSkKLSAgICAgIGVs
c2U6Ci0gICAgICAgIG5vbl9vcHRpb25zLmFwcGVuZChhcmcpCi0gICAgdXJsID0gb3MucGF0aC5q
b2luKHByZWZpeCwgIiAiLmpvaW4obm9uX29wdGlvbnMpKQotCi0gICAgaWYgbm90IHVybC5lbmRz
d2l0aCgiLnR4dCIpOgotICAgICAgaWYgIm1pbi12ZXJzaW9uIiBpbiB0ZXN0X29wdGlvbnM6Ci0g
ICAgICAgIG1pbl92ZXJzaW9uID0gdGVzdF9vcHRpb25zWyJtaW4tdmVyc2lvbiJdCi0gICAgICBl
bHNlOgotICAgICAgICBtaW5fdmVyc2lvbiA9IGhpZXJhcmNoaWNhbF9vcHRpb25zWyJkZWZhdWx0
LXZlcnNpb24iXQotCi0gICAgICBpZiAibWluLXZlcnNpb24iIGluIEdMT0JBTF9PUFRJT05TOgot
ICAgICAgICB1c2VfdGVzdCA9IEdyZWF0ZXJUaGFuT3JFcXVhbFRvVmVyc2lvbihtaW5fdmVyc2lv
biwgR0xPQkFMX09QVElPTlNbIm1pbi12ZXJzaW9uIl0pCi0gICAgICBlbHNlOgotICAgICAgICB1
c2VfdGVzdCA9IEdyZWF0ZXJUaGFuT3JFcXVhbFRvVmVyc2lvbihHTE9CQUxfT1BUSU9OU1sidmVy
c2lvbiJdLCBtaW5fdmVyc2lvbikKLQotICAgIGlmIG5vdCB1c2VfdGVzdDoKLSAgICAgIGNvbnRp
bnVlCi0KLSAgICBpZiB1cmwuZW5kc3dpdGgoIi50eHQiKToKLSAgICAgIGlmICJtaW4tdmVyc2lv
biIgaW4gdGVzdF9vcHRpb25zOgotICAgICAgICBoaWVyYXJjaGljYWxfb3B0aW9uc1siZGVmYXVs
dC12ZXJzaW9uIl0gPSB0ZXN0X29wdGlvbnNbIm1pbi12ZXJzaW9uIl0KLSAgICAgIHRlc3RzID0g
dGVzdHMgKyBHZXRUZXN0TGlzdCgKLSAgICAgICAgICBvcy5wYXRoLmpvaW4ocHJlZml4LCB1cmwp
LCBkZXN0X2RpciwgY29weS5jb3B5KGhpZXJhcmNoaWNhbF9vcHRpb25zKSkKLSAgICBlbHNlOgot
ICAgICAgdGVzdHMuYXBwZW5kKHsidXJsIjogdXJsfSkKLSAgcmV0dXJuIHRlc3RzCi0KLQotZGVm
IG1haW4oYXJndik6Ci0gICIiIlRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uIiIiCi0gIGdsb2Jh
bCBHTE9CQUxfT1BUSU9OUwotCi0gIHBhcnNlciA9IE9wdGlvblBhcnNlcigpCi0gIHBhcnNlci5h
ZGRfb3B0aW9uKAotICAgICAgIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
Ci0gICAgICBoZWxwPSJwcmludHMgbW9yZSBvdXRwdXQuIikKLSAgcGFyc2VyLmFkZF9vcHRpb24o
Ci0gICAgICAiLXciLCAiLS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0IiwgZGVzdD0ic291cmNlX2Rp
ciIsCi0gICAgICBoZWxwPSJwYXRoIHRvIHdlYmdsIGNvbmZvcm1hbmNlIHRlc3RzLiBSRVFVSVJF
RCIpCi0gIHBhcnNlci5hZGRfb3B0aW9uKAotICAgICAgIi1uIiwgIi0tbm8tY29weSIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsCi0gICAgICBoZWxwPSJkbyBub3QgY29weSB0ZXN0cyIpCi0gIHBhcnNl
ci5hZGRfb3B0aW9uKAotICAgICAgIi1lIiwgIi0tZ2VuZXJhdGUtZXhwZWN0YXRpb25zIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgIGhlbHA9ImdlbmVyYXRldCB0aGUgdGVzdCBleHBlY3Rh
dGlvbnMiKQotICBwYXJzZXIuYWRkX29wdGlvbigKLSAgICAgICItbyIsICItLW91dHB1dC1kaXIi
LCBkZXN0PSJvdXRwdXRfZGlyIiwKLSAgICAgIGhlbHA9ImJhc2UgZGlyZWN0b3J5IGZvciBvdXRw
dXQuIGRlZmF1bHRzIHRvIFwnLlwnIiwKLSAgICAgIGRlZmF1bHQ9Ii4iKQotCi0gIChvcHRpb25z
LCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJndikKLQotICBpZiBub3Qgb3B0aW9u
cy5zb3VyY2VfZGlyOgotICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICByZXR1cm4gMQotCi0g
IG9zLmNoZGlyKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nKQotCi0gIHNvdXJjZV9k
aXIgPSBvcHRpb25zLnNvdXJjZV9kaXI7Ci0gIG91dHB1dF9kaXIgPSBvcHRpb25zLm91dHB1dF9k
aXI7Ci0gIHdlYmdsX3Rlc3RzX2RpciA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCAicmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMiKQotCi0gICMgY29weSBhbGwgdGhlIGZpbGVzIGZyb20gdGhl
IFdlYkdMIGNvbmZvcm1hbmNlIHRlc3RzLgotICBpZiBub3Qgb3B0aW9ucy5ub19jb3B5OgotICAg
IENvcHlUcmVlKAotICAgICAgICBzb3VyY2VfZGlyLCB3ZWJnbF90ZXN0c19kaXIsIHNodXRpbC5p
Z25vcmVfcGF0dGVybnMoCi0gICAgICAgICAgICAnLmdpdCcsICcqLnB5YycsICd0bXAqJykpCi0K
LSAgdGVzdF90ZW1wbGF0ZSA9IFJlYWRGaWxlKCJyZXNvdXJjZXMvd2ViZ2wtd3JhcHBlci10ZW1w
bGF0ZS5odG1sIikKLSAgZXhwZWN0YXRpb25fdGVtcGxhdGUgPSBSZWFkRmlsZSgicmVzb3VyY2Vz
L3dlYmdsLWV4cGVjdGF0aW9uLXRlbXBsYXRlLnR4dCIpCi0KLSAgIyBnZW5lcmF0ZSB3cmFwcGVy
cyBmb3IgYWxsIHRoZSB0ZXN0cwotICB0ZXN0cyA9IEdldFRlc3RMaXN0KG9zLnBhdGguam9pbihz
b3VyY2VfZGlyLCAiMDBfdGVzdF9saXN0LnR4dCIpLCAiLiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgY29weS5jb3B5KEdMT0JBTF9PUFRJT05TKSkKLQotICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAg
ICB1cmwgPSBvcy5wYXRoLnJlbHBhdGgodGVzdFsidXJsIl0sIHNvdXJjZV9kaXIpCi0gICAgZHN0
ID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsIHVybCkKLSAgICBkc3RfZGlyID0gb3MucGF0aC5k
aXJuYW1lKGRzdCkKLSAgICBzcmMgPSBvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHdlYmds
X3Rlc3RzX2RpciwgdXJsKSwgZHN0X2RpcikucmVwbGFjZSgiXFwiLCAiLyIpCi0gICAgYmFzZV91
cmwgPSBvcy5wYXRoLnJlbHBhdGgob3V0cHV0X2RpciwgZHN0X2RpcikucmVwbGFjZSgiXFwiLCAi
LyIpCi0gICAgc3VicyA9IHsKLSAgICAgICJ1cmwiOiBzcmMsCi0gICAgICAidXJsX25hbWUiOiBv
cy5wYXRoLmJhc2VuYW1lKHVybCksCi0gICAgICAiYmFzZV91cmwiOiBiYXNlX3VybCwKLSAgICB9
Ci0gICAgV3JpdGVGaWxlKGRzdCwgdGVzdF90ZW1wbGF0ZSAlIHN1YnMpCi0gICAgaWYgb3B0aW9u
cy5nZW5lcmF0ZV9leHBlY3RhdGlvbnM6Ci0gICAgICBleHBlY3RhdGlvbl9maWxlbmFtZSA9IG9z
LnBhdGguc3BsaXRleHQoZHN0KVswXSArICItZXhwZWN0ZWQudHh0IgotICAgICAgV3JpdGVGaWxl
KGV4cGVjdGF0aW9uX2ZpbGVuYW1lLCBleHBlY3RhdGlvbl90ZW1wbGF0ZSAlIHN1YnMpCi0KLQot
Ci1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6
XSkpCi0KLQotCi0KLQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418206</attachid>
            <date>2021-01-22 19:09:40 -0800</date>
            <delta_ts>2021-01-25 16:33:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220749-20210122190939.patch</filename>
            <type>text/plain</type>
            <size>48449</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MTc3MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDIxLTAxLTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c10gU3VwcG9ydCBweXRob24gbGF5b3V0IHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA3
NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMzc1MjcxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5OgorICAgICAgICAoTGF5b3V0
VGVzdEZpbmRlci5fcmVhbF90ZXN0cyk6IEV4Y2x1ZGUgInRvb2xzIiBkaXJlY3Rvcmllcy4KKyAg
ICAgICAgKExheW91dFRlc3RGaW5kZXIuX2lzX3Rlc3RfZmlsZSk6IFNwZWNpYWwgY2FzZSBmb3Ig
d2ViIHNvY2tldCdzICpfd3NoLnB5IGZpbGVzLgorICAgICAgICAoTGF5b3V0VGVzdEZpbmRlci5f
aXNfdzNjX3Jlc291cmNlX2ZpbGUpOiBFeGNsdWRlIHczYyBQeXRob24gZmlsZXMuCisKIDIwMjEt
MDEtMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSRUdSRVNTSU9OKHIyNjYxNDgpIENhbmNlbGxpbmcgYSBuYXZpZ2F0aW9uIGluIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gc2hvdWxkIG5vdCBzdXNwZW5kIHRoZSBwcmV2aW91
cyBkb2N1bWVudCdzIGZvbnQgbG9hZGluZyB0aW1lcgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L2xheW91dF90ZXN0X2ZpbmRlci5weQkocmV2aXNpb24gMjcxNzcyKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dl
cihfX25hbWVfXykKIAogCiAjIFdoZW4gY29sbGVjdGluZyB0ZXN0IGNhc2VzLCB3ZSBpbmNsdWRl
IGFueSBmaWxlIHdpdGggdGhlc2UgZXh0ZW5zaW9ucy4KLV9zdXBwb3J0ZWRfdGVzdF9leHRlbnNp
b25zID0gc2V0KFsnLmh0bWwnLCAnLnNodG1sJywgJy54bWwnLCAnLnhodG1sJywgJy5wbCcsICcu
aHRtJywgJy5waHAnLCAnLnN2ZycsICcubWh0JywgJy54aHQnXSkKK19zdXBwb3J0ZWRfdGVzdF9l
eHRlbnNpb25zID0gc2V0KFsnLmh0bWwnLCAnLnNodG1sJywgJy54bWwnLCAnLnhodG1sJywgJy5w
bCcsICcucHknLCAnLmh0bScsICcucGhwJywgJy5zdmcnLCAnLm1odCcsICcueGh0J10pCiAKIAog
IyBJZiBhbnkgY2hhbmdlcyBhcmUgbWFkZSBoZXJlIGJlIHN1cmUgdG8gdXBkYXRlIHRoZSBpc1Vz
ZWRJblJlZnRlc3QgbWV0aG9kIGluIG9sZC1ydW4td2Via2l0LXRlc3RzIGFzIHdlbGwuCkBAIC0x
MDcsNyArMTA3LDcgQEAgY2xhc3MgTGF5b3V0VGVzdEZpbmRlcihvYmplY3QpOgogCiAgICAgZGVm
IF9yZWFsX3Rlc3RzKHNlbGYsIHBhdGhzKToKICAgICAgICAgIyBXaGVuIGNvbGxlY3RpbmcgdGVz
dCBjYXNlcywgc2tpcCB0aGVzZSBkaXJlY3RvcmllcwotICAgICAgICBza2lwcGVkX2RpcmVjdG9y
aWVzID0gc2V0KFsnLnN2bicsICdfc3ZuJywgJ3Jlc291cmNlcycsICdzdXBwb3J0JywgJ3Njcmlw
dC10ZXN0cycsICdyZWZlcmVuY2UnLCAncmVmdGVzdCddKQorICAgICAgICBza2lwcGVkX2RpcmVj
dG9yaWVzID0gc2V0KFsnLnN2bicsICdfc3ZuJywgJ3Jlc291cmNlcycsICdzdXBwb3J0JywgJ3Nj
cmlwdC10ZXN0cycsICd0b29scycsICdyZWZlcmVuY2UnLCAncmVmdGVzdCddKQogICAgICAgICBm
aWxlcyA9IGZpbmRfZmlsZXMuZmluZChzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLCBzZWxmLl9wb3J0
LmxheW91dF90ZXN0c19kaXIoKSwgcGF0aHMsIHNraXBwZWRfZGlyZWN0b3JpZXMsIHNlbGYuX2lz
X3Rlc3RfZmlsZSwgc2VsZi5fcG9ydC50ZXN0X2tleSkKICAgICAgICAgcmV0dXJuIFtzZWxmLl9w
b3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoZikgZm9yIGYgaW4gZmlsZXNdCiAKQEAgLTExOCw2
ICsxMTgsOSBAQCBjbGFzcyBMYXlvdXRUZXN0RmluZGVyKG9iamVjdCk6CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKICAgICAgICAgaWYgc2VsZi5faXNfdzNjX3Jlc291cmNlX2ZpbGUoZmlsZXN5
c3RlbSwgZGlybmFtZSwgZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgICMgU3BlY2lhbCBjYXNlIGZvciB3ZWJzb2NrZXQgdG9vbGluZworICAgICAgICBpZiBmaWxl
bmFtZS5lbmRzd2l0aCgnX3dzaC5weScpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAg
ICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgX2lzX3czY19yZXNvdXJjZV9maWxlKHNlbGYsIGZp
bGVzeXN0ZW0sIGRpcm5hbWUsIGZpbGVuYW1lKToKQEAgLTEzMSw2ICsxMzQsMTAgQEAgY2xhc3Mg
TGF5b3V0VGVzdEZpbmRlcihvYmplY3QpOgogICAgICAgICAgICAganNvbl9kYXRhID0gZmlsZXN5
c3RlbS5yZWFkX3RleHRfZmlsZShmaWxlcGF0aCkKICAgICAgICAgICAgIHNlbGYuX3czY19yZXNv
dXJjZV9maWxlcyA9IGpzb24ubG9hZHMoanNvbl9kYXRhKQogCisgICAgICAgIF8sIGV4dGVuc2lv
biA9IGZpbGVzeXN0ZW0uc3BsaXRleHQoZmlsZW5hbWUpCisgICAgICAgIGlmIGV4dGVuc2lvbiA9
PSAnLnB5JzoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKICAgICAgICAgc3VicGF0aCA9IHBh
dGhbbGVuKHczY19wYXRoKSArIDE6XS5yZXBsYWNlKCdcXCcsICcvJykKICAgICAgICAgaWYgc3Vi
cGF0aCBpbiBzZWxmLl93M2NfcmVzb3VyY2VfZmlsZXNbImZpbGVzIl06CiAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjcxNzcyKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMDEtMjIgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIFtydW4td2Via2l0LXRl
c3RzXSBTdXBwb3J0IHB5dGhvbiBsYXlvdXQgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDc0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbDVsaWIvZ2VuZXJhdGUtdGVzdC13cmFwcGVy
czogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHRtbDVsaWIvZ2VuZXJhdGUtdGVzdC13cmFwcGVy
cy5weS4KKyAgICAgICAgKiBodG1sNWxpYi9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzLnB5OiBSZW1v
dmVkLgorICAgICAgICAqIGh0dHAvY29uZi9hcGFjaGUyLjItaHR0cGQuY29uZjogQWxsb3cgLnB5
IGZpbGVzIHRvIGJlIHJ1biBhcyBDR0kgYmluYXJpZXMuCisgICAgICAgICogaHR0cC9jb25mL2Fw
YWNoZTIuNC1odHRwZC5jb25mOiBEaXR0by4KKyAgICAgICAgKiBodHRwL2NvbmYvYXBhY2hlMi40
LXBocDctaHR0cGQuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0cC9jb25mL2FyY2hsaW51eC1o
dHRwZC5jb25mOiBEaXR0by4KKyAgICAgICAgKiBodHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1w
aHA3LjAuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0cC9jb25mL2RlYmlhbi1odHRwZC0yLjQt
cGhwNy4xLmNvbmY6IERpdHRvLgorICAgICAgICAqIGh0dHAvY29uZi9kZWJpYW4taHR0cGQtMi40
LXBocDcuMi5jb25mOiBEaXR0by4KKyAgICAgICAgKiBodHRwL2NvbmYvZGViaWFuLWh0dHBkLTIu
NC1waHA3LjMuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0cC9jb25mL2RlYmlhbi1odHRwZC0y
LjQtcGhwNy40LmNvbmY6IERpdHRvLgorICAgICAgICAqIGh0dHAvY29uZi9mZWRvcmEtaHR0cGQt
Mi4yLmNvbmY6IERpdHRvLgorICAgICAgICAqIGh0dHAvY29uZi9mZWRvcmEtaHR0cGQtMi40LXBo
cDcuY29uZjogRGl0dG8uCisgICAgICAgICogaHR0cC9jb25mL2ZlZG9yYS1odHRwZC0yLjQuY29u
ZjogRGl0dG8uCisgICAgICAgICogaHR0cC9jb25mL2ZsYXRwYWstaHR0cGQuY29uZjogRGl0dG8u
CisgICAgICAgICogaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNS5jb25mOiBEaXR0by4KKyAg
ICAgICAgKiBodHRwL2NvbmYvd2luLWh0dHBkLTIuNC1waHA3LmNvbmY6IERpdHRvLgorICAgICAg
ICAqIG1lZGlhL3RyYWNrL29wZXJhL3RyYWNrL3dlYnZ0dC9wYXJzaW5nLWN1ZS1kYXRhL2J1aWxk
dGVzdHM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3RyYWNrL3dl
YnZ0dC9wYXJzaW5nLWN1ZS1kYXRhL2J1aWxkdGVzdHMucHkuCisgICAgICAgICogbWVkaWEvdHJh
Y2svb3BlcmEvdHJhY2svd2VidnR0L3BhcnNpbmctY3VlLWRhdGEvYnVpbGR0ZXN0cy5weTogUmVt
b3ZlZC4KKyAgICAgICAgKiB3ZWJnbC9nZW5lcmF0ZS13ZWJnbC10ZXN0czogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHkuCisgICAgICAgICogd2Vi
Z2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHk6IFJlbW92ZWQuCisKIDIwMjEtMDEtMjIgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtMYXlvdXRUZXN0c10g
TW92ZSBzZXJ2aWNlLXdvcmtlciBweXRob24gZmlsZXMgdG8gcmVzb3VyY2VzCkluZGV4OiBMYXlv
dXRUZXN0cy9odG1sNWxpYi9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0bWw1bGliL2dlbmVyYXRlLXRlc3Qtd3JhcHBlcnMJKHJldmlzaW9uIDI3MTc2
NikJKGZyb20gTGF5b3V0VGVzdHMvaHRtbDVsaWIvZ2VuZXJhdGUtdGVzdC13cmFwcGVycy5weToy
NzE3NjYpCisrKyBMYXlvdXRUZXN0cy9odG1sNWxpYi9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMg
Q29weXJpZ2h0IChjKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorIworIyBVc2VkIGZvciBnZW5lcmF0aW5nIExheW91dFRlc3QtY29tcGF0
aWJsZSBodG1sIGZpbGVzIHRvIHJ1biBodG1sNWxpYiAqLmRhdCBmaWxlcy4KKworaW1wb3J0IG9z
CitpbXBvcnQgZ2xvYgorCisKK2NsYXNzIFdyYXBwZXJHZW5lcmF0b3Iob2JqZWN0KToKKyAgICBJ
TlBVVF9ESVJFQ1RPUlkgPSAicmVzb3VyY2VzIgorICAgIElOUFVUX1NVRkZJWCA9ICIuZGF0Igor
ICAgIE9VVFBVVF9ESVJFQ1RPUlkgPSAiZ2VuZXJhdGVkIgorICAgIEhBUk5FU1NfUFJFRklYID0g
InJ1bi0iCisgICAgSEFSTkVTU19TVUZGSVggPSAiLmh0bWwiCisgICAgRVhQRUNUQUlPTl9TVUZG
SVggPSAiLWV4cGVjdGVkLnR4dCIKKyAgICBIQVJORVNTX1RZUEVTID0gKCJ3cml0ZSIsICJkYXRh
IikKKworICAgIEhBUk5FU1NfVEVNUExBVEUgPSAiIiI8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQ+
Cit2YXIgdGVzdF9maWxlcyA9IFsgJyUodGVzdF9wYXRoKXMnIF0KKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+CislKGV4
dHJhX2NvbnRlbnQpcworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2Ny
aXB0PgorIiIiCisKKyAgICBkZWYgX2ZpbGVzX2luX2RpcmVjdG9yeV93aXRoX3N1ZmZpeChzZWxm
LCBkaXJlY3RvcnksIHN1ZmZpeCk6CisgICAgICAgIHJldHVybiBnbG9iLmdsb2Iob3MucGF0aC5q
b2luKGRpcmVjdG9yeSwgJyonICsgc3VmZml4KSkKKworICAgIGRlZiBfbGFzdF9wYXRoX2NvbXBv
bmVudF9yZW1vdmluZ19zdWZmaXgoc2VsZiwgcGF0aCwgc3VmZml4KToKKyAgICAgICAgcmV0dXJu
IG9zLnBhdGguc3BsaXQocGF0aClbLTFdWzotbGVuKHN1ZmZpeCldCisKKyAgICBkZWYgX3JlbW92
ZV9oYXJuZXNzX3ByZWZpeChzZWxmLCBuYW1lKToKKyAgICAgICAgYXNzZXJ0KG5hbWUuc3RhcnRz
d2l0aChzZWxmLkhBUk5FU1NfUFJFRklYKSkKKyAgICAgICAgcmV0dXJuIG5hbWVbbGVuKHNlbGYu
SEFSTkVTU19QUkVGSVgpOl0KKworICAgIGRlZiBfcmVtb3ZlX2hhcm5lc3NfdHlwZShzZWxmLCBu
YW1lKToKKyAgICAgICAgcGFydHMgPSBuYW1lLnNwbGl0KCctJykKKyAgICAgICAgYXNzZXJ0KHBh
cnRzWy0xXSBpbiBzZWxmLkhBUk5FU1NfVFlQRVMpCisgICAgICAgIHJldHVybiAiLSIuam9pbihw
YXJ0c1s6LTFdKQorCisgICAgZGVmIF90ZXN0X25hbWVfZnJvbV9oYXJuZXNzX25hbWUoc2VsZiwg
bmFtZSk6CisgICAgICAgIG5hbWUgPSBzZWxmLl9yZW1vdmVfaGFybmVzc19wcmVmaXgobmFtZSkK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3JlbW92ZV9oYXJuZXNzX3R5cGUobmFtZSkKKworICAgIGRl
ZiBfcmVtb3ZlX3N0YWxlX3Rlc3RzKHNlbGYsIHRlc3RfbmFtZXMpOgorICAgICAgICBmb3IgcGF0
aCBpbiBzZWxmLl9maWxlc19pbl9kaXJlY3Rvcnlfd2l0aF9zdWZmaXgoc2VsZi5PVVRQVVRfRElS
RUNUT1JZLCBzZWxmLkhBUk5FU1NfU1VGRklYKToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9s
YXN0X3BhdGhfY29tcG9uZW50X3JlbW92aW5nX3N1ZmZpeChwYXRoLCBzZWxmLkhBUk5FU1NfU1VG
RklYKQorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX3Rlc3RfbmFtZV9mcm9tX2hhcm5lc3NfbmFt
ZShuYW1lKQorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gdGVzdF9uYW1lczoKKyAgICAgICAg
ICAgICAgICBwcmludCgiUmVtb3ZpbmcgJXMsICVzIG5vIGxvbmdlciBleGlzdHMuIiAlIChwYXRo
LCBzZWxmLl9pbnB1dF9wYXRoKG5hbWUpKSkKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUocGF0
aCkKKworICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLl9maWxlc19pbl9kaXJlY3Rvcnlfd2l0aF9z
dWZmaXgoc2VsZi5PVVRQVVRfRElSRUNUT1JZLCBzZWxmLkVYUEVDVEFJT05fU1VGRklYKToKKyAg
ICAgICAgICAgIG5hbWUgPSBzZWxmLl9sYXN0X3BhdGhfY29tcG9uZW50X3JlbW92aW5nX3N1ZmZp
eChwYXRoLCBzZWxmLkVYUEVDVEFJT05fU1VGRklYKQorICAgICAgICAgICAgbmFtZSA9IHNlbGYu
X3Rlc3RfbmFtZV9mcm9tX2hhcm5lc3NfbmFtZShuYW1lKQorICAgICAgICAgICAgaWYgbmFtZSBu
b3QgaW4gdGVzdF9uYW1lczoKKyAgICAgICAgICAgICAgICBwcmludCgiUmVtb3ZpbmcgJXMsICVz
IG5vIGxvbmdlciBleGlzdHMuIiAlIChwYXRoLCBzZWxmLl9pbnB1dF9wYXRoKG5hbWUpKSkKKyAg
ICAgICAgICAgICAgICBvcy5yZW1vdmUocGF0aCkKKworICAgIGRlZiBfaW5wdXRfcGF0aChzZWxm
LCB0ZXN0X25hbWUpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuSU5QVVRfRElS
RUNUT1JZLCB0ZXN0X25hbWUgKyBzZWxmLklOUFVUX1NVRkZJWCkKKworICAgIGRlZiBfaGFybmVz
c19wYXRoKHNlbGYsIHRlc3RfbmFtZSwgdXNlX3dyaXRlKToKKyAgICAgICAgaGFybmVzc19wYXRo
ID0gb3MucGF0aC5qb2luKHNlbGYuT1VUUFVUX0RJUkVDVE9SWSwgc2VsZi5IQVJORVNTX1BSRUZJ
WCArIHRlc3RfbmFtZSkKKyAgICAgICAgaWYgdXNlX3dyaXRlOgorICAgICAgICAgICAgaGFybmVz
c19wYXRoICs9ICItd3JpdGUiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoYXJuZXNzX3Bh
dGggKz0gIi1kYXRhIgorICAgICAgICByZXR1cm4gaGFybmVzc19wYXRoICsgc2VsZi5IQVJORVNT
X1NVRkZJWAorCisgICAgZGVmIF9oYXJuZXNzX2NvbnRlbnQoc2VsZiwgdGVzdF9uYW1lLCB1c2Vf
d3JpdGUpOgorICAgICAgICBleHRyYV9jb250ZW50ID0gIiIKKyAgICAgICAgaWYgbm90IHVzZV93
cml0ZToKKyAgICAgICAgICAgIGV4dHJhX2NvbnRlbnQgPSAiPHNjcmlwdD53aW5kb3cuZm9yY2VE
YXRhVVJMcyA9IHRydWU7PC9zY3JpcHQ+IjsKKyAgICAgICAgcmV0dXJuIHNlbGYuSEFSTkVTU19U
RU1QTEFURSAlIHsKKyAgICAgICAgICAgICMgRklYTUU6IC4uIHNob3VsZCBiZSByZWxhdGl2ZSB0
byB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgaW4gT1VUUFVUX0RJUkVDVE9SWQorICAgICAgICAg
ICAgJ3Rlc3RfcGF0aCc6IG9zLnBhdGguam9pbignLi4nLCBzZWxmLl9pbnB1dF9wYXRoKHRlc3Rf
bmFtZSkpLAorICAgICAgICAgICAgJ2V4dHJhX2NvbnRlbnQnOiBleHRyYV9jb250ZW50LAorICAg
ICAgICB9CisKKyAgICBkZWYgX3dyaXRlX2hhcm5lc3Moc2VsZiwgdGVzdF9uYW1lLCB1c2Vfd3Jp
dGUpOgorICAgICAgICBoYXJuZXNzX2ZpbGUgPSBvcGVuKHNlbGYuX2hhcm5lc3NfcGF0aCh0ZXN0
X25hbWUsIHVzZV93cml0ZSksICJ3IikKKyAgICAgICAgaGFybmVzc19maWxlLndyaXRlKHNlbGYu
X2hhcm5lc3NfY29udGVudCh0ZXN0X25hbWUsIHVzZV93cml0ZSkpCisKKyAgICBkZWYgbWFpbihz
ZWxmKToKKyAgICAgICAgdGVzdF9uYW1lcyA9IFtzZWxmLl9sYXN0X3BhdGhfY29tcG9uZW50X3Jl
bW92aW5nX3N1ZmZpeChwYXRoLCBzZWxmLklOUFVUX1NVRkZJWCkgZm9yIHBhdGggaW4gc2VsZi5f
ZmlsZXNfaW5fZGlyZWN0b3J5X3dpdGhfc3VmZml4KHNlbGYuSU5QVVRfRElSRUNUT1JZLCBzZWxm
LklOUFVUX1NVRkZJWCldCisKKyAgICAgICAgc2VsZi5fcmVtb3ZlX3N0YWxlX3Rlc3RzKHRlc3Rf
bmFtZXMpCisKKyAgICAgICAgZm9yIG5hbWUgaW4gdGVzdF9uYW1lczoKKyAgICAgICAgICAgIHNl
bGYuX3dyaXRlX2hhcm5lc3MobmFtZSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX2hh
cm5lc3MobmFtZSwgRmFsc2UpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBX
cmFwcGVyR2VuZXJhdG9yKCkubWFpbigpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9odG1sNWxpYi9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJzCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
eGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogTGF5b3V0VGVzdHMvaHRtbDVsaWIvZ2VuZXJhdGUtdGVzdC13cmFwcGVycy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odG1sNWxpYi9nZW5lcmF0ZS10ZXN0LXdyYXBwZXJz
LnB5CShyZXZpc2lvbiAyNzE3NzIpCisrKyBMYXlvdXRUZXN0cy9odG1sNWxpYi9nZW5lcmF0ZS10
ZXN0LXdyYXBwZXJzLnB5CShub25leGlzdGVudCkKQEAgLTEsMTI0ICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKGMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jCi0jIFVzZWQgZm9yIGdlbmVyYXRpbmcg
TGF5b3V0VGVzdC1jb21wYXRpYmxlIGh0bWwgZmlsZXMgdG8gcnVuIGh0bWw1bGliICouZGF0IGZp
bGVzLgotCi1pbXBvcnQgb3MKLWltcG9ydCBnbG9iCi0KLQotY2xhc3MgV3JhcHBlckdlbmVyYXRv
cihvYmplY3QpOgotICAgIElOUFVUX0RJUkVDVE9SWSA9ICJyZXNvdXJjZXMiCi0gICAgSU5QVVRf
U1VGRklYID0gIi5kYXQiCi0gICAgT1VUUFVUX0RJUkVDVE9SWSA9ICJnZW5lcmF0ZWQiCi0gICAg
SEFSTkVTU19QUkVGSVggPSAicnVuLSIKLSAgICBIQVJORVNTX1NVRkZJWCA9ICIuaHRtbCIKLSAg
ICBFWFBFQ1RBSU9OX1NVRkZJWCA9ICItZXhwZWN0ZWQudHh0IgotICAgIEhBUk5FU1NfVFlQRVMg
PSAoIndyaXRlIiwgImRhdGEiKQotCi0gICAgSEFSTkVTU19URU1QTEFURSA9ICIiIjwhRE9DVFlQ
RSBodG1sPgotPHNjcmlwdD4KLXZhciB0ZXN0X2ZpbGVzID0gWyAnJSh0ZXN0X3BhdGgpcycgXQot
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpz
Ij48L3NjcmlwdD4KLSUoZXh0cmFfY29udGVudClzCi08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3J1bm5lci5qcyI+PC9zY3JpcHQ+Ci0iIiIKLQotICAgIGRlZiBfZmlsZXNfaW5fZGlyZWN0b3J5
X3dpdGhfc3VmZml4KHNlbGYsIGRpcmVjdG9yeSwgc3VmZml4KToKLSAgICAgICAgcmV0dXJuIGds
b2IuZ2xvYihvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCAnKicgKyBzdWZmaXgpKQotCi0gICAgZGVm
IF9sYXN0X3BhdGhfY29tcG9uZW50X3JlbW92aW5nX3N1ZmZpeChzZWxmLCBwYXRoLCBzdWZmaXgp
OgotICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdChwYXRoKVstMV1bOi1sZW4oc3VmZml4KV0K
LQotICAgIGRlZiBfcmVtb3ZlX2hhcm5lc3NfcHJlZml4KHNlbGYsIG5hbWUpOgotICAgICAgICBh
c3NlcnQobmFtZS5zdGFydHN3aXRoKHNlbGYuSEFSTkVTU19QUkVGSVgpKQotICAgICAgICByZXR1
cm4gbmFtZVtsZW4oc2VsZi5IQVJORVNTX1BSRUZJWCk6XQotCi0gICAgZGVmIF9yZW1vdmVfaGFy
bmVzc190eXBlKHNlbGYsIG5hbWUpOgotICAgICAgICBwYXJ0cyA9IG5hbWUuc3BsaXQoJy0nKQot
ICAgICAgICBhc3NlcnQocGFydHNbLTFdIGluIHNlbGYuSEFSTkVTU19UWVBFUykKLSAgICAgICAg
cmV0dXJuICItIi5qb2luKHBhcnRzWzotMV0pCi0KLSAgICBkZWYgX3Rlc3RfbmFtZV9mcm9tX2hh
cm5lc3NfbmFtZShzZWxmLCBuYW1lKToKLSAgICAgICAgbmFtZSA9IHNlbGYuX3JlbW92ZV9oYXJu
ZXNzX3ByZWZpeChuYW1lKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVtb3ZlX2hhcm5lc3NfdHlw
ZShuYW1lKQotCi0gICAgZGVmIF9yZW1vdmVfc3RhbGVfdGVzdHMoc2VsZiwgdGVzdF9uYW1lcyk6
Ci0gICAgICAgIGZvciBwYXRoIGluIHNlbGYuX2ZpbGVzX2luX2RpcmVjdG9yeV93aXRoX3N1ZmZp
eChzZWxmLk9VVFBVVF9ESVJFQ1RPUlksIHNlbGYuSEFSTkVTU19TVUZGSVgpOgotICAgICAgICAg
ICAgbmFtZSA9IHNlbGYuX2xhc3RfcGF0aF9jb21wb25lbnRfcmVtb3Zpbmdfc3VmZml4KHBhdGgs
IHNlbGYuSEFSTkVTU19TVUZGSVgpCi0gICAgICAgICAgICBuYW1lID0gc2VsZi5fdGVzdF9uYW1l
X2Zyb21faGFybmVzc19uYW1lKG5hbWUpCi0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiB0ZXN0
X25hbWVzOgotICAgICAgICAgICAgICAgIHByaW50KCJSZW1vdmluZyAlcywgJXMgbm8gbG9uZ2Vy
IGV4aXN0cy4iICUgKHBhdGgsIHNlbGYuX2lucHV0X3BhdGgobmFtZSkpKQotICAgICAgICAgICAg
ICAgIG9zLnJlbW92ZShwYXRoKQotCi0gICAgICAgIGZvciBwYXRoIGluIHNlbGYuX2ZpbGVzX2lu
X2RpcmVjdG9yeV93aXRoX3N1ZmZpeChzZWxmLk9VVFBVVF9ESVJFQ1RPUlksIHNlbGYuRVhQRUNU
QUlPTl9TVUZGSVgpOgotICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2xhc3RfcGF0aF9jb21wb25l
bnRfcmVtb3Zpbmdfc3VmZml4KHBhdGgsIHNlbGYuRVhQRUNUQUlPTl9TVUZGSVgpCi0gICAgICAg
ICAgICBuYW1lID0gc2VsZi5fdGVzdF9uYW1lX2Zyb21faGFybmVzc19uYW1lKG5hbWUpCi0gICAg
ICAgICAgICBpZiBuYW1lIG5vdCBpbiB0ZXN0X25hbWVzOgotICAgICAgICAgICAgICAgIHByaW50
KCJSZW1vdmluZyAlcywgJXMgbm8gbG9uZ2VyIGV4aXN0cy4iICUgKHBhdGgsIHNlbGYuX2lucHV0
X3BhdGgobmFtZSkpKQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQotCi0gICAgZGVm
IF9pbnB1dF9wYXRoKHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpv
aW4oc2VsZi5JTlBVVF9ESVJFQ1RPUlksIHRlc3RfbmFtZSArIHNlbGYuSU5QVVRfU1VGRklYKQot
Ci0gICAgZGVmIF9oYXJuZXNzX3BhdGgoc2VsZiwgdGVzdF9uYW1lLCB1c2Vfd3JpdGUpOgotICAg
ICAgICBoYXJuZXNzX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5PVVRQVVRfRElSRUNUT1JZLCBz
ZWxmLkhBUk5FU1NfUFJFRklYICsgdGVzdF9uYW1lKQotICAgICAgICBpZiB1c2Vfd3JpdGU6Ci0g
ICAgICAgICAgICBoYXJuZXNzX3BhdGggKz0gIi13cml0ZSIKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGhhcm5lc3NfcGF0aCArPSAiLWRhdGEiCi0gICAgICAgIHJldHVybiBoYXJuZXNzX3Bh
dGggKyBzZWxmLkhBUk5FU1NfU1VGRklYCi0KLSAgICBkZWYgX2hhcm5lc3NfY29udGVudChzZWxm
LCB0ZXN0X25hbWUsIHVzZV93cml0ZSk6Ci0gICAgICAgIGV4dHJhX2NvbnRlbnQgPSAiIgotICAg
ICAgICBpZiBub3QgdXNlX3dyaXRlOgotICAgICAgICAgICAgZXh0cmFfY29udGVudCA9ICI8c2Ny
aXB0PndpbmRvdy5mb3JjZURhdGFVUkxzID0gdHJ1ZTs8L3NjcmlwdD4iOwotICAgICAgICByZXR1
cm4gc2VsZi5IQVJORVNTX1RFTVBMQVRFICUgewotICAgICAgICAgICAgIyBGSVhNRTogLi4gc2hv
dWxkIGJlIHJlbGF0aXZlIHRvIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyBpbiBPVVRQVVRfRElS
RUNUT1JZCi0gICAgICAgICAgICAndGVzdF9wYXRoJzogb3MucGF0aC5qb2luKCcuLicsIHNlbGYu
X2lucHV0X3BhdGgodGVzdF9uYW1lKSksCi0gICAgICAgICAgICAnZXh0cmFfY29udGVudCc6IGV4
dHJhX2NvbnRlbnQsCi0gICAgICAgIH0KLQotICAgIGRlZiBfd3JpdGVfaGFybmVzcyhzZWxmLCB0
ZXN0X25hbWUsIHVzZV93cml0ZSk6Ci0gICAgICAgIGhhcm5lc3NfZmlsZSA9IG9wZW4oc2VsZi5f
aGFybmVzc19wYXRoKHRlc3RfbmFtZSwgdXNlX3dyaXRlKSwgInciKQotICAgICAgICBoYXJuZXNz
X2ZpbGUud3JpdGUoc2VsZi5faGFybmVzc19jb250ZW50KHRlc3RfbmFtZSwgdXNlX3dyaXRlKSkK
LQotICAgIGRlZiBtYWluKHNlbGYpOgotICAgICAgICB0ZXN0X25hbWVzID0gW3NlbGYuX2xhc3Rf
cGF0aF9jb21wb25lbnRfcmVtb3Zpbmdfc3VmZml4KHBhdGgsIHNlbGYuSU5QVVRfU1VGRklYKSBm
b3IgcGF0aCBpbiBzZWxmLl9maWxlc19pbl9kaXJlY3Rvcnlfd2l0aF9zdWZmaXgoc2VsZi5JTlBV
VF9ESVJFQ1RPUlksIHNlbGYuSU5QVVRfU1VGRklYKV0KLQotICAgICAgICBzZWxmLl9yZW1vdmVf
c3RhbGVfdGVzdHModGVzdF9uYW1lcykKLQotICAgICAgICBmb3IgbmFtZSBpbiB0ZXN0X25hbWVz
OgotICAgICAgICAgICAgc2VsZi5fd3JpdGVfaGFybmVzcyhuYW1lLCBUcnVlKQotICAgICAgICAg
ICAgc2VsZi5fd3JpdGVfaGFybmVzcyhuYW1lLCBGYWxzZSkKLQotCi1pZiBfX25hbWVfXyA9PSAi
X19tYWluX18iOgotICAgIFdyYXBwZXJHZW5lcmF0b3IoKS5tYWluKCkKClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL2h0bWw1bGliL2dlbmVyYXRlLXRlc3Qtd3JhcHBlcnMucHkKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9hcGFj
aGUyLjItaHR0cGQuY29uZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL2NvbmYvYXBh
Y2hlMi4yLWh0dHBkLmNvbmYJKHJldmlzaW9uIDI3MTc3MikKKysrIExheW91dFRlc3RzL2h0dHAv
Y29uZi9hcGFjaGUyLjItaHR0cGQuY29uZgkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3
IEBAIFNlcnZlclNpZ25hdHVyZSBPbgogICAgIEFkZEVuY29kaW5nIHgtY29tcHJlc3MgLloKICAg
ICBBZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIAotICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlw
dCAuY2dpIC5wbAorICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbCAucHkKIAogICAg
IEFkZFR5cGUgdGV4dC9odG1sIC5zaHRtbAogICAgIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAu
c2h0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9hcGFjaGUyLjQtaHR0cGQuY29uZgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL2NvbmYvYXBhY2hlMi40LWh0dHBkLmNvbmYJ
KHJldmlzaW9uIDI3MTc3MikKKysrIExheW91dFRlc3RzL2h0dHAvY29uZi9hcGFjaGUyLjQtaHR0
cGQuY29uZgkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIFNlcnZlclNpZ25hdHVy
ZSBPbgogICAgIEFkZEVuY29kaW5nIHgtY29tcHJlc3MgLloKICAgICBBZGRFbmNvZGluZyB4LWd6
aXAgLmd6IC50Z3oKIAotICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorICAgIEFk
ZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbCAucHkKIAogICAgIEFkZFR5cGUgdGV4dC9odG1s
IC5zaHRtbAogICAgIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAuc2h0bWwKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvY29uZi9hcGFjaGUyLjQtcGhwNy1odHRwZC5jb25mCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvY29uZi9hcGFjaGUyLjQtcGhwNy1odHRwZC5jb25mCShyZXZpc2lv
biAyNzE3NzIpCisrKyBMYXlvdXRUZXN0cy9odHRwL2NvbmYvYXBhY2hlMi40LXBocDctaHR0cGQu
Y29uZgkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIFNlcnZlclNpZ25hdHVyZSBP
bgogICAgIEFkZEVuY29kaW5nIHgtY29tcHJlc3MgLloKICAgICBBZGRFbmNvZGluZyB4LWd6aXAg
Lmd6IC50Z3oKIAotICAgIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorICAgIEFkZEhh
bmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbCAucHkKIAogICAgIEFkZFR5cGUgdGV4dC9odG1sIC5z
aHRtbAogICAgIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAuc2h0bWwKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvY29uZi9hcmNobGludXgtaHR0cGQuY29uZgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL2NvbmYvYXJjaGxpbnV4LWh0dHBkLmNvbmYJKHJldmlzaW9uIDI3MTc3MikKKysr
IExheW91dFRlc3RzL2h0dHAvY29uZi9hcmNobGludXgtaHR0cGQuY29uZgkod29ya2luZyBjb3B5
KQpAQCAtMTA5LDcgKzEwOSw3IEBAIEFkZEVuY29kaW5nIHgtZ3ppcCAuZ3ogLnRnegogQWRkVHlw
ZSBhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydCAuY3J0CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gt
cGtjczctY3JsICAgIC5jcmwKIAotQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsCitBZGRI
YW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwgLnB5CiAKIEFkZFR5cGUgdGV4dC9odG1sIC5zaHRt
bAogQWRkT3V0cHV0RmlsdGVyIElOQ0xVREVTIC5zaHRtbApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4wLmNvbmYKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4wLmNvbmYJKHJldmlzaW9uIDI3
MTc3MikKKysrIExheW91dFRlc3RzL2h0dHAvY29uZi9kZWJpYW4taHR0cGQtMi40LXBocDcuMC5j
b25mCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgQWRkRW5jb2RpbmcgeC1nemlw
IC5neiAudGd6CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0IC5jcnQKIEFkZFR5
cGUgYXBwbGljYXRpb24veC1wa2NzNy1jcmwgICAgLmNybAogCi1BZGRIYW5kbGVyIGNnaS1zY3Jp
cHQgLmNnaSAucGwKK0FkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbCAucHkKIAogQWRkVHlw
ZSB0ZXh0L2h0bWwgLnNodG1sCiBBZGRPdXRwdXRGaWx0ZXIgSU5DTFVERVMgLnNodG1sCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjEuY29uZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjEu
Y29uZgkocmV2aXNpb24gMjcxNzcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL2RlYmlhbi1o
dHRwZC0yLjQtcGhwNy4xLmNvbmYJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBB
ZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIEFkZFR5cGUgYXBwbGljYXRpb24veC14NTA5LWNh
LWNlcnQgLmNydAogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXBrY3M3LWNybCAgICAuY3JsCiAKLUFk
ZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kg
LnBsIC5weQogCiBBZGRUeXBlIHRleHQvaHRtbCAuc2h0bWwKIEFkZE91dHB1dEZpbHRlciBJTkNM
VURFUyAuc2h0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9kZWJpYW4taHR0cGQtMi40
LXBocDcuMi5jb25mCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29uZi9kZWJpYW4t
aHR0cGQtMi40LXBocDcuMi5jb25mCShyZXZpc2lvbiAyNzE3NzIpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjIuY29uZgkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDcgKzEwNSw3IEBAIEFkZEVuY29kaW5nIHgtZ3ppcCAuZ3ogLnRnegogQWRkVHlwZSBhcHBs
aWNhdGlvbi94LXg1MDktY2EtY2VydCAuY3J0CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtcGtjczct
Y3JsICAgIC5jcmwKIAotQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsCitBZGRIYW5kbGVy
IGNnaS1zY3JpcHQgLmNnaSAucGwgLnB5CiAKIEFkZFR5cGUgdGV4dC9odG1sIC5zaHRtbAogQWRk
T3V0cHV0RmlsdGVyIElOQ0xVREVTIC5zaHRtbApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC9jb25m
L2RlYmlhbi1odHRwZC0yLjQtcGhwNy4zLmNvbmYKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC9jb25mL2RlYmlhbi1odHRwZC0yLjQtcGhwNy4zLmNvbmYJKHJldmlzaW9uIDI3MTc3MikK
KysrIExheW91dFRlc3RzL2h0dHAvY29uZi9kZWJpYW4taHR0cGQtMi40LXBocDcuMy5jb25mCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgQWRkRW5jb2RpbmcgeC1nemlwIC5neiAu
dGd6CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0IC5jcnQKIEFkZFR5cGUgYXBw
bGljYXRpb24veC1wa2NzNy1jcmwgICAgLmNybAogCi1BZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNn
aSAucGwKK0FkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbCAucHkKIAogQWRkVHlwZSB0ZXh0
L2h0bWwgLnNodG1sCiBBZGRPdXRwdXRGaWx0ZXIgSU5DTFVERVMgLnNodG1sCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjQuY29uZgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZGViaWFuLWh0dHBkLTIuNC1waHA3LjQuY29uZgko
cmV2aXNpb24gMjcxNzcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL2RlYmlhbi1odHRwZC0y
LjQtcGhwNy40LmNvbmYJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBBZGRFbmNv
ZGluZyB4LWd6aXAgLmd6IC50Z3oKIEFkZFR5cGUgYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnQg
LmNydAogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXBrY3M3LWNybCAgICAuY3JsCiAKLUFkZEhhbmRs
ZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsIC5w
eQogCiBBZGRUeXBlIHRleHQvaHRtbCAuc2h0bWwKIEFkZE91dHB1dEZpbHRlciBJTkNMVURFUyAu
c2h0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9mZWRvcmEtaHR0cGQtMi4yLmNvbmYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZlZG9yYS1odHRwZC0yLjIuY29u
ZgkocmV2aXNpb24gMjcxNzcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZlZG9yYS1odHRw
ZC0yLjIuY29uZgkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIEFkZEVuY29kaW5n
IHgtZ3ppcCAuZ3ogLnRnegogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydCAuY3J0
CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtcGtjczctY3JsICAgIC5jcmwKIAotQWRkSGFuZGxlciBj
Z2ktc2NyaXB0IC5jZ2kgLnBsCitBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwgLnB5CiAK
IEFkZFR5cGUgdGV4dC9odG1sIC5zaHRtbAogQWRkT3V0cHV0RmlsdGVyIElOQ0xVREVTIC5zaHRt
bApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZlZG9yYS1odHRwZC0yLjQtcGhwNy5jb25m
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29uZi9mZWRvcmEtaHR0cGQtMi40LXBo
cDcuY29uZgkocmV2aXNpb24gMjcxNzcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZlZG9y
YS1odHRwZC0yLjQtcGhwNy5jb25mCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAg
QWRkRW5jb2RpbmcgeC1nemlwIC5neiAudGd6CiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gteDUwOS1j
YS1jZXJ0IC5jcnQKIEFkZFR5cGUgYXBwbGljYXRpb24veC1wa2NzNy1jcmwgICAgLmNybAogCi1B
ZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwKK0FkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dp
IC5wbCAucHkKIAogQWRkVHlwZSB0ZXh0L2h0bWwgLnNodG1sCiBBZGRPdXRwdXRGaWx0ZXIgSU5D
TFVERVMgLnNodG1sCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL2NvbmYvZmVkb3JhLWh0dHBkLTIu
NC5jb25mCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29uZi9mZWRvcmEtaHR0cGQt
Mi40LmNvbmYJKHJldmlzaW9uIDI3MTc3MikKKysrIExheW91dFRlc3RzL2h0dHAvY29uZi9mZWRv
cmEtaHR0cGQtMi40LmNvbmYJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBBZGRF
bmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKIEFkZFR5cGUgYXBwbGljYXRpb24veC14NTA5LWNhLWNl
cnQgLmNydAogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXBrY3M3LWNybCAgICAuY3JsCiAKLUFkZEhh
bmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBs
IC5weQogCiBBZGRUeXBlIHRleHQvaHRtbCAuc2h0bWwKIEFkZE91dHB1dEZpbHRlciBJTkNMVURF
UyAuc2h0bWwKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvY29uZi9mbGF0cGFrLWh0dHBkLmNvbmYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZsYXRwYWstaHR0cGQuY29uZgko
cmV2aXNpb24gMjcxNzcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZsYXRwYWstaHR0cGQu
Y29uZgkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIEFkZEVuY29kaW5nIHgtZ3pp
cCAuZ3ogLnRnegogQWRkVHlwZSBhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydCAuY3J0CiBBZGRU
eXBlIGFwcGxpY2F0aW9uL3gtcGtjczctY3JsICAgIC5jcmwKIAotQWRkSGFuZGxlciBjZ2ktc2Ny
aXB0IC5jZ2kgLnBsCitBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwgLnB5CiAKIEFkZFR5
cGUgdGV4dC9odG1sIC5zaHRtbAogQWRkT3V0cHV0RmlsdGVyIElOQ0xVREVTIC5zaHRtbApJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNS5jb25mCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvY29uZi93aW4taHR0cGQtMi40LXBocDUuY29uZgkocmV2
aXNpb24gMjcxNzcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhw
NS5jb25mCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgU2VydmVyU2lnbmF0dXJl
IE9uCiAgICAgQWRkRW5jb2RpbmcgeC1jb21wcmVzcyAuWgogICAgIEFkZEVuY29kaW5nIHgtZ3pp
cCAuZ3ogLnRnegogCi0gICAgQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsCisgICAgQWRk
SGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsIC5weQogCiAgICAgQWRkVHlwZSB0ZXh0L2h0bWwg
LnNodG1sCiAgICAgQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5zaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvY29uZi93aW4taHR0cGQtMi40LXBocDcuY29uZgkocmV2aXNpb24gMjcx
NzcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgU2VydmVyU2lnbmF0dXJlIE9uCiAgICAg
QWRkRW5jb2RpbmcgeC1jb21wcmVzcyAuWgogICAgIEFkZEVuY29kaW5nIHgtZ3ppcCAuZ3ogLnRn
egogCi0gICAgQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsCisgICAgQWRkSGFuZGxlciBj
Z2ktc2NyaXB0IC5jZ2kgLnBsIC5weQogCiAgICAgQWRkVHlwZSB0ZXh0L2h0bWwgLnNodG1sCiAg
ICAgQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5zaHRtbApJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3BhcnNpbmctY3VlLWRhdGEvYnVpbGR0ZXN0cwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS90cmFjay93ZWJ2dHQv
cGFyc2luZy1jdWUtZGF0YS9idWlsZHRlc3RzCShyZXZpc2lvbiAyNzE3NjYpCShmcm9tIExheW91
dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3RyYWNrL3dlYnZ0dC9wYXJzaW5nLWN1ZS1kYXRhL2J1
aWxkdGVzdHMucHk6MjcxNzY2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvdHJh
Y2svd2VidnR0L3BhcnNpbmctY3VlLWRhdGEvYnVpbGR0ZXN0cwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDY3IEBACisjIS91c3IvYmluL3B5dGhvbgorCitpbXBvcnQgb3MKK2ltcG9ydCB1cmxs
aWIKK2ltcG9ydCBoYXNobGliCisKK2RvY3RtcGwgPSAiIiI8IWRvY3R5cGUgaHRtbD4KKzx0aXRs
ZT5XZWJWVFQgY3VlIGRhdGEgcGFyc2VyIHRlc3QgJXM8L3RpdGxlPgorPHN0eWxlPnZpZGVvIHsg
ZGlzcGxheTpub25lIH08L3N0eWxlPgorPHNjcmlwdCBzcmM9Ly4uLy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS8uLi8uLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0vY29yZS9zdGFuZGFy
ZHMvaHRtbC1wYXJzaW5nL2h0bWw1bGliX2hhcm5lc3MvdGVtcGxhdGUuanM+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0vY29yZS9zdGFuZGFyZHMvaHRtbC1wYXJzaW5nL2h0bWw1bGliX2hhcm5lc3Mv
Y29tbW9uLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vY29tbW9uLmpzPjwvc2NyaXB0Pgor
PGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorcnVuVGVzdHMoWworJXMKK10pOworPC9zY3Jp
cHQ+IiIiCisKK3Rlc3RvYmogPSAie25hbWU6JyVzJywgaW5wdXQ6JyVzJywgZXhwZWN0ZWQ6JyVz
J30iCisKK2RlZiBhcHBlbmR0ZXN0KHRlc3RzLCBpbnB1dCwgZXhwZWN0ZWQpOgorICAgIHRlc3Rz
LmFwcGVuZCh0ZXN0b2JqICUgKGhhc2hsaWIuc2hhMShpbnB1dCkuaGV4ZGlnZXN0KCksIHVybGxp
Yi5xdW90ZShpbnB1dFs6LTFdKSwgIHVybGxpYi5xdW90ZShleHBlY3RlZFs6LTFdKSkpCisKK2Zp
bGVzID0gb3MubGlzdGRpcignZGF0LycpCitmb3IgZmlsZSBpbiBmaWxlczoKKyAgICBpZiBvcy5w
YXRoLmlzZGlyKCdkYXQvJytmaWxlKSBvciBmaWxlWzBdID09ICIuIjoKKyAgICAgICAgY29udGlu
dWUKKyAgICB0ZXN0cyA9IFtdCisgICAgaW5wdXQgPSAiIgorICAgIGV4cGVjdGVkID0gIiIKKyAg
ICBzdGF0ZSA9ICIiCisgICAgZiA9IG9wZW4oJ2RhdC8nK2ZpbGUpCisgICAgd2hpbGUgMToKKyAg
ICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQorICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAg
ICAgIGlmIHN0YXRlICE9ICIiOgorICAgICAgICAgICAgICAgIGFwcGVuZHRlc3QodGVzdHMsIGlu
cHV0LCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBpbnB1dCA9ICIiCisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWQgPSAiIgorICAgICAgICAgICAgICAgIHN0YXRlID0gIiIKKyAgICAgICAgICAg
IGJyZWFrCisgICAgICAgIGlmIGxpbmVbMF0gPT0gIiMiOgorICAgICAgICAgICAgc3RhdGUgPSBs
aW5lCisgICAgICAgICAgICBpZiBsaW5lID09ICIjZG9jdW1lbnQtZnJhZ21lbnRcbiI6CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZCArIGxpbmUKKyAgICAgICAgZWxpZiBzdGF0
ZSA9PSAiI2RhdGFcbiI6CisgICAgICAgICAgICBpbnB1dCA9IGlucHV0ICsgbGluZQorICAgICAg
ICBlbGlmIHN0YXRlID09ICIjZXJyb3JzXG4iOgorICAgICAgICAgICAgcGFzcworICAgICAgICBl
bGlmIHN0YXRlID09ICIjZG9jdW1lbnQtZnJhZ21lbnRcbiI6CisgICAgICAgICAgICBpZiBsaW5l
ID09ICJcbiI6CisgICAgICAgICAgICAgICAgYXBwZW5kdGVzdCh0ZXN0cywgaW5wdXQsIGV4cGVj
dGVkKQorICAgICAgICAgICAgICAgIGlucHV0ID0gIiIKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZCA9ICIiCisgICAgICAgICAgICAgICAgc3RhdGUgPSAiIgorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkICsgbGluZQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJmYWlsZWQgdG8gcGFyc2UgZmlsZSAiK2ZpbGUr
IiBsaW5lOiIrbGluZSsiIChzdGF0ZTogIitzdGF0ZSsiKSIpCisgICAgZi5jbG9zZSgpCisgICAg
YmFyZW5hbWUgPSBmaWxlLnJlcGxhY2UoIi5kYXQiLCAiIikKKyAgICBvdXQgPSBvcGVuKCd0ZXN0
cy8nK2JhcmVuYW1lKyIuaHRtbCIsICJ3IikKKyAgICBvdXQud3JpdGUoZG9jdG1wbCAlIChiYXJl
bmFtZSwgIixcbiIuam9pbih0ZXN0cykpKQorICAgIG91dC5jbG9zZSgpCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS90cmFjay93ZWJ2dHQvcGFyc2lu
Zy1jdWUtZGF0YS9idWlsZHRlc3RzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMj
IC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3BhcnNpbmctY3VlLWRhdGEv
YnVpbGR0ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVy
YS90cmFjay93ZWJ2dHQvcGFyc2luZy1jdWUtZGF0YS9idWlsZHRlc3RzLnB5CShyZXZpc2lvbiAy
NzE3NzIpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS90cmFjay93ZWJ2dHQvcGFy
c2luZy1jdWUtZGF0YS9idWlsZHRlc3RzLnB5CShub25leGlzdGVudCkKQEAgLTEsNjcgKzAsMCBA
QAotIyEvdXNyL2Jpbi9weXRob24KLQotaW1wb3J0IG9zCi1pbXBvcnQgdXJsbGliCi1pbXBvcnQg
aGFzaGxpYgotCi1kb2N0bXBsID0gIiIiPCFkb2N0eXBlIGh0bWw+Ci08dGl0bGU+V2ViVlRUIGN1
ZSBkYXRhIHBhcnNlciB0ZXN0ICVzPC90aXRsZT4KLTxzdHlsZT52aWRlbyB7IGRpc3BsYXk6bm9u
ZSB9PC9zdHlsZT4KLTxzY3JpcHQgc3JjPS8uLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anM+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0vLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9L2NvcmUvc3RhbmRhcmRzL2h0bWwtcGFy
c2luZy9odG1sNWxpYl9oYXJuZXNzL3RlbXBsYXRlLmpzPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
L2NvcmUvc3RhbmRhcmRzL2h0bWwtcGFyc2luZy9odG1sNWxpYl9oYXJuZXNzL2NvbW1vbi5qcz48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPS4uL2NvbW1vbi5qcz48L3NjcmlwdD4KLTxkaXYgaWQ9bG9n
PjwvZGl2PgotPHNjcmlwdD4KLXJ1blRlc3RzKFsKLSVzCi1dKTsKLTwvc2NyaXB0PiIiIgotCi10
ZXN0b2JqID0gIntuYW1lOiclcycsIGlucHV0OiclcycsIGV4cGVjdGVkOiclcyd9IgotCi1kZWYg
YXBwZW5kdGVzdCh0ZXN0cywgaW5wdXQsIGV4cGVjdGVkKToKLSAgICB0ZXN0cy5hcHBlbmQodGVz
dG9iaiAlIChoYXNobGliLnNoYTEoaW5wdXQpLmhleGRpZ2VzdCgpLCB1cmxsaWIucXVvdGUoaW5w
dXRbOi0xXSksICB1cmxsaWIucXVvdGUoZXhwZWN0ZWRbOi0xXSkpKQotCi1maWxlcyA9IG9zLmxp
c3RkaXIoJ2RhdC8nKQotZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgaWYgb3MucGF0aC5pc2Rpcign
ZGF0LycrZmlsZSkgb3IgZmlsZVswXSA9PSAiLiI6Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgdGVz
dHMgPSBbXQotICAgIGlucHV0ID0gIiIKLSAgICBleHBlY3RlZCA9ICIiCi0gICAgc3RhdGUgPSAi
IgotICAgIGYgPSBvcGVuKCdkYXQvJytmaWxlKQotICAgIHdoaWxlIDE6Ci0gICAgICAgIGxpbmUg
PSBmLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICBpZiBzdGF0
ZSAhPSAiIjoKLSAgICAgICAgICAgICAgICBhcHBlbmR0ZXN0KHRlc3RzLCBpbnB1dCwgZXhwZWN0
ZWQpCi0gICAgICAgICAgICAgICAgaW5wdXQgPSAiIgotICAgICAgICAgICAgICAgIGV4cGVjdGVk
ID0gIiIKLSAgICAgICAgICAgICAgICBzdGF0ZSA9ICIiCi0gICAgICAgICAgICBicmVhawotICAg
ICAgICBpZiBsaW5lWzBdID09ICIjIjoKLSAgICAgICAgICAgIHN0YXRlID0gbGluZQotICAgICAg
ICAgICAgaWYgbGluZSA9PSAiI2RvY3VtZW50LWZyYWdtZW50XG4iOgotICAgICAgICAgICAgICAg
IGV4cGVjdGVkID0gZXhwZWN0ZWQgKyBsaW5lCi0gICAgICAgIGVsaWYgc3RhdGUgPT0gIiNkYXRh
XG4iOgotICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCArIGxpbmUKLSAgICAgICAgZWxpZiBzdGF0
ZSA9PSAiI2Vycm9yc1xuIjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBzdGF0ZSA9
PSAiI2RvY3VtZW50LWZyYWdtZW50XG4iOgotICAgICAgICAgICAgaWYgbGluZSA9PSAiXG4iOgot
ICAgICAgICAgICAgICAgIGFwcGVuZHRlc3QodGVzdHMsIGlucHV0LCBleHBlY3RlZCkKLSAgICAg
ICAgICAgICAgICBpbnB1dCA9ICIiCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAiIgotICAg
ICAgICAgICAgICAgIHN0YXRlID0gIiIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgZXhwZWN0ZWQgPSBleHBlY3RlZCArIGxpbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigiZmFpbGVkIHRvIHBhcnNlIGZpbGUgIitmaWxlKyIgbGluZToiK2xp
bmUrIiAoc3RhdGU6ICIrc3RhdGUrIikiKQotICAgIGYuY2xvc2UoKQotICAgIGJhcmVuYW1lID0g
ZmlsZS5yZXBsYWNlKCIuZGF0IiwgIiIpCi0gICAgb3V0ID0gb3BlbigndGVzdHMvJytiYXJlbmFt
ZSsiLmh0bWwiLCAidyIpCi0gICAgb3V0LndyaXRlKGRvY3RtcGwgJSAoYmFyZW5hbWUsICIsXG4i
LmpvaW4odGVzdHMpKSkKLSAgICBvdXQuY2xvc2UoKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3BhcnNpbmctY3VlLWRhdGEv
YnVpbGR0ZXN0cy5weQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0xICsw
LDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVz
dHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
d2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMJKHJldmlzaW9uIDI3MTc2NikJKGZyb20gTGF5b3V0
VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHk6MjcxNzY2KQorKysgTGF5b3V0VGVz
dHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmli
dXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJnZW5lcmF0ZXMgd2ViZ2wgbGF5b3V0IHRlc3Rz
IGZyb20gdGhlIEtocm9ub3MgV2ViR0wgQ29uZm9ybWFuY2UgVGVzdHMiIiIKKworIyBUbyB1c2Ug
dGhpcywgZ2V0IGEgY29weSBvZiB0aGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMgdGhlbiBydW4g
dGhpcyBzY3JpcHQKKyMgZWcuCisjCisjICAgY2Qgfi90ZW1wCisjICAgZ2l0IGNsb25lIGdpdDov
L2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dlYkdMLmdpdAorIyAgIGNkIH4vV2ViS2l0L0xheW91
dFRlc3RzL3dlYmdsCisjICAgcHl0aG9uIGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5IC13IH4vdGVt
cC9XZWJHTC9zZGsvdGVzdHMgLWUKKyMKKyMgTm93IGNoZWNrIHJ1biB0aGUgTGF5b3V0VGVzdHMs
IHVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIGFuZCBjaGVjayBpbiB0aGUKKyMgcmVzdWx0LgorCitp
bXBvcnQgY29weQoraW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworaW1wb3J0
IHJlCitpbXBvcnQganNvbgoraW1wb3J0IHNodXRpbAorZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0
aW9uUGFyc2VyCisKK2lmIHN5cy52ZXJzaW9uIDwgJzIuNic6CisgIHByaW50ICdXcm9uZyBQeXRo
b24gVmVyc2lvbiAhISE6IE5lZWQgPj0gMi42JworICBzeXMuZXhpdCgxKQorCisKK0dMT0JBTF9P
UFRJT05TID0geworICAjIHZlcnNpb24gdXNlLiBUZXN0cyBhdCBvciBiZWxvdyB0aGlzIHdpbGwg
YmUgaW5jbHVkZWQuCisgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKworICAjIHZlcnNpb24gdXNlZCBm
b3IgdW5sYWJsZWQgdGVzdHMKKyAgImRlZmF1bHQtdmVyc2lvbiI6ICIyLjAiLAorCisgICMgSWYg
c2V0LCB0aGUgdmVyc2lvbiB3ZSByZXF1aXJlLiBUZXN0cyBiZWxvdyB0aGlzIHdpbGwgYmUgaWdu
b3JlZC4KKyAgIm1pbi12ZXJzaW9uIjogIjEuMC4zIiwKK30KKworCitkZWYgUmVhZEZpbGUoZmls
ZW5hbWUpOgorICAiIiJSZWFkcyBhIGZpbGUgYXMgYSBzdHJpbmciIiIKKyAgZmlsZSA9IG9wZW4o
ZmlsZW5hbWUsICJyIikKKyAgZGF0YSA9IGZpbGUucmVhZCgpCisgIGZpbGUuY2xvc2UoKQorICBy
ZXR1cm4gZGF0YQorCisKK2RlZiBXcml0ZUZpbGUoZmlsZW5hbWUsIGRhdGEpOgorICAiIiJXcml0
ZXMgYSBzdHJpbmcgYXMgYSBmaWxlIiIiCisgIHByaW50ICJXcml0aW5nOiAiLCBmaWxlbmFtZQor
ICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQorICBpZiBub3Qgb3MucGF0aC5l
eGlzdHMoZGlybmFtZSk6CisgICAgb3MubWFrZWRpcnMoZGlybmFtZSkKKyAgZmlsZSA9IG9wZW4o
ZmlsZW5hbWUsICJ3YiIpCisgIGZpbGUud3JpdGUoZGF0YSkKKyAgZmlsZS5jbG9zZSgpCisKKwor
ZGVmIENvcHlUcmVlKHNyYywgZHN0LCBpZ25vcmU9Tm9uZSk6CisgICIiIlJlY3Vyc2l2ZWx5IGNv
cHkgYSBkaXJlY3RvcnkgdHJlZSIiIgorICBuYW1lcyA9IG9zLmxpc3RkaXIoc3JjKQorICBpZiBp
Z25vcmUgaXMgbm90IE5vbmU6CisgICAgaWdub3JlZF9uYW1lcyA9IGlnbm9yZShzcmMsIG5hbWVz
KQorICBlbHNlOgorICAgIGlnbm9yZWRfbmFtZXMgPSBzZXQoKQorCisgIGlmIG5vdCBvcy5wYXRo
LmV4aXN0cyhkc3QpOgorICAgIG9zLm1ha2VkaXJzKGRzdCkKKyAgZXJyb3JzID0gW10KKyAgZm9y
IG5hbWUgaW4gbmFtZXM6CisgICAgaWYgbmFtZSBpbiBpZ25vcmVkX25hbWVzOgorICAgICAgY29u
dGludWUKKyAgICBzcmNuYW1lID0gb3MucGF0aC5qb2luKHNyYywgbmFtZSkKKyAgICBkc3RuYW1l
ID0gb3MucGF0aC5qb2luKGRzdCwgbmFtZSkKKyAgICB0cnk6CisgICAgICBpZiBvcy5wYXRoLmlz
ZGlyKHNyY25hbWUpOgorICAgICAgICBDb3B5VHJlZShzcmNuYW1lLCBkc3RuYW1lLCBpZ25vcmUp
CisgICAgICBlbHNlOgorICAgICAgICAjIFdpbGwgcmFpc2UgYSBTcGVjaWFsRmlsZUVycm9yIGZv
ciB1bnN1cHBvcnRlZCBmaWxlIHR5cGVzCisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmNuYW1l
LCBkc3RuYW1lKQorICAgICMgY2F0Y2ggdGhlIEVycm9yIGZyb20gdGhlIHJlY3Vyc2l2ZSBjb3B5
dHJlZSBzbyB0aGF0IHdlIGNhbgorICAgICMgY29udGludWUgd2l0aCBvdGhlciBmaWxlcworICAg
IGV4Y2VwdCBFcnJvciwgZXJyOgorICAgICAgZXJyb3JzLmV4dGVuZChlcnIuYXJnc1swXSkKKyAg
ICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciwgd2h5OgorICAgICAgZXJyb3JzLmFwcGVuZCgoc3Jj
bmFtZSwgZHN0bmFtZSwgc3RyKHdoeSkpKQorICBpZiBlcnJvcnM6CisgICAgcmFpc2UgRXJyb3Is
IGVycm9ycworCisKK2RlZiBGaWxlUmVhZGVyKGZpbGVuYW1lKToKKyAgIiIiQSBGaWxlIGdlbmVy
YXRvciB0aGF0IHJldHVybnMgb25seSBub24gZW1wdHksIG5vbiBjb21tZW50IGxpbmVzIiIiCisg
IGZpbGUgPSBvcGVuKGZpbGVuYW1lLCAiciIpCisgIGxpbmVzID0gZmlsZS5yZWFkbGluZXMoKQor
ICBmaWxlLmNsb3NlKCkKKyAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGluIGVudW1lcmF0ZShsaW5l
cyk6CisgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgIGlmIChsZW4obGluZSkgPiAwIGFuZAor
ICAgICAgICBub3QgbGluZS5zdGFydHN3aXRoKCIjIikgYW5kCisgICAgICAgIG5vdCBsaW5lLnN0
YXJ0c3dpdGgoIjsiKSBhbmQKKyAgICAgICAgbm90IGxpbmUuc3RhcnRzd2l0aCgiLy8iKSk6Cisg
ICAgICB5aWVsZCBsaW5lX251bWJlciArIDEsIGxpbmUKKworCitkZWYgR3JlYXRlclRoYW5PckVx
dWFsVG9WZXJzaW9uKGhhdmUsIHdhbnQpOgorICAiIiJDb21wYXJlcyB0byB2ZXJzaW9uIHN0cmlu
Z3MiIiIKKyAgaGF2ZSA9IGhhdmUuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpCisgIHdhbnQgPSB3
YW50LnNwbGl0KCIgIilbMF0uc3BsaXQoIi4iKQorICBmb3IgbmR4LCB3YW50X3N0ciBpbiBlbnVt
ZXJhdGUod2FudCk6CisgICAgd2FudF9udW0gPSBpbnQod2FudF9zdHIpCisgICAgaGF2ZV9udW0g
PSAwCisgICAgaWYgbmR4IDwgbGVuKGhhdmUpOgorICAgICAgaGF2ZV9udW0gPSBpbnQoaGF2ZVtu
ZHhdKQorICAgIGlmIGhhdmVfbnVtIDwgd2FudF9udW06CisgICAgICByZXR1cm4gRmFsc2UKKyAg
ICBpZiBoYXZlX251bSA+PSB3YW50X251bToKKyAgICAgIHJldHVybiBUcnVlCisgIHJldHVybiBU
cnVlCisKKworZGVmIEdldFRlc3RMaXN0KGxpc3RfZmlsZW5hbWUsIGRlc3RfZGlyLCBoaWVyYXJj
aGljYWxfb3B0aW9ucyk6CisgIGdsb2JhbCBHTE9CQUxfT1BUSU9OUworICB0ZXN0cyA9IFtdCisg
IHByZWZpeCA9IG9zLnBhdGguZGlybmFtZShsaXN0X2ZpbGVuYW1lKQorICBmb3IgbGluZV9udW1i
ZXIsIGxpbmUgaW4gRmlsZVJlYWRlcihsaXN0X2ZpbGVuYW1lKToKKyAgICBhcmdzID0gbGluZS5z
cGxpdCgpCisgICAgdGVzdF9vcHRpb25zID0ge30KKyAgICBub25fb3B0aW9ucyA9IFtdCisgICAg
dXNlX3Rlc3QgPSBUcnVlCisgICAgd2hpbGUgbGVuKGFyZ3MpOgorICAgICAgYXJnID0gYXJncy5w
b3AoMCkKKyAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCItIik6CisgICAgICAgIGlmIG5vdCBhcmcu
c3RhcnRzd2l0aCgiLS0iKToKKyAgICAgICAgICByYWlzZSAiJXM6JWQgYmFkIG9wdGlvbiIgJSAo
bGlzdF9maWxlbmFtZSwgbGluZV9udW1iZXIpCisgICAgICAgIG9wdGlvbiA9IGFyZ1syOl0KKyAg
ICAgICAgaWYgb3B0aW9uID09ICdzbG93JzoKKyAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYg
b3B0aW9uID09ICdtaW4tdmVyc2lvbicgb3Igb3B0aW9uID09ICJtYXgtdmVyc2lvbiI6CisgICAg
ICAgICAgdGVzdF9vcHRpb25zW29wdGlvbl0gPSBhcmdzLnBvcCgwKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXM6JWQgdW5rbm93biBvcHRpb24gJyVzJyIgJSAo
bGlzdF9maWxlbmFtZSwgbGluZV9udW1iZXIsIGFyZykpCisgICAgICBlbHNlOgorICAgICAgICBu
b25fb3B0aW9ucy5hcHBlbmQoYXJnKQorICAgIHVybCA9IG9zLnBhdGguam9pbihwcmVmaXgsICIg
Ii5qb2luKG5vbl9vcHRpb25zKSkKKworICAgIGlmIG5vdCB1cmwuZW5kc3dpdGgoIi50eHQiKToK
KyAgICAgIGlmICJtaW4tdmVyc2lvbiIgaW4gdGVzdF9vcHRpb25zOgorICAgICAgICBtaW5fdmVy
c2lvbiA9IHRlc3Rfb3B0aW9uc1sibWluLXZlcnNpb24iXQorICAgICAgZWxzZToKKyAgICAgICAg
bWluX3ZlcnNpb24gPSBoaWVyYXJjaGljYWxfb3B0aW9uc1siZGVmYXVsdC12ZXJzaW9uIl0KKwor
ICAgICAgaWYgIm1pbi12ZXJzaW9uIiBpbiBHTE9CQUxfT1BUSU9OUzoKKyAgICAgICAgdXNlX3Rl
c3QgPSBHcmVhdGVyVGhhbk9yRXF1YWxUb1ZlcnNpb24obWluX3ZlcnNpb24sIEdMT0JBTF9PUFRJ
T05TWyJtaW4tdmVyc2lvbiJdKQorICAgICAgZWxzZToKKyAgICAgICAgdXNlX3Rlc3QgPSBHcmVh
dGVyVGhhbk9yRXF1YWxUb1ZlcnNpb24oR0xPQkFMX09QVElPTlNbInZlcnNpb24iXSwgbWluX3Zl
cnNpb24pCisKKyAgICBpZiBub3QgdXNlX3Rlc3Q6CisgICAgICBjb250aW51ZQorCisgICAgaWYg
dXJsLmVuZHN3aXRoKCIudHh0Iik6CisgICAgICBpZiAibWluLXZlcnNpb24iIGluIHRlc3Rfb3B0
aW9uczoKKyAgICAgICAgaGllcmFyY2hpY2FsX29wdGlvbnNbImRlZmF1bHQtdmVyc2lvbiJdID0g
dGVzdF9vcHRpb25zWyJtaW4tdmVyc2lvbiJdCisgICAgICB0ZXN0cyA9IHRlc3RzICsgR2V0VGVz
dExpc3QoCisgICAgICAgICAgb3MucGF0aC5qb2luKHByZWZpeCwgdXJsKSwgZGVzdF9kaXIsIGNv
cHkuY29weShoaWVyYXJjaGljYWxfb3B0aW9ucykpCisgICAgZWxzZToKKyAgICAgIHRlc3RzLmFw
cGVuZCh7InVybCI6IHVybH0pCisgIHJldHVybiB0ZXN0cworCisKK2RlZiBtYWluKGFyZ3YpOgor
ICAiIiJUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uLiIiIgorICBnbG9iYWwgR0xPQkFMX09QVElP
TlMKKworICBwYXJzZXIgPSBPcHRpb25QYXJzZXIoKQorICBwYXJzZXIuYWRkX29wdGlvbigKKyAg
ICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgaGVscD0i
cHJpbnRzIG1vcmUgb3V0cHV0LiIpCisgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgICAgIi13Iiwg
Ii0td2ViZ2wtY29uZm9ybWFuY2UtdGVzdCIsIGRlc3Q9InNvdXJjZV9kaXIiLAorICAgICAgaGVs
cD0icGF0aCB0byB3ZWJnbCBjb25mb3JtYW5jZSB0ZXN0cy4gUkVRVUlSRUQiKQorICBwYXJzZXIu
YWRkX29wdGlvbigKKyAgICAgICItbiIsICItLW5vLWNvcHkiLCBhY3Rpb249InN0b3JlX3RydWUi
LAorICAgICAgaGVscD0iZG8gbm90IGNvcHkgdGVzdHMiKQorICBwYXJzZXIuYWRkX29wdGlvbigK
KyAgICAgICItZSIsICItLWdlbmVyYXRlLWV4cGVjdGF0aW9ucyIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCisgICAgICBoZWxwPSJnZW5lcmF0ZXQgdGhlIHRlc3QgZXhwZWN0YXRpb25zIikKKyAgcGFy
c2VyLmFkZF9vcHRpb24oCisgICAgICAiLW8iLCAiLS1vdXRwdXQtZGlyIiwgZGVzdD0ib3V0cHV0
X2RpciIsCisgICAgICBoZWxwPSJiYXNlIGRpcmVjdG9yeSBmb3Igb3V0cHV0LiBkZWZhdWx0cyB0
byBcJy5cJyIsCisgICAgICBkZWZhdWx0PSIuIikKKworICAob3B0aW9ucywgYXJncykgPSBwYXJz
ZXIucGFyc2VfYXJncyhhcmdzPWFyZ3YpCisKKyAgaWYgbm90IG9wdGlvbnMuc291cmNlX2RpcjoK
KyAgICBwYXJzZXIucHJpbnRfaGVscCgpCisgICAgcmV0dXJuIDEKKworICBvcy5jaGRpcihvcy5w
YXRoLmRpcm5hbWUoX19maWxlX18pIG9yICcuJykKKworICBzb3VyY2VfZGlyID0gb3B0aW9ucy5z
b3VyY2VfZGlyOworICBvdXRwdXRfZGlyID0gb3B0aW9ucy5vdXRwdXRfZGlyOworICB3ZWJnbF90
ZXN0c19kaXIgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgInJlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzIikKKworICAjIGNvcHkgYWxsIHRoZSBmaWxlcyBmcm9tIHRoZSBXZWJHTCBjb25mb3Jt
YW5jZSB0ZXN0cy4KKyAgaWYgbm90IG9wdGlvbnMubm9fY29weToKKyAgICBDb3B5VHJlZSgKKyAg
ICAgICAgc291cmNlX2Rpciwgd2ViZ2xfdGVzdHNfZGlyLCBzaHV0aWwuaWdub3JlX3BhdHRlcm5z
KAorICAgICAgICAgICAgJy5naXQnLCAnKi5weWMnLCAndG1wKicpKQorCisgIHRlc3RfdGVtcGxh
dGUgPSBSZWFkRmlsZSgicmVzb3VyY2VzL3dlYmdsLXdyYXBwZXItdGVtcGxhdGUuaHRtbCIpCisg
IGV4cGVjdGF0aW9uX3RlbXBsYXRlID0gUmVhZEZpbGUoInJlc291cmNlcy93ZWJnbC1leHBlY3Rh
dGlvbi10ZW1wbGF0ZS50eHQiKQorCisgICMgZ2VuZXJhdGUgd3JhcHBlcnMgZm9yIGFsbCB0aGUg
dGVzdHMKKyAgdGVzdHMgPSBHZXRUZXN0TGlzdChvcy5wYXRoLmpvaW4oc291cmNlX2RpciwgIjAw
X3Rlc3RfbGlzdC50eHQiKSwgIi4iLAorICAgICAgICAgICAgICAgICAgICAgIGNvcHkuY29weShH
TE9CQUxfT1BUSU9OUykpCisKKyAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgdXJsID0gb3MucGF0
aC5yZWxwYXRoKHRlc3RbInVybCJdLCBzb3VyY2VfZGlyKQorICAgIGRzdCA9IG9zLnBhdGguam9p
bihvdXRwdXRfZGlyLCB1cmwpCisgICAgZHN0X2RpciA9IG9zLnBhdGguZGlybmFtZShkc3QpCisg
ICAgc3JjID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbih3ZWJnbF90ZXN0c19kaXIsIHVy
bCksIGRzdF9kaXIpLnJlcGxhY2UoIlxcIiwgIi8iKQorICAgIGJhc2VfdXJsID0gb3MucGF0aC5y
ZWxwYXRoKG91dHB1dF9kaXIsIGRzdF9kaXIpLnJlcGxhY2UoIlxcIiwgIi8iKQorICAgIHN1YnMg
PSB7CisgICAgICAidXJsIjogc3JjLAorICAgICAgInVybF9uYW1lIjogb3MucGF0aC5iYXNlbmFt
ZSh1cmwpLAorICAgICAgImJhc2VfdXJsIjogYmFzZV91cmwsCisgICAgfQorICAgIFdyaXRlRmls
ZShkc3QsIHRlc3RfdGVtcGxhdGUgJSBzdWJzKQorICAgIGlmIG9wdGlvbnMuZ2VuZXJhdGVfZXhw
ZWN0YXRpb25zOgorICAgICAgZXhwZWN0YXRpb25fZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0
KGRzdClbMF0gKyAiLWV4cGVjdGVkLnR4dCIKKyAgICAgIFdyaXRlRmlsZShleHBlY3RhdGlvbl9m
aWxlbmFtZSwgZXhwZWN0YXRpb25fdGVtcGxhdGUgJSBzdWJzKQorCisKKworaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKKyAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsxOl0pKQorCisKKworCisK
SW5kZXg6IExheW91dFRlc3RzL3dlYmdsL2dlbmVyYXRlLXdlYmdsLXRlc3RzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3dlYmdsL2dlbmVyYXRlLXdlYmdsLXRlc3RzCShyZXZpc2lvbiAyNzE3
NjYpCisrKyBMYXlvdXRUZXN0cy93ZWJnbC9nZW5lcmF0ZS13ZWJnbC10ZXN0cwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICMgQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvd2ViZ2wvZ2VuZXJhdGUtd2ViZ2wt
dGVzdHMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJnbC9n
ZW5lcmF0ZS13ZWJnbC10ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJnbC9n
ZW5lcmF0ZS13ZWJnbC10ZXN0cy5weQkocmV2aXNpb24gMjcxNzcyKQorKysgTGF5b3V0VGVzdHMv
d2ViZ2wvZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNjkgKzAs
MCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiImdlbmVyYXRlcyB3ZWJnbCBsYXlvdXQgdGVzdHMg
ZnJvbSB0aGUgS2hyb25vcyBXZWJHTCBDb25mb3JtYW5jZSBUZXN0cyIiIgotCi0jIFRvIHVzZSB0
aGlzLCBnZXQgYSBjb3B5IG9mIHRoZSBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyB0aGVuIHJ1biB0
aGlzIHNjcmlwdAotIyBlZy4KLSMKLSMgICBjZCB+L3RlbXAKLSMgICBnaXQgY2xvbmUgZ2l0Oi8v
Z2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvV2ViR0wuZ2l0Ci0jICAgY2Qgfi9XZWJLaXQvTGF5b3V0
VGVzdHMvd2ViZ2wKLSMgICBweXRob24gZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHkgLXcgfi90ZW1w
L1dlYkdML3Nkay90ZXN0cyAtZQotIwotIyBOb3cgY2hlY2sgcnVuIHRoZSBMYXlvdXRUZXN0cywg
dXBkYXRlIFRlc3RFeHBlY3RhdGlvbnMgYW5kIGNoZWNrIGluIHRoZQotIyByZXN1bHQuCi0KLWlt
cG9ydCBjb3B5Ci1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgc3lzCi1pbXBvcnQg
cmUKLWltcG9ydCBqc29uCi1pbXBvcnQgc2h1dGlsCi1mcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRp
b25QYXJzZXIKLQotaWYgc3lzLnZlcnNpb24gPCAnMi42JzoKLSAgcHJpbnQgJ1dyb25nIFB5dGhv
biBWZXJzaW9uICEhITogTmVlZCA+PSAyLjYnCi0gIHN5cy5leGl0KDEpCi0KLQotR0xPQkFMX09Q
VElPTlMgPSB7Ci0gICMgdmVyc2lvbiB1c2UuIFRlc3RzIGF0IG9yIGJlbG93IHRoaXMgd2lsbCBi
ZSBpbmNsdWRlZC4KLSAgInZlcnNpb24iOiAiMi4wLjAiLAotCi0gICMgdmVyc2lvbiB1c2VkIGZv
ciB1bmxhYmxlZCB0ZXN0cwotICAiZGVmYXVsdC12ZXJzaW9uIjogIjIuMCIsCi0KLSAgIyBJZiBz
ZXQsIHRoZSB2ZXJzaW9uIHdlIHJlcXVpcmUuIFRlc3RzIGJlbG93IHRoaXMgd2lsbCBiZSBpZ25v
cmVkLgotICAibWluLXZlcnNpb24iOiAiMS4wLjMiLAotfQotCi0KLWRlZiBSZWFkRmlsZShmaWxl
bmFtZSk6Ci0gICIiIlJlYWRzIGEgZmlsZSBhcyBhIHN0cmluZyIiIgotICBmaWxlID0gb3Blbihm
aWxlbmFtZSwgInIiKQotICBkYXRhID0gZmlsZS5yZWFkKCkKLSAgZmlsZS5jbG9zZSgpCi0gIHJl
dHVybiBkYXRhCi0KLQotZGVmIFdyaXRlRmlsZShmaWxlbmFtZSwgZGF0YSk6Ci0gICIiIldyaXRl
cyBhIHN0cmluZyBhcyBhIGZpbGUiIiIKLSAgcHJpbnQgIldyaXRpbmc6ICIsIGZpbGVuYW1lCi0g
IGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCi0gIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhkaXJuYW1lKToKLSAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQotICBmaWxlID0gb3Blbihm
aWxlbmFtZSwgIndiIikKLSAgZmlsZS53cml0ZShkYXRhKQotICBmaWxlLmNsb3NlKCkKLQotCi1k
ZWYgQ29weVRyZWUoc3JjLCBkc3QsIGlnbm9yZT1Ob25lKToKLSAgIiIiUmVjdXJzaXZlbHkgY29w
eSBhIGRpcmVjdG9yeSB0cmVlIiIiCi0gIG5hbWVzID0gb3MubGlzdGRpcihzcmMpCi0gIGlmIGln
bm9yZSBpcyBub3QgTm9uZToKLSAgICBpZ25vcmVkX25hbWVzID0gaWdub3JlKHNyYywgbmFtZXMp
Ci0gIGVsc2U6Ci0gICAgaWdub3JlZF9uYW1lcyA9IHNldCgpCi0KLSAgaWYgbm90IG9zLnBhdGgu
ZXhpc3RzKGRzdCk6Ci0gICAgb3MubWFrZWRpcnMoZHN0KQotICBlcnJvcnMgPSBbXQotICBmb3Ig
bmFtZSBpbiBuYW1lczoKLSAgICBpZiBuYW1lIGluIGlnbm9yZWRfbmFtZXM6Ci0gICAgICBjb250
aW51ZQotICAgIHNyY25hbWUgPSBvcy5wYXRoLmpvaW4oc3JjLCBuYW1lKQotICAgIGRzdG5hbWUg
PSBvcy5wYXRoLmpvaW4oZHN0LCBuYW1lKQotICAgIHRyeToKLSAgICAgIGlmIG9zLnBhdGguaXNk
aXIoc3JjbmFtZSk6Ci0gICAgICAgIENvcHlUcmVlKHNyY25hbWUsIGRzdG5hbWUsIGlnbm9yZSkK
LSAgICAgIGVsc2U6Ci0gICAgICAgICMgV2lsbCByYWlzZSBhIFNwZWNpYWxGaWxlRXJyb3IgZm9y
IHVuc3VwcG9ydGVkIGZpbGUgdHlwZXMKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyY25hbWUs
IGRzdG5hbWUpCi0gICAgIyBjYXRjaCB0aGUgRXJyb3IgZnJvbSB0aGUgcmVjdXJzaXZlIGNvcHl0
cmVlIHNvIHRoYXQgd2UgY2FuCi0gICAgIyBjb250aW51ZSB3aXRoIG90aGVyIGZpbGVzCi0gICAg
ZXhjZXB0IEVycm9yLCBlcnI6Ci0gICAgICBlcnJvcnMuZXh0ZW5kKGVyci5hcmdzWzBdKQotICAg
IGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yLCB3aHk6Ci0gICAgICBlcnJvcnMuYXBwZW5kKChzcmNu
YW1lLCBkc3RuYW1lLCBzdHIod2h5KSkpCi0gIGlmIGVycm9yczoKLSAgICByYWlzZSBFcnJvciwg
ZXJyb3JzCi0KLQotZGVmIEZpbGVSZWFkZXIoZmlsZW5hbWUpOgotICAiIiJBIEZpbGUgZ2VuZXJh
dG9yIHRoYXQgcmV0dXJucyBvbmx5IG5vbiBlbXB0eSwgbm9uIGNvbW1lbnQgbGluZXMiIiIKLSAg
ZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJyIikKLSAgbGluZXMgPSBmaWxlLnJlYWRsaW5lcygpCi0g
IGZpbGUuY2xvc2UoKQotICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVz
KToKLSAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgaWYgKGxlbihsaW5lKSA+IDAgYW5kCi0g
ICAgICAgIG5vdCBsaW5lLnN0YXJ0c3dpdGgoIiMiKSBhbmQKLSAgICAgICAgbm90IGxpbmUuc3Rh
cnRzd2l0aCgiOyIpIGFuZAotICAgICAgICBub3QgbGluZS5zdGFydHN3aXRoKCIvLyIpKToKLSAg
ICAgIHlpZWxkIGxpbmVfbnVtYmVyICsgMSwgbGluZQotCi0KLWRlZiBHcmVhdGVyVGhhbk9yRXF1
YWxUb1ZlcnNpb24oaGF2ZSwgd2FudCk6Ci0gICIiIkNvbXBhcmVzIHRvIHZlcnNpb24gc3RyaW5n
cyIiIgotICBoYXZlID0gaGF2ZS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIikKLSAgd2FudCA9IHdh
bnQuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpCi0gIGZvciBuZHgsIHdhbnRfc3RyIGluIGVudW1l
cmF0ZSh3YW50KToKLSAgICB3YW50X251bSA9IGludCh3YW50X3N0cikKLSAgICBoYXZlX251bSA9
IDAKLSAgICBpZiBuZHggPCBsZW4oaGF2ZSk6Ci0gICAgICBoYXZlX251bSA9IGludChoYXZlW25k
eF0pCi0gICAgaWYgaGF2ZV9udW0gPCB3YW50X251bToKLSAgICAgIHJldHVybiBGYWxzZQotICAg
IGlmIGhhdmVfbnVtID49IHdhbnRfbnVtOgotICAgICAgcmV0dXJuIFRydWUKLSAgcmV0dXJuIFRy
dWUKLQotCi1kZWYgR2V0VGVzdExpc3QobGlzdF9maWxlbmFtZSwgZGVzdF9kaXIsIGhpZXJhcmNo
aWNhbF9vcHRpb25zKToKLSAgZ2xvYmFsIEdMT0JBTF9PUFRJT05TCi0gIHRlc3RzID0gW10KLSAg
cHJlZml4ID0gb3MucGF0aC5kaXJuYW1lKGxpc3RfZmlsZW5hbWUpCi0gIGZvciBsaW5lX251bWJl
ciwgbGluZSBpbiBGaWxlUmVhZGVyKGxpc3RfZmlsZW5hbWUpOgotICAgIGFyZ3MgPSBsaW5lLnNw
bGl0KCkKLSAgICB0ZXN0X29wdGlvbnMgPSB7fQotICAgIG5vbl9vcHRpb25zID0gW10KLSAgICB1
c2VfdGVzdCA9IFRydWUKLSAgICB3aGlsZSBsZW4oYXJncyk6Ci0gICAgICBhcmcgPSBhcmdzLnBv
cCgwKQotICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoIi0iKToKLSAgICAgICAgaWYgbm90IGFyZy5z
dGFydHN3aXRoKCItLSIpOgotICAgICAgICAgIHJhaXNlICIlczolZCBiYWQgb3B0aW9uIiAlIChs
aXN0X2ZpbGVuYW1lLCBsaW5lX251bWJlcikKLSAgICAgICAgb3B0aW9uID0gYXJnWzI6XQotICAg
ICAgICBpZiBvcHRpb24gPT0gJ3Nsb3cnOgotICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBv
cHRpb24gPT0gJ21pbi12ZXJzaW9uJyBvciBvcHRpb24gPT0gIm1heC12ZXJzaW9uIjoKLSAgICAg
ICAgICB0ZXN0X29wdGlvbnNbb3B0aW9uXSA9IGFyZ3MucG9wKDApCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlczolZCB1bmtub3duIG9wdGlvbiAnJXMnIiAlIChs
aXN0X2ZpbGVuYW1lLCBsaW5lX251bWJlciwgYXJnKSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIG5v
bl9vcHRpb25zLmFwcGVuZChhcmcpCi0gICAgdXJsID0gb3MucGF0aC5qb2luKHByZWZpeCwgIiAi
LmpvaW4obm9uX29wdGlvbnMpKQotCi0gICAgaWYgbm90IHVybC5lbmRzd2l0aCgiLnR4dCIpOgot
ICAgICAgaWYgIm1pbi12ZXJzaW9uIiBpbiB0ZXN0X29wdGlvbnM6Ci0gICAgICAgIG1pbl92ZXJz
aW9uID0gdGVzdF9vcHRpb25zWyJtaW4tdmVyc2lvbiJdCi0gICAgICBlbHNlOgotICAgICAgICBt
aW5fdmVyc2lvbiA9IGhpZXJhcmNoaWNhbF9vcHRpb25zWyJkZWZhdWx0LXZlcnNpb24iXQotCi0g
ICAgICBpZiAibWluLXZlcnNpb24iIGluIEdMT0JBTF9PUFRJT05TOgotICAgICAgICB1c2VfdGVz
dCA9IEdyZWF0ZXJUaGFuT3JFcXVhbFRvVmVyc2lvbihtaW5fdmVyc2lvbiwgR0xPQkFMX09QVElP
TlNbIm1pbi12ZXJzaW9uIl0pCi0gICAgICBlbHNlOgotICAgICAgICB1c2VfdGVzdCA9IEdyZWF0
ZXJUaGFuT3JFcXVhbFRvVmVyc2lvbihHTE9CQUxfT1BUSU9OU1sidmVyc2lvbiJdLCBtaW5fdmVy
c2lvbikKLQotICAgIGlmIG5vdCB1c2VfdGVzdDoKLSAgICAgIGNvbnRpbnVlCi0KLSAgICBpZiB1
cmwuZW5kc3dpdGgoIi50eHQiKToKLSAgICAgIGlmICJtaW4tdmVyc2lvbiIgaW4gdGVzdF9vcHRp
b25zOgotICAgICAgICBoaWVyYXJjaGljYWxfb3B0aW9uc1siZGVmYXVsdC12ZXJzaW9uIl0gPSB0
ZXN0X29wdGlvbnNbIm1pbi12ZXJzaW9uIl0KLSAgICAgIHRlc3RzID0gdGVzdHMgKyBHZXRUZXN0
TGlzdCgKLSAgICAgICAgICBvcy5wYXRoLmpvaW4ocHJlZml4LCB1cmwpLCBkZXN0X2RpciwgY29w
eS5jb3B5KGhpZXJhcmNoaWNhbF9vcHRpb25zKSkKLSAgICBlbHNlOgotICAgICAgdGVzdHMuYXBw
ZW5kKHsidXJsIjogdXJsfSkKLSAgcmV0dXJuIHRlc3RzCi0KLQotZGVmIG1haW4oYXJndik6Ci0g
ICIiIlRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uIiIiCi0gIGdsb2JhbCBHTE9CQUxfT1BUSU9O
UwotCi0gIHBhcnNlciA9IE9wdGlvblBhcnNlcigpCi0gIHBhcnNlci5hZGRfb3B0aW9uKAotICAg
ICAgIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICBoZWxwPSJw
cmludHMgbW9yZSBvdXRwdXQuIikKLSAgcGFyc2VyLmFkZF9vcHRpb24oCi0gICAgICAiLXciLCAi
LS13ZWJnbC1jb25mb3JtYW5jZS10ZXN0IiwgZGVzdD0ic291cmNlX2RpciIsCi0gICAgICBoZWxw
PSJwYXRoIHRvIHdlYmdsIGNvbmZvcm1hbmNlIHRlc3RzLiBSRVFVSVJFRCIpCi0gIHBhcnNlci5h
ZGRfb3B0aW9uKAotICAgICAgIi1uIiwgIi0tbm8tY29weSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
Ci0gICAgICBoZWxwPSJkbyBub3QgY29weSB0ZXN0cyIpCi0gIHBhcnNlci5hZGRfb3B0aW9uKAot
ICAgICAgIi1lIiwgIi0tZ2VuZXJhdGUtZXhwZWN0YXRpb25zIiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwKLSAgICAgIGhlbHA9ImdlbmVyYXRldCB0aGUgdGVzdCBleHBlY3RhdGlvbnMiKQotICBwYXJz
ZXIuYWRkX29wdGlvbigKLSAgICAgICItbyIsICItLW91dHB1dC1kaXIiLCBkZXN0PSJvdXRwdXRf
ZGlyIiwKLSAgICAgIGhlbHA9ImJhc2UgZGlyZWN0b3J5IGZvciBvdXRwdXQuIGRlZmF1bHRzIHRv
IFwnLlwnIiwKLSAgICAgIGRlZmF1bHQ9Ii4iKQotCi0gIChvcHRpb25zLCBhcmdzKSA9IHBhcnNl
ci5wYXJzZV9hcmdzKGFyZ3M9YXJndikKLQotICBpZiBub3Qgb3B0aW9ucy5zb3VyY2VfZGlyOgot
ICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICByZXR1cm4gMQotCi0gIG9zLmNoZGlyKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXykgb3IgJy4nKQotCi0gIHNvdXJjZV9kaXIgPSBvcHRpb25zLnNv
dXJjZV9kaXI7Ci0gIG91dHB1dF9kaXIgPSBvcHRpb25zLm91dHB1dF9kaXI7Ci0gIHdlYmdsX3Rl
c3RzX2RpciA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCAicmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMiKQotCi0gICMgY29weSBhbGwgdGhlIGZpbGVzIGZyb20gdGhlIFdlYkdMIGNvbmZvcm1h
bmNlIHRlc3RzLgotICBpZiBub3Qgb3B0aW9ucy5ub19jb3B5OgotICAgIENvcHlUcmVlKAotICAg
ICAgICBzb3VyY2VfZGlyLCB3ZWJnbF90ZXN0c19kaXIsIHNodXRpbC5pZ25vcmVfcGF0dGVybnMo
Ci0gICAgICAgICAgICAnLmdpdCcsICcqLnB5YycsICd0bXAqJykpCi0KLSAgdGVzdF90ZW1wbGF0
ZSA9IFJlYWRGaWxlKCJyZXNvdXJjZXMvd2ViZ2wtd3JhcHBlci10ZW1wbGF0ZS5odG1sIikKLSAg
ZXhwZWN0YXRpb25fdGVtcGxhdGUgPSBSZWFkRmlsZSgicmVzb3VyY2VzL3dlYmdsLWV4cGVjdGF0
aW9uLXRlbXBsYXRlLnR4dCIpCi0KLSAgIyBnZW5lcmF0ZSB3cmFwcGVycyBmb3IgYWxsIHRoZSB0
ZXN0cwotICB0ZXN0cyA9IEdldFRlc3RMaXN0KG9zLnBhdGguam9pbihzb3VyY2VfZGlyLCAiMDBf
dGVzdF9saXN0LnR4dCIpLCAiLiIsCi0gICAgICAgICAgICAgICAgICAgICAgY29weS5jb3B5KEdM
T0JBTF9PUFRJT05TKSkKLQotICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICB1cmwgPSBvcy5wYXRo
LnJlbHBhdGgodGVzdFsidXJsIl0sIHNvdXJjZV9kaXIpCi0gICAgZHN0ID0gb3MucGF0aC5qb2lu
KG91dHB1dF9kaXIsIHVybCkKLSAgICBkc3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKGRzdCkKLSAg
ICBzcmMgPSBvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHdlYmdsX3Rlc3RzX2RpciwgdXJs
KSwgZHN0X2RpcikucmVwbGFjZSgiXFwiLCAiLyIpCi0gICAgYmFzZV91cmwgPSBvcy5wYXRoLnJl
bHBhdGgob3V0cHV0X2RpciwgZHN0X2RpcikucmVwbGFjZSgiXFwiLCAiLyIpCi0gICAgc3VicyA9
IHsKLSAgICAgICJ1cmwiOiBzcmMsCi0gICAgICAidXJsX25hbWUiOiBvcy5wYXRoLmJhc2VuYW1l
KHVybCksCi0gICAgICAiYmFzZV91cmwiOiBiYXNlX3VybCwKLSAgICB9Ci0gICAgV3JpdGVGaWxl
KGRzdCwgdGVzdF90ZW1wbGF0ZSAlIHN1YnMpCi0gICAgaWYgb3B0aW9ucy5nZW5lcmF0ZV9leHBl
Y3RhdGlvbnM6Ci0gICAgICBleHBlY3RhdGlvbl9maWxlbmFtZSA9IG9zLnBhdGguc3BsaXRleHQo
ZHN0KVswXSArICItZXhwZWN0ZWQudHh0IgotICAgICAgV3JpdGVGaWxlKGV4cGVjdGF0aW9uX2Zp
bGVuYW1lLCBleHBlY3RhdGlvbl90ZW1wbGF0ZSAlIHN1YnMpCi0KLQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSkpCi0KLQotCi0KLQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>