<?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>226043</bug_id>
          
          <creation_ts>2021-05-20 14:36:01 -0700</creation_ts>
          <short_desc>[LayoutTests] Delete unused jquery resources</short_desc>
          <delta_ts>2021-05-24 14:44:56 -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=226032</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="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762143</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-20 14:36:01 -0700</bug_when>
    <thetext>There are a number of php resources in LayoutTests/jquery that are unused by any test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762144</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-20 14:36:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/78277881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762148</commentid>
    <comment_count>2</comment_count>
      <attachid>429223</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-20 14:41:31 -0700</bug_when>
    <thetext>Created attachment 429223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762176</commentid>
    <comment_count>3</comment_count>
      <attachid>429223</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-20 15:31:23 -0700</bug_when>
    <thetext>Comment on attachment 429223
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762200</commentid>
    <comment_count>4</comment_count>
      <attachid>429238</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-20 16:14:10 -0700</bug_when>
    <thetext>Created attachment 429238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763228</commentid>
    <comment_count>5</comment_count>
      <attachid>429556</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-24 13:26:04 -0700</bug_when>
    <thetext>Created attachment 429556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763257</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-24 14:44:56 -0700</bug_when>
    <thetext>Committed r277966 (238090@main): &lt;https://commits.webkit.org/238090@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429556.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429223</attachid>
            <date>2021-05-20 14:41:31 -0700</date>
            <delta_ts>2021-05-20 16:14:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226043-20210520144130.patch</filename>
            <type>text/plain</type>
            <size>16221</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3NzgyNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTIwICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBbTGF5b3V0VGVzdHNdIERlbGV0ZSB1bnVz
ZWQganF1ZXJ5IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2MDQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83ODI3Nzg4MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpxdWVyeS9y
ZXNvdXJjZXMvdGVzdC9jc3AucGhwOiBSZW1vdmVkLgorICAgICAgICAqIGpxdWVyeS9yZXNvdXJj
ZXMvdGVzdC9sb2NhbGZpbGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3Vy
Y2VzL3Rlc3QvbmV0d29ya2Vycm9yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICoganF1ZXJ5L3Jl
c291cmNlcy90ZXN0L3BvbGx1dGVkLnBocDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVz
b3VyY2VzL3Rlc3QvcmVhZHl3YWl0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICoganF1ZXJ5L3Jl
c291cmNlcy90ZXN0L3hodG1sLnBocDogUmVtb3ZlZC4KKwogMjAyMS0wNS0yMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgPHZpZGVvPiByZW5kZXJlZCBpbnNp
ZGUgPHRlbXBsYXRlPiBzaG93cyBibGFjayBmb3Igd2ViY2FtIHN0cmVhbSAoU2FmYXJpIDE0LjAu
MyBvbmx5KQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2NzcC5waHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2NzcC5waHAJ
KHJldmlzaW9uIDI3Nzc5MikKKysrIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9j
c3AucGhwCShub25leGlzdGVudCkKQEAgLTEsMzEgKzAsMCBAQAotPD9waHAgaGVhZGVyKCJYLUNv
bnRlbnQtU2VjdXJpdHktUG9saWN5LVJlcG9ydC1Pbmx5OiBhbGxvdyAqIik7ID8+Ci08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgotCTx0aXRsZT5DU1AgVGVz
dCBQYWdlPC90aXRsZT4KLQotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2NvcmUuanMiPjwvc2NyaXB0
PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2RlZmVycmVkLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlw
dCBzcmM9Ii4uL3NyYy9zdXBwb3J0LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3Ny
Yy9kYXRhLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9xdWV1ZS5qcyI+PC9z
Y3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9zcmMvYXR0cmlidXRlcy5qcyI+PC9zY3JpcHQ+Ci0g
IDxzY3JpcHQgc3JjPSIuLi9zcmMvZXZlbnQuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0i
Li4vc3JjL3NpenpsZS9zaXp6bGUuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3Jj
L3NpenpsZS1qcXVlcnkuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL3RyYXZl
cnNpbmcuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL21hbmlwdWxhdGlvbi5q
cyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9zcmMvY3NzLmpzIj48L3NjcmlwdD4KLSAg
PHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4u
L3NyYy9hamF4L2pzb25wLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4
L3NjcmlwdC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC94aHIuanMi
Pjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2VmZmVjdHMuanMiPjwvc2NyaXB0Pgot
ICA8c2NyaXB0IHNyYz0iLi4vc3JjL29mZnNldC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3Jj
PSIuLi9zcmMvZGltZW5zaW9ucy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLQk8cD5D
U1AgVGVzdCBQYWdlPC9wPgotPC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2NzcC5waHAKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBhbGxvdy10YWJzCiMjIC0xICswLDAgIyMKLXllcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvbG9jYWxm
aWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0
L2xvY2FsZmlsZS5odG1sCShyZXZpc2lvbiAyNzc3OTIpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkv
cmVzb3VyY2VzL3Rlc3QvbG9jYWxmaWxlLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MyArMCww
IEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0
aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNp
dGlvbmFsLmR0ZCI+Ci08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIg
eG1sOmxhbmc9ImVuIiBsYW5nPSJlbiIgZGlyPSJsdHIiIGlkPSJodG1sIj4KLTxoZWFkPgotCTxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04IiAvPgotCTx0aXRsZT5qUXVlcnkgTG9jYWwgRmlsZSBUZXN0PC90aXRsZT4KLQk8IS0t
IEluY2x1ZGVzIC0tPgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvY29yZS5qcyI+PC9zY3JpcHQ+Ci0J
PHNjcmlwdCBzcmM9Ii4uL3NyYy9kZWZlcnJlZC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9
Ii4uL3NyYy9zdXBwb3J0LmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2RhdGEu
anMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvcXVldWUuanMiPjwvc2NyaXB0Pgot
CTxzY3JpcHQgc3JjPSIuLi9zcmMvYXR0cmlidXRlcy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBz
cmM9Ii4uL3NyYy9ldmVudC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zaXp6
bGUvc2l6emxlLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3NpenpsZS1qcXVl
cnkuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvdHJhdmVyc2luZy5qcyI+PC9z
Y3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9tYW5pcHVsYXRpb24uanMiPjwvc2NyaXB0Pgot
CTxzY3JpcHQgc3JjPSIuLi9zcmMvY3NzLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4v
c3JjL2FqYXguanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC9qc29ucC5q
cyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4L3NjcmlwdC5qcyI+PC9zY3Jp
cHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4L3hoci5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlw
dCBzcmM9Ii4uL3NyYy9lZmZlY3RzLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3Jj
L29mZnNldC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9kaW1lbnNpb25zLmpz
Ij48L3NjcmlwdD4KLQk8c3R5bGU+Ci0JCS5lcnJvciB7IGNvbG9yOiByZWQ7IH0KLQkJLnN1Y2Nl
c3MgeyBjb2xvcjogZ3JlZW47IH0KLQk8L3N0eWxlPgotPC9oZWFkPgotPGJvZHk+Ci0JPGgxPmpR
dWVyeSBMb2NhbCBGaWxlIFRlc3Q8L2gxPgotCTxoMj4KLQkJSW50cm9kdWN0aW9uCi0JPC9oMj4K
LQk8dWw+Ci0JCTxsaT4KLQkJCUFjY2VzcyB0aGlzIGZpbGUgdXNpbmcgdGhlICJmaWxlOiIgcHJv
dG9jb2wsCi0JCTwvbGk+Ci0JCTxsaT4KLQkJCXR3byBncmVlbiAiT0siIHN0cmluZ3MgbXVzdCBh
cHBlYXIgYmVsb3csCi0JCTwvbGk+Ci0JCTxsaT4KLQkJCUVtcHR5IGxvY2FsIGZpbGVzIHdpbGwg
aXNzdWUgZXJyb3JzLCBpdCdzIGEga25vd24gbGltaXRhdGlvbi4KLQkJPC9saT4KLQk8L3VsPgot
CTxoMj4KLQkJUmVzdWx0cwotCTwvaDI+Ci0JPHVsPgotCQk8bGk+Ci0JCQlTdWNjZXNzOgotCQkJ
PHNwYW4gaWQ9InN1Y2Nlc3MiPgotCQkJPC9zcGFuPgotCQk8L2xpPgotCQk8bGk+Ci0JCQlFcnJv
cjoKLQkJCTxzcGFuIGlkPSJlcnJvciI+Ci0JCQk8L3NwYW4+Ci0JCTwvbGk+Ci0JPC91bD4KLQk8
aDI+Ci0JCUxvZ3M6Ci0JPC9oMj4KLQk8dWwgaWQ9ImxvZyI+Ci0JPC91bD4KLQk8c2NyaXB0Pgot
CQl2YXIgbG9nVUwgPSBqUXVlcnkoICIjbG9nIiApOwotCQlmdW5jdGlvbiBkb0xvZyggbWVzc2Fn
ZSwgYXJncyApIHsKLQkJCWpRdWVyeSggIjxsaSAvPiIpLmFwcGVuZFRvKCBsb2dVTCApLnRleHQo
IG1lc3NhZ2UgKyAnOiAiJyArIEFycmF5LnByb3RvdHlwZS5qb2luLmNhbGwoIGFyZ3MsICciIC0g
IicgKSArICciJyApOwotCQl9Ci0JCWpRdWVyeS5hamF4KCAiLi9kYXRhL2JhZGpzb24uanMiICwg
ewotCQkJY29udGV4dDogalF1ZXJ5KCAiI3N1Y2Nlc3MiICksCi0JCQlkYXRhVHlwZTogInRleHQi
Ci0JCX0pLnN1Y2Nlc3MoZnVuY3Rpb24oIGRhdGEsIF8sIHhociApIHsKLQkJCWRvTG9nKCAiU3Vj
Y2VzcyAoIiArIHhoci5zdGF0dXMgKyAiKSIgLCBhcmd1bWVudHMgKTsKLQkJCXRoaXMuYWRkQ2xh
c3MoIGRhdGEgPyAic3VjY2VzcyIgOiAiZXJyb3IiICkudGV4dCggIk9LIiApOwotCQl9KS5lcnJv
cihmdW5jdGlvbiggeGhyICkgewotCQkJZG9Mb2coICJTdWNjZXNzICgiICsgeGhyLnN0YXR1cyAr
ICIpIiAsIGFyZ3VtZW50cyApOwotCQkJdGhpcy5hZGRDbGFzcyggImVycm9yIiApLnRleHQoICJG
QUlMIiApOwotCQl9KTsKLQkJalF1ZXJ5LmFqYXgoICIuL2RhdGEvZG9lc25vdGV4aXN0LmV4dCIg
LCB7Ci0JCQljb250ZXh0OiBqUXVlcnkoICIjZXJyb3IiICksCi0JCQlkYXRhVHlwZTogInRleHQi
Ci0JCX0pLmVycm9yKGZ1bmN0aW9uKCB4aHIgKSB7Ci0JCQlkb0xvZyggIkVycm9yICgiICsgeGhy
LnN0YXR1cyArICIpIiAsIGFyZ3VtZW50cyApOwotCQkJdGhpcy5hZGRDbGFzcyggInN1Y2Nlc3Mi
ICkudGV4dCggIk9LIiApOwotCQl9KS5zdWNjZXNzKGZ1bmN0aW9uKCBkYXRhLCBfLCB4aHIgKSB7
Ci0JCQlkb0xvZyggIkVycm9yICgiICsgeGhyLnN0YXR1cyArICIpIiAsIGFyZ3VtZW50cyApOwot
CQkJdGhpcy5hZGRDbGFzcyggImVycm9yIiApLnRleHQoICJGQUlMIiApOwotCQl9KTsKLQk8L3Nj
cmlwdD4KLTwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvbG9jYWxmaWxlLmh0bWwK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBhbGxvdy10YWJzCiMjIC0xICswLDAgIyMKLXllcwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3Vy
Y2VzL3Rlc3QvbmV0d29ya2Vycm9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanF1
ZXJ5L3Jlc291cmNlcy90ZXN0L25ldHdvcmtlcnJvci5odG1sCShyZXZpc2lvbiAyNzc3OTIpCisr
KyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvbmV0d29ya2Vycm9yLmh0bWwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxMDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTwh
LS0KLQlUZXN0IGZvciAjODEzNQotCi0JVGhhbmtzIEpvaG4gRmlyZWJhdWdoIGZvciB0aGlzIHRl
c3QgcGFnZSBiYXNlZCBvbiBoaXMgZ2lzdAotCWh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzgwNzA5
MAotCi0JQWNjZXNzIHRoaXMgcGFnZSB0aHJvdWdoIGEgd2ViIHNlcnZlciwgdGhlbiBzdG9wIHNh
aWQgc2VydmVyIGFuZCBjbGljayB0aGUgYnV0dG9uLgotLS0+Ci08aGVhZD4KLQk8dGl0bGU+Ci0J
CWpRdWVyeSBOZXR3b3JrIEVycm9yIFRlc3QgZm9yIEZpcmVmb3gKLQk8L3RpdGxlPgotCTxzdHls
ZT4KLQkJZGl2IHsgbWFyZ2luLXRvcDogMTBweDsgfQotCTwvc3R5bGU+Ci0JPHNjcmlwdCBzcmM9
Ii4uL3NyYy9jb3JlLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2RlZmVycmVk
LmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3N1cHBvcnQuanMiPjwvc2NyaXB0
PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvZGF0YS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9
Ii4uL3NyYy9xdWV1ZS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9hdHRyaWJ1
dGVzLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2V2ZW50LmpzIj48L3Njcmlw
dD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3NpenpsZS9zaXp6bGUuanMiPjwvc2NyaXB0PgotCTxz
Y3JpcHQgc3JjPSIuLi9zcmMvc2l6emxlLWpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBz
cmM9Ii4uL3NyYy90cmF2ZXJzaW5nLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3Jj
L21hbmlwdWxhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9jc3MuanMi
Pjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC5qcyI+PC9zY3JpcHQ+Ci0JPHNj
cmlwdCBzcmM9Ii4uL3NyYy9hamF4L2pzb25wLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0i
Li4vc3JjL2FqYXgvc2NyaXB0LmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2Fq
YXgveGhyLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2VmZmVjdHMuanMiPjwv
c2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvb2Zmc2V0LmpzIj48L3NjcmlwdD4KLQk8c2Ny
aXB0IHNyYz0iLi4vc3JjL2RpbWVuc2lvbnMuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLQkkKCdidXR0b24nKS5saXZlKCdjbGljaycsIGZ1bmN0aW9uICgp
IHsKLQkJJC5hamF4KHsKLQkJCXVybDogJy8nLAotCQkJZXJyb3I6IGZ1bmN0aW9uKCkgewotCQkJ
CWNvbnNvbGUubG9nKCAiYWJvcnQiLCBhcmd1bWVudHMgKTsKLQkJCX0KLQkJfSkuYWJvcnQoKTsK
LQkJJC5hamF4KHsKLQkJCXVybDogJy8nLAotCQkJZXJyb3I6IGZ1bmN0aW9uKCkgewotCQkJCWNv
bnNvbGUubG9nKCAiY29tcGxldGUiLCBhcmd1bWVudHMgKTsKLQkJCX0KLQkJfSk7Ci0JCXJldHVy
biBmYWxzZTsKLQl9KQotCTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0JPGgxPgotCQlqUXVl
cnkgTmV0d29yayBFcnJvciBUZXN0IGZvciBGaXJlZm94Ci0JPC9oMT4KLQk8ZGl2PgotCQlUaGlz
IGlzIGEgdGVzdCBwYWdlIGZvcgotCQk8YSBocmVmPSJodHRwOi8vYnVncy5qcXVlcnkuY29tL3Rp
Y2tldC84MTM1Ij4KLQkJCSM4MTM1Ci0JCTwvYT4KLQkJd2hpY2ggd2FzIHJlcG9ydGVkIGluIEZp
cmVmb3ggd2hlbiBhY2Nlc3NpbmcgcHJvcGVydGllcwotCQlvZiBhbiBYTUxIdHRwUmVxdWVzdCBv
YmplY3QgYWZ0ZXIgYSBuZXR3b3JrIGVycm9yIG9jY3VyZWQuCi0JPC9kaXY+Ci0JPGRpdj5UYWtl
IHRoZSBmb2xsb3dpbmcgc3RlcHM6PC9kaXY+Ci0JPG9sPgotCQk8bGk+Ci0JCQltYWtlIHN1cmUg
eW91IGFjY2Vzc2VkIHRoaXMgcGFnZSB0aHJvdWdoIGEgd2ViIHNlcnZlciwKLQkJPC9saT4KLQkJ
PGxpPgotCQkJc3RvcCB0aGUgd2ViIHNlcnZlciwKLQkJPC9saT4KLQkJPGxpPgotCQkJb3BlbiB0
aGUgY29uc29sZSwKLQkJPC9saT4KLQkJPGxpPgotCQkJY2xpY2sgdGhpcwotCQkJPGJ1dHRvbj5i
dXR0b248L2J1dHRvbj4KLQkJCSwKLQkJPC9saT4KLQkJPGxpPgotCQkJd2FpdCBmb3IgYm90aCBy
ZXF1ZXN0cyB0byBmYWlsLgotCQk8L2xpPgotCTwvb2w+Ci0JPGRpdj4KLQkJVGVzdCBwYXNzZXMg
aWYgeW91IGdldCB0d28gbG9nIGxpbmVzOgotCQk8dWw+Ci0JCQk8bGk+Ci0JCQkJdGhlIGZpcnN0
IHN0YXJ0aW5nIHdpdGggImFib3J0IiwKLQkJCTwvbGk+Ci0JCQk8bGk+Ci0JCQkJdGhlIHNlY29u
ZCBzdGFydGluZyB3aXRoICJjb21wbGV0ZSIsCi0JCQk8L2xpPgotCQk8L3VsPgotCTwvZGl2Pgot
CTxkaXY+Ci0JCVRlc3QgZmFpbHMgaWYgdGhlIGJyb3dzZXIgbm90aWZpZXMgYW4gZXhjZXB0aW9u
LgotCTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9u
ZXR3b3JrZXJyb3IuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAs
MCAjIwoteWVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRl
c3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9wb2xsdXRlZC5waHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L3BvbGx1dGVkLnBocAkocmV2aXNpb24gMjc3
NzkyKQorKysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L3BvbGx1dGVkLnBocAko
bm9uZXhpc3RlbnQpCkBAIC0xLDk5ICswLDAgQEAKLTw/cGhwCi0JJGJhc2VVUkwgPSAiaHR0cDov
L2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzLyI7Ci0JJGxpYnJhcmllcyA9IGFycmF5KAot
CQkiRG9qbyIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMS4xLjEiLCAiMS4y
LjAiLCAiMS4yLjMiLCAiMS4zLjAiLCAiMS4zLjEiLCAiMS4zLjIiLCAiMS40LjAiLCAiMS40LjEi
LCAiMS40LjMiLCAiMS41LjAiICksCi0JCQkidXJsIiA9PiAiZG9qby9YWVovZG9qby9kb2pvLnhk
LmpzIgotCQkpLAotCQkiRXh0Q29yZSIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5
KCAiMy4wLjAiLCAiMy4xLjAiICksCi0JCQkidXJsIiA9PiAiZXh0LWNvcmUvWFlaL2V4dC1jb3Jl
LmpzIgotCQkpLAotCQkialF1ZXJ5IiA9PiBhcnJheSgKLQkJCSJ2ZXJzaW9ucyIgPT4gYXJyYXko
ICIxLjIuMyIsICIxLjIuNiIsICIxLjMuMCIsICIxLjMuMSIsICIxLjMuMiIsICIxLjQuMCIsICIx
LjQuMSIsICIxLjQuMiIsICIxLjQuMyIsICIxLjQuNCIsICIxLjUuMCIgKSwKLQkJCSJ1cmwiID0+
ICJqcXVlcnkvWFlaL2pxdWVyeS5taW4uanMiCi0JCSksCi0JCSJqUXVlcnlVSSIgPT4gYXJyYXko
Ci0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMS41LjIiLCAiMS41LjMiLCAiMS42LjAiLCAiMS43
LjAiLCAiMS43LjEiLCAiMS43LjIiLCAiMS43LjMiLCAiMS44LjAiLCAiMS44LjEiLCAiMS44LjIi
LCAiMS44LjQiLCAiMS44LjUiLCAiMS44LjYiLCAiMS44LjciLCAiMS44LjgiLCAiMS44LjkiICks
Ci0JCQkidXJsIiA9PiAianF1ZXJ5dWkvWFlaL2pxdWVyeS11aS5taW4uanMiCi0JCSksCi0JCSJN
b29Ub29scyIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMS4xLjEiLCAiMS4x
LjIiLCAiMS4yLjEiLCAiMS4yLjIiLCAiMS4yLjMiLCAiMS4yLjQiLCAiMS4yLjUiLCAiMS4zLjAi
ICksCi0JCQkidXJsIiA9PiAibW9vdG9vbHMvWFlaL21vb3Rvb2xzLXl1aS1jb21wcmVzc2VkLmpz
IgotCQkpLAotCQkiUHJvdG90eXBlIiA9PiBhcnJheSgKLQkJCSJ2ZXJzaW9ucyIgPT4gYXJyYXko
ICIxLjYuMC4yIiwgIjEuNi4wLjMiLCAiMS42LjEuMCIsICIxLjcuMC4wIiApLAotCQkJInVybCIg
PT4gInByb3RvdHlwZS9YWVovcHJvdG90eXBlLmpzIgotCQkpLAotCQkic2NyaXB0YWN1bG91cyIg
PT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMS44LjEiLCAiMS44LjIiLCAiMS44
LjMiICksCi0JCQkidXJsIiA9PiAic2NyaXB0YWN1bG91cy9YWVovc2NyaXB0YWN1bG91cy5qcyIK
LQkJKSwKLQkJIlNXRk9iamVjdCIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAi
Mi4xIiwgIjIuMiIgKSwKLQkJCSJ1cmwiID0+ICJzd2ZvYmplY3QvWFlaL3N3Zm9iamVjdC5qcyIK
LQkJKSwKLQkJIllVSSIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMi42LjAi
LCAiMi43LjAiLCAiMi44LjByNCIsICIyLjguMSIsICIyLjguMiIsICIzLjMuMCIgKSwKLQkJCSJ1
cmwiID0+ICAgICJ5dWkvWFlaL2J1aWxkL3l1aS95dWktbWluLmpzIgotCQkpCi0JKTsKLQotCWlm
KCBjb3VudCgkX1BPU1QpICkgewotCQkkaW5jbHVkZXMgPSBhcnJheSgpOwotCQlmb3JlYWNoKCAk
X1BPU1QgYXMgJG5hbWUgPT4gJHZlciApewotCQkJJHVybCA9ICRsaWJyYXJpZXNbICRuYW1lIF1b
ICJ1cmwiIF07Ci0JCQlpZiggJG5hbWUgPT0gIllVSSIgJiYgJHZlclswXSA9PSAiMiIgKSB7Ci0J
CQkJJHVybCA9IHN0cl9yZXBsYWNlKCAiL3l1aSIsICIveXVpbG9hZGVyIiwgJHVybCwgJGNvdW50
ID0gMiApOwotCQkJfQotCQkJJGluY2x1ZGUgPSAiPHNjcmlwdCBzcmM9JyRiYXNlVVJMIi5zdHJf
cmVwbGFjZSgiWFlaIiwgJHZlciwgJHVybCwgJGNvdW50ID0gMSkuIic+PC9zY3JpcHQ+XG4iOwot
CQkJaWYoICRsaWIgPT0gInByb3RvdHlwZSIgKSB7IC8vIHByb3RvdHlwZSBtdXN0IGJlIGluY2x1
ZGVkIGZpcnN0Ci0JCQkJYXJyYXlfdW5zaGlmdCggJGluY2x1ZGVzLCAkaW5jbHVkZSApOwotCQkJ
fSBlbHNlIHsKLQkJCQlhcnJheV9wdXNoKCAkaW5jbHVkZXMsICRpbmNsdWRlICk7Ci0JCQl9Ci0J
CX0KLQotCQkkaW5jbHVkZXMgPSBpbXBsb2RlKCAiXG4iLCAkaW5jbHVkZXMgKTsKLQkJJHN1aXRl
ID0gZmlsZV9nZXRfY29udGVudHMoICJpbmRleC5odG1sIiApOwotCQllY2hvIHN0cl9yZXBsYWNl
KCAiPCEtLSBJbmNsdWRlcyAtLT4iLCAkaW5jbHVkZXMsICRzdWl0ZSApOwotCQlleGl0OwotCX0K
LT8+Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9
ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLQk8dGl0
bGU+UnVuIGpRdWVyeSBUZXN0IFN1aXRlIFBvbGx1dGVkPC90aXRsZT4KLQk8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgotCQkub3RoZXJsaWJzIGZpZWxkc2V0IHsKLQkJCXdpZHRoOiA0MDBweAotCQl9
Ci0JCS5vdGhlcmxpYnMgbGFiZWx7Ci0JCQltYXJnaW46IDVweCAwcHggNXB4IDIwcHg7Ci0JCX0K
LQk8L3N0eWxlPgotPC9oZWFkPgotCi08Ym9keSBpZD0iYm9keSI+Ci0JPGgxIGlkPSJoZWFkZXIi
PmpRdWVyeSBUZXN0IFN1aXRlPC9oMT4KLQk8aDIgaWQ9ImJhbm5lciIgY2xhc3M9ImZhaWwiPjwv
aDI+Ci0JPGgyIGlkPSJ1c2VyQWdlbnQiPkNob29zZSBvdGhlciBsaWJyYXJpZXMgdG8gaW5jbHVk
ZTwvaDI+Ci0KLQk8Zm9ybSBjbGFzcz0ib3RoZXJsaWJzIiBhY3Rpb249Ii4vcG9sbHV0ZWQucGhw
IiBtZXRob2Q9IlBPU1QiPgotCQk8P3BocAotCQkJZm9yZWFjaCggJGxpYnJhcmllcyBhcyAkbmFt
ZSA9PiAkZGF0YSApIHsKLQkJCQllY2hvICI8ZmllbGRzZXQ+PGxlZ2VuZD4kbmFtZTwvbGVnZW5k
PiI7Ci0JCQkJJGkgPSAwOwotCQkJCWZvcmVhY2goICRkYXRhWyAidmVyc2lvbnMiIF0gYXMgJHZl
ciApIHsKLQkJCQkJJGkrKzsKLQkJCQkJZWNobyAiPGxhYmVsPjxpbnB1dCB0eXBlPSdyYWRpbycg
bmFtZT0nJG5hbWUnIHZhbHVlPSckdmVyJyAvPiR2ZXI8L2xhYmVsPiI7Ci0JCQkJCWlmKCAhKCRp
ICUgNCkgKSBlY2hvICI8YnIgLz4iOwotCQkJCX0KLQkJCQllY2hvICI8L2ZpZWxkc2V0PiI7Ci0J
CQl9Ci0JCT8+Ci0JCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSIgUnVuICIgY2xhc3M9InN1
Ym1pdCIgLz4KLQk8L2Zvcm0+Ci08L2JvZHk+Ci08L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvcG9sbHV0ZWQucGhwCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogYWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0
L3JlYWR5d2FpdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJj
ZXMvdGVzdC9yZWFkeXdhaXQuaHRtbAkocmV2aXNpb24gMjc3NzkyKQorKysgTGF5b3V0VGVzdHMv
anF1ZXJ5L3Jlc291cmNlcy90ZXN0L3JlYWR5d2FpdC5odG1sCShub25leGlzdGVudCkKQEAgLTEs
ODYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTwhLS0KLQlUZXN0IGZvciBqUXVl
cnkucmVhZHlXYWl0LiBOZWVkcyB0byBiZSBhCi0Jc3RhbmRhbG9uZSB0ZXN0IHNpbmNlIGl0IGRl
YWxzIHdpdGggRE9NCi0JcmVhZHkuCi0tLT4KLTxoZWFkPgotCTx0aXRsZT4KLQkJalF1ZXJ5LnJl
YWR5V2FpdCBUZXN0Ci0JPC90aXRsZT4KLQk8c3R5bGU+Ci0JCWRpdiB7IG1hcmdpbi10b3A6IDEw
cHg7IH0KLQkJI291dHB1dCB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIH0KLQkJI2V4cGVjdGVk
T3V0cHV0IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4gfQotCTwvc3R5bGU+Ci0JPHNjcmlwdCBz
cmM9Ii4uL3NyYy9jb3JlLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2RlZmVy
cmVkLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3N1cHBvcnQuanMiPjwvc2Ny
aXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvZGF0YS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBz
cmM9Ii4uL3NyYy9xdWV1ZS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9hdHRy
aWJ1dGVzLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2V2ZW50LmpzIj48L3Nj
cmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3NpenpsZS9zaXp6bGUuanMiPjwvc2NyaXB0Pgot
CTxzY3JpcHQgc3JjPSIuLi9zcmMvc2l6emxlLWpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlw
dCBzcmM9Ii4uL3NyYy90cmF2ZXJzaW5nLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4v
c3JjL21hbmlwdWxhdGlvbi5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9jc3Mu
anMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC5qcyI+PC9zY3JpcHQ+Ci0J
PHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4L2pzb25wLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNy
Yz0iLi4vc3JjL2FqYXgvc2NyaXB0LmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3Jj
L2FqYXgveGhyLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2VmZmVjdHMuanMi
Pjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvb2Zmc2V0LmpzIj48L3NjcmlwdD4KLQk8
c2NyaXB0IHNyYz0iLi4vc3JjL2RpbWVuc2lvbnMuanMiPjwvc2NyaXB0PgotCi0JPCEtLSBMb2Fk
IHRoZSBzY3JpcHQgbG9hZGVyIHRoYXQgdXNlcwotCQlqUXVlcnkucmVhZHlXYWl0IC0tPgotCTxz
Y3JpcHQgc3JjPSJkYXRhL3JlYWR5d2FpdGxvYWRlci5qcyI+PC9zY3JpcHQ+Ci0KLQk8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0JalF1ZXJ5KGZ1bmN0aW9uKCkgewotCQkvLyBUaGUg
ZGVsYXllZE1lc3NhZ2UgaXMgZGVmaW5lZCBieQotCQkvLyB0aGUgcmVhZHl3YWl0YXNzZXQuanMg
ZmlsZSwgc28gdGhlCi0JCS8vIG5leHQgbGluZSB3aWxsIG9ubHkgd29yayBpZiB0aGlzIERPTQot
CQkvLyByZWFkeSBjYWxsYmFjayBpcyBjYWxsZWQgYWZ0ZXIgcmVhZHlXYWl0Ci0JCS8vIGhhcyBi
ZWVuIGRlY3JlbWVudGVkIGJ5IHJlYWR5d2FpdGxvYWRlci5qcwotCQkvLyBJZiBhbiBlcnJvciBv
Y2N1cnMuCi0JCWpRdWVyeSgiI291dHB1dCIpLmFwcGVuZChkZWxheWVkTWVzc2FnZSk7Ci0JfSk7
Ci0JPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLQk8aDE+Ci0JCWpRdWVyeS5yZWFkeVdhaXQg
VGVzdAotCTwvaDE+Ci0JPHA+Ci0JCVRoaXMgaXMgYSB0ZXN0IHBhZ2UgZm9yIGpRdWVyeS5yZWFk
eVdhaXQsIHRoYXQgd2FzCi0JCWFkZGVkIGR1ZSB0byB0aGlzIHRpY2tldAotCQk8YSBocmVmPSJo
dHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC82NzgxIj4jNjc4MTwvYT4uCi0JPC9wPgotCTxw
PgotCVRlc3QgZm9yIGpRdWVyeS5yZWFkeVdhaXQsIHdoaWNoIGNhbiBiZSB1c2VkCi0JYnkgcGx1
Z2lucyBhbmQgb3RoZXIgc2NyaXB0cyB0byBpbmRpY2F0ZSBzb21ldGhpbmcKLQlpbXBvcnRhbnQg
dG8gdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyBhbmQgbmVlZHMKLQl0byBibG9jayB0aGUgRE9N
IHJlYWR5IGNhbGxiYWNrcyB0aGF0IGFyZSByZWdpc3RlcmVkCi0Jd2l0aCBqUXVlcnkuCi0JPC9w
PgotCTxwPgotCVNjcmlwdCBsb2FkZXJzIGFyZSB0aGUgbW9zdCBsaWtlbHkga2luZCBvZiBzY3Jp
cHQKLQl0byB1c2UgalF1ZXJ5LnJlYWR5V2FpdCwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgYnkKLQlv
dGhlciB0aGluZ3MgbGlrZSBhIHNjcmlwdCB0aGF0IGxvYWRzIGEgQ1NTIGZpbGUKLQlhbmQgd2Fu
dHMgdG8gcGF1c2UgdGhlIERPTSByZWFkeSBjYWxsYmFja3MuCi0JPC9wPgotCTxwPgotCTxzdHJv
bmc+RXhwZWN0ZWQgUmVzdWx0PC9zdHJvbmc+OiBUaGUgdGV4dAotCTxzcGFuIGlkPSJleHBlY3Rl
ZE91dHB1dCI+SXQgV29ya2VkITwvc3Bhbj4KLQlhcHBlYXJzIGJlbG93IGFmdGVyIGFib3V0IDxz
dHJvbmc+MiBzZWNvbmRzLjwvc3Ryb25nPgotCTwvcD4KLQk8cD4KLQlJZiB0aGVyZSBpcyBhbiBl
cnJvciBpbiB0aGUgY29uc29sZSwKLQlvciB0aGUgdGV4dCBkb2VzIG5vdCBzaG93IHVwLCB0aGVu
IHRoZSB0ZXN0IGZhaWxlZC4KLQk8L3A+Ci0JPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KLTwvYm9k
eT4KLTwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2pxdWVyeS9yZXNv
dXJjZXMvdGVzdC9yZWFkeXdhaXQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IGFsbG93LXRhYnMK
IyMgLTEgKzAsMCAjIwoteWVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC94aHRtbC5waHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L3hodG1sLnBocAkocmV2aXNpb24g
Mjc3NzkyKQorKysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L3hodG1sLnBocAko
bm9uZXhpc3RlbnQpCkBAIC0xLDUgKzAsMCBAQAotPD9waHAKLQkjIExvYWQgYW5kIHJ1biB0aGUg
dGVzdCBzdWl0ZSBhcyBhIHByb3BlciBYSFRNTCBwYWdlCi0JaGVhZGVyKCJDb250ZW50LXR5cGU6
IGFwcGxpY2F0aW9uL3hodG1sK3htbCIpOwotCXJlYWRmaWxlKCJpbmRleC5odG1sIik7Ci0/PgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L3ho
dG1sLnBocApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAsMCAjIwoteWVz
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429238</attachid>
            <date>2021-05-20 16:14:10 -0700</date>
            <delta_ts>2021-05-24 13:26:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226043-20210520161409.patch</filename>
            <type>text/plain</type>
            <size>78618</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3NzgzNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTIwICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBbTGF5b3V0VGVzdHNdIERlbGV0ZSB1bnVz
ZWQganF1ZXJ5IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2MDQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83ODI3Nzg4MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUuCisKKyAgICAgICAgKiBqcXVlcnkvcmVzb3Vy
Y2VzL3NyYy9pbnRyby5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3Ny
Yy9vdXRyby5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3NyYy9zZWxl
Y3Rvci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3Rlc3QvY3NwLnBo
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9vZmZzZXQv
YWJzb2x1dGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3Rlc3Qv
ZGF0YS9vZmZzZXQvZml4ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3Vy
Y2VzL3Rlc3QvZGF0YS9vZmZzZXQvcmVsYXRpdmUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBq
cXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9vZmZzZXQvc2Nyb2xsLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICoganF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvb2Zmc2V0L3N0YXRpYy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIGpxdWVyeS9yZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNldC90YWJs
ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGpxdWVyeS9yZXNvdXJjZXMvdGVzdC9kYXRhL3Jl
YWR5d2FpdGFzc2V0LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGpxdWVyeS9yZXNvdXJjZXMvdGVz
dC9kYXRhL3JlYWR5d2FpdGxvYWRlci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVz
b3VyY2VzL3Rlc3QvZGVsZWdhdGV0ZXN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICoganF1ZXJ5
L3Jlc291cmNlcy90ZXN0L2xvY2FsZmlsZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGpxdWVy
eS9yZXNvdXJjZXMvdGVzdC9uZXR3b3JrZXJyb3IuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBq
cXVlcnkvcmVzb3VyY2VzL3Rlc3QvcG9sbHV0ZWQucGhwOiBSZW1vdmVkLgorICAgICAgICAqIGpx
dWVyeS9yZXNvdXJjZXMvdGVzdC9yZWFkeXdhaXQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBq
cXVlcnkvcmVzb3VyY2VzL3Rlc3QveGh0bWwucGhwOiBSZW1vdmVkLgorCiAyMDIxLTA1LTIwICBB
bGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURM
XSBSZW1vdmUgW0ltcGxpY2l0VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3RdIGV4dGVu
ZGVkIGF0dHJpYnV0ZXMKSW5kZXg6IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvc3JjL2lu
dHJvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvc3JjL2lu
dHJvLmpzCShyZXZpc2lvbiAyNzc4MzIpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2Vz
L3NyYy9pbnRyby5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICswLDAgQEAKLS8qIQotICogalF1
ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2QFZFUlNJT04KLSAqIGh0dHA6Ly9qcXVlcnkuY29tLwot
ICoKLSAqIENvcHlyaWdodCAyMDExLCBKb2huIFJlc2lnCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVy
IHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3Jn
L2xpY2Vuc2UKLSAqCi0gKiBJbmNsdWRlcyBTaXp6bGUuanMKLSAqIGh0dHA6Ly9zaXp6bGVqcy5j
b20vCi0gKiBDb3B5cmlnaHQgMjAxMSwgVGhlIERvam8gRm91bmRhdGlvbgotICogUmVsZWFzZWQg
dW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgotICoKLSAqIERhdGU6IEBEQVRF
Ci0gKi8KLShmdW5jdGlvbiggd2luZG93LCB1bmRlZmluZWQgKSB7Ci0KLS8vIFVzZSB0aGUgY29y
cmVjdCBkb2N1bWVudCBhY2NvcmRpbmdseSB3aXRoIHdpbmRvdyBhcmd1bWVudCAoc2FuZGJveCkK
LXZhciBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDsKSW5kZXg6IExheW91dFRlc3RzL2pxdWVy
eS9yZXNvdXJjZXMvc3JjL291dHJvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVy
eS9yZXNvdXJjZXMvc3JjL291dHJvLmpzCShyZXZpc2lvbiAyNzc4MzIpCisrKyBMYXlvdXRUZXN0
cy9qcXVlcnkvcmVzb3VyY2VzL3NyYy9vdXRyby5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDIgKzAs
MCBAQAotd2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5OwotfSkod2luZG93KTsKSW5k
ZXg6IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvc3JjL3NlbGVjdG9yLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvc3JjL3NlbGVjdG9yLmpzCShyZXZp
c2lvbiAyNzc4MzIpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3NyYy9zZWxlY3Rv
ci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDEzOTIgKzAsMCBAQAotLyohCi0gKiBTaXp6bGUgQ1NT
IFNlbGVjdG9yIEVuZ2luZQotICogIENvcHlyaWdodCAyMDExLCBUaGUgRG9qbyBGb3VuZGF0aW9u
Ci0gKiAgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgotICog
IE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVqcy5jb20vCi0gKi8KLShmdW5jdGlvbigp
ewotCi12YXIgY2h1bmtlciA9IC8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykrXCl8XFsoPzpc
W1teXFtcXV0qXF18WyciXVteJyJdKlsnIl18W15cW1xdJyJdKykrXF18XFwufFteID4rfiwoXFtc
XF0rKSt8Wz4rfl0pKFxzKixccyopPygoPzoufFxyfFxuKSopL2csCi0JZG9uZSA9IDAsCi0JdG9T
dHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLAotCWhhc0R1cGxpY2F0ZSA9IGZhbHNl
LAotCWJhc2VIYXNEdXBsaWNhdGUgPSB0cnVlLAotCXJCYWNrc2xhc2ggPSAvXFwvZywKLQlyTm9u
V29yZCA9IC9cVy87Ci0KLS8vIEhlcmUgd2UgY2hlY2sgaWYgdGhlIEphdmFTY3JpcHQgZW5naW5l
IGlzIHVzaW5nIHNvbWUgc29ydCBvZgotLy8gb3B0aW1pemF0aW9uIHdoZXJlIGl0IGRvZXMgbm90
IGFsd2F5cyBjYWxsIG91ciBjb21wYXJpc2lvbgotLy8gZnVuY3Rpb24uIElmIHRoYXQgaXMgdGhl
IGNhc2UsIGRpc2NhcmQgdGhlIGhhc0R1cGxpY2F0ZSB2YWx1ZS4KLS8vICAgVGh1cyBmYXIgdGhh
dCBpbmNsdWRlcyBHb29nbGUgQ2hyb21lLgotWzAsIDBdLnNvcnQoZnVuY3Rpb24oKSB7Ci0JYmFz
ZUhhc0R1cGxpY2F0ZSA9IGZhbHNlOwotCXJldHVybiAwOwotfSk7Ci0KLXZhciBTaXp6bGUgPSBm
dW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7Ci0JcmVzdWx0cyA9
IHJlc3VsdHMgfHwgW107Ci0JY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7Ci0KLQl2YXIg
b3JpZ0NvbnRleHQgPSBjb250ZXh0OwotCi0JaWYgKCBjb250ZXh0Lm5vZGVUeXBlICE9PSAxICYm
IGNvbnRleHQubm9kZVR5cGUgIT09IDkgKSB7Ci0JCXJldHVybiBbXTsKLQl9Ci0JCi0JaWYgKCAh
c2VsZWN0b3IgfHwgdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKLQkJcmV0dXJuIHJl
c3VsdHM7Ci0JfQotCi0JdmFyIG0sIHNldCwgY2hlY2tTZXQsIGV4dHJhLCByZXQsIGN1ciwgcG9w
LCBpLAotCQlwcnVuZSA9IHRydWUsCi0JCWNvbnRleHRYTUwgPSBTaXp6bGUuaXNYTUwoIGNvbnRl
eHQgKSwKLQkJcGFydHMgPSBbXSwKLQkJc29GYXIgPSBzZWxlY3RvcjsKLQkKLQkvLyBSZXNldCB0
aGUgcG9zaXRpb24gb2YgdGhlIGNodW5rZXIgcmVnZXhwIChzdGFydCBmcm9tIGhlYWQpCi0JZG8g
ewotCQljaHVua2VyLmV4ZWMoICIiICk7Ci0JCW0gPSBjaHVua2VyLmV4ZWMoIHNvRmFyICk7Ci0K
LQkJaWYgKCBtICkgewotCQkJc29GYXIgPSBtWzNdOwotCQkKLQkJCXBhcnRzLnB1c2goIG1bMV0g
KTsKLQkJCi0JCQlpZiAoIG1bMl0gKSB7Ci0JCQkJZXh0cmEgPSBtWzNdOwotCQkJCWJyZWFrOwot
CQkJfQotCQl9Ci0JfSB3aGlsZSAoIG0gKTsKLQotCWlmICggcGFydHMubGVuZ3RoID4gMSAmJiBv
cmlnUE9TLmV4ZWMoIHNlbGVjdG9yICkgKSB7Ci0KLQkJaWYgKCBwYXJ0cy5sZW5ndGggPT09IDIg
JiYgRXhwci5yZWxhdGl2ZVsgcGFydHNbMF0gXSApIHsKLQkJCXNldCA9IHBvc1Byb2Nlc3MoIHBh
cnRzWzBdICsgcGFydHNbMV0sIGNvbnRleHQgKTsKLQotCQl9IGVsc2UgewotCQkJc2V0ID0gRXhw
ci5yZWxhdGl2ZVsgcGFydHNbMF0gXSA/Ci0JCQkJWyBjb250ZXh0IF0gOgotCQkJCVNpenpsZSgg
cGFydHMuc2hpZnQoKSwgY29udGV4dCApOwotCi0JCQl3aGlsZSAoIHBhcnRzLmxlbmd0aCApIHsK
LQkJCQlzZWxlY3RvciA9IHBhcnRzLnNoaWZ0KCk7Ci0KLQkJCQlpZiAoIEV4cHIucmVsYXRpdmVb
IHNlbGVjdG9yIF0gKSB7Ci0JCQkJCXNlbGVjdG9yICs9IHBhcnRzLnNoaWZ0KCk7Ci0JCQkJfQot
CQkJCQotCQkJCXNldCA9IHBvc1Byb2Nlc3MoIHNlbGVjdG9yLCBzZXQgKTsKLQkJCX0KLQkJfQot
Ci0JfSBlbHNlIHsKLQkJLy8gVGFrZSBhIHNob3J0Y3V0IGFuZCBzZXQgdGhlIGNvbnRleHQgaWYg
dGhlIHJvb3Qgc2VsZWN0b3IgaXMgYW4gSUQKLQkJLy8gKGJ1dCBub3QgaWYgaXQnbGwgYmUgZmFz
dGVyIGlmIHRoZSBpbm5lciBzZWxlY3RvciBpcyBhbiBJRCkKLQkJaWYgKCAhc2VlZCAmJiBwYXJ0
cy5sZW5ndGggPiAxICYmIGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgIWNvbnRleHRYTUwgJiYK
LQkJCQlFeHByLm1hdGNoLklELnRlc3QocGFydHNbMF0pICYmICFFeHByLm1hdGNoLklELnRlc3Qo
cGFydHNbcGFydHMubGVuZ3RoIC0gMV0pICkgewotCi0JCQlyZXQgPSBTaXp6bGUuZmluZCggcGFy
dHMuc2hpZnQoKSwgY29udGV4dCwgY29udGV4dFhNTCApOwotCQkJY29udGV4dCA9IHJldC5leHBy
ID8KLQkJCQlTaXp6bGUuZmlsdGVyKCByZXQuZXhwciwgcmV0LnNldCApWzBdIDoKLQkJCQlyZXQu
c2V0WzBdOwotCQl9Ci0KLQkJaWYgKCBjb250ZXh0ICkgewotCQkJcmV0ID0gc2VlZCA/Ci0JCQkJ
eyBleHByOiBwYXJ0cy5wb3AoKSwgc2V0OiBtYWtlQXJyYXkoc2VlZCkgfSA6Ci0JCQkJU2l6emxl
LmZpbmQoIHBhcnRzLnBvcCgpLCBwYXJ0cy5sZW5ndGggPT09IDEgJiYgKHBhcnRzWzBdID09PSAi
fiIgfHwgcGFydHNbMF0gPT09ICIrIikgJiYgY29udGV4dC5wYXJlbnROb2RlID8gY29udGV4dC5w
YXJlbnROb2RlIDogY29udGV4dCwgY29udGV4dFhNTCApOwotCi0JCQlzZXQgPSByZXQuZXhwciA/
Ci0JCQkJU2l6emxlLmZpbHRlciggcmV0LmV4cHIsIHJldC5zZXQgKSA6Ci0JCQkJcmV0LnNldDsK
LQotCQkJaWYgKCBwYXJ0cy5sZW5ndGggPiAwICkgewotCQkJCWNoZWNrU2V0ID0gbWFrZUFycmF5
KCBzZXQgKTsKLQotCQkJfSBlbHNlIHsKLQkJCQlwcnVuZSA9IGZhbHNlOwotCQkJfQotCi0JCQl3
aGlsZSAoIHBhcnRzLmxlbmd0aCApIHsKLQkJCQljdXIgPSBwYXJ0cy5wb3AoKTsKLQkJCQlwb3Ag
PSBjdXI7Ci0KLQkJCQlpZiAoICFFeHByLnJlbGF0aXZlWyBjdXIgXSApIHsKLQkJCQkJY3VyID0g
IiI7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJcG9wID0gcGFydHMucG9wKCk7Ci0JCQkJfQotCi0JCQkJ
aWYgKCBwb3AgPT0gbnVsbCApIHsKLQkJCQkJcG9wID0gY29udGV4dDsKLQkJCQl9Ci0KLQkJCQlF
eHByLnJlbGF0aXZlWyBjdXIgXSggY2hlY2tTZXQsIHBvcCwgY29udGV4dFhNTCApOwotCQkJfQot
Ci0JCX0gZWxzZSB7Ci0JCQljaGVja1NldCA9IHBhcnRzID0gW107Ci0JCX0KLQl9Ci0KLQlpZiAo
ICFjaGVja1NldCApIHsKLQkJY2hlY2tTZXQgPSBzZXQ7Ci0JfQotCi0JaWYgKCAhY2hlY2tTZXQg
KSB7Ci0JCVNpenpsZS5lcnJvciggY3VyIHx8IHNlbGVjdG9yICk7Ci0JfQotCi0JaWYgKCB0b1N0
cmluZy5jYWxsKGNoZWNrU2V0KSA9PT0gIltvYmplY3QgQXJyYXldIiApIHsKLQkJaWYgKCAhcHJ1
bmUgKSB7Ci0JCQlyZXN1bHRzLnB1c2guYXBwbHkoIHJlc3VsdHMsIGNoZWNrU2V0ICk7Ci0KLQkJ
fSBlbHNlIGlmICggY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID09PSAxICkgewotCQkJZm9y
ICggaSA9IDA7IGNoZWNrU2V0W2ldICE9IG51bGw7IGkrKyApIHsKLQkJCQlpZiAoIGNoZWNrU2V0
W2ldICYmIChjaGVja1NldFtpXSA9PT0gdHJ1ZSB8fCBjaGVja1NldFtpXS5ub2RlVHlwZSA9PT0g
MSAmJiBTaXp6bGUuY29udGFpbnMoY29udGV4dCwgY2hlY2tTZXRbaV0pKSApIHsKLQkJCQkJcmVz
dWx0cy5wdXNoKCBzZXRbaV0gKTsKLQkJCQl9Ci0JCQl9Ci0KLQkJfSBlbHNlIHsKLQkJCWZvciAo
IGkgPSAwOyBjaGVja1NldFtpXSAhPSBudWxsOyBpKysgKSB7Ci0JCQkJaWYgKCBjaGVja1NldFtp
XSAmJiBjaGVja1NldFtpXS5ub2RlVHlwZSA9PT0gMSApIHsKLQkJCQkJcmVzdWx0cy5wdXNoKCBz
ZXRbaV0gKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCX0gZWxzZSB7Ci0JCW1ha2VBcnJheSggY2hl
Y2tTZXQsIHJlc3VsdHMgKTsKLQl9Ci0KLQlpZiAoIGV4dHJhICkgewotCQlTaXp6bGUoIGV4dHJh
LCBvcmlnQ29udGV4dCwgcmVzdWx0cywgc2VlZCApOwotCQlTaXp6bGUudW5pcXVlU29ydCggcmVz
dWx0cyApOwotCX0KLQotCXJldHVybiByZXN1bHRzOwotfTsKLQotU2l6emxlLnVuaXF1ZVNvcnQg
PSBmdW5jdGlvbiggcmVzdWx0cyApIHsKLQlpZiAoIHNvcnRPcmRlciApIHsKLQkJaGFzRHVwbGlj
YXRlID0gYmFzZUhhc0R1cGxpY2F0ZTsKLQkJcmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTsKLQot
CQlpZiAoIGhhc0R1cGxpY2F0ZSApIHsKLQkJCWZvciAoIHZhciBpID0gMTsgaSA8IHJlc3VsdHMu
bGVuZ3RoOyBpKysgKSB7Ci0JCQkJaWYgKCByZXN1bHRzW2ldID09PSByZXN1bHRzWyBpIC0gMSBd
ICkgewotCQkJCQlyZXN1bHRzLnNwbGljZSggaS0tLCAxICk7Ci0JCQkJfQotCQkJfQotCQl9Ci0J
fQotCi0JcmV0dXJuIHJlc3VsdHM7Ci19OwotCi1TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBl
eHByLCBzZXQgKSB7Ci0JcmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgc2V0ICk7Ci19
OwotCi1TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIG5vZGUsIGV4cHIgKSB7Ci0J
cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgW25vZGVdICkubGVuZ3RoID4gMDsKLX07
Ci0KLVNpenpsZS5maW5kID0gZnVuY3Rpb24oIGV4cHIsIGNvbnRleHQsIGlzWE1MICkgewotCXZh
ciBzZXQ7Ci0KLQlpZiAoICFleHByICkgewotCQlyZXR1cm4gW107Ci0JfQotCi0JZm9yICggdmFy
IGkgPSAwLCBsID0gRXhwci5vcmRlci5sZW5ndGg7IGkgPCBsOyBpKysgKSB7Ci0JCXZhciBtYXRj
aCwKLQkJCXR5cGUgPSBFeHByLm9yZGVyW2ldOwotCQkKLQkJaWYgKCAobWF0Y2ggPSBFeHByLmxl
ZnRNYXRjaFsgdHlwZSBdLmV4ZWMoIGV4cHIgKSkgKSB7Ci0JCQl2YXIgbGVmdCA9IG1hdGNoWzFd
OwotCQkJbWF0Y2guc3BsaWNlKCAxLCAxICk7Ci0KLQkJCWlmICggbGVmdC5zdWJzdHIoIGxlZnQu
bGVuZ3RoIC0gMSApICE9PSAiXFwiICkgewotCQkJCW1hdGNoWzFdID0gKG1hdGNoWzFdIHx8ICIi
KS5yZXBsYWNlKCByQmFja3NsYXNoLCAiIiApOwotCQkJCXNldCA9IEV4cHIuZmluZFsgdHlwZSBd
KCBtYXRjaCwgY29udGV4dCwgaXNYTUwgKTsKLQotCQkJCWlmICggc2V0ICE9IG51bGwgKSB7Ci0J
CQkJCWV4cHIgPSBleHByLnJlcGxhY2UoIEV4cHIubWF0Y2hbIHR5cGUgXSwgIiIgKTsKLQkJCQkJ
YnJlYWs7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JaWYgKCAhc2V0ICkgewotCQlzZXQgPSB0
eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgPwotCQkJ
Y29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggIioiICkgOgotCQkJW107Ci0JfQotCi0JcmV0
dXJuIHsgc2V0OiBzZXQsIGV4cHI6IGV4cHIgfTsKLX07Ci0KLVNpenpsZS5maWx0ZXIgPSBmdW5j
dGlvbiggZXhwciwgc2V0LCBpbnBsYWNlLCBub3QgKSB7Ci0JdmFyIG1hdGNoLCBhbnlGb3VuZCwK
LQkJb2xkID0gZXhwciwKLQkJcmVzdWx0ID0gW10sCi0JCWN1ckxvb3AgPSBzZXQsCi0JCWlzWE1M
RmlsdGVyID0gc2V0ICYmIHNldFswXSAmJiBTaXp6bGUuaXNYTUwoIHNldFswXSApOwotCi0Jd2hp
bGUgKCBleHByICYmIHNldC5sZW5ndGggKSB7Ci0JCWZvciAoIHZhciB0eXBlIGluIEV4cHIuZmls
dGVyICkgewotCQkJaWYgKCAobWF0Y2ggPSBFeHByLmxlZnRNYXRjaFsgdHlwZSBdLmV4ZWMoIGV4
cHIgKSkgIT0gbnVsbCAmJiBtYXRjaFsyXSApIHsKLQkJCQl2YXIgZm91bmQsIGl0ZW0sCi0JCQkJ
CWZpbHRlciA9IEV4cHIuZmlsdGVyWyB0eXBlIF0sCi0JCQkJCWxlZnQgPSBtYXRjaFsxXTsKLQot
CQkJCWFueUZvdW5kID0gZmFsc2U7Ci0KLQkJCQltYXRjaC5zcGxpY2UoMSwxKTsKLQotCQkJCWlm
ICggbGVmdC5zdWJzdHIoIGxlZnQubGVuZ3RoIC0gMSApID09PSAiXFwiICkgewotCQkJCQljb250
aW51ZTsKLQkJCQl9Ci0KLQkJCQlpZiAoIGN1ckxvb3AgPT09IHJlc3VsdCApIHsKLQkJCQkJcmVz
dWx0ID0gW107Ci0JCQkJfQotCi0JCQkJaWYgKCBFeHByLnByZUZpbHRlclsgdHlwZSBdICkgewot
CQkJCQltYXRjaCA9IEV4cHIucHJlRmlsdGVyWyB0eXBlIF0oIG1hdGNoLCBjdXJMb29wLCBpbnBs
YWNlLCByZXN1bHQsIG5vdCwgaXNYTUxGaWx0ZXIgKTsKLQotCQkJCQlpZiAoICFtYXRjaCApIHsK
LQkJCQkJCWFueUZvdW5kID0gZm91bmQgPSB0cnVlOwotCi0JCQkJCX0gZWxzZSBpZiAoIG1hdGNo
ID09PSB0cnVlICkgewotCQkJCQkJY29udGludWU7Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQlpZiAo
IG1hdGNoICkgewotCQkJCQlmb3IgKCB2YXIgaSA9IDA7IChpdGVtID0gY3VyTG9vcFtpXSkgIT0g
bnVsbDsgaSsrICkgewotCQkJCQkJaWYgKCBpdGVtICkgewotCQkJCQkJCWZvdW5kID0gZmlsdGVy
KCBpdGVtLCBtYXRjaCwgaSwgY3VyTG9vcCApOwotCQkJCQkJCXZhciBwYXNzID0gbm90IF4gISFm
b3VuZDsKLQotCQkJCQkJCWlmICggaW5wbGFjZSAmJiBmb3VuZCAhPSBudWxsICkgewotCQkJCQkJ
CQlpZiAoIHBhc3MgKSB7Ci0JCQkJCQkJCQlhbnlGb3VuZCA9IHRydWU7Ci0KLQkJCQkJCQkJfSBl
bHNlIHsKLQkJCQkJCQkJCWN1ckxvb3BbaV0gPSBmYWxzZTsKLQkJCQkJCQkJfQotCi0JCQkJCQkJ
fSBlbHNlIGlmICggcGFzcyApIHsKLQkJCQkJCQkJcmVzdWx0LnB1c2goIGl0ZW0gKTsKLQkJCQkJ
CQkJYW55Rm91bmQgPSB0cnVlOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQot
CQkJCWlmICggZm91bmQgIT09IHVuZGVmaW5lZCApIHsKLQkJCQkJaWYgKCAhaW5wbGFjZSApIHsK
LQkJCQkJCWN1ckxvb3AgPSByZXN1bHQ7Ci0JCQkJCX0KLQotCQkJCQlleHByID0gZXhwci5yZXBs
YWNlKCBFeHByLm1hdGNoWyB0eXBlIF0sICIiICk7Ci0KLQkJCQkJaWYgKCAhYW55Rm91bmQgKSB7
Ci0JCQkJCQlyZXR1cm4gW107Ci0JCQkJCX0KLQotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0J
CX0KLQotCQkvLyBJbXByb3BlciBleHByZXNzaW9uCi0JCWlmICggZXhwciA9PT0gb2xkICkgewot
CQkJaWYgKCBhbnlGb3VuZCA9PSBudWxsICkgewotCQkJCVNpenpsZS5lcnJvciggZXhwciApOwot
Ci0JCQl9IGVsc2UgewotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0KLQkJb2xkID0gZXhwcjsKLQl9
Ci0KLQlyZXR1cm4gY3VyTG9vcDsKLX07Ci0KLVNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cg
KSB7Ci0JdGhyb3cgIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBt
c2c7Ci19OwotCi12YXIgRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7Ci0Jb3JkZXI6IFsgIklE
IiwgIk5BTUUiLCAiVEFHIiBdLAotCi0JbWF0Y2g6IHsKLQkJSUQ6IC8jKCg/Oltcd1x1MDBjMC1c
dUZGRkZcLV18XFwuKSspLywKLQkJQ0xBU1M6IC9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxc
LikrKS8sCi0JCU5BTUU6IC9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4p
KylbJyJdKlxdLywKLQkJQVRUUjogL1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSsp
XHMqKD86KFxTPz0pXHMqKD86KFsnIl0pKC4qPylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1d
fFxcLikqKXwpfClccypcXS8sCi0JCVRBRzogL14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxc
LikrKS8sCi0JCUNISUxEOiAvOihvbmx5fG50aHxsYXN0fGZpcnN0KS1jaGlsZCg/OlwoXHMqKGV2
ZW58b2RkfCg/OlsrXC1dP1xkK3woPzpbK1wtXT9cZCopP25ccyooPzpbK1wtXVxzKlxkKyk/KSlc
cypcKSk/LywKLQkJUE9TOiAvOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpc
KChcZCopXCkpPyg/PVteXC1dfCQpLywKLQkJUFNFVURPOiAvOigoPzpbXHdcdTAwYzAtXHVGRkZG
XC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/Lwot
CX0sCi0KLQlsZWZ0TWF0Y2g6IHt9LAotCi0JYXR0ck1hcDogewotCQkiY2xhc3MiOiAiY2xhc3NO
YW1lIiwKLQkJImZvciI6ICJodG1sRm9yIgotCX0sCi0KLQlhdHRySGFuZGxlOiB7Ci0JCWhyZWY6
IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCAiaHJlZiIg
KTsKLQkJfSwKLQkJdHlwZTogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gZWxlbS5nZXRB
dHRyaWJ1dGUoICJ0eXBlIiApOwotCQl9Ci0JfSwKLQotCXJlbGF0aXZlOiB7Ci0JCSIrIjogZnVu
Y3Rpb24oY2hlY2tTZXQsIHBhcnQpewotCQkJdmFyIGlzUGFydFN0ciA9IHR5cGVvZiBwYXJ0ID09
PSAic3RyaW5nIiwKLQkJCQlpc1RhZyA9IGlzUGFydFN0ciAmJiAhck5vbldvcmQudGVzdCggcGFy
dCApLAotCQkJCWlzUGFydFN0ck5vdFRhZyA9IGlzUGFydFN0ciAmJiAhaXNUYWc7Ci0KLQkJCWlm
ICggaXNUYWcgKSB7Ci0JCQkJcGFydCA9IHBhcnQudG9Mb3dlckNhc2UoKTsKLQkJCX0KLQotCQkJ
Zm9yICggdmFyIGkgPSAwLCBsID0gY2hlY2tTZXQubGVuZ3RoLCBlbGVtOyBpIDwgbDsgaSsrICkg
ewotCQkJCWlmICggKGVsZW0gPSBjaGVja1NldFtpXSkgKSB7Ci0JCQkJCXdoaWxlICggKGVsZW0g
PSBlbGVtLnByZXZpb3VzU2libGluZykgJiYgZWxlbS5ub2RlVHlwZSAhPT0gMSApIHt9Ci0KLQkJ
CQkJY2hlY2tTZXRbaV0gPSBpc1BhcnRTdHJOb3RUYWcgfHwgZWxlbSAmJiBlbGVtLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkgPT09IHBhcnQgPwotCQkJCQkJZWxlbSB8fCBmYWxzZSA6Ci0JCQkJCQll
bGVtID09PSBwYXJ0OwotCQkJCX0KLQkJCX0KLQotCQkJaWYgKCBpc1BhcnRTdHJOb3RUYWcgKSB7
Ci0JCQkJU2l6emxlLmZpbHRlciggcGFydCwgY2hlY2tTZXQsIHRydWUgKTsKLQkJCX0KLQkJfSwK
LQotCQkiPiI6IGZ1bmN0aW9uKCBjaGVja1NldCwgcGFydCApIHsKLQkJCXZhciBlbGVtLAotCQkJ
CWlzUGFydFN0ciA9IHR5cGVvZiBwYXJ0ID09PSAic3RyaW5nIiwKLQkJCQlpID0gMCwKLQkJCQls
ID0gY2hlY2tTZXQubGVuZ3RoOwotCi0JCQlpZiAoIGlzUGFydFN0ciAmJiAhck5vbldvcmQudGVz
dCggcGFydCApICkgewotCQkJCXBhcnQgPSBwYXJ0LnRvTG93ZXJDYXNlKCk7Ci0KLQkJCQlmb3Ig
KCA7IGkgPCBsOyBpKysgKSB7Ci0JCQkJCWVsZW0gPSBjaGVja1NldFtpXTsKLQotCQkJCQlpZiAo
IGVsZW0gKSB7Ci0JCQkJCQl2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwotCQkJCQkJY2hl
Y2tTZXRbaV0gPSBwYXJlbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gcGFydCA/IHBhcmVu
dCA6IGZhbHNlOwotCQkJCQl9Ci0JCQkJfQotCi0JCQl9IGVsc2UgewotCQkJCWZvciAoIDsgaSA8
IGw7IGkrKyApIHsKLQkJCQkJZWxlbSA9IGNoZWNrU2V0W2ldOwotCi0JCQkJCWlmICggZWxlbSAp
IHsKLQkJCQkJCWNoZWNrU2V0W2ldID0gaXNQYXJ0U3RyID8KLQkJCQkJCQllbGVtLnBhcmVudE5v
ZGUgOgotCQkJCQkJCWVsZW0ucGFyZW50Tm9kZSA9PT0gcGFydDsKLQkJCQkJfQotCQkJCX0KLQot
CQkJCWlmICggaXNQYXJ0U3RyICkgewotCQkJCQlTaXp6bGUuZmlsdGVyKCBwYXJ0LCBjaGVja1Nl
dCwgdHJ1ZSApOwotCQkJCX0KLQkJCX0KLQkJfSwKLQotCQkiIjogZnVuY3Rpb24oY2hlY2tTZXQs
IHBhcnQsIGlzWE1MKXsKLQkJCXZhciBub2RlQ2hlY2ssCi0JCQkJZG9uZU5hbWUgPSBkb25lKyss
Ci0JCQkJY2hlY2tGbiA9IGRpckNoZWNrOwotCi0JCQlpZiAoIHR5cGVvZiBwYXJ0ID09PSAic3Ry
aW5nIiAmJiAhck5vbldvcmQudGVzdCggcGFydCApICkgewotCQkJCXBhcnQgPSBwYXJ0LnRvTG93
ZXJDYXNlKCk7Ci0JCQkJbm9kZUNoZWNrID0gcGFydDsKLQkJCQljaGVja0ZuID0gZGlyTm9kZUNo
ZWNrOwotCQkJfQotCi0JCQljaGVja0ZuKCAicGFyZW50Tm9kZSIsIHBhcnQsIGRvbmVOYW1lLCBj
aGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCApOwotCQl9LAotCi0JCSJ+IjogZnVuY3Rpb24oIGNo
ZWNrU2V0LCBwYXJ0LCBpc1hNTCApIHsKLQkJCXZhciBub2RlQ2hlY2ssCi0JCQkJZG9uZU5hbWUg
PSBkb25lKyssCi0JCQkJY2hlY2tGbiA9IGRpckNoZWNrOwotCi0JCQlpZiAoIHR5cGVvZiBwYXJ0
ID09PSAic3RyaW5nIiAmJiAhck5vbldvcmQudGVzdCggcGFydCApICkgewotCQkJCXBhcnQgPSBw
YXJ0LnRvTG93ZXJDYXNlKCk7Ci0JCQkJbm9kZUNoZWNrID0gcGFydDsKLQkJCQljaGVja0ZuID0g
ZGlyTm9kZUNoZWNrOwotCQkJfQotCi0JCQljaGVja0ZuKCAicHJldmlvdXNTaWJsaW5nIiwgcGFy
dCwgZG9uZU5hbWUsIGNoZWNrU2V0LCBub2RlQ2hlY2ssIGlzWE1MICk7Ci0JCX0KLQl9LAotCi0J
ZmluZDogewotCQlJRDogZnVuY3Rpb24oIG1hdGNoLCBjb250ZXh0LCBpc1hNTCApIHsKLQkJCWlm
ICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYmICFpc1hN
TCApIHsKLQkJCQl2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQobWF0Y2hbMV0pOwotCQkJ
CS8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5z
Ci0JCQkJLy8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2Mwot
CQkJCXJldHVybiBtICYmIG0ucGFyZW50Tm9kZSA/IFttXSA6IFtdOwotCQkJfQotCQl9LAotCi0J
CU5BTUU6IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCApIHsKLQkJCWlmICggdHlwZW9mIGNvbnRl
eHQuZ2V0RWxlbWVudHNCeU5hbWUgIT09ICJ1bmRlZmluZWQiICkgewotCQkJCXZhciByZXQgPSBb
XSwKLQkJCQkJcmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUoIG1hdGNoWzFdICk7
Ci0KLQkJCQlmb3IgKCB2YXIgaSA9IDAsIGwgPSByZXN1bHRzLmxlbmd0aDsgaSA8IGw7IGkrKyAp
IHsKLQkJCQkJaWYgKCByZXN1bHRzW2ldLmdldEF0dHJpYnV0ZSgibmFtZSIpID09PSBtYXRjaFsx
XSApIHsKLQkJCQkJCXJldC5wdXNoKCByZXN1bHRzW2ldICk7Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJ
CQlyZXR1cm4gcmV0Lmxlbmd0aCA9PT0gMCA/IG51bGwgOiByZXQ7Ci0JCQl9Ci0JCX0sCi0KLQkJ
VEFHOiBmdW5jdGlvbiggbWF0Y2gsIGNvbnRleHQgKSB7Ci0JCQlpZiAoIHR5cGVvZiBjb250ZXh0
LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiApIHsKLQkJCQlyZXR1cm4gY29u
dGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggbWF0Y2hbMV0gKTsKLQkJCX0KLQkJfQotCX0sCi0J
cHJlRmlsdGVyOiB7Ci0JCUNMQVNTOiBmdW5jdGlvbiggbWF0Y2gsIGN1ckxvb3AsIGlucGxhY2Us
IHJlc3VsdCwgbm90LCBpc1hNTCApIHsKLQkJCW1hdGNoID0gIiAiICsgbWF0Y2hbMV0ucmVwbGFj
ZSggckJhY2tzbGFzaCwgIiIgKSArICIgIjsKLQotCQkJaWYgKCBpc1hNTCApIHsKLQkJCQlyZXR1
cm4gbWF0Y2g7Ci0JCQl9Ci0KLQkJCWZvciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBjdXJM
b29wW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0JCQkJaWYgKCBlbGVtICkgewotCQkJCQlpZiAoIG5v
dCBeIChlbGVtLmNsYXNzTmFtZSAmJiAoIiAiICsgZWxlbS5jbGFzc05hbWUgKyAiICIpLnJlcGxh
Y2UoL1tcdFxuXHJdL2csICIgIikuaW5kZXhPZihtYXRjaCkgPj0gMCkgKSB7Ci0JCQkJCQlpZiAo
ICFpbnBsYWNlICkgewotCQkJCQkJCXJlc3VsdC5wdXNoKCBlbGVtICk7Ci0JCQkJCQl9Ci0KLQkJ
CQkJfSBlbHNlIGlmICggaW5wbGFjZSApIHsKLQkJCQkJCWN1ckxvb3BbaV0gPSBmYWxzZTsKLQkJ
CQkJfQotCQkJCX0KLQkJCX0KLQotCQkJcmV0dXJuIGZhbHNlOwotCQl9LAotCi0JCUlEOiBmdW5j
dGlvbiggbWF0Y2ggKSB7Ci0JCQlyZXR1cm4gbWF0Y2hbMV0ucmVwbGFjZSggckJhY2tzbGFzaCwg
IiIgKTsKLQkJfSwKLQotCQlUQUc6IGZ1bmN0aW9uKCBtYXRjaCwgY3VyTG9vcCApIHsKLQkJCXJl
dHVybiBtYXRjaFsxXS5yZXBsYWNlKCByQmFja3NsYXNoLCAiIiApLnRvTG93ZXJDYXNlKCk7Ci0J
CX0sCi0KLQkJQ0hJTEQ6IGZ1bmN0aW9uKCBtYXRjaCApIHsKLQkJCWlmICggbWF0Y2hbMV0gPT09
ICJudGgiICkgewotCQkJCWlmICggIW1hdGNoWzJdICkgewotCQkJCQlTaXp6bGUuZXJyb3IoIG1h
dGNoWzBdICk7Ci0JCQkJfQotCi0JCQkJbWF0Y2hbMl0gPSBtYXRjaFsyXS5yZXBsYWNlKC9eXCt8
XHMqL2csICcnKTsKLQotCQkJCS8vIHBhcnNlIGVxdWF0aW9ucyBsaWtlICdldmVuJywgJ29kZCcs
ICc1JywgJzJuJywgJzNuKzInLCAnNG4tMScsICctbis2JwotCQkJCXZhciB0ZXN0ID0gLygtPyko
XGQqKSg/Om4oWytcLV0/XGQqKSk/Ly5leGVjKAotCQkJCQltYXRjaFsyXSA9PT0gImV2ZW4iICYm
ICIybiIgfHwgbWF0Y2hbMl0gPT09ICJvZGQiICYmICIybisxIiB8fAotCQkJCQkhL1xELy50ZXN0
KCBtYXRjaFsyXSApICYmICIwbisiICsgbWF0Y2hbMl0gfHwgbWF0Y2hbMl0pOwotCi0JCQkJLy8g
Y2FsY3VsYXRlIHRoZSBudW1iZXJzIChmaXJzdCluKyhsYXN0KSBpbmNsdWRpbmcgaWYgdGhleSBh
cmUgbmVnYXRpdmUKLQkJCQltYXRjaFsyXSA9ICh0ZXN0WzFdICsgKHRlc3RbMl0gfHwgMSkpIC0g
MDsKLQkJCQltYXRjaFszXSA9IHRlc3RbM10gLSAwOwotCQkJfQotCQkJZWxzZSBpZiAoIG1hdGNo
WzJdICkgewotCQkJCVNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTsKLQkJCX0KLQotCQkJLy8gVE9E
TzogTW92ZSB0byBub3JtYWwgY2FjaGluZyBzeXN0ZW0KLQkJCW1hdGNoWzBdID0gZG9uZSsrOwot
Ci0JCQlyZXR1cm4gbWF0Y2g7Ci0JCX0sCi0KLQkJQVRUUjogZnVuY3Rpb24oIG1hdGNoLCBjdXJM
b29wLCBpbnBsYWNlLCByZXN1bHQsIG5vdCwgaXNYTUwgKSB7Ci0JCQl2YXIgbmFtZSA9IG1hdGNo
WzFdID0gbWF0Y2hbMV0ucmVwbGFjZSggckJhY2tzbGFzaCwgIiIgKTsKLQkJCQotCQkJaWYgKCAh
aXNYTUwgJiYgRXhwci5hdHRyTWFwW25hbWVdICkgewotCQkJCW1hdGNoWzFdID0gRXhwci5hdHRy
TWFwW25hbWVdOwotCQkJfQotCi0JCQkvLyBIYW5kbGUgaWYgYW4gdW4tcXVvdGVkIHZhbHVlIHdh
cyB1c2VkCi0JCQltYXRjaFs0XSA9ICggbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiIgKS5yZXBs
YWNlKCByQmFja3NsYXNoLCAiIiApOwotCi0JCQlpZiAoIG1hdGNoWzJdID09PSAifj0iICkgewot
CQkJCW1hdGNoWzRdID0gIiAiICsgbWF0Y2hbNF0gKyAiICI7Ci0JCQl9Ci0KLQkJCXJldHVybiBt
YXRjaDsKLQkJfSwKLQotCQlQU0VVRE86IGZ1bmN0aW9uKCBtYXRjaCwgY3VyTG9vcCwgaW5wbGFj
ZSwgcmVzdWx0LCBub3QgKSB7Ci0JCQlpZiAoIG1hdGNoWzFdID09PSAibm90IiApIHsKLQkJCQkv
LyBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yIGEgc2ltcGxl
IG9uZQotCQkJCWlmICggKCBjaHVua2VyLmV4ZWMobWF0Y2hbM10pIHx8ICIiICkubGVuZ3RoID4g
MSB8fCAvXlx3Ly50ZXN0KG1hdGNoWzNdKSApIHsKLQkJCQkJbWF0Y2hbM10gPSBTaXp6bGUobWF0
Y2hbM10sIG51bGwsIG51bGwsIGN1ckxvb3ApOwotCi0JCQkJfSBlbHNlIHsKLQkJCQkJdmFyIHJl
dCA9IFNpenpsZS5maWx0ZXIobWF0Y2hbM10sIGN1ckxvb3AsIGlucGxhY2UsIHRydWUgXiBub3Qp
OwotCi0JCQkJCWlmICggIWlucGxhY2UgKSB7Ci0JCQkJCQlyZXN1bHQucHVzaC5hcHBseSggcmVz
dWx0LCByZXQgKTsKLQkJCQkJfQotCi0JCQkJCXJldHVybiBmYWxzZTsKLQkJCQl9Ci0KLQkJCX0g
ZWxzZSBpZiAoIEV4cHIubWF0Y2guUE9TLnRlc3QoIG1hdGNoWzBdICkgfHwgRXhwci5tYXRjaC5D
SElMRC50ZXN0KCBtYXRjaFswXSApICkgewotCQkJCXJldHVybiB0cnVlOwotCQkJfQotCQkJCi0J
CQlyZXR1cm4gbWF0Y2g7Ci0JCX0sCi0KLQkJUE9TOiBmdW5jdGlvbiggbWF0Y2ggKSB7Ci0JCQlt
YXRjaC51bnNoaWZ0KCB0cnVlICk7Ci0KLQkJCXJldHVybiBtYXRjaDsKLQkJfQotCX0sCi0JCi0J
ZmlsdGVyczogewotCQllbmFibGVkOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiBlbGVt
LmRpc2FibGVkID09PSBmYWxzZSAmJiBlbGVtLnR5cGUgIT09ICJoaWRkZW4iOwotCQl9LAotCi0J
CWRpc2FibGVkOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiBlbGVtLmRpc2FibGVkID09
PSB0cnVlOwotCQl9LAotCi0JCWNoZWNrZWQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJu
IGVsZW0uY2hlY2tlZCA9PT0gdHJ1ZTsKLQkJfSwKLQkJCi0JCXNlbGVjdGVkOiBmdW5jdGlvbigg
ZWxlbSApIHsKLQkJCS8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5
LWRlZmF1bHQKLQkJCS8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkKLQkJCWlmICgg
ZWxlbS5wYXJlbnROb2RlICkgewotCQkJCWVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4Owot
CQkJfQotCQkJCi0JCQlyZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKLQkJfSwKLQotCQlw
YXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICEhZWxlbS5maXJzdENoaWxkOwot
CQl9LAotCi0JCWVtcHR5OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiAhZWxlbS5maXJz
dENoaWxkOwotCQl9LAotCi0JCWhhczogZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewotCQkJ
cmV0dXJuICEhU2l6emxlKCBtYXRjaFszXSwgZWxlbSApLmxlbmd0aDsKLQkJfSwKLQotCQloZWFk
ZXI6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICgvaFxkL2kpLnRlc3QoIGVsZW0ubm9k
ZU5hbWUgKTsKLQkJfSwKLQotCQl0ZXh0OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCS8vIElFNiBh
bmQgNyB3aWxsIG1hcCBlbGVtLnR5cGUgdG8gJ3RleHQnIGZvciBuZXcgSFRNTDUgdHlwZXMgKHNl
YXJjaCwgZXRjKSAKLQkJCS8vIHVzZSBnZXRBdHRyaWJ1dGUgaW5zdGVhZCB0byB0ZXN0IHRoaXMg
Y2FzZQotCQkJcmV0dXJuICJ0ZXh0IiA9PT0gZWxlbS5nZXRBdHRyaWJ1dGUoICd0eXBlJyApOwot
CQl9LAotCQlyYWRpbzogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gInJhZGlvIiA9PT0g
ZWxlbS50eXBlOwotCQl9LAotCi0JCWNoZWNrYm94OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJl
dHVybiAiY2hlY2tib3giID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0KLQkJZmlsZTogZnVuY3Rpb24o
IGVsZW0gKSB7Ci0JCQlyZXR1cm4gImZpbGUiID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0JCXBhc3N3
b3JkOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiAicGFzc3dvcmQiID09PSBlbGVtLnR5
cGU7Ci0JCX0sCi0KLQkJc3VibWl0OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiAic3Vi
bWl0IiA9PT0gZWxlbS50eXBlOwotCQl9LAotCi0JCWltYWdlOiBmdW5jdGlvbiggZWxlbSApIHsK
LQkJCXJldHVybiAiaW1hZ2UiID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0KLQkJcmVzZXQ6IGZ1bmN0
aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICJyZXNldCIgPT09IGVsZW0udHlwZTsKLQkJfSwKLQot
CQlidXR0b246IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICJidXR0b24iID09PSBlbGVt
LnR5cGUgfHwgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiYnV0dG9uIjsKLQkJfSwK
LQotCQlpbnB1dDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gKC9pbnB1dHxzZWxlY3R8
dGV4dGFyZWF8YnV0dG9uL2kpLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTsKLQkJfQotCX0sCi0Jc2V0
RmlsdGVyczogewotCQlmaXJzdDogZnVuY3Rpb24oIGVsZW0sIGkgKSB7Ci0JCQlyZXR1cm4gaSA9
PT0gMDsKLQkJfSwKLQotCQlsYXN0OiBmdW5jdGlvbiggZWxlbSwgaSwgbWF0Y2gsIGFycmF5ICkg
ewotCQkJcmV0dXJuIGkgPT09IGFycmF5Lmxlbmd0aCAtIDE7Ci0JCX0sCi0KLQkJZXZlbjogZnVu
Y3Rpb24oIGVsZW0sIGkgKSB7Ci0JCQlyZXR1cm4gaSAlIDIgPT09IDA7Ci0JCX0sCi0KLQkJb2Rk
OiBmdW5jdGlvbiggZWxlbSwgaSApIHsKLQkJCXJldHVybiBpICUgMiA9PT0gMTsKLQkJfSwKLQot
CQlsdDogZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewotCQkJcmV0dXJuIGkgPCBtYXRjaFsz
XSAtIDA7Ci0JCX0sCi0KLQkJZ3Q6IGZ1bmN0aW9uKCBlbGVtLCBpLCBtYXRjaCApIHsKLQkJCXJl
dHVybiBpID4gbWF0Y2hbM10gLSAwOwotCQl9LAotCi0JCW50aDogZnVuY3Rpb24oIGVsZW0sIGks
IG1hdGNoICkgewotCQkJcmV0dXJuIG1hdGNoWzNdIC0gMCA9PT0gaTsKLQkJfSwKLQotCQllcTog
ZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewotCQkJcmV0dXJuIG1hdGNoWzNdIC0gMCA9PT0g
aTsKLQkJfQotCX0sCi0JZmlsdGVyOiB7Ci0JCVBTRVVETzogZnVuY3Rpb24oIGVsZW0sIG1hdGNo
LCBpLCBhcnJheSApIHsKLQkJCXZhciBuYW1lID0gbWF0Y2hbMV0sCi0JCQkJZmlsdGVyID0gRXhw
ci5maWx0ZXJzWyBuYW1lIF07Ci0KLQkJCWlmICggZmlsdGVyICkgewotCQkJCXJldHVybiBmaWx0
ZXIoIGVsZW0sIGksIG1hdGNoLCBhcnJheSApOwotCi0JCQl9IGVsc2UgaWYgKCBuYW1lID09PSAi
Y29udGFpbnMiICkgewotCQkJCXJldHVybiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVy
VGV4dCB8fCBTaXp6bGUuZ2V0VGV4dChbIGVsZW0gXSkgfHwgIiIpLmluZGV4T2YobWF0Y2hbM10p
ID49IDA7Ci0KLQkJCX0gZWxzZSBpZiAoIG5hbWUgPT09ICJub3QiICkgewotCQkJCXZhciBub3Qg
PSBtYXRjaFszXTsKLQotCQkJCWZvciAoIHZhciBqID0gMCwgbCA9IG5vdC5sZW5ndGg7IGogPCBs
OyBqKysgKSB7Ci0JCQkJCWlmICggbm90W2pdID09PSBlbGVtICkgewotCQkJCQkJcmV0dXJuIGZh
bHNlOwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJcmV0dXJuIHRydWU7Ci0KLQkJCX0gZWxzZSB7Ci0J
CQkJU2l6emxlLmVycm9yKCBuYW1lICk7Ci0JCQl9Ci0JCX0sCi0KLQkJQ0hJTEQ6IGZ1bmN0aW9u
KCBlbGVtLCBtYXRjaCApIHsKLQkJCXZhciB0eXBlID0gbWF0Y2hbMV0sCi0JCQkJbm9kZSA9IGVs
ZW07Ci0KLQkJCXN3aXRjaCAoIHR5cGUgKSB7Ci0JCQkJY2FzZSAib25seSI6Ci0JCQkJY2FzZSAi
Zmlyc3QiOgotCQkJCQl3aGlsZSAoIChub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmcpICkJIHsK
LQkJCQkJCWlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsgCi0JCQkJCQkJcmV0dXJuIGZhbHNl
OyAKLQkJCQkJCX0KLQkJCQkJfQotCi0JCQkJCWlmICggdHlwZSA9PT0gImZpcnN0IiApIHsgCi0J
CQkJCQlyZXR1cm4gdHJ1ZTsgCi0JCQkJCX0KLQotCQkJCQlub2RlID0gZWxlbTsKLQotCQkJCWNh
c2UgImxhc3QiOgotCQkJCQl3aGlsZSAoIChub2RlID0gbm9kZS5uZXh0U2libGluZykgKQkgewot
CQkJCQkJaWYgKCBub2RlLm5vZGVUeXBlID09PSAxICkgeyAKLQkJCQkJCQlyZXR1cm4gZmFsc2U7
IAotCQkJCQkJfQotCQkJCQl9Ci0KLQkJCQkJcmV0dXJuIHRydWU7Ci0KLQkJCQljYXNlICJudGgi
OgotCQkJCQl2YXIgZmlyc3QgPSBtYXRjaFsyXSwKLQkJCQkJCWxhc3QgPSBtYXRjaFszXTsKLQot
CQkJCQlpZiAoIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgKSB7Ci0JCQkJCQlyZXR1cm4gdHJ1
ZTsKLQkJCQkJfQotCQkJCQkKLQkJCQkJdmFyIGRvbmVOYW1lID0gbWF0Y2hbMF0sCi0JCQkJCQlw
YXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7Ci0JCi0JCQkJCWlmICggcGFyZW50ICYmIChwYXJlbnQu
c2l6Y2FjaGUgIT09IGRvbmVOYW1lIHx8ICFlbGVtLm5vZGVJbmRleCkgKSB7Ci0JCQkJCQl2YXIg
Y291bnQgPSAwOwotCQkJCQkJCi0JCQkJCQlmb3IgKCBub2RlID0gcGFyZW50LmZpcnN0Q2hpbGQ7
IG5vZGU7IG5vZGUgPSBub2RlLm5leHRTaWJsaW5nICkgewotCQkJCQkJCWlmICggbm9kZS5ub2Rl
VHlwZSA9PT0gMSApIHsKLQkJCQkJCQkJbm9kZS5ub2RlSW5kZXggPSArK2NvdW50OwotCQkJCQkJ
CX0KLQkJCQkJCX0gCi0KLQkJCQkJCXBhcmVudC5zaXpjYWNoZSA9IGRvbmVOYW1lOwotCQkJCQl9
Ci0JCQkJCQotCQkJCQl2YXIgZGlmZiA9IGVsZW0ubm9kZUluZGV4IC0gbGFzdDsKLQotCQkJCQlp
ZiAoIGZpcnN0ID09PSAwICkgewotCQkJCQkJcmV0dXJuIGRpZmYgPT09IDA7Ci0KLQkJCQkJfSBl
bHNlIHsKLQkJCQkJCXJldHVybiAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3Qg
Pj0gMCApOwotCQkJCQl9Ci0JCQl9Ci0JCX0sCi0KLQkJSUQ6IGZ1bmN0aW9uKCBlbGVtLCBtYXRj
aCApIHsKLQkJCXJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxICYmIGVsZW0uZ2V0QXR0cmlidXRl
KCJpZCIpID09PSBtYXRjaDsKLQkJfSwKLQotCQlUQUc6IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCAp
IHsKLQkJCXJldHVybiAobWF0Y2ggPT09ICIqIiAmJiBlbGVtLm5vZGVUeXBlID09PSAxKSB8fCBl
bGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG1hdGNoOwotCQl9LAotCQkKLQkJQ0xBU1M6
IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsKLQkJCXJldHVybiAoIiAiICsgKGVsZW0uY2xhc3NO
YW1lIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSArICIgIikKLQkJCQkuaW5kZXhPZigg
bWF0Y2ggKSA+IC0xOwotCQl9LAotCi0JCUFUVFI6IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsK
LQkJCXZhciBuYW1lID0gbWF0Y2hbMV0sCi0JCQkJcmVzdWx0ID0gRXhwci5hdHRySGFuZGxlWyBu
YW1lIF0gPwotCQkJCQlFeHByLmF0dHJIYW5kbGVbIG5hbWUgXSggZWxlbSApIDoKLQkJCQkJZWxl
bVsgbmFtZSBdICE9IG51bGwgPwotCQkJCQkJZWxlbVsgbmFtZSBdIDoKLQkJCQkJCWVsZW0uZ2V0
QXR0cmlidXRlKCBuYW1lICksCi0JCQkJdmFsdWUgPSByZXN1bHQgKyAiIiwKLQkJCQl0eXBlID0g
bWF0Y2hbMl0sCi0JCQkJY2hlY2sgPSBtYXRjaFs0XTsKLQotCQkJcmV0dXJuIHJlc3VsdCA9PSBu
dWxsID8KLQkJCQl0eXBlID09PSAiIT0iIDoKLQkJCQl0eXBlID09PSAiPSIgPwotCQkJCXZhbHVl
ID09PSBjaGVjayA6Ci0JCQkJdHlwZSA9PT0gIio9IiA/Ci0JCQkJdmFsdWUuaW5kZXhPZihjaGVj
aykgPj0gMCA6Ci0JCQkJdHlwZSA9PT0gIn49IiA/Ci0JCQkJKCIgIiArIHZhbHVlICsgIiAiKS5p
bmRleE9mKGNoZWNrKSA+PSAwIDoKLQkJCQkhY2hlY2sgPwotCQkJCXZhbHVlICYmIHJlc3VsdCAh
PT0gZmFsc2UgOgotCQkJCXR5cGUgPT09ICIhPSIgPwotCQkJCXZhbHVlICE9PSBjaGVjayA6Ci0J
CQkJdHlwZSA9PT0gIl49IiA/Ci0JCQkJdmFsdWUuaW5kZXhPZihjaGVjaykgPT09IDAgOgotCQkJ
CXR5cGUgPT09ICIkPSIgPwotCQkJCXZhbHVlLnN1YnN0cih2YWx1ZS5sZW5ndGggLSBjaGVjay5s
ZW5ndGgpID09PSBjaGVjayA6Ci0JCQkJdHlwZSA9PT0gInw9IiA/Ci0JCQkJdmFsdWUgPT09IGNo
ZWNrIHx8IHZhbHVlLnN1YnN0cigwLCBjaGVjay5sZW5ndGggKyAxKSA9PT0gY2hlY2sgKyAiLSIg
OgotCQkJCWZhbHNlOwotCQl9LAotCi0JCVBPUzogZnVuY3Rpb24oIGVsZW0sIG1hdGNoLCBpLCBh
cnJheSApIHsKLQkJCXZhciBuYW1lID0gbWF0Y2hbMl0sCi0JCQkJZmlsdGVyID0gRXhwci5zZXRG
aWx0ZXJzWyBuYW1lIF07Ci0KLQkJCWlmICggZmlsdGVyICkgewotCQkJCXJldHVybiBmaWx0ZXIo
IGVsZW0sIGksIG1hdGNoLCBhcnJheSApOwotCQkJfQotCQl9Ci0JfQotfTsKLQotdmFyIG9yaWdQ
T1MgPSBFeHByLm1hdGNoLlBPUywKLQlmZXNjYXBlID0gZnVuY3Rpb24oYWxsLCBudW0pewotCQly
ZXR1cm4gIlxcIiArIChudW0gLSAwICsgMSk7Ci0JfTsKLQotZm9yICggdmFyIHR5cGUgaW4gRXhw
ci5tYXRjaCApIHsKLQlFeHByLm1hdGNoWyB0eXBlIF0gPSBuZXcgUmVnRXhwKCBFeHByLm1hdGNo
WyB0eXBlIF0uc291cmNlICsgKC8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSkgKTsK
LQlFeHByLmxlZnRNYXRjaFsgdHlwZSBdID0gbmV3IFJlZ0V4cCggLyheKD86LnxccnxcbikqPykv
LnNvdXJjZSArIEV4cHIubWF0Y2hbIHR5cGUgXS5zb3VyY2UucmVwbGFjZSgvXFwoXGQrKS9nLCBm
ZXNjYXBlKSApOwotfQotCi12YXIgbWFrZUFycmF5ID0gZnVuY3Rpb24oIGFycmF5LCByZXN1bHRz
ICkgewotCWFycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGFycmF5LCAwICk7Ci0K
LQlpZiAoIHJlc3VsdHMgKSB7Ci0JCXJlc3VsdHMucHVzaC5hcHBseSggcmVzdWx0cywgYXJyYXkg
KTsKLQkJcmV0dXJuIHJlc3VsdHM7Ci0JfQotCQotCXJldHVybiBhcnJheTsKLX07Ci0KLS8vIFBl
cmZvcm0gYSBzaW1wbGUgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRoZSBicm93c2VyIGlzIGNhcGFi
bGUgb2YKLS8vIGNvbnZlcnRpbmcgYSBOb2RlTGlzdCB0byBhbiBhcnJheSB1c2luZyBidWlsdGlu
IG1ldGhvZHMuCi0vLyBBbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHJldHVybmVkIGFycmF5IGhvbGRz
IERPTSBub2RlcwotLy8gKHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBpbiB0aGUgQmxhY2tiZXJyeSBi
cm93c2VyKQotdHJ5IHsKLQlBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmNoaWxkTm9kZXMsIDAgKVswXS5ub2RlVHlwZTsKLQotLy8gUHJvdmlkZSBh
IGZhbGxiYWNrIG1ldGhvZCBpZiBpdCBkb2VzIG5vdCB3b3JrCi19IGNhdGNoKCBlICkgewotCW1h
a2VBcnJheSA9IGZ1bmN0aW9uKCBhcnJheSwgcmVzdWx0cyApIHsKLQkJdmFyIGkgPSAwLAotCQkJ
cmV0ID0gcmVzdWx0cyB8fCBbXTsKLQotCQlpZiAoIHRvU3RyaW5nLmNhbGwoYXJyYXkpID09PSAi
W29iamVjdCBBcnJheV0iICkgewotCQkJQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoIHJldCwg
YXJyYXkgKTsKLQotCQl9IGVsc2UgewotCQkJaWYgKCB0eXBlb2YgYXJyYXkubGVuZ3RoID09PSAi
bnVtYmVyIiApIHsKLQkJCQlmb3IgKCB2YXIgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKyAp
IHsKLQkJCQkJcmV0LnB1c2goIGFycmF5W2ldICk7Ci0JCQkJfQotCi0JCQl9IGVsc2UgewotCQkJ
CWZvciAoIDsgYXJyYXlbaV07IGkrKyApIHsKLQkJCQkJcmV0LnB1c2goIGFycmF5W2ldICk7Ci0J
CQkJfQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHJldDsKLQl9OwotfQotCi12YXIgc29ydE9yZGVy
LCBzaWJsaW5nQ2hlY2s7Ci0KLWlmICggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uICkgewotCXNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkgewotCQlp
ZiAoIGEgPT09IGIgKSB7Ci0JCQloYXNEdXBsaWNhdGUgPSB0cnVlOwotCQkJcmV0dXJuIDA7Ci0J
CX0KLQotCQlpZiAoICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIHx8ICFiLmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uICkgewotCQkJcmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPyAt
MSA6IDE7Ci0JCX0KLQotCQlyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSAmIDQg
PyAtMSA6IDE7Ci0JfTsKLQotfSBlbHNlIHsKLQlzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiAp
IHsKLQkJdmFyIGFsLCBibCwKLQkJCWFwID0gW10sCi0JCQlicCA9IFtdLAotCQkJYXVwID0gYS5w
YXJlbnROb2RlLAotCQkJYnVwID0gYi5wYXJlbnROb2RlLAotCQkJY3VyID0gYXVwOwotCi0JCS8v
IFRoZSBub2RlcyBhcmUgaWRlbnRpY2FsLCB3ZSBjYW4gZXhpdCBlYXJseQotCQlpZiAoIGEgPT09
IGIgKSB7Ci0JCQloYXNEdXBsaWNhdGUgPSB0cnVlOwotCQkJcmV0dXJuIDA7Ci0KLQkJLy8gSWYg
dGhlIG5vZGVzIGFyZSBzaWJsaW5ncyAob3IgaWRlbnRpY2FsKSB3ZSBjYW4gZG8gYSBxdWljayBj
aGVjawotCQl9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHsKLQkJCXJldHVybiBzaWJsaW5nQ2hl
Y2soIGEsIGIgKTsKLQotCQkvLyBJZiBubyBwYXJlbnRzIHdlcmUgZm91bmQgdGhlbiB0aGUgbm9k
ZXMgYXJlIGRpc2Nvbm5lY3RlZAotCQl9IGVsc2UgaWYgKCAhYXVwICkgewotCQkJcmV0dXJuIC0x
OwotCi0JCX0gZWxzZSBpZiAoICFidXAgKSB7Ci0JCQlyZXR1cm4gMTsKLQkJfQotCi0JCS8vIE90
aGVyd2lzZSB0aGV5J3JlIHNvbWV3aGVyZSBlbHNlIGluIHRoZSB0cmVlIHNvIHdlIG5lZWQKLQkJ
Ly8gdG8gYnVpbGQgdXAgYSBmdWxsIGxpc3Qgb2YgdGhlIHBhcmVudE5vZGVzIGZvciBjb21wYXJp
c29uCi0JCXdoaWxlICggY3VyICkgewotCQkJYXAudW5zaGlmdCggY3VyICk7Ci0JCQljdXIgPSBj
dXIucGFyZW50Tm9kZTsKLQkJfQotCi0JCWN1ciA9IGJ1cDsKLQotCQl3aGlsZSAoIGN1ciApIHsK
LQkJCWJwLnVuc2hpZnQoIGN1ciApOwotCQkJY3VyID0gY3VyLnBhcmVudE5vZGU7Ci0JCX0KLQot
CQlhbCA9IGFwLmxlbmd0aDsKLQkJYmwgPSBicC5sZW5ndGg7Ci0KLQkJLy8gU3RhcnQgd2Fsa2lu
ZyBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3kKLQkJZm9yICggdmFyIGkg
PSAwOyBpIDwgYWwgJiYgaSA8IGJsOyBpKysgKSB7Ci0JCQlpZiAoIGFwW2ldICE9PSBicFtpXSAp
IHsKLQkJCQlyZXR1cm4gc2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKTsKLQkJCX0KLQkJfQot
Ci0JCS8vIFdlIGVuZGVkIHNvbWVwbGFjZSB1cCB0aGUgdHJlZSBzbyBkbyBhIHNpYmxpbmcgY2hl
Y2sKLQkJcmV0dXJuIGkgPT09IGFsID8KLQkJCXNpYmxpbmdDaGVjayggYSwgYnBbaV0sIC0xICkg
OgotCQkJc2libGluZ0NoZWNrKCBhcFtpXSwgYiwgMSApOwotCX07Ci0KLQlzaWJsaW5nQ2hlY2sg
PSBmdW5jdGlvbiggYSwgYiwgcmV0ICkgewotCQlpZiAoIGEgPT09IGIgKSB7Ci0JCQlyZXR1cm4g
cmV0OwotCQl9Ci0KLQkJdmFyIGN1ciA9IGEubmV4dFNpYmxpbmc7Ci0KLQkJd2hpbGUgKCBjdXIg
KSB7Ci0JCQlpZiAoIGN1ciA9PT0gYiApIHsKLQkJCQlyZXR1cm4gLTE7Ci0JCQl9Ci0KLQkJCWN1
ciA9IGN1ci5uZXh0U2libGluZzsKLQkJfQotCi0JCXJldHVybiAxOwotCX07Ci19Ci0KLS8vIFV0
aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJlaXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkg
b2YgRE9NIG5vZGVzCi1TaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtcyApIHsKLQl2YXIg
cmV0ID0gIiIsIGVsZW07Ci0KLQlmb3IgKCB2YXIgaSA9IDA7IGVsZW1zW2ldOyBpKysgKSB7Ci0J
CWVsZW0gPSBlbGVtc1tpXTsKLQotCQkvLyBHZXQgdGhlIHRleHQgZnJvbSB0ZXh0IG5vZGVzIGFu
ZCBDREFUQSBub2RlcwotCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlw
ZSA9PT0gNCApIHsKLQkJCXJldCArPSBlbGVtLm5vZGVWYWx1ZTsKLQotCQkvLyBUcmF2ZXJzZSBl
dmVyeXRoaW5nIGVsc2UsIGV4Y2VwdCBjb21tZW50IG5vZGVzCi0JCX0gZWxzZSBpZiAoIGVsZW0u
bm9kZVR5cGUgIT09IDggKSB7Ci0JCQlyZXQgKz0gU2l6emxlLmdldFRleHQoIGVsZW0uY2hpbGRO
b2RlcyApOwotCQl9Ci0JfQotCi0JcmV0dXJuIHJldDsKLX07Ci0KLS8vIENoZWNrIHRvIHNlZSBp
ZiB0aGUgYnJvd3NlciByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUgd2hlbgotLy8gcXVlcnlpbmcg
YnkgZ2V0RWxlbWVudEJ5SWQgKGFuZCBwcm92aWRlIGEgd29ya2Fyb3VuZCkKLShmdW5jdGlvbigp
ewotCS8vIFdlJ3JlIGdvaW5nIHRvIGluamVjdCBhIGZha2UgaW5wdXQgZWxlbWVudCB3aXRoIGEg
c3BlY2lmaWVkIG5hbWUKLQl2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
LAotCQlpZCA9ICJzY3JpcHQiICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKSwKLQkJcm9vdCA9IGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudDsKLQotCWZvcm0uaW5uZXJIVE1MID0gIjxhIG5hbWU9JyIg
KyBpZCArICInLz4iOwotCi0JLy8gSW5qZWN0IGl0IGludG8gdGhlIHJvb3QgZWxlbWVudCwgY2hl
Y2sgaXRzIHN0YXR1cywgYW5kIHJlbW92ZSBpdCBxdWlja2x5Ci0Jcm9vdC5pbnNlcnRCZWZvcmUo
IGZvcm0sIHJvb3QuZmlyc3RDaGlsZCApOwotCi0JLy8gVGhlIHdvcmthcm91bmQgaGFzIHRvIGRv
IGFkZGl0aW9uYWwgY2hlY2tzIGFmdGVyIGEgZ2V0RWxlbWVudEJ5SWQKLQkvLyBXaGljaCBzbG93
cyB0aGluZ3MgZG93biBmb3Igb3RoZXIgYnJvd3NlcnMgKGhlbmNlIHRoZSBicmFuY2hpbmcpCi0J
aWYgKCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggaWQgKSApIHsKLQkJRXhwci5maW5kLklEID0g
ZnVuY3Rpb24oIG1hdGNoLCBjb250ZXh0LCBpc1hNTCApIHsKLQkJCWlmICggdHlwZW9mIGNvbnRl
eHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYmICFpc1hNTCApIHsKLQkJCQl2YXIg
bSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQobWF0Y2hbMV0pOwotCi0JCQkJcmV0dXJuIG0gPwot
CQkJCQltLmlkID09PSBtYXRjaFsxXSB8fCB0eXBlb2YgbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAi
dW5kZWZpbmVkIiAmJiBtLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlID09PSBtYXRj
aFsxXSA/Ci0JCQkJCQlbbV0gOgotCQkJCQkJdW5kZWZpbmVkIDoKLQkJCQkJW107Ci0JCQl9Ci0J
CX07Ci0KLQkJRXhwci5maWx0ZXIuSUQgPSBmdW5jdGlvbiggZWxlbSwgbWF0Y2ggKSB7Ci0JCQl2
YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09ICJ1bmRlZmluZWQiICYm
IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKLQotCQkJcmV0dXJuIGVsZW0ubm9kZVR5cGUg
PT09IDEgJiYgbm9kZSAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gbWF0Y2g7Ci0JCX07Ci0JfQotCi0J
cm9vdC5yZW1vdmVDaGlsZCggZm9ybSApOwotCi0JLy8gcmVsZWFzZSBtZW1vcnkgaW4gSUUKLQly
b290ID0gZm9ybSA9IG51bGw7Ci19KSgpOwotCi0oZnVuY3Rpb24oKXsKLQkvLyBDaGVjayB0byBz
ZWUgaWYgdGhlIGJyb3dzZXIgcmV0dXJucyBvbmx5IGVsZW1lbnRzCi0JLy8gd2hlbiBkb2luZyBn
ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpCi0KLQkvLyBDcmVhdGUgYSBmYWtlIGVsZW1lbnQKLQl2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0JZGl2LmFwcGVuZENoaWxk
KCBkb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSApOwotCi0JLy8gTWFrZSBzdXJlIG5vIGNvbW1l
bnRzIGFyZSBmb3VuZAotCWlmICggZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3Ro
ID4gMCApIHsKLQkJRXhwci5maW5kLlRBRyA9IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCApIHsK
LQkJCXZhciByZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggbWF0Y2hbMV0g
KTsKLQotCQkJLy8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50cwotCQkJaWYgKCBtYXRjaFsx
XSA9PT0gIioiICkgewotCQkJCXZhciB0bXAgPSBbXTsKLQotCQkJCWZvciAoIHZhciBpID0gMDsg
cmVzdWx0c1tpXTsgaSsrICkgewotCQkJCQlpZiAoIHJlc3VsdHNbaV0ubm9kZVR5cGUgPT09IDEg
KSB7Ci0JCQkJCQl0bXAucHVzaCggcmVzdWx0c1tpXSApOwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJ
cmVzdWx0cyA9IHRtcDsKLQkJCX0KLQotCQkJcmV0dXJuIHJlc3VsdHM7Ci0JCX07Ci0JfQotCi0J
Ly8gQ2hlY2sgdG8gc2VlIGlmIGFuIGF0dHJpYnV0ZSByZXR1cm5zIG5vcm1hbGl6ZWQgaHJlZiBh
dHRyaWJ1dGVzCi0JZGl2LmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKLQotCWlmICgg
ZGl2LmZpcnN0Q2hpbGQgJiYgdHlwZW9mIGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSAhPT0g
InVuZGVmaW5lZCIgJiYKLQkJCWRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpICE9
PSAiIyIgKSB7Ci0KLQkJRXhwci5hdHRySGFuZGxlLmhyZWYgPSBmdW5jdGlvbiggZWxlbSApIHsK
LQkJCXJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggImhyZWYiLCAyICk7Ci0JCX07Ci0JfQotCi0J
Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUUKLQlkaXYgPSBudWxsOwotfSkoKTsKLQotaWYgKCBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsICkgewotCShmdW5jdGlvbigpewotCQl2YXIgb2xkU2l6emxl
ID0gU2l6emxlLAotCQkJZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksCi0JCQlp
ZCA9ICJfX3NpenpsZV9fIjsKLQotCQlkaXYuaW5uZXJIVE1MID0gIjxwIGNsYXNzPSdURVNUJz48
L3A+IjsKLQotCQkvLyBTYWZhcmkgY2FuJ3QgaGFuZGxlIHVwcGVyY2FzZSBvciB1bmljb2RlIGNo
YXJhY3RlcnMgd2hlbgotCQkvLyBpbiBxdWlya3MgbW9kZS4KLQkJaWYgKCBkaXYucXVlcnlTZWxl
Y3RvckFsbCAmJiBkaXYucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGggPT09IDAgKSB7
Ci0JCQlyZXR1cm47Ci0JCX0KLQkKLQkJU2l6emxlID0gZnVuY3Rpb24oIHF1ZXJ5LCBjb250ZXh0
LCBleHRyYSwgc2VlZCApIHsKLQkJCWNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwotCi0J
CQkvLyBPbmx5IHVzZSBxdWVyeVNlbGVjdG9yQWxsIG9uIG5vbi1YTUwgZG9jdW1lbnRzCi0JCQkv
LyAoSUQgc2VsZWN0b3JzIGRvbid0IHdvcmsgaW4gbm9uLUhUTUwgZG9jdW1lbnRzKQotCQkJaWYg
KCAhc2VlZCAmJiAhU2l6emxlLmlzWE1MKGNvbnRleHQpICkgewotCQkJCS8vIFNlZSBpZiB3ZSBm
aW5kIGEgc2VsZWN0b3IgdG8gc3BlZWQgdXAKLQkJCQl2YXIgbWF0Y2ggPSAvXihcdyskKXxeXC4o
W1x3XC1dKyQpfF4jKFtcd1wtXSskKS8uZXhlYyggcXVlcnkgKTsKLQkJCQkKLQkJCQlpZiAoIG1h
dGNoICYmIChjb250ZXh0Lm5vZGVUeXBlID09PSAxIHx8IGNvbnRleHQubm9kZVR5cGUgPT09IDkp
ICkgewotCQkJCQkvLyBTcGVlZC11cDogU2l6emxlKCJUQUciKQotCQkJCQlpZiAoIG1hdGNoWzFd
ICkgewotCQkJCQkJcmV0dXJuIG1ha2VBcnJheSggY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSggcXVlcnkgKSwgZXh0cmEgKTsKLQkJCQkJCi0JCQkJCS8vIFNwZWVkLXVwOiBTaXp6bGUoIi5D
TEFTUyIpCi0JCQkJCX0gZWxzZSBpZiAoIG1hdGNoWzJdICYmIEV4cHIuZmluZC5DTEFTUyAmJiBj
b250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7Ci0JCQkJCQlyZXR1cm4gbWFrZUFycmF5
KCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG1hdGNoWzJdICksIGV4dHJhICk7Ci0J
CQkJCX0KLQkJCQl9Ci0JCQkJCi0JCQkJaWYgKCBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICkgewot
CQkJCQkvLyBTcGVlZC11cDogU2l6emxlKCJib2R5IikKLQkJCQkJLy8gVGhlIGJvZHkgZWxlbWVu
dCBvbmx5IGV4aXN0cyBvbmNlLCBvcHRpbWl6ZSBmaW5kaW5nIGl0Ci0JCQkJCWlmICggcXVlcnkg
PT09ICJib2R5IiAmJiBjb250ZXh0LmJvZHkgKSB7Ci0JCQkJCQlyZXR1cm4gbWFrZUFycmF5KCBb
IGNvbnRleHQuYm9keSBdLCBleHRyYSApOwotCQkJCQkJCi0JCQkJCS8vIFNwZWVkLXVwOiBTaXp6
bGUoIiNJRCIpCi0JCQkJCX0gZWxzZSBpZiAoIG1hdGNoICYmIG1hdGNoWzNdICkgewotCQkJCQkJ
dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtYXRjaFszXSApOwotCi0JCQkJCQkv
LyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwot
CQkJCQkJLy8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2Mwot
CQkJCQkJaWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHsKLQkJCQkJCQkvLyBIYW5kbGUg
dGhlIGNhc2Ugd2hlcmUgSUUgYW5kIE9wZXJhIHJldHVybiBpdGVtcwotCQkJCQkJCS8vIGJ5IG5h
bWUgaW5zdGVhZCBvZiBJRAotCQkJCQkJCWlmICggZWxlbS5pZCA9PT0gbWF0Y2hbM10gKSB7Ci0J
CQkJCQkJCXJldHVybiBtYWtlQXJyYXkoIFsgZWxlbSBdLCBleHRyYSApOwotCQkJCQkJCX0KLQkJ
CQkJCQkKLQkJCQkJCX0gZWxzZSB7Ci0JCQkJCQkJcmV0dXJuIG1ha2VBcnJheSggW10sIGV4dHJh
ICk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQkJCi0JCQkJCXRyeSB7Ci0JCQkJCQlyZXR1cm4gbWFr
ZUFycmF5KCBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwocXVlcnkpLCBleHRyYSApOwotCQkJCQl9
IGNhdGNoKHFzYUVycm9yKSB7fQotCi0JCQkJLy8gcVNBIHdvcmtzIHN0cmFuZ2VseSBvbiBFbGVt
ZW50LXJvb3RlZCBxdWVyaWVzCi0JCQkJLy8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgc3Bl
Y2lmeWluZyBhbiBleHRyYSBJRCBvbiB0aGUgcm9vdAotCQkJCS8vIGFuZCB3b3JraW5nIHVwIGZy
b20gdGhlcmUgKFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGUgdGVjaG5pcXVlKQotCQkJ
CS8vIElFIDggZG9lc24ndCB3b3JrIG9uIG9iamVjdCBlbGVtZW50cwotCQkJCX0gZWxzZSBpZiAo
IGNvbnRleHQubm9kZVR5cGUgPT09IDEgJiYgY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
ICE9PSAib2JqZWN0IiApIHsKLQkJCQkJdmFyIG9sZENvbnRleHQgPSBjb250ZXh0LAotCQkJCQkJ
b2xkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoICJpZCIgKSwKLQkJCQkJCW5pZCA9IG9sZCB8fCBp
ZCwKLQkJCQkJCWhhc1BhcmVudCA9IGNvbnRleHQucGFyZW50Tm9kZSwKLQkJCQkJCXJlbGF0aXZl
SGllcmFyY2h5U2VsZWN0b3IgPSAvXlxzKlsrfl0vLnRlc3QoIHF1ZXJ5ICk7Ci0KLQkJCQkJaWYg
KCAhb2xkICkgewotCQkJCQkJY29udGV4dC5zZXRBdHRyaWJ1dGUoICJpZCIsIG5pZCApOwotCQkJ
CQl9IGVsc2UgewotCQkJCQkJbmlkID0gbmlkLnJlcGxhY2UoIC8nL2csICJcXCQmIiApOwotCQkJ
CQl9Ci0JCQkJCWlmICggcmVsYXRpdmVIaWVyYXJjaHlTZWxlY3RvciAmJiBoYXNQYXJlbnQgKSB7
Ci0JCQkJCQljb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlOwotCQkJCQl9Ci0KLQkJCQkJdHJ5
IHsKLQkJCQkJCWlmICggIXJlbGF0aXZlSGllcmFyY2h5U2VsZWN0b3IgfHwgaGFzUGFyZW50ICkg
ewotCQkJCQkJCXJldHVybiBtYWtlQXJyYXkoIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggIltp
ZD0nIiArIG5pZCArICInXSAiICsgcXVlcnkgKSwgZXh0cmEgKTsKLQkJCQkJCX0KLQotCQkJCQl9
IGNhdGNoKHBzZXVkb0Vycm9yKSB7Ci0JCQkJCX0gZmluYWxseSB7Ci0JCQkJCQlpZiAoICFvbGQg
KSB7Ci0JCQkJCQkJb2xkQ29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoICJpZCIgKTsKLQkJCQkJCX0K
LQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCi0JCQlyZXR1cm4gb2xkU2l6emxlKHF1ZXJ5LCBjb250
ZXh0LCBleHRyYSwgc2VlZCk7Ci0JCX07Ci0KLQkJZm9yICggdmFyIHByb3AgaW4gb2xkU2l6emxl
ICkgewotCQkJU2l6emxlWyBwcm9wIF0gPSBvbGRTaXp6bGVbIHByb3AgXTsKLQkJfQotCi0JCS8v
IHJlbGVhc2UgbWVtb3J5IGluIElFCi0JCWRpdiA9IG51bGw7Ci0JfSkoKTsKLX0KLQotKGZ1bmN0
aW9uKCl7Ci0JdmFyIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCi0JCW1hdGNoZXMg
PSBodG1sLm1hdGNoZXNTZWxlY3RvciB8fCBodG1sLm1vek1hdGNoZXNTZWxlY3RvciB8fCBodG1s
LndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBodG1sLm1zTWF0Y2hlc1NlbGVjdG9yLAotCQlwc2V1
ZG9Xb3JrcyA9IGZhbHNlOwotCi0JdHJ5IHsKLQkJLy8gVGhpcyBzaG91bGQgZmFpbCB3aXRoIGFu
IGV4Y2VwdGlvbgotCQkvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0dXJucyBmYWxzZSBpbnN0
ZWFkCi0JCW1hdGNoZXMuY2FsbCggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAiW3Rlc3QhPScn
XTpzaXp6bGUiICk7Ci0JCi0JfSBjYXRjaCggcHNldWRvRXJyb3IgKSB7Ci0JCXBzZXVkb1dvcmtz
ID0gdHJ1ZTsKLQl9Ci0KLQlpZiAoIG1hdGNoZXMgKSB7Ci0JCVNpenpsZS5tYXRjaGVzU2VsZWN0
b3IgPSBmdW5jdGlvbiggbm9kZSwgZXhwciApIHsKLQkJCS8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJp
YnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAotCQkJZXhwciA9IGV4cHIucmVwbGFjZSgvXD1ccyoo
W14nIlxdXSopXHMqXF0vZywgIj0nJDEnXSIpOwotCi0JCQlpZiAoICFTaXp6bGUuaXNYTUwoIG5v
ZGUgKSApIHsKLQkJCQl0cnkgeyAKLQkJCQkJaWYgKCBwc2V1ZG9Xb3JrcyB8fCAhRXhwci5tYXRj
aC5QU0VVRE8udGVzdCggZXhwciApICYmICEvIT0vLnRlc3QoIGV4cHIgKSApIHsKLQkJCQkJCXJl
dHVybiBtYXRjaGVzLmNhbGwoIG5vZGUsIGV4cHIgKTsKLQkJCQkJfQotCQkJCX0gY2F0Y2goZSkg
e30KLQkJCX0KLQotCQkJcmV0dXJuIFNpenpsZShleHByLCBudWxsLCBudWxsLCBbbm9kZV0pLmxl
bmd0aCA+IDA7Ci0JCX07Ci0JfQotfSkoKTsKLQotKGZ1bmN0aW9uKCl7Ci0JdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0JZGl2LmlubmVySFRNTCA9ICI8ZGl2IGNs
YXNzPSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7Ci0KLQkvLyBPcGVy
YSBjYW4ndCBmaW5kIGEgc2Vjb25kIGNsYXNzbmFtZSAoaW4gOS42KQotCS8vIEFsc28sIG1ha2Ug
c3VyZSB0aGF0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUgYWN0dWFsbHkgZXhpc3RzCi0JaWYgKCAh
ZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgfHwgZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
ImUiKS5sZW5ndGggPT09IDAgKSB7Ci0JCXJldHVybjsKLQl9Ci0KLQkvLyBTYWZhcmkgY2FjaGVz
IGNsYXNzIGF0dHJpYnV0ZXMsIGRvZXNuJ3QgY2F0Y2ggY2hhbmdlcyAoaW4gMy4yKQotCWRpdi5s
YXN0Q2hpbGQuY2xhc3NOYW1lID0gImUiOwotCi0JaWYgKCBkaXYuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgiZSIpLmxlbmd0aCA9PT0gMSApIHsKLQkJcmV0dXJuOwotCX0KLQkKLQlFeHByLm9yZGVy
LnNwbGljZSgxLCAwLCAiQ0xBU1MiKTsKLQlFeHByLmZpbmQuQ0xBU1MgPSBmdW5jdGlvbiggbWF0
Y2gsIGNvbnRleHQsIGlzWE1MICkgewotCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUgIT09ICJ1bmRlZmluZWQiICYmICFpc1hNTCApIHsKLQkJCXJldHVybiBjb250
ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobWF0Y2hbMV0pOwotCQl9Ci0JfTsKLQotCS8vIHJl
bGVhc2UgbWVtb3J5IGluIElFCi0JZGl2ID0gbnVsbDsKLX0pKCk7Ci0KLWZ1bmN0aW9uIGRpck5v
ZGVDaGVjayggZGlyLCBjdXIsIGRvbmVOYW1lLCBjaGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCAp
IHsKLQlmb3IgKCB2YXIgaSA9IDAsIGwgPSBjaGVja1NldC5sZW5ndGg7IGkgPCBsOyBpKysgKSB7
Ci0JCXZhciBlbGVtID0gY2hlY2tTZXRbaV07Ci0KLQkJaWYgKCBlbGVtICkgewotCQkJdmFyIG1h
dGNoID0gZmFsc2U7Ci0KLQkJCWVsZW0gPSBlbGVtW2Rpcl07Ci0KLQkJCXdoaWxlICggZWxlbSAp
IHsKLQkJCQlpZiAoIGVsZW0uc2l6Y2FjaGUgPT09IGRvbmVOYW1lICkgewotCQkJCQltYXRjaCA9
IGNoZWNrU2V0W2VsZW0uc2l6c2V0XTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCi0JCQkJaWYgKCBl
bGVtLm5vZGVUeXBlID09PSAxICYmICFpc1hNTCApewotCQkJCQllbGVtLnNpemNhY2hlID0gZG9u
ZU5hbWU7Ci0JCQkJCWVsZW0uc2l6c2V0ID0gaTsKLQkJCQl9Ci0KLQkJCQlpZiAoIGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gY3VyICkgewotCQkJCQltYXRjaCA9IGVsZW07Ci0JCQkJ
CWJyZWFrOwotCQkJCX0KLQotCQkJCWVsZW0gPSBlbGVtW2Rpcl07Ci0JCQl9Ci0KLQkJCWNoZWNr
U2V0W2ldID0gbWF0Y2g7Ci0JCX0KLQl9Ci19Ci0KLWZ1bmN0aW9uIGRpckNoZWNrKCBkaXIsIGN1
ciwgZG9uZU5hbWUsIGNoZWNrU2V0LCBub2RlQ2hlY2ssIGlzWE1MICkgewotCWZvciAoIHZhciBp
ID0gMCwgbCA9IGNoZWNrU2V0Lmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLQkJdmFyIGVsZW0gPSBj
aGVja1NldFtpXTsKLQotCQlpZiAoIGVsZW0gKSB7Ci0JCQl2YXIgbWF0Y2ggPSBmYWxzZTsKLQkJ
CQotCQkJZWxlbSA9IGVsZW1bZGlyXTsKLQotCQkJd2hpbGUgKCBlbGVtICkgewotCQkJCWlmICgg
ZWxlbS5zaXpjYWNoZSA9PT0gZG9uZU5hbWUgKSB7Ci0JCQkJCW1hdGNoID0gY2hlY2tTZXRbZWxl
bS5zaXpzZXRdOwotCQkJCQlicmVhazsKLQkJCQl9Ci0KLQkJCQlpZiAoIGVsZW0ubm9kZVR5cGUg
PT09IDEgKSB7Ci0JCQkJCWlmICggIWlzWE1MICkgewotCQkJCQkJZWxlbS5zaXpjYWNoZSA9IGRv
bmVOYW1lOwotCQkJCQkJZWxlbS5zaXpzZXQgPSBpOwotCQkJCQl9Ci0KLQkJCQkJaWYgKCB0eXBl
b2YgY3VyICE9PSAic3RyaW5nIiApIHsKLQkJCQkJCWlmICggZWxlbSA9PT0gY3VyICkgewotCQkJ
CQkJCW1hdGNoID0gdHJ1ZTsKLQkJCQkJCQlicmVhazsKLQkJCQkJCX0KLQotCQkJCQl9IGVsc2Ug
aWYgKCBTaXp6bGUuZmlsdGVyKCBjdXIsIFtlbGVtXSApLmxlbmd0aCA+IDAgKSB7Ci0JCQkJCQlt
YXRjaCA9IGVsZW07Ci0JCQkJCQlicmVhazsKLQkJCQkJfQotCQkJCX0KLQotCQkJCWVsZW0gPSBl
bGVtW2Rpcl07Ci0JCQl9Ci0KLQkJCWNoZWNrU2V0W2ldID0gbWF0Y2g7Ci0JCX0KLQl9Ci19Ci0K
LWlmICggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zICkgewotCVNpenpsZS5jb250
YWlucyA9IGZ1bmN0aW9uKCBhLCBiICkgewotCQlyZXR1cm4gYSAhPT0gYiAmJiAoYS5jb250YWlu
cyA/IGEuY29udGFpbnMoYikgOiB0cnVlKTsKLQl9OwotCi19IGVsc2UgaWYgKCBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24gKSB7Ci0JU2l6emxlLmNvbnRh
aW5zID0gZnVuY3Rpb24oIGEsIGIgKSB7Ci0JCXJldHVybiAhIShhLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKGIpICYgMTYpOwotCX07Ci0KLX0gZWxzZSB7Ci0JU2l6emxlLmNvbnRhaW5zID0gZnVu
Y3Rpb24oKSB7Ci0JCXJldHVybiBmYWxzZTsKLQl9OwotfQotCi1TaXp6bGUuaXNYTUwgPSBmdW5j
dGlvbiggZWxlbSApIHsKLQkvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2Vz
IHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0Ci0JLy8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVz
IGluIElFIC0gIzQ4MzMpIAotCXZhciBkb2N1bWVudEVsZW1lbnQgPSAoZWxlbSA/IGVsZW0ub3du
ZXJEb2N1bWVudCB8fCBlbGVtIDogMCkuZG9jdW1lbnRFbGVtZW50OwotCi0JcmV0dXJuIGRvY3Vt
ZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gIkhUTUwiIDogZmFsc2U7
Ci19OwotCi12YXIgcG9zUHJvY2VzcyA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHsK
LQl2YXIgbWF0Y2gsCi0JCXRtcFNldCA9IFtdLAotCQlsYXRlciA9ICIiLAotCQlyb290ID0gY29u
dGV4dC5ub2RlVHlwZSA/IFtjb250ZXh0XSA6IGNvbnRleHQ7Ci0KLQkvLyBQb3NpdGlvbiBzZWxl
Y3RvcnMgbXVzdCBiZSBkb25lIGFmdGVyIHRoZSBmaWx0ZXIKLQkvLyBBbmQgc28gbXVzdCA6bm90
KHBvc2l0aW9uYWwpIHNvIHdlIG1vdmUgYWxsIFBTRVVET3MgdG8gdGhlIGVuZAotCXdoaWxlICgg
KG1hdGNoID0gRXhwci5tYXRjaC5QU0VVRE8uZXhlYyggc2VsZWN0b3IgKSkgKSB7Ci0JCWxhdGVy
ICs9IG1hdGNoWzBdOwotCQlzZWxlY3RvciA9IHNlbGVjdG9yLnJlcGxhY2UoIEV4cHIubWF0Y2gu
UFNFVURPLCAiIiApOwotCX0KLQotCXNlbGVjdG9yID0gRXhwci5yZWxhdGl2ZVtzZWxlY3Rvcl0g
PyBzZWxlY3RvciArICIqIiA6IHNlbGVjdG9yOwotCi0JZm9yICggdmFyIGkgPSAwLCBsID0gcm9v
dC5sZW5ndGg7IGkgPCBsOyBpKysgKSB7Ci0JCVNpenpsZSggc2VsZWN0b3IsIHJvb3RbaV0sIHRt
cFNldCApOwotCX0KLQotCXJldHVybiBTaXp6bGUuZmlsdGVyKCBsYXRlciwgdG1wU2V0ICk7Ci19
OwotCi0vLyBFWFBPU0UKLWpRdWVyeS5maW5kID0gU2l6emxlOwotalF1ZXJ5LmV4cHIgPSBTaXp6
bGUuc2VsZWN0b3JzOwotalF1ZXJ5LmV4cHJbIjoiXSA9IGpRdWVyeS5leHByLmZpbHRlcnM7Ci1q
UXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7Ci1qUXVlcnkudGV4dCA9IFNpenpsZS5n
ZXRUZXh0OwotalF1ZXJ5LmlzWE1MRG9jID0gU2l6emxlLmlzWE1MOwotalF1ZXJ5LmNvbnRhaW5z
ID0gU2l6emxlLmNvbnRhaW5zOwotCi0KLX0pKCk7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3NyYy9zZWxlY3Rvci5qcwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAsMCAjIwoteWVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9jc3AucGhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9jc3AucGhw
CShyZXZpc2lvbiAyNzc4MzIpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3Qv
Y3NwLnBocAkobm9uZXhpc3RlbnQpCkBAIC0xLDMxICswLDAgQEAKLTw/cGhwIGhlYWRlcigiWC1D
b250ZW50LVNlY3VyaXR5LVBvbGljeS1SZXBvcnQtT25seTogYWxsb3cgKiIpOyA/PgotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KLQk8dGl0bGU+Q1NQIFRl
c3QgUGFnZTwvdGl0bGU+Ci0KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9jb3JlLmpzIj48L3Njcmlw
dD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9kZWZlcnJlZC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3Jp
cHQgc3JjPSIuLi9zcmMvc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9z
cmMvZGF0YS5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9zcmMvcXVldWUuanMiPjwv
c2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2F0dHJpYnV0ZXMuanMiPjwvc2NyaXB0Pgot
ICA8c2NyaXB0IHNyYz0iLi4vc3JjL2V2ZW50LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9
Ii4uL3NyYy9zaXp6bGUvc2l6emxlLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3Ny
Yy9zaXp6bGUtanF1ZXJ5LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy90cmF2
ZXJzaW5nLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9tYW5pcHVsYXRpb24u
anMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2Nzcy5qcyI+PC9zY3JpcHQ+Ci0g
IDxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIu
Li9zcmMvYWpheC9qc29ucC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9zcmMvYWph
eC9zY3JpcHQuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2FqYXgveGhyLmpz
Ij48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9lZmZlY3RzLmpzIj48L3NjcmlwdD4K
LSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9vZmZzZXQuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNy
Yz0iLi4vc3JjL2RpbWVuc2lvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0JPHA+
Q1NQIFRlc3QgUGFnZTwvcD4KLTwvYm9keT4KLTwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9jc3AucGhwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogYWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RlbGVn
YXRldGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMv
dGVzdC9kZWxlZ2F0ZXRlc3QuaHRtbAkocmV2aXNpb24gMjc3ODMyKQorKysgTGF5b3V0VGVzdHMv
anF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RlbGVnYXRldGVzdC5odG1sCShub25leGlzdGVudCkKQEAg
LTEsMjc1ICswLDAgQEAKLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8c2NyaXB0IHNyYz0n
Li4vZGlzdC9qcXVlcnkuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+Ci0gICAg
ICAgIDxzdHlsZT4KLQkucmVkIHsKLQkgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwotCSAgICBi
b3JkZXI6IHNvbGlkIDNweCByZWQ7Ci0JfQotICAgICAgICA8L3N0eWxlPgotICAgIDwvaGVhZD4K
LSAgICA8Ym9keT4KLSAgICAgICAgPGgyPkNoYW5nZSBUZXN0czwvaDI+Ci0gICAgICAgIDx0YWJs
ZT4KLQkJCTx0cj4KLQkJCQk8dGQ+Ci0JCQkJCUNoYW5nZSBlYWNoOgotCQkJCTwvdGQ+Ci0JCQkJ
PHRkPgotCQkJCQk8c2VsZWN0IGNsYXNzPSdzZWxlY3RfdGVzdCc+Ci0JCQkJCQk8b3B0aW9uIHZh
bHVlPSdvbmUnPmNoYW5nZSBtZSAxPC9vcHRpb24+Ci0JCQkJCQk8b3B0aW9uIHZhbHVlPSd0d28n
PmNoYW5nZSBtZSAyPC9vcHRpb24+Ci0JCQkJCQk8b3B0aW9uIHZhbHVlPSd0aHJlZSc+Y2hhbmdl
IG1lIDM8L29wdGlvbj4KLQkJCQkJPC9zZWxlY3Q+Ci0JCQkJCTxzZWxlY3QgY2xhc3M9J3NlbGVj
dF90ZXN0Jz4KLQkJCQkJCTxvcHRpb24gdmFsdWU9J29uZSc+Y2hhbmdlIG1lIDE8L29wdGlvbj4K
LQkJCQkJCTxvcHRpb24gdmFsdWU9J3R3bycgc2VsZWN0ZWQ9InNlbGVjdGVkIj5jaGFuZ2UgbWUg
Mjwvb3B0aW9uPgotCQkJCQkJPG9wdGlvbiB2YWx1ZT0ndGhyZWUnPmNoYW5nZSBtZSAzPC9vcHRp
b24+Ci0JCQkJCTwvc2VsZWN0PgotCQkJCTwvdGQ+Ci0JCQkJPHRkPgotCQkJCQk8c2VsZWN0IGNs
YXNzPSdtc2VsZWN0X3Rlc3QnIG11bHRpcGxlPSJtdWx0aXBsZSI+Ci0JCQkJCQk8b3B0aW9uIHZh
bHVlPSdvbmUnPmNoYW5nZSBtZSAxPC9vcHRpb24+Ci0JCQkJCQk8b3B0aW9uIHZhbHVlPSd0d28n
PmNoYW5nZSBtZSAyPC9vcHRpb24+Ci0JCQkJCQk8b3B0aW9uIHZhbHVlPSd0aHJlZSc+Y2hhbmdl
IG1lIDM8L29wdGlvbj4KLQkJCQkJPC9zZWxlY3Q+Ci0JCQkJPC90ZD4KLQkJCQk8dGQ+Ci0JCQkJ
CTxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImNoZWNrYm94X3Rlc3QiIG5hbWU9Im15Y2hl
Y2tib3giIGlkPSJjaGVja2JveDEiLz4KLQkJCQkJPGxhYmVsIGZvcj0iY2hlY2tib3gxIj5DaGVj
a2JveCAxPC9sYWJlbD48YnIvPgotCQkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJj
aGVja2JveF90ZXN0IiBuYW1lPSJteWNoZWNrYm94IiBpZD0iY2hlY2tib3gyIi8+Ci0JCQkJCTxs
YWJlbCBmb3I9ImNoZWNrYm94MiI+Q2hlY2tib3ggMjwvbGFiZWw+PGJyIC8+Ci0JCQkJCTxpbnB1
dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImNoZWNrYm94X3Rlc3QiIG5hbWU9Im15Y2hlY2tib3gi
IGlkPSJjaGVja2JveDMiIGRpc2FibGVkPSJkaXNhYmxlZCIvPgotCQkJCQk8bGFiZWwgZm9yPSJj
aGVja2JveDMiPkNoZWNrYm94IDM8L2xhYmVsPgotCQkJCTwvdGQ+Ci0JCQkJPHRkPgotCQkJCQk8
YnV0dG9uIGNsYXNzPSJidXR0b25fdGVzdCIgbmFtZT0ibXlidXR0b24xIiBpZD0iYnV0dG9uMSI+
QnV0dG9uPC9idXR0b24+PGJyIC8+Ci0JCQkJCTxidXR0b24gY2xhc3M9ImJ1dHRvbl90ZXN0IiBu
YW1lPSJteWJ1dHRvbjEiIGlkPSJidXR0b24xIj48c3Bhbj5CdXR0b24gdy8gY2hpbGQ8L3NwYW4+
PC9idXR0b24+PGJyIC8+Ci0JCQkJCTxidXR0b24gY2xhc3M9ImJ1dHRvbl90ZXN0IiBuYW1lPSJt
eWJ1dHRvbjEiIGlkPSJidXR0b24xIiBkaXNhYmxlZD0iZGlzYWJsZWQiPkJ1dHRvbiBEaXNhYmxl
ZDwvYnV0dG9uPjxiciAvPgotCQkJCQk8YnV0dG9uIGNsYXNzPSJidXR0b25fdGVzdCIgbmFtZT0i
bXlidXR0b24xIiBpZD0iYnV0dG9uMSIgZGlzYWJsZWQ9ImRpc2FibGVkIj48c3BhbiBkaXNhYmxl
ZD0iZGlzYWJsZWQiPkJ1dHRvbiB3LyBjaGlsZCBEaXMuPC9zcGFuPjwvYnV0dG9uPjxiciAvPgot
CQkJCTwvdGQ+Ci0JCQkJPHRkPgotCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNzPSJyYWRp
b190ZXN0IiBuYW1lPSJteXJhZGlvIiBpZD0icmFkaW8xIi8+Ci0JCQkJCTxsYWJlbCBmb3I9InJh
ZGlvMSI+UmFkaW8xPC9sYWJlbD48YnIvPgotCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNz
PSJyYWRpb190ZXN0IiBuYW1lPSJteXJhZGlvIiBpZD0icmFkaW8yIi8+Ci0JCQkJCTxsYWJlbCBm
b3I9InJhZGlvMiI+UmFkaW8yPC9sYWJlbD48YnIgLz4KLQkJCQkJPGlucHV0IHR5cGU9InJhZGlv
IiBjbGFzcz0icmFkaW9fdGVzdCIgbmFtZT0ibXlyYWRpbyIgaWQ9InJhZGlvMyIgZGlzYWJsZWQ9
ImRpc2FibGVkIi8+Ci0JCQkJCTxsYWJlbCBmb3I9InJhZGlvMyI+UmFkaW8zPC9sYWJlbD4KLQkJ
CQk8L3RkPgotCQkJCTx0ZD4KLQkJCQkJPGlucHV0IGNsYXNzPSJmaWxlX3Rlc3QiIGlkPSJmaWxl
MSIgdHlwZT0iZmlsZSIvPgotCQkJCQk8dGQ+Ci0JCQkJCQk8aW5wdXQgY2xhc3M9J3Rlc3QnIHZh
bHVlPScnIGlkPSdpbnB1dCcgc2l6ZT0nMTAnIC8+Ci0JCQkJCQk8aW5wdXQgY2xhc3M9J3Rlc3Qn
IHZhbHVlPSd0ZXN0JyBpZD0naW5wdXQyJyBzaXplPScxMCcgcmVhZG9ubHk9InJlYWRvbmx5IiAv
PgotCQkJCQk8L3RkPgotCQkJCQk8dGQ+Ci0JCQkJCQk8dGV4dGFyZWEgcm93cz0nMic+PC90ZXh0
YXJlYT4KLQkJCQkJPC90ZD4KLQkJCQk8L3RkPgotCQkJCTx0ZD4kKGRvY3VtZW50KS5iaW5kKCdj
aGFuZ2UnKTxiciAvPgotCQkJCQkkKGRvY3VtZW50KS5iaW5kKCdjbGljaycpCi0JCQkJPC90ZD4K
LQkJPC90cj4KLQkgICAgPHRyPgotCSAgICAgICAgPHRkPkxpdmU6PC90ZD4KLQkgICAgICAgIDx0
ZCBpZD0nc2VsZWN0JyBjbGFzcz0icmVkIj5TRUxFQ1Q8L3RkPgotCSAgICAgICAgPHRkIGlkPSdt
c2VsZWN0JyBjbGFzcz0icmVkIj5NVUxUSTwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J2NoZWNrYm94
JyBjbGFzcz0icmVkIj5DSEVDS0JPWDwvdGQ+Ci0JCQk8dGQgaWQ9J2J1dHRvbicgY2xhc3M9InJl
ZCI+QlVUVE9OPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0ncmFkaW8nIGNsYXNzPSJyZWQiPlJBRElP
PC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nZmlsZScgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0JICAg
ICAgICA8dGQgaWQ9J3RleHQnIGNsYXNzPSJyZWQiPlRFWFQ8L3RkPgotCSAgICAgICAgPHRkIGlk
PSd0ZXh0YXJlYScgY2xhc3M9InJlZCI+VEVYVEFSRUE8L3RkPgotCSAgICAgICAgPHRkIGlkPSdi
b3VuZENoYW5nZScgY2xhc3M9InJlZCI+RE9DVU1FTlQ8L3RkPgotCSAgICA8L3RyPgotCSAgICA8
dHI+Ci0JICAgICAgICA8dGQ+QmluZDo8L3RkPgotCSAgICAgICAgPHRkIGlkPSdzZWxlY3RiaW5k
JyBjbGFzcz0icmVkIj5TRUxFQ1Q8L3RkPgotCSAgICAgICAgPHRkIGlkPSdtc2VsZWN0YmluZCcg
Y2xhc3M9InJlZCI+TVVMVEk8L3RkPgotCSAgICAgICAgPHRkIGlkPSdjaGVja2JveGJpbmQnIGNs
YXNzPSJyZWQiPkNIRUNLQk9YPC90ZD4KLQkJCTx0ZCBpZD0nYnV0dG9uYmluZCcgY2xhc3M9InJl
ZCI+QlVUVE9OPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0ncmFkaW9iaW5kJyBjbGFzcz0icmVkIj5S
QURJTzwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J2ZpbGViaW5kJyBjbGFzcz0icmVkIj5GSUxFPC90
ZD4KLQkgICAgICAgIDx0ZCBpZD0ndGV4dGJpbmQnIGNsYXNzPSJyZWQiPlRFWFQ8L3RkPgotCSAg
ICAgICAgPHRkIGlkPSd0ZXh0YXJlYWJpbmQnIGNsYXNzPSJyZWQiPlRFWFRBUkVBPC90ZD4KLQkg
ICAgPC90cj4KLQkgICAgPHRyPgotCSAgICAgICAgPHRkPkZvY3VzaW46PC90ZD4KLQkgICAgICAg
IDx0ZCBpZD0nc2VsZWN0Zm9jdXMnIGNsYXNzPSJyZWQiPlNFTEVDVDwvdGQ+Ci0JICAgICAgICA8
dGQgaWQ9J21zZWxlY3Rmb2N1cycgY2xhc3M9InJlZCI+TVVMVEk8L3RkPgotCSAgICAgICAgPHRk
IGlkPSdjaGVja2JveGZvY3VzJyBjbGFzcz0icmVkIj5DSEVDS0JPWDwvdGQ+Ci0JCQk8dGQgaWQ9
J2J1dHRvbmZvY3VzJyBjbGFzcz0icmVkIj5CVVRUT048L3RkPgotCSAgICAgICAgPHRkIGlkPSdy
YWRpb2ZvY3VzJyBjbGFzcz0icmVkIj5SQURJTzwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J2ZpbGVm
b2N1cycgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J3RleHRmb2N1cycg
Y2xhc3M9InJlZCI+VEVYVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J3RleHRhcmVhZm9jdXMnIGNs
YXNzPSJyZWQiPlRFWFRBUkVBPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nYm91bmRGb2N1cycgY2xh
c3M9InJlZCI+RE9DVU1FTlQ8L3RkPgotCSAgICA8L3RyPgotCSAgICA8dHI+Ci0JICAgICAgICA8
dGQ+Rm9jdXNvdXQ6PC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nc2VsZWN0Ymx1cicgY2xhc3M9InJl
ZCI+U0VMRUNUPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nbXNlbGVjdGJsdXInIGNsYXNzPSJyZWQi
Pk1VTFRJPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nY2hlY2tib3hibHVyJyBjbGFzcz0icmVkIj5D
SEVDS0JPWDwvdGQ+Ci0JCQk8dGQgaWQ9J2J1dHRvbmJsdXInIGNsYXNzPSJyZWQiPkJVVFRPTjwv
dGQ+Ci0JICAgICAgICA8dGQgaWQ9J3JhZGlvYmx1cicgY2xhc3M9InJlZCI+UkFESU88L3RkPgot
CSAgICAgICAgPHRkIGlkPSdmaWxlYmx1cicgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0JICAgICAg
ICA8dGQgaWQ9J3RleHRibHVyJyBjbGFzcz0icmVkIj5URVhUPC90ZD4KLQkgICAgICAgIDx0ZCBp
ZD0ndGV4dGFyZWFibHVyJyBjbGFzcz0icmVkIj5URVhUQVJFQTwvdGQ+Ci0JICAgICAgICA8dGQg
aWQ9J2JvdW5kQmx1cicgY2xhc3M9InJlZCI+RE9DVU1FTlQ8L3RkPgotCSAgICA8L3RyPgotCSAg
ICA8dHI+Ci0JICAgICAgICA8dGQ+TGl2ZSBGb2N1czo8L3RkPgotCSAgICAgICAgPHRkIGlkPSdz
ZWxlY3RsZm9jdXMnIGNsYXNzPSJyZWQiPlNFTEVDVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J21z
ZWxlY3RsZm9jdXMnIGNsYXNzPSJyZWQiPk1VTFRJPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nY2hl
Y2tib3hsZm9jdXMnIGNsYXNzPSJyZWQiPkNIRUNLQk9YPC90ZD4KLQkJCTx0ZCBpZD0nYnV0dG9u
bGZvY3VzJyBjbGFzcz0icmVkIj5CVVRUT048L3RkPgotCSAgICAgICAgPHRkIGlkPSdyYWRpb2xm
b2N1cycgY2xhc3M9InJlZCI+UkFESU88L3RkPgotCSAgICAgICAgPHRkIGlkPSdmaWxlbGZvY3Vz
JyBjbGFzcz0icmVkIj5GSUxFPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0ndGV4dGxmb2N1cycgY2xh
c3M9InJlZCI+VEVYVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J3RleHRhcmVhbGZvY3VzJyBjbGFz
cz0icmVkIj5URVhUQVJFQTwvdGQ+Ci0JICAgIDwvdHI+Ci0JICAgIDx0cj4KLQkgICAgICAgIDx0
ZD5MaXZlIEJsdXI6PC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nc2VsZWN0bGJsdXInIGNsYXNzPSJy
ZWQiPlNFTEVDVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J21zZWxlY3RsYmx1cicgY2xhc3M9InJl
ZCI+TVVMVEk8L3RkPgotCSAgICAgICAgPHRkIGlkPSdjaGVja2JveGxibHVyJyBjbGFzcz0icmVk
Ij5DSEVDS0JPWDwvdGQ+Ci0JCQk8dGQgaWQ9J2J1dHRvbmxibHVyJyBjbGFzcz0icmVkIj5CVVRU
T048L3RkPgotCSAgICAgICAgPHRkIGlkPSdyYWRpb2xibHVyJyBjbGFzcz0icmVkIj5SQURJTzwv
dGQ+Ci0JICAgICAgICA8dGQgaWQ9J2ZpbGVsYmx1cicgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0J
ICAgICAgICA8dGQgaWQ9J3RleHRsYmx1cicgY2xhc3M9InJlZCI+VEVYVDwvdGQ+Ci0JICAgICAg
ICA8dGQgaWQ9J3RleHRhcmVhbGJsdXInIGNsYXNzPSJyZWQiPlRFWFRBUkVBPC90ZD4KLQkgICAg
PC90cj4KLQkgICAgPHRyPgotCSAgICAgICAgPHRkPkxpdmUgQ2xpY2s6PC90ZD4KLQkgICAgICAg
IDx0ZCBpZD0nc2VsZWN0bGNsaWNrJyBjbGFzcz0icmVkIj5TRUxFQ1Q8L3RkPgotCSAgICAgICAg
PHRkIGlkPSdtc2VsZWN0bGNsaWNrJyBjbGFzcz0icmVkIj5NVUxUSTwvdGQ+Ci0JICAgICAgICA8
dGQgaWQ9J2NoZWNrYm94bGNsaWNrJyBjbGFzcz0icmVkIj5DSEVDS0JPWDwvdGQ+Ci0JCQk8dGQg
aWQ9J2J1dHRvbmxjbGljaycgY2xhc3M9InJlZCI+QlVUVE9OPC90ZD4KLQkgICAgICAgIDx0ZCBp
ZD0ncmFkaW9sY2xpY2snIGNsYXNzPSJyZWQiPlJBRElPPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0n
ZmlsZWxjbGljaycgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J3RleHRs
Y2xpY2snIGNsYXNzPSJyZWQiPlRFWFQ8L3RkPgotCSAgICAgICAgPHRkIGlkPSd0ZXh0YXJlYWxj
bGljaycgY2xhc3M9InJlZCI+VEVYVEFSRUE8L3RkPgotCQkJPHRkIGlkPSdib3VuZENsaWNrJyBj
bGFzcz0icmVkIj5ET0NVTUVOVDwvdGQ+Ci0JICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0g
ICAgICAgIDxoMj5TdWJtaXQgVGVzdHM8L2gyPgotICAgICAgICA8dGFibGU+Ci0JPHRyPgotCSAg
ICA8dGQ+Ci0JICAgICAgICBTdWJtaXQgZWFjaDoKLQkgICAgPC90ZD4KLQkgICAgPHRkPgotCSAg
ICAgICAgPGZvcm0gYWN0aW9uPSIiIGlkPSJ0ZXh0X3N1Ym1pdCI+Ci0JCTxpbnB1dCBjbGFzcz0n
dGVzdCcgdHlwZT0ndGV4dCcgdmFsdWU9J0tleSBSZXR1cm4gVG8gU3VibWl0Jy8+Ci0JICAgICAg
ICA8L2Zvcm0+Ci0JICAgIDwvdGQ+Ci0JICAgIDx0ZD4KLQkgICAgICAgIDxmb3JtIGFjdGlvbj0i
IiBpZD0icGFzc3dvcmRfc3VibWl0Ij4KLQkJPGlucHV0IGNsYXNzPSd0ZXN0JyB0eXBlPSdwYXNz
d29yZCcgdmFsdWU9JycvPgotCSAgICAgICAgPC9mb3JtPgotCSAgICA8L3RkPgotCSAgICA8dGQ+
Ci0JICAgICAgICA8Zm9ybSBhY3Rpb249IiIgaWQ9InN1Ym1pdF9zdWJtaXQiPgotCQk8aW5wdXQg
dHlwZT0nc3VibWl0JyB2YWx1ZT0iQ2xpY2sgTWUgVG8gU3VibWl0IiAvPgotCSAgICAgICAgPC9m
b3JtPgotCSAgICA8L3RkPgotCSAgICA8dGQ+JChkb2N1bWVudCkuYmluZCgnc3VibWl0Jyk8L3Rk
PgotCTwvdHI+Ci0JPHRyPgotCSAgICAgICAgPHRkPlJlc3VsdHM6PC90ZD4KLQkgICAgICAgIDx0
ZCBpZD0ndGV4dFN1Ym1pdCcgY2xhc3M9InJlZCI+VEVYVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9
J3Bhc3N3b3JkU3VibWl0JyBjbGFzcz0icmVkIj5QQVNTV09SRDwvdGQ+Ci0JICAgICAgICA8dGQg
aWQ9J3N1Ym1pdFN1Ym1pdCcgY2xhc3M9InJlZCI+QlVUVE9OPC90ZD4KLQkgICAgICAgIDx0ZCBp
ZD0nYm91bmRTdWJtaXQnIGNsYXNzPSJyZWQiPkRPQ1VNRU5UPC90ZD4KLQk8L3RyPgotICAgICAg
ICA8L3RhYmxlPgotCi0JPHVsIGlkPSJsb2ciPjwvdWw+Ci0KLSAgICAgICAgPHNjcmlwdCB0eXBl
PSd0ZXh0L2phdmFzY3JpcHQnPgotCWpRdWVyeS5mbi5hZGRDaGFuZ2VDbGlja1Rlc3QgPSBmdW5j
dGlvbiggaWQsIHByZXZlbnQgKSB7Ci0JCXRoaXMuYmluZCgiZm9jdXNpbiIsIGZ1bmN0aW9uKCl7
Ci0JCQlqUXVlcnkoaWQgKyAiZm9jdXMiKS5ibGluaygpOwotCQl9KS5iaW5kKCJmb2N1c291dCIs
IGZ1bmN0aW9uKCl7Ci0JCQlqUXVlcnkoaWQgKyAiYmx1ciIpLmJsaW5rKCk7Ci0JCX0pOwotCi0J
CXRoaXMuYmluZCgiZm9jdXMiLCBmdW5jdGlvbigpewotCQkJalF1ZXJ5KGlkICsgImxmb2N1cyIp
LmJsaW5rKCk7Ci0JCX0pLmJpbmQoImJsdXIiLCBmdW5jdGlvbigpewotCQkJalF1ZXJ5KGlkICsg
ImxibHVyIikuYmxpbmsoKTsKLQkJfSk7Ci0KLQkJcmV0dXJuIHRoaXMuYmluZCgiY2hhbmdlIiwg
ZnVuY3Rpb24oZSl7Ci0JCQlqUXVlcnkoaWQgKyAiYmluZCIpLmJsaW5rKCk7Ci0JCX0pLmxpdmUo
ImNoYW5nZSIsIGZ1bmN0aW9uKGUpewotCSAgIAkJaWYgKCBwcmV2ZW50ICkgewotCSAgICAgICAg
CQllLnByZXZlbnREZWZhdWx0KCk7Ci0JCQl9Ci0KLQkJCWpRdWVyeShpZCkuYmxpbmsoKTsKLQkJ
fSkubGl2ZSgiY2xpY2siLCBmdW5jdGlvbihlKXsKLSAgCQkJalF1ZXJ5KGlkICsgImxjbGljayIp
LmJsaW5rKCk7Ci0gIAl9KTsKLQl9OwotCi0KLQlqUXVlcnkuZm4uYWRkU3VibWl0VGVzdCA9IGZ1
bmN0aW9uKCBpZCwgcHJldmVudCApIHsKLQkJcmV0dXJuIHRoaXMubGl2ZSgic3VibWl0IiwgZnVu
Y3Rpb24oZSl7Ci0JICAgCQlpZiAoIHByZXZlbnQgKSB7Ci0JICAgICAgICAgIAkJZS5wcmV2ZW50
RGVmYXVsdCgpOwotCQkJfQotCi0JCQlqUXVlcnkoaWQpLmJsaW5rKCk7Ci0JCX0pOwotCX07Ci0K
LQlqUXVlcnkuZm4uYmxpbmsgPSBmdW5jdGlvbigpewotCQlyZXR1cm4gdGhpcy5jc3MoImJhY2tn
cm91bmRDb2xvciIsImdyZWVuIikuY3NzKCJib3JkZXIiLCJzb2xpZCAzcHggZ3JlZW4iKS5kZWxh
eSg3MDApLnF1ZXVlKGZ1bmN0aW9uKG5leHQpewotICAgICAgICAgCQlqUXVlcnkodGhpcykuY3Nz
KCJiYWNrZ3JvdW5kQ29sb3IiLCIiKTsKLQkJCW5leHQoKTsKLSAgIAkJfSk7Ci0JfTsKLQotCSQo
ZG9jdW1lbnQpLmJpbmQoImZvY3VzaW4iLCBmdW5jdGlvbigpIHsKLQkJalF1ZXJ5KCIjYm91bmRG
b2N1cyIpLmJsaW5rKCk7Ci0JfSk7Ci0KLQkkKGRvY3VtZW50KS5iaW5kKCJmb2N1c291dCIsIGZ1
bmN0aW9uKCkgewotCQlqUXVlcnkoIiNib3VuZEJsdXIiKS5ibGluaygpOwotCX0pOwotCQotCSQo
ZG9jdW1lbnQpLmJpbmQoImNsaWNrIiwgZnVuY3Rpb24oKSB7Ci0JCWpRdWVyeSgiI2JvdW5kQ2xp
Y2siKS5ibGluaygpOwotCX0pOwotCi0JJCgidGQucmVkIikubGl2ZSgiaG92ZXIiLCBmdW5jdGlv
bihlKSB7Ci0JCWlmICggZS50eXBlID09PSAibW91c2VlbnRlciIgKSB7Ci0JCQkkKHRoaXMpLmNz
cygiYmFja2dyb3VuZENvbG9yIiwiZ3JlZW4iKTsKLQkJfSBlbHNlIHsKLQkJCSQodGhpcykuY3Nz
KCJiYWNrZ3JvdW5kQ29sb3IiLCIiKTsKLQkJfQotCX0pOwotCi0JJCgiLnNlbGVjdF90ZXN0Iiku
YWRkQ2hhbmdlQ2xpY2tUZXN0KCIjc2VsZWN0Iik7Ci0JJCgiLm1zZWxlY3RfdGVzdCIpLmFkZENo
YW5nZUNsaWNrVGVzdCgiI21zZWxlY3QiKTsKLQkkKCIuY2hlY2tib3hfdGVzdCIpLmFkZENoYW5n
ZUNsaWNrVGVzdCgiI2NoZWNrYm94Iik7Ci0JJCgiLnJhZGlvX3Rlc3QiKS5hZGRDaGFuZ2VDbGlj
a1Rlc3QoIiNyYWRpbyIpOwotCSQoIi5maWxlX3Rlc3QiKS5hZGRDaGFuZ2VDbGlja1Rlc3QoIiNm
aWxlIik7Ci0JJCgndGV4dGFyZWEnKS5hZGRDaGFuZ2VDbGlja1Rlc3QoIiN0ZXh0YXJlYSIpOwot
CSQoJyNpbnB1dCcpLmFkZENoYW5nZUNsaWNrVGVzdCgiI3RleHQiKTsKLQkkKCdidXR0b24nKS5h
ZGRDaGFuZ2VDbGlja1Rlc3QoIiNidXR0b24iKTsKLQkkKGRvY3VtZW50KS5iaW5kKCJjaGFuZ2Ui
LCBmdW5jdGlvbigpewotCQlqUXVlcnkoIiNib3VuZENoYW5nZSIpLmJsaW5rKCk7Ci0JfSk7Ci0K
LQkkKCIjdGV4dF9zdWJtaXQiKS5hZGRTdWJtaXRUZXN0KCIjdGV4dFN1Ym1pdCIsIHRydWUpOwot
CSQoIiNwYXNzd29yZF9zdWJtaXQiKS5hZGRTdWJtaXRUZXN0KCIjcGFzc3dvcmRTdWJtaXQiLCB0
cnVlKTsKLQkkKCIjc3VibWl0X3N1Ym1pdCIpLmFkZFN1Ym1pdFRlc3QoIiNzdWJtaXRTdWJtaXQi
LCB0cnVlKTsKLQkkKGRvY3VtZW50KS5iaW5kKCJzdWJtaXQiLCBmdW5jdGlvbigpewotCQlqUXVl
cnkoIiNib3VuZFN1Ym1pdCIpLmJsaW5rKCk7Ci0JfSk7Ci0KLSAgICAgICAgPC9zY3JpcHQ+Ci0g
ICAgPC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvanF1
ZXJ5L3Jlc291cmNlcy90ZXN0L2RlbGVnYXRldGVzdC5odG1sCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
YWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2xvY2FsZmlsZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9sb2Nh
bGZpbGUuaHRtbAkocmV2aXNpb24gMjc3ODMyKQorKysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291
cmNlcy90ZXN0L2xvY2FsZmlsZS5odG1sCShub25leGlzdGVudCkKQEAgLTEsOTMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDps
YW5nPSJlbiIgbGFuZz0iZW4iIGRpcj0ibHRyIiBpZD0iaHRtbCI+Ci08aGVhZD4KLQk8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCIgLz4KLQk8dGl0bGU+alF1ZXJ5IExvY2FsIEZpbGUgVGVzdDwvdGl0bGU+Ci0JPCEtLSBJbmNs
dWRlcyAtLT4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2NvcmUuanMiPjwvc2NyaXB0PgotCTxzY3Jp
cHQgc3JjPSIuLi9zcmMvZGVmZXJyZWQuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9z
cmMvc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9kYXRhLmpzIj48
L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3F1ZXVlLmpzIj48L3NjcmlwdD4KLQk8c2Ny
aXB0IHNyYz0iLi4vc3JjL2F0dHJpYnV0ZXMuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIu
Li9zcmMvZXZlbnQuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvc2l6emxlL3Np
enpsZS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zaXp6bGUtanF1ZXJ5Lmpz
Ij48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3RyYXZlcnNpbmcuanMiPjwvc2NyaXB0
PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvbWFuaXB1bGF0aW9uLmpzIj48L3NjcmlwdD4KLQk8c2Ny
aXB0IHNyYz0iLi4vc3JjL2Nzcy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9h
amF4LmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2FqYXgvanNvbnAuanMiPjwv
c2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC9zY3JpcHQuanMiPjwvc2NyaXB0Pgot
CTxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC94aHIuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3Jj
PSIuLi9zcmMvZWZmZWN0cy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9vZmZz
ZXQuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvZGltZW5zaW9ucy5qcyI+PC9z
Y3JpcHQ+Ci0JPHN0eWxlPgotCQkuZXJyb3IgeyBjb2xvcjogcmVkOyB9Ci0JCS5zdWNjZXNzIHsg
Y29sb3I6IGdyZWVuOyB9Ci0JPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5PgotCTxoMT5qUXVlcnkg
TG9jYWwgRmlsZSBUZXN0PC9oMT4KLQk8aDI+Ci0JCUludHJvZHVjdGlvbgotCTwvaDI+Ci0JPHVs
PgotCQk8bGk+Ci0JCQlBY2Nlc3MgdGhpcyBmaWxlIHVzaW5nIHRoZSAiZmlsZToiIHByb3RvY29s
LAotCQk8L2xpPgotCQk8bGk+Ci0JCQl0d28gZ3JlZW4gIk9LIiBzdHJpbmdzIG11c3QgYXBwZWFy
IGJlbG93LAotCQk8L2xpPgotCQk8bGk+Ci0JCQlFbXB0eSBsb2NhbCBmaWxlcyB3aWxsIGlzc3Vl
IGVycm9ycywgaXQncyBhIGtub3duIGxpbWl0YXRpb24uCi0JCTwvbGk+Ci0JPC91bD4KLQk8aDI+
Ci0JCVJlc3VsdHMKLQk8L2gyPgotCTx1bD4KLQkJPGxpPgotCQkJU3VjY2VzczoKLQkJCTxzcGFu
IGlkPSJzdWNjZXNzIj4KLQkJCTwvc3Bhbj4KLQkJPC9saT4KLQkJPGxpPgotCQkJRXJyb3I6Ci0J
CQk8c3BhbiBpZD0iZXJyb3IiPgotCQkJPC9zcGFuPgotCQk8L2xpPgotCTwvdWw+Ci0JPGgyPgot
CQlMb2dzOgotCTwvaDI+Ci0JPHVsIGlkPSJsb2ciPgotCTwvdWw+Ci0JPHNjcmlwdD4KLQkJdmFy
IGxvZ1VMID0galF1ZXJ5KCAiI2xvZyIgKTsKLQkJZnVuY3Rpb24gZG9Mb2coIG1lc3NhZ2UsIGFy
Z3MgKSB7Ci0JCQlqUXVlcnkoICI8bGkgLz4iKS5hcHBlbmRUbyggbG9nVUwgKS50ZXh0KCBtZXNz
YWdlICsgJzogIicgKyBBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKCBhcmdzLCAnIiAtICInICkg
KyAnIicgKTsKLQkJfQotCQlqUXVlcnkuYWpheCggIi4vZGF0YS9iYWRqc29uLmpzIiAsIHsKLQkJ
CWNvbnRleHQ6IGpRdWVyeSggIiNzdWNjZXNzIiApLAotCQkJZGF0YVR5cGU6ICJ0ZXh0IgotCQl9
KS5zdWNjZXNzKGZ1bmN0aW9uKCBkYXRhLCBfLCB4aHIgKSB7Ci0JCQlkb0xvZyggIlN1Y2Nlc3Mg
KCIgKyB4aHIuc3RhdHVzICsgIikiICwgYXJndW1lbnRzICk7Ci0JCQl0aGlzLmFkZENsYXNzKCBk
YXRhID8gInN1Y2Nlc3MiIDogImVycm9yIiApLnRleHQoICJPSyIgKTsKLQkJfSkuZXJyb3IoZnVu
Y3Rpb24oIHhociApIHsKLQkJCWRvTG9nKCAiU3VjY2VzcyAoIiArIHhoci5zdGF0dXMgKyAiKSIg
LCBhcmd1bWVudHMgKTsKLQkJCXRoaXMuYWRkQ2xhc3MoICJlcnJvciIgKS50ZXh0KCAiRkFJTCIg
KTsKLQkJfSk7Ci0JCWpRdWVyeS5hamF4KCAiLi9kYXRhL2RvZXNub3RleGlzdC5leHQiICwgewot
CQkJY29udGV4dDogalF1ZXJ5KCAiI2Vycm9yIiApLAotCQkJZGF0YVR5cGU6ICJ0ZXh0IgotCQl9
KS5lcnJvcihmdW5jdGlvbiggeGhyICkgewotCQkJZG9Mb2coICJFcnJvciAoIiArIHhoci5zdGF0
dXMgKyAiKSIgLCBhcmd1bWVudHMgKTsKLQkJCXRoaXMuYWRkQ2xhc3MoICJzdWNjZXNzIiApLnRl
eHQoICJPSyIgKTsKLQkJfSkuc3VjY2VzcyhmdW5jdGlvbiggZGF0YSwgXywgeGhyICkgewotCQkJ
ZG9Mb2coICJFcnJvciAoIiArIHhoci5zdGF0dXMgKyAiKSIgLCBhcmd1bWVudHMgKTsKLQkJCXRo
aXMuYWRkQ2xhc3MoICJlcnJvciIgKS50ZXh0KCAiRkFJTCIgKTsKLQkJfSk7Ci0JPC9zY3JpcHQ+
Ci08L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2xvY2FsZmlsZS5odG1sCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KRGVsZXRlZDogYWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90
ZXN0L25ldHdvcmtlcnJvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9y
ZXNvdXJjZXMvdGVzdC9uZXR3b3JrZXJyb3IuaHRtbAkocmV2aXNpb24gMjc3ODMyKQorKysgTGF5
b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L25ldHdvcmtlcnJvci5odG1sCShub25leGlz
dGVudCkKQEAgLTEsMTAyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08IS0tCi0J
VGVzdCBmb3IgIzgxMzUKLQotCVRoYW5rcyBKb2huIEZpcmViYXVnaCBmb3IgdGhpcyB0ZXN0IHBh
Z2UgYmFzZWQgb24gaGlzIGdpc3QKLQlodHRwczovL2dpc3QuZ2l0aHViLmNvbS84MDcwOTAKLQot
CUFjY2VzcyB0aGlzIHBhZ2UgdGhyb3VnaCBhIHdlYiBzZXJ2ZXIsIHRoZW4gc3RvcCBzYWlkIHNl
cnZlciBhbmQgY2xpY2sgdGhlIGJ1dHRvbi4KLS0tPgotPGhlYWQ+Ci0JPHRpdGxlPgotCQlqUXVl
cnkgTmV0d29yayBFcnJvciBUZXN0IGZvciBGaXJlZm94Ci0JPC90aXRsZT4KLQk8c3R5bGU+Ci0J
CWRpdiB7IG1hcmdpbi10b3A6IDEwcHg7IH0KLQk8L3N0eWxlPgotCTxzY3JpcHQgc3JjPSIuLi9z
cmMvY29yZS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9kZWZlcnJlZC5qcyI+
PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zdXBwb3J0LmpzIj48L3NjcmlwdD4KLQk8
c2NyaXB0IHNyYz0iLi4vc3JjL2RhdGEuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9z
cmMvcXVldWUuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYXR0cmlidXRlcy5q
cyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9ldmVudC5qcyI+PC9zY3JpcHQ+Ci0J
PHNjcmlwdCBzcmM9Ii4uL3NyYy9zaXp6bGUvc2l6emxlLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0
IHNyYz0iLi4vc3JjL3NpenpsZS1qcXVlcnkuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIu
Li9zcmMvdHJhdmVyc2luZy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9tYW5p
cHVsYXRpb24uanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvY3NzLmpzIj48L3Nj
cmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2FqYXguanMiPjwvc2NyaXB0PgotCTxzY3JpcHQg
c3JjPSIuLi9zcmMvYWpheC9qc29ucC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3Ny
Yy9hamF4L3NjcmlwdC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4L3ho
ci5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9lZmZlY3RzLmpzIj48L3Njcmlw
dD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL29mZnNldC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBz
cmM9Ii4uL3NyYy9kaW1lbnNpb25zLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci0JJCgnYnV0dG9uJykubGl2ZSgnY2xpY2snLCBmdW5jdGlvbiAoKSB7Ci0J
CSQuYWpheCh7Ci0JCQl1cmw6ICcvJywKLQkJCWVycm9yOiBmdW5jdGlvbigpIHsKLQkJCQljb25z
b2xlLmxvZyggImFib3J0IiwgYXJndW1lbnRzICk7Ci0JCQl9Ci0JCX0pLmFib3J0KCk7Ci0JCSQu
YWpheCh7Ci0JCQl1cmw6ICcvJywKLQkJCWVycm9yOiBmdW5jdGlvbigpIHsKLQkJCQljb25zb2xl
LmxvZyggImNvbXBsZXRlIiwgYXJndW1lbnRzICk7Ci0JCQl9Ci0JCX0pOwotCQlyZXR1cm4gZmFs
c2U7Ci0JfSkKLQk8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotCTxoMT4KLQkJalF1ZXJ5IE5l
dHdvcmsgRXJyb3IgVGVzdCBmb3IgRmlyZWZveAotCTwvaDE+Ci0JPGRpdj4KLQkJVGhpcyBpcyBh
IHRlc3QgcGFnZSBmb3IKLQkJPGEgaHJlZj0iaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQv
ODEzNSI+Ci0JCQkjODEzNQotCQk8L2E+Ci0JCXdoaWNoIHdhcyByZXBvcnRlZCBpbiBGaXJlZm94
IHdoZW4gYWNjZXNzaW5nIHByb3BlcnRpZXMKLQkJb2YgYW4gWE1MSHR0cFJlcXVlc3Qgb2JqZWN0
IGFmdGVyIGEgbmV0d29yayBlcnJvciBvY2N1cmVkLgotCTwvZGl2PgotCTxkaXY+VGFrZSB0aGUg
Zm9sbG93aW5nIHN0ZXBzOjwvZGl2PgotCTxvbD4KLQkJPGxpPgotCQkJbWFrZSBzdXJlIHlvdSBh
Y2Nlc3NlZCB0aGlzIHBhZ2UgdGhyb3VnaCBhIHdlYiBzZXJ2ZXIsCi0JCTwvbGk+Ci0JCTxsaT4K
LQkJCXN0b3AgdGhlIHdlYiBzZXJ2ZXIsCi0JCTwvbGk+Ci0JCTxsaT4KLQkJCW9wZW4gdGhlIGNv
bnNvbGUsCi0JCTwvbGk+Ci0JCTxsaT4KLQkJCWNsaWNrIHRoaXMKLQkJCTxidXR0b24+YnV0dG9u
PC9idXR0b24+Ci0JCQksCi0JCTwvbGk+Ci0JCTxsaT4KLQkJCXdhaXQgZm9yIGJvdGggcmVxdWVz
dHMgdG8gZmFpbC4KLQkJPC9saT4KLQk8L29sPgotCTxkaXY+Ci0JCVRlc3QgcGFzc2VzIGlmIHlv
dSBnZXQgdHdvIGxvZyBsaW5lczoKLQkJPHVsPgotCQkJPGxpPgotCQkJCXRoZSBmaXJzdCBzdGFy
dGluZyB3aXRoICJhYm9ydCIsCi0JCQk8L2xpPgotCQkJPGxpPgotCQkJCXRoZSBzZWNvbmQgc3Rh
cnRpbmcgd2l0aCAiY29tcGxldGUiLAotCQkJPC9saT4KLQkJPC91bD4KLQk8L2Rpdj4KLQk8ZGl2
PgotCQlUZXN0IGZhaWxzIGlmIHRoZSBicm93c2VyIG5vdGlmaWVzIGFuIGV4Y2VwdGlvbi4KLQk8
L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvbmV0d29y
a2Vycm9yLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBhbGxvdy10YWJzCiMjIC0xICswLDAgIyMK
LXllcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9q
cXVlcnkvcmVzb3VyY2VzL3Rlc3QvcG9sbHV0ZWQucGhwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9wb2xsdXRlZC5waHAJKHJldmlzaW9uIDI3NzgzMikK
KysrIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9wb2xsdXRlZC5waHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw5OSArMCwwIEBACi08P3BocAotCSRiYXNlVVJMID0gImh0dHA6Ly9hamF4
Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy8iOwotCSRsaWJyYXJpZXMgPSBhcnJheSgKLQkJIkRv
am8iID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjEuMS4xIiwgIjEuMi4wIiwg
IjEuMi4zIiwgIjEuMy4wIiwgIjEuMy4xIiwgIjEuMy4yIiwgIjEuNC4wIiwgIjEuNC4xIiwgIjEu
NC4zIiwgIjEuNS4wIiApLAotCQkJInVybCIgPT4gImRvam8vWFlaL2Rvam8vZG9qby54ZC5qcyIK
LQkJKSwKLQkJIkV4dENvcmUiID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjMu
MC4wIiwgIjMuMS4wIiApLAotCQkJInVybCIgPT4gImV4dC1jb3JlL1hZWi9leHQtY29yZS5qcyIK
LQkJKSwKLQkJImpRdWVyeSIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMS4y
LjMiLCAiMS4yLjYiLCAiMS4zLjAiLCAiMS4zLjEiLCAiMS4zLjIiLCAiMS40LjAiLCAiMS40LjEi
LCAiMS40LjIiLCAiMS40LjMiLCAiMS40LjQiLCAiMS41LjAiICksCi0JCQkidXJsIiA9PiAianF1
ZXJ5L1hZWi9qcXVlcnkubWluLmpzIgotCQkpLAotCQkialF1ZXJ5VUkiID0+IGFycmF5KAotCQkJ
InZlcnNpb25zIiA9PiBhcnJheSggIjEuNS4yIiwgIjEuNS4zIiwgIjEuNi4wIiwgIjEuNy4wIiwg
IjEuNy4xIiwgIjEuNy4yIiwgIjEuNy4zIiwgIjEuOC4wIiwgIjEuOC4xIiwgIjEuOC4yIiwgIjEu
OC40IiwgIjEuOC41IiwgIjEuOC42IiwgIjEuOC43IiwgIjEuOC44IiwgIjEuOC45IiApLAotCQkJ
InVybCIgPT4gImpxdWVyeXVpL1hZWi9qcXVlcnktdWkubWluLmpzIgotCQkpLAotCQkiTW9vVG9v
bHMiID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjEuMS4xIiwgIjEuMS4yIiwg
IjEuMi4xIiwgIjEuMi4yIiwgIjEuMi4zIiwgIjEuMi40IiwgIjEuMi41IiwgIjEuMy4wIiApLAot
CQkJInVybCIgPT4gIm1vb3Rvb2xzL1hZWi9tb290b29scy15dWktY29tcHJlc3NlZC5qcyIKLQkJ
KSwKLQkJIlByb3RvdHlwZSIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMS42
LjAuMiIsICIxLjYuMC4zIiwgIjEuNi4xLjAiLCAiMS43LjAuMCIgKSwKLQkJCSJ1cmwiID0+ICJw
cm90b3R5cGUvWFlaL3Byb3RvdHlwZS5qcyIKLQkJKSwKLQkJInNjcmlwdGFjdWxvdXMiID0+IGFy
cmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjEuOC4xIiwgIjEuOC4yIiwgIjEuOC4zIiAp
LAotCQkJInVybCIgPT4gInNjcmlwdGFjdWxvdXMvWFlaL3NjcmlwdGFjdWxvdXMuanMiCi0JCSks
Ci0JCSJTV0ZPYmplY3QiID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjIuMSIs
ICIyLjIiICksCi0JCQkidXJsIiA9PiAic3dmb2JqZWN0L1hZWi9zd2ZvYmplY3QuanMiCi0JCSks
Ci0JCSJZVUkiID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjIuNi4wIiwgIjIu
Ny4wIiwgIjIuOC4wcjQiLCAiMi44LjEiLCAiMi44LjIiLCAiMy4zLjAiICksCi0JCQkidXJsIiA9
PiAgICAieXVpL1hZWi9idWlsZC95dWkveXVpLW1pbi5qcyIKLQkJKQotCSk7Ci0KLQlpZiggY291
bnQoJF9QT1NUKSApIHsKLQkJJGluY2x1ZGVzID0gYXJyYXkoKTsKLQkJZm9yZWFjaCggJF9QT1NU
IGFzICRuYW1lID0+ICR2ZXIgKXsKLQkJCSR1cmwgPSAkbGlicmFyaWVzWyAkbmFtZSBdWyAidXJs
IiBdOwotCQkJaWYoICRuYW1lID09ICJZVUkiICYmICR2ZXJbMF0gPT0gIjIiICkgewotCQkJCSR1
cmwgPSBzdHJfcmVwbGFjZSggIi95dWkiLCAiL3l1aWxvYWRlciIsICR1cmwsICRjb3VudCA9IDIg
KTsKLQkJCX0KLQkJCSRpbmNsdWRlID0gIjxzY3JpcHQgc3JjPSckYmFzZVVSTCIuc3RyX3JlcGxh
Y2UoIlhZWiIsICR2ZXIsICR1cmwsICRjb3VudCA9IDEpLiInPjwvc2NyaXB0PlxuIjsKLQkJCWlm
KCAkbGliID09ICJwcm90b3R5cGUiICkgeyAvLyBwcm90b3R5cGUgbXVzdCBiZSBpbmNsdWRlZCBm
aXJzdAotCQkJCWFycmF5X3Vuc2hpZnQoICRpbmNsdWRlcywgJGluY2x1ZGUgKTsKLQkJCX0gZWxz
ZSB7Ci0JCQkJYXJyYXlfcHVzaCggJGluY2x1ZGVzLCAkaW5jbHVkZSApOwotCQkJfQotCQl9Ci0K
LQkJJGluY2x1ZGVzID0gaW1wbG9kZSggIlxuIiwgJGluY2x1ZGVzICk7Ci0JCSRzdWl0ZSA9IGZp
bGVfZ2V0X2NvbnRlbnRzKCAiaW5kZXguaHRtbCIgKTsKLQkJZWNobyBzdHJfcmVwbGFjZSggIjwh
LS0gSW5jbHVkZXMgLS0+IiwgJGluY2x1ZGVzLCAkc3VpdGUgKTsKLQkJZXhpdDsKLQl9Ci0/Pgot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJjb250
ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0JPHRpdGxlPlJ1
biBqUXVlcnkgVGVzdCBTdWl0ZSBQb2xsdXRlZDwvdGl0bGU+Ci0JPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KLQkJLm90aGVybGlicyBmaWVsZHNldCB7Ci0JCQl3aWR0aDogNDAwcHgKLQkJfQotCQku
b3RoZXJsaWJzIGxhYmVsewotCQkJbWFyZ2luOiA1cHggMHB4IDVweCAyMHB4OwotCQl9Ci0JPC9z
dHlsZT4KLTwvaGVhZD4KLQotPGJvZHkgaWQ9ImJvZHkiPgotCTxoMSBpZD0iaGVhZGVyIj5qUXVl
cnkgVGVzdCBTdWl0ZTwvaDE+Ci0JPGgyIGlkPSJiYW5uZXIiIGNsYXNzPSJmYWlsIj48L2gyPgot
CTxoMiBpZD0idXNlckFnZW50Ij5DaG9vc2Ugb3RoZXIgbGlicmFyaWVzIHRvIGluY2x1ZGU8L2gy
PgotCi0JPGZvcm0gY2xhc3M9Im90aGVybGlicyIgYWN0aW9uPSIuL3BvbGx1dGVkLnBocCIgbWV0
aG9kPSJQT1NUIj4KLQkJPD9waHAKLQkJCWZvcmVhY2goICRsaWJyYXJpZXMgYXMgJG5hbWUgPT4g
JGRhdGEgKSB7Ci0JCQkJZWNobyAiPGZpZWxkc2V0PjxsZWdlbmQ+JG5hbWU8L2xlZ2VuZD4iOwot
CQkJCSRpID0gMDsKLQkJCQlmb3JlYWNoKCAkZGF0YVsgInZlcnNpb25zIiBdIGFzICR2ZXIgKSB7
Ci0JCQkJCSRpKys7Ci0JCQkJCWVjaG8gIjxsYWJlbD48aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9
JyRuYW1lJyB2YWx1ZT0nJHZlcicgLz4kdmVyPC9sYWJlbD4iOwotCQkJCQlpZiggISgkaSAlIDQp
ICkgZWNobyAiPGJyIC8+IjsKLQkJCQl9Ci0JCQkJZWNobyAiPC9maWVsZHNldD4iOwotCQkJfQot
CQk/PgotCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iIFJ1biAiIGNsYXNzPSJzdWJtaXQi
IC8+Ci0JPC9mb3JtPgotPC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L3BvbGx1dGVkLnBocApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAsMCAjIwoteWVzClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9yZWFk
eXdhaXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rl
c3QvcmVhZHl3YWl0Lmh0bWwJKHJldmlzaW9uIDI3NzgzMikKKysrIExheW91dFRlc3RzL2pxdWVy
eS9yZXNvdXJjZXMvdGVzdC9yZWFkeXdhaXQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDg2ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08IS0tCi0JVGVzdCBmb3IgalF1ZXJ5LnJl
YWR5V2FpdC4gTmVlZHMgdG8gYmUgYQotCXN0YW5kYWxvbmUgdGVzdCBzaW5jZSBpdCBkZWFscyB3
aXRoIERPTQotCXJlYWR5LgotLS0+Ci08aGVhZD4KLQk8dGl0bGU+Ci0JCWpRdWVyeS5yZWFkeVdh
aXQgVGVzdAotCTwvdGl0bGU+Ci0JPHN0eWxlPgotCQlkaXYgeyBtYXJnaW4tdG9wOiAxMHB4OyB9
Ci0JCSNvdXRwdXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiB9Ci0JCSNleHBlY3RlZE91dHB1
dCB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIH0KLQk8L3N0eWxlPgotCTxzY3JpcHQgc3JjPSIu
Li9zcmMvY29yZS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9kZWZlcnJlZC5q
cyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zdXBwb3J0LmpzIj48L3NjcmlwdD4K
LQk8c2NyaXB0IHNyYz0iLi4vc3JjL2RhdGEuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIu
Li9zcmMvcXVldWUuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYXR0cmlidXRl
cy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9ldmVudC5qcyI+PC9zY3JpcHQ+
Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zaXp6bGUvc2l6emxlLmpzIj48L3NjcmlwdD4KLQk8c2Ny
aXB0IHNyYz0iLi4vc3JjL3NpenpsZS1qcXVlcnkuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3Jj
PSIuLi9zcmMvdHJhdmVyc2luZy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9t
YW5pcHVsYXRpb24uanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvY3NzLmpzIj48
L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2FqYXguanMiPjwvc2NyaXB0PgotCTxzY3Jp
cHQgc3JjPSIuLi9zcmMvYWpheC9qc29ucC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4u
L3NyYy9hamF4L3NjcmlwdC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4
L3hoci5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9lZmZlY3RzLmpzIj48L3Nj
cmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL29mZnNldC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlw
dCBzcmM9Ii4uL3NyYy9kaW1lbnNpb25zLmpzIj48L3NjcmlwdD4KLQotCTwhLS0gTG9hZCB0aGUg
c2NyaXB0IGxvYWRlciB0aGF0IHVzZXMKLQkJalF1ZXJ5LnJlYWR5V2FpdCAtLT4KLQk8c2NyaXB0
IHNyYz0iZGF0YS9yZWFkeXdhaXRsb2FkZXIuanMiPjwvc2NyaXB0PgotCi0JPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotCWpRdWVyeShmdW5jdGlvbigpIHsKLQkJLy8gVGhlIGRlbGF5
ZWRNZXNzYWdlIGlzIGRlZmluZWQgYnkKLQkJLy8gdGhlIHJlYWR5d2FpdGFzc2V0LmpzIGZpbGUs
IHNvIHRoZQotCQkvLyBuZXh0IGxpbmUgd2lsbCBvbmx5IHdvcmsgaWYgdGhpcyBET00KLQkJLy8g
cmVhZHkgY2FsbGJhY2sgaXMgY2FsbGVkIGFmdGVyIHJlYWR5V2FpdAotCQkvLyBoYXMgYmVlbiBk
ZWNyZW1lbnRlZCBieSByZWFkeXdhaXRsb2FkZXIuanMKLQkJLy8gSWYgYW4gZXJyb3Igb2NjdXJz
LgotCQlqUXVlcnkoIiNvdXRwdXQiKS5hcHBlbmQoZGVsYXllZE1lc3NhZ2UpOwotCX0pOwotCTwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0JPGgxPgotCQlqUXVlcnkucmVhZHlXYWl0IFRlc3QK
LQk8L2gxPgotCTxwPgotCQlUaGlzIGlzIGEgdGVzdCBwYWdlIGZvciBqUXVlcnkucmVhZHlXYWl0
LCB0aGF0IHdhcwotCQlhZGRlZCBkdWUgdG8gdGhpcyB0aWNrZXQKLQkJPGEgaHJlZj0iaHR0cDov
L2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvNjc4MSI+IzY3ODE8L2E+LgotCTwvcD4KLQk8cD4KLQlU
ZXN0IGZvciBqUXVlcnkucmVhZHlXYWl0LCB3aGljaCBjYW4gYmUgdXNlZAotCWJ5IHBsdWdpbnMg
YW5kIG90aGVyIHNjcmlwdHMgdG8gaW5kaWNhdGUgc29tZXRoaW5nCi0JaW1wb3J0YW50IHRvIHRo
ZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgYW5kIG5lZWRzCi0JdG8gYmxvY2sgdGhlIERPTSByZWFk
eSBjYWxsYmFja3MgdGhhdCBhcmUgcmVnaXN0ZXJlZAotCXdpdGggalF1ZXJ5LgotCTwvcD4KLQk8
cD4KLQlTY3JpcHQgbG9hZGVycyBhcmUgdGhlIG1vc3QgbGlrZWx5IGtpbmQgb2Ygc2NyaXB0Ci0J
dG8gdXNlIGpRdWVyeS5yZWFkeVdhaXQsIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGJ5Ci0Jb3RoZXIg
dGhpbmdzIGxpa2UgYSBzY3JpcHQgdGhhdCBsb2FkcyBhIENTUyBmaWxlCi0JYW5kIHdhbnRzIHRv
IHBhdXNlIHRoZSBET00gcmVhZHkgY2FsbGJhY2tzLgotCTwvcD4KLQk8cD4KLQk8c3Ryb25nPkV4
cGVjdGVkIFJlc3VsdDwvc3Ryb25nPjogVGhlIHRleHQKLQk8c3BhbiBpZD0iZXhwZWN0ZWRPdXRw
dXQiPkl0IFdvcmtlZCE8L3NwYW4+Ci0JYXBwZWFycyBiZWxvdyBhZnRlciBhYm91dCA8c3Ryb25n
PjIgc2Vjb25kcy48L3N0cm9uZz4KLQk8L3A+Ci0JPHA+Ci0JSWYgdGhlcmUgaXMgYW4gZXJyb3Ig
aW4gdGhlIGNvbnNvbGUsCi0Jb3IgdGhlIHRleHQgZG9lcyBub3Qgc2hvdyB1cCwgdGhlbiB0aGUg
dGVzdCBmYWlsZWQuCi0JPC9wPgotCTxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Ci08L2JvZHk+Ci08
L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2Vz
L3Rlc3QvcmVhZHl3YWl0Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBhbGxvdy10YWJzCiMjIC0x
ICswLDAgIyMKLXllcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlv
dXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QveGh0bWwucGhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC94aHRtbC5waHAJKHJldmlzaW9uIDI3Nzgz
MikKKysrIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC94aHRtbC5waHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1ICswLDAgQEAKLTw/cGhwCi0JIyBMb2FkIGFuZCBydW4gdGhlIHRlc3Qg
c3VpdGUgYXMgYSBwcm9wZXIgWEhUTUwgcGFnZQotCWhlYWRlcigiQ29udGVudC10eXBlOiBhcHBs
aWNhdGlvbi94aHRtbCt4bWwiKTsKLQlyZWFkZmlsZSgiaW5kZXguaHRtbCIpOwotPz4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC94aHRtbC5w
aHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBhbGxvdy10YWJzCiMjIC0xICswLDAgIyMKLXllcwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVz
b3VyY2VzL3Rlc3QvZGF0YS9yZWFkeXdhaXRhc3NldC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9yZWFkeXdhaXRhc3NldC5qcwkocmV2aXNp
b24gMjc3ODMyKQorKysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvcmVh
ZHl3YWl0YXNzZXQuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSArMCwwIEBACi12YXIgZGVsYXllZE1l
c3NhZ2UgPSAiSXQgd29ya2VkISI7CkluZGV4OiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2Vz
L3Rlc3QvZGF0YS9yZWFkeXdhaXRsb2FkZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvcmVhZHl3YWl0bG9hZGVyLmpzCShyZXZpc2lvbiAy
Nzc4MzIpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9yZWFkeXdh
aXRsb2FkZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNSArMCwwIEBACi0vLyBTaW1wbGUgc2Ny
aXB0IGxvYWRlciB0aGF0IHVzZXMgalF1ZXJ5LnJlYWR5V2FpdAotCi0vL0hvbGQgb24galF1ZXJ5
IQotalF1ZXJ5LnJlYWR5V2FpdCsrOwotCi12YXIgcmVhZHlSZWdFeHAgPSAvXihjb21wbGV0ZXxs
b2FkZWQpJC87Ci0KLWZ1bmN0aW9uIGFzc2V0TG9hZGVkKCBldnQgKXsKLQl2YXIgbm9kZSA9IGV2
dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50OwotCWlmICggZXZ0LnR5cGUgPT09ICJs
b2FkIiB8fCByZWFkeVJlZ0V4cC50ZXN0KG5vZGUucmVhZHlTdGF0ZSkgKSB7Ci0JCWpRdWVyeS5y
ZWFkeSh0cnVlKTsKLQl9Ci19Ci0KLXNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewotCXZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKLQlzY3JpcHQudHlwZSA9ICJ0
ZXh0L2phdmFzY3JpcHQiOwotCWlmICggc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIgKSB7Ci0JCXNj
cmlwdC5hZGRFdmVudExpc3RlbmVyKCAibG9hZCIsIGFzc2V0TG9hZGVkLCBmYWxzZSApOwotCX0g
ZWxzZSB7Ci0JCXNjcmlwdC5hdHRhY2hFdmVudCggIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGFzc2V0
TG9hZGVkICk7Ci0JfQotCXNjcmlwdC5zcmMgPSAiZGF0YS9yZWFkeXdhaXRhc3NldC5qcyI7Ci0J
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChzY3Jp
cHQpOwotfSwgMjAwMCApOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvanF1ZXJ5
L3Jlc291cmNlcy90ZXN0L2RhdGEvcmVhZHl3YWl0bG9hZGVyLmpzCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogYWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvb2Zm
c2V0L2Fic29sdXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291
cmNlcy90ZXN0L2RhdGEvb2Zmc2V0L2Fic29sdXRlLmh0bWwJKHJldmlzaW9uIDI3NzgzMikKKysr
IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNldC9hYnNvbHV0ZS5o
dG1sCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIKLQkiaHR0cDovL3d3dy53
My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD4KLQk8
aGVhZD4KLQkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgotCQk8dGl0bGU+YWJzb2x1dGU8L3RpdGxlPgotCQk8c3R5bGUg
dHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgotCQkJYm9keSB7IG1hcmdpbjogMXB4OyBw
YWRkaW5nOiA1cHg7IH0KLQkJCWRpdi5hYnNvbHV0ZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbWFy
Z2luOiAxcHg7IGJvcmRlcjogMnB4IHNvbGlkICMwMDA7IHBhZGRpbmc6IDVweDsgd2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiAjZmZmOyB9Ci0JCQkjYWJzb2x1dGUtMSB7
IHRvcDogMDsgbGVmdDogMDsgfQotCQkJCSNhYnNvbHV0ZS0xLTEgeyB0b3A6IDFweDsgbGVmdDog
MXB4OyB9Ci0JCQkJCSNhYnNvbHV0ZS0xLTEtMSB7IHRvcDogMXB4OyBsZWZ0OiAxcHg7IH0KLQkJ
CSNhYnNvbHV0ZS0yIHsgdG9wOiAxOXB4OyBsZWZ0OiAxOXB4OyB9Ci0JCQkjbWFya2VyIHsgcG9z
aXRpb246IGFic29sdXRlOyBib3JkZXI6IDJweCBzb2xpZCAjMDAwOyB3aWR0aDogNTBweDsgaGVp
Z2h0OiA1MHB4OyBiYWNrZ3JvdW5kOiAjY2NjOyB9Ci0JCQlwLmluc3RydWN0aW9ucyB7IHBvc2l0
aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAwOyB9Ci0JCQkjcG9zaXRpb25UZXN0IHsgcG9zaXRpb246
IGFic29sdXRlOyB9Ci0JCTwvc3R5bGU+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvY29y
ZS5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvZGVmZXJyZWQuanMi
Pjwvc2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL3N1cHBvcnQuanMiPjwvc2Ny
aXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL3NpenpsZS9zaXp6bGUuanMiPjwvc2Ny
aXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL3NpenpsZS1qcXVlcnkuanMiPjwvc2Ny
aXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL3RyYXZlcnNpbmcuanMiPjwvc2NyaXB0
PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL2RhdGEuanMiPjwvc2NyaXB0PgotCQk8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vc3JjL2V2ZW50LmpzIj48L3NjcmlwdD4KLQkJPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3NyYy9jc3MuanMiPjwvc2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
c3JjL29mZnNldC5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ii4uLy4uLy4uL2Rpc3QvanF1ZXJ5LmpzIj48L3NjcmlwdD4KLQkJPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLQkJCWpRdWVyeShmdW5jdGlvbigk
KSB7Ci0JCQkJJCgnLmFic29sdXRlJykuY2xpY2soZnVuY3Rpb24oKSB7Ci0JCQkJCSQoJyNtYXJr
ZXInKS5jc3MoICQodGhpcykub2Zmc2V0KCkgKTsKLQkJCQkJdmFyIHBvcyA9ICQodGhpcykucG9z
aXRpb24oKTsKLQkJCQkJJCh0aGlzKS5jc3MoeyB0b3A6IHBvcy50b3AsIGxlZnQ6IHBvcy5sZWZ0
IH0pOwotCQkJCQlyZXR1cm4gZmFsc2U7Ci0JCQkJfSk7Ci0JCQl9KTsKLQkJPC9zY3JpcHQ+Ci0J
PC9oZWFkPgotCTxib2R5PgotCQk8ZGl2IGlkPSJhYnNvbHV0ZS0xIiBjbGFzcz0iYWJzb2x1dGUi
PmFic29sdXRlLTEKLQkJCTxkaXYgaWQ9ImFic29sdXRlLTEtMSIgY2xhc3M9ImFic29sdXRlIj5h
YnNvbHV0ZS0xLTEKLQkJCQk8ZGl2IGlkPSJhYnNvbHV0ZS0xLTEtMSIgY2xhc3M9ImFic29sdXRl
Ij5hYnNvbHV0ZS0xLTEtMTwvZGl2PgotCQkJPC9kaXY+Ci0JCTwvZGl2PgotCQk8ZGl2IGlkPSJh
YnNvbHV0ZS0yIiBjbGFzcz0iYWJzb2x1dGUiPmFic29sdXRlLTI8L2Rpdj4KLQkJPGRpdiBpZD0i
cG9zaXRpb25UZXN0Ij5IYXMgYWJzb2x1dGUgcG9zaXRpb24gYnV0IG5vIHZhbHVlcyBzZXQgZm9y
IHRoZSBsb2NhdGlvbiAoJ2F1dG8nKS48L2Rpdj4KLQkJPGRpdiBpZD0ibWFya2VyIj48L2Rpdj4K
LQkJPHAgY2xhc3M9Imluc3RydWN0aW9ucyI+Q2xpY2sgdGhlIHdoaXRlIGJveCB0byBtb3ZlIHRo
ZSBtYXJrZXIgdG8gaXQuIENsaWNraW5nIHRoZSBib3ggYWxzbyBjaGFuZ2VzIHRoZSBwb3NpdGlv
biB0byBhYnNvbHV0ZSAoaWYgbm90IGFscmVhZHkpIGFuZCBzZXRzIHRoZSBwb3NpdGlvbiBhY2Nv
cmRpbmcgdG8gdGhlIHBvc2l0aW9uIG1ldGhvZC48L3A+Ci0JPC9ib2R5PgotPC9odG1sPgoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEv
b2Zmc2V0L2Fic29sdXRlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBhbGxvdy10YWJzCiMjIC0x
ICswLDAgIyMKLXllcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlv
dXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9vZmZzZXQvZml4ZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9vZmZzZXQv
Zml4ZWQuaHRtbAkocmV2aXNpb24gMjc3ODMyKQorKysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291
cmNlcy90ZXN0L2RhdGEvb2Zmc2V0L2ZpeGVkLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFu
c2l0aW9uYWwvL0VOIgotCSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10
cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPgotCTxoZWFkPgotCQk8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Ci0JCTx0aXRs
ZT5maXhlZDwvdGl0bGU+Ci0JCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+
Ci0JCQlib2R5IHsgbWFyZ2luOiAxcHg7IHBhZGRpbmc6IDVweDsgfQotCQkJZGl2LmZpeGVkIHsg
cG9zaXRpb246IGZpeGVkOyBtYXJnaW46IDFweDsgYm9yZGVyOiAycHggc29saWQgIzAwMDsgcGFk
ZGluZzogNXB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6ICNmZmY7
IG92ZXJmbG93OiBoaWRkZW47IH0KLQkJCSNmaXhlZC0xIHsgdG9wOiAwOyBsZWZ0OiAwOyB9Ci0J
CQkjZml4ZWQtMiB7IHRvcDogMjBweDsgbGVmdDogMjBweDsgfQotCQkJI2ZvcmNlU2Nyb2xsIHsg
d2lkdGg6IDUwMDBweDsgaGVpZ2h0OiA1MDAwcHg7IH0KLQkJCSNtYXJrZXIgeyBwb3NpdGlvbjog
YWJzb2x1dGU7IGJvcmRlcjogMnB4IHNvbGlkICMwMDA7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUw
cHg7IGJhY2tncm91bmQ6ICNjY2M7IH0KLQkJPC9zdHlsZT4KLQkJPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3NyYy9jb3JlLmpzIj48L3NjcmlwdD4KLQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9k
ZWZlcnJlZC5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvc3VwcG9y
dC5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvc2l6emxlL3Npenps
ZS5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvc2l6emxlLWpxdWVy
eS5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvdHJhdmVyc2luZy5q
cyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvZGF0YS5qcyI+PC9zY3Jp
cHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvZXZlbnQuanMiPjwvc2NyaXB0PgotCQk8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL2Nzcy5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9zcmMvb2Zmc2V0LmpzIj48L3NjcmlwdD4KLQkJPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLQkJCWpRdWVyeShmdW5jdGlvbigkKSB7Ci0J
CQkJd2luZG93LnNjcm9sbFRvKDEwMDAsMTAwMCk7Ci0JCQkJJCgnLmZpeGVkJykuY2xpY2soZnVu
Y3Rpb24oKSB7Ci0JCQkJCSQoJyNtYXJrZXInKS5jc3MoICQodGhpcykub2Zmc2V0KCkgKTsKLQkJ
CQkJcmV0dXJuIGZhbHNlOwotCQkJCX0pOwotCQkJfSk7Ci0JCTwvc2NyaXB0PgotCTwvaGVhZD4K
LQk8Ym9keT4KLQkJPGRpdiBpZD0iZml4ZWQtMSIgY2xhc3M9ImZpeGVkIj48L2Rpdj4KLQkJPGRp
diBpZD0iZml4ZWQtMiIgY2xhc3M9ImZpeGVkIj48L2Rpdj4KLQkJPGRpdiBpZD0iZm9yY2VTY3Jv
bGwiPjwvZGl2PgotCQk8ZGl2IGlkPSJtYXJrZXIiPjwvZGl2PgotCQk8cCBjbGFzcz0iaW5zdHJ1
Y3Rpb25zIj5DbGljayB0aGUgd2hpdGUgYm94IHRvIG1vdmUgdGhlIG1hcmtlciB0byBpdC48L3A+
Ci0JPC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvanF1
ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvb2Zmc2V0L2ZpeGVkLmh0bWwKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBhbGxvdy10YWJzCiMjIC0xICswLDAgIyMKLXllcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9v
ZmZzZXQvcmVsYXRpdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcXVlcnkvcmVz
b3VyY2VzL3Rlc3QvZGF0YS9vZmZzZXQvcmVsYXRpdmUuaHRtbAkocmV2aXNpb24gMjc3ODMyKQor
KysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvb2Zmc2V0L3JlbGF0aXZl
Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJM
SUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIgotCSJodHRwOi8vd3d3
LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPgot
CTxoZWFkPgotCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+Ci0JCTx0aXRsZT5yZWxhdGl2ZTwvdGl0bGU+Ci0JCTxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Ci0JCQlib2R5IHsgbWFyZ2luOiAxcHg7
IHBhZGRpbmc6IDVweDsgfQotCQkJZGl2LnJlbGF0aXZlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB0
b3A6IDA7IGxlZnQ6IDA7IG1hcmdpbjogMXB4OyBib3JkZXI6IDJweCBzb2xpZCAjMDAwOyBwYWRk
aW5nOiA1cHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZDogI2ZmZjsg
b3ZlcmZsb3c6IGhpZGRlbjsgfQotCQkJI3JlbGF0aXZlLTIgeyB0b3A6IDIwcHg7IGxlZnQ6IDIw
cHg7IH0KLQkJCSNtYXJrZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvcmRlcjogMnB4IHNvbGlk
ICMwMDA7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6ICNjY2M7IH0KLQkJ
PC9zdHlsZT4KLQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9jb3JlLmpzIj48L3NjcmlwdD4K
LQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9kZWZlcnJlZC5qcyI+PC9zY3JpcHQ+Ci0JCTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9zcmMvc2l6emxlL3NpenpsZS5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9zcmMvc2l6emxlLWpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9zcmMvdHJhdmVyc2luZy5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9zcmMvZGF0YS5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9zcmMvZXZlbnQuanMiPjwvc2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL2Nz
cy5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvb2Zmc2V0LmpzIj48
L3NjcmlwdD4KLQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04
Ij4KLQkJCWpRdWVyeShmdW5jdGlvbigkKSB7Ci0JCQkJJCgnLnJlbGF0aXZlJykuY2xpY2soZnVu
Y3Rpb24oKSB7Ci0JCQkJCSQoJyNtYXJrZXInKS5jc3MoICQodGhpcykub2Zmc2V0KCkgKTsKLQkJ
CQkJdmFyIHBvcyA9ICQodGhpcykucG9zaXRpb24oKTsKLQkJCQkJJCh0aGlzKS5jc3MoeyBwb3Np
dGlvbjogJ2Fic29sdXRlJywgdG9wOiBwb3MudG9wLCBsZWZ0OiBwb3MubGVmdCB9KTsKLQkJCQkJ
cmV0dXJuIGZhbHNlOwotCQkJCX0pOwotCQkJfSk7Ci0JCTwvc2NyaXB0PgotCTwvaGVhZD4KLQk8
Ym9keT4KLQkJPGRpdiBpZD0icmVsYXRpdmUtMSIgY2xhc3M9InJlbGF0aXZlIj48ZGl2IGlkPSJy
ZWxhdGl2ZS0xLTEiIGNsYXNzPSJyZWxhdGl2ZSI+PGRpdiBpZD0icmVsYXRpdmUtMS0xLTEiIGNs
YXNzPSJyZWxhdGl2ZSI+PC9kaXY+PC9kaXY+PC9kaXY+Ci0JCTxkaXYgaWQ9InJlbGF0aXZlLTIi
IGNsYXNzPSJyZWxhdGl2ZSI+PC9kaXY+Ci0JCTxkaXYgaWQ9Im1hcmtlciI+PC9kaXY+Ci0JCTxw
IGNsYXNzPSJpbnN0cnVjdGlvbnMiPkNsaWNrIHRoZSB3aGl0ZSBib3ggdG8gbW92ZSB0aGUgbWFy
a2VyIHRvIGl0LiBDbGlja2luZyB0aGUgYm94IGFsc28gY2hhbmdlcyB0aGUgcG9zaXRpb24gdG8g
YWJzb2x1dGUgKGlmIG5vdCBhbHJlYWR5KSBhbmQgc2V0cyB0aGUgcG9zaXRpb24gYWNjb3JkaW5n
IHRvIHRoZSBwb3NpdGlvbiBtZXRob2QuPC9wPgotCTwvYm9keT4KLTwvaHRtbD4KClByb3BlcnR5
IGNoYW5nZXMgb246IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNl
dC9yZWxhdGl2ZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogYWxsb3ctdGFicwojIyAtMSArMCww
ICMjCi15ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVz
dHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvb2Zmc2V0L3Njcm9sbC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNldC9zY3Jv
bGwuaHRtbAkocmV2aXNpb24gMjc3ODMyKQorKysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNl
cy90ZXN0L2RhdGEvb2Zmc2V0L3Njcm9sbC5odG1sCShub25leGlzdGVudCkKQEAgLTEsNDggKzAs
MCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNp
dGlvbmFsLy9FTiIKLQkiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJh
bnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD4KLQk8aGVhZD4KLQkJPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgotCQk8dGl0bGU+
c2Nyb2xsPC90aXRsZT4KLQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4K
LQkJCWJvZHkgeyBtYXJnaW46IDFweDsgcGFkZGluZzogNXB4OyB9Ci0JCQlkaXYuc2Nyb2xsIHsg
cG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDFweDsgYm9yZGVyOiAycHggc29saWQgIzAwMDsg
cGFkZGluZzogNXB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6ICNm
ZmY7IG92ZXJmbG93OiBhdXRvOyB9Ci0JCQkjc2Nyb2xsLTEgeyB0b3A6IDA7IGxlZnQ6IDA7IH0K
LQkJCQkjc2Nyb2xsLTEtMSB7IHRvcDogMXB4OyBsZWZ0OiAxcHg7IH0KLQkJCQkJI3Njcm9sbC0x
LTEtMSB7IHRvcDogMXB4OyBsZWZ0OiAxcHg7IH0KLQkJCSNmb3JjZVNjcm9sbCB7IHdpZHRoOiA1
MDAwcHg7IGhlaWdodDogNTAwMHB4OyB9Ci0JCQkjbWFya2VyIHsgcG9zaXRpb246IGFic29sdXRl
OyBib3JkZXI6IDJweCBzb2xpZCAjMDAwOyB3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyBiYWNr
Z3JvdW5kOiAjY2NjOyB9Ci0JCTwvc3R5bGU+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMv
Y29yZS5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvZGVmZXJyZWQu
anMiPjwvc2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL3N1cHBvcnQuanMiPjwv
c2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL3NpenpsZS9zaXp6bGUuanMiPjwv
c2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL3NpenpsZS1qcXVlcnkuanMiPjwv
c2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL3RyYXZlcnNpbmcuanMiPjwvc2Ny
aXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL2RhdGEuanMiPjwvc2NyaXB0PgotCQk8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL2V2ZW50LmpzIj48L3NjcmlwdD4KLQkJPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3NyYy9jc3MuanMiPjwvc2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vc3JjL29mZnNldC5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0JCQlqUXVlcnkoZnVuY3Rpb24oJCkgewotCQkJCXdpbmRv
dy5zY3JvbGxUbygxMDAwLDEwMDApOwotCQkJCSQoJyNzY3JvbGwtMScpWzBdLnNjcm9sbExlZnQg
PSA1OwotCQkJCSQoJyNzY3JvbGwtMScpWzBdLnNjcm9sbFRvcCA9IDU7Ci0JCQkJJCgnLnNjcm9s
bCcpLmNsaWNrKGZ1bmN0aW9uKCkgewotCQkJCQkkKCcjbWFya2VyJykuY3NzKCAkKHRoaXMpLm9m
ZnNldCgpICk7Ci0JCQkJCXJldHVybiBmYWxzZTsKLQkJCQl9KTsKLQkJCX0pOwotCQk8L3Njcmlw
dD4KLQk8L2hlYWQ+Ci0JPGJvZHk+Ci0JCTxkaXYgaWQ9InNjcm9sbC0xIiBjbGFzcz0ic2Nyb2xs
Ij4KLQkJCTxkaXYgaWQ9InNjcm9sbC0xLTEiIGNsYXNzPSJzY3JvbGwiPgotCQkJCTxkaXYgaWQ9
InNjcm9sbC0xLTEtMSIgY2xhc3M9InNjcm9sbCI+PC9kaXY+Ci0JCQk8L2Rpdj4KLQkJPC9kaXY+
Ci0JCTxkaXYgaWQ9ImZvcmNlU2Nyb2xsIj48L2Rpdj4KLQkJPGRpdiBpZD0ibWFya2VyIj48L2Rp
dj4KLQkJPHAgY2xhc3M9Imluc3RydWN0aW9ucyI+Q2xpY2sgdGhlIHdoaXRlIGJveCB0byBtb3Zl
IHRoZSBtYXJrZXIgdG8gaXQuPC9wPgotCTwvYm9keT4KLTwvaHRtbD4KClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNldC9zY3Jv
bGwuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAsMCAjIwoteWVz
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2pxdWVy
eS9yZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNldC9zdGF0aWMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9vZmZzZXQvc3RhdGljLmh0bWwJ
KHJldmlzaW9uIDI3NzgzMikKKysrIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9k
YXRhL29mZnNldC9zdGF0aWMuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDQwICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8v
RU4iCi0JImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgotPGh0bWw+Ci0JPGhlYWQ+Ci0JCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLQkJPHRpdGxlPnN0YXRpYzwv
dGl0bGU+Ci0JCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Ci0JCQlib2R5
IHsgbWFyZ2luOiAxcHg7IHBhZGRpbmc6IDVweDsgfQotCQkJZGl2LnN0YXRpYyB7IHBvc2l0aW9u
OiBzdGF0aWM7IHRvcDogMDsgbGVmdDogMDsgbWFyZ2luOiAxcHg7IGJvcmRlcjogMnB4IHNvbGlk
ICMwMDA7IHBhZGRpbmc6IDVweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3Jv
dW5kOiAjZmZmOyBvdmVyZmxvdzogaGlkZGVuOyB9Ci0JCQkjc3RhdGljLTIgeyB0b3A6IDIwcHg7
IGxlZnQ6IDIwcHg7IH0KLQkJCSNtYXJrZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvcmRlcjog
MnB4IHNvbGlkICMwMDA7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6ICNj
Y2M7IH0KLQkJPC9zdHlsZT4KLQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9jb3JlLmpzIj48
L3NjcmlwdD4KLQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9kZWZlcnJlZC5qcyI+PC9zY3Jp
cHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Ci0J
CTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvc2l6emxlL3NpenpsZS5qcyI+PC9zY3JpcHQ+Ci0J
CTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvc2l6emxlLWpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci0J
CTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvdHJhdmVyc2luZy5qcyI+PC9zY3JpcHQ+Ci0JCTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvZGF0YS5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9zcmMvZXZlbnQuanMiPjwvc2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vc3JjL2Nzcy5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9zcmMvb2Zm
c2V0LmpzIj48L3NjcmlwdD4KLQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KLQkJCWpRdWVyeShmdW5jdGlvbigkKSB7Ci0JCQkJJCgnLnN0YXRpYycpLmNs
aWNrKGZ1bmN0aW9uKCkgewotCQkJCQkkKCcjbWFya2VyJykuY3NzKCAkKHRoaXMpLm9mZnNldCgp
ICk7Ci0JCQkJCXZhciBwb3MgPSAkKHRoaXMpLnBvc2l0aW9uKCk7Ci0JCQkJCSQodGhpcykuY3Nz
KHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogcG9zLnRvcCwgbGVmdDogcG9zLmxlZnQgfSk7
Ci0JCQkJCXJldHVybiBmYWxzZTsKLQkJCQl9KTsKLQkJCX0pOwotCQk8L3NjcmlwdD4KLQk8L2hl
YWQ+Ci0JPGJvZHk+Ci0JCTxkaXYgaWQ9InN0YXRpYy0xIiBjbGFzcz0ic3RhdGljIj48ZGl2IGlk
PSJzdGF0aWMtMS0xIiBjbGFzcz0ic3RhdGljIj48ZGl2IGlkPSJzdGF0aWMtMS0xLTEiIGNsYXNz
PSJzdGF0aWMiPjwvZGl2PjwvZGl2PjwvZGl2PgotCQk8ZGl2IGlkPSJzdGF0aWMtMiIgY2xhc3M9
InN0YXRpYyI+PC9kaXY+Ci0JCTxkaXYgaWQ9Im1hcmtlciI+PC9kaXY+Ci0JCTxwIGNsYXNzPSJp
bnN0cnVjdGlvbnMiPkNsaWNrIHRoZSB3aGl0ZSBib3ggdG8gbW92ZSB0aGUgbWFya2VyIHRvIGl0
LiBDbGlja2luZyB0aGUgYm94IGFsc28gY2hhbmdlcyB0aGUgcG9zaXRpb24gdG8gYWJzb2x1dGUg
KGlmIG5vdCBhbHJlYWR5KSBhbmQgc2V0cyB0aGUgcG9zaXRpb24gYWNjb3JkaW5nIHRvIHRoZSBw
b3NpdGlvbiBtZXRob2QuPC9wPgotCTwvYm9keT4KLTwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNldC9zdGF0aWMu
aHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkRlbGV0ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAsMCAjIwoteWVzClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2pxdWVyeS9y
ZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNldC90YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9kYXRhL29mZnNldC90YWJsZS5odG1sCShyZXZp
c2lvbiAyNzc4MzIpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9v
ZmZzZXQvdGFibGUuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDUyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCi0J
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQi
PgotPGh0bWw+Ci0JPGhlYWQ+Ci0JCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLQkJPHRpdGxlPnRhYmxlPC90aXRsZT4K
LQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KLQkJCWJvZHkgeyBtYXJn
aW46IDFweDsgcGFkZGluZzogNXB4OyB9Ci0JCQl0YWJsZSB7IGJvcmRlcjogMnB4IHNvbGlkICMw
MDA7IH0KLQkJCXRoLCB0ZCB7IGJvcmRlcjogMXB4IHNvbGlkICMwMDA7IHdpZHRoOiAxMDBweDsg
aGVpZ2h0OiAxMDBweDsgfQotCQkJI21hcmtlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgYm9yZGVy
OiAycHggc29saWQgIzAwMDsgd2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDog
I2NjYzsgfQotCQk8L3N0eWxlPgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL2NvcmUuanMi
Pjwvc2NyaXB0PgotCQk8c2NyaXB0IHNyYz0iLi4vLi4vLi4vc3JjL2RlZmVycmVkLmpzIj48L3Nj
cmlwdD4KLQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9zdXBwb3J0LmpzIj48L3NjcmlwdD4K
LQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9zaXp6bGUvc2l6emxlLmpzIj48L3NjcmlwdD4K
LQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9zaXp6bGUtanF1ZXJ5LmpzIj48L3NjcmlwdD4K
LQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy90cmF2ZXJzaW5nLmpzIj48L3NjcmlwdD4KLQkJ
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9kYXRhLmpzIj48L3NjcmlwdD4KLQkJPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3NyYy9ldmVudC5qcyI+PC9zY3JpcHQ+Ci0JCTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9zcmMvY3NzLmpzIj48L3NjcmlwdD4KLQkJPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3NyYy9v
ZmZzZXQuanMiPjwvc2NyaXB0PgotCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hh
cnNldD0idXRmLTgiPgotCQkJalF1ZXJ5KGZ1bmN0aW9uKCQpIHsKLQkJCQkkKCd0YWJsZSwgdGgs
IHRkJykuY2xpY2soZnVuY3Rpb24oKSB7Ci0JCQkJCSQoJyNtYXJrZXInKS5jc3MoICQodGhpcyku
b2Zmc2V0KCkgKTsKLQkJCQkJcmV0dXJuIGZhbHNlOwotCQkJCX0pOwotCQkJfSk7Ci0JCTwvc2Ny
aXB0PgotCTwvaGVhZD4KLQk8Ym9keT4KLQkJPHRhYmxlIGlkPSJ0YWJsZS0xIj4KLQkJCTx0aGVh
ZD4KLQkJCQk8dHIgdmFsaWduPSJ0b3AiPgotCQkJCQk8dGggaWQ9InRoLTEiPnRoLTE8L3RoPgot
CQkJCQk8dGggaWQ9InRoLTIiPnRoLTI8L3RoPgotCQkJCQk8dGggaWQ9InRoLTMiPnRoLTM8L3Ro
PgotCQkJCTwvdHI+Ci0JCQk8L3RoZWFkPgotCQkJPHRib2R5PgotCQkJCTx0ciB2YWxpZ249InRv
cCI+Ci0JCQkJCTx0ZCBpZD0idGQtMSI+dGQtMTwvdGQ+Ci0JCQkJCTx0ZCBpZD0idGQtMiI+dGQt
MjwvdGQ+Ci0JCQkJCTx0ZCBpZD0idGQtMyI+dGQtMzwvdGQ+Ci0JCQkJPC90cj4KLQkJCTwvdGJv
ZHk+Ci0JCTwvdGFibGU+Ci0JCTxkaXYgaWQ9Im1hcmtlciI+PC9kaXY+Ci0JCTxwIGNsYXNzPSJp
bnN0cnVjdGlvbnMiPkNsaWNrIHRoZSB3aGl0ZSBib3ggdG8gbW92ZSB0aGUgbWFya2VyIHRvIGl0
LjwvcD4KLQk8L2JvZHk+Ci08L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9vZmZzZXQvdGFibGUuaHRtbApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAsMCAjIwoteWVzClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429556</attachid>
            <date>2021-05-24 13:26:04 -0700</date>
            <delta_ts>2021-05-24 14:44:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226043-20210524132603.patch</filename>
            <type>text/plain</type>
            <size>63506</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3Nzk2MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA1LTI0ICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KKworICAgICAgICBbTGF5b3V0VGVzdHNdIERlbGV0ZSB1bnVz
ZWQganF1ZXJ5IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2MDQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83ODI3Nzg4MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZXdlaSBaaHUuCisKKyAgICAgICAgKiBqcXVlcnkvcmVzb3Vy
Y2VzL3NyYy9pbnRyby5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3Ny
Yy9vdXRyby5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3NyYy9zZWxl
Y3Rvci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3Rlc3QvY3NwLnBo
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9yZWFkeXdh
aXRhc3NldC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0
YS9yZWFkeXdhaXRsb2FkZXIuanM6IFJlbW92ZWQuCisgICAgICAgICoganF1ZXJ5L3Jlc291cmNl
cy90ZXN0L2RlbGVnYXRldGVzdC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGpxdWVyeS9yZXNv
dXJjZXMvdGVzdC9sb2NhbGZpbGUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkvcmVz
b3VyY2VzL3Rlc3QvbmV0d29ya2Vycm9yLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICoganF1ZXJ5
L3Jlc291cmNlcy90ZXN0L3BvbGx1dGVkLnBocDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcXVlcnkv
cmVzb3VyY2VzL3Rlc3QvcmVhZHl3YWl0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICoganF1ZXJ5
L3Jlc291cmNlcy90ZXN0L3hodG1sLnBocDogUmVtb3ZlZC4KKwogMjAyMS0wNS0yNCAgS2F0ZSBD
aGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBbIHdrMiBdIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC1vbmx5LWNvbm5l
Y3Qtc3JjLXhtbGh0dHByZXF1ZXN0LXJlZGlyZWN0LXRvLWJsb2NrZWQucHkgaXMgYSBjb25zdGFu
dCB0ZXh0IGZhaWx1cmUKSW5kZXg6IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvc3JjL2lu
dHJvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvc3JjL2lu
dHJvLmpzCShyZXZpc2lvbiAyNzc5NjMpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2Vz
L3NyYy9pbnRyby5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE5ICswLDAgQEAKLS8qIQotICogalF1
ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2QFZFUlNJT04KLSAqIGh0dHA6Ly9qcXVlcnkuY29tLwot
ICoKLSAqIENvcHlyaWdodCAyMDExLCBKb2huIFJlc2lnCi0gKiBEdWFsIGxpY2Vuc2VkIHVuZGVy
IHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KLSAqIGh0dHA6Ly9qcXVlcnkub3Jn
L2xpY2Vuc2UKLSAqCi0gKiBJbmNsdWRlcyBTaXp6bGUuanMKLSAqIGh0dHA6Ly9zaXp6bGVqcy5j
b20vCi0gKiBDb3B5cmlnaHQgMjAxMSwgVGhlIERvam8gRm91bmRhdGlvbgotICogUmVsZWFzZWQg
dW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgotICoKLSAqIERhdGU6IEBEQVRF
Ci0gKi8KLShmdW5jdGlvbiggd2luZG93LCB1bmRlZmluZWQgKSB7Ci0KLS8vIFVzZSB0aGUgY29y
cmVjdCBkb2N1bWVudCBhY2NvcmRpbmdseSB3aXRoIHdpbmRvdyBhcmd1bWVudCAoc2FuZGJveCkK
LXZhciBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDsKSW5kZXg6IExheW91dFRlc3RzL2pxdWVy
eS9yZXNvdXJjZXMvc3JjL291dHJvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVy
eS9yZXNvdXJjZXMvc3JjL291dHJvLmpzCShyZXZpc2lvbiAyNzc5NjMpCisrKyBMYXlvdXRUZXN0
cy9qcXVlcnkvcmVzb3VyY2VzL3NyYy9vdXRyby5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDIgKzAs
MCBAQAotd2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5OwotfSkod2luZG93KTsKSW5k
ZXg6IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvc3JjL3NlbGVjdG9yLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvc3JjL3NlbGVjdG9yLmpzCShyZXZp
c2lvbiAyNzc5NjMpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3NyYy9zZWxlY3Rv
ci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDEzOTIgKzAsMCBAQAotLyohCi0gKiBTaXp6bGUgQ1NT
IFNlbGVjdG9yIEVuZ2luZQotICogIENvcHlyaWdodCAyMDExLCBUaGUgRG9qbyBGb3VuZGF0aW9u
Ci0gKiAgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgotICog
IE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVqcy5jb20vCi0gKi8KLShmdW5jdGlvbigp
ewotCi12YXIgY2h1bmtlciA9IC8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykrXCl8XFsoPzpc
W1teXFtcXV0qXF18WyciXVteJyJdKlsnIl18W15cW1xdJyJdKykrXF18XFwufFteID4rfiwoXFtc
XF0rKSt8Wz4rfl0pKFxzKixccyopPygoPzoufFxyfFxuKSopL2csCi0JZG9uZSA9IDAsCi0JdG9T
dHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLAotCWhhc0R1cGxpY2F0ZSA9IGZhbHNl
LAotCWJhc2VIYXNEdXBsaWNhdGUgPSB0cnVlLAotCXJCYWNrc2xhc2ggPSAvXFwvZywKLQlyTm9u
V29yZCA9IC9cVy87Ci0KLS8vIEhlcmUgd2UgY2hlY2sgaWYgdGhlIEphdmFTY3JpcHQgZW5naW5l
IGlzIHVzaW5nIHNvbWUgc29ydCBvZgotLy8gb3B0aW1pemF0aW9uIHdoZXJlIGl0IGRvZXMgbm90
IGFsd2F5cyBjYWxsIG91ciBjb21wYXJpc2lvbgotLy8gZnVuY3Rpb24uIElmIHRoYXQgaXMgdGhl
IGNhc2UsIGRpc2NhcmQgdGhlIGhhc0R1cGxpY2F0ZSB2YWx1ZS4KLS8vICAgVGh1cyBmYXIgdGhh
dCBpbmNsdWRlcyBHb29nbGUgQ2hyb21lLgotWzAsIDBdLnNvcnQoZnVuY3Rpb24oKSB7Ci0JYmFz
ZUhhc0R1cGxpY2F0ZSA9IGZhbHNlOwotCXJldHVybiAwOwotfSk7Ci0KLXZhciBTaXp6bGUgPSBm
dW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7Ci0JcmVzdWx0cyA9
IHJlc3VsdHMgfHwgW107Ci0JY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7Ci0KLQl2YXIg
b3JpZ0NvbnRleHQgPSBjb250ZXh0OwotCi0JaWYgKCBjb250ZXh0Lm5vZGVUeXBlICE9PSAxICYm
IGNvbnRleHQubm9kZVR5cGUgIT09IDkgKSB7Ci0JCXJldHVybiBbXTsKLQl9Ci0JCi0JaWYgKCAh
c2VsZWN0b3IgfHwgdHlwZW9mIHNlbGVjdG9yICE9PSAic3RyaW5nIiApIHsKLQkJcmV0dXJuIHJl
c3VsdHM7Ci0JfQotCi0JdmFyIG0sIHNldCwgY2hlY2tTZXQsIGV4dHJhLCByZXQsIGN1ciwgcG9w
LCBpLAotCQlwcnVuZSA9IHRydWUsCi0JCWNvbnRleHRYTUwgPSBTaXp6bGUuaXNYTUwoIGNvbnRl
eHQgKSwKLQkJcGFydHMgPSBbXSwKLQkJc29GYXIgPSBzZWxlY3RvcjsKLQkKLQkvLyBSZXNldCB0
aGUgcG9zaXRpb24gb2YgdGhlIGNodW5rZXIgcmVnZXhwIChzdGFydCBmcm9tIGhlYWQpCi0JZG8g
ewotCQljaHVua2VyLmV4ZWMoICIiICk7Ci0JCW0gPSBjaHVua2VyLmV4ZWMoIHNvRmFyICk7Ci0K
LQkJaWYgKCBtICkgewotCQkJc29GYXIgPSBtWzNdOwotCQkKLQkJCXBhcnRzLnB1c2goIG1bMV0g
KTsKLQkJCi0JCQlpZiAoIG1bMl0gKSB7Ci0JCQkJZXh0cmEgPSBtWzNdOwotCQkJCWJyZWFrOwot
CQkJfQotCQl9Ci0JfSB3aGlsZSAoIG0gKTsKLQotCWlmICggcGFydHMubGVuZ3RoID4gMSAmJiBv
cmlnUE9TLmV4ZWMoIHNlbGVjdG9yICkgKSB7Ci0KLQkJaWYgKCBwYXJ0cy5sZW5ndGggPT09IDIg
JiYgRXhwci5yZWxhdGl2ZVsgcGFydHNbMF0gXSApIHsKLQkJCXNldCA9IHBvc1Byb2Nlc3MoIHBh
cnRzWzBdICsgcGFydHNbMV0sIGNvbnRleHQgKTsKLQotCQl9IGVsc2UgewotCQkJc2V0ID0gRXhw
ci5yZWxhdGl2ZVsgcGFydHNbMF0gXSA/Ci0JCQkJWyBjb250ZXh0IF0gOgotCQkJCVNpenpsZSgg
cGFydHMuc2hpZnQoKSwgY29udGV4dCApOwotCi0JCQl3aGlsZSAoIHBhcnRzLmxlbmd0aCApIHsK
LQkJCQlzZWxlY3RvciA9IHBhcnRzLnNoaWZ0KCk7Ci0KLQkJCQlpZiAoIEV4cHIucmVsYXRpdmVb
IHNlbGVjdG9yIF0gKSB7Ci0JCQkJCXNlbGVjdG9yICs9IHBhcnRzLnNoaWZ0KCk7Ci0JCQkJfQot
CQkJCQotCQkJCXNldCA9IHBvc1Byb2Nlc3MoIHNlbGVjdG9yLCBzZXQgKTsKLQkJCX0KLQkJfQot
Ci0JfSBlbHNlIHsKLQkJLy8gVGFrZSBhIHNob3J0Y3V0IGFuZCBzZXQgdGhlIGNvbnRleHQgaWYg
dGhlIHJvb3Qgc2VsZWN0b3IgaXMgYW4gSUQKLQkJLy8gKGJ1dCBub3QgaWYgaXQnbGwgYmUgZmFz
dGVyIGlmIHRoZSBpbm5lciBzZWxlY3RvciBpcyBhbiBJRCkKLQkJaWYgKCAhc2VlZCAmJiBwYXJ0
cy5sZW5ndGggPiAxICYmIGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgIWNvbnRleHRYTUwgJiYK
LQkJCQlFeHByLm1hdGNoLklELnRlc3QocGFydHNbMF0pICYmICFFeHByLm1hdGNoLklELnRlc3Qo
cGFydHNbcGFydHMubGVuZ3RoIC0gMV0pICkgewotCi0JCQlyZXQgPSBTaXp6bGUuZmluZCggcGFy
dHMuc2hpZnQoKSwgY29udGV4dCwgY29udGV4dFhNTCApOwotCQkJY29udGV4dCA9IHJldC5leHBy
ID8KLQkJCQlTaXp6bGUuZmlsdGVyKCByZXQuZXhwciwgcmV0LnNldCApWzBdIDoKLQkJCQlyZXQu
c2V0WzBdOwotCQl9Ci0KLQkJaWYgKCBjb250ZXh0ICkgewotCQkJcmV0ID0gc2VlZCA/Ci0JCQkJ
eyBleHByOiBwYXJ0cy5wb3AoKSwgc2V0OiBtYWtlQXJyYXkoc2VlZCkgfSA6Ci0JCQkJU2l6emxl
LmZpbmQoIHBhcnRzLnBvcCgpLCBwYXJ0cy5sZW5ndGggPT09IDEgJiYgKHBhcnRzWzBdID09PSAi
fiIgfHwgcGFydHNbMF0gPT09ICIrIikgJiYgY29udGV4dC5wYXJlbnROb2RlID8gY29udGV4dC5w
YXJlbnROb2RlIDogY29udGV4dCwgY29udGV4dFhNTCApOwotCi0JCQlzZXQgPSByZXQuZXhwciA/
Ci0JCQkJU2l6emxlLmZpbHRlciggcmV0LmV4cHIsIHJldC5zZXQgKSA6Ci0JCQkJcmV0LnNldDsK
LQotCQkJaWYgKCBwYXJ0cy5sZW5ndGggPiAwICkgewotCQkJCWNoZWNrU2V0ID0gbWFrZUFycmF5
KCBzZXQgKTsKLQotCQkJfSBlbHNlIHsKLQkJCQlwcnVuZSA9IGZhbHNlOwotCQkJfQotCi0JCQl3
aGlsZSAoIHBhcnRzLmxlbmd0aCApIHsKLQkJCQljdXIgPSBwYXJ0cy5wb3AoKTsKLQkJCQlwb3Ag
PSBjdXI7Ci0KLQkJCQlpZiAoICFFeHByLnJlbGF0aXZlWyBjdXIgXSApIHsKLQkJCQkJY3VyID0g
IiI7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJcG9wID0gcGFydHMucG9wKCk7Ci0JCQkJfQotCi0JCQkJ
aWYgKCBwb3AgPT0gbnVsbCApIHsKLQkJCQkJcG9wID0gY29udGV4dDsKLQkJCQl9Ci0KLQkJCQlF
eHByLnJlbGF0aXZlWyBjdXIgXSggY2hlY2tTZXQsIHBvcCwgY29udGV4dFhNTCApOwotCQkJfQot
Ci0JCX0gZWxzZSB7Ci0JCQljaGVja1NldCA9IHBhcnRzID0gW107Ci0JCX0KLQl9Ci0KLQlpZiAo
ICFjaGVja1NldCApIHsKLQkJY2hlY2tTZXQgPSBzZXQ7Ci0JfQotCi0JaWYgKCAhY2hlY2tTZXQg
KSB7Ci0JCVNpenpsZS5lcnJvciggY3VyIHx8IHNlbGVjdG9yICk7Ci0JfQotCi0JaWYgKCB0b1N0
cmluZy5jYWxsKGNoZWNrU2V0KSA9PT0gIltvYmplY3QgQXJyYXldIiApIHsKLQkJaWYgKCAhcHJ1
bmUgKSB7Ci0JCQlyZXN1bHRzLnB1c2guYXBwbHkoIHJlc3VsdHMsIGNoZWNrU2V0ICk7Ci0KLQkJ
fSBlbHNlIGlmICggY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID09PSAxICkgewotCQkJZm9y
ICggaSA9IDA7IGNoZWNrU2V0W2ldICE9IG51bGw7IGkrKyApIHsKLQkJCQlpZiAoIGNoZWNrU2V0
W2ldICYmIChjaGVja1NldFtpXSA9PT0gdHJ1ZSB8fCBjaGVja1NldFtpXS5ub2RlVHlwZSA9PT0g
MSAmJiBTaXp6bGUuY29udGFpbnMoY29udGV4dCwgY2hlY2tTZXRbaV0pKSApIHsKLQkJCQkJcmVz
dWx0cy5wdXNoKCBzZXRbaV0gKTsKLQkJCQl9Ci0JCQl9Ci0KLQkJfSBlbHNlIHsKLQkJCWZvciAo
IGkgPSAwOyBjaGVja1NldFtpXSAhPSBudWxsOyBpKysgKSB7Ci0JCQkJaWYgKCBjaGVja1NldFtp
XSAmJiBjaGVja1NldFtpXS5ub2RlVHlwZSA9PT0gMSApIHsKLQkJCQkJcmVzdWx0cy5wdXNoKCBz
ZXRbaV0gKTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQotCX0gZWxzZSB7Ci0JCW1ha2VBcnJheSggY2hl
Y2tTZXQsIHJlc3VsdHMgKTsKLQl9Ci0KLQlpZiAoIGV4dHJhICkgewotCQlTaXp6bGUoIGV4dHJh
LCBvcmlnQ29udGV4dCwgcmVzdWx0cywgc2VlZCApOwotCQlTaXp6bGUudW5pcXVlU29ydCggcmVz
dWx0cyApOwotCX0KLQotCXJldHVybiByZXN1bHRzOwotfTsKLQotU2l6emxlLnVuaXF1ZVNvcnQg
PSBmdW5jdGlvbiggcmVzdWx0cyApIHsKLQlpZiAoIHNvcnRPcmRlciApIHsKLQkJaGFzRHVwbGlj
YXRlID0gYmFzZUhhc0R1cGxpY2F0ZTsKLQkJcmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTsKLQot
CQlpZiAoIGhhc0R1cGxpY2F0ZSApIHsKLQkJCWZvciAoIHZhciBpID0gMTsgaSA8IHJlc3VsdHMu
bGVuZ3RoOyBpKysgKSB7Ci0JCQkJaWYgKCByZXN1bHRzW2ldID09PSByZXN1bHRzWyBpIC0gMSBd
ICkgewotCQkJCQlyZXN1bHRzLnNwbGljZSggaS0tLCAxICk7Ci0JCQkJfQotCQkJfQotCQl9Ci0J
fQotCi0JcmV0dXJuIHJlc3VsdHM7Ci19OwotCi1TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBl
eHByLCBzZXQgKSB7Ci0JcmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgc2V0ICk7Ci19
OwotCi1TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIG5vZGUsIGV4cHIgKSB7Ci0J
cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgW25vZGVdICkubGVuZ3RoID4gMDsKLX07
Ci0KLVNpenpsZS5maW5kID0gZnVuY3Rpb24oIGV4cHIsIGNvbnRleHQsIGlzWE1MICkgewotCXZh
ciBzZXQ7Ci0KLQlpZiAoICFleHByICkgewotCQlyZXR1cm4gW107Ci0JfQotCi0JZm9yICggdmFy
IGkgPSAwLCBsID0gRXhwci5vcmRlci5sZW5ndGg7IGkgPCBsOyBpKysgKSB7Ci0JCXZhciBtYXRj
aCwKLQkJCXR5cGUgPSBFeHByLm9yZGVyW2ldOwotCQkKLQkJaWYgKCAobWF0Y2ggPSBFeHByLmxl
ZnRNYXRjaFsgdHlwZSBdLmV4ZWMoIGV4cHIgKSkgKSB7Ci0JCQl2YXIgbGVmdCA9IG1hdGNoWzFd
OwotCQkJbWF0Y2guc3BsaWNlKCAxLCAxICk7Ci0KLQkJCWlmICggbGVmdC5zdWJzdHIoIGxlZnQu
bGVuZ3RoIC0gMSApICE9PSAiXFwiICkgewotCQkJCW1hdGNoWzFdID0gKG1hdGNoWzFdIHx8ICIi
KS5yZXBsYWNlKCByQmFja3NsYXNoLCAiIiApOwotCQkJCXNldCA9IEV4cHIuZmluZFsgdHlwZSBd
KCBtYXRjaCwgY29udGV4dCwgaXNYTUwgKTsKLQotCQkJCWlmICggc2V0ICE9IG51bGwgKSB7Ci0J
CQkJCWV4cHIgPSBleHByLnJlcGxhY2UoIEV4cHIubWF0Y2hbIHR5cGUgXSwgIiIgKTsKLQkJCQkJ
YnJlYWs7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JaWYgKCAhc2V0ICkgewotCQlzZXQgPSB0
eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gInVuZGVmaW5lZCIgPwotCQkJ
Y29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggIioiICkgOgotCQkJW107Ci0JfQotCi0JcmV0
dXJuIHsgc2V0OiBzZXQsIGV4cHI6IGV4cHIgfTsKLX07Ci0KLVNpenpsZS5maWx0ZXIgPSBmdW5j
dGlvbiggZXhwciwgc2V0LCBpbnBsYWNlLCBub3QgKSB7Ci0JdmFyIG1hdGNoLCBhbnlGb3VuZCwK
LQkJb2xkID0gZXhwciwKLQkJcmVzdWx0ID0gW10sCi0JCWN1ckxvb3AgPSBzZXQsCi0JCWlzWE1M
RmlsdGVyID0gc2V0ICYmIHNldFswXSAmJiBTaXp6bGUuaXNYTUwoIHNldFswXSApOwotCi0Jd2hp
bGUgKCBleHByICYmIHNldC5sZW5ndGggKSB7Ci0JCWZvciAoIHZhciB0eXBlIGluIEV4cHIuZmls
dGVyICkgewotCQkJaWYgKCAobWF0Y2ggPSBFeHByLmxlZnRNYXRjaFsgdHlwZSBdLmV4ZWMoIGV4
cHIgKSkgIT0gbnVsbCAmJiBtYXRjaFsyXSApIHsKLQkJCQl2YXIgZm91bmQsIGl0ZW0sCi0JCQkJ
CWZpbHRlciA9IEV4cHIuZmlsdGVyWyB0eXBlIF0sCi0JCQkJCWxlZnQgPSBtYXRjaFsxXTsKLQot
CQkJCWFueUZvdW5kID0gZmFsc2U7Ci0KLQkJCQltYXRjaC5zcGxpY2UoMSwxKTsKLQotCQkJCWlm
ICggbGVmdC5zdWJzdHIoIGxlZnQubGVuZ3RoIC0gMSApID09PSAiXFwiICkgewotCQkJCQljb250
aW51ZTsKLQkJCQl9Ci0KLQkJCQlpZiAoIGN1ckxvb3AgPT09IHJlc3VsdCApIHsKLQkJCQkJcmVz
dWx0ID0gW107Ci0JCQkJfQotCi0JCQkJaWYgKCBFeHByLnByZUZpbHRlclsgdHlwZSBdICkgewot
CQkJCQltYXRjaCA9IEV4cHIucHJlRmlsdGVyWyB0eXBlIF0oIG1hdGNoLCBjdXJMb29wLCBpbnBs
YWNlLCByZXN1bHQsIG5vdCwgaXNYTUxGaWx0ZXIgKTsKLQotCQkJCQlpZiAoICFtYXRjaCApIHsK
LQkJCQkJCWFueUZvdW5kID0gZm91bmQgPSB0cnVlOwotCi0JCQkJCX0gZWxzZSBpZiAoIG1hdGNo
ID09PSB0cnVlICkgewotCQkJCQkJY29udGludWU7Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJCQlpZiAo
IG1hdGNoICkgewotCQkJCQlmb3IgKCB2YXIgaSA9IDA7IChpdGVtID0gY3VyTG9vcFtpXSkgIT0g
bnVsbDsgaSsrICkgewotCQkJCQkJaWYgKCBpdGVtICkgewotCQkJCQkJCWZvdW5kID0gZmlsdGVy
KCBpdGVtLCBtYXRjaCwgaSwgY3VyTG9vcCApOwotCQkJCQkJCXZhciBwYXNzID0gbm90IF4gISFm
b3VuZDsKLQotCQkJCQkJCWlmICggaW5wbGFjZSAmJiBmb3VuZCAhPSBudWxsICkgewotCQkJCQkJ
CQlpZiAoIHBhc3MgKSB7Ci0JCQkJCQkJCQlhbnlGb3VuZCA9IHRydWU7Ci0KLQkJCQkJCQkJfSBl
bHNlIHsKLQkJCQkJCQkJCWN1ckxvb3BbaV0gPSBmYWxzZTsKLQkJCQkJCQkJfQotCi0JCQkJCQkJ
fSBlbHNlIGlmICggcGFzcyApIHsKLQkJCQkJCQkJcmVzdWx0LnB1c2goIGl0ZW0gKTsKLQkJCQkJ
CQkJYW55Rm91bmQgPSB0cnVlOwotCQkJCQkJCX0KLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQot
CQkJCWlmICggZm91bmQgIT09IHVuZGVmaW5lZCApIHsKLQkJCQkJaWYgKCAhaW5wbGFjZSApIHsK
LQkJCQkJCWN1ckxvb3AgPSByZXN1bHQ7Ci0JCQkJCX0KLQotCQkJCQlleHByID0gZXhwci5yZXBs
YWNlKCBFeHByLm1hdGNoWyB0eXBlIF0sICIiICk7Ci0KLQkJCQkJaWYgKCAhYW55Rm91bmQgKSB7
Ci0JCQkJCQlyZXR1cm4gW107Ci0JCQkJCX0KLQotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0J
CX0KLQotCQkvLyBJbXByb3BlciBleHByZXNzaW9uCi0JCWlmICggZXhwciA9PT0gb2xkICkgewot
CQkJaWYgKCBhbnlGb3VuZCA9PSBudWxsICkgewotCQkJCVNpenpsZS5lcnJvciggZXhwciApOwot
Ci0JCQl9IGVsc2UgewotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0KLQkJb2xkID0gZXhwcjsKLQl9
Ci0KLQlyZXR1cm4gY3VyTG9vcDsKLX07Ci0KLVNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cg
KSB7Ci0JdGhyb3cgIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBt
c2c7Ci19OwotCi12YXIgRXhwciA9IFNpenpsZS5zZWxlY3RvcnMgPSB7Ci0Jb3JkZXI6IFsgIklE
IiwgIk5BTUUiLCAiVEFHIiBdLAotCi0JbWF0Y2g6IHsKLQkJSUQ6IC8jKCg/Oltcd1x1MDBjMC1c
dUZGRkZcLV18XFwuKSspLywKLQkJQ0xBU1M6IC9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxc
LikrKS8sCi0JCU5BTUU6IC9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4p
KylbJyJdKlxdLywKLQkJQVRUUjogL1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSsp
XHMqKD86KFxTPz0pXHMqKD86KFsnIl0pKC4qPylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1d
fFxcLikqKXwpfClccypcXS8sCi0JCVRBRzogL14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxc
LikrKS8sCi0JCUNISUxEOiAvOihvbmx5fG50aHxsYXN0fGZpcnN0KS1jaGlsZCg/OlwoXHMqKGV2
ZW58b2RkfCg/OlsrXC1dP1xkK3woPzpbK1wtXT9cZCopP25ccyooPzpbK1wtXVxzKlxkKyk/KSlc
cypcKSk/LywKLQkJUE9TOiAvOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpc
KChcZCopXCkpPyg/PVteXC1dfCQpLywKLQkJUFNFVURPOiAvOigoPzpbXHdcdTAwYzAtXHVGRkZG
XC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/Lwot
CX0sCi0KLQlsZWZ0TWF0Y2g6IHt9LAotCi0JYXR0ck1hcDogewotCQkiY2xhc3MiOiAiY2xhc3NO
YW1lIiwKLQkJImZvciI6ICJodG1sRm9yIgotCX0sCi0KLQlhdHRySGFuZGxlOiB7Ci0JCWhyZWY6
IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCAiaHJlZiIg
KTsKLQkJfSwKLQkJdHlwZTogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gZWxlbS5nZXRB
dHRyaWJ1dGUoICJ0eXBlIiApOwotCQl9Ci0JfSwKLQotCXJlbGF0aXZlOiB7Ci0JCSIrIjogZnVu
Y3Rpb24oY2hlY2tTZXQsIHBhcnQpewotCQkJdmFyIGlzUGFydFN0ciA9IHR5cGVvZiBwYXJ0ID09
PSAic3RyaW5nIiwKLQkJCQlpc1RhZyA9IGlzUGFydFN0ciAmJiAhck5vbldvcmQudGVzdCggcGFy
dCApLAotCQkJCWlzUGFydFN0ck5vdFRhZyA9IGlzUGFydFN0ciAmJiAhaXNUYWc7Ci0KLQkJCWlm
ICggaXNUYWcgKSB7Ci0JCQkJcGFydCA9IHBhcnQudG9Mb3dlckNhc2UoKTsKLQkJCX0KLQotCQkJ
Zm9yICggdmFyIGkgPSAwLCBsID0gY2hlY2tTZXQubGVuZ3RoLCBlbGVtOyBpIDwgbDsgaSsrICkg
ewotCQkJCWlmICggKGVsZW0gPSBjaGVja1NldFtpXSkgKSB7Ci0JCQkJCXdoaWxlICggKGVsZW0g
PSBlbGVtLnByZXZpb3VzU2libGluZykgJiYgZWxlbS5ub2RlVHlwZSAhPT0gMSApIHt9Ci0KLQkJ
CQkJY2hlY2tTZXRbaV0gPSBpc1BhcnRTdHJOb3RUYWcgfHwgZWxlbSAmJiBlbGVtLm5vZGVOYW1l
LnRvTG93ZXJDYXNlKCkgPT09IHBhcnQgPwotCQkJCQkJZWxlbSB8fCBmYWxzZSA6Ci0JCQkJCQll
bGVtID09PSBwYXJ0OwotCQkJCX0KLQkJCX0KLQotCQkJaWYgKCBpc1BhcnRTdHJOb3RUYWcgKSB7
Ci0JCQkJU2l6emxlLmZpbHRlciggcGFydCwgY2hlY2tTZXQsIHRydWUgKTsKLQkJCX0KLQkJfSwK
LQotCQkiPiI6IGZ1bmN0aW9uKCBjaGVja1NldCwgcGFydCApIHsKLQkJCXZhciBlbGVtLAotCQkJ
CWlzUGFydFN0ciA9IHR5cGVvZiBwYXJ0ID09PSAic3RyaW5nIiwKLQkJCQlpID0gMCwKLQkJCQls
ID0gY2hlY2tTZXQubGVuZ3RoOwotCi0JCQlpZiAoIGlzUGFydFN0ciAmJiAhck5vbldvcmQudGVz
dCggcGFydCApICkgewotCQkJCXBhcnQgPSBwYXJ0LnRvTG93ZXJDYXNlKCk7Ci0KLQkJCQlmb3Ig
KCA7IGkgPCBsOyBpKysgKSB7Ci0JCQkJCWVsZW0gPSBjaGVja1NldFtpXTsKLQotCQkJCQlpZiAo
IGVsZW0gKSB7Ci0JCQkJCQl2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwotCQkJCQkJY2hl
Y2tTZXRbaV0gPSBwYXJlbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gcGFydCA/IHBhcmVu
dCA6IGZhbHNlOwotCQkJCQl9Ci0JCQkJfQotCi0JCQl9IGVsc2UgewotCQkJCWZvciAoIDsgaSA8
IGw7IGkrKyApIHsKLQkJCQkJZWxlbSA9IGNoZWNrU2V0W2ldOwotCi0JCQkJCWlmICggZWxlbSAp
IHsKLQkJCQkJCWNoZWNrU2V0W2ldID0gaXNQYXJ0U3RyID8KLQkJCQkJCQllbGVtLnBhcmVudE5v
ZGUgOgotCQkJCQkJCWVsZW0ucGFyZW50Tm9kZSA9PT0gcGFydDsKLQkJCQkJfQotCQkJCX0KLQot
CQkJCWlmICggaXNQYXJ0U3RyICkgewotCQkJCQlTaXp6bGUuZmlsdGVyKCBwYXJ0LCBjaGVja1Nl
dCwgdHJ1ZSApOwotCQkJCX0KLQkJCX0KLQkJfSwKLQotCQkiIjogZnVuY3Rpb24oY2hlY2tTZXQs
IHBhcnQsIGlzWE1MKXsKLQkJCXZhciBub2RlQ2hlY2ssCi0JCQkJZG9uZU5hbWUgPSBkb25lKyss
Ci0JCQkJY2hlY2tGbiA9IGRpckNoZWNrOwotCi0JCQlpZiAoIHR5cGVvZiBwYXJ0ID09PSAic3Ry
aW5nIiAmJiAhck5vbldvcmQudGVzdCggcGFydCApICkgewotCQkJCXBhcnQgPSBwYXJ0LnRvTG93
ZXJDYXNlKCk7Ci0JCQkJbm9kZUNoZWNrID0gcGFydDsKLQkJCQljaGVja0ZuID0gZGlyTm9kZUNo
ZWNrOwotCQkJfQotCi0JCQljaGVja0ZuKCAicGFyZW50Tm9kZSIsIHBhcnQsIGRvbmVOYW1lLCBj
aGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCApOwotCQl9LAotCi0JCSJ+IjogZnVuY3Rpb24oIGNo
ZWNrU2V0LCBwYXJ0LCBpc1hNTCApIHsKLQkJCXZhciBub2RlQ2hlY2ssCi0JCQkJZG9uZU5hbWUg
PSBkb25lKyssCi0JCQkJY2hlY2tGbiA9IGRpckNoZWNrOwotCi0JCQlpZiAoIHR5cGVvZiBwYXJ0
ID09PSAic3RyaW5nIiAmJiAhck5vbldvcmQudGVzdCggcGFydCApICkgewotCQkJCXBhcnQgPSBw
YXJ0LnRvTG93ZXJDYXNlKCk7Ci0JCQkJbm9kZUNoZWNrID0gcGFydDsKLQkJCQljaGVja0ZuID0g
ZGlyTm9kZUNoZWNrOwotCQkJfQotCi0JCQljaGVja0ZuKCAicHJldmlvdXNTaWJsaW5nIiwgcGFy
dCwgZG9uZU5hbWUsIGNoZWNrU2V0LCBub2RlQ2hlY2ssIGlzWE1MICk7Ci0JCX0KLQl9LAotCi0J
ZmluZDogewotCQlJRDogZnVuY3Rpb24oIG1hdGNoLCBjb250ZXh0LCBpc1hNTCApIHsKLQkJCWlm
ICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYmICFpc1hN
TCApIHsKLQkJCQl2YXIgbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQobWF0Y2hbMV0pOwotCQkJ
CS8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5z
Ci0JCQkJLy8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2Mwot
CQkJCXJldHVybiBtICYmIG0ucGFyZW50Tm9kZSA/IFttXSA6IFtdOwotCQkJfQotCQl9LAotCi0J
CU5BTUU6IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCApIHsKLQkJCWlmICggdHlwZW9mIGNvbnRl
eHQuZ2V0RWxlbWVudHNCeU5hbWUgIT09ICJ1bmRlZmluZWQiICkgewotCQkJCXZhciByZXQgPSBb
XSwKLQkJCQkJcmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUoIG1hdGNoWzFdICk7
Ci0KLQkJCQlmb3IgKCB2YXIgaSA9IDAsIGwgPSByZXN1bHRzLmxlbmd0aDsgaSA8IGw7IGkrKyAp
IHsKLQkJCQkJaWYgKCByZXN1bHRzW2ldLmdldEF0dHJpYnV0ZSgibmFtZSIpID09PSBtYXRjaFsx
XSApIHsKLQkJCQkJCXJldC5wdXNoKCByZXN1bHRzW2ldICk7Ci0JCQkJCX0KLQkJCQl9Ci0KLQkJ
CQlyZXR1cm4gcmV0Lmxlbmd0aCA9PT0gMCA/IG51bGwgOiByZXQ7Ci0JCQl9Ci0JCX0sCi0KLQkJ
VEFHOiBmdW5jdGlvbiggbWF0Y2gsIGNvbnRleHQgKSB7Ci0JCQlpZiAoIHR5cGVvZiBjb250ZXh0
LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAidW5kZWZpbmVkIiApIHsKLQkJCQlyZXR1cm4gY29u
dGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggbWF0Y2hbMV0gKTsKLQkJCX0KLQkJfQotCX0sCi0J
cHJlRmlsdGVyOiB7Ci0JCUNMQVNTOiBmdW5jdGlvbiggbWF0Y2gsIGN1ckxvb3AsIGlucGxhY2Us
IHJlc3VsdCwgbm90LCBpc1hNTCApIHsKLQkJCW1hdGNoID0gIiAiICsgbWF0Y2hbMV0ucmVwbGFj
ZSggckJhY2tzbGFzaCwgIiIgKSArICIgIjsKLQotCQkJaWYgKCBpc1hNTCApIHsKLQkJCQlyZXR1
cm4gbWF0Y2g7Ci0JCQl9Ci0KLQkJCWZvciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBjdXJM
b29wW2ldKSAhPSBudWxsOyBpKysgKSB7Ci0JCQkJaWYgKCBlbGVtICkgewotCQkJCQlpZiAoIG5v
dCBeIChlbGVtLmNsYXNzTmFtZSAmJiAoIiAiICsgZWxlbS5jbGFzc05hbWUgKyAiICIpLnJlcGxh
Y2UoL1tcdFxuXHJdL2csICIgIikuaW5kZXhPZihtYXRjaCkgPj0gMCkgKSB7Ci0JCQkJCQlpZiAo
ICFpbnBsYWNlICkgewotCQkJCQkJCXJlc3VsdC5wdXNoKCBlbGVtICk7Ci0JCQkJCQl9Ci0KLQkJ
CQkJfSBlbHNlIGlmICggaW5wbGFjZSApIHsKLQkJCQkJCWN1ckxvb3BbaV0gPSBmYWxzZTsKLQkJ
CQkJfQotCQkJCX0KLQkJCX0KLQotCQkJcmV0dXJuIGZhbHNlOwotCQl9LAotCi0JCUlEOiBmdW5j
dGlvbiggbWF0Y2ggKSB7Ci0JCQlyZXR1cm4gbWF0Y2hbMV0ucmVwbGFjZSggckJhY2tzbGFzaCwg
IiIgKTsKLQkJfSwKLQotCQlUQUc6IGZ1bmN0aW9uKCBtYXRjaCwgY3VyTG9vcCApIHsKLQkJCXJl
dHVybiBtYXRjaFsxXS5yZXBsYWNlKCByQmFja3NsYXNoLCAiIiApLnRvTG93ZXJDYXNlKCk7Ci0J
CX0sCi0KLQkJQ0hJTEQ6IGZ1bmN0aW9uKCBtYXRjaCApIHsKLQkJCWlmICggbWF0Y2hbMV0gPT09
ICJudGgiICkgewotCQkJCWlmICggIW1hdGNoWzJdICkgewotCQkJCQlTaXp6bGUuZXJyb3IoIG1h
dGNoWzBdICk7Ci0JCQkJfQotCi0JCQkJbWF0Y2hbMl0gPSBtYXRjaFsyXS5yZXBsYWNlKC9eXCt8
XHMqL2csICcnKTsKLQotCQkJCS8vIHBhcnNlIGVxdWF0aW9ucyBsaWtlICdldmVuJywgJ29kZCcs
ICc1JywgJzJuJywgJzNuKzInLCAnNG4tMScsICctbis2JwotCQkJCXZhciB0ZXN0ID0gLygtPyko
XGQqKSg/Om4oWytcLV0/XGQqKSk/Ly5leGVjKAotCQkJCQltYXRjaFsyXSA9PT0gImV2ZW4iICYm
ICIybiIgfHwgbWF0Y2hbMl0gPT09ICJvZGQiICYmICIybisxIiB8fAotCQkJCQkhL1xELy50ZXN0
KCBtYXRjaFsyXSApICYmICIwbisiICsgbWF0Y2hbMl0gfHwgbWF0Y2hbMl0pOwotCi0JCQkJLy8g
Y2FsY3VsYXRlIHRoZSBudW1iZXJzIChmaXJzdCluKyhsYXN0KSBpbmNsdWRpbmcgaWYgdGhleSBh
cmUgbmVnYXRpdmUKLQkJCQltYXRjaFsyXSA9ICh0ZXN0WzFdICsgKHRlc3RbMl0gfHwgMSkpIC0g
MDsKLQkJCQltYXRjaFszXSA9IHRlc3RbM10gLSAwOwotCQkJfQotCQkJZWxzZSBpZiAoIG1hdGNo
WzJdICkgewotCQkJCVNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTsKLQkJCX0KLQotCQkJLy8gVE9E
TzogTW92ZSB0byBub3JtYWwgY2FjaGluZyBzeXN0ZW0KLQkJCW1hdGNoWzBdID0gZG9uZSsrOwot
Ci0JCQlyZXR1cm4gbWF0Y2g7Ci0JCX0sCi0KLQkJQVRUUjogZnVuY3Rpb24oIG1hdGNoLCBjdXJM
b29wLCBpbnBsYWNlLCByZXN1bHQsIG5vdCwgaXNYTUwgKSB7Ci0JCQl2YXIgbmFtZSA9IG1hdGNo
WzFdID0gbWF0Y2hbMV0ucmVwbGFjZSggckJhY2tzbGFzaCwgIiIgKTsKLQkJCQotCQkJaWYgKCAh
aXNYTUwgJiYgRXhwci5hdHRyTWFwW25hbWVdICkgewotCQkJCW1hdGNoWzFdID0gRXhwci5hdHRy
TWFwW25hbWVdOwotCQkJfQotCi0JCQkvLyBIYW5kbGUgaWYgYW4gdW4tcXVvdGVkIHZhbHVlIHdh
cyB1c2VkCi0JCQltYXRjaFs0XSA9ICggbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgIiIgKS5yZXBs
YWNlKCByQmFja3NsYXNoLCAiIiApOwotCi0JCQlpZiAoIG1hdGNoWzJdID09PSAifj0iICkgewot
CQkJCW1hdGNoWzRdID0gIiAiICsgbWF0Y2hbNF0gKyAiICI7Ci0JCQl9Ci0KLQkJCXJldHVybiBt
YXRjaDsKLQkJfSwKLQotCQlQU0VVRE86IGZ1bmN0aW9uKCBtYXRjaCwgY3VyTG9vcCwgaW5wbGFj
ZSwgcmVzdWx0LCBub3QgKSB7Ci0JCQlpZiAoIG1hdGNoWzFdID09PSAibm90IiApIHsKLQkJCQkv
LyBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yIGEgc2ltcGxl
IG9uZQotCQkJCWlmICggKCBjaHVua2VyLmV4ZWMobWF0Y2hbM10pIHx8ICIiICkubGVuZ3RoID4g
MSB8fCAvXlx3Ly50ZXN0KG1hdGNoWzNdKSApIHsKLQkJCQkJbWF0Y2hbM10gPSBTaXp6bGUobWF0
Y2hbM10sIG51bGwsIG51bGwsIGN1ckxvb3ApOwotCi0JCQkJfSBlbHNlIHsKLQkJCQkJdmFyIHJl
dCA9IFNpenpsZS5maWx0ZXIobWF0Y2hbM10sIGN1ckxvb3AsIGlucGxhY2UsIHRydWUgXiBub3Qp
OwotCi0JCQkJCWlmICggIWlucGxhY2UgKSB7Ci0JCQkJCQlyZXN1bHQucHVzaC5hcHBseSggcmVz
dWx0LCByZXQgKTsKLQkJCQkJfQotCi0JCQkJCXJldHVybiBmYWxzZTsKLQkJCQl9Ci0KLQkJCX0g
ZWxzZSBpZiAoIEV4cHIubWF0Y2guUE9TLnRlc3QoIG1hdGNoWzBdICkgfHwgRXhwci5tYXRjaC5D
SElMRC50ZXN0KCBtYXRjaFswXSApICkgewotCQkJCXJldHVybiB0cnVlOwotCQkJfQotCQkJCi0J
CQlyZXR1cm4gbWF0Y2g7Ci0JCX0sCi0KLQkJUE9TOiBmdW5jdGlvbiggbWF0Y2ggKSB7Ci0JCQlt
YXRjaC51bnNoaWZ0KCB0cnVlICk7Ci0KLQkJCXJldHVybiBtYXRjaDsKLQkJfQotCX0sCi0JCi0J
ZmlsdGVyczogewotCQllbmFibGVkOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiBlbGVt
LmRpc2FibGVkID09PSBmYWxzZSAmJiBlbGVtLnR5cGUgIT09ICJoaWRkZW4iOwotCQl9LAotCi0J
CWRpc2FibGVkOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiBlbGVtLmRpc2FibGVkID09
PSB0cnVlOwotCQl9LAotCi0JCWNoZWNrZWQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJu
IGVsZW0uY2hlY2tlZCA9PT0gdHJ1ZTsKLQkJfSwKLQkJCi0JCXNlbGVjdGVkOiBmdW5jdGlvbigg
ZWxlbSApIHsKLQkJCS8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5
LWRlZmF1bHQKLQkJCS8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHkKLQkJCWlmICgg
ZWxlbS5wYXJlbnROb2RlICkgewotCQkJCWVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4Owot
CQkJfQotCQkJCi0JCQlyZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTsKLQkJfSwKLQotCQlw
YXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICEhZWxlbS5maXJzdENoaWxkOwot
CQl9LAotCi0JCWVtcHR5OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiAhZWxlbS5maXJz
dENoaWxkOwotCQl9LAotCi0JCWhhczogZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewotCQkJ
cmV0dXJuICEhU2l6emxlKCBtYXRjaFszXSwgZWxlbSApLmxlbmd0aDsKLQkJfSwKLQotCQloZWFk
ZXI6IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICgvaFxkL2kpLnRlc3QoIGVsZW0ubm9k
ZU5hbWUgKTsKLQkJfSwKLQotCQl0ZXh0OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCS8vIElFNiBh
bmQgNyB3aWxsIG1hcCBlbGVtLnR5cGUgdG8gJ3RleHQnIGZvciBuZXcgSFRNTDUgdHlwZXMgKHNl
YXJjaCwgZXRjKSAKLQkJCS8vIHVzZSBnZXRBdHRyaWJ1dGUgaW5zdGVhZCB0byB0ZXN0IHRoaXMg
Y2FzZQotCQkJcmV0dXJuICJ0ZXh0IiA9PT0gZWxlbS5nZXRBdHRyaWJ1dGUoICd0eXBlJyApOwot
CQl9LAotCQlyYWRpbzogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gInJhZGlvIiA9PT0g
ZWxlbS50eXBlOwotCQl9LAotCi0JCWNoZWNrYm94OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJl
dHVybiAiY2hlY2tib3giID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0KLQkJZmlsZTogZnVuY3Rpb24o
IGVsZW0gKSB7Ci0JCQlyZXR1cm4gImZpbGUiID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0JCXBhc3N3
b3JkOiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiAicGFzc3dvcmQiID09PSBlbGVtLnR5
cGU7Ci0JCX0sCi0KLQkJc3VibWl0OiBmdW5jdGlvbiggZWxlbSApIHsKLQkJCXJldHVybiAic3Vi
bWl0IiA9PT0gZWxlbS50eXBlOwotCQl9LAotCi0JCWltYWdlOiBmdW5jdGlvbiggZWxlbSApIHsK
LQkJCXJldHVybiAiaW1hZ2UiID09PSBlbGVtLnR5cGU7Ci0JCX0sCi0KLQkJcmVzZXQ6IGZ1bmN0
aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICJyZXNldCIgPT09IGVsZW0udHlwZTsKLQkJfSwKLQot
CQlidXR0b246IGZ1bmN0aW9uKCBlbGVtICkgewotCQkJcmV0dXJuICJidXR0b24iID09PSBlbGVt
LnR5cGUgfHwgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiYnV0dG9uIjsKLQkJfSwK
LQotCQlpbnB1dDogZnVuY3Rpb24oIGVsZW0gKSB7Ci0JCQlyZXR1cm4gKC9pbnB1dHxzZWxlY3R8
dGV4dGFyZWF8YnV0dG9uL2kpLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTsKLQkJfQotCX0sCi0Jc2V0
RmlsdGVyczogewotCQlmaXJzdDogZnVuY3Rpb24oIGVsZW0sIGkgKSB7Ci0JCQlyZXR1cm4gaSA9
PT0gMDsKLQkJfSwKLQotCQlsYXN0OiBmdW5jdGlvbiggZWxlbSwgaSwgbWF0Y2gsIGFycmF5ICkg
ewotCQkJcmV0dXJuIGkgPT09IGFycmF5Lmxlbmd0aCAtIDE7Ci0JCX0sCi0KLQkJZXZlbjogZnVu
Y3Rpb24oIGVsZW0sIGkgKSB7Ci0JCQlyZXR1cm4gaSAlIDIgPT09IDA7Ci0JCX0sCi0KLQkJb2Rk
OiBmdW5jdGlvbiggZWxlbSwgaSApIHsKLQkJCXJldHVybiBpICUgMiA9PT0gMTsKLQkJfSwKLQot
CQlsdDogZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewotCQkJcmV0dXJuIGkgPCBtYXRjaFsz
XSAtIDA7Ci0JCX0sCi0KLQkJZ3Q6IGZ1bmN0aW9uKCBlbGVtLCBpLCBtYXRjaCApIHsKLQkJCXJl
dHVybiBpID4gbWF0Y2hbM10gLSAwOwotCQl9LAotCi0JCW50aDogZnVuY3Rpb24oIGVsZW0sIGks
IG1hdGNoICkgewotCQkJcmV0dXJuIG1hdGNoWzNdIC0gMCA9PT0gaTsKLQkJfSwKLQotCQllcTog
ZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewotCQkJcmV0dXJuIG1hdGNoWzNdIC0gMCA9PT0g
aTsKLQkJfQotCX0sCi0JZmlsdGVyOiB7Ci0JCVBTRVVETzogZnVuY3Rpb24oIGVsZW0sIG1hdGNo
LCBpLCBhcnJheSApIHsKLQkJCXZhciBuYW1lID0gbWF0Y2hbMV0sCi0JCQkJZmlsdGVyID0gRXhw
ci5maWx0ZXJzWyBuYW1lIF07Ci0KLQkJCWlmICggZmlsdGVyICkgewotCQkJCXJldHVybiBmaWx0
ZXIoIGVsZW0sIGksIG1hdGNoLCBhcnJheSApOwotCi0JCQl9IGVsc2UgaWYgKCBuYW1lID09PSAi
Y29udGFpbnMiICkgewotCQkJCXJldHVybiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVy
VGV4dCB8fCBTaXp6bGUuZ2V0VGV4dChbIGVsZW0gXSkgfHwgIiIpLmluZGV4T2YobWF0Y2hbM10p
ID49IDA7Ci0KLQkJCX0gZWxzZSBpZiAoIG5hbWUgPT09ICJub3QiICkgewotCQkJCXZhciBub3Qg
PSBtYXRjaFszXTsKLQotCQkJCWZvciAoIHZhciBqID0gMCwgbCA9IG5vdC5sZW5ndGg7IGogPCBs
OyBqKysgKSB7Ci0JCQkJCWlmICggbm90W2pdID09PSBlbGVtICkgewotCQkJCQkJcmV0dXJuIGZh
bHNlOwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJcmV0dXJuIHRydWU7Ci0KLQkJCX0gZWxzZSB7Ci0J
CQkJU2l6emxlLmVycm9yKCBuYW1lICk7Ci0JCQl9Ci0JCX0sCi0KLQkJQ0hJTEQ6IGZ1bmN0aW9u
KCBlbGVtLCBtYXRjaCApIHsKLQkJCXZhciB0eXBlID0gbWF0Y2hbMV0sCi0JCQkJbm9kZSA9IGVs
ZW07Ci0KLQkJCXN3aXRjaCAoIHR5cGUgKSB7Ci0JCQkJY2FzZSAib25seSI6Ci0JCQkJY2FzZSAi
Zmlyc3QiOgotCQkJCQl3aGlsZSAoIChub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmcpICkJIHsK
LQkJCQkJCWlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSApIHsgCi0JCQkJCQkJcmV0dXJuIGZhbHNl
OyAKLQkJCQkJCX0KLQkJCQkJfQotCi0JCQkJCWlmICggdHlwZSA9PT0gImZpcnN0IiApIHsgCi0J
CQkJCQlyZXR1cm4gdHJ1ZTsgCi0JCQkJCX0KLQotCQkJCQlub2RlID0gZWxlbTsKLQotCQkJCWNh
c2UgImxhc3QiOgotCQkJCQl3aGlsZSAoIChub2RlID0gbm9kZS5uZXh0U2libGluZykgKQkgewot
CQkJCQkJaWYgKCBub2RlLm5vZGVUeXBlID09PSAxICkgeyAKLQkJCQkJCQlyZXR1cm4gZmFsc2U7
IAotCQkJCQkJfQotCQkJCQl9Ci0KLQkJCQkJcmV0dXJuIHRydWU7Ci0KLQkJCQljYXNlICJudGgi
OgotCQkJCQl2YXIgZmlyc3QgPSBtYXRjaFsyXSwKLQkJCQkJCWxhc3QgPSBtYXRjaFszXTsKLQot
CQkJCQlpZiAoIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgKSB7Ci0JCQkJCQlyZXR1cm4gdHJ1
ZTsKLQkJCQkJfQotCQkJCQkKLQkJCQkJdmFyIGRvbmVOYW1lID0gbWF0Y2hbMF0sCi0JCQkJCQlw
YXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7Ci0JCi0JCQkJCWlmICggcGFyZW50ICYmIChwYXJlbnQu
c2l6Y2FjaGUgIT09IGRvbmVOYW1lIHx8ICFlbGVtLm5vZGVJbmRleCkgKSB7Ci0JCQkJCQl2YXIg
Y291bnQgPSAwOwotCQkJCQkJCi0JCQkJCQlmb3IgKCBub2RlID0gcGFyZW50LmZpcnN0Q2hpbGQ7
IG5vZGU7IG5vZGUgPSBub2RlLm5leHRTaWJsaW5nICkgewotCQkJCQkJCWlmICggbm9kZS5ub2Rl
VHlwZSA9PT0gMSApIHsKLQkJCQkJCQkJbm9kZS5ub2RlSW5kZXggPSArK2NvdW50OwotCQkJCQkJ
CX0KLQkJCQkJCX0gCi0KLQkJCQkJCXBhcmVudC5zaXpjYWNoZSA9IGRvbmVOYW1lOwotCQkJCQl9
Ci0JCQkJCQotCQkJCQl2YXIgZGlmZiA9IGVsZW0ubm9kZUluZGV4IC0gbGFzdDsKLQotCQkJCQlp
ZiAoIGZpcnN0ID09PSAwICkgewotCQkJCQkJcmV0dXJuIGRpZmYgPT09IDA7Ci0KLQkJCQkJfSBl
bHNlIHsKLQkJCQkJCXJldHVybiAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3Qg
Pj0gMCApOwotCQkJCQl9Ci0JCQl9Ci0JCX0sCi0KLQkJSUQ6IGZ1bmN0aW9uKCBlbGVtLCBtYXRj
aCApIHsKLQkJCXJldHVybiBlbGVtLm5vZGVUeXBlID09PSAxICYmIGVsZW0uZ2V0QXR0cmlidXRl
KCJpZCIpID09PSBtYXRjaDsKLQkJfSwKLQotCQlUQUc6IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCAp
IHsKLQkJCXJldHVybiAobWF0Y2ggPT09ICIqIiAmJiBlbGVtLm5vZGVUeXBlID09PSAxKSB8fCBl
bGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG1hdGNoOwotCQl9LAotCQkKLQkJQ0xBU1M6
IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsKLQkJCXJldHVybiAoIiAiICsgKGVsZW0uY2xhc3NO
YW1lIHx8IGVsZW0uZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSArICIgIikKLQkJCQkuaW5kZXhPZigg
bWF0Y2ggKSA+IC0xOwotCQl9LAotCi0JCUFUVFI6IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsK
LQkJCXZhciBuYW1lID0gbWF0Y2hbMV0sCi0JCQkJcmVzdWx0ID0gRXhwci5hdHRySGFuZGxlWyBu
YW1lIF0gPwotCQkJCQlFeHByLmF0dHJIYW5kbGVbIG5hbWUgXSggZWxlbSApIDoKLQkJCQkJZWxl
bVsgbmFtZSBdICE9IG51bGwgPwotCQkJCQkJZWxlbVsgbmFtZSBdIDoKLQkJCQkJCWVsZW0uZ2V0
QXR0cmlidXRlKCBuYW1lICksCi0JCQkJdmFsdWUgPSByZXN1bHQgKyAiIiwKLQkJCQl0eXBlID0g
bWF0Y2hbMl0sCi0JCQkJY2hlY2sgPSBtYXRjaFs0XTsKLQotCQkJcmV0dXJuIHJlc3VsdCA9PSBu
dWxsID8KLQkJCQl0eXBlID09PSAiIT0iIDoKLQkJCQl0eXBlID09PSAiPSIgPwotCQkJCXZhbHVl
ID09PSBjaGVjayA6Ci0JCQkJdHlwZSA9PT0gIio9IiA/Ci0JCQkJdmFsdWUuaW5kZXhPZihjaGVj
aykgPj0gMCA6Ci0JCQkJdHlwZSA9PT0gIn49IiA/Ci0JCQkJKCIgIiArIHZhbHVlICsgIiAiKS5p
bmRleE9mKGNoZWNrKSA+PSAwIDoKLQkJCQkhY2hlY2sgPwotCQkJCXZhbHVlICYmIHJlc3VsdCAh
PT0gZmFsc2UgOgotCQkJCXR5cGUgPT09ICIhPSIgPwotCQkJCXZhbHVlICE9PSBjaGVjayA6Ci0J
CQkJdHlwZSA9PT0gIl49IiA/Ci0JCQkJdmFsdWUuaW5kZXhPZihjaGVjaykgPT09IDAgOgotCQkJ
CXR5cGUgPT09ICIkPSIgPwotCQkJCXZhbHVlLnN1YnN0cih2YWx1ZS5sZW5ndGggLSBjaGVjay5s
ZW5ndGgpID09PSBjaGVjayA6Ci0JCQkJdHlwZSA9PT0gInw9IiA/Ci0JCQkJdmFsdWUgPT09IGNo
ZWNrIHx8IHZhbHVlLnN1YnN0cigwLCBjaGVjay5sZW5ndGggKyAxKSA9PT0gY2hlY2sgKyAiLSIg
OgotCQkJCWZhbHNlOwotCQl9LAotCi0JCVBPUzogZnVuY3Rpb24oIGVsZW0sIG1hdGNoLCBpLCBh
cnJheSApIHsKLQkJCXZhciBuYW1lID0gbWF0Y2hbMl0sCi0JCQkJZmlsdGVyID0gRXhwci5zZXRG
aWx0ZXJzWyBuYW1lIF07Ci0KLQkJCWlmICggZmlsdGVyICkgewotCQkJCXJldHVybiBmaWx0ZXIo
IGVsZW0sIGksIG1hdGNoLCBhcnJheSApOwotCQkJfQotCQl9Ci0JfQotfTsKLQotdmFyIG9yaWdQ
T1MgPSBFeHByLm1hdGNoLlBPUywKLQlmZXNjYXBlID0gZnVuY3Rpb24oYWxsLCBudW0pewotCQly
ZXR1cm4gIlxcIiArIChudW0gLSAwICsgMSk7Ci0JfTsKLQotZm9yICggdmFyIHR5cGUgaW4gRXhw
ci5tYXRjaCApIHsKLQlFeHByLm1hdGNoWyB0eXBlIF0gPSBuZXcgUmVnRXhwKCBFeHByLm1hdGNo
WyB0eXBlIF0uc291cmNlICsgKC8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSkgKTsK
LQlFeHByLmxlZnRNYXRjaFsgdHlwZSBdID0gbmV3IFJlZ0V4cCggLyheKD86LnxccnxcbikqPykv
LnNvdXJjZSArIEV4cHIubWF0Y2hbIHR5cGUgXS5zb3VyY2UucmVwbGFjZSgvXFwoXGQrKS9nLCBm
ZXNjYXBlKSApOwotfQotCi12YXIgbWFrZUFycmF5ID0gZnVuY3Rpb24oIGFycmF5LCByZXN1bHRz
ICkgewotCWFycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGFycmF5LCAwICk7Ci0K
LQlpZiAoIHJlc3VsdHMgKSB7Ci0JCXJlc3VsdHMucHVzaC5hcHBseSggcmVzdWx0cywgYXJyYXkg
KTsKLQkJcmV0dXJuIHJlc3VsdHM7Ci0JfQotCQotCXJldHVybiBhcnJheTsKLX07Ci0KLS8vIFBl
cmZvcm0gYSBzaW1wbGUgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRoZSBicm93c2VyIGlzIGNhcGFi
bGUgb2YKLS8vIGNvbnZlcnRpbmcgYSBOb2RlTGlzdCB0byBhbiBhcnJheSB1c2luZyBidWlsdGlu
IG1ldGhvZHMuCi0vLyBBbHNvIHZlcmlmaWVzIHRoYXQgdGhlIHJldHVybmVkIGFycmF5IGhvbGRz
IERPTSBub2RlcwotLy8gKHdoaWNoIGlzIG5vdCB0aGUgY2FzZSBpbiB0aGUgQmxhY2tiZXJyeSBi
cm93c2VyKQotdHJ5IHsKLQlBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmNoaWxkTm9kZXMsIDAgKVswXS5ub2RlVHlwZTsKLQotLy8gUHJvdmlkZSBh
IGZhbGxiYWNrIG1ldGhvZCBpZiBpdCBkb2VzIG5vdCB3b3JrCi19IGNhdGNoKCBlICkgewotCW1h
a2VBcnJheSA9IGZ1bmN0aW9uKCBhcnJheSwgcmVzdWx0cyApIHsKLQkJdmFyIGkgPSAwLAotCQkJ
cmV0ID0gcmVzdWx0cyB8fCBbXTsKLQotCQlpZiAoIHRvU3RyaW5nLmNhbGwoYXJyYXkpID09PSAi
W29iamVjdCBBcnJheV0iICkgewotCQkJQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoIHJldCwg
YXJyYXkgKTsKLQotCQl9IGVsc2UgewotCQkJaWYgKCB0eXBlb2YgYXJyYXkubGVuZ3RoID09PSAi
bnVtYmVyIiApIHsKLQkJCQlmb3IgKCB2YXIgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKyAp
IHsKLQkJCQkJcmV0LnB1c2goIGFycmF5W2ldICk7Ci0JCQkJfQotCi0JCQl9IGVsc2UgewotCQkJ
CWZvciAoIDsgYXJyYXlbaV07IGkrKyApIHsKLQkJCQkJcmV0LnB1c2goIGFycmF5W2ldICk7Ci0J
CQkJfQotCQkJfQotCQl9Ci0KLQkJcmV0dXJuIHJldDsKLQl9OwotfQotCi12YXIgc29ydE9yZGVy
LCBzaWJsaW5nQ2hlY2s7Ci0KLWlmICggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uICkgewotCXNvcnRPcmRlciA9IGZ1bmN0aW9uKCBhLCBiICkgewotCQlp
ZiAoIGEgPT09IGIgKSB7Ci0JCQloYXNEdXBsaWNhdGUgPSB0cnVlOwotCQkJcmV0dXJuIDA7Ci0J
CX0KLQotCQlpZiAoICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIHx8ICFiLmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uICkgewotCQkJcmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gPyAt
MSA6IDE7Ci0JCX0KLQotCQlyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSAmIDQg
PyAtMSA6IDE7Ci0JfTsKLQotfSBlbHNlIHsKLQlzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiAp
IHsKLQkJdmFyIGFsLCBibCwKLQkJCWFwID0gW10sCi0JCQlicCA9IFtdLAotCQkJYXVwID0gYS5w
YXJlbnROb2RlLAotCQkJYnVwID0gYi5wYXJlbnROb2RlLAotCQkJY3VyID0gYXVwOwotCi0JCS8v
IFRoZSBub2RlcyBhcmUgaWRlbnRpY2FsLCB3ZSBjYW4gZXhpdCBlYXJseQotCQlpZiAoIGEgPT09
IGIgKSB7Ci0JCQloYXNEdXBsaWNhdGUgPSB0cnVlOwotCQkJcmV0dXJuIDA7Ci0KLQkJLy8gSWYg
dGhlIG5vZGVzIGFyZSBzaWJsaW5ncyAob3IgaWRlbnRpY2FsKSB3ZSBjYW4gZG8gYSBxdWljayBj
aGVjawotCQl9IGVsc2UgaWYgKCBhdXAgPT09IGJ1cCApIHsKLQkJCXJldHVybiBzaWJsaW5nQ2hl
Y2soIGEsIGIgKTsKLQotCQkvLyBJZiBubyBwYXJlbnRzIHdlcmUgZm91bmQgdGhlbiB0aGUgbm9k
ZXMgYXJlIGRpc2Nvbm5lY3RlZAotCQl9IGVsc2UgaWYgKCAhYXVwICkgewotCQkJcmV0dXJuIC0x
OwotCi0JCX0gZWxzZSBpZiAoICFidXAgKSB7Ci0JCQlyZXR1cm4gMTsKLQkJfQotCi0JCS8vIE90
aGVyd2lzZSB0aGV5J3JlIHNvbWV3aGVyZSBlbHNlIGluIHRoZSB0cmVlIHNvIHdlIG5lZWQKLQkJ
Ly8gdG8gYnVpbGQgdXAgYSBmdWxsIGxpc3Qgb2YgdGhlIHBhcmVudE5vZGVzIGZvciBjb21wYXJp
c29uCi0JCXdoaWxlICggY3VyICkgewotCQkJYXAudW5zaGlmdCggY3VyICk7Ci0JCQljdXIgPSBj
dXIucGFyZW50Tm9kZTsKLQkJfQotCi0JCWN1ciA9IGJ1cDsKLQotCQl3aGlsZSAoIGN1ciApIHsK
LQkJCWJwLnVuc2hpZnQoIGN1ciApOwotCQkJY3VyID0gY3VyLnBhcmVudE5vZGU7Ci0JCX0KLQot
CQlhbCA9IGFwLmxlbmd0aDsKLQkJYmwgPSBicC5sZW5ndGg7Ci0KLQkJLy8gU3RhcnQgd2Fsa2lu
ZyBkb3duIHRoZSB0cmVlIGxvb2tpbmcgZm9yIGEgZGlzY3JlcGFuY3kKLQkJZm9yICggdmFyIGkg
PSAwOyBpIDwgYWwgJiYgaSA8IGJsOyBpKysgKSB7Ci0JCQlpZiAoIGFwW2ldICE9PSBicFtpXSAp
IHsKLQkJCQlyZXR1cm4gc2libGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKTsKLQkJCX0KLQkJfQot
Ci0JCS8vIFdlIGVuZGVkIHNvbWVwbGFjZSB1cCB0aGUgdHJlZSBzbyBkbyBhIHNpYmxpbmcgY2hl
Y2sKLQkJcmV0dXJuIGkgPT09IGFsID8KLQkJCXNpYmxpbmdDaGVjayggYSwgYnBbaV0sIC0xICkg
OgotCQkJc2libGluZ0NoZWNrKCBhcFtpXSwgYiwgMSApOwotCX07Ci0KLQlzaWJsaW5nQ2hlY2sg
PSBmdW5jdGlvbiggYSwgYiwgcmV0ICkgewotCQlpZiAoIGEgPT09IGIgKSB7Ci0JCQlyZXR1cm4g
cmV0OwotCQl9Ci0KLQkJdmFyIGN1ciA9IGEubmV4dFNpYmxpbmc7Ci0KLQkJd2hpbGUgKCBjdXIg
KSB7Ci0JCQlpZiAoIGN1ciA9PT0gYiApIHsKLQkJCQlyZXR1cm4gLTE7Ci0JCQl9Ci0KLQkJCWN1
ciA9IGN1ci5uZXh0U2libGluZzsKLQkJfQotCi0JCXJldHVybiAxOwotCX07Ci19Ci0KLS8vIFV0
aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJlaXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkg
b2YgRE9NIG5vZGVzCi1TaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtcyApIHsKLQl2YXIg
cmV0ID0gIiIsIGVsZW07Ci0KLQlmb3IgKCB2YXIgaSA9IDA7IGVsZW1zW2ldOyBpKysgKSB7Ci0J
CWVsZW0gPSBlbGVtc1tpXTsKLQotCQkvLyBHZXQgdGhlIHRleHQgZnJvbSB0ZXh0IG5vZGVzIGFu
ZCBDREFUQSBub2RlcwotCQlpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlw
ZSA9PT0gNCApIHsKLQkJCXJldCArPSBlbGVtLm5vZGVWYWx1ZTsKLQotCQkvLyBUcmF2ZXJzZSBl
dmVyeXRoaW5nIGVsc2UsIGV4Y2VwdCBjb21tZW50IG5vZGVzCi0JCX0gZWxzZSBpZiAoIGVsZW0u
bm9kZVR5cGUgIT09IDggKSB7Ci0JCQlyZXQgKz0gU2l6emxlLmdldFRleHQoIGVsZW0uY2hpbGRO
b2RlcyApOwotCQl9Ci0JfQotCi0JcmV0dXJuIHJldDsKLX07Ci0KLS8vIENoZWNrIHRvIHNlZSBp
ZiB0aGUgYnJvd3NlciByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWUgd2hlbgotLy8gcXVlcnlpbmcg
YnkgZ2V0RWxlbWVudEJ5SWQgKGFuZCBwcm92aWRlIGEgd29ya2Fyb3VuZCkKLShmdW5jdGlvbigp
ewotCS8vIFdlJ3JlIGdvaW5nIHRvIGluamVjdCBhIGZha2UgaW5wdXQgZWxlbWVudCB3aXRoIGEg
c3BlY2lmaWVkIG5hbWUKLQl2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
LAotCQlpZCA9ICJzY3JpcHQiICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKSwKLQkJcm9vdCA9IGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudDsKLQotCWZvcm0uaW5uZXJIVE1MID0gIjxhIG5hbWU9JyIg
KyBpZCArICInLz4iOwotCi0JLy8gSW5qZWN0IGl0IGludG8gdGhlIHJvb3QgZWxlbWVudCwgY2hl
Y2sgaXRzIHN0YXR1cywgYW5kIHJlbW92ZSBpdCBxdWlja2x5Ci0Jcm9vdC5pbnNlcnRCZWZvcmUo
IGZvcm0sIHJvb3QuZmlyc3RDaGlsZCApOwotCi0JLy8gVGhlIHdvcmthcm91bmQgaGFzIHRvIGRv
IGFkZGl0aW9uYWwgY2hlY2tzIGFmdGVyIGEgZ2V0RWxlbWVudEJ5SWQKLQkvLyBXaGljaCBzbG93
cyB0aGluZ3MgZG93biBmb3Igb3RoZXIgYnJvd3NlcnMgKGhlbmNlIHRoZSBicmFuY2hpbmcpCi0J
aWYgKCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggaWQgKSApIHsKLQkJRXhwci5maW5kLklEID0g
ZnVuY3Rpb24oIG1hdGNoLCBjb250ZXh0LCBpc1hNTCApIHsKLQkJCWlmICggdHlwZW9mIGNvbnRl
eHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYmICFpc1hNTCApIHsKLQkJCQl2YXIg
bSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQobWF0Y2hbMV0pOwotCi0JCQkJcmV0dXJuIG0gPwot
CQkJCQltLmlkID09PSBtYXRjaFsxXSB8fCB0eXBlb2YgbS5nZXRBdHRyaWJ1dGVOb2RlICE9PSAi
dW5kZWZpbmVkIiAmJiBtLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlID09PSBtYXRj
aFsxXSA/Ci0JCQkJCQlbbV0gOgotCQkJCQkJdW5kZWZpbmVkIDoKLQkJCQkJW107Ci0JCQl9Ci0J
CX07Ci0KLQkJRXhwci5maWx0ZXIuSUQgPSBmdW5jdGlvbiggZWxlbSwgbWF0Y2ggKSB7Ci0JCQl2
YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09ICJ1bmRlZmluZWQiICYm
IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTsKLQotCQkJcmV0dXJuIGVsZW0ubm9kZVR5cGUg
PT09IDEgJiYgbm9kZSAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gbWF0Y2g7Ci0JCX07Ci0JfQotCi0J
cm9vdC5yZW1vdmVDaGlsZCggZm9ybSApOwotCi0JLy8gcmVsZWFzZSBtZW1vcnkgaW4gSUUKLQly
b290ID0gZm9ybSA9IG51bGw7Ci19KSgpOwotCi0oZnVuY3Rpb24oKXsKLQkvLyBDaGVjayB0byBz
ZWUgaWYgdGhlIGJyb3dzZXIgcmV0dXJucyBvbmx5IGVsZW1lbnRzCi0JLy8gd2hlbiBkb2luZyBn
ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpCi0KLQkvLyBDcmVhdGUgYSBmYWtlIGVsZW1lbnQKLQl2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0JZGl2LmFwcGVuZENoaWxk
KCBkb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSApOwotCi0JLy8gTWFrZSBzdXJlIG5vIGNvbW1l
bnRzIGFyZSBmb3VuZAotCWlmICggZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3Ro
ID4gMCApIHsKLQkJRXhwci5maW5kLlRBRyA9IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCApIHsK
LQkJCXZhciByZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggbWF0Y2hbMV0g
KTsKLQotCQkJLy8gRmlsdGVyIG91dCBwb3NzaWJsZSBjb21tZW50cwotCQkJaWYgKCBtYXRjaFsx
XSA9PT0gIioiICkgewotCQkJCXZhciB0bXAgPSBbXTsKLQotCQkJCWZvciAoIHZhciBpID0gMDsg
cmVzdWx0c1tpXTsgaSsrICkgewotCQkJCQlpZiAoIHJlc3VsdHNbaV0ubm9kZVR5cGUgPT09IDEg
KSB7Ci0JCQkJCQl0bXAucHVzaCggcmVzdWx0c1tpXSApOwotCQkJCQl9Ci0JCQkJfQotCi0JCQkJ
cmVzdWx0cyA9IHRtcDsKLQkJCX0KLQotCQkJcmV0dXJuIHJlc3VsdHM7Ci0JCX07Ci0JfQotCi0J
Ly8gQ2hlY2sgdG8gc2VlIGlmIGFuIGF0dHJpYnV0ZSByZXR1cm5zIG5vcm1hbGl6ZWQgaHJlZiBh
dHRyaWJ1dGVzCi0JZGl2LmlubmVySFRNTCA9ICI8YSBocmVmPScjJz48L2E+IjsKLQotCWlmICgg
ZGl2LmZpcnN0Q2hpbGQgJiYgdHlwZW9mIGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSAhPT0g
InVuZGVmaW5lZCIgJiYKLQkJCWRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpICE9
PSAiIyIgKSB7Ci0KLQkJRXhwci5hdHRySGFuZGxlLmhyZWYgPSBmdW5jdGlvbiggZWxlbSApIHsK
LQkJCXJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggImhyZWYiLCAyICk7Ci0JCX07Ci0JfQotCi0J
Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUUKLQlkaXYgPSBudWxsOwotfSkoKTsKLQotaWYgKCBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsICkgewotCShmdW5jdGlvbigpewotCQl2YXIgb2xkU2l6emxl
ID0gU2l6emxlLAotCQkJZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksCi0JCQlp
ZCA9ICJfX3NpenpsZV9fIjsKLQotCQlkaXYuaW5uZXJIVE1MID0gIjxwIGNsYXNzPSdURVNUJz48
L3A+IjsKLQotCQkvLyBTYWZhcmkgY2FuJ3QgaGFuZGxlIHVwcGVyY2FzZSBvciB1bmljb2RlIGNo
YXJhY3RlcnMgd2hlbgotCQkvLyBpbiBxdWlya3MgbW9kZS4KLQkJaWYgKCBkaXYucXVlcnlTZWxl
Y3RvckFsbCAmJiBkaXYucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGggPT09IDAgKSB7
Ci0JCQlyZXR1cm47Ci0JCX0KLQkKLQkJU2l6emxlID0gZnVuY3Rpb24oIHF1ZXJ5LCBjb250ZXh0
LCBleHRyYSwgc2VlZCApIHsKLQkJCWNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwotCi0J
CQkvLyBPbmx5IHVzZSBxdWVyeVNlbGVjdG9yQWxsIG9uIG5vbi1YTUwgZG9jdW1lbnRzCi0JCQkv
LyAoSUQgc2VsZWN0b3JzIGRvbid0IHdvcmsgaW4gbm9uLUhUTUwgZG9jdW1lbnRzKQotCQkJaWYg
KCAhc2VlZCAmJiAhU2l6emxlLmlzWE1MKGNvbnRleHQpICkgewotCQkJCS8vIFNlZSBpZiB3ZSBm
aW5kIGEgc2VsZWN0b3IgdG8gc3BlZWQgdXAKLQkJCQl2YXIgbWF0Y2ggPSAvXihcdyskKXxeXC4o
W1x3XC1dKyQpfF4jKFtcd1wtXSskKS8uZXhlYyggcXVlcnkgKTsKLQkJCQkKLQkJCQlpZiAoIG1h
dGNoICYmIChjb250ZXh0Lm5vZGVUeXBlID09PSAxIHx8IGNvbnRleHQubm9kZVR5cGUgPT09IDkp
ICkgewotCQkJCQkvLyBTcGVlZC11cDogU2l6emxlKCJUQUciKQotCQkJCQlpZiAoIG1hdGNoWzFd
ICkgewotCQkJCQkJcmV0dXJuIG1ha2VBcnJheSggY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSggcXVlcnkgKSwgZXh0cmEgKTsKLQkJCQkJCi0JCQkJCS8vIFNwZWVkLXVwOiBTaXp6bGUoIi5D
TEFTUyIpCi0JCQkJCX0gZWxzZSBpZiAoIG1hdGNoWzJdICYmIEV4cHIuZmluZC5DTEFTUyAmJiBj
b250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKSB7Ci0JCQkJCQlyZXR1cm4gbWFrZUFycmF5
KCBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG1hdGNoWzJdICksIGV4dHJhICk7Ci0J
CQkJCX0KLQkJCQl9Ci0JCQkJCi0JCQkJaWYgKCBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICkgewot
CQkJCQkvLyBTcGVlZC11cDogU2l6emxlKCJib2R5IikKLQkJCQkJLy8gVGhlIGJvZHkgZWxlbWVu
dCBvbmx5IGV4aXN0cyBvbmNlLCBvcHRpbWl6ZSBmaW5kaW5nIGl0Ci0JCQkJCWlmICggcXVlcnkg
PT09ICJib2R5IiAmJiBjb250ZXh0LmJvZHkgKSB7Ci0JCQkJCQlyZXR1cm4gbWFrZUFycmF5KCBb
IGNvbnRleHQuYm9keSBdLCBleHRyYSApOwotCQkJCQkJCi0JCQkJCS8vIFNwZWVkLXVwOiBTaXp6
bGUoIiNJRCIpCi0JCQkJCX0gZWxzZSBpZiAoIG1hdGNoICYmIG1hdGNoWzNdICkgewotCQkJCQkJ
dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtYXRjaFszXSApOwotCi0JCQkJCQkv
LyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwot
CQkJCQkJLy8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2Mwot
CQkJCQkJaWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHsKLQkJCQkJCQkvLyBIYW5kbGUg
dGhlIGNhc2Ugd2hlcmUgSUUgYW5kIE9wZXJhIHJldHVybiBpdGVtcwotCQkJCQkJCS8vIGJ5IG5h
bWUgaW5zdGVhZCBvZiBJRAotCQkJCQkJCWlmICggZWxlbS5pZCA9PT0gbWF0Y2hbM10gKSB7Ci0J
CQkJCQkJCXJldHVybiBtYWtlQXJyYXkoIFsgZWxlbSBdLCBleHRyYSApOwotCQkJCQkJCX0KLQkJ
CQkJCQkKLQkJCQkJCX0gZWxzZSB7Ci0JCQkJCQkJcmV0dXJuIG1ha2VBcnJheSggW10sIGV4dHJh
ICk7Ci0JCQkJCQl9Ci0JCQkJCX0KLQkJCQkJCi0JCQkJCXRyeSB7Ci0JCQkJCQlyZXR1cm4gbWFr
ZUFycmF5KCBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwocXVlcnkpLCBleHRyYSApOwotCQkJCQl9
IGNhdGNoKHFzYUVycm9yKSB7fQotCi0JCQkJLy8gcVNBIHdvcmtzIHN0cmFuZ2VseSBvbiBFbGVt
ZW50LXJvb3RlZCBxdWVyaWVzCi0JCQkJLy8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgc3Bl
Y2lmeWluZyBhbiBleHRyYSBJRCBvbiB0aGUgcm9vdAotCQkJCS8vIGFuZCB3b3JraW5nIHVwIGZy
b20gdGhlcmUgKFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGUgdGVjaG5pcXVlKQotCQkJ
CS8vIElFIDggZG9lc24ndCB3b3JrIG9uIG9iamVjdCBlbGVtZW50cwotCQkJCX0gZWxzZSBpZiAo
IGNvbnRleHQubm9kZVR5cGUgPT09IDEgJiYgY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgp
ICE9PSAib2JqZWN0IiApIHsKLQkJCQkJdmFyIG9sZENvbnRleHQgPSBjb250ZXh0LAotCQkJCQkJ
b2xkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoICJpZCIgKSwKLQkJCQkJCW5pZCA9IG9sZCB8fCBp
ZCwKLQkJCQkJCWhhc1BhcmVudCA9IGNvbnRleHQucGFyZW50Tm9kZSwKLQkJCQkJCXJlbGF0aXZl
SGllcmFyY2h5U2VsZWN0b3IgPSAvXlxzKlsrfl0vLnRlc3QoIHF1ZXJ5ICk7Ci0KLQkJCQkJaWYg
KCAhb2xkICkgewotCQkJCQkJY29udGV4dC5zZXRBdHRyaWJ1dGUoICJpZCIsIG5pZCApOwotCQkJ
CQl9IGVsc2UgewotCQkJCQkJbmlkID0gbmlkLnJlcGxhY2UoIC8nL2csICJcXCQmIiApOwotCQkJ
CQl9Ci0JCQkJCWlmICggcmVsYXRpdmVIaWVyYXJjaHlTZWxlY3RvciAmJiBoYXNQYXJlbnQgKSB7
Ci0JCQkJCQljb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlOwotCQkJCQl9Ci0KLQkJCQkJdHJ5
IHsKLQkJCQkJCWlmICggIXJlbGF0aXZlSGllcmFyY2h5U2VsZWN0b3IgfHwgaGFzUGFyZW50ICkg
ewotCQkJCQkJCXJldHVybiBtYWtlQXJyYXkoIGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggIltp
ZD0nIiArIG5pZCArICInXSAiICsgcXVlcnkgKSwgZXh0cmEgKTsKLQkJCQkJCX0KLQotCQkJCQl9
IGNhdGNoKHBzZXVkb0Vycm9yKSB7Ci0JCQkJCX0gZmluYWxseSB7Ci0JCQkJCQlpZiAoICFvbGQg
KSB7Ci0JCQkJCQkJb2xkQ29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoICJpZCIgKTsKLQkJCQkJCX0K
LQkJCQkJfQotCQkJCX0KLQkJCX0KLQkJCi0JCQlyZXR1cm4gb2xkU2l6emxlKHF1ZXJ5LCBjb250
ZXh0LCBleHRyYSwgc2VlZCk7Ci0JCX07Ci0KLQkJZm9yICggdmFyIHByb3AgaW4gb2xkU2l6emxl
ICkgewotCQkJU2l6emxlWyBwcm9wIF0gPSBvbGRTaXp6bGVbIHByb3AgXTsKLQkJfQotCi0JCS8v
IHJlbGVhc2UgbWVtb3J5IGluIElFCi0JCWRpdiA9IG51bGw7Ci0JfSkoKTsKLX0KLQotKGZ1bmN0
aW9uKCl7Ci0JdmFyIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCi0JCW1hdGNoZXMg
PSBodG1sLm1hdGNoZXNTZWxlY3RvciB8fCBodG1sLm1vek1hdGNoZXNTZWxlY3RvciB8fCBodG1s
LndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBodG1sLm1zTWF0Y2hlc1NlbGVjdG9yLAotCQlwc2V1
ZG9Xb3JrcyA9IGZhbHNlOwotCi0JdHJ5IHsKLQkJLy8gVGhpcyBzaG91bGQgZmFpbCB3aXRoIGFu
IGV4Y2VwdGlvbgotCQkvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0dXJucyBmYWxzZSBpbnN0
ZWFkCi0JCW1hdGNoZXMuY2FsbCggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAiW3Rlc3QhPScn
XTpzaXp6bGUiICk7Ci0JCi0JfSBjYXRjaCggcHNldWRvRXJyb3IgKSB7Ci0JCXBzZXVkb1dvcmtz
ID0gdHJ1ZTsKLQl9Ci0KLQlpZiAoIG1hdGNoZXMgKSB7Ci0JCVNpenpsZS5tYXRjaGVzU2VsZWN0
b3IgPSBmdW5jdGlvbiggbm9kZSwgZXhwciApIHsKLQkJCS8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJp
YnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZAotCQkJZXhwciA9IGV4cHIucmVwbGFjZSgvXD1ccyoo
W14nIlxdXSopXHMqXF0vZywgIj0nJDEnXSIpOwotCi0JCQlpZiAoICFTaXp6bGUuaXNYTUwoIG5v
ZGUgKSApIHsKLQkJCQl0cnkgeyAKLQkJCQkJaWYgKCBwc2V1ZG9Xb3JrcyB8fCAhRXhwci5tYXRj
aC5QU0VVRE8udGVzdCggZXhwciApICYmICEvIT0vLnRlc3QoIGV4cHIgKSApIHsKLQkJCQkJCXJl
dHVybiBtYXRjaGVzLmNhbGwoIG5vZGUsIGV4cHIgKTsKLQkJCQkJfQotCQkJCX0gY2F0Y2goZSkg
e30KLQkJCX0KLQotCQkJcmV0dXJuIFNpenpsZShleHByLCBudWxsLCBudWxsLCBbbm9kZV0pLmxl
bmd0aCA+IDA7Ci0JCX07Ci0JfQotfSkoKTsKLQotKGZ1bmN0aW9uKCl7Ci0JdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0JZGl2LmlubmVySFRNTCA9ICI8ZGl2IGNs
YXNzPSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7Ci0KLQkvLyBPcGVy
YSBjYW4ndCBmaW5kIGEgc2Vjb25kIGNsYXNzbmFtZSAoaW4gOS42KQotCS8vIEFsc28sIG1ha2Ug
c3VyZSB0aGF0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUgYWN0dWFsbHkgZXhpc3RzCi0JaWYgKCAh
ZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgfHwgZGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
ImUiKS5sZW5ndGggPT09IDAgKSB7Ci0JCXJldHVybjsKLQl9Ci0KLQkvLyBTYWZhcmkgY2FjaGVz
IGNsYXNzIGF0dHJpYnV0ZXMsIGRvZXNuJ3QgY2F0Y2ggY2hhbmdlcyAoaW4gMy4yKQotCWRpdi5s
YXN0Q2hpbGQuY2xhc3NOYW1lID0gImUiOwotCi0JaWYgKCBkaXYuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgiZSIpLmxlbmd0aCA9PT0gMSApIHsKLQkJcmV0dXJuOwotCX0KLQkKLQlFeHByLm9yZGVy
LnNwbGljZSgxLCAwLCAiQ0xBU1MiKTsKLQlFeHByLmZpbmQuQ0xBU1MgPSBmdW5jdGlvbiggbWF0
Y2gsIGNvbnRleHQsIGlzWE1MICkgewotCQlpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUgIT09ICJ1bmRlZmluZWQiICYmICFpc1hNTCApIHsKLQkJCXJldHVybiBjb250
ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobWF0Y2hbMV0pOwotCQl9Ci0JfTsKLQotCS8vIHJl
bGVhc2UgbWVtb3J5IGluIElFCi0JZGl2ID0gbnVsbDsKLX0pKCk7Ci0KLWZ1bmN0aW9uIGRpck5v
ZGVDaGVjayggZGlyLCBjdXIsIGRvbmVOYW1lLCBjaGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCAp
IHsKLQlmb3IgKCB2YXIgaSA9IDAsIGwgPSBjaGVja1NldC5sZW5ndGg7IGkgPCBsOyBpKysgKSB7
Ci0JCXZhciBlbGVtID0gY2hlY2tTZXRbaV07Ci0KLQkJaWYgKCBlbGVtICkgewotCQkJdmFyIG1h
dGNoID0gZmFsc2U7Ci0KLQkJCWVsZW0gPSBlbGVtW2Rpcl07Ci0KLQkJCXdoaWxlICggZWxlbSAp
IHsKLQkJCQlpZiAoIGVsZW0uc2l6Y2FjaGUgPT09IGRvbmVOYW1lICkgewotCQkJCQltYXRjaCA9
IGNoZWNrU2V0W2VsZW0uc2l6c2V0XTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCi0JCQkJaWYgKCBl
bGVtLm5vZGVUeXBlID09PSAxICYmICFpc1hNTCApewotCQkJCQllbGVtLnNpemNhY2hlID0gZG9u
ZU5hbWU7Ci0JCQkJCWVsZW0uc2l6c2V0ID0gaTsKLQkJCQl9Ci0KLQkJCQlpZiAoIGVsZW0ubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gY3VyICkgewotCQkJCQltYXRjaCA9IGVsZW07Ci0JCQkJ
CWJyZWFrOwotCQkJCX0KLQotCQkJCWVsZW0gPSBlbGVtW2Rpcl07Ci0JCQl9Ci0KLQkJCWNoZWNr
U2V0W2ldID0gbWF0Y2g7Ci0JCX0KLQl9Ci19Ci0KLWZ1bmN0aW9uIGRpckNoZWNrKCBkaXIsIGN1
ciwgZG9uZU5hbWUsIGNoZWNrU2V0LCBub2RlQ2hlY2ssIGlzWE1MICkgewotCWZvciAoIHZhciBp
ID0gMCwgbCA9IGNoZWNrU2V0Lmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKLQkJdmFyIGVsZW0gPSBj
aGVja1NldFtpXTsKLQotCQlpZiAoIGVsZW0gKSB7Ci0JCQl2YXIgbWF0Y2ggPSBmYWxzZTsKLQkJ
CQotCQkJZWxlbSA9IGVsZW1bZGlyXTsKLQotCQkJd2hpbGUgKCBlbGVtICkgewotCQkJCWlmICgg
ZWxlbS5zaXpjYWNoZSA9PT0gZG9uZU5hbWUgKSB7Ci0JCQkJCW1hdGNoID0gY2hlY2tTZXRbZWxl
bS5zaXpzZXRdOwotCQkJCQlicmVhazsKLQkJCQl9Ci0KLQkJCQlpZiAoIGVsZW0ubm9kZVR5cGUg
PT09IDEgKSB7Ci0JCQkJCWlmICggIWlzWE1MICkgewotCQkJCQkJZWxlbS5zaXpjYWNoZSA9IGRv
bmVOYW1lOwotCQkJCQkJZWxlbS5zaXpzZXQgPSBpOwotCQkJCQl9Ci0KLQkJCQkJaWYgKCB0eXBl
b2YgY3VyICE9PSAic3RyaW5nIiApIHsKLQkJCQkJCWlmICggZWxlbSA9PT0gY3VyICkgewotCQkJ
CQkJCW1hdGNoID0gdHJ1ZTsKLQkJCQkJCQlicmVhazsKLQkJCQkJCX0KLQotCQkJCQl9IGVsc2Ug
aWYgKCBTaXp6bGUuZmlsdGVyKCBjdXIsIFtlbGVtXSApLmxlbmd0aCA+IDAgKSB7Ci0JCQkJCQlt
YXRjaCA9IGVsZW07Ci0JCQkJCQlicmVhazsKLQkJCQkJfQotCQkJCX0KLQotCQkJCWVsZW0gPSBl
bGVtW2Rpcl07Ci0JCQl9Ci0KLQkJCWNoZWNrU2V0W2ldID0gbWF0Y2g7Ci0JCX0KLQl9Ci19Ci0K
LWlmICggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zICkgewotCVNpenpsZS5jb250
YWlucyA9IGZ1bmN0aW9uKCBhLCBiICkgewotCQlyZXR1cm4gYSAhPT0gYiAmJiAoYS5jb250YWlu
cyA/IGEuY29udGFpbnMoYikgOiB0cnVlKTsKLQl9OwotCi19IGVsc2UgaWYgKCBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24gKSB7Ci0JU2l6emxlLmNvbnRh
aW5zID0gZnVuY3Rpb24oIGEsIGIgKSB7Ci0JCXJldHVybiAhIShhLmNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKGIpICYgMTYpOwotCX07Ci0KLX0gZWxzZSB7Ci0JU2l6emxlLmNvbnRhaW5zID0gZnVu
Y3Rpb24oKSB7Ci0JCXJldHVybiBmYWxzZTsKLQl9OwotfQotCi1TaXp6bGUuaXNYTUwgPSBmdW5j
dGlvbiggZWxlbSApIHsKLQkvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2Vz
IHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0Ci0JLy8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVz
IGluIElFIC0gIzQ4MzMpIAotCXZhciBkb2N1bWVudEVsZW1lbnQgPSAoZWxlbSA/IGVsZW0ub3du
ZXJEb2N1bWVudCB8fCBlbGVtIDogMCkuZG9jdW1lbnRFbGVtZW50OwotCi0JcmV0dXJuIGRvY3Vt
ZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gIkhUTUwiIDogZmFsc2U7
Ci19OwotCi12YXIgcG9zUHJvY2VzcyA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHsK
LQl2YXIgbWF0Y2gsCi0JCXRtcFNldCA9IFtdLAotCQlsYXRlciA9ICIiLAotCQlyb290ID0gY29u
dGV4dC5ub2RlVHlwZSA/IFtjb250ZXh0XSA6IGNvbnRleHQ7Ci0KLQkvLyBQb3NpdGlvbiBzZWxl
Y3RvcnMgbXVzdCBiZSBkb25lIGFmdGVyIHRoZSBmaWx0ZXIKLQkvLyBBbmQgc28gbXVzdCA6bm90
KHBvc2l0aW9uYWwpIHNvIHdlIG1vdmUgYWxsIFBTRVVET3MgdG8gdGhlIGVuZAotCXdoaWxlICgg
KG1hdGNoID0gRXhwci5tYXRjaC5QU0VVRE8uZXhlYyggc2VsZWN0b3IgKSkgKSB7Ci0JCWxhdGVy
ICs9IG1hdGNoWzBdOwotCQlzZWxlY3RvciA9IHNlbGVjdG9yLnJlcGxhY2UoIEV4cHIubWF0Y2gu
UFNFVURPLCAiIiApOwotCX0KLQotCXNlbGVjdG9yID0gRXhwci5yZWxhdGl2ZVtzZWxlY3Rvcl0g
PyBzZWxlY3RvciArICIqIiA6IHNlbGVjdG9yOwotCi0JZm9yICggdmFyIGkgPSAwLCBsID0gcm9v
dC5sZW5ndGg7IGkgPCBsOyBpKysgKSB7Ci0JCVNpenpsZSggc2VsZWN0b3IsIHJvb3RbaV0sIHRt
cFNldCApOwotCX0KLQotCXJldHVybiBTaXp6bGUuZmlsdGVyKCBsYXRlciwgdG1wU2V0ICk7Ci19
OwotCi0vLyBFWFBPU0UKLWpRdWVyeS5maW5kID0gU2l6emxlOwotalF1ZXJ5LmV4cHIgPSBTaXp6
bGUuc2VsZWN0b3JzOwotalF1ZXJ5LmV4cHJbIjoiXSA9IGpRdWVyeS5leHByLmZpbHRlcnM7Ci1q
UXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7Ci1qUXVlcnkudGV4dCA9IFNpenpsZS5n
ZXRUZXh0OwotalF1ZXJ5LmlzWE1MRG9jID0gU2l6emxlLmlzWE1MOwotalF1ZXJ5LmNvbnRhaW5z
ID0gU2l6emxlLmNvbnRhaW5zOwotCi0KLX0pKCk7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3NyYy9zZWxlY3Rvci5qcwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAsMCAjIwoteWVzClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9jc3AucGhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9jc3AucGhw
CShyZXZpc2lvbiAyNzc5NjMpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3Qv
Y3NwLnBocAkobm9uZXhpc3RlbnQpCkBAIC0xLDMxICswLDAgQEAKLTw/cGhwIGhlYWRlcigiWC1D
b250ZW50LVNlY3VyaXR5LVBvbGljeS1SZXBvcnQtT25seTogYWxsb3cgKiIpOyA/PgotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KLQk8dGl0bGU+Q1NQIFRl
c3QgUGFnZTwvdGl0bGU+Ci0KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9jb3JlLmpzIj48L3Njcmlw
dD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9kZWZlcnJlZC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3Jp
cHQgc3JjPSIuLi9zcmMvc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9z
cmMvZGF0YS5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9zcmMvcXVldWUuanMiPjwv
c2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2F0dHJpYnV0ZXMuanMiPjwvc2NyaXB0Pgot
ICA8c2NyaXB0IHNyYz0iLi4vc3JjL2V2ZW50LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9
Ii4uL3NyYy9zaXp6bGUvc2l6emxlLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3Ny
Yy9zaXp6bGUtanF1ZXJ5LmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy90cmF2
ZXJzaW5nLmpzIj48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9tYW5pcHVsYXRpb24u
anMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2Nzcy5qcyI+PC9zY3JpcHQ+Ci0g
IDxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIu
Li9zcmMvYWpheC9qc29ucC5qcyI+PC9zY3JpcHQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9zcmMvYWph
eC9zY3JpcHQuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNyYz0iLi4vc3JjL2FqYXgveGhyLmpz
Ij48L3NjcmlwdD4KLSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9lZmZlY3RzLmpzIj48L3NjcmlwdD4K
LSAgPHNjcmlwdCBzcmM9Ii4uL3NyYy9vZmZzZXQuanMiPjwvc2NyaXB0PgotICA8c2NyaXB0IHNy
Yz0iLi4vc3JjL2RpbWVuc2lvbnMuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0JPHA+
Q1NQIFRlc3QgUGFnZTwvcD4KLTwvYm9keT4KLTwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9jc3AucGhwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogYWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RlbGVn
YXRldGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMv
dGVzdC9kZWxlZ2F0ZXRlc3QuaHRtbAkocmV2aXNpb24gMjc3OTYzKQorKysgTGF5b3V0VGVzdHMv
anF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RlbGVnYXRldGVzdC5odG1sCShub25leGlzdGVudCkKQEAg
LTEsMjc1ICswLDAgQEAKLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8c2NyaXB0IHNyYz0n
Li4vZGlzdC9qcXVlcnkuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+Ci0gICAg
ICAgIDxzdHlsZT4KLQkucmVkIHsKLQkgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwotCSAgICBi
b3JkZXI6IHNvbGlkIDNweCByZWQ7Ci0JfQotICAgICAgICA8L3N0eWxlPgotICAgIDwvaGVhZD4K
LSAgICA8Ym9keT4KLSAgICAgICAgPGgyPkNoYW5nZSBUZXN0czwvaDI+Ci0gICAgICAgIDx0YWJs
ZT4KLQkJCTx0cj4KLQkJCQk8dGQ+Ci0JCQkJCUNoYW5nZSBlYWNoOgotCQkJCTwvdGQ+Ci0JCQkJ
PHRkPgotCQkJCQk8c2VsZWN0IGNsYXNzPSdzZWxlY3RfdGVzdCc+Ci0JCQkJCQk8b3B0aW9uIHZh
bHVlPSdvbmUnPmNoYW5nZSBtZSAxPC9vcHRpb24+Ci0JCQkJCQk8b3B0aW9uIHZhbHVlPSd0d28n
PmNoYW5nZSBtZSAyPC9vcHRpb24+Ci0JCQkJCQk8b3B0aW9uIHZhbHVlPSd0aHJlZSc+Y2hhbmdl
IG1lIDM8L29wdGlvbj4KLQkJCQkJPC9zZWxlY3Q+Ci0JCQkJCTxzZWxlY3QgY2xhc3M9J3NlbGVj
dF90ZXN0Jz4KLQkJCQkJCTxvcHRpb24gdmFsdWU9J29uZSc+Y2hhbmdlIG1lIDE8L29wdGlvbj4K
LQkJCQkJCTxvcHRpb24gdmFsdWU9J3R3bycgc2VsZWN0ZWQ9InNlbGVjdGVkIj5jaGFuZ2UgbWUg
Mjwvb3B0aW9uPgotCQkJCQkJPG9wdGlvbiB2YWx1ZT0ndGhyZWUnPmNoYW5nZSBtZSAzPC9vcHRp
b24+Ci0JCQkJCTwvc2VsZWN0PgotCQkJCTwvdGQ+Ci0JCQkJPHRkPgotCQkJCQk8c2VsZWN0IGNs
YXNzPSdtc2VsZWN0X3Rlc3QnIG11bHRpcGxlPSJtdWx0aXBsZSI+Ci0JCQkJCQk8b3B0aW9uIHZh
bHVlPSdvbmUnPmNoYW5nZSBtZSAxPC9vcHRpb24+Ci0JCQkJCQk8b3B0aW9uIHZhbHVlPSd0d28n
PmNoYW5nZSBtZSAyPC9vcHRpb24+Ci0JCQkJCQk8b3B0aW9uIHZhbHVlPSd0aHJlZSc+Y2hhbmdl
IG1lIDM8L29wdGlvbj4KLQkJCQkJPC9zZWxlY3Q+Ci0JCQkJPC90ZD4KLQkJCQk8dGQ+Ci0JCQkJ
CTxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImNoZWNrYm94X3Rlc3QiIG5hbWU9Im15Y2hl
Y2tib3giIGlkPSJjaGVja2JveDEiLz4KLQkJCQkJPGxhYmVsIGZvcj0iY2hlY2tib3gxIj5DaGVj
a2JveCAxPC9sYWJlbD48YnIvPgotCQkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJj
aGVja2JveF90ZXN0IiBuYW1lPSJteWNoZWNrYm94IiBpZD0iY2hlY2tib3gyIi8+Ci0JCQkJCTxs
YWJlbCBmb3I9ImNoZWNrYm94MiI+Q2hlY2tib3ggMjwvbGFiZWw+PGJyIC8+Ci0JCQkJCTxpbnB1
dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImNoZWNrYm94X3Rlc3QiIG5hbWU9Im15Y2hlY2tib3gi
IGlkPSJjaGVja2JveDMiIGRpc2FibGVkPSJkaXNhYmxlZCIvPgotCQkJCQk8bGFiZWwgZm9yPSJj
aGVja2JveDMiPkNoZWNrYm94IDM8L2xhYmVsPgotCQkJCTwvdGQ+Ci0JCQkJPHRkPgotCQkJCQk8
YnV0dG9uIGNsYXNzPSJidXR0b25fdGVzdCIgbmFtZT0ibXlidXR0b24xIiBpZD0iYnV0dG9uMSI+
QnV0dG9uPC9idXR0b24+PGJyIC8+Ci0JCQkJCTxidXR0b24gY2xhc3M9ImJ1dHRvbl90ZXN0IiBu
YW1lPSJteWJ1dHRvbjEiIGlkPSJidXR0b24xIj48c3Bhbj5CdXR0b24gdy8gY2hpbGQ8L3NwYW4+
PC9idXR0b24+PGJyIC8+Ci0JCQkJCTxidXR0b24gY2xhc3M9ImJ1dHRvbl90ZXN0IiBuYW1lPSJt
eWJ1dHRvbjEiIGlkPSJidXR0b24xIiBkaXNhYmxlZD0iZGlzYWJsZWQiPkJ1dHRvbiBEaXNhYmxl
ZDwvYnV0dG9uPjxiciAvPgotCQkJCQk8YnV0dG9uIGNsYXNzPSJidXR0b25fdGVzdCIgbmFtZT0i
bXlidXR0b24xIiBpZD0iYnV0dG9uMSIgZGlzYWJsZWQ9ImRpc2FibGVkIj48c3BhbiBkaXNhYmxl
ZD0iZGlzYWJsZWQiPkJ1dHRvbiB3LyBjaGlsZCBEaXMuPC9zcGFuPjwvYnV0dG9uPjxiciAvPgot
CQkJCTwvdGQ+Ci0JCQkJPHRkPgotCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNzPSJyYWRp
b190ZXN0IiBuYW1lPSJteXJhZGlvIiBpZD0icmFkaW8xIi8+Ci0JCQkJCTxsYWJlbCBmb3I9InJh
ZGlvMSI+UmFkaW8xPC9sYWJlbD48YnIvPgotCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNz
PSJyYWRpb190ZXN0IiBuYW1lPSJteXJhZGlvIiBpZD0icmFkaW8yIi8+Ci0JCQkJCTxsYWJlbCBm
b3I9InJhZGlvMiI+UmFkaW8yPC9sYWJlbD48YnIgLz4KLQkJCQkJPGlucHV0IHR5cGU9InJhZGlv
IiBjbGFzcz0icmFkaW9fdGVzdCIgbmFtZT0ibXlyYWRpbyIgaWQ9InJhZGlvMyIgZGlzYWJsZWQ9
ImRpc2FibGVkIi8+Ci0JCQkJCTxsYWJlbCBmb3I9InJhZGlvMyI+UmFkaW8zPC9sYWJlbD4KLQkJ
CQk8L3RkPgotCQkJCTx0ZD4KLQkJCQkJPGlucHV0IGNsYXNzPSJmaWxlX3Rlc3QiIGlkPSJmaWxl
MSIgdHlwZT0iZmlsZSIvPgotCQkJCQk8dGQ+Ci0JCQkJCQk8aW5wdXQgY2xhc3M9J3Rlc3QnIHZh
bHVlPScnIGlkPSdpbnB1dCcgc2l6ZT0nMTAnIC8+Ci0JCQkJCQk8aW5wdXQgY2xhc3M9J3Rlc3Qn
IHZhbHVlPSd0ZXN0JyBpZD0naW5wdXQyJyBzaXplPScxMCcgcmVhZG9ubHk9InJlYWRvbmx5IiAv
PgotCQkJCQk8L3RkPgotCQkJCQk8dGQ+Ci0JCQkJCQk8dGV4dGFyZWEgcm93cz0nMic+PC90ZXh0
YXJlYT4KLQkJCQkJPC90ZD4KLQkJCQk8L3RkPgotCQkJCTx0ZD4kKGRvY3VtZW50KS5iaW5kKCdj
aGFuZ2UnKTxiciAvPgotCQkJCQkkKGRvY3VtZW50KS5iaW5kKCdjbGljaycpCi0JCQkJPC90ZD4K
LQkJPC90cj4KLQkgICAgPHRyPgotCSAgICAgICAgPHRkPkxpdmU6PC90ZD4KLQkgICAgICAgIDx0
ZCBpZD0nc2VsZWN0JyBjbGFzcz0icmVkIj5TRUxFQ1Q8L3RkPgotCSAgICAgICAgPHRkIGlkPSdt
c2VsZWN0JyBjbGFzcz0icmVkIj5NVUxUSTwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J2NoZWNrYm94
JyBjbGFzcz0icmVkIj5DSEVDS0JPWDwvdGQ+Ci0JCQk8dGQgaWQ9J2J1dHRvbicgY2xhc3M9InJl
ZCI+QlVUVE9OPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0ncmFkaW8nIGNsYXNzPSJyZWQiPlJBRElP
PC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nZmlsZScgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0JICAg
ICAgICA8dGQgaWQ9J3RleHQnIGNsYXNzPSJyZWQiPlRFWFQ8L3RkPgotCSAgICAgICAgPHRkIGlk
PSd0ZXh0YXJlYScgY2xhc3M9InJlZCI+VEVYVEFSRUE8L3RkPgotCSAgICAgICAgPHRkIGlkPSdi
b3VuZENoYW5nZScgY2xhc3M9InJlZCI+RE9DVU1FTlQ8L3RkPgotCSAgICA8L3RyPgotCSAgICA8
dHI+Ci0JICAgICAgICA8dGQ+QmluZDo8L3RkPgotCSAgICAgICAgPHRkIGlkPSdzZWxlY3RiaW5k
JyBjbGFzcz0icmVkIj5TRUxFQ1Q8L3RkPgotCSAgICAgICAgPHRkIGlkPSdtc2VsZWN0YmluZCcg
Y2xhc3M9InJlZCI+TVVMVEk8L3RkPgotCSAgICAgICAgPHRkIGlkPSdjaGVja2JveGJpbmQnIGNs
YXNzPSJyZWQiPkNIRUNLQk9YPC90ZD4KLQkJCTx0ZCBpZD0nYnV0dG9uYmluZCcgY2xhc3M9InJl
ZCI+QlVUVE9OPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0ncmFkaW9iaW5kJyBjbGFzcz0icmVkIj5S
QURJTzwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J2ZpbGViaW5kJyBjbGFzcz0icmVkIj5GSUxFPC90
ZD4KLQkgICAgICAgIDx0ZCBpZD0ndGV4dGJpbmQnIGNsYXNzPSJyZWQiPlRFWFQ8L3RkPgotCSAg
ICAgICAgPHRkIGlkPSd0ZXh0YXJlYWJpbmQnIGNsYXNzPSJyZWQiPlRFWFRBUkVBPC90ZD4KLQkg
ICAgPC90cj4KLQkgICAgPHRyPgotCSAgICAgICAgPHRkPkZvY3VzaW46PC90ZD4KLQkgICAgICAg
IDx0ZCBpZD0nc2VsZWN0Zm9jdXMnIGNsYXNzPSJyZWQiPlNFTEVDVDwvdGQ+Ci0JICAgICAgICA8
dGQgaWQ9J21zZWxlY3Rmb2N1cycgY2xhc3M9InJlZCI+TVVMVEk8L3RkPgotCSAgICAgICAgPHRk
IGlkPSdjaGVja2JveGZvY3VzJyBjbGFzcz0icmVkIj5DSEVDS0JPWDwvdGQ+Ci0JCQk8dGQgaWQ9
J2J1dHRvbmZvY3VzJyBjbGFzcz0icmVkIj5CVVRUT048L3RkPgotCSAgICAgICAgPHRkIGlkPSdy
YWRpb2ZvY3VzJyBjbGFzcz0icmVkIj5SQURJTzwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J2ZpbGVm
b2N1cycgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J3RleHRmb2N1cycg
Y2xhc3M9InJlZCI+VEVYVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J3RleHRhcmVhZm9jdXMnIGNs
YXNzPSJyZWQiPlRFWFRBUkVBPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nYm91bmRGb2N1cycgY2xh
c3M9InJlZCI+RE9DVU1FTlQ8L3RkPgotCSAgICA8L3RyPgotCSAgICA8dHI+Ci0JICAgICAgICA8
dGQ+Rm9jdXNvdXQ6PC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nc2VsZWN0Ymx1cicgY2xhc3M9InJl
ZCI+U0VMRUNUPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nbXNlbGVjdGJsdXInIGNsYXNzPSJyZWQi
Pk1VTFRJPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nY2hlY2tib3hibHVyJyBjbGFzcz0icmVkIj5D
SEVDS0JPWDwvdGQ+Ci0JCQk8dGQgaWQ9J2J1dHRvbmJsdXInIGNsYXNzPSJyZWQiPkJVVFRPTjwv
dGQ+Ci0JICAgICAgICA8dGQgaWQ9J3JhZGlvYmx1cicgY2xhc3M9InJlZCI+UkFESU88L3RkPgot
CSAgICAgICAgPHRkIGlkPSdmaWxlYmx1cicgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0JICAgICAg
ICA8dGQgaWQ9J3RleHRibHVyJyBjbGFzcz0icmVkIj5URVhUPC90ZD4KLQkgICAgICAgIDx0ZCBp
ZD0ndGV4dGFyZWFibHVyJyBjbGFzcz0icmVkIj5URVhUQVJFQTwvdGQ+Ci0JICAgICAgICA8dGQg
aWQ9J2JvdW5kQmx1cicgY2xhc3M9InJlZCI+RE9DVU1FTlQ8L3RkPgotCSAgICA8L3RyPgotCSAg
ICA8dHI+Ci0JICAgICAgICA8dGQ+TGl2ZSBGb2N1czo8L3RkPgotCSAgICAgICAgPHRkIGlkPSdz
ZWxlY3RsZm9jdXMnIGNsYXNzPSJyZWQiPlNFTEVDVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J21z
ZWxlY3RsZm9jdXMnIGNsYXNzPSJyZWQiPk1VTFRJPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nY2hl
Y2tib3hsZm9jdXMnIGNsYXNzPSJyZWQiPkNIRUNLQk9YPC90ZD4KLQkJCTx0ZCBpZD0nYnV0dG9u
bGZvY3VzJyBjbGFzcz0icmVkIj5CVVRUT048L3RkPgotCSAgICAgICAgPHRkIGlkPSdyYWRpb2xm
b2N1cycgY2xhc3M9InJlZCI+UkFESU88L3RkPgotCSAgICAgICAgPHRkIGlkPSdmaWxlbGZvY3Vz
JyBjbGFzcz0icmVkIj5GSUxFPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0ndGV4dGxmb2N1cycgY2xh
c3M9InJlZCI+VEVYVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J3RleHRhcmVhbGZvY3VzJyBjbGFz
cz0icmVkIj5URVhUQVJFQTwvdGQ+Ci0JICAgIDwvdHI+Ci0JICAgIDx0cj4KLQkgICAgICAgIDx0
ZD5MaXZlIEJsdXI6PC90ZD4KLQkgICAgICAgIDx0ZCBpZD0nc2VsZWN0bGJsdXInIGNsYXNzPSJy
ZWQiPlNFTEVDVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J21zZWxlY3RsYmx1cicgY2xhc3M9InJl
ZCI+TVVMVEk8L3RkPgotCSAgICAgICAgPHRkIGlkPSdjaGVja2JveGxibHVyJyBjbGFzcz0icmVk
Ij5DSEVDS0JPWDwvdGQ+Ci0JCQk8dGQgaWQ9J2J1dHRvbmxibHVyJyBjbGFzcz0icmVkIj5CVVRU
T048L3RkPgotCSAgICAgICAgPHRkIGlkPSdyYWRpb2xibHVyJyBjbGFzcz0icmVkIj5SQURJTzwv
dGQ+Ci0JICAgICAgICA8dGQgaWQ9J2ZpbGVsYmx1cicgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0J
ICAgICAgICA8dGQgaWQ9J3RleHRsYmx1cicgY2xhc3M9InJlZCI+VEVYVDwvdGQ+Ci0JICAgICAg
ICA8dGQgaWQ9J3RleHRhcmVhbGJsdXInIGNsYXNzPSJyZWQiPlRFWFRBUkVBPC90ZD4KLQkgICAg
PC90cj4KLQkgICAgPHRyPgotCSAgICAgICAgPHRkPkxpdmUgQ2xpY2s6PC90ZD4KLQkgICAgICAg
IDx0ZCBpZD0nc2VsZWN0bGNsaWNrJyBjbGFzcz0icmVkIj5TRUxFQ1Q8L3RkPgotCSAgICAgICAg
PHRkIGlkPSdtc2VsZWN0bGNsaWNrJyBjbGFzcz0icmVkIj5NVUxUSTwvdGQ+Ci0JICAgICAgICA8
dGQgaWQ9J2NoZWNrYm94bGNsaWNrJyBjbGFzcz0icmVkIj5DSEVDS0JPWDwvdGQ+Ci0JCQk8dGQg
aWQ9J2J1dHRvbmxjbGljaycgY2xhc3M9InJlZCI+QlVUVE9OPC90ZD4KLQkgICAgICAgIDx0ZCBp
ZD0ncmFkaW9sY2xpY2snIGNsYXNzPSJyZWQiPlJBRElPPC90ZD4KLQkgICAgICAgIDx0ZCBpZD0n
ZmlsZWxjbGljaycgY2xhc3M9InJlZCI+RklMRTwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9J3RleHRs
Y2xpY2snIGNsYXNzPSJyZWQiPlRFWFQ8L3RkPgotCSAgICAgICAgPHRkIGlkPSd0ZXh0YXJlYWxj
bGljaycgY2xhc3M9InJlZCI+VEVYVEFSRUE8L3RkPgotCQkJPHRkIGlkPSdib3VuZENsaWNrJyBj
bGFzcz0icmVkIj5ET0NVTUVOVDwvdGQ+Ci0JICAgIDwvdHI+Ci0gICAgICAgIDwvdGFibGU+Ci0g
ICAgICAgIDxoMj5TdWJtaXQgVGVzdHM8L2gyPgotICAgICAgICA8dGFibGU+Ci0JPHRyPgotCSAg
ICA8dGQ+Ci0JICAgICAgICBTdWJtaXQgZWFjaDoKLQkgICAgPC90ZD4KLQkgICAgPHRkPgotCSAg
ICAgICAgPGZvcm0gYWN0aW9uPSIiIGlkPSJ0ZXh0X3N1Ym1pdCI+Ci0JCTxpbnB1dCBjbGFzcz0n
dGVzdCcgdHlwZT0ndGV4dCcgdmFsdWU9J0tleSBSZXR1cm4gVG8gU3VibWl0Jy8+Ci0JICAgICAg
ICA8L2Zvcm0+Ci0JICAgIDwvdGQ+Ci0JICAgIDx0ZD4KLQkgICAgICAgIDxmb3JtIGFjdGlvbj0i
IiBpZD0icGFzc3dvcmRfc3VibWl0Ij4KLQkJPGlucHV0IGNsYXNzPSd0ZXN0JyB0eXBlPSdwYXNz
d29yZCcgdmFsdWU9JycvPgotCSAgICAgICAgPC9mb3JtPgotCSAgICA8L3RkPgotCSAgICA8dGQ+
Ci0JICAgICAgICA8Zm9ybSBhY3Rpb249IiIgaWQ9InN1Ym1pdF9zdWJtaXQiPgotCQk8aW5wdXQg
dHlwZT0nc3VibWl0JyB2YWx1ZT0iQ2xpY2sgTWUgVG8gU3VibWl0IiAvPgotCSAgICAgICAgPC9m
b3JtPgotCSAgICA8L3RkPgotCSAgICA8dGQ+JChkb2N1bWVudCkuYmluZCgnc3VibWl0Jyk8L3Rk
PgotCTwvdHI+Ci0JPHRyPgotCSAgICAgICAgPHRkPlJlc3VsdHM6PC90ZD4KLQkgICAgICAgIDx0
ZCBpZD0ndGV4dFN1Ym1pdCcgY2xhc3M9InJlZCI+VEVYVDwvdGQ+Ci0JICAgICAgICA8dGQgaWQ9
J3Bhc3N3b3JkU3VibWl0JyBjbGFzcz0icmVkIj5QQVNTV09SRDwvdGQ+Ci0JICAgICAgICA8dGQg
aWQ9J3N1Ym1pdFN1Ym1pdCcgY2xhc3M9InJlZCI+QlVUVE9OPC90ZD4KLQkgICAgICAgIDx0ZCBp
ZD0nYm91bmRTdWJtaXQnIGNsYXNzPSJyZWQiPkRPQ1VNRU5UPC90ZD4KLQk8L3RyPgotICAgICAg
ICA8L3RhYmxlPgotCi0JPHVsIGlkPSJsb2ciPjwvdWw+Ci0KLSAgICAgICAgPHNjcmlwdCB0eXBl
PSd0ZXh0L2phdmFzY3JpcHQnPgotCWpRdWVyeS5mbi5hZGRDaGFuZ2VDbGlja1Rlc3QgPSBmdW5j
dGlvbiggaWQsIHByZXZlbnQgKSB7Ci0JCXRoaXMuYmluZCgiZm9jdXNpbiIsIGZ1bmN0aW9uKCl7
Ci0JCQlqUXVlcnkoaWQgKyAiZm9jdXMiKS5ibGluaygpOwotCQl9KS5iaW5kKCJmb2N1c291dCIs
IGZ1bmN0aW9uKCl7Ci0JCQlqUXVlcnkoaWQgKyAiYmx1ciIpLmJsaW5rKCk7Ci0JCX0pOwotCi0J
CXRoaXMuYmluZCgiZm9jdXMiLCBmdW5jdGlvbigpewotCQkJalF1ZXJ5KGlkICsgImxmb2N1cyIp
LmJsaW5rKCk7Ci0JCX0pLmJpbmQoImJsdXIiLCBmdW5jdGlvbigpewotCQkJalF1ZXJ5KGlkICsg
ImxibHVyIikuYmxpbmsoKTsKLQkJfSk7Ci0KLQkJcmV0dXJuIHRoaXMuYmluZCgiY2hhbmdlIiwg
ZnVuY3Rpb24oZSl7Ci0JCQlqUXVlcnkoaWQgKyAiYmluZCIpLmJsaW5rKCk7Ci0JCX0pLmxpdmUo
ImNoYW5nZSIsIGZ1bmN0aW9uKGUpewotCSAgIAkJaWYgKCBwcmV2ZW50ICkgewotCSAgICAgICAg
CQllLnByZXZlbnREZWZhdWx0KCk7Ci0JCQl9Ci0KLQkJCWpRdWVyeShpZCkuYmxpbmsoKTsKLQkJ
fSkubGl2ZSgiY2xpY2siLCBmdW5jdGlvbihlKXsKLSAgCQkJalF1ZXJ5KGlkICsgImxjbGljayIp
LmJsaW5rKCk7Ci0gIAl9KTsKLQl9OwotCi0KLQlqUXVlcnkuZm4uYWRkU3VibWl0VGVzdCA9IGZ1
bmN0aW9uKCBpZCwgcHJldmVudCApIHsKLQkJcmV0dXJuIHRoaXMubGl2ZSgic3VibWl0IiwgZnVu
Y3Rpb24oZSl7Ci0JICAgCQlpZiAoIHByZXZlbnQgKSB7Ci0JICAgICAgICAgIAkJZS5wcmV2ZW50
RGVmYXVsdCgpOwotCQkJfQotCi0JCQlqUXVlcnkoaWQpLmJsaW5rKCk7Ci0JCX0pOwotCX07Ci0K
LQlqUXVlcnkuZm4uYmxpbmsgPSBmdW5jdGlvbigpewotCQlyZXR1cm4gdGhpcy5jc3MoImJhY2tn
cm91bmRDb2xvciIsImdyZWVuIikuY3NzKCJib3JkZXIiLCJzb2xpZCAzcHggZ3JlZW4iKS5kZWxh
eSg3MDApLnF1ZXVlKGZ1bmN0aW9uKG5leHQpewotICAgICAgICAgCQlqUXVlcnkodGhpcykuY3Nz
KCJiYWNrZ3JvdW5kQ29sb3IiLCIiKTsKLQkJCW5leHQoKTsKLSAgIAkJfSk7Ci0JfTsKLQotCSQo
ZG9jdW1lbnQpLmJpbmQoImZvY3VzaW4iLCBmdW5jdGlvbigpIHsKLQkJalF1ZXJ5KCIjYm91bmRG
b2N1cyIpLmJsaW5rKCk7Ci0JfSk7Ci0KLQkkKGRvY3VtZW50KS5iaW5kKCJmb2N1c291dCIsIGZ1
bmN0aW9uKCkgewotCQlqUXVlcnkoIiNib3VuZEJsdXIiKS5ibGluaygpOwotCX0pOwotCQotCSQo
ZG9jdW1lbnQpLmJpbmQoImNsaWNrIiwgZnVuY3Rpb24oKSB7Ci0JCWpRdWVyeSgiI2JvdW5kQ2xp
Y2siKS5ibGluaygpOwotCX0pOwotCi0JJCgidGQucmVkIikubGl2ZSgiaG92ZXIiLCBmdW5jdGlv
bihlKSB7Ci0JCWlmICggZS50eXBlID09PSAibW91c2VlbnRlciIgKSB7Ci0JCQkkKHRoaXMpLmNz
cygiYmFja2dyb3VuZENvbG9yIiwiZ3JlZW4iKTsKLQkJfSBlbHNlIHsKLQkJCSQodGhpcykuY3Nz
KCJiYWNrZ3JvdW5kQ29sb3IiLCIiKTsKLQkJfQotCX0pOwotCi0JJCgiLnNlbGVjdF90ZXN0Iiku
YWRkQ2hhbmdlQ2xpY2tUZXN0KCIjc2VsZWN0Iik7Ci0JJCgiLm1zZWxlY3RfdGVzdCIpLmFkZENo
YW5nZUNsaWNrVGVzdCgiI21zZWxlY3QiKTsKLQkkKCIuY2hlY2tib3hfdGVzdCIpLmFkZENoYW5n
ZUNsaWNrVGVzdCgiI2NoZWNrYm94Iik7Ci0JJCgiLnJhZGlvX3Rlc3QiKS5hZGRDaGFuZ2VDbGlj
a1Rlc3QoIiNyYWRpbyIpOwotCSQoIi5maWxlX3Rlc3QiKS5hZGRDaGFuZ2VDbGlja1Rlc3QoIiNm
aWxlIik7Ci0JJCgndGV4dGFyZWEnKS5hZGRDaGFuZ2VDbGlja1Rlc3QoIiN0ZXh0YXJlYSIpOwot
CSQoJyNpbnB1dCcpLmFkZENoYW5nZUNsaWNrVGVzdCgiI3RleHQiKTsKLQkkKCdidXR0b24nKS5h
ZGRDaGFuZ2VDbGlja1Rlc3QoIiNidXR0b24iKTsKLQkkKGRvY3VtZW50KS5iaW5kKCJjaGFuZ2Ui
LCBmdW5jdGlvbigpewotCQlqUXVlcnkoIiNib3VuZENoYW5nZSIpLmJsaW5rKCk7Ci0JfSk7Ci0K
LQkkKCIjdGV4dF9zdWJtaXQiKS5hZGRTdWJtaXRUZXN0KCIjdGV4dFN1Ym1pdCIsIHRydWUpOwot
CSQoIiNwYXNzd29yZF9zdWJtaXQiKS5hZGRTdWJtaXRUZXN0KCIjcGFzc3dvcmRTdWJtaXQiLCB0
cnVlKTsKLQkkKCIjc3VibWl0X3N1Ym1pdCIpLmFkZFN1Ym1pdFRlc3QoIiNzdWJtaXRTdWJtaXQi
LCB0cnVlKTsKLQkkKGRvY3VtZW50KS5iaW5kKCJzdWJtaXQiLCBmdW5jdGlvbigpewotCQlqUXVl
cnkoIiNib3VuZFN1Ym1pdCIpLmJsaW5rKCk7Ci0JfSk7Ci0KLSAgICAgICAgPC9zY3JpcHQ+Ci0g
ICAgPC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvanF1
ZXJ5L3Jlc291cmNlcy90ZXN0L2RlbGVnYXRldGVzdC5odG1sCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
YWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2xvY2FsZmlsZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9sb2Nh
bGZpbGUuaHRtbAkocmV2aXNpb24gMjc3OTYzKQorKysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291
cmNlcy90ZXN0L2xvY2FsZmlsZS5odG1sCShub25leGlzdGVudCkKQEAgLTEsOTMgKzAsMCBAQAot
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDps
YW5nPSJlbiIgbGFuZz0iZW4iIGRpcj0ibHRyIiBpZD0iaHRtbCI+Ci08aGVhZD4KLQk8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCIgLz4KLQk8dGl0bGU+alF1ZXJ5IExvY2FsIEZpbGUgVGVzdDwvdGl0bGU+Ci0JPCEtLSBJbmNs
dWRlcyAtLT4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2NvcmUuanMiPjwvc2NyaXB0PgotCTxzY3Jp
cHQgc3JjPSIuLi9zcmMvZGVmZXJyZWQuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9z
cmMvc3VwcG9ydC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9kYXRhLmpzIj48
L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3F1ZXVlLmpzIj48L3NjcmlwdD4KLQk8c2Ny
aXB0IHNyYz0iLi4vc3JjL2F0dHJpYnV0ZXMuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIu
Li9zcmMvZXZlbnQuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvc2l6emxlL3Np
enpsZS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zaXp6bGUtanF1ZXJ5Lmpz
Ij48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL3RyYXZlcnNpbmcuanMiPjwvc2NyaXB0
PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvbWFuaXB1bGF0aW9uLmpzIj48L3NjcmlwdD4KLQk8c2Ny
aXB0IHNyYz0iLi4vc3JjL2Nzcy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9h
amF4LmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2FqYXgvanNvbnAuanMiPjwv
c2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC9zY3JpcHQuanMiPjwvc2NyaXB0Pgot
CTxzY3JpcHQgc3JjPSIuLi9zcmMvYWpheC94aHIuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3Jj
PSIuLi9zcmMvZWZmZWN0cy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9vZmZz
ZXQuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvZGltZW5zaW9ucy5qcyI+PC9z
Y3JpcHQ+Ci0JPHN0eWxlPgotCQkuZXJyb3IgeyBjb2xvcjogcmVkOyB9Ci0JCS5zdWNjZXNzIHsg
Y29sb3I6IGdyZWVuOyB9Ci0JPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5PgotCTxoMT5qUXVlcnkg
TG9jYWwgRmlsZSBUZXN0PC9oMT4KLQk8aDI+Ci0JCUludHJvZHVjdGlvbgotCTwvaDI+Ci0JPHVs
PgotCQk8bGk+Ci0JCQlBY2Nlc3MgdGhpcyBmaWxlIHVzaW5nIHRoZSAiZmlsZToiIHByb3RvY29s
LAotCQk8L2xpPgotCQk8bGk+Ci0JCQl0d28gZ3JlZW4gIk9LIiBzdHJpbmdzIG11c3QgYXBwZWFy
IGJlbG93LAotCQk8L2xpPgotCQk8bGk+Ci0JCQlFbXB0eSBsb2NhbCBmaWxlcyB3aWxsIGlzc3Vl
IGVycm9ycywgaXQncyBhIGtub3duIGxpbWl0YXRpb24uCi0JCTwvbGk+Ci0JPC91bD4KLQk8aDI+
Ci0JCVJlc3VsdHMKLQk8L2gyPgotCTx1bD4KLQkJPGxpPgotCQkJU3VjY2VzczoKLQkJCTxzcGFu
IGlkPSJzdWNjZXNzIj4KLQkJCTwvc3Bhbj4KLQkJPC9saT4KLQkJPGxpPgotCQkJRXJyb3I6Ci0J
CQk8c3BhbiBpZD0iZXJyb3IiPgotCQkJPC9zcGFuPgotCQk8L2xpPgotCTwvdWw+Ci0JPGgyPgot
CQlMb2dzOgotCTwvaDI+Ci0JPHVsIGlkPSJsb2ciPgotCTwvdWw+Ci0JPHNjcmlwdD4KLQkJdmFy
IGxvZ1VMID0galF1ZXJ5KCAiI2xvZyIgKTsKLQkJZnVuY3Rpb24gZG9Mb2coIG1lc3NhZ2UsIGFy
Z3MgKSB7Ci0JCQlqUXVlcnkoICI8bGkgLz4iKS5hcHBlbmRUbyggbG9nVUwgKS50ZXh0KCBtZXNz
YWdlICsgJzogIicgKyBBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKCBhcmdzLCAnIiAtICInICkg
KyAnIicgKTsKLQkJfQotCQlqUXVlcnkuYWpheCggIi4vZGF0YS9iYWRqc29uLmpzIiAsIHsKLQkJ
CWNvbnRleHQ6IGpRdWVyeSggIiNzdWNjZXNzIiApLAotCQkJZGF0YVR5cGU6ICJ0ZXh0IgotCQl9
KS5zdWNjZXNzKGZ1bmN0aW9uKCBkYXRhLCBfLCB4aHIgKSB7Ci0JCQlkb0xvZyggIlN1Y2Nlc3Mg
KCIgKyB4aHIuc3RhdHVzICsgIikiICwgYXJndW1lbnRzICk7Ci0JCQl0aGlzLmFkZENsYXNzKCBk
YXRhID8gInN1Y2Nlc3MiIDogImVycm9yIiApLnRleHQoICJPSyIgKTsKLQkJfSkuZXJyb3IoZnVu
Y3Rpb24oIHhociApIHsKLQkJCWRvTG9nKCAiU3VjY2VzcyAoIiArIHhoci5zdGF0dXMgKyAiKSIg
LCBhcmd1bWVudHMgKTsKLQkJCXRoaXMuYWRkQ2xhc3MoICJlcnJvciIgKS50ZXh0KCAiRkFJTCIg
KTsKLQkJfSk7Ci0JCWpRdWVyeS5hamF4KCAiLi9kYXRhL2RvZXNub3RleGlzdC5leHQiICwgewot
CQkJY29udGV4dDogalF1ZXJ5KCAiI2Vycm9yIiApLAotCQkJZGF0YVR5cGU6ICJ0ZXh0IgotCQl9
KS5lcnJvcihmdW5jdGlvbiggeGhyICkgewotCQkJZG9Mb2coICJFcnJvciAoIiArIHhoci5zdGF0
dXMgKyAiKSIgLCBhcmd1bWVudHMgKTsKLQkJCXRoaXMuYWRkQ2xhc3MoICJzdWNjZXNzIiApLnRl
eHQoICJPSyIgKTsKLQkJfSkuc3VjY2VzcyhmdW5jdGlvbiggZGF0YSwgXywgeGhyICkgewotCQkJ
ZG9Mb2coICJFcnJvciAoIiArIHhoci5zdGF0dXMgKyAiKSIgLCBhcmd1bWVudHMgKTsKLQkJCXRo
aXMuYWRkQ2xhc3MoICJlcnJvciIgKS50ZXh0KCAiRkFJTCIgKTsKLQkJfSk7Ci0JPC9zY3JpcHQ+
Ci08L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2xvY2FsZmlsZS5odG1sCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KRGVsZXRlZDogYWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90
ZXN0L25ldHdvcmtlcnJvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pxdWVyeS9y
ZXNvdXJjZXMvdGVzdC9uZXR3b3JrZXJyb3IuaHRtbAkocmV2aXNpb24gMjc3OTYzKQorKysgTGF5
b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L25ldHdvcmtlcnJvci5odG1sCShub25leGlz
dGVudCkKQEAgLTEsMTAyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08IS0tCi0J
VGVzdCBmb3IgIzgxMzUKLQotCVRoYW5rcyBKb2huIEZpcmViYXVnaCBmb3IgdGhpcyB0ZXN0IHBh
Z2UgYmFzZWQgb24gaGlzIGdpc3QKLQlodHRwczovL2dpc3QuZ2l0aHViLmNvbS84MDcwOTAKLQot
CUFjY2VzcyB0aGlzIHBhZ2UgdGhyb3VnaCBhIHdlYiBzZXJ2ZXIsIHRoZW4gc3RvcCBzYWlkIHNl
cnZlciBhbmQgY2xpY2sgdGhlIGJ1dHRvbi4KLS0tPgotPGhlYWQ+Ci0JPHRpdGxlPgotCQlqUXVl
cnkgTmV0d29yayBFcnJvciBUZXN0IGZvciBGaXJlZm94Ci0JPC90aXRsZT4KLQk8c3R5bGU+Ci0J
CWRpdiB7IG1hcmdpbi10b3A6IDEwcHg7IH0KLQk8L3N0eWxlPgotCTxzY3JpcHQgc3JjPSIuLi9z
cmMvY29yZS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9kZWZlcnJlZC5qcyI+
PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zdXBwb3J0LmpzIj48L3NjcmlwdD4KLQk8
c2NyaXB0IHNyYz0iLi4vc3JjL2RhdGEuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9z
cmMvcXVldWUuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYXR0cmlidXRlcy5q
cyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9ldmVudC5qcyI+PC9zY3JpcHQ+Ci0J
PHNjcmlwdCBzcmM9Ii4uL3NyYy9zaXp6bGUvc2l6emxlLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0
IHNyYz0iLi4vc3JjL3NpenpsZS1qcXVlcnkuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIu
Li9zcmMvdHJhdmVyc2luZy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9tYW5p
cHVsYXRpb24uanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvY3NzLmpzIj48L3Nj
cmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2FqYXguanMiPjwvc2NyaXB0PgotCTxzY3JpcHQg
c3JjPSIuLi9zcmMvYWpheC9qc29ucC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3Ny
Yy9hamF4L3NjcmlwdC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4L3ho
ci5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9lZmZlY3RzLmpzIj48L3Njcmlw
dD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL29mZnNldC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBz
cmM9Ii4uL3NyYy9kaW1lbnNpb25zLmpzIj48L3NjcmlwdD4KLQk8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci0JJCgnYnV0dG9uJykubGl2ZSgnY2xpY2snLCBmdW5jdGlvbiAoKSB7Ci0J
CSQuYWpheCh7Ci0JCQl1cmw6ICcvJywKLQkJCWVycm9yOiBmdW5jdGlvbigpIHsKLQkJCQljb25z
b2xlLmxvZyggImFib3J0IiwgYXJndW1lbnRzICk7Ci0JCQl9Ci0JCX0pLmFib3J0KCk7Ci0JCSQu
YWpheCh7Ci0JCQl1cmw6ICcvJywKLQkJCWVycm9yOiBmdW5jdGlvbigpIHsKLQkJCQljb25zb2xl
LmxvZyggImNvbXBsZXRlIiwgYXJndW1lbnRzICk7Ci0JCQl9Ci0JCX0pOwotCQlyZXR1cm4gZmFs
c2U7Ci0JfSkKLQk8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotCTxoMT4KLQkJalF1ZXJ5IE5l
dHdvcmsgRXJyb3IgVGVzdCBmb3IgRmlyZWZveAotCTwvaDE+Ci0JPGRpdj4KLQkJVGhpcyBpcyBh
IHRlc3QgcGFnZSBmb3IKLQkJPGEgaHJlZj0iaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQv
ODEzNSI+Ci0JCQkjODEzNQotCQk8L2E+Ci0JCXdoaWNoIHdhcyByZXBvcnRlZCBpbiBGaXJlZm94
IHdoZW4gYWNjZXNzaW5nIHByb3BlcnRpZXMKLQkJb2YgYW4gWE1MSHR0cFJlcXVlc3Qgb2JqZWN0
IGFmdGVyIGEgbmV0d29yayBlcnJvciBvY2N1cmVkLgotCTwvZGl2PgotCTxkaXY+VGFrZSB0aGUg
Zm9sbG93aW5nIHN0ZXBzOjwvZGl2PgotCTxvbD4KLQkJPGxpPgotCQkJbWFrZSBzdXJlIHlvdSBh
Y2Nlc3NlZCB0aGlzIHBhZ2UgdGhyb3VnaCBhIHdlYiBzZXJ2ZXIsCi0JCTwvbGk+Ci0JCTxsaT4K
LQkJCXN0b3AgdGhlIHdlYiBzZXJ2ZXIsCi0JCTwvbGk+Ci0JCTxsaT4KLQkJCW9wZW4gdGhlIGNv
bnNvbGUsCi0JCTwvbGk+Ci0JCTxsaT4KLQkJCWNsaWNrIHRoaXMKLQkJCTxidXR0b24+YnV0dG9u
PC9idXR0b24+Ci0JCQksCi0JCTwvbGk+Ci0JCTxsaT4KLQkJCXdhaXQgZm9yIGJvdGggcmVxdWVz
dHMgdG8gZmFpbC4KLQkJPC9saT4KLQk8L29sPgotCTxkaXY+Ci0JCVRlc3QgcGFzc2VzIGlmIHlv
dSBnZXQgdHdvIGxvZyBsaW5lczoKLQkJPHVsPgotCQkJPGxpPgotCQkJCXRoZSBmaXJzdCBzdGFy
dGluZyB3aXRoICJhYm9ydCIsCi0JCQk8L2xpPgotCQkJPGxpPgotCQkJCXRoZSBzZWNvbmQgc3Rh
cnRpbmcgd2l0aCAiY29tcGxldGUiLAotCQkJPC9saT4KLQkJPC91bD4KLQk8L2Rpdj4KLQk8ZGl2
PgotCQlUZXN0IGZhaWxzIGlmIHRoZSBicm93c2VyIG5vdGlmaWVzIGFuIGV4Y2VwdGlvbi4KLQk8
L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvbmV0d29y
a2Vycm9yLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBhbGxvdy10YWJzCiMjIC0xICswLDAgIyMK
LXllcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9q
cXVlcnkvcmVzb3VyY2VzL3Rlc3QvcG9sbHV0ZWQucGhwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9wb2xsdXRlZC5waHAJKHJldmlzaW9uIDI3Nzk2MykK
KysrIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9wb2xsdXRlZC5waHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw5OSArMCwwIEBACi08P3BocAotCSRiYXNlVVJMID0gImh0dHA6Ly9hamF4
Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy8iOwotCSRsaWJyYXJpZXMgPSBhcnJheSgKLQkJIkRv
am8iID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjEuMS4xIiwgIjEuMi4wIiwg
IjEuMi4zIiwgIjEuMy4wIiwgIjEuMy4xIiwgIjEuMy4yIiwgIjEuNC4wIiwgIjEuNC4xIiwgIjEu
NC4zIiwgIjEuNS4wIiApLAotCQkJInVybCIgPT4gImRvam8vWFlaL2Rvam8vZG9qby54ZC5qcyIK
LQkJKSwKLQkJIkV4dENvcmUiID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjMu
MC4wIiwgIjMuMS4wIiApLAotCQkJInVybCIgPT4gImV4dC1jb3JlL1hZWi9leHQtY29yZS5qcyIK
LQkJKSwKLQkJImpRdWVyeSIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMS4y
LjMiLCAiMS4yLjYiLCAiMS4zLjAiLCAiMS4zLjEiLCAiMS4zLjIiLCAiMS40LjAiLCAiMS40LjEi
LCAiMS40LjIiLCAiMS40LjMiLCAiMS40LjQiLCAiMS41LjAiICksCi0JCQkidXJsIiA9PiAianF1
ZXJ5L1hZWi9qcXVlcnkubWluLmpzIgotCQkpLAotCQkialF1ZXJ5VUkiID0+IGFycmF5KAotCQkJ
InZlcnNpb25zIiA9PiBhcnJheSggIjEuNS4yIiwgIjEuNS4zIiwgIjEuNi4wIiwgIjEuNy4wIiwg
IjEuNy4xIiwgIjEuNy4yIiwgIjEuNy4zIiwgIjEuOC4wIiwgIjEuOC4xIiwgIjEuOC4yIiwgIjEu
OC40IiwgIjEuOC41IiwgIjEuOC42IiwgIjEuOC43IiwgIjEuOC44IiwgIjEuOC45IiApLAotCQkJ
InVybCIgPT4gImpxdWVyeXVpL1hZWi9qcXVlcnktdWkubWluLmpzIgotCQkpLAotCQkiTW9vVG9v
bHMiID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjEuMS4xIiwgIjEuMS4yIiwg
IjEuMi4xIiwgIjEuMi4yIiwgIjEuMi4zIiwgIjEuMi40IiwgIjEuMi41IiwgIjEuMy4wIiApLAot
CQkJInVybCIgPT4gIm1vb3Rvb2xzL1hZWi9tb290b29scy15dWktY29tcHJlc3NlZC5qcyIKLQkJ
KSwKLQkJIlByb3RvdHlwZSIgPT4gYXJyYXkoCi0JCQkidmVyc2lvbnMiID0+IGFycmF5KCAiMS42
LjAuMiIsICIxLjYuMC4zIiwgIjEuNi4xLjAiLCAiMS43LjAuMCIgKSwKLQkJCSJ1cmwiID0+ICJw
cm90b3R5cGUvWFlaL3Byb3RvdHlwZS5qcyIKLQkJKSwKLQkJInNjcmlwdGFjdWxvdXMiID0+IGFy
cmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjEuOC4xIiwgIjEuOC4yIiwgIjEuOC4zIiAp
LAotCQkJInVybCIgPT4gInNjcmlwdGFjdWxvdXMvWFlaL3NjcmlwdGFjdWxvdXMuanMiCi0JCSks
Ci0JCSJTV0ZPYmplY3QiID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjIuMSIs
ICIyLjIiICksCi0JCQkidXJsIiA9PiAic3dmb2JqZWN0L1hZWi9zd2ZvYmplY3QuanMiCi0JCSks
Ci0JCSJZVUkiID0+IGFycmF5KAotCQkJInZlcnNpb25zIiA9PiBhcnJheSggIjIuNi4wIiwgIjIu
Ny4wIiwgIjIuOC4wcjQiLCAiMi44LjEiLCAiMi44LjIiLCAiMy4zLjAiICksCi0JCQkidXJsIiA9
PiAgICAieXVpL1hZWi9idWlsZC95dWkveXVpLW1pbi5qcyIKLQkJKQotCSk7Ci0KLQlpZiggY291
bnQoJF9QT1NUKSApIHsKLQkJJGluY2x1ZGVzID0gYXJyYXkoKTsKLQkJZm9yZWFjaCggJF9QT1NU
IGFzICRuYW1lID0+ICR2ZXIgKXsKLQkJCSR1cmwgPSAkbGlicmFyaWVzWyAkbmFtZSBdWyAidXJs
IiBdOwotCQkJaWYoICRuYW1lID09ICJZVUkiICYmICR2ZXJbMF0gPT0gIjIiICkgewotCQkJCSR1
cmwgPSBzdHJfcmVwbGFjZSggIi95dWkiLCAiL3l1aWxvYWRlciIsICR1cmwsICRjb3VudCA9IDIg
KTsKLQkJCX0KLQkJCSRpbmNsdWRlID0gIjxzY3JpcHQgc3JjPSckYmFzZVVSTCIuc3RyX3JlcGxh
Y2UoIlhZWiIsICR2ZXIsICR1cmwsICRjb3VudCA9IDEpLiInPjwvc2NyaXB0PlxuIjsKLQkJCWlm
KCAkbGliID09ICJwcm90b3R5cGUiICkgeyAvLyBwcm90b3R5cGUgbXVzdCBiZSBpbmNsdWRlZCBm
aXJzdAotCQkJCWFycmF5X3Vuc2hpZnQoICRpbmNsdWRlcywgJGluY2x1ZGUgKTsKLQkJCX0gZWxz
ZSB7Ci0JCQkJYXJyYXlfcHVzaCggJGluY2x1ZGVzLCAkaW5jbHVkZSApOwotCQkJfQotCQl9Ci0K
LQkJJGluY2x1ZGVzID0gaW1wbG9kZSggIlxuIiwgJGluY2x1ZGVzICk7Ci0JCSRzdWl0ZSA9IGZp
bGVfZ2V0X2NvbnRlbnRzKCAiaW5kZXguaHRtbCIgKTsKLQkJZWNobyBzdHJfcmVwbGFjZSggIjwh
LS0gSW5jbHVkZXMgLS0+IiwgJGluY2x1ZGVzLCAkc3VpdGUgKTsKLQkJZXhpdDsKLQl9Ci0/Pgot
PCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJjb250
ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci0JPHRpdGxlPlJ1
biBqUXVlcnkgVGVzdCBTdWl0ZSBQb2xsdXRlZDwvdGl0bGU+Ci0JPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KLQkJLm90aGVybGlicyBmaWVsZHNldCB7Ci0JCQl3aWR0aDogNDAwcHgKLQkJfQotCQku
b3RoZXJsaWJzIGxhYmVsewotCQkJbWFyZ2luOiA1cHggMHB4IDVweCAyMHB4OwotCQl9Ci0JPC9z
dHlsZT4KLTwvaGVhZD4KLQotPGJvZHkgaWQ9ImJvZHkiPgotCTxoMSBpZD0iaGVhZGVyIj5qUXVl
cnkgVGVzdCBTdWl0ZTwvaDE+Ci0JPGgyIGlkPSJiYW5uZXIiIGNsYXNzPSJmYWlsIj48L2gyPgot
CTxoMiBpZD0idXNlckFnZW50Ij5DaG9vc2Ugb3RoZXIgbGlicmFyaWVzIHRvIGluY2x1ZGU8L2gy
PgotCi0JPGZvcm0gY2xhc3M9Im90aGVybGlicyIgYWN0aW9uPSIuL3BvbGx1dGVkLnBocCIgbWV0
aG9kPSJQT1NUIj4KLQkJPD9waHAKLQkJCWZvcmVhY2goICRsaWJyYXJpZXMgYXMgJG5hbWUgPT4g
JGRhdGEgKSB7Ci0JCQkJZWNobyAiPGZpZWxkc2V0PjxsZWdlbmQ+JG5hbWU8L2xlZ2VuZD4iOwot
CQkJCSRpID0gMDsKLQkJCQlmb3JlYWNoKCAkZGF0YVsgInZlcnNpb25zIiBdIGFzICR2ZXIgKSB7
Ci0JCQkJCSRpKys7Ci0JCQkJCWVjaG8gIjxsYWJlbD48aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9
JyRuYW1lJyB2YWx1ZT0nJHZlcicgLz4kdmVyPC9sYWJlbD4iOwotCQkJCQlpZiggISgkaSAlIDQp
ICkgZWNobyAiPGJyIC8+IjsKLQkJCQl9Ci0JCQkJZWNobyAiPC9maWVsZHNldD4iOwotCQkJfQot
CQk/PgotCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iIFJ1biAiIGNsYXNzPSJzdWJtaXQi
IC8+Ci0JPC9mb3JtPgotPC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L3BvbGx1dGVkLnBocApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IGFsbG93LXRhYnMKIyMgLTEgKzAsMCAjIwoteWVzClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC9yZWFk
eXdhaXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rl
c3QvcmVhZHl3YWl0Lmh0bWwJKHJldmlzaW9uIDI3Nzk2MykKKysrIExheW91dFRlc3RzL2pxdWVy
eS9yZXNvdXJjZXMvdGVzdC9yZWFkeXdhaXQuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDg2ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08IS0tCi0JVGVzdCBmb3IgalF1ZXJ5LnJl
YWR5V2FpdC4gTmVlZHMgdG8gYmUgYQotCXN0YW5kYWxvbmUgdGVzdCBzaW5jZSBpdCBkZWFscyB3
aXRoIERPTQotCXJlYWR5LgotLS0+Ci08aGVhZD4KLQk8dGl0bGU+Ci0JCWpRdWVyeS5yZWFkeVdh
aXQgVGVzdAotCTwvdGl0bGU+Ci0JPHN0eWxlPgotCQlkaXYgeyBtYXJnaW4tdG9wOiAxMHB4OyB9
Ci0JCSNvdXRwdXQgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiB9Ci0JCSNleHBlY3RlZE91dHB1
dCB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIH0KLQk8L3N0eWxlPgotCTxzY3JpcHQgc3JjPSIu
Li9zcmMvY29yZS5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9kZWZlcnJlZC5q
cyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zdXBwb3J0LmpzIj48L3NjcmlwdD4K
LQk8c2NyaXB0IHNyYz0iLi4vc3JjL2RhdGEuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIu
Li9zcmMvcXVldWUuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvYXR0cmlidXRl
cy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9ldmVudC5qcyI+PC9zY3JpcHQ+
Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9zaXp6bGUvc2l6emxlLmpzIj48L3NjcmlwdD4KLQk8c2Ny
aXB0IHNyYz0iLi4vc3JjL3NpenpsZS1qcXVlcnkuanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3Jj
PSIuLi9zcmMvdHJhdmVyc2luZy5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9t
YW5pcHVsYXRpb24uanMiPjwvc2NyaXB0PgotCTxzY3JpcHQgc3JjPSIuLi9zcmMvY3NzLmpzIj48
L3NjcmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL2FqYXguanMiPjwvc2NyaXB0PgotCTxzY3Jp
cHQgc3JjPSIuLi9zcmMvYWpheC9qc29ucC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4u
L3NyYy9hamF4L3NjcmlwdC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9hamF4
L3hoci5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlwdCBzcmM9Ii4uL3NyYy9lZmZlY3RzLmpzIj48L3Nj
cmlwdD4KLQk8c2NyaXB0IHNyYz0iLi4vc3JjL29mZnNldC5qcyI+PC9zY3JpcHQ+Ci0JPHNjcmlw
dCBzcmM9Ii4uL3NyYy9kaW1lbnNpb25zLmpzIj48L3NjcmlwdD4KLQotCTwhLS0gTG9hZCB0aGUg
c2NyaXB0IGxvYWRlciB0aGF0IHVzZXMKLQkJalF1ZXJ5LnJlYWR5V2FpdCAtLT4KLQk8c2NyaXB0
IHNyYz0iZGF0YS9yZWFkeXdhaXRsb2FkZXIuanMiPjwvc2NyaXB0PgotCi0JPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotCWpRdWVyeShmdW5jdGlvbigpIHsKLQkJLy8gVGhlIGRlbGF5
ZWRNZXNzYWdlIGlzIGRlZmluZWQgYnkKLQkJLy8gdGhlIHJlYWR5d2FpdGFzc2V0LmpzIGZpbGUs
IHNvIHRoZQotCQkvLyBuZXh0IGxpbmUgd2lsbCBvbmx5IHdvcmsgaWYgdGhpcyBET00KLQkJLy8g
cmVhZHkgY2FsbGJhY2sgaXMgY2FsbGVkIGFmdGVyIHJlYWR5V2FpdAotCQkvLyBoYXMgYmVlbiBk
ZWNyZW1lbnRlZCBieSByZWFkeXdhaXRsb2FkZXIuanMKLQkJLy8gSWYgYW4gZXJyb3Igb2NjdXJz
LgotCQlqUXVlcnkoIiNvdXRwdXQiKS5hcHBlbmQoZGVsYXllZE1lc3NhZ2UpOwotCX0pOwotCTwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci0JPGgxPgotCQlqUXVlcnkucmVhZHlXYWl0IFRlc3QK
LQk8L2gxPgotCTxwPgotCQlUaGlzIGlzIGEgdGVzdCBwYWdlIGZvciBqUXVlcnkucmVhZHlXYWl0
LCB0aGF0IHdhcwotCQlhZGRlZCBkdWUgdG8gdGhpcyB0aWNrZXQKLQkJPGEgaHJlZj0iaHR0cDov
L2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvNjc4MSI+IzY3ODE8L2E+LgotCTwvcD4KLQk8cD4KLQlU
ZXN0IGZvciBqUXVlcnkucmVhZHlXYWl0LCB3aGljaCBjYW4gYmUgdXNlZAotCWJ5IHBsdWdpbnMg
YW5kIG90aGVyIHNjcmlwdHMgdG8gaW5kaWNhdGUgc29tZXRoaW5nCi0JaW1wb3J0YW50IHRvIHRo
ZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgYW5kIG5lZWRzCi0JdG8gYmxvY2sgdGhlIERPTSByZWFk
eSBjYWxsYmFja3MgdGhhdCBhcmUgcmVnaXN0ZXJlZAotCXdpdGggalF1ZXJ5LgotCTwvcD4KLQk8
cD4KLQlTY3JpcHQgbG9hZGVycyBhcmUgdGhlIG1vc3QgbGlrZWx5IGtpbmQgb2Ygc2NyaXB0Ci0J
dG8gdXNlIGpRdWVyeS5yZWFkeVdhaXQsIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGJ5Ci0Jb3RoZXIg
dGhpbmdzIGxpa2UgYSBzY3JpcHQgdGhhdCBsb2FkcyBhIENTUyBmaWxlCi0JYW5kIHdhbnRzIHRv
IHBhdXNlIHRoZSBET00gcmVhZHkgY2FsbGJhY2tzLgotCTwvcD4KLQk8cD4KLQk8c3Ryb25nPkV4
cGVjdGVkIFJlc3VsdDwvc3Ryb25nPjogVGhlIHRleHQKLQk8c3BhbiBpZD0iZXhwZWN0ZWRPdXRw
dXQiPkl0IFdvcmtlZCE8L3NwYW4+Ci0JYXBwZWFycyBiZWxvdyBhZnRlciBhYm91dCA8c3Ryb25n
PjIgc2Vjb25kcy48L3N0cm9uZz4KLQk8L3A+Ci0JPHA+Ci0JSWYgdGhlcmUgaXMgYW4gZXJyb3Ig
aW4gdGhlIGNvbnNvbGUsCi0Jb3IgdGhlIHRleHQgZG9lcyBub3Qgc2hvdyB1cCwgdGhlbiB0aGUg
dGVzdCBmYWlsZWQuCi0JPC9wPgotCTxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Ci08L2JvZHk+Ci08
L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2Vz
L3Rlc3QvcmVhZHl3YWl0Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBhbGxvdy10YWJzCiMjIC0x
ICswLDAgIyMKLXllcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlv
dXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QveGh0bWwucGhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC94aHRtbC5waHAJKHJldmlzaW9uIDI3Nzk2
MykKKysrIExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC94aHRtbC5waHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1ICswLDAgQEAKLTw/cGhwCi0JIyBMb2FkIGFuZCBydW4gdGhlIHRlc3Qg
c3VpdGUgYXMgYSBwcm9wZXIgWEhUTUwgcGFnZQotCWhlYWRlcigiQ29udGVudC10eXBlOiBhcHBs
aWNhdGlvbi94aHRtbCt4bWwiKTsKLQlyZWFkZmlsZSgiaW5kZXguaHRtbCIpOwotPz4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2pxdWVyeS9yZXNvdXJjZXMvdGVzdC94aHRtbC5w
aHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBhbGxvdy10YWJzCiMjIC0xICswLDAgIyMKLXllcwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVz
b3VyY2VzL3Rlc3QvZGF0YS9yZWFkeXdhaXRhc3NldC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9yZWFkeXdhaXRhc3NldC5qcwkocmV2aXNp
b24gMjc3OTYzKQorKysgTGF5b3V0VGVzdHMvanF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvcmVh
ZHl3YWl0YXNzZXQuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSArMCwwIEBACi12YXIgZGVsYXllZE1l
c3NhZ2UgPSAiSXQgd29ya2VkISI7CkluZGV4OiBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2Vz
L3Rlc3QvZGF0YS9yZWFkeXdhaXRsb2FkZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anF1ZXJ5L3Jlc291cmNlcy90ZXN0L2RhdGEvcmVhZHl3YWl0bG9hZGVyLmpzCShyZXZpc2lvbiAy
Nzc5NjMpCisrKyBMYXlvdXRUZXN0cy9qcXVlcnkvcmVzb3VyY2VzL3Rlc3QvZGF0YS9yZWFkeXdh
aXRsb2FkZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNSArMCwwIEBACi0vLyBTaW1wbGUgc2Ny
aXB0IGxvYWRlciB0aGF0IHVzZXMgalF1ZXJ5LnJlYWR5V2FpdAotCi0vL0hvbGQgb24galF1ZXJ5
IQotalF1ZXJ5LnJlYWR5V2FpdCsrOwotCi12YXIgcmVhZHlSZWdFeHAgPSAvXihjb21wbGV0ZXxs
b2FkZWQpJC87Ci0KLWZ1bmN0aW9uIGFzc2V0TG9hZGVkKCBldnQgKXsKLQl2YXIgbm9kZSA9IGV2
dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50OwotCWlmICggZXZ0LnR5cGUgPT09ICJs
b2FkIiB8fCByZWFkeVJlZ0V4cC50ZXN0KG5vZGUucmVhZHlTdGF0ZSkgKSB7Ci0JCWpRdWVyeS5y
ZWFkeSh0cnVlKTsKLQl9Ci19Ci0KLXNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewotCXZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKLQlzY3JpcHQudHlwZSA9ICJ0
ZXh0L2phdmFzY3JpcHQiOwotCWlmICggc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIgKSB7Ci0JCXNj
cmlwdC5hZGRFdmVudExpc3RlbmVyKCAibG9hZCIsIGFzc2V0TG9hZGVkLCBmYWxzZSApOwotCX0g
ZWxzZSB7Ci0JCXNjcmlwdC5hdHRhY2hFdmVudCggIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGFzc2V0
TG9hZGVkICk7Ci0JfQotCXNjcmlwdC5zcmMgPSAiZGF0YS9yZWFkeXdhaXRhc3NldC5qcyI7Ci0J
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChzY3Jp
cHQpOwotfSwgMjAwMCApOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvanF1ZXJ5
L3Jlc291cmNlcy90ZXN0L2RhdGEvcmVhZHl3YWl0bG9hZGVyLmpzCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogYWxsb3ctdGFicwojIyAtMSArMCwwICMjCi15ZXMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>