<?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>58560</bug_id>
          
          <creation_ts>2011-04-14 11:49:37 -0700</creation_ts>
          <short_desc>Port Mozilla&apos;s IndexedDB test cases to WebKit</short_desc>
          <delta_ts>2011-04-27 14:40:05 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>59492</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andreip</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>hans</cc>
    
    <cc>pilgrim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>385924</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-04-14 11:49:37 -0700</bug_when>
    <thetext>Specifically, these tests: http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385927</commentid>
    <comment_count>1</comment_count>
      <attachid>89618</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-04-14 11:52:29 -0700</bug_when>
    <thetext>Created attachment 89618
first draft of tests (incomplete)

For informal review only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385930</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-04-14 11:54:10 -0700</bug_when>
    <thetext>*** Bug 58356 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385933</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-04-14 11:54:33 -0700</bug_when>
    <thetext>*** Bug 58368 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385984</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-04-14 13:11:53 -0700</bug_when>
    <thetext>hans, david, andrei:  it&apos;d be great if you could review this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386239</commentid>
    <comment_count>5</comment_count>
      <attachid>89706</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-04-14 17:57:38 -0700</bug_when>
    <thetext>Created attachment 89706
second draft of tests (incomplete)

Changed webkitIndexedDB to unprefixed + our prefix + Moz prefix, as per discussion with dgrogan. Also added several new tests (key-requirements-*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386739</commentid>
    <comment_count>6</comment_count>
      <attachid>89809</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-04-15 10:45:40 -0700</bug_when>
    <thetext>Created attachment 89809
third draft of tests (incomplete)

more tests added for versionchange event, getting put values, aborting setVersion, syntax variations in readonly and read/write transactions, and getting after an aborted transaction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386823</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-15 12:33:22 -0700</bug_when>
    <thetext>The stuff below is copy/pasted because I don&apos;t have permission to edit bugs.

Do I have to become a webkit committer before I can edit bugs?


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

These look good.  Though I only know much about connection-related stuff like open, close, and setVersion.  Hans, do you want to quick-glance for objectstore, index, etc. suboptimalities?

&gt; third_party/WebKit/LayoutTests/storage/indexeddb/mozilla/versionchange.html:45
&gt; +    request.onblocked = unexpectedErrorCallback;

There&apos;s an unexpectedBlockCallback or unexpectedBlockedCallback (extra &quot;ed&quot;) that you can use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393842</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2011-04-27 14:40:05 -0700</bug_when>
    <thetext>Split into several bugs.

*** This bug has been marked as a duplicate of bug 59492 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89618</attachid>
            <date>2011-04-14 11:52:29 -0700</date>
            <delta_ts>2011-04-14 17:57:38 -0700</delta_ts>
            <desc>first draft of tests (incomplete)</desc>
            <filename>bug-58560.patch</filename>
            <type>text/plain</type>
            <size>62536</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDgzODc3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDQt
MTQgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgTW96aWxsYSdzIEluZGV4ZWRE
QiB0ZXN0IGNhc2VzIHRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTg1NjAKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGE6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYWRkLXR3aWNl
LWZhaWx1cmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4
LWJhZC1vcHRpb25zLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jcmVhdGUtaW5kZXgtYmFkLW9wdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtZW1wdHktbmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1u
by1rZXlwYXRoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3JlYXRlLWluZGV4LW51bGwtbmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlxdWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlx
dWUuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVh
dGUtb2JqZWN0c3RvcmUtYmFkLW9wdGlvbnMtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYWQtb3B0aW9ucy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmpl
Y3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtZW1w
dHktbmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9ldmVudC1zb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9n
bG9iYWwtZGF0YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL29iamVjdC1jdXJzb3JzLWF1dG9pbmNyZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLWF1dG9pbmNy
ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3QtY3Vyc29ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVz
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA0LTE0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBmYXN0L3RyYW5zZm9ybXMvc2Nyb2xsSW50b1ZpZXct
dHJhbnNmb3JtZWQuaHRtbCBmYWlscwpJbmRleDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9h
ZGQtdHdpY2UtZmFpbHVyZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorVGVzdCBJbmRleGVkREIgYmVoYXZp
b3IgYWRkaW5nIHRoZSBzYW1lIHByb3BlcnR5IHR3aWNlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTICd3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyBpcyB0cnVlCitQQVNT
IHdlYmtpdEluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCit3ZWJraXRJbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7CitrZXkgPSAxMAorcmVxdWVz
dCA9IG9iamVjdFN0b3JlLmFkZCh7fSwga2V5KTsKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMga2V5
CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCBrZXkpOworUEFTUyBldmVudC50YXJnZXQu
ZXJyb3JDb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCkluZGV4
OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1s
CShyZXZpc2lvbiAwKQorKysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFp
bHVyZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACis8IURPQ1RZUEUgaHRtbD4K
KzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9hZGRfdHdpY2VfZmFpbHVyZS5odG1sCisg
IGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5v
cmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBiZWhhdmlvciBhZGRpbmcgdGhlIHNhbWUgcHJv
cGVydHkgdHdpY2UiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyIpOworICAgIHNo
b3VsZEJlRmFsc2UoIndlYmtpdEluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2lu
ZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJh
c2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAg
ZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJh
c2UoKQoreworICAgIGRlYnVnKCJjbGVhbkRhdGFiYXNlKCk6Iik7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAga2V5ID0gZXZhbEFuZExv
Zygia2V5ID0gMTAiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVj
dFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZpcnN0
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gYWRkRmlyc3RTdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkRmlyc3RT
dWNjZXNzKCk6Iik7CisgICAgc2hvdWxkQmUoInJlcXVlc3QucmVzdWx0IiwgImtleSIpOworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCBrZXkp
OyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBlY3RlZEVycm9yOworfQorCitmdW5j
dGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKK3sKKyAgICBkZWJ1ZygiYWRkU2Vjb25kRXhw
ZWN0ZWRFcnJvcigpOiIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwg
IndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZG9uZSgp
OworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9iYWQta2V5cGF0aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9iYWQta2V5cGF0aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCBJbmRleGVkREIgYWRkaW5nIHByb3BlcnR5IHdpdGgg
aW52YWxpZCBrZXlwYXRoCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICd3
ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyBpcyB0cnVlCitQQVNTIHdlYmtpdEluZGV4ZWREQiA9
PSBudWxsIGlzIGZhbHNlCit3ZWJraXRJbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikK
K2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAna2V5UGF0aCcgfSk7CityZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0aDogJ2ZvbycgfSk7CityZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKHt9KTsKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyB3ZWJraXRJREJEYXRh
YmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtl
eXBhdGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1r
ZXlwYXRoLmh0bWwJKHJldmlzaW9uIDApCisrKyBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Jh
ZC1rZXlwYXRoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemls
bGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKKyAg
bGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGFkZGluZyBwcm9wZXJ0eSB3aXRoIGludmFsaWQg
a2V5cGF0aCIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHNob3VsZEJlVHJ1ZSgiJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93Iik7CisgICAgc2hvdWxk
QmVGYWxzZSgid2Via2l0SW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Cit7CisgICAgZGVidWcoImNsZWFuRGF0YWJhc2UoKToiKTsKKyAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGtleVBhdGg6ICdrZXlQYXRoJyB9KTsiKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7IGtl
eVBhdGg6ICdmb28nIH0pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYWRkRmlyc3RTdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBhZGRGaXJzdFN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJhZGRGaXJzdFN1Y2Nl
c3MoKToiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IGFkZFNlY29uZEV4cGVjdGVkRXJyb3I7Cit9
CisKK2Z1bmN0aW9uIGFkZFNlY29uZEV4cGVjdGVkRXJyb3IoKQoreworICAgIGRlYnVnKCJhZGRT
ZWNvbmRFeHBlY3RlZEVycm9yKCk6Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5lcnJv
ckNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKKyAgICBkb25l
KCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NsZWFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY2xlYXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0
IEBACitUZXN0IEluZGV4ZWREQidzIGNsZWFyaW5nIGFuIG9iamVjdCBzdG9yZQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3cg
aXMgdHJ1ZQorUEFTUyB3ZWJraXRJbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQord2Via2l0SW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorRGVsZXRlZCBhbGwgb2JqZWN0
IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsgYXV0
b0luY3JlbWVudDogdHJ1ZSB9KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30pOworRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgn
Zm9vJykuY2xlYXIoKTsKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMg
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUgorZGIudHJhbnNhY3Rpb24o
J2ZvbycsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28n
KS5jbGVhcigpOworcmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKCdmb28nKS5vYmplY3RTdG9yZSgn
Zm9vJykub3BlbkN1cnNvcigpOworY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7CitQQVNTIGN1cnNv
ciBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbAkocmV2aXNpb24gMCkK
KysrIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3RfY2xlYXIuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjbGVhcmlu
ZyBhbiBvYmplY3Qgc3RvcmUiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyIpOwor
ICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdEluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1l
ID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFu
RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJjbGVhbkRhdGFiYXNlKCk6Iik7CisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0
cnVlIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVh
cigpCit7CisgICAgZGVidWcoImNsZWFyKCk6Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIsICJ3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7CisgICAgZXZhbEFuZExv
ZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
Lm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5vcGVu
Q3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhcmVXZUNsZWFyWWV0OworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBhcmVXZUNsZWFyWWV0KCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBy
ZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yIiwgIm51bGwiKTsKKyAgICBk
b25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9ucy0yLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtYmFkLW9wdGlvbnMtMi5odG1sCShy
ZXZpc2lvbiAwKQorKysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtYmFk
LW9wdGlvbnMtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXguaHRtbAor
ICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBpbmRleCB3aXRoIGJhZCBv
cHRpb25zIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
c2hvdWxkQmVUcnVlKCInd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3ciKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJ3ZWJraXRJbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
K3sKKyAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6
IHRydWUgfSk7Iik7CisKKyAgICBpbmRleCA9IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4
ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdiYXInLCB7IGZvbzogJycgfSk7Iiwg
IndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAgICBkb25l
KCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LWJhZC1vcHRpb25zLmh0bWwJKHJldmlzaW9u
IDApCisrKyBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9u
cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwh
LS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3Nv
dXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXguaHRtbAorICBsaWNlbnNl
IG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBpbmRleCB3aXRoIGJhZCBvcHRpb25zIik7
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgc2hvdWxkQmVU
cnVlKCInd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3ciKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ3
ZWJraXRJbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nl
c3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBk
ZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7
Iik7CisKKyAgICBpbmRleCA9IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImluZGV4ID0gb2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoJ2ZvbycsICdiYXInLCAxMCk7IiwgIndlYmtpdElEQkRhdGFiYXNl
RXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1l
bXB0eS1uYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9j
cmVhdGUtaW5kZXgtZW1wdHktbmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtZW1wdHktbmFtZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDog
aHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rl
c3QvdGVzdF9jcmVhdGVfaW5kZXguaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Cisg
ICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgor
LS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBjcmVhdGluZyBpbmRleCB3aXRoIGVtcHR5IChibGFuayBzdHJpbmcpIG5hbWUiKTsKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBzaG91bGRCZVRydWUoIid3
ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyIpOworICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdElu
ZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1l
OworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJj
bGVhbkRhdGFiYXNlKCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKwor
ICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCcnLCAn
Jyk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAg
ICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1uby1rZXlwYXRoLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtbm8ta2V5cGF0aC5odG1sCShyZXZp
c2lvbiAwKQorKysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtbm8ta2V5
cGF0aC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXguaHRtbAorICBsaWNl
bnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBpbmRleCB3aXRoIG5vIGtleXBhdGgi
KTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBzaG91bGRC
ZVRydWUoIid3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyIpOworICAgIHNob3VsZEJlRmFsc2Uo
IndlYmtpdEluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9u
LnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAg
IGRlYnVnKCJjbGVhbkRhdGFiYXNlKCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
KTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9
KTsiKTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KCdIb2xhJyk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJS
Iik7CisKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
Cit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1udWxsLW5hbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1udWxsLW5hbWUuaHRt
bAkocmV2aXNpb24gMCkKKysrIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4
LW51bGwtbmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3pp
bGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5kZXguaHRtbAor
ICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBpbmRleCB3aXRoIG51bGwg
bmFtZSIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHNo
b3VsZEJlVHJ1ZSgiJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVG
YWxzZSgid2Via2l0SW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9j
YXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2Ny
aXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7
CisgICAgZGVidWcoImNsZWFuRGF0YWJhc2UoKToiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9y
ZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0
cnVlIH0pOyIpOworCisgICAgaW5kZXggPSBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJpbmRleCA9
IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KG51bGwsIG51bGwpOyIsICJ3ZWJraXRJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZG9uZSgpOworfQorCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpJbmRleDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgt
dW5pcXVlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NyZWF0ZS1pbmRleC11bmlxdWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtdW5pcXVlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyB1
bmlxdWUgaW5kZXggYW5kIHVwZGF0aW5nIGluZGV4TmFtZXMKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93IGlzIHRydWUKK1BB
U1Mgd2Via2l0SW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK3dlYmtpdEluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKQorb3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitjbGVhbkRhdGFiYXNl
KCk6CitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsK
K2luZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhOYW1lLCBpbmRleEtleVBhdGgs
IHsgdW5pcXVlOiB0cnVlIH0pOworUEFTUyBpbmRleC5uYW1lIGlzIGluZGV4TmFtZQorUEFTUyBp
bmRleC5rZXlQYXRoIGlzIGluZGV4S2V5UGF0aAorUEFTUyBpbmRleC51bmlxdWUgaXMgdHJ1ZQor
UEFTUyBvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGZvdW5kTmV3bHlD
cmVhdGVkSW5kZXggaXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMg
ZGIKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgd2Via2l0SURC
VHJhbnNhY3Rpb24uTE9BRElORworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBp
cyB3ZWJraXRJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHN0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS5odG1sCShyZXZpc2lvbiAwKQor
Kysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtdW5pcXVlLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmln
aW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9p
bmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2lu
YWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQidzIGNyZWF0aW5nIHVuaXF1ZSBpbmRleCBhbmQgdXBkYXRpbmcgaW5kZXhOYW1l
cyIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHNob3Vs
ZEJlVHJ1ZSgiJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVGYWxz
ZSgid2Via2l0SW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRp
b24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7Cisg
ICAgZGVidWcoImNsZWFuRGF0YWJhc2UoKToiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pOyIpOworCisgICAgaW5kZXhOYW1lID0gIjEiOworICAgIGluZGV4S2V5UGF0aCA9ICJ1bmlx
dWVfdmFsdWUiOworICAgIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBvYmplY3RTdG9yZS5j
cmVhdGVJbmRleChpbmRleE5hbWUsIGluZGV4S2V5UGF0aCwgeyB1bmlxdWU6IHRydWUgfSk7Iiwg
IndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgc2hvdWxk
QmUoImluZGV4Lm5hbWUiLCAiaW5kZXhOYW1lIik7CisgICAgc2hvdWxkQmUoImluZGV4LmtleVBh
dGgiLCAiaW5kZXhLZXlQYXRoIik7CisgICAgc2hvdWxkQmUoImluZGV4LnVuaXF1ZSIsICJ0cnVl
Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsK
KworICAgIGZvdW5kTmV3bHlDcmVhdGVkSW5kZXggPSBmYWxzZTsKKyAgICBmb3IgKHZhciBrID0g
MDsgayA8IG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoOyBrKyspIHsKKyAgICAgICAgaWYg
KG9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbShrKSA9PSBpbmRleE5hbWUpIHsKKyAgICAgICAg
ICAgIGZvdW5kTmV3bHlDcmVhdGVkSW5kZXggPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAg
IHNob3VsZEJlVHJ1ZSgiZm91bmROZXdseUNyZWF0ZWRJbmRleCIpOworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIiLCAiZGIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUiLCAid2Via2l0SURCVHJhbnNhY3Rpb24uTE9B
RElORyIpOworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJ3
ZWJraXRJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRSIpOworICAgIGRvbmUoKTsKK30KKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRl
LW9iamVjdHN0b3JlLWJhZC1vcHRpb25zLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYWQtb3B0aW9ucy0yLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9y
ZS1iYWQtb3B0aW9ucy0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9vYmplY3RT
dG9yZS5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIG9iamVj
dCBzdG9yZSB3aXRoIGJhZCBvcHRpb25zIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0SW5kZXhlZERCJyBpbiB3aW5k
b3ciKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ3ZWJraXRJbmRleGVkREIgPT0gbnVsbCIpOworCisg
ICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJN
eSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2Vz
cygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlv
biBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOworICAg
IGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBmb286ICcnIH0pOyIsICJ3ZWJraXRJREJE
YXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZG9uZSgpOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpJbmRleDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
b2JqZWN0c3RvcmUtYmFkLW9wdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYWQtb3B0aW9ucy5odG1sCShyZXZpc2lv
biAwKQorKysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtYmFk
LW9wdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxs
YTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0
bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRpbmcgb2JqZWN0IHN0b3Jl
IHdpdGggYmFkIG9wdGlvbnMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBzaG91bGRCZVRydWUoIid3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyIpOwor
ICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdEluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1l
ID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNj
ZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFu
RGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJjbGVhbkRhdGFiYXNlKCk6Iik7CisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdmb28nLCAnYmFyJyk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1i
YXNpY3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACitUZXN0IEluZGV4ZWREQidz
IGNyZWF0aW5nIG9iamVjdCBzdG9yZSBhbmQgdXBkYXRpbmcgcHJvcGVydGllcworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3cg
aXMgdHJ1ZQorUEFTUyB3ZWJraXRJbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQord2Via2l0SW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorRGVsZXRlZCBhbGwgb2JqZWN0
IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBp
bmZvLm9wdGlvbnMpOworUEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGluZm8ubmFtZQorUEFTUyBv
YmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCBpcyAwCitQQVNTIGV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbi5kYiBpcyBkYgorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0
ZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5MT0FESU5HCitQQVNTIGV2ZW50LnRhcmdldC50cmFu
c2FjdGlvbi5tb2RlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFCitvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsK
K1BBU1Mgb2JqZWN0U3RvcmUubmFtZSBpcyBpbmZvLm5hbWUKK1BBU1Mgb2JqZWN0U3RvcmUuaW5k
ZXhOYW1lcy5sZW5ndGggaXMgMAorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMg
ZGIKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgd2Via2l0SURC
VHJhbnNhY3Rpb24uTE9BRElORworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBp
cyB3ZWJraXRJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRQorb2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CitQQVNTIG9iamVjdFN0
b3JlLm5hbWUgaXMgaW5mby5uYW1lCitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3Ro
IGlzIDAKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50
LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxP
QURJTkcKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJh
bnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UKK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOworUEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGlu
Zm8ubmFtZQorUEFTUyBvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCBpcyAwCitQQVNTIGV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiBpcyBkYgorUEFTUyBldmVudC50YXJnZXQudHJhbnNh
Y3Rpb24ucmVhZHlTdGF0ZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5MT0FESU5HCitQQVNTIGV2
ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLlZFUlNJ
T05fQ0hBTkdFCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwg
aW5mby5vcHRpb25zKTsKK1BBU1Mgb2JqZWN0U3RvcmUubmFtZSBpcyBpbmZvLm5hbWUKK1BBU1Mg
b2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAorUEFTUyBldmVudC50YXJnZXQudHJh
bnNhY3Rpb24uZGIgaXMgZGIKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3Rh
dGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uTE9BRElORworUEFTUyBldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ubW9kZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRQorb2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7
CitQQVNTIG9iamVjdFN0b3JlLm5hbWUgaXMgaW5mby5uYW1lCitQQVNTIG9iamVjdFN0b3JlLmtl
eVBhdGggaXMgaW5mby5vcHRpb25zLmtleVBhdGgKK1BBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1l
cy5sZW5ndGggaXMgMAorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKK1BB
U1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgd2Via2l0SURCVHJhbnNh
Y3Rpb24uTE9BRElORworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRQorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CitQQVNTIG9iamVjdFN0b3JlLm5h
bWUgaXMgaW5mby5uYW1lCitQQVNTIG9iamVjdFN0b3JlLmtleVBhdGggaXMgaW5mby5vcHRpb25z
LmtleVBhdGgKK1BBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAorUEFTUyBl
dmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLnJlYWR5U3RhdGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uTE9BRElORworUEFTUyBl
dmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5WRVJT
SU9OX0NIQU5HRQorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5hbWUs
IGluZm8ub3B0aW9ucyk7CitQQVNTIG9iamVjdFN0b3JlLm5hbWUgaXMgaW5mby5uYW1lCitQQVNT
IG9iamVjdFN0b3JlLmtleVBhdGggaXMgaW5mby5vcHRpb25zLmtleVBhdGgKK1BBU1Mgb2JqZWN0
U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rp
b24uZGIgaXMgZGIKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMg
d2Via2l0SURCVHJhbnNhY3Rpb24uTE9BRElORworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rp
b24ubW9kZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2lj
cy5odG1sCShyZXZpc2lvbiAwKQorKysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
b2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEu
b3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9vYmpl
Y3RTdG9yZS5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5
cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2Ny
ZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIG9i
amVjdCBzdG9yZSBhbmQgdXBkYXRpbmcgcHJvcGVydGllcyIpOworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtpdEluZGV4ZWRE
QicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVGYWxzZSgid2Via2l0SW5kZXhlZERCID09IG51
bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3Jp
cHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIndl
YmtpdEluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygi
b3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRh
YmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVidWcoImNsZWFuRGF0YWJhc2Uo
KToiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmVJ
bmZvID0gWworICAgICAgICB7IG5hbWU6ICIxIiwgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50OiB0
cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiMiIsIG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDog
ZmFsc2UgfSB9LAorICAgICAgICB7IG5hbWU6ICIzIiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiB9
IH0sCisgICAgICAgIHsgbmFtZTogIjQiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBhdXRvSW5j
cmVtZW50OiB0cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiNSIsIG9wdGlvbnM6IHsga2V5UGF0
aDogIiIsIGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiNiIsIG9w
dGlvbnM6IHsga2V5UGF0aDogImZvbyIgfSB9LAorICAgICAgICB7IG5hbWU6ICI3Iiwgb3B0aW9u
czogeyBrZXlQYXRoOiAiZm9vIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAorICAgICAgICB7
IG5hbWU6ICI4Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAiZm9vIiwgYXV0b0luY3JlbWVudDogdHJ1
ZSB9IH0KKyAgICBdOworCisgICAgZm9yICh2YXIgaW5kZXggaW4gb2JqZWN0U3RvcmVJbmZvKSB7
CisgICAgICAgIGluZGV4ID0gcGFyc2VJbnQoaW5kZXgpOworICAgICAgICBpbmZvID0gb2JqZWN0
U3RvcmVJbmZvW2luZGV4XTsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsi
KTsKKyAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiaW5mby5uYW1lIik7Cisg
ICAgICAgIGlmIChpbmZvLm9wdGlvbnMgJiYgaW5mby5vcHRpb25zLmtleVBhdGgpIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgImluZm8ub3B0aW9ucy5rZXlQ
YXRoIik7CisgICAgICAgIH0KKyAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFt
ZXMubGVuZ3RoIiwgIjAiKTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5kYiIsICJkYiIpOworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0
aW9uLnJlYWR5U3RhdGUiLCAid2Via2l0SURCVHJhbnNhY3Rpb24uTE9BRElORyIpOworICAgICAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAid2Via2l0SURCVHJh
bnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UiKTsKKyAgICB9CisKKyAgICBkb25lKCk7Cit9CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1v
YmplY3RzdG9yZS1lbXB0eS1uYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtZW1wdHktbmFtZS5odG1sCShyZXZpc2lvbiAw
KQorKysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtZW1wdHkt
bmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRtbAor
ICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGlj
YXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMu
b3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBvYmplY3Qgc3RvcmUgd2l0
aCBlbXB0eSAoYmxhbmsgc3RyaW5nKSBuYW1lIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0SW5kZXhlZERCJyBpbiB3
aW5kb3ciKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ3ZWJraXRJbmRleGVkREIgPT0gbnVsbCIpOwor
CisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3Vj
Y2VzcygpOiIpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
J3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiY2xlYW5EYXRhYmFzZSgpOiIpOwor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnJyk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1u
dWxsLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Ny
ZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLW51bGwtbmFtZS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2lu
YWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5k
ZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0U3RvcmUuaHRtbAorICBsaWNlbnNlIG9mIG9y
aWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVi
bGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFp
bi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
VGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBvYmplY3Qgc3RvcmUgd2l0aCBudWxsIG5hbWUiKTsK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBzaG91bGRCZVRy
dWUoIid3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyIpOworICAgIHNob3VsZEJlRmFsc2UoIndl
YmtpdEluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBh
dGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbiki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vz
cygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9n
KCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRl
YnVnKCJjbGVhbkRhdGFiYXNlKCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsK
KworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKG51bGwp
OyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAg
ZG9uZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOwor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9ldmVudC1zb3VyY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvZXZlbnQtc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZlbnQtc291cmNlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorVGVzdCBJbmRleGVkREIncyBvYmplY3RTdG9y
ZU5hbWVzIGFycmF5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICd3ZWJr
aXRJbmRleGVkREInIGluIHdpbmRvdyBpcyB0cnVlCitQQVNTIHdlYmtpdEluZGV4ZWREQiA9PSBu
dWxsIGlzIGZhbHNlCit3ZWJraXRJbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKK3Nv
dXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7CitQQVNTIHNvdXJjZSBpcyB3ZWJraXRJbmRleGVk
REIKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpCitzb3VyY2UgPSBldmVudC50YXJnZXQuc291cmNlOworUEFTUyBzb3VyY2UgaXMg
ZGIKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOworcmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZCh7fSk7Citzb3VyY2UgPSBldmVudC50YXJnZXQuc291cmNl
OworUEFTUyBzb3VyY2UgaXMgb2JqZWN0U3RvcmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2V2ZW50LXNvdXJjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvZXZlbnQtc291cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBzdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2V2ZW50LXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5k
ZXguaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvYmplY3RTdG9yZU5hbWVz
IGFycmF5Iik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
c2hvdWxkQmVUcnVlKCInd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3ciKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJ3ZWJraXRJbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5s
b2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4obmFtZSwgZGVz
Y3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24g
b3BlblN1Y2Nlc3MoKQoreworICAgIGRlYnVnKCJvcGVuU3VjY2VzcygpOiIpOworICAgIHNvdXJj
ZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hv
dWxkQmUoInNvdXJjZSIsICJ3ZWJraXRJbmRleGVkREIiKTsKKworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVi
dWcoImNsZWFuRGF0YWJhc2UoKToiKTsKKyAgICBzb3VyY2UgPSBldmFsQW5kTG9nKCJzb3VyY2Ug
PSBldmVudC50YXJnZXQuc291cmNlOyIpOworICAgIHNob3VsZEJlKCJzb3VyY2UiLCAiZGIiKTsK
KworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZU5hbWUg
PSAiT2JqZWN0cyI7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0
cnVlIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuYWRkKHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFyZVdlRG9uZVlldDsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gYXJlV2VEb25lWWV0KCkKK3sKKyAgICBkZWJ1ZygiYXJlV2VEb25lWWV0KCk6Iik7CisgICAg
c291cmNlID0gZXZhbEFuZExvZygic291cmNlID0gZXZlbnQudGFyZ2V0LnNvdXJjZTsiKTsKKyAg
ICBzaG91bGRCZSgic291cmNlIiwgIm9iamVjdFN0b3JlIik7CisgICAgZG9uZSgpOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpJbmRleDogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwt
ZGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9nbG9iYWwtZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2dsb2JhbC1kYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyOSBAQAorVGVzdCBJbmRleGVkREIncyBvcGVuaW5nIERCIG1vcmUgdGhhbiBvbmNlCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICd3ZWJraXRJbmRleGVkREInIGlu
IHdpbmRvdyBpcyB0cnVlCitQQVNTIHdlYmtpdEluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCit3
ZWJraXRJbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKK2RiMSA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK3JlcXVlc3QgPSBkYjEuc2V0VmVyc2lvbigndmVyc2lvbiAxJykKK0RlbGV0ZWQg
YWxsIG9iamVjdCBzdG9yZXMuCitkYjEuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1l
LCBvYmplY3RTdG9yZU9wdGlvbnMpOword2Via2l0SW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pOworZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBkYjEgIT09IGRiMiBpcyB0
cnVlCitQQVNTIGRiMS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGRiMS5vYmpl
Y3RTdG9yZU5hbWVzLml0ZW0oMCkgaXMgb2JqZWN0U3RvcmVOYW1lCitQQVNTIGRiMi5vYmplY3RT
dG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGRiMi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkg
aXMgb2JqZWN0U3RvcmVOYW1lCitvYmplY3RTdG9yZTEgPSBkYjEudHJhbnNhY3Rpb24ob2JqZWN0
U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOworUEFTUyBvYmplY3RTdG9y
ZTEubmFtZSBpcyBvYmplY3RTdG9yZU5hbWUKK1BBU1Mgb2JqZWN0U3RvcmUxLmtleVBhdGggaXMg
b2JqZWN0U3RvcmVPcHRpb25zLmtleVBhdGgKK29iamVjdFN0b3JlMiA9IGRiMi50cmFuc2FjdGlv
bihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitQQVNTIG9i
amVjdFN0b3JlMSAhPT0gb2JqZWN0U3RvcmUyIGlzIHRydWUKK1BBU1Mgb2JqZWN0U3RvcmUyLm5h
bWUgaXMgb2JqZWN0U3RvcmVOYW1lCitQQVNTIG9iamVjdFN0b3JlMi5rZXlQYXRoIGlzIG9iamVj
dFN0b3JlT3B0aW9ucy5rZXlQYXRoCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKSW5kZXg6IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZ2xvYmFsLWRh
dGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2JhbC1k
YXRhLmh0bWwJKHJldmlzaW9uIDApCisrKyBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2Jh
bC1kYXRhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEy
LjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2dsb2JhbF9kYXRhLmh0bWwKKyAgbGlj
ZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQg
dG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9w
dWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb3BlbmluZyBEQiBtb3JlIHRoYW4gb25jZSIpOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHNob3VsZEJlVHJ1
ZSgiJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVGYWxzZSgid2Vi
a2l0SW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0
aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYjEgPSBldmFsQW5kTG9n
KCJkYjEgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiMS5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAg
ZGVidWcoImNsZWFuRGF0YWJhc2UoKToiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIx
KTsKKworICAgIG9iamVjdFN0b3JlTmFtZSA9ICJPYmplY3RzIjsKKyAgICBvYmplY3RTdG9yZU9w
dGlvbnMgPSB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfTsKKyAgICBldmFs
QW5kTG9nKCJkYjEuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCBvYmplY3RTdG9y
ZU9wdGlvbnMpOyIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9w
ZW4yU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlbjJTdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nl
c3MoKToiKTsKKyAgICBkYjIgPSBldmFsQW5kTG9nKCJkYjIgPSBldmVudC50YXJnZXQucmVzdWx0
Iik7CisKKyAgICBzaG91bGRCZVRydWUoImRiMSAhPT0gZGIyIik7CisgICAgc2hvdWxkQmUoImRi
MS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiMS5vYmpl
Y3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUo
ImRiMi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiMi5v
YmplY3RTdG9yZU5hbWVzLml0ZW0oMCkiLCAib2JqZWN0U3RvcmVOYW1lIik7CisKKyAgICBvYmpl
Y3RTdG9yZTEgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZTEgPSBkYjEudHJhbnNhY3Rpb24ob2Jq
ZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAgIHNob3Vs
ZEJlKCJvYmplY3RTdG9yZTEubmFtZSIsICJvYmplY3RTdG9yZU5hbWUiKTsKKyAgICBzaG91bGRC
ZSgib2JqZWN0U3RvcmUxLmtleVBhdGgiLCAib2JqZWN0U3RvcmVPcHRpb25zLmtleVBhdGgiKTsK
KworICAgIG9iamVjdFN0b3JlMiA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlMiA9IGRiMi50cmFu
c2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7Iik7
CisgICAgc2hvdWxkQmVUcnVlKCJvYmplY3RTdG9yZTEgIT09IG9iamVjdFN0b3JlMiIpOworICAg
IHNob3VsZEJlKCJvYmplY3RTdG9yZTIubmFtZSIsICJvYmplY3RTdG9yZU5hbWUiKTsKKyAgICBz
aG91bGRCZSgib2JqZWN0U3RvcmUyLmtleVBhdGgiLCAib2JqZWN0U3RvcmVPcHRpb25zLmtleVBh
dGgiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHN0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMtYXV0b2luY3JlbWVudC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vy
c29ycy1hdXRvaW5jcmVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMtYXV0b2luY3JlbWVudC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgaW5kZXgg
Y3Vyc29ycworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAnd2Via2l0SW5k
ZXhlZERCJyBpbiB3aW5kb3cgaXMgdHJ1ZQorUEFTUyB3ZWJraXRJbmRleGVkREIgPT0gbnVsbCBp
cyBmYWxzZQord2Via2l0SW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQor
RGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CitvYmpl
Y3RTdG9yZS5jcmVhdGVJbmRleChpbmRleGVzW2pdLm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5v
cHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUn
LCBpbmRleGVzW2pdLm9wdGlvbnMpOworZGF0YSA9IHsgbmFtZTogJ0JlbicgfTsKK3JlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7CitpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4
ZXNbal0ubmFtZSk7CityZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigpOworaW5kZXggPSBvYmpl
Y3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5hbWUpOworcmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJz
b3IoKTsKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5uYW1lIGlzICdCZW4nCitQQVNT
IGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubmFtZSBpcyAnQmVuJworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLWF1dG9pbmNyZW1lbnQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLWF1dG9pbmNyZW1lbnQu
aHRtbAkocmV2aXNpb24gMCkKKysrIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1
cnNvcnMtYXV0b2luY3JlbWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vYmplY3RDdXJz
b3JzLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgaW5kZXggY3Vyc29ycyIp
OworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHNob3VsZEJl
VHJ1ZSgiJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVGYWxzZSgi
d2Via2l0SW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24u
cGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRM
b2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAg
ZGVidWcoImNsZWFuRGF0YWJhc2UoKToiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIp
OworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsi
KTsKKyAgICBpbmRleGVzID0gWworICAgICAgICB7IG5hbWU6ICJhIiwgb3B0aW9uczogeyB9IH0s
CisgICAgICAgIHsgbmFtZTogImIiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0KKyAgICBd
OworICAgIGZvciAoaiBpbiBpbmRleGVzKSB7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0
b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRleGVzW2pdLm9wdGlv
bnMpOyIpOworICAgIH0KKyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsgbmFtZTogJ0Jl
bicgfTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmFkZChkYXRhKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBv
c3RBZGQoKQoreworICAgIGRlYnVnKCJwb3N0QWRkKCk6Iik7CisgICAgbnVtSW5kZXhlcyA9IGlu
ZGV4ZXMubGVuZ3RoOworICAgIGluZGV4ZXNGaW5pc2hlZCA9IDA7CisgICAgZm9yIChqIGluIGlu
ZGV4ZXMpIHsKKyAgICAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3Jl
LmluZGV4KGluZGV4ZXNbal0ubmFtZSk7Iik7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigpOyIpOworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQudmFsdWUubmFtZSIsICInQmVuJyIpOworICAgICAgICAgICAgaWYgKCsraW5kZXhlc0Zp
bmlzaGVkID09IG51bUluZGV4ZXMpIHsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgfQorCit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4
OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2Jq
ZWN0LWN1cnNvcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitU
ZXN0IEluZGV4ZWREQidzIGluZGV4IGN1cnNvcnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgJ3dlYmtpdEluZGV4ZWREQicgaW4gd2luZG93IGlzIHRydWUKK1BBU1Mgd2Vi
a2l0SW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK3dlYmtpdEluZGV4ZWREQi5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0
VmVyc2lvbigndmVyc2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5j
cmVtZW50OiBmYWxzZSB9KTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFt
ZSwgJ25hbWUnLCBpbmRleGVzW2pdLm9wdGlvbnMpOworb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgo
aW5kZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7CitkYXRhID0geyBu
YW1lOiAnQmVuJywgaWQ6IDEgfTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7Citp
bmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4ZXNbal0ubmFtZSk7CityZXF1ZXN0ID0gaW5k
ZXgub3BlbkN1cnNvcigpOworaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5h
bWUpOworcmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKTsKK1BBU1MgZXZlbnQudGFyZ2V0LnJl
c3VsdC52YWx1ZS5uYW1lIGlzICdCZW4nCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUu
bmFtZSBpcyAnQmVuJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCkluZGV4OiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29y
cy5odG1sCShyZXZpc2lvbiAwKQorKysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3Qt
Y3Vyc29ycy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxh
Mi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vYmplY3RDdXJzb3JzLmh0bWwKKyAg
bGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgaW5kZXggY3Vyc29ycyIpOworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtp
dEluZGV4ZWREQicgaW4gd2luZG93Iik7CisgICAgc2hvdWxkQmVGYWxzZSgid2Via2l0SW5kZXhl
ZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAg
ICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVidWcoImNsZWFu
RGF0YWJhc2UoKToiKTsKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogZmFsc2UgfSk7Iik7CisgICAgaW5k
ZXhlcyA9IFsKKyAgICAgICAgeyBuYW1lOiAiYSIsIG9wdGlvbnM6IHsgfSB9LAorICAgICAgICB7
IG5hbWU6ICJiIiwgb3B0aW9uczogeyB1bmlxdWU6IHRydWUgfSB9CisgICAgXTsKKyAgICBmb3Ig
KGogaW4gaW5kZXhlcykgeworICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleChpbmRleGVzW2pdLm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5vcHRpb25zKTsiKTsKKyAg
ICB9CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IG5hbWU6ICdCZW4nLCBpZDogMSB9
OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KGRhdGEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFk
ZCgpCit7CisgICAgZGVidWcoInBvc3RBZGQoKToiKTsKKyAgICBudW1JbmRleGVzID0gaW5kZXhl
cy5sZW5ndGg7CisgICAgaW5kZXhlc0ZpbmlzaGVkID0gMDsKKyAgICBmb3IgKGogaW4gaW5kZXhl
cykgeworICAgICAgICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5k
ZXgoaW5kZXhlc1tqXS5uYW1lKTsiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3Vs
dC52YWx1ZS5uYW1lIiwgIidCZW4nIik7CisgICAgICAgICAgICBpZiAoKytpbmRleGVzRmluaXNo
ZWQgPT0gbnVtSW5kZXhlcykgeworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfTsKKyAgICB9CisKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHN0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0c3RvcmVuYW1lcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2Jq
ZWN0c3RvcmVuYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAK
K1Rlc3QgSW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmVOYW1lcyBhcnJheQorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyAnd2Via2l0SW5kZXhlZERCJyBpbiB3aW5kb3cgaXMgdHJ1
ZQorUEFTUyB3ZWJraXRJbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQord2Via2l0SW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jl
cy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7
IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CitQQVNTICdvYmplY3RTdG9y
ZU5hbWVzJyBpbiBkYiBpcyB0cnVlCitQQVNTIGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlz
IDEKK1BBU1MgZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIGlzIG9iamVjdFN0b3JlTmFtZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0c3RvcmVuYW1lcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0c3RvcmVuYW1lcy5odG1sCShy
ZXZpc2lvbiAwKQorKysgc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVz
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEt
LQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291
cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCisgIGxpY2Vuc2Ug
b2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGlj
ZG9tYWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IEluZGV4ZWREQidzIG9iamVjdFN0b3JlTmFtZXMgYXJyYXkiKTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBzaG91bGRCZVRydWUoIid3ZWJr
aXRJbmRleGVkREInIGluIHdpbmRvdyIpOworICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdEluZGV4
ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwor
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJ3ZWJraXRJbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7Cisg
ICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCJjbGVh
bkRhdGFiYXNlKCk6Iik7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9i
amVjdFN0b3JlTmFtZSA9ICJhIjsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGtleVBhdGg6
ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisKKyAgICBzaG91bGRCZVRydWUoIidv
YmplY3RTdG9yZU5hbWVzJyBpbiBkYiIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMuaXRl
bSgwKSIsICJvYmplY3RTdG9yZU5hbWUiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89706</attachid>
            <date>2011-04-14 17:57:38 -0700</date>
            <delta_ts>2011-04-15 10:45:40 -0700</delta_ts>
            <desc>second draft of tests (incomplete)</desc>
            <filename>bug-58560b.patch</filename>
            <type>text/plain</type>
            <size>82659</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQt
dHdpY2UtZmFpbHVyZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFp
bHVyZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3QgSW5k
ZXhlZERCIGJlaGF2aW9yIGFkZGluZyB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3
aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4
ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikK
K2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJyk7CitrZXkgPSAxMAorcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZCh7fSwga2V5KTsKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMga2V5CityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHt9LCBrZXkpOworUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIHdlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYWRkLXR3aWNlLWZhaWx1cmUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sCShyZXZpc2lvbiAwKQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvYWRkLXR3aWNlLWZhaWx1cmUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYWRkX3R3aWNl
X2ZhaWx1cmUuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgYmVoYXZpb3IgYWRk
aW5nIHRoZSBzYW1lIHByb3BlcnR5IHR3aWNlIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0g
d2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJ
bmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKwor
ICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAga2V5ID0gZXZhbEFu
ZExvZygia2V5ID0gMTAiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZp
cnN0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gYWRkRmlyc3RTdWNjZXNzKCkKK3sKKyAgICBzaG91bGRCZSgicmVx
dWVzdC5yZXN1bHQiLCAia2V5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoe30sIGtleSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1
bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IGFkZFNlY29u
ZEV4cGVjdGVkRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGFkZFNlY29uZEV4cGVjdGVkRXJyb3IoKQor
eworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElEQkRhdGFi
YXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZG9uZSgpOworfQorCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2JhZC1rZXlwYXRoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dl
YktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCBJbmRleGVkREIg
YWRkaW5nIHByb3BlcnR5IHdpdGggaW52YWxpZCBrZXlwYXRoCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTICd3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyBpcyB0cnVlCitQ
QVNTIHdlYmtpdEluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCit3ZWJraXRJbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgor
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAna2V5
UGF0aCcgfSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0aDogJ2ZvbycgfSk7
CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9y
Q29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRo
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGguaHRtbAkocmV2aXNpb24gMCkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Jh
ZC1rZXlwYXRoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemls
bGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKKyAg
bGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGFkZGluZyBwcm9wZXJ0eSB3aXRoIGludmFsaWQg
a2V5cGF0aCIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNo
b3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93Lmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
dmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2tleVBhdGgnIH0pOyIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0aDogJ2Zvbycg
fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFk
ZEZpcnN0U3VjY2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBlY3Rl
ZEVycm9yOworfQorCitmdW5jdGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKK3sKKyAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NsZWFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9jbGVhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjQgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgY2xlYXJpbmcgYW4gb2JqZWN0IHN0b3JlCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERC
IHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsKK1BBU1Mg
aW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
dmVyc2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CityZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50
cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CitQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LlJFQURfT05MWV9FUlIKK2RiLnRyYW5zYWN0aW9uKCdmb28nLCB3ZWJraXRJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsKK3JlcXVlc3QgPSBkYi50
cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsKK2N1cnNv
ciA9IHJlcXVlc3QucmVzdWx0OworUEFTUyBjdXJzb3IgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY2xlYXIuaHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5h
bCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRl
eGVkREIvdGVzdC90ZXN0X2NsZWFyLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogor
ICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
Ky0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgY2xlYXJpbmcgYW4gb2JqZWN0IHN0b3JlIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0g
d2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJ
bmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKwor
ICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhcigp
Cit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9i
amVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5S
RUFEX09OTFlfRVJSIik7CisgICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycsIHdl
YmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigp
OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24o
J2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhcmVXZUNsZWFyWWV0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhcmVXZUNsZWFyWWV0KCkKK3sKKyAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICBzaG91
bGRCZSgiY3Vyc29yIiwgIm51bGwiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtYmFkLW9wdGlvbnMtMi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9ucy0yLmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
aW5kZXgtYmFkLW9wdGlvbnMtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5k
ZXguaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBpbmRleCB3
aXRoIGJhZCBvcHRpb25zIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4
ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7
CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3
aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRh
YmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1
ZSB9KTsiKTsKKworICAgIGluZGV4ID0gZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXggPSBv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZm9vJywgJ2JhcicsIHsgZm9vOiAnJyB9KTsiLCAid2Vi
a2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsK
K30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9ucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9ucy5odG1sCShyZXZpc2lv
biAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLWluZGV4LWJhZC1vcHRpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2NyZWF0ZV9pbmRleC5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNy
ZWF0aW5nIGluZGV4IHdpdGggYmFkIG9wdGlvbnMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwor
CisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisgICAgaW5kZXggPSBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmb28nLCAnYmFyJywgMTApOyIs
ICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZG9u
ZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LWVtcHR5LW5h
bWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtZW1wdHktbmFtZS5odG1sCShyZXZp
c2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LWVtcHR5LW5hbWUuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3RfY3JlYXRlX2luZGV4Lmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAg
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0t
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
Y3JlYXRpbmcgaW5kZXggd2l0aCBlbXB0eSAoYmxhbmsgc3RyaW5nKSBuYW1lIik7CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhl
ZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhl
ZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Cit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHsga2V5
UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCcnLCAnJyk7IiwgIndlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAgICBkb25lKCk7Cit9CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtbm8ta2V5cGF0aC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1uby1rZXlwYXRoLmh0bWwJKHJldmlzaW9uIDApCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9jcmVhdGUtaW5kZXgtbm8ta2V5cGF0aC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5t
b3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVh
dGVfaW5kZXguaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBp
bmRleCB3aXRoIG5vIGtleXBhdGgiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cu
aW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWRE
QjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFt
ZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVh
bkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pOyIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoJ0hvbGEnKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RS
QUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1pbmRleC1udWxsLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgt
bnVsbC1uYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtbnVsbC1uYW1lLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQor
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCisgIGxpY2Vuc2Ugb2Yg
b3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIGluZGV4IHdpdGggbnVsbCBuYW1lIik7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZh
bEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5k
ZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5k
ZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFz
ZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHsg
a2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIGluZGV4ID0g
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChu
dWxsLCBudWxsKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIi
KTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
K3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3Bh
cnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1p
bmRleC11bmlxdWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlx
dWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mg
Y3JlYXRpbmcgdW5pcXVlIGluZGV4IGFuZCB1cGRhdGluZyBpbmRleE5hbWVzCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdp
bmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsKK1BBU1MgaW5kZXhl
ZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQor
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lv
biAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0p
OworaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleE5hbWUsIGluZGV4S2V5UGF0
aCwgeyB1bmlxdWU6IHRydWUgfSk7CitQQVNTIGluZGV4Lm5hbWUgaXMgaW5kZXhOYW1lCitQQVNT
IGluZGV4LmtleVBhdGggaXMgaW5kZXhLZXlQYXRoCitQQVNTIGluZGV4LnVuaXF1ZSBpcyB0cnVl
CitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgZm91bmROZXds
eUNyZWF0ZWRJbmRleCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiBp
cyBkYgorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSBpcyB3ZWJraXRJ
REJUcmFuc2FjdGlvbi5MT0FESU5HCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2Rl
IGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVu
aXF1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlxdWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlxdWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
Y3JlYXRlX2luZGV4Lmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRp
bmcgdW5pcXVlIGluZGV4IGFuZCB1cGRhdGluZyBpbmRleE5hbWVzIik7CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygi
aW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8
IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09
IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDog
J2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIGluZGV4TmFtZSA9ICIxIjsK
KyAgICBpbmRleEtleVBhdGggPSAidW5pcXVlX3ZhbHVlIjsKKyAgICBpbmRleCA9IGV2YWxBbmRM
b2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhOYW1lLCBpbmRleEtleVBh
dGgsIHsgdW5pcXVlOiB0cnVlIH0pOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05T
VFJBSU5UX0VSUiIpOworICAgIHNob3VsZEJlKCJpbmRleC5uYW1lIiwgImluZGV4TmFtZSIpOwor
ICAgIHNob3VsZEJlKCJpbmRleC5rZXlQYXRoIiwgImluZGV4S2V5UGF0aCIpOworICAgIHNob3Vs
ZEJlKCJpbmRleC51bmlxdWUiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5p
bmRleE5hbWVzLmxlbmd0aCIsICIxIik7CisKKyAgICBmb3VuZE5ld2x5Q3JlYXRlZEluZGV4ID0g
ZmFsc2U7CisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxl
bmd0aDsgaysrKSB7CisgICAgICAgIGlmIChvYmplY3RTdG9yZS5pbmRleE5hbWVzLml0ZW0oaykg
PT0gaW5kZXhOYW1lKSB7CisgICAgICAgICAgICBmb3VuZE5ld2x5Q3JlYXRlZEluZGV4ID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaG91bGRCZVRydWUoImZvdW5kTmV3bHlDcmVhdGVk
SW5kZXgiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIiwgImRi
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRlIiwg
IndlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkciKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAid2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFO
R0UiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
Cit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
b2JqZWN0c3RvcmUtYmFkLW9wdGlvbnMtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmpl
Y3RzdG9yZS1iYWQtb3B0aW9ucy0yLmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0
c3RvcmUtYmFkLW9wdGlvbnMtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2Jq
ZWN0U3RvcmUuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBv
YmplY3Qgc3RvcmUgd2l0aCBiYWQgb3B0aW9ucyIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9
IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96
SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisK
KyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJywgeyBmb286ICcnIH0pOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZG9uZSgpOworfQorCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhZC1vcHRpb25zLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhZC1vcHRpb25zLmh0bWwJKHJldmlzaW9uIDAp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtYmFkLW9wdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rp
b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3MgY3JlYXRpbmcgb2JqZWN0IHN0b3JlIHdpdGggYmFkIG9wdGlvbnMiKTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVk
REIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVk
REIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
K3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsICdiYXInKTsiLCAid2Via2l0SURC
RGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsKK30KKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgY3JlYXRp
bmcgb2JqZWN0IHN0b3JlIGFuZCB1cGRhdGluZyBwcm9wZXJ0aWVzCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53
ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsKK1BBU1MgaW5kZXhlZERCID09
IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQorZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykK
K0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsKK1BBU1Mgb2JqZWN0U3RvcmUubmFtZSBp
cyBpbmZvLm5hbWUKK1BBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAorUEFT
UyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKK1BBU1MgZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uTE9BRElORworUEFT
UyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5W
RVJTSU9OX0NIQU5HRQorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5h
bWUsIGluZm8ub3B0aW9ucyk7CitQQVNTIG9iamVjdFN0b3JlLm5hbWUgaXMgaW5mby5uYW1lCitQ
QVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BBU1MgZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFk
eVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkcKK1BBU1MgZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UK
K29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlv
bnMpOworUEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGluZm8ubmFtZQorUEFTUyBvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aCBpcyAwCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5k
YiBpcyBkYgorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSBpcyB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5MT0FESU5HCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5t
b2RlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFCitvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsKK1BBU1Mgb2Jq
ZWN0U3RvcmUubmFtZSBpcyBpbmZvLm5hbWUKK1BBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5s
ZW5ndGggaXMgMAorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKK1BBU1Mg
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgd2Via2l0SURCVHJhbnNhY3Rp
b24uTE9BRElORworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJraXRJ
REJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRQorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CitQQVNTIG9iamVjdFN0b3JlLm5hbWUg
aXMgaW5mby5uYW1lCitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BB
U1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbi5yZWFkeVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkcKK1BB
U1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24u
VkVSU0lPTl9DSEFOR0UKK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5u
YW1lLCBpbmZvLm9wdGlvbnMpOworUEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGluZm8ubmFtZQor
UEFTUyBvYmplY3RTdG9yZS5rZXlQYXRoIGlzIGluZm8ub3B0aW9ucy5rZXlQYXRoCitQQVNTIG9i
amVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRl
IGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkcKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UKK29iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOwor
UEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGluZm8ubmFtZQorUEFTUyBvYmplY3RTdG9yZS5rZXlQ
YXRoIGlzIGluZm8ub3B0aW9ucy5rZXlQYXRoCitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMu
bGVuZ3RoIGlzIDAKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNT
IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0
aW9uLkxPQURJTkcKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0
SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UKK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOworUEFTUyBvYmplY3RTdG9yZS5uYW1l
IGlzIGluZm8ubmFtZQorUEFTUyBvYmplY3RTdG9yZS5rZXlQYXRoIGlzIGluZm8ub3B0aW9ucy5r
ZXlQYXRoCitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BBU1MgZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5yZWFkeVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkcKK1BBU1MgZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lP
Tl9DSEFOR0UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9i
amVjdHN0b3JlLWJhc2ljcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0
U3RvcmUuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBvYmpl
Y3Qgc3RvcmUgYW5kIHVwZGF0aW5nIHByb3BlcnRpZXMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93
Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIp
OworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmVJbmZvID0gWworICAgICAg
ICB7IG5hbWU6ICIxIiwgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0gfSwKKyAgICAg
ICAgeyBuYW1lOiAiMiIsIG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAorICAg
ICAgICB7IG5hbWU6ICIzIiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiB9IH0sCisgICAgICAgIHsg
bmFtZTogIjQiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0g
fSwKKyAgICAgICAgeyBuYW1lOiAiNSIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIsIGF1dG9JbmNy
ZW1lbnQ6IGZhbHNlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiNiIsIG9wdGlvbnM6IHsga2V5UGF0
aDogImZvbyIgfSB9LAorICAgICAgICB7IG5hbWU6ICI3Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAi
Zm9vIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAorICAgICAgICB7IG5hbWU6ICI4Iiwgb3B0
aW9uczogeyBrZXlQYXRoOiAiZm9vIiwgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0KKyAgICBdOwor
CisgICAgZm9yICh2YXIgaW5kZXggaW4gb2JqZWN0U3RvcmVJbmZvKSB7CisgICAgICAgIGluZGV4
ID0gcGFyc2VJbnQoaW5kZXgpOworICAgICAgICBpbmZvID0gb2JqZWN0U3RvcmVJbmZvW2luZGV4
XTsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsiKTsKKyAgICAgICAgc2hv
dWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiaW5mby5uYW1lIik7CisgICAgICAgIGlmIChpbmZv
Lm9wdGlvbnMgJiYgaW5mby5vcHRpb25zLmtleVBhdGgpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgImluZm8ub3B0aW9ucy5rZXlQYXRoIik7CisgICAgICAg
IH0KKyAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjAi
KTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiIsICJkYiIp
OworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUi
LCAid2Via2l0SURCVHJhbnNhY3Rpb24uTE9BRElORyIpOworICAgICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAid2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lP
Tl9DSEFOR0UiKTsKKyAgICB9CisKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgor
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtZW1wdHktbmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1vYmplY3RzdG9yZS1lbXB0eS1uYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVh
dGUtb2JqZWN0c3RvcmUtZW1wdHktbmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5t
b3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVh
dGVfb2JqZWN0U3RvcmUuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVh
dGluZyBvYmplY3Qgc3RvcmUgd2l0aCBlbXB0eSAoYmxhbmsgc3RyaW5nKSBuYW1lIik7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZh
bEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5k
ZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5k
ZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFz
ZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCcnKTsiLCAid2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwJKHJldmlzaW9uIDAp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2NyZWF0ZV9vYmplY3RTdG9yZS5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoK
KyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9u
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSB3aXRoIG51bGwgbmFtZSIpOworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8
fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9
PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRl
c2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZShudWxsKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZl
bnQtc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mg
b2JqZWN0U3RvcmVOYW1lcyBhcnJheQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
aW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8
IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKK3NvdXJjZSA9IGV2ZW50LnRhcmdldC5z
b3VyY2U7CitQQVNTIHNvdXJjZSBpcyB3ZWJraXRJbmRleGVkREIKK2RiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitzb3VyY2UgPSBl
dmVudC50YXJnZXQuc291cmNlOworUEFTUyBzb3VyY2UgaXMgZGIKK0RlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZCh7fSk7Citzb3VyY2UgPSBldmVudC50YXJnZXQuc291cmNlOworUEFTUyBzb3VyY2UgaXMgb2Jq
ZWN0U3RvcmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9ldmVudC1zb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9ldmVudC1zb3VyY2Uu
aHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9jcmVhdGVfaW5kZXguaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAg
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBv
YmplY3RTdG9yZU5hbWVzIGFycmF5Iik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5h
bWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzb3VyY2UgPSBldmFsQW5kTG9nKCJzb3VyY2Ug
PSBldmVudC50YXJnZXQuc291cmNlOyIpOworICAgIHNob3VsZEJlKCJzb3VyY2UiLCAid2Via2l0
SW5kZXhlZERCIik7CisKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJj
ZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hvdWxkQmUoInNvdXJjZSIsICJkYiIp
OworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlTmFt
ZSA9ICJPYmplY3RzIjsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6
IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXJlV2VEb25lWWV0Owor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBhcmVXZURvbmVZZXQoKQoreworICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9
IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hvdWxkQmUoInNvdXJjZSIsICJvYmplY3RT
dG9yZSIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2Jh
bC1kYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mgb3BlbmluZyBEQiBtb3JlIHRoYW4g
b25jZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikKK2RiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYjEu
c2V0VmVyc2lvbigndmVyc2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitkYjEu
Y3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCBvYmplY3RTdG9yZU9wdGlvbnMpOwor
d2Via2l0SW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pOworZGIyID0gZXZlbnQudGFy
Z2V0LnJlc3VsdAorUEFTUyBkYjEgIT09IGRiMiBpcyB0cnVlCitQQVNTIGRiMS5vYmplY3RTdG9y
ZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGRiMS5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkgaXMg
b2JqZWN0U3RvcmVOYW1lCitQQVNTIGRiMi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQ
QVNTIGRiMi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkgaXMgb2JqZWN0U3RvcmVOYW1lCitvYmpl
Y3RTdG9yZTEgPSBkYjEudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShv
YmplY3RTdG9yZU5hbWUpOworUEFTUyBvYmplY3RTdG9yZTEubmFtZSBpcyBvYmplY3RTdG9yZU5h
bWUKK1BBU1Mgb2JqZWN0U3RvcmUxLmtleVBhdGggaXMgb2JqZWN0U3RvcmVPcHRpb25zLmtleVBh
dGgKK29iamVjdFN0b3JlMiA9IGRiMi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitQQVNTIG9iamVjdFN0b3JlMSAhPT0gb2JqZWN0U3Rv
cmUyIGlzIHRydWUKK1BBU1Mgb2JqZWN0U3RvcmUyLm5hbWUgaXMgb2JqZWN0U3RvcmVOYW1lCitQ
QVNTIG9iamVjdFN0b3JlMi5rZXlQYXRoIGlzIG9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Z2xvYmFsLWRhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS5odG1sCShyZXZpc2lv
biAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvZ2xvYmFsLWRhdGEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfZ2xvYmFsX2Rh
dGEuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuaW5nIERCIG1vcmUg
dGhhbiBvbmNlIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8
fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAg
c2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMS5zZXRWZXJz
aW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
MSk7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAiT2JqZWN0cyI7CisgICAgb2JqZWN0U3RvcmVP
cHRpb25zID0geyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH07CisgICAgZXZh
bEFuZExvZygiZGIxLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgb2JqZWN0U3Rv
cmVPcHRpb25zKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuMlN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW4yU3VjY2VzcygpCit7CisgICAgZGIyID0gZXZhbEFuZExv
ZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxkQmVUcnVlKCJkYjEg
IT09IGRiMiIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAi
MSIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVj
dFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJkYjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgi
LCAiMSIpOworICAgIHNob3VsZEJlKCJkYjIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9i
amVjdFN0b3JlTmFtZSIpOworCisgICAgb2JqZWN0U3RvcmUxID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUxID0gZGIxLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUxLm5hbWUiLCAib2Jq
ZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMS5rZXlQYXRoIiwgIm9i
amVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisKKyAgICBvYmplY3RTdG9yZTIgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZTIgPSBkYjIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAgIHNob3VsZEJlVHJ1ZSgib2JqZWN0U3Rv
cmUxICE9PSBvYmplY3RTdG9yZTIiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUyLm5hbWUi
LCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMi5rZXlQYXRo
IiwgIm9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisKKyAgICBkb25lKCk7Cit9CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWFkZC1uby1rZXkuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWFkZC1uby1rZXkuaHRtbAkocmV2aXNpb24g
MCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2tleS1yZXF1aXJlbWVudHMtYWRkLW5vLWtleS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogor
ICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
Ky0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgYmVoYXZpb3IgYWRkaW5nIHdpdGhvdXQga2V5Iik7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERC
ID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5t
b3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsK
KworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24g
PSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3Bl
blN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJl
cXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRl
QWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2JhcicpOyIpOworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmFkZCh7fSk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhj
ZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZG9uZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEva2V5LXJlcXVpcmVtZW50cy1hZGQtbnVsbC1rZXkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9r
ZXktcmVxdWlyZW1lbnRzLWFkZC1udWxsLWtleS5odG1sCShyZXZpc2lvbiAwKQorKysgdGhpcmRf
cGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJl
cXVpcmVtZW50cy1hZGQtbnVsbC1rZXkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96
aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfa2V5X3Jl
cXVpcmVtZW50cy5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBj
b3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAgaHR0cDov
L2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9y
IGFkZCgpaW5nIHdpdGggbnVsbCBrZXkiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5k
b3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4
ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAg
bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
bGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFyJyk7Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2Vw
dGlvbigib2JqZWN0U3RvcmUuYWRkKHt9LCBudWxsKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9rZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
a2V5LXJlcXVpcmVtZW50cy1kZWxldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgdGhp
cmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5
LXJlcXVpcmVtZW50cy1kZWxldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE5IEBACitUZXN0IEluZGV4ZWREQidzIGJlaGF2aW9yIGRlbGV0aW5nIGtleXMKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRl
eGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKK0V4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBvYmplY3RTdG9yZS5kZWxldGUoKTsKK1BBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIGNvZGUgaXMgMTcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS1udWxs
LWtleS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5
Lmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS1udWxsLWtleS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0K
KyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJj
ZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKKyAgbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgZGVsZXRpbmcgd2l0aCBubyBrZXkiKTsK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJr
aXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRo
bmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQorewor
ICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScp
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRh
dGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0
b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFy
Jyk7Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuZGVsZXRlKG51
bGwpOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGRvbmUo
KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUuaHRtbAkocmV2aXNp
b24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Cisg
ICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgor
LS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBiZWhhdmlvciBkZWxldGluZyBrZXlzIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2lu
ZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRl
eGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAg
IG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsi
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGUoKTsiLCAi
MTciKTsgLy8gVFlQRV9NSVNNQVRDSF9FUlIKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9rZXktcmVxdWlyZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3Bh
cnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1
aXJlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACitUZXN0
IEluZGV4ZWREQidzIGJlaGF2aW9yIGFkZGluZyBhbmQgcmV0cmlldmluZyBrZXlzCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8
IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsKK1BBU1MgaW5k
ZXhlZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVy
c2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CityZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsKK2tleTEgPSBldmVudC50YXJnZXQucmVzdWx0OworcmVx
dWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5MSk7CitQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQgaXMga2V5MQora2V5MiA9IDEwOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5
Mik7CitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMga2V5Mgora2V5MiA9IDEwMDsKK3JlcXVl
c3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTIpOworUEFTUyBldmVudC50YXJnZXQucmVzdWx0
IGlzIGtleTIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLWtleS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQta2V5Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWlubGluZS1hbmQtcGFzc2VkLWtleS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0K
KyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJj
ZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVxdWlyZW1lbnRzLmh0bWwKKyAgbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgYWRkaW5nIGlubGluZSBhbmQgcGFzc2Vk
IGtleSBzaW11bHRhbmVvdXNseSIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5p
bmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERC
OyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1l
ID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3Qg
RGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIu
c2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFu
RGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0
b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdiYXonLCB7IGtleVBhdGg6ICdpZCcgfSk7Iik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHtpZDogNX0sIDUpOyIsICJ3ZWJr
aXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworICAgIGRvbmUoKTsKK30KKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW5vLWtleS5odG1sCShyZXZpc2lvbiAw
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Cisg
ICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgor
LS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBiZWhhdmlvciBwdXRpbmcgd2l0aG91dCBrZXkiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwor
CisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFyJyk7Iik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigib2JqZWN0U3RvcmUucHV0KHt9KTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1udWxsLWtleS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tl
eS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5Lmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVx
dWlyZW1lbnRzLXB1dC1udWxsLWtleS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVx
dWlyZW1lbnRzLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3Ig
cHV0KClpbmcgd2l0aCBudWxsIGtleSIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRv
dy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhl
ZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBu
YW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNs
ZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJvYmplY3RTdG9yZS5wdXQoe30sIG51bGwpOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2tleS1yZXF1aXJlbWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJL
aXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0
OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIv
dGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRl
c3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFp
bi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEu
MC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5j
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIncyBiZWhhdmlvciBhZGRpbmcgYW5kIHJldHJpZXZpbmcga2V5cyIpOworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRM
b2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWRE
QiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWRE
QiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAg
IGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQor
eworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFk
ZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAga2V5MSA9IGV2YWxBbmRMb2coImtleTEgPSBldmVu
dC50YXJnZXQucmVzdWx0OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUucHV0KHt9LCBrZXkxKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBv
c3RQdXQxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBwb3N0UHV0MSgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQiLCAia2V5MSIpOworICAgIGtleTIgPSBldmFsQW5kTG9nKCJrZXkyID0gMTA7Iik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtl
eTIpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDI7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQy
KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkyIik7CisgICAg
a2V5MiA9IGV2YWxBbmRMb2coImtleTIgPSAxMDA7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoe30sIGtleTIpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcG9zdFB1dDM7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQzKCkKK3sKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJrZXkyIik7CisgICAgZG9uZSgpOworfQorCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMtYXV0b2luY3JlbWVudC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMtYXV0b2luY3JlbWVudC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy1hdXRvaW5jcmVtZW50LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorVGVzdCBJbmRleGVkREIncyBpbmRl
eCBjdXJzb3JzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3
aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1veklu
ZGV4ZWREQjsKK1BBU1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitv
YmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pOworb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhlc1tq
XS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleChpbmRleGVzW2pdLm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5vcHRpb25zKTsKK2RhdGEg
PSB7IG5hbWU6ICdCZW4nIH07CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGRhdGEpOworaW5k
ZXggPSBvYmplY3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5hbWUpOworcmVxdWVzdCA9IGluZGV4
Lm9wZW5DdXJzb3IoKTsKK2luZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoaW5kZXhlc1tqXS5uYW1l
KTsKK3JlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7CitQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQudmFsdWUubmFtZSBpcyAnQmVuJworUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5h
bWUgaXMgJ0JlbicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy1hdXRvaW5jcmVtZW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvb2JqZWN0LWN1cnNvcnMtYXV0b2luY3JlbWVudC5odG1sCShyZXZpc2lvbiAwKQorKysg
dGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2JqZWN0LWN1cnNvcnMtYXV0b2luY3JlbWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDg3IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214
ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9v
YmplY3RDdXJzb3JzLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgaW5kZXgg
Y3Vyc29ycyIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNo
b3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93Lmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
dmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Cisg
ICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOwor
ICAgIGluZGV4ZXMgPSBbCisgICAgICAgIHsgbmFtZTogImEiLCBvcHRpb25zOiB7IH0gfSwKKyAg
ICAgICAgeyBuYW1lOiAiYiIsIG9wdGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfQorICAgIF07Cisg
ICAgZm9yIChqIGluIGluZGV4ZXMpIHsKKyAgICAgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoaW5kZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0aW9ucyk7
Iik7CisgICAgfQorICAgIGRhdGEgPSBldmFsQW5kTG9nKCJkYXRhID0geyBuYW1lOiAnQmVuJyB9
OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KGRhdGEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFk
ZCgpCit7CisgICAgbnVtSW5kZXhlcyA9IGluZGV4ZXMubGVuZ3RoOworICAgIGluZGV4ZXNGaW5p
c2hlZCA9IDA7CisgICAgZm9yIChqIGluIGluZGV4ZXMpIHsKKyAgICAgICAgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4ZXNbal0ubmFtZSk7Iik7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigp
OyIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubmFtZSIsICInQmVuJyIpOwor
ICAgICAgICAgICAgaWYgKCsraW5kZXhlc0ZpbmlzaGVkID09IG51bUluZGV4ZXMpIHsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCit9
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1cnNvcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvb2JqZWN0LWN1cnNvcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2
IEBACitUZXN0IEluZGV4ZWREQidzIGluZGV4IGN1cnNvcnMKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtp
dEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVs
bCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorRGVs
ZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IGZhbHNlIH0pOworb2JqZWN0
U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhlc1tqXS5uYW1lLCAnbmFtZScsIGluZGV4ZXNbal0ub3B0
aW9ucyk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleGVzW2pdLm5hbWUsICduYW1lJywg
aW5kZXhlc1tqXS5vcHRpb25zKTsKK2RhdGEgPSB7IG5hbWU6ICdCZW4nLCBpZDogMSB9OworcmVx
dWVzdCA9IG9iamVjdFN0b3JlLmFkZChkYXRhKTsKK2luZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgo
aW5kZXhlc1tqXS5uYW1lKTsKK3JlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7CitpbmRleCA9
IG9iamVjdFN0b3JlLmluZGV4KGluZGV4ZXNbal0ubmFtZSk7CityZXF1ZXN0ID0gaW5kZXgub3Bl
bkN1cnNvcigpOworUEFTUyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUgaXMgJ0JlbicK
K1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5uYW1lIGlzICdCZW4nCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogdGhpcmRfcGFy
dHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0LWN1
cnNvcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy5odG1sCShyZXZpc2lvbiAw
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvb2JqZWN0LWN1cnNvcnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rfb2JqZWN0Q3Vy
c29ycy5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmln
aHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0
aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGluZGV4IGN1cnNvcnMi
KTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVk
REIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53
ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5w
YXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1
ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQor
eworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24g
MScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVh
bkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVj
dFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
YScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogZmFsc2UgfSk7Iik7CisgICAgaW5k
ZXhlcyA9IFsKKyAgICAgICAgeyBuYW1lOiAiYSIsIG9wdGlvbnM6IHsgfSB9LAorICAgICAgICB7
IG5hbWU6ICJiIiwgb3B0aW9uczogeyB1bmlxdWU6IHRydWUgfSB9CisgICAgXTsKKyAgICBmb3Ig
KGogaW4gaW5kZXhlcykgeworICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleChpbmRleGVzW2pdLm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5vcHRpb25zKTsiKTsKKyAg
ICB9CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IG5hbWU6ICdCZW4nLCBpZDogMSB9
OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRk
KGRhdGEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFk
ZCgpCit7CisgICAgbnVtSW5kZXhlcyA9IGluZGV4ZXMubGVuZ3RoOworICAgIGluZGV4ZXNGaW5p
c2hlZCA9IDA7CisgICAgZm9yIChqIGluIGluZGV4ZXMpIHsKKyAgICAgICAgaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4ZXNbal0ubmFtZSk7Iik7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigp
OyIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubmFtZSIsICInQmVuJyIpOwor
ICAgICAgICAgICAgaWYgKCsraW5kZXhlc0ZpbmlzaGVkID09IG51bUluZGV4ZXMpIHsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCit9
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL29iamVjdHN0b3JlbmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE5IEBACitUZXN0IEluZGV4ZWREQidzIG9iamVjdFN0b3JlTmFtZXMgYXJyYXkKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIg
fHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBp
bmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRp
b24pCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2
ZXJzaW9uIDEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9J
bmNyZW1lbnQ6IHRydWUgfSk7CitQQVNTICdvYmplY3RTdG9yZU5hbWVzJyBpbiBkYiBpcyB0cnVl
CitQQVNTIGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgZGIub2JqZWN0U3Rv
cmVOYW1lcy5pdGVtKDApIGlzIG9iamVjdFN0b3JlTmFtZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9vYmplY3RzdG9yZW5hbWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3RzdG9yZW5hbWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9D
VFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3Jn
L21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5o
dG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMg
ZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIG9iamVjdFN0b3JlTmFtZXMgYXJy
YXkiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRl
eGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRv
dy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRC
ZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlv
bi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3Mo
KQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBj
bGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAg
b2JqZWN0U3RvcmVOYW1lID0gImEiOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0
aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIHNob3VsZEJlVHJ1ZSgi
J29iamVjdFN0b3JlTmFtZXMnIGluIGRiIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5p
dGVtKDApIiwgIm9iamVjdFN0b3JlTmFtZSIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89809</attachid>
            <date>2011-04-15 10:45:40 -0700</date>
            <delta_ts>2011-04-15 10:45:40 -0700</delta_ts>
            <desc>third draft of tests (incomplete)</desc>
            <filename>bug-58560c.patch</filename>
            <type>text/plain</type>
            <size>119463</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGly
ZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQt
dHdpY2UtZmFpbHVyZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFp
bHVyZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3QgSW5k
ZXhlZERCIGJlaGF2aW9yIGFkZGluZyB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3
aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4
ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikK
K2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJyk7CitrZXkgPSAxMAorcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZCh7fSwga2V5KTsKK1BBU1MgcmVxdWVzdC5yZXN1bHQgaXMga2V5CityZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuYWRkKHt9LCBrZXkpOworUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIHdlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYWRkLXR3aWNlLWZhaWx1cmUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sCShyZXZpc2lvbiAwKQor
KysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvYWRkLXR3aWNlLWZhaWx1cmUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfYWRkX3R3aWNl
X2ZhaWx1cmUuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIgYmVoYXZpb3IgYWRk
aW5nIHRoZSBzYW1lIHByb3BlcnR5IHR3aWNlIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0g
d2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJ
bmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKwor
ICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJyk7Iik7CisgICAga2V5ID0gZXZhbEFu
ZExvZygia2V5ID0gMTAiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9i
amVjdFN0b3JlLmFkZCh7fSwga2V5KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZEZp
cnN0U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gYWRkRmlyc3RTdWNjZXNzKCkKK3sKKyAgICBzaG91bGRCZSgicmVx
dWVzdC5yZXN1bHQiLCAia2V5Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoe30sIGtleSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1
bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOworICAgIHJlcXVlc3Qub25lcnJvciA9IGFkZFNlY29u
ZEV4cGVjdGVkRXJyb3I7Cit9CisKK2Z1bmN0aW9uIGFkZFNlY29uZEV4cGVjdGVkRXJyb3IoKQor
eworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2RlIiwgIndlYmtpdElEQkRhdGFi
YXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisgICAgZG9uZSgpOworfQorCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2JhZC1rZXlwYXRoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dl
YktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRoLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorVGVzdCBJbmRleGVkREIg
YWRkaW5nIHByb3BlcnR5IHdpdGggaW52YWxpZCBrZXlwYXRoCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTICd3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyBpcyB0cnVlCitQ
QVNTIHdlYmtpdEluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCit3ZWJraXRJbmRleGVkREIub3Bl
bihuYW1lLCBkZXNjcmlwdGlvbikKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgor
b2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBrZXlQYXRoOiAna2V5
UGF0aCcgfSk7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0aDogJ2ZvbycgfSk7
CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsKK1BBU1MgZXZlbnQudGFyZ2V0LmVycm9y
Q29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2JhZC1rZXlwYXRo
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvYmFkLWtleXBhdGguaHRtbAkocmV2aXNpb24gMCkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Jh
ZC1rZXlwYXRoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemls
bGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2JhZF9rZXlwYXRoLmh0bWwKKyAg
bGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0
ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9y
Zy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKwor
ZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGFkZGluZyBwcm9wZXJ0eSB3aXRoIGludmFsaWQg
a2V5cGF0aCIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNo
b3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93Lmxv
Y2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQi
KTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
dmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisK
KyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ2ZvbycsIHsga2V5UGF0aDogJ2tleVBhdGgnIH0pOyIpOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHsga2V5UGF0aDogJ2Zvbycg
fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRGaXJzdFN1Y2Nlc3M7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFk
ZEZpcnN0U3VjY2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBhZGRTZWNvbmRFeHBlY3Rl
ZEVycm9yOworfQorCitmdW5jdGlvbiBhZGRTZWNvbmRFeHBlY3RlZEVycm9yKCkKK3sKKyAgICBz
aG91bGRCZSgiZXZlbnQudGFyZ2V0LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2NsZWFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9jbGVhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjQgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgY2xlYXJpbmcgYW4gb2JqZWN0IHN0b3JlCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERC
IHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsKK1BBU1Mg
aW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbign
dmVyc2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdmb28nLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CityZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHt9KTsKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50
cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLmNsZWFyKCk7CitQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LlJFQURfT05MWV9FUlIKK2RiLnRyYW5zYWN0aW9uKCdmb28nLCB3ZWJraXRJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZSgnZm9vJykuY2xlYXIoKTsKK3JlcXVlc3QgPSBkYi50
cmFuc2FjdGlvbignZm9vJykub2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsKK2N1cnNv
ciA9IHJlcXVlc3QucmVzdWx0OworUEFTUyBjdXJzb3IgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5L1dl
YktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY2xlYXIuaHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5h
bCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRl
eGVkREIvdGVzdC90ZXN0X2NsZWFyLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0Ogor
ICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisg
ICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIK
Ky0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERC
J3MgY2xlYXJpbmcgYW4gb2JqZWN0IHN0b3JlIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0g
d2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJ
bmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKwor
ICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5v
cGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1
Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVl
c3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVl
IH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
YWRkKHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFyOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhcigp
Cit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24oJ2ZvbycpLm9i
amVjdFN0b3JlKCdmb28nKS5jbGVhcigpOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5S
RUFEX09OTFlfRVJSIik7CisgICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oJ2ZvbycsIHdl
YmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKCdmb28nKS5jbGVhcigp
OyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24o
J2ZvbycpLm9iamVjdFN0b3JlKCdmb28nKS5vcGVuQ3Vyc29yKCk7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBhcmVXZUNsZWFyWWV0OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhcmVXZUNsZWFyWWV0KCkKK3sKKyAgICBj
dXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICBzaG91
bGRCZSgiY3Vyc29yIiwgIm51bGwiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtYmFkLW9wdGlvbnMtMi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9ucy0yLmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
aW5kZXgtYmFkLW9wdGlvbnMtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfaW5k
ZXguaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBpbmRleCB3
aXRoIGJhZCBvcHRpb25zIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4
ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7
CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3
aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRh
YmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRl
c2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRh
YmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30K
KworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVz
KGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1
ZSB9KTsiKTsKKworICAgIGluZGV4ID0gZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXggPSBv
YmplY3RTdG9yZS5jcmVhdGVJbmRleCgnZm9vJywgJ2JhcicsIHsgZm9vOiAnJyB9KTsiLCAid2Vi
a2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsK
K30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9ucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1iYWQtb3B0aW9ucy5odG1sCShyZXZpc2lv
biAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLWluZGV4LWJhZC1vcHRpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2NyZWF0ZV9pbmRleC5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAgICAi
IEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAgICAg
aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCistLT4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidzIGNy
ZWF0aW5nIGluZGV4IHdpdGggYmFkIG9wdGlvbnMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwor
CisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRv
SW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisgICAgaW5kZXggPSBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdmb28nLCAnYmFyJywgMTApOyIs
ICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZG9u
ZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LWVtcHR5LW5h
bWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtZW1wdHktbmFtZS5odG1sCShyZXZp
c2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LWVtcHR5LW5hbWUuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3RfY3JlYXRlX2luZGV4Lmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAg
ICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAg
ICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0t
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mg
Y3JlYXRpbmcgaW5kZXggd2l0aCBlbXB0eSAoYmxhbmsgc3RyaW5nKSBuYW1lIik7CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhl
ZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhl
ZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7Cisg
ICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9
IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgp
Cit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0g
ZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHsga2V5
UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCcnLCAnJyk7IiwgIndlYmtpdElE
QkRhdGFiYXNlRXhjZXB0aW9uLkNPTlNUUkFJTlRfRVJSIik7CisKKyAgICBkb25lKCk7Cit9CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtbm8ta2V5cGF0aC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC1uby1rZXlwYXRoLmh0bWwJKHJldmlzaW9uIDApCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9jcmVhdGUtaW5kZXgtbm8ta2V5cGF0aC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5t
b3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVh
dGVfaW5kZXguaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBp
bmRleCB3aXRoIG5vIGtleXBhdGgiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cu
aW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWRE
QjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFt
ZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0
IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFt
ZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsK
KyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRi
LnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVh
bkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RT
dG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50
OiB0cnVlIH0pOyIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0U3RvcmUu
Y3JlYXRlSW5kZXgoJ0hvbGEnKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RS
QUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1pbmRleC1udWxsLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgt
bnVsbC1uYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtbnVsbC1uYW1lLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQor
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2NyZWF0ZV9pbmRleC5odG1sCisgIGxpY2Vuc2Ugb2Yg
b3JpZ2luYWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQ
dWJsaWMgRG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IEluZGV4ZWREQidzIGNyZWF0aW5nIGluZGV4IHdpdGggbnVsbCBuYW1lIik7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZh
bEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5k
ZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5k
ZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFz
ZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3Jl
ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHsg
a2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIGluZGV4ID0g
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChu
dWxsLCBudWxsKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIi
KTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
K3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3Bh
cnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1p
bmRleC11bmlxdWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlx
dWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVuaXF1ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mg
Y3JlYXRpbmcgdW5pcXVlIGluZGV4IGFuZCB1cGRhdGluZyBpbmRleE5hbWVzCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdp
bmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsKK1BBU1MgaW5kZXhl
ZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQor
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lv
biAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdhJywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0p
OworaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleE5hbWUsIGluZGV4S2V5UGF0
aCwgeyB1bmlxdWU6IHRydWUgfSk7CitQQVNTIGluZGV4Lm5hbWUgaXMgaW5kZXhOYW1lCitQQVNT
IGluZGV4LmtleVBhdGggaXMgaW5kZXhLZXlQYXRoCitQQVNTIGluZGV4LnVuaXF1ZSBpcyB0cnVl
CitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgZm91bmROZXds
eUNyZWF0ZWRJbmRleCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiBp
cyBkYgorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSBpcyB3ZWJraXRJ
REJUcmFuc2FjdGlvbi5MT0FESU5HCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2Rl
IGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogdGhpcmRfcGFydHkvV2Vi
S2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXVu
aXF1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlxdWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2NyZWF0ZS1pbmRleC11bmlxdWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9t
eHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3Rf
Y3JlYXRlX2luZGV4Lmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55
IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRw
Oi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgY3JlYXRp
bmcgdW5pcXVlIGluZGV4IGFuZCB1cGRhdGluZyBpbmRleE5hbWVzIik7CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygi
aW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8
IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09
IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVz
Y3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxB
bmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7Cisg
ICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYScsIHsga2V5UGF0aDog
J2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKworICAgIGluZGV4TmFtZSA9ICIxIjsK
KyAgICBpbmRleEtleVBhdGggPSAidW5pcXVlX3ZhbHVlIjsKKyAgICBpbmRleCA9IGV2YWxBbmRM
b2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhOYW1lLCBpbmRleEtleVBh
dGgsIHsgdW5pcXVlOiB0cnVlIH0pOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5DT05T
VFJBSU5UX0VSUiIpOworICAgIHNob3VsZEJlKCJpbmRleC5uYW1lIiwgImluZGV4TmFtZSIpOwor
ICAgIHNob3VsZEJlKCJpbmRleC5rZXlQYXRoIiwgImluZGV4S2V5UGF0aCIpOworICAgIHNob3Vs
ZEJlKCJpbmRleC51bmlxdWUiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJvYmplY3RTdG9yZS5p
bmRleE5hbWVzLmxlbmd0aCIsICIxIik7CisKKyAgICBmb3VuZE5ld2x5Q3JlYXRlZEluZGV4ID0g
ZmFsc2U7CisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxl
bmd0aDsgaysrKSB7CisgICAgICAgIGlmIChvYmplY3RTdG9yZS5pbmRleE5hbWVzLml0ZW0oaykg
PT0gaW5kZXhOYW1lKSB7CisgICAgICAgICAgICBmb3VuZE5ld2x5Q3JlYXRlZEluZGV4ID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaG91bGRCZVRydWUoImZvdW5kTmV3bHlDcmVhdGVk
SW5kZXgiKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIiwgImRi
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRlIiwg
IndlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkciKTsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAid2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFO
R0UiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
Cit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9w
YXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUt
b2JqZWN0c3RvcmUtYmFkLW9wdGlvbnMtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5
L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmpl
Y3RzdG9yZS1iYWQtb3B0aW9ucy0yLmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0
c3RvcmUtYmFkLW9wdGlvbnMtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2Jq
ZWN0U3RvcmUuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBv
YmplY3Qgc3RvcmUgd2l0aCBiYWQgb3B0aW9ucyIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9
IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96
SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisK
KyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJywgeyBmb286ICcnIH0pOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4
Y2VwdGlvbi5DT05TVFJBSU5UX0VSUiIpOworCisgICAgZG9uZSgpOworfQorCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhZC1vcHRpb25zLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhZC1vcHRpb25zLmh0bWwJKHJldmlzaW9uIDAp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtYmFkLW9wdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0
dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0
L3Rlc3RfY3JlYXRlX29iamVjdFN0b3JlLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0
OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4u
CisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAv
ICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rp
b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhl
ZERCJ3MgY3JlYXRpbmcgb2JqZWN0IHN0b3JlIHdpdGggYmFkIG9wdGlvbnMiKTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5k
TG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVk
REIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVk
REIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAg
ICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0g
ZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkK
K3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsICdiYXInKTsiLCAid2Via2l0SURC
RGF0YWJhc2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsKK30KKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgY3JlYXRp
bmcgb2JqZWN0IHN0b3JlIGFuZCB1cGRhdGluZyBwcm9wZXJ0aWVzCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53
ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsKK1BBU1MgaW5kZXhlZERCID09
IG51bGwgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQorZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykK
K0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsKK1BBU1Mgb2JqZWN0U3RvcmUubmFtZSBp
cyBpbmZvLm5hbWUKK1BBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMAorUEFT
UyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKK1BBU1MgZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uTE9BRElORworUEFT
UyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5W
RVJTSU9OX0NIQU5HRQorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShpbmZvLm5h
bWUsIGluZm8ub3B0aW9ucyk7CitQQVNTIG9iamVjdFN0b3JlLm5hbWUgaXMgaW5mby5uYW1lCitQ
QVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BBU1MgZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFk
eVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkcKK1BBU1MgZXZlbnQudGFyZ2V0
LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UK
K29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlv
bnMpOworUEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGluZm8ubmFtZQorUEFTUyBvYmplY3RTdG9y
ZS5pbmRleE5hbWVzLmxlbmd0aCBpcyAwCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5k
YiBpcyBkYgorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ucmVhZHlTdGF0ZSBpcyB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5MT0FESU5HCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5t
b2RlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLlZFUlNJT05fQ0hBTkdFCitvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsKK1BBU1Mgb2Jq
ZWN0U3RvcmUubmFtZSBpcyBpbmZvLm5hbWUKK1BBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5s
ZW5ndGggaXMgMAorUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uZGIgaXMgZGIKK1BBU1Mg
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUgaXMgd2Via2l0SURCVHJhbnNhY3Rp
b24uTE9BRElORworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJraXRJ
REJUcmFuc2FjdGlvbi5WRVJTSU9OX0NIQU5HRQorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZShpbmZvLm5hbWUsIGluZm8ub3B0aW9ucyk7CitQQVNTIG9iamVjdFN0b3JlLm5hbWUg
aXMgaW5mby5uYW1lCitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BB
U1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbi5yZWFkeVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkcKK1BB
U1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24u
VkVSU0lPTl9DSEFOR0UKK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5u
YW1lLCBpbmZvLm9wdGlvbnMpOworUEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGluZm8ubmFtZQor
UEFTUyBvYmplY3RTdG9yZS5rZXlQYXRoIGlzIGluZm8ub3B0aW9ucy5rZXlQYXRoCitQQVNTIG9i
amVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRl
IGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkcKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UKK29iamVj
dFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOwor
UEFTUyBvYmplY3RTdG9yZS5uYW1lIGlzIGluZm8ubmFtZQorUEFTUyBvYmplY3RTdG9yZS5rZXlQ
YXRoIGlzIGluZm8ub3B0aW9ucy5rZXlQYXRoCitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMu
bGVuZ3RoIGlzIDAKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNT
IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5yZWFkeVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0
aW9uLkxPQURJTkcKK1BBU1MgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0
SURCVHJhbnNhY3Rpb24uVkVSU0lPTl9DSEFOR0UKK29iamVjdFN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoaW5mby5uYW1lLCBpbmZvLm9wdGlvbnMpOworUEFTUyBvYmplY3RTdG9yZS5uYW1l
IGlzIGluZm8ubmFtZQorUEFTUyBvYmplY3RTdG9yZS5rZXlQYXRoIGlzIGluZm8ub3B0aW9ucy5r
ZXlQYXRoCitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BBU1MgZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLmRiIGlzIGRiCitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2Fj
dGlvbi5yZWFkeVN0YXRlIGlzIHdlYmtpdElEQlRyYW5zYWN0aW9uLkxPQURJTkcKK1BBU1MgZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUgaXMgd2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lP
Tl9DSEFOR0UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Y3JlYXRlLW9iamVjdHN0b3JlLWJhc2ljcy5odG1sCShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLW9i
amVjdHN0b3JlLWJhc2ljcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9y
Zy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVhdGVfb2JqZWN0
U3RvcmUuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJp
Z2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVh
dGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBvYmpl
Y3Qgc3RvcmUgYW5kIHVwZGF0aW5nIHByb3BlcnRpZXMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93
Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIp
OworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxl
dGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3RvcmVJbmZvID0gWworICAgICAg
ICB7IG5hbWU6ICIxIiwgb3B0aW9uczogeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0gfSwKKyAgICAg
ICAgeyBuYW1lOiAiMiIsIG9wdGlvbnM6IHsgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAorICAg
ICAgICB7IG5hbWU6ICIzIiwgb3B0aW9uczogeyBrZXlQYXRoOiAiIiB9IH0sCisgICAgICAgIHsg
bmFtZTogIjQiLCBvcHRpb25zOiB7IGtleVBhdGg6ICIiLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0g
fSwKKyAgICAgICAgeyBuYW1lOiAiNSIsIG9wdGlvbnM6IHsga2V5UGF0aDogIiIsIGF1dG9JbmNy
ZW1lbnQ6IGZhbHNlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiNiIsIG9wdGlvbnM6IHsga2V5UGF0
aDogImZvbyIgfSB9LAorICAgICAgICB7IG5hbWU6ICI3Iiwgb3B0aW9uczogeyBrZXlQYXRoOiAi
Zm9vIiwgYXV0b0luY3JlbWVudDogZmFsc2UgfSB9LAorICAgICAgICB7IG5hbWU6ICI4Iiwgb3B0
aW9uczogeyBrZXlQYXRoOiAiZm9vIiwgYXV0b0luY3JlbWVudDogdHJ1ZSB9IH0KKyAgICBdOwor
CisgICAgZm9yICh2YXIgaW5kZXggaW4gb2JqZWN0U3RvcmVJbmZvKSB7CisgICAgICAgIGluZGV4
ID0gcGFyc2VJbnQoaW5kZXgpOworICAgICAgICBpbmZvID0gb2JqZWN0U3RvcmVJbmZvW2luZGV4
XTsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKGluZm8ubmFtZSwgaW5mby5vcHRpb25zKTsiKTsKKyAgICAgICAgc2hv
dWxkQmUoIm9iamVjdFN0b3JlLm5hbWUiLCAiaW5mby5uYW1lIik7CisgICAgICAgIGlmIChpbmZv
Lm9wdGlvbnMgJiYgaW5mby5vcHRpb25zLmtleVBhdGgpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJvYmplY3RTdG9yZS5rZXlQYXRoIiwgImluZm8ub3B0aW9ucy5rZXlQYXRoIik7CisgICAgICAg
IH0KKyAgICAgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIiwgIjAi
KTsKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5kYiIsICJkYiIp
OworICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLnJlYWR5U3RhdGUi
LCAid2Via2l0SURCVHJhbnNhY3Rpb24uTE9BRElORyIpOworICAgICAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAid2Via2l0SURCVHJhbnNhY3Rpb24uVkVSU0lP
Tl9DSEFOR0UiKTsKKyAgICB9CisKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgor
CkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtZW1wdHktbmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2NyZWF0ZS1vYmplY3RzdG9yZS1lbXB0eS1uYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVh
dGUtb2JqZWN0c3RvcmUtZW1wdHktbmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5t
b3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9jcmVh
dGVfb2JqZWN0U3RvcmUuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBB
bnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0
dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVh
dGluZyBvYmplY3Qgc3RvcmUgd2l0aCBlbXB0eSAoYmxhbmsgc3RyaW5nKSBuYW1lIik7CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZh
bEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5k
ZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5k
ZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7
CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBk
YiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFz
ZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oImRiLmNyZWF0ZU9iamVjdFN0b3JlKCcnKTsiLCAid2Via2l0SURCRGF0YWJh
c2VFeGNlcHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NyZWF0ZS1vYmplY3RzdG9yZS1udWxsLW5hbWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwJKHJldmlzaW9uIDAp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jcmVhdGUtb2JqZWN0c3RvcmUtbnVsbC1uYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2NyZWF0ZV9vYmplY3RTdG9yZS5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoK
KyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgor
ICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAi
CistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9u
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWRE
QidzIGNyZWF0aW5nIG9iamVjdCBzdG9yZSB3aXRoIG51bGwgbmFtZSIpOworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2co
ImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8
fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9
PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRl
c2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFs
QW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQorewor
ICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkYi5jcmVhdGVPYmplY3RTdG9yZShudWxsKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uQ09OU1RSQUlOVF9FUlIiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvZXZl
bnQtc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mg
b2JqZWN0U3RvcmVOYW1lcyBhcnJheQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
aW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8
IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKK3NvdXJjZSA9IGV2ZW50LnRhcmdldC5z
b3VyY2U7CitQQVNTIHNvdXJjZSBpcyB3ZWJraXRJbmRleGVkREIKK2RiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitzb3VyY2UgPSBl
dmVudC50YXJnZXQuc291cmNlOworUEFTUyBzb3VyY2UgaXMgZGIKK0RlbGV0ZWQgYWxsIG9iamVj
dCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFk
ZCh7fSk7Citzb3VyY2UgPSBldmVudC50YXJnZXQuc291cmNlOworUEFTUyBzb3VyY2UgaXMgb2Jq
ZWN0U3RvcmUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9ldmVudC1zb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9ldmVudC1zb3VyY2Uu
aHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2V2ZW50LXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0
cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3Qv
dGVzdF9jcmVhdGVfaW5kZXguaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAg
IiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAg
IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBv
YmplY3RTdG9yZU5hbWVzIGFycmF5Iik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5h
bWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBzb3VyY2UgPSBldmFsQW5kTG9nKCJzb3VyY2Ug
PSBldmVudC50YXJnZXQuc291cmNlOyIpOworICAgIHNob3VsZEJlKCJzb3VyY2UiLCAid2Via2l0
SW5kZXhlZERCIik7CisKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lv
bigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJj
ZSA9IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hvdWxkQmUoInNvdXJjZSIsICJkYiIp
OworCisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIG9iamVjdFN0b3JlTmFt
ZSA9ICJPYmplY3RzIjsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6
IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQoe30pOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXJlV2VEb25lWWV0Owor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBhcmVXZURvbmVZZXQoKQoreworICAgIHNvdXJjZSA9IGV2YWxBbmRMb2coInNvdXJjZSA9
IGV2ZW50LnRhcmdldC5zb3VyY2U7Iik7CisgICAgc2hvdWxkQmUoInNvdXJjZSIsICJvYmplY3RT
dG9yZSIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2dsb2Jh
bC1kYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mgb3BlbmluZyBEQiBtb3JlIHRoYW4g
b25jZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1l
LCBkZXNjcmlwdGlvbikKK2RiMSA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYjEu
c2V0VmVyc2lvbigndmVyc2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitkYjEu
Y3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lLCBvYmplY3RTdG9yZU9wdGlvbnMpOwor
d2Via2l0SW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pOworZGIyID0gZXZlbnQudGFy
Z2V0LnJlc3VsdAorUEFTUyBkYjEgIT09IGRiMiBpcyB0cnVlCitQQVNTIGRiMS5vYmplY3RTdG9y
ZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGRiMS5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkgaXMg
b2JqZWN0U3RvcmVOYW1lCitQQVNTIGRiMi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQ
QVNTIGRiMi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCkgaXMgb2JqZWN0U3RvcmVOYW1lCitvYmpl
Y3RTdG9yZTEgPSBkYjEudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmplY3RTdG9yZShv
YmplY3RTdG9yZU5hbWUpOworUEFTUyBvYmplY3RTdG9yZTEubmFtZSBpcyBvYmplY3RTdG9yZU5h
bWUKK1BBU1Mgb2JqZWN0U3RvcmUxLmtleVBhdGggaXMgb2JqZWN0U3RvcmVPcHRpb25zLmtleVBh
dGgKK29iamVjdFN0b3JlMiA9IGRiMi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVj
dFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CitQQVNTIG9iamVjdFN0b3JlMSAhPT0gb2JqZWN0U3Rv
cmUyIGlzIHRydWUKK1BBU1Mgb2JqZWN0U3RvcmUyLm5hbWUgaXMgb2JqZWN0U3RvcmVOYW1lCitQ
QVNTIG9iamVjdFN0b3JlMi5rZXlQYXRoIGlzIG9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
dGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
Z2xvYmFsLWRhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9nbG9iYWwtZGF0YS5odG1sCShyZXZpc2lv
biAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEvZ2xvYmFsLWRhdGEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfZ2xvYmFsX2Rh
dGEuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0
IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2
ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBvcGVuaW5nIERCIG1vcmUg
dGhhbiBvbmNlIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8
fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAg
c2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cu
bG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0
aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBkYjEgPSBldmFsQW5kTG9nKCJkYjEgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiMS5zZXRWZXJz
aW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFz
ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRi
MSk7CisKKyAgICBvYmplY3RTdG9yZU5hbWUgPSAiT2JqZWN0cyI7CisgICAgb2JqZWN0U3RvcmVP
cHRpb25zID0geyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH07CisgICAgZXZh
bEFuZExvZygiZGIxLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgb2JqZWN0U3Rv
cmVPcHRpb25zKTsiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ3ZWJraXRJbmRleGVk
REIub3BlbihuYW1lLCBkZXNjcmlwdGlvbik7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuMlN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIG9wZW4yU3VjY2VzcygpCit7CisgICAgZGIyID0gZXZhbEFuZExv
ZygiZGIyID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgc2hvdWxkQmVUcnVlKCJkYjEg
IT09IGRiMiIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAi
MSIpOworICAgIHNob3VsZEJlKCJkYjEub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9iamVj
dFN0b3JlTmFtZSIpOworICAgIHNob3VsZEJlKCJkYjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgi
LCAiMSIpOworICAgIHNob3VsZEJlKCJkYjIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIiwgIm9i
amVjdFN0b3JlTmFtZSIpOworCisgICAgb2JqZWN0U3RvcmUxID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUxID0gZGIxLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmVOYW1lKTsiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUxLm5hbWUiLCAib2Jq
ZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMS5rZXlQYXRoIiwgIm9i
amVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisKKyAgICBvYmplY3RTdG9yZTIgPSBldmFsQW5k
TG9nKCJvYmplY3RTdG9yZTIgPSBkYjIudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lKS5vYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOyIpOworICAgIHNob3VsZEJlVHJ1ZSgib2JqZWN0U3Rv
cmUxICE9PSBvYmplY3RTdG9yZTIiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUyLm5hbWUi
LCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlMi5rZXlQYXRo
IiwgIm9iamVjdFN0b3JlT3B0aW9ucy5rZXlQYXRoIik7CisKKyAgICBkb25lKCk7Cit9CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2luaXRpYWwtdmVyc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9p
bml0aWFsLXZlcnNpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBA
CitUZXN0IEluZGV4ZWREQidzIGluaXRpYWwgdmVyc2lvbiBzdHJpbmcKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93
LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRleGVkREIg
PT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pCitkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQKK2luaXRpYWxWZXJzaW9uID0gZGIudmVyc2lvbjsKK1BBU1Mg
aW5pdGlhbFZlcnNpb24gaXMgJycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbml0aWFsLXZlcnNpb24uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9pbml0aWFsLXZlcnNpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luaXRpYWwtdmVyc2lvbi5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0K
KyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJj
ZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9zZXRWZXJzaW9uX2Fib3J0Lmh0bWwKKyAgbGljZW5z
ZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8g
dGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJs
aWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgaW5pdGlhbCB2ZXJzaW9uIHN0cmluZyIpOworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxB
bmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4
ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4
ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwor
ICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIg
PSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBpbml0aWFsVmVy
c2lvbiA9IGV2YWxBbmRMb2coImluaXRpYWxWZXJzaW9uID0gZGIudmVyc2lvbjsiKTsKKyAgICBz
aG91bGRCZSgiaW5pdGlhbFZlcnNpb24iLCAiJyciKTsKKworICAgIGRvbmUoKTsKK30KKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtYWRkLW5vLWtleS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtYWRkLW5vLWtleS5odG1sCShyZXZpc2lvbiAw
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEva2V5LXJlcXVpcmVtZW50cy1hZGQtbm8ta2V5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRw
Oi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90
ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6Cisg
ICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAg
ICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgor
LS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBiZWhhdmlvciBhZGRpbmcgd2l0aG91dCBrZXkiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIg
PSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1v
ekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOwor
CisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9
ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
Lm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVu
U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIg
PSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYmFyJyk7Iik7CisgICAgZXZhbEFuZEV4cGVj
dEV4Y2VwdGlvbigib2JqZWN0U3RvcmUuYWRkKHt9KTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNl
cHRpb24uREFUQV9FUlIiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCklu
ZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9rZXktcmVxdWlyZW1lbnRzLWFkZC1udWxsLWtleS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tl
eS1yZXF1aXJlbWVudHMtYWRkLW51bGwta2V5Lmh0bWwJKHJldmlzaW9uIDApCisrKyB0aGlyZF9w
YXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVx
dWlyZW1lbnRzLWFkZC1udWxsLWtleS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3pp
bGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9rZXlfcmVx
dWlyZW1lbnRzLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3Ig
YWRkKClpbmcgd2l0aCBudWxsIGtleSIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRv
dy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhl
ZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBu
YW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRl
c3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbihu
YW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNz
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNs
ZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVj
dFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJvYmplY3RTdG9yZS5hZGQoe30sIG51bGwpOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0
aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9r
ZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyB0aGly
ZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9rZXkt
cmVxdWlyZW1lbnRzLWRlbGV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTkgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgYmVoYXZpb3IgZGVsZXRpbmcga2V5cworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3
aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4
ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikK
K2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNp
b24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOworRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIG9iamVjdFN0b3JlLmRlbGV0ZSgpOworUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyAxNworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwt
a2V5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUtbnVsbC1rZXku
aHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZGVsZXRlLW51bGwta2V5Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQor
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorICBsaWNlbnNl
IG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBkZWxldGluZyB3aXRoIG5vIGtleSIpOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9
IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtp
dEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2Uo
ImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhu
YW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7Cisg
ICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJyki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0
YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3Rv
cmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXIn
KTsiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5kZWxldGUobnVs
bCk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZG9uZSgp
OworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9rZXktcmVxdWlyZW1lbnRzLWRlbGV0ZS5odG1sCShyZXZpc2lv
biAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1kZWxldGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAg
ICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCist
LT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IGJlaGF2aW9yIGRlbGV0aW5nIGtleXMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5k
b3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4
ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAg
bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBU
ZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2Vz
czsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKwor
ZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBj
bGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmpl
Y3RTdG9yZXMoZGIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZm9vJywgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIp
OworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oIm9iamVjdFN0b3JlLmRlbGV0ZSgpOyIsICIx
NyIpOyAvLyBUWVBFX01JU01BVENIX0VSUgorICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2tleS1yZXF1aXJlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFy
dHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVp
cmVtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK1Rlc3Qg
SW5kZXhlZERCJ3MgYmVoYXZpb3IgYWRkaW5nIGFuZCByZXRyaWV2aW5nIGtleXMKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRl
eGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24p
CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJz
aW9uIDEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKK3JlcXVlc3Qg
PSBvYmplY3RTdG9yZS5hZGQoe30pOwora2V5MSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CityZXF1
ZXN0ID0gb2JqZWN0U3RvcmUucHV0KHt9LCBrZXkxKTsKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3Vs
dCBpcyBrZXkxCitrZXkyID0gMTA7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KHt9LCBrZXky
KTsKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyBrZXkyCitrZXkyID0gMTAwOworcmVxdWVz
dCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5Mik7CitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQg
aXMga2V5MgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQta2V5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1pbmxpbmUtYW5kLXBhc3NlZC1rZXkuaHRtbAko
cmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMtaW5saW5lLWFuZC1wYXNzZWQta2V5Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQor
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2tleV9yZXF1aXJlbWVudHMuaHRtbAorICBsaWNlbnNl
IG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0
aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1Ymxp
Y2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBhZGRpbmcgaW5saW5lIGFuZCBwYXNzZWQg
a2V5IHNpbXVsdGFuZW91c2x5Iik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93Lmlu
ZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUg
PSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBE
YXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUs
IGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7Cisg
ICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5E
YXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
K30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3Rv
cmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ2JheicsIHsga2V5UGF0aDogJ2lkJyB9KTsiKTsKKyAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5hZGQoe2lkOiA1fSwgNSk7IiwgIndlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJSIik7CisgICAgZG9uZSgpOworfQorCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEva2V5LXJlcXVpcmVtZW50cy1wdXQtbm8ta2V5Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9rZXktcmVxdWlyZW1lbnRzLXB1dC1uby1rZXkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6
Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rl
c3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAg
ICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCist
LT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IGJlaGF2aW9yIHB1dGluZyB3aXRob3V0IGtleSIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9
IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96
SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisK
KyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0g
Ik15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIu
b3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5T
dWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9
IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFs
bE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiYXInKTsiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJvYmplY3RTdG9yZS5wdXQoe30pOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5EQVRBX0VSUiIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2tleS1yZXF1aXJlbWVudHMtcHV0LW51bGwta2V5Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhp
cmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEva2V5
LXJlcXVpcmVtZW50cy1wdXQtbnVsbC1rZXkuaHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3Bh
cnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1
aXJlbWVudHMtcHV0LW51bGwta2V5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemls
bGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X2tleV9yZXF1
aXJlbWVudHMuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29w
eXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9j
cmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBiZWhhdmlvciBw
dXQoKWluZyB3aXRoIG51bGwga2V5Iik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5h
bWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xl
YW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0
U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2JhcicpOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oIm9iamVjdFN0b3JlLnB1dCh7fSwgbnVsbCk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0
aW9uLkRBVEFfRVJSIik7CisgICAgZG9uZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEva2V5LXJlcXVpcmVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMu
aHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6
IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90
ZXN0L3Rlc3Rfa2V5X3JlcXVpcmVtZW50cy5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVz
dDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWlu
LgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4w
LyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0
aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4
ZWREQidzIGJlaGF2aW9yIGFkZGluZyBhbmQgcmV0cmlldmluZyBrZXlzIik7CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExv
ZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERC
IHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERC
ID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAg
ZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2
YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7
CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxB
bmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycsIHsgYXV0b0lu
Y3JlbWVudDogdHJ1ZSB9KTsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9
IG9iamVjdFN0b3JlLmFkZCh7fSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRk
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBwb3N0QWRkKCkKK3sKKyAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBv
YmplY3RTdG9yZS5wdXQoe30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9z
dFB1dDE7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIHBvc3RQdXQxKCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJl
c3VsdCIsICJrZXkxIik7CisgICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIgPSAxMDsiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5
Mik7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0UHV0MjsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDIo
KQoreworICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKKyAgICBr
ZXkyID0gZXZhbEFuZExvZygia2V5MiA9IDEwMDsiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7fSwga2V5Mik7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBwb3N0UHV0MzsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dDMoKQoreworICAgIHNob3VsZEJlKCJl
dmVudC50YXJnZXQucmVzdWx0IiwgImtleTIiKTsKKyAgICBkb25lKCk7Cit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy1hdXRvaW5jcmVtZW50LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy1hdXRvaW5jcmVtZW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLWF1dG9pbmNyZW1lbnQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACitUZXN0IEluZGV4ZWREQidzIGluZGV4
IGN1cnNvcnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdp
bmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5k
ZXhlZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4o
bmFtZSwgZGVzY3JpcHRpb24pCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBk
Yi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1
dG9JbmNyZW1lbnQ6IHRydWUgfSk7CitvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleGVzW2pd
Lm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5vcHRpb25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRleGVzW2pdLm9wdGlvbnMpOworZGF0YSA9
IHsgbmFtZTogJ0JlbicgfTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoZGF0YSk7CitpbmRl
eCA9IG9iamVjdFN0b3JlLmluZGV4KGluZGV4ZXNbal0ubmFtZSk7CityZXF1ZXN0ID0gaW5kZXgu
b3BlbkN1cnNvcigpOworaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleChpbmRleGVzW2pdLm5hbWUp
OworcmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKTsKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3Vs
dC52YWx1ZS5uYW1lIGlzICdCZW4nCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubmFt
ZSBpcyAnQmVuJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLWF1dG9pbmNyZW1lbnQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9vYmplY3QtY3Vyc29ycy1hdXRvaW5jcmVtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyB0
aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9v
YmplY3QtY3Vyc29ycy1hdXRvaW5jcmVtZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODcgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X29i
amVjdEN1cnNvcnMuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkg
Y29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6
Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBpbmRleCBj
dXJzb3JzIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
aW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3
aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hv
dWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9j
YXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9u
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNj
ZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIp
OworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCd2
ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY2xlYW5EYXRhYmFzZTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKyAg
ICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ2EnLCB7IGtleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7Cisg
ICAgaW5kZXhlcyA9IFsKKyAgICAgICAgeyBuYW1lOiAiYSIsIG9wdGlvbnM6IHsgfSB9LAorICAg
ICAgICB7IG5hbWU6ICJiIiwgb3B0aW9uczogeyB1bmlxdWU6IHRydWUgfSB9CisgICAgXTsKKyAg
ICBmb3IgKGogaW4gaW5kZXhlcykgeworICAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5j
cmVhdGVJbmRleChpbmRleGVzW2pdLm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5vcHRpb25zKTsi
KTsKKyAgICB9CisgICAgZGF0YSA9IGV2YWxBbmRMb2coImRhdGEgPSB7IG5hbWU6ICdCZW4nIH07
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
ZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0QWRk
KCkKK3sKKyAgICBudW1JbmRleGVzID0gaW5kZXhlcy5sZW5ndGg7CisgICAgaW5kZXhlc0Zpbmlz
aGVkID0gMDsKKyAgICBmb3IgKGogaW4gaW5kZXhlcykgeworICAgICAgICBpbmRleCA9IGV2YWxB
bmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoaW5kZXhlc1tqXS5uYW1lKTsiKTsKKyAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7
Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5uYW1lIiwgIidCZW4nIik7Cisg
ICAgICAgICAgICBpZiAoKytpbmRleGVzRmluaXNoZWQgPT0gbnVtSW5kZXhlcykgeworICAgICAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKK30K
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9vYmplY3QtY3Vyc29ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYg
QEAKK1Rlc3QgSW5kZXhlZERCJ3MgaW5kZXggY3Vyc29ycworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0
SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxs
IGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKK2RiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitEZWxl
dGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnYScsIHsga2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogZmFsc2UgfSk7CitvYmplY3RT
dG9yZS5jcmVhdGVJbmRleChpbmRleGVzW2pdLm5hbWUsICduYW1lJywgaW5kZXhlc1tqXS5vcHRp
b25zKTsKK29iamVjdFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBp
bmRleGVzW2pdLm9wdGlvbnMpOworZGF0YSA9IHsgbmFtZTogJ0JlbicsIGlkOiAxIH07CityZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKGRhdGEpOworaW5kZXggPSBvYmplY3RTdG9yZS5pbmRleChp
bmRleGVzW2pdLm5hbWUpOworcmVxdWVzdCA9IGluZGV4Lm9wZW5DdXJzb3IoKTsKK2luZGV4ID0g
b2JqZWN0U3RvcmUuaW5kZXgoaW5kZXhlc1tqXS5uYW1lKTsKK3JlcXVlc3QgPSBpbmRleC5vcGVu
Q3Vyc29yKCk7CitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQudmFsdWUubmFtZSBpcyAnQmVuJwor
UEFTUyBldmVudC50YXJnZXQucmVzdWx0LnZhbHVlLm5hbWUgaXMgJ0JlbicKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vy
c29ycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1jdXJzb3JzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9vYmplY3QtY3Vyc29ycy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxh
Lm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9vYmplY3RDdXJz
b3JzLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdo
dCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRp
dmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgaW5kZXggY3Vyc29ycyIp
OworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWRE
QiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93Lndl
YmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFs
c2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBh
dGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFu
RGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisgICAgb2JqZWN0
U3RvcmUgPSBldmFsQW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdh
JywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiBmYWxzZSB9KTsiKTsKKyAgICBpbmRl
eGVzID0gWworICAgICAgICB7IG5hbWU6ICJhIiwgb3B0aW9uczogeyB9IH0sCisgICAgICAgIHsg
bmFtZTogImIiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0KKyAgICBdOworICAgIGZvciAo
aiBpbiBpbmRleGVzKSB7CisgICAgICAgIGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmNyZWF0ZUlu
ZGV4KGluZGV4ZXNbal0ubmFtZSwgJ25hbWUnLCBpbmRleGVzW2pdLm9wdGlvbnMpOyIpOworICAg
IH0KKyAgICBkYXRhID0gZXZhbEFuZExvZygiZGF0YSA9IHsgbmFtZTogJ0JlbicsIGlkOiAxIH07
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQo
ZGF0YSk7Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0QWRkOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBwb3N0QWRk
KCkKK3sKKyAgICBudW1JbmRleGVzID0gaW5kZXhlcy5sZW5ndGg7CisgICAgaW5kZXhlc0Zpbmlz
aGVkID0gMDsKKyAgICBmb3IgKGogaW4gaW5kZXhlcykgeworICAgICAgICBpbmRleCA9IGV2YWxB
bmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuaW5kZXgoaW5kZXhlc1tqXS5uYW1lKTsiKTsKKyAg
ICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleC5vcGVuQ3Vyc29yKCk7
Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC52YWx1ZS5uYW1lIiwgIidCZW4nIik7Cisg
ICAgICAgICAgICBpZiAoKytpbmRleGVzRmluaXNoZWQgPT0gbnVtSW5kZXhlcykgeworICAgICAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKK30K
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvb2JqZWN0c3RvcmVuYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTkgQEAKK1Rlc3QgSW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmVOYW1lcyBhcnJheQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8
fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGlu
ZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlv
bikKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3Zl
cnNpb24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsga2V5UGF0aDogJ2lkJywgYXV0b0lu
Y3JlbWVudDogdHJ1ZSB9KTsKK1BBU1MgJ29iamVjdFN0b3JlTmFtZXMnIGluIGRiIGlzIHRydWUK
K1BBU1MgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBkYi5vYmplY3RTdG9y
ZU5hbWVzLml0ZW0oMCkgaXMgb2JqZWN0U3RvcmVOYW1lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvb2JqZWN0c3RvcmVuYW1lcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL29iamVjdHN0b3JlbmFtZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL29i
amVjdHN0b3JlbmFtZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcv
bW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfY3JlYXRlX2luZGV4Lmh0
bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3Mgb2JqZWN0U3RvcmVOYW1lcyBhcnJh
eSIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4
ZWREQiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93
LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJl
RmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9u
LnBhdGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJl
cXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
Cit7CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lv
biAxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNs
ZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBv
YmplY3RTdG9yZU5hbWUgPSAiYSI7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9nKCJvYmpl
Y3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBrZXlQYXRo
OiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworCisgICAgc2hvdWxkQmVUcnVlKCIn
b2JqZWN0U3RvcmVOYW1lcycgaW4gZGIiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0
ZW0oMCkiLCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgZG9uZSgpOworfQorCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcHV0LWdldC12YWx1ZXMtYXV0b2luY3JlbWVudC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcHV0LWdldC12YWx1ZXMtYXV0b2luY3JlbWVudC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9wdXQtZ2V0LXZhbHVlcy1hdXRvaW5jcmVtZW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorVGVzdCBJbmRleGVkREIncyBwdXR0aW5n
IGFuZCBnZXR0aW5nIHZhbHVlcyBpbiBhbiBhdXRvaW5jcmVtZW50IG9iamVjdCBzdG9yZQorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWRE
QiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7CitQQVNT
IGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlw
dGlvbikKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorcmVxdWVzdCA9IGRiLnNldFZlcnNpb24o
JzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3Rlc3RTdHJpbmcgPSB7IHZhbHVlOiAn
dGVzdFN0cmluZycgfTsKK3Rlc3RJbnQgPSB7IHZhbHVlOiAxMDAyIH07CitvYmplY3RTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBhdXRvSW5jcmVtZW50OiB0
cnVlIH0pOworcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZCh0ZXN0U3RyaW5nLnZhbHVlKTsKK3Rl
c3RTdHJpbmcua2V5ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKK3JlcXVlc3QgPSBvYmplY3RTdG9y
ZS5nZXQodGVzdFN0cmluZy5rZXkpOworUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIHRlc3RT
dHJpbmcudmFsdWUKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdEludC52YWx1ZSk7Cit0
ZXN0SW50LmtleSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CityZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
Z2V0KHRlc3RJbnQua2V5KTsKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB0ZXN0SW50LnZh
bHVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvcHV0LWdldC12YWx1ZXMtYXV0b2luY3JlbWVudC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRo
aXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1
dC1nZXQtdmFsdWVzLWF1dG9pbmNyZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3Bh
cnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQt
dmFsdWVzLWF1dG9pbmNyZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFsIHRlc3Q6IGh0dHA6Ly9teHIubW96aWxs
YS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4ZWREQi90ZXN0L3Rlc3RfcHV0X2dldF92
YWx1ZXNfYXV0b0luY3JlbWVudC5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAg
ICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCist
LT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IHB1dHRpbmcgYW5kIGdldHRpbmcgdmFsdWVzIGluIGFuIGF1dG9pbmNyZW1lbnQgb2JqZWN0IHN0
b3JlIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaW5k
ZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5k
b3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxk
QmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5hbWUgPSB3aW5kb3cubG9jYXRp
b24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7CisgICAg
cmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKSIp
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIG9wZW5TdWNjZXNz
KCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFi
YXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb2JqZWN0U3Rv
cmVOYW1lID0gIk9iamVjdHMiOworICAgIHRlc3RTdHJpbmcgPSBldmFsQW5kTG9nKCJ0ZXN0U3Ry
aW5nID0geyB2YWx1ZTogJ3Rlc3RTdHJpbmcnIH07Iik7CisgICAgdGVzdEludCA9IGV2YWxBbmRM
b2coInRlc3RJbnQgPSB7IHZhbHVlOiAxMDAyIH07Iik7CisgICAgb2JqZWN0U3RvcmUgPSBldmFs
QW5kTG9nKCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFt
ZSwgeyBhdXRvSW5jcmVtZW50OiB0cnVlIH0pOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHRlc3RTdHJpbmcudmFsdWUpOyIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gcG9zdEFkZDsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAgdGVzdFN0
cmluZy5rZXkgPSBldmFsQW5kTG9nKCJ0ZXN0U3RyaW5nLmtleSA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5n
ZXQodGVzdFN0cmluZy5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldDsKK30KKworZnVu
Y3Rpb24gcG9zdEdldCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAi
dGVzdFN0cmluZy52YWx1ZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
b2JqZWN0U3RvcmUuYWRkKHRlc3RJbnQudmFsdWUpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFk
ZEludDsKK30KKworZnVuY3Rpb24gcG9zdEFkZEludCgpCit7CisgICAgdGVzdEludC5rZXkgPSBl
dmFsQW5kTG9nKCJ0ZXN0SW50LmtleSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQodGVzdEludC5rZXkp
OyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEdldEludDsKK30KKworZnVuY3Rpb24gcG9zdEdldElu
dCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdEludC52YWx1
ZSIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
K3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJkX3Bh
cnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQt
dmFsdWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9wdXQtZ2V0LXZhbHVlcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9wdXQtZ2V0LXZhbHVlcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgcHV0dGluZyBhbmQgZ2V0
dGluZyB2YWx1ZXMgaW4gYW4gb2JqZWN0IHN0b3JlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRl
eGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsKK1BBU1MgaW5kZXhlZERCID09IG51bGwgaXMg
ZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQorZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0CityZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCitEZWxldGVkIGFsbCBvYmpl
Y3Qgc3RvcmVzLgordGVzdFN0cmluZyA9IHsga2V5OiAwLCB2YWx1ZTogJ3Rlc3RTdHJpbmcnIH07
Cit0ZXN0SW50ID0geyBrZXk6IDEsIHZhbHVlOiAxMDAyIH07CitvYmplY3RTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBhdXRvSW5jcmVtZW50OiBmYWxzZSB9
KTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdFN0cmluZy52YWx1ZSwgdGVzdFN0cmlu
Zy5rZXkpOworUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIHRlc3RTdHJpbmcua2V5CityZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KHRlc3RTdHJpbmcua2V5KTsKK1BBU1MgZXZlbnQudGFyZ2V0
LnJlc3VsdCBpcyB0ZXN0U3RyaW5nLnZhbHVlCityZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKHRl
c3RJbnQudmFsdWUsIHRlc3RJbnQua2V5KTsKK1BBU1MgZXZlbnQudGFyZ2V0LnJlc3VsdCBpcyB0
ZXN0SW50LmtleQorcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCh0ZXN0SW50LmtleSk7CitQQVNT
IGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgdGVzdEludC52YWx1ZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5L1dlYktp
dC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1dC1nZXQtdmFsdWVzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcHV0LWdldC12YWx1ZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIHRo
aXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3B1
dC1nZXQtdmFsdWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21v
emlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3B1dF9nZXRfdmFsdWVzLmh0
bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBk
ZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21t
b25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgcHV0dGluZyBhbmQgZ2V0dGluZyB2
YWx1ZXMgaW4gYW4gb2JqZWN0IHN0b3JlIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2lu
ZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRl
eGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAg
IG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjbGVhbkRhdGFi
YXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQor
CitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMo
ZGIpOworCisgICAgb2JqZWN0U3RvcmVOYW1lID0gIk9iamVjdHMiOworICAgIHRlc3RTdHJpbmcg
PSBldmFsQW5kTG9nKCJ0ZXN0U3RyaW5nID0geyBrZXk6IDAsIHZhbHVlOiAndGVzdFN0cmluZycg
fTsiKTsKKyAgICB0ZXN0SW50ID0gZXZhbEFuZExvZygidGVzdEludCA9IHsga2V5OiAxLCB2YWx1
ZTogMTAwMiB9OyIpOworICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIHsgYXV0b0luY3JlbWVudDog
ZmFsc2UgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RT
dG9yZS5hZGQodGVzdFN0cmluZy52YWx1ZSwgdGVzdFN0cmluZy5rZXkpOyIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gcG9zdEFkZDsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC5yZXN1bHQiLCAidGVzdFN0cmluZy5rZXkiKTsKKyAgICByZXF1ZXN0ID0g
ZXZhbEFuZExvZygicmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldCh0ZXN0U3RyaW5nLmtleSk7Iik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwb3N0R2V0OworfQorCitmdW5jdGlvbiBwb3N0R2V0KCkKK3sKKyAg
ICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0U3RyaW5nLnZhbHVlIik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQodGVzdElu
dC52YWx1ZSwgdGVzdEludC5rZXkpOyIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdEFkZEludDsKK30K
KworZnVuY3Rpb24gcG9zdEFkZEludCgpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5y
ZXN1bHQiLCAidGVzdEludC5rZXkiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVz
dCA9IG9iamVjdFN0b3JlLmdldCh0ZXN0SW50LmtleSk7Iik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwb3N0
R2V0SW50OworfQorCitmdW5jdGlvbiBwb3N0R2V0SW50KCkKK3sKKyAgICBzaG91bGRCZSgiZXZl
bnQudGFyZ2V0LnJlc3VsdCIsICJ0ZXN0SW50LnZhbHVlIik7CisgICAgZG9uZSgpOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZWFkb25seS10cmFuc2FjdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVhZG9ubHktdHJhbnNhY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MiBAQAorVGVzdCBJbmRleGVkREIncyByZWFkb25seSB0cmFuc2FjdGlv
bnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5p
bmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERC
OworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9wZW4obmFtZSwg
ZGVzY3JpcHRpb24pCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3JlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCd2ZXJzaW9uIDEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK29iamVjdFN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NOYW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUg
fSk7CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0pLm9i
amVjdFN0b3JlKG9zTmFtZSkuYWRkKHt9KTsKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQ
QVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUgorRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUo
b3NOYW1lKS5hZGQoe30pOworUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSCitrZXkxID0gMTsKK2tl
eTIgPSAyOworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKFtvc05hbWVd
KS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7CitQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgorUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05M
WV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50cmFuc2FjdGlvbihvc05hbWUpLm9i
amVjdFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkyKTsKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VS
UgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmpl
Y3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7CitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIK
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0
b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQ
QVNTIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUgorRXhw
ZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9y
ZShvc05hbWUpLmRlbGV0ZShrZXkxKTsKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNT
IGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VSUgorRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIGRiLnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NO
YW1lKS5kZWxldGUoa2V5Mik7CitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiB0aGlyZF9wYXJ0
eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25seS10
cmFuc2FjdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkb25seS10cmFuc2FjdGlvbnMuaHRt
bAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL3JlYWRvbmx5LXRyYW5zYWN0aW9ucy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDcxIEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgb3JpZ2luYWwgdGVz
dDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4wL3NvdXJjZS9kb20vaW5kZXhlZERC
L3Rlc3QvdGVzdF9yZWFkb25seV90cmFuc2FjdGlvbnMuaHRtbAorICBsaWNlbnNlIG9mIG9yaWdp
bmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0byB0aGUgUHVibGlj
IERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96
ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVz
dCBJbmRleGVkREIncyByZWFkb25seSB0cmFuc2FjdGlvbnMiKTsKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRl
eGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2lu
ZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVs
bCIpOworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlw
dGlvbiA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5k
ZXhlZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBvcGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExv
ZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExv
ZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpIik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjbGVhbkRhdGFiYXNlOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBjbGVhbkRhdGFiYXNlKCkKK3sKKyAgICBk
ZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgb3NOYW1lID0gInRlc3Qgc3RvcmUiOwor
ICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZShvc05hbWUsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihbb3NOYW1lXSkub2JqZWN0U3RvcmUob3NO
YW1lKS5hZGQoe30pOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJS
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGIudHJhbnNhY3Rpb24ob3NOYW1lKS5v
YmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9u
LlJFQURfT05MWV9FUlIiKTsKKyAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9IDE7Iik7Cisg
ICAga2V5MiA9IGV2YWxBbmRMb2coImtleTIgPSAyOyIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNl
cHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7
fSwga2V5MSk7IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsK
KyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVj
dFN0b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkyKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRp
b24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5z
YWN0aW9uKFtvc05hbWVdKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5MSk7IiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkYi50cmFuc2FjdGlvbihvc05hbWUpLm9iamVjdFN0b3JlKG9zTmFtZSku
cHV0KHt9LCBrZXkxKTsiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uUkVBRF9PTkxZX0VS
UiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRiLnRyYW5zYWN0aW9uKFtvc05hbWVd
KS5vYmplY3RTdG9yZShvc05hbWUpLmRlbGV0ZShrZXkxKTsiLCAid2Via2l0SURCRGF0YWJhc2VF
eGNlcHRpb24uUkVBRF9PTkxZX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRi
LnRyYW5zYWN0aW9uKG9zTmFtZSkub2JqZWN0U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5Mik7Iiwg
IndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsKKyAgICBkb25lKCk7
Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCit0ZXN0KCk7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZWFkd3JpdGUtdHJhbnNhY3Rpb25zLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACitUZXN0IEluZGV4ZWREQidzIHJlYWQvd3Jp
dGUgdHJhbnNhY3Rpb25zCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVk
REIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93
Lm1vekluZGV4ZWREQjsKK1BBU1MgaW5kZXhlZERCID09IG51bGwgaXMgZmFsc2UKK2luZGV4ZWRE
Qi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQorZGIgPSBldmVudC50YXJnZXQucmVzdWx0CityZXF1
ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9y
ZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9zTmFtZSwgeyBhdXRvSW5j
cmVtZW50OiB0cnVlIH0pOworcmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKFtvc05hbWVdLCB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLmFkZCh7fSk7
CitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIGlzIHdlYmtpdElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUKK2tleTEgPSBldmVudC50YXJnZXQucmVzdWx0OworcmVxdWVzdCA9IGRi
LnRyYW5zYWN0aW9uKG9zTmFtZSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2Jq
ZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24u
bW9kZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFCitrZXkyID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKK3JlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgd2Via2l0SURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEp
OworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJraXRJREJUcmFuc2Fj
dGlvbi5SRUFEX1dSSVRFCityZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCB3ZWJraXRJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7fSwga2V5
Mik7CitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIGlzIHdlYmtpdElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUKK3JlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgd2Vi
a2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30s
IGtleTEpOworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJraXRJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFCityZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24ob3NOYW1lLCB3
ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKS5vYmplY3RTdG9yZShvc05hbWUpLnB1dCh7
fSwga2V5MSk7CitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIGlzIHdlYmtpdElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUKK3JlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1l
XSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5k
ZWxldGUoa2V5MSk7CitQQVNTIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIGlzIHdlYmtp
dElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUKK3JlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihvc05h
bWUsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSku
ZGVsZXRlKGtleTIpOworUEFTUyBldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSBpcyB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVhZHdyaXRlLXRyYW5zYWN0aW9ucy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRtbAkocmV2aXNpb24gMCkK
KysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3JlYWR3cml0ZS10cmFuc2FjdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhy
Lm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3Jl
YWRvbmx5X3RyYW5zYWN0aW9ucy5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2luYWwgdGVzdDoKKyAg
ICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICAg
ICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLyAiCist
LT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQidz
IHJlYWQvd3JpdGUgdHJhbnNhY3Rpb25zIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2lu
ZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRl
eGVkREI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAg
IG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkg
VGVzdCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVu
KG5hbWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nl
c3M7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisK
K2Z1bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZl
bnQudGFyZ2V0LnJlc3VsdCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCd2ZXJzaW9uIDEnKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
Y2xlYW5EYXRhYmFzZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gY2xlYW5EYXRhYmFzZSgpCit7CisgICAgZGVsZXRlQWxsT2Jq
ZWN0U3RvcmVzKGRiKTsKKworICAgIG9zTmFtZSA9ICJ0ZXN0IHN0b3JlIjsKKyAgICBvYmplY3RT
dG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob3NO
YW1lLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgd2Via2l0SURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5hZGQoe30pOyIpOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gcG9zdEFkZDsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdEFkZCgpCit7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIndlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUiKTsKKyAgICBrZXkxID0gZXZhbEFuZExvZygia2V5MSA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2Fj
dGlvbihvc05hbWUsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3Jl
KG9zTmFtZSkuYWRkKHt9KTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQyOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBwb3N0QWRkMigpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlv
bi5tb2RlIiwgIndlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAgICBrZXkyID0g
ZXZhbEFuZExvZygia2V5MiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbihbb3NOYW1lXSwgd2Via2l0SURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTEp
OyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDsKKyAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdFB1dCgpCit7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIndlYmtpdElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQoe30sIGtleTIpOyIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcG9zdFB1dDI7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBvc3RQdXQyKCkKK3sKKyAgICBzaG91bGRCZSgi
ZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUiLCAid2Via2l0SURCVHJhbnNhY3Rpb24uUkVB
RF9XUklURSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNh
Y3Rpb24oW29zTmFtZV0sIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0
b3JlKG9zTmFtZSkucHV0KHt9LCBrZXkxKTsiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBv
c3RQdXQzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBwb3N0UHV0MygpCit7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50
cmFuc2FjdGlvbi5tb2RlIiwgIndlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwg
d2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5wdXQo
e30sIGtleTEpOyIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFB1dDQ7CisgICAgcmVx
dWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIHBv
c3RQdXQ0KCkKK3sKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm1vZGUi
LCAid2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSIpOworICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gZGIudHJhbnNhY3Rpb24oW29zTmFtZV0sIHdlYmtpdElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpLm9iamVjdFN0b3JlKG9zTmFtZSkuZGVsZXRlKGtleTEpOyIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdERlbGV0ZTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdERlbGV0ZSgpCit7
CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5tb2RlIiwgIndlYmtpdElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVx
dWVzdCA9IGRiLnRyYW5zYWN0aW9uKG9zTmFtZSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkub2JqZWN0U3RvcmUob3NOYW1lKS5kZWxldGUoa2V5Mik7Iik7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBwb3N0RGVsZXRlMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gcG9zdERlbGV0ZTIoKQoreworICAgIHNob3Vs
ZEJlKCJldmVudC50YXJnZXQudHJhbnNhY3Rpb24ubW9kZSIsICJ3ZWJraXRJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFIik7CisgICAgZG9uZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRl
eDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVtb3ZlLWluZGV4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5kZXgt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVtb3ZlLWluZGV4LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBh
bmQgcmVtb3ZpbmcgaW5kZXhlcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5k
ZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdp
bmRvdy5tb3pJbmRleGVkREI7CitQQVNTIGluZGV4ZWREQiA9PSBudWxsIGlzIGZhbHNlCitpbmRl
eGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
cmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJ3ZlcnNpb24gMScpCitEZWxldGVkIGFsbCBvYmplY3Qg
c3RvcmVzLgorb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUsIHsga2V5UGF0aDogJ2ZvbycgfSk7CitQQVNTIGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3Ro
IGlzIDEKK1BBU1MgZGIub2JqZWN0U3RvcmVOYW1lcy5pdGVtKDApIGlzIG9iamVjdFN0b3JlTmFt
ZQorUEFTUyBvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCBpcyAwCitpbmRleCA9IG9iamVj
dFN0b3JlLmNyZWF0ZUluZGV4KGluZGV4TmFtZSwgJ2ZvbycpOworUEFTUyBvYmplY3RTdG9yZS5p
bmRleE5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIG9iamVjdFN0b3JlLmluZGV4TmFtZXMuaXRlbSgw
KSBpcyBpbmRleE5hbWUKK29iamVjdFN0b3JlLmRlbGV0ZUluZGV4KGluZGV4TmFtZSk7CitQQVNT
IG9iamVjdFN0b3JlLmluZGV4TmFtZXMubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiB0aGlyZF9wYXJ0eS9XZWJLaXQv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZW1vdmUtaW5kZXguaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9yZW1vdmUtaW5kZXguaHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3Bh
cnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3JlbW92ZS1p
bmRleC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgaHRtbD4K
KzwhLS0KKyAgb3JpZ2luYWwgdGVzdDogaHR0cDovL214ci5tb3ppbGxhLm9yZy9tb3ppbGxhMi4w
L3NvdXJjZS9kb20vaW5kZXhlZERCL3Rlc3QvdGVzdF9yZW1vdmVfaW5kZXguaHRtbAorICBsaWNl
bnNlIG9mIG9yaWdpbmFsIHRlc3Q6CisgICAgIiBBbnkgY29weXJpZ2h0IGlzIGRlZGljYXRlZCB0
byB0aGUgUHVibGljIERvbWFpbi4KKyAgICAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1
YmxpY2RvbWFpbi96ZXJvLzEuMC8gIgorLS0+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBjcmVhdGluZyBhbmQgcmVtb3ZpbmcgaW5kZXhlcyIp
OworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGluZGV4ZWRE
QiA9IGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93Lndl
YmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFs
c2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBh
dGhuYW1lOworICAgIGRlc2NyaXB0aW9uID0gIk15IFRlc3QgRGF0YWJhc2UiOworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKworICAg
IHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAx
JykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFu
RGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmpl
Y3RTdG9yZU5hbWUgPSAidGVzdCBzdG9yZSI7CisgICAgb2JqZWN0U3RvcmUgPSBldmFsQW5kTG9n
KCJvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgeyBr
ZXlQYXRoOiAnZm9vJyB9KTsiKTsKKyAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJkYi5vYmplY3RTdG9yZU5hbWVzLml0ZW0oMCki
LCAib2JqZWN0U3RvcmVOYW1lIik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFt
ZXMubGVuZ3RoIiwgIjAiKTsKKworICAgIGluZGV4TmFtZSA9ICJNeSBUZXN0IEluZGV4IjsKKyAg
ICBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5k
ZXhOYW1lLCAnZm9vJyk7Iik7CisgICAgc2hvdWxkQmUoIm9iamVjdFN0b3JlLmluZGV4TmFtZXMu
bGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5pdGVt
KDApIiwgImluZGV4TmFtZSIpOworCisgICAgZXZhbEFuZExvZygib2JqZWN0U3RvcmUuZGVsZXRl
SW5kZXgoaW5kZXhOYW1lKTsiKTsKKyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1l
cy5sZW5ndGgiLCAiMCIpOworCisgICAgZG9uZSgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJ
bmRleDogdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvc2V0LXZlcnNpb24tYWJvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9zZXQtdmVyc2lvbi1h
Ym9ydC5odG1sCShyZXZpc2lvbiAwKQorKysgdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvc2V0LXZlcnNpb24tYWJvcnQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIG9yaWdpbmFs
IHRlc3Q6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTIuMC9zb3VyY2UvZG9tL2luZGV4
ZWREQi90ZXN0L3Rlc3Rfc2V0VmVyc2lvbl9hYm9ydC5odG1sCisgIGxpY2Vuc2Ugb2Ygb3JpZ2lu
YWwgdGVzdDoKKyAgICAiIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBQdWJsaWMg
RG9tYWluLgorICAgICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3pl
cm8vMS4wLyAiCistLT4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IEluZGV4ZWREQidzIGFib3J0aW5nIHNldFZlcnNpb24iKTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVk
REIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93
Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIp
OworCisgICAgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlv
biA9ICJNeSBUZXN0IERhdGFiYXNlIjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhl
ZERCLm9wZW4obmFtZSwgZGVzY3JpcHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKK30KKworZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgaW5pdGlhbFZlcnNpb24gPSBldmFsQW5k
TG9nKCJpbml0aWFsVmVyc2lvbiA9IGRiLnZlcnNpb247Iik7CisgICAgcmVxdWVzdCA9IGV2YWxB
bmRMb2coInJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcyJykiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNsZWFuRGF0YWJhc2U7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0
ZUFsbE9iamVjdFN0b3JlcyhkYik7CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9i
amVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHNob3VsZEJl
KCJkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisKKyAgICBpbmRleCA9IGV2YWxB
bmRMb2coImluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2JhcicsICdiYXonKTsiKTsK
KyAgICBzaG91bGRCZSgib2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworCisg
ICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkU3VjY2Vz
c0NhbGxiYWNrOworICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmFib3J0ID0gcG9zdEFi
b3J0OworICAgIGV2YWxBbmRMb2coImV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOyIp
OworfQorCitmdW5jdGlvbiBwb3N0QWJvcnQoKQoreworICAgIHNob3VsZEJlKCJkYi52ZXJzaW9u
IiwgImluaXRpYWxWZXJzaW9uIik7CisgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMu
bGVuZ3RoIiwgIjAiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3N1Y2Nlc3MtZXZlbnRzLWFmdGVyLWFib3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9zdWNjZXNzLWV2ZW50cy1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9zdWNjZXNzLWV2ZW50cy1hZnRlci1hYm9ydC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjIgQEAKK1Rlc3QgSW5kZXhlZERCJ3MgZ2V0KClpbmcgYWZ0ZXIgYWJvcnRpbmcg
dHJhbnNhY3Rpb24KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9
IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96
SW5kZXhlZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLm9w
ZW4obmFtZSwgZGVzY3JpcHRpb24pCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK2luaXRpYWxW
ZXJzaW9uID0gZGIudmVyc2lvbjsKK3JlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykKK0RlbGV0
ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitvYmplY3RTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmb28nKTsKK3JlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQoe30sIDEpOwordHJhbnNhY3Rpb24g
PSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24KK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBvYmpl
Y3RTdG9yZS5nZXQoMSk7CitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlz
IHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IHRoaXJkX3BhcnR5
L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3N1Y2Nlc3MtZXZl
bnRzLWFmdGVyLWFib3J0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGhpcmRfcGFydHkvV2ViS2l0L0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvc3VjY2Vzcy1ldmVudHMtYWZ0ZXIt
YWJvcnQuaHRtbAkocmV2aXNpb24gMCkKKysrIHRoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3N1Y2Nlc3MtZXZlbnRzLWFmdGVyLWFib3J0Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPCEtLQor
ICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemlsbGEub3JnL21vemlsbGEyLjAvc291cmNl
L2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3N1Y2Nlc3NfZXZlbnRzX2FmdGVyX2Fib3J0Lmh0bWwK
KyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNvcHlyaWdodCBpcyBkZWRp
Y2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8vY3JlYXRpdmVjb21tb25z
Lm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgZ2V0KClpbmcgYWZ0ZXIgYWJvcnRpbmcg
dHJhbnNhY3Rpb24iKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERC
IHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9IHdpbmRv
dy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBkZXNjcmlwdGlvbiA9ICJNeSBUZXN0IERhdGFiYXNl
IjsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4obmFtZSwgZGVzY3Jp
cHRpb24pIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQoreworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVz
dWx0Iik7CisgICAgaW5pdGlhbFZlcnNpb24gPSBldmFsQW5kTG9nKCJpbml0aWFsVmVyc2lvbiA9
IGRiLnZlcnNpb247Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInJlcXVlc3QgPSBkYi5z
ZXRWZXJzaW9uKCcxJykiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIGNsZWFuRGF0YWJhc2UoKQoreworICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7
CisKKyAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ2ZvbycpOyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gb2JqZWN0U3RvcmUuYWRkKHt9LCAxKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHBvc3RBZGQ7Cit9
CisKK2Z1bmN0aW9uIHBvc3RBZGQoKQoreworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24iKTsKKyAgICB0cmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gcG9zdEFib3J0OworICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Cit9CisKK2Z1
bmN0aW9uIHBvc3RBYm9ydCgpCit7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigib2JqZWN0
U3RvcmUuZ2V0KDEpOyIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9F
UlIiKTsKKworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IHRoaXJk
X3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3ZlcnNp
b25jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLmh0bWwJKHJldmlzaW9u
IDApCisrKyB0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS92ZXJzaW9uY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAK
KzwhRE9DVFlQRSBodG1sPgorPCEtLQorICBvcmlnaW5hbCB0ZXN0OiBodHRwOi8vbXhyLm1vemls
bGEub3JnL21vemlsbGEyLjAvc291cmNlL2RvbS9pbmRleGVkREIvdGVzdC90ZXN0X3NldFZlcnNp
b25fZXZlbnRzLmh0bWwKKyAgbGljZW5zZSBvZiBvcmlnaW5hbCB0ZXN0OgorICAgICIgQW55IGNv
cHlyaWdodCBpcyBkZWRpY2F0ZWQgdG8gdGhlIFB1YmxpYyBEb21haW4uCisgICAgICBodHRwOi8v
Y3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvICIKKy0tPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCJ3MgdHJpZ2dlcmlu
ZyB2ZXJzaW9uY2hhbmdlIGV2ZW50Iik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgaW5kZXhlZERCID0gZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93
LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVk
REI7Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKworICAgIG5h
bWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVz
dCBEYXRhYmFzZSI7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKG5h
bWUsIGRlc2NyaXB0aW9uKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlblN1Y2Nlc3M7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1
bmN0aW9uIG9wZW5TdWNjZXNzKCkKK3sKKyAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdCIpOworICAgIHZlcnNpb25DaGFuZ2VFdmVudENvdW50ID0gZXZhbEFuZExv
ZygidmVyc2lvbkNoYW5nZUV2ZW50Q291bnQgPSAwOyIpOworLy8gICAgZGIub252ZXJzaW9uY2hh
bmdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKy8vICAgICAgICB2ZXJzaW9uQ2hhbmdlRXZlbnRDb3Vu
dCsrOworLy8gICAgfTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IGRiLnNl
dFZlcnNpb24oJzEnKTsiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uYmxvY2tlZCA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcG9zdFNldFZlcnNpb247Cit9CisKK2Z1bmN0aW9u
IHBvc3RTZXRWZXJzaW9uKCkKK3sKKyAgICBzaG91bGRCZSgidmVyc2lvbkNoYW5nZUV2ZW50Q291
bnQiLCAiMSIpOworICAgIGRvbmUoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>