<?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>88969</bug_id>
          
          <creation_ts>2012-06-12 23:44:16 -0700</creation_ts>
          <short_desc>HTTP tests should use testRunner instead of layoutTestController</short_desc>
          <delta_ts>2012-06-13 02:24:39 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88210</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>647740</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-12 23:44:16 -0700</bug_when>
    <thetext>HTTP tests should use testRunner instead of layoutTestController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647744</commentid>
    <comment_count>1</comment_count>
      <attachid>147244</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-12 23:50:45 -0700</bug_when>
    <thetext>Created attachment 147244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647749</commentid>
    <comment_count>2</comment_count>
      <attachid>147244</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-13 00:08:00 -0700</bug_when>
    <thetext>Comment on attachment 147244
Patch

rs=me, but I don&apos;t understand why the reply txt files are listed here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647762</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-13 00:22:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 147244 [details])
&gt; rs=me, but I don&apos;t understand why the reply txt files are listed here

Reverting those replay txt files. It&apos;s because sed adds a new line at the end of each line :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647781</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-13 00:50:11 -0700</bug_when>
    <thetext>Committed r120167: &lt;http://trac.webkit.org/changeset/120167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647828</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-13 02:24:39 -0700</bug_when>
    <thetext>My initial commit wasn&apos;t complete. Also committed: http://trac.webkit.org/changeset/120174.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147244</attachid>
            <date>2012-06-12 23:50:45 -0700</date>
            <delta_ts>2012-06-13 00:08:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88969-20120612235045.patch</filename>
            <type>text/plain</type>
            <size>714763</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMDE2NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NiBAQAorMjAxMi0wNi0xMiAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBIVFRQIHRlc3RzIHNob3VsZCB1c2UgdGVzdFJ1
bm5lciBpbnN0ZWFkIG9mIGxheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODk2OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS86CisgICAg
ICAgICogaHR0cC90ZXN0cy9jYWNoZS9jYW5jZWwtZHVyaW5nLWZhaWx1cmUtY3Jhc2guaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL2NhbmNlbC1kdXJpbmctcmV2YWxpZGF0aW9uLXN1
Y2NlZWRlZC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNh
Y2hlZC1zdWJyZXNvdXJjZS1sb2Fkcy1tYXgtYWdlLWh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9sb2FkZWQtZnJvbS1jYWNoZS1hZnRlci1yZWxv
YWQtd2l0aGluLWlmcmFtZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUvbG9hZGVk
LWZyb20tY2FjaGUtYWZ0ZXItcmVsb2FkLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNo
ZS9wb3N0LXJlZGlyZWN0LWdldC5waHA6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9wb3N0
LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy5waHA6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNo
ZS9yZXNvdXJjZXMvc3RvcHBlZC1yZXZhbGlkYXRpb24tcmVzdWx0Lmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3VyY2UtdGVzdC5qczoKKyAgICAgICAg
KG5leHRUZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3N0b3BwZWQtcmV2YWxpZGF0
aW9uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9zdWJyZXNvdXJjZS1mYWlsb3Zl
ci10by1uZXR3b3JrLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9zdWJyZXNvdXJj
ZS1mcmFnbWVudC1pZGVudGlmaWVyLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9z
dWJyZXNvdXJjZS1tdWx0aXBsZS1pbnN0YW5jZXMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2NhY2hlL3hoci1ib2R5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS96ZXJvLWxl
bmd0aC14aHIuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhbnZhcy9waGlsaXAvdGVzdHMu
anM6CisgICAgICAgIChfYWRkVGVzdC5lbmRUZXN0KToKKyAgICAgICAgKF9hZGRUZXN0LndpbmRv
dy5vbmxvYWQpOgorICAgICAgICAoX2FkZFRlc3QpOgorICAgICAgICAqIGh0dHAvdGVzdHMvY2Fu
dmFzL3dlYmdsL29yaWdpbi1jbGVhbi1jb25mb3JtYW5jZS5odG1sOgorICAgICAgICAqIGh0dHAv
dGVzdHMvY29va2llcy9yZXNvdXJjZXMvY29va2llcy10ZXN0LXByZS5qczoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3Jlc2V0Q29va2llcy5qczoKKyAgICAgICAgKHJl
c2V0Q29va2llcyk6CisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRB
cnJheWNvb2tpZXMtcmVzdWx0LnBocDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvcmVz
b3VyY2VzL3NldFV0ZjhDb29raWVzLXJlc3VsdC5waHA6CisgICAgICAgICogaHR0cC90ZXN0cy9j
b29raWVzL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1jb29raWUtcmVsYXhpbmctaWZyYW1lLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1yZWxheGlu
Zy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvY3NzL2Nyb3NzLWZhZGUtcmVsb2FkLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9jc3MvY3NzLWltcG9ydHMtcmVkaXJlY3QtY3ljbGUuaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9mb250LWZhY2Utc3JjLWxvYWRpbmcuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlzYWJsZWQtdmFs
dWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQtaW4tZXJyb3IuanM6CisgICAgICAgICogaHR0cC90
ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2Fk
aW5nLXNoZWV0LmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9yZXF1ZXN0
LWxvZ2dpbmcuanM6CisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAoZW5kVGVzdCk6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9kb3dubG9hZC9iYXNpYy1hc2NpaS5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvZG93bmxvYWQvaW5oZXJpdGVkLWVuY29kaW5nLWZvcm0tc3VibWlzc2lvbi1yZXN1
bHQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Rvd25sb2FkL2luaGVyaXRlZC1lbmNvZGlu
Zy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvZG93bmxvYWQvbGl0ZXJhbC11dGYtOC5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtYmFkLW1pbWUt
dHlwZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2Ut
Y29udGVudC10eXBlLWNoYXJzZXQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2V2ZW50c291
cmNlL2V2ZW50c291cmNlLWVvZi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvZXZlbnRzb3Vy
Y2UvZXZlbnRzb3VyY2UtcGFyc2UtZXZlbnQtc3RyZWFtLmh0bWw6CisgICAgICAgICogaHR0cC90
ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1yZWNvbm5lY3QtZHVyaW5nLW5hdmlnYXRlLWNy
YXNoLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1y
ZWNvbm5lY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2ZW50c291
cmNlLXN0YXR1cy1jb2RlLXN0YXRlcy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvZXZlbnRz
b3VyY2UvZXhpc3RlbnQtZXZlbnRzb3VyY2Utc3RhdHVzLWVycm9yLWlmcmFtZS1jcmFzaC5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvZXZlbnRzb3VyY2Uvbm9uLWV4aXN0ZW50LWV2ZW50c291
cmNlLXN0YXR1cy1lcnJvci1pZnJhbWUtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2V2ZW50c291cmNlL3Jlc291cmNlcy93YWl0LXRoZW4tbm90aWZ5LWRvbmUucGhwOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvZXZlbnRzb3VyY2Uvd29ya2Vycy9ldmVudHNvdXJjZS1zaW1wbGUuaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2ZpbGVhcGkvY3JlYXRlLWJsb2ItdXJsLWZyb20tZGF0
YS11cmwuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vbm8tY2FjaGUtZmls
ZXN5c3RlbS11cmwuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlz
dG9yeS1kZWxlZ2F0ZS1iYXNpYy0zMDItcmVkaXJlY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy1yZWZyZXNoLXJlZGlyZWN0
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9nbG9iYWxoaXN0b3J5L2hpc3RvcnktZGVsZWdh
dGUtYmFzaWMtdGl0bGUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2dsb2JhbGhpc3Rvcnkv
aGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy12aXNpdGVkLWxpbmtzLmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9oaXN0b3J5LzoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luY3JlbWVudGFsL2ZyYW1l
LWZvY3VzLWJlZm9yZS1sb2FkLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbmNyZW1lbnRh
bC9wYXJ0aWFsLWpwZWcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luY3JlbWVudGFsL3Bh
dXNlLWluLXNjcmlwdC1lbGVtZW50LnBsOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5jcmVtZW50
YWwvc2xvdy11dGY4LWNzcy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5jcmVtZW50YWwv
c2xvdy11dGY4LWh0bWwucGw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbmNyZW1lbnRhbC9zcGxp
dC1oZXgtZW50aXRpZXMucGw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxl
ZC9jb25zb2xlLWNsZWFyLWFyZ3VtZW50cy1vbi1mcmFtZS1uYXZpZ2F0aW9uLmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb25zb2xlLWNsZWFyLWFyZ3VtZW50
cy1vbi1mcmFtZS1yZW1vdmUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxv
Y2tzLXNldEludGVydmFsLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5h
YmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldFRpbWVvdXQuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2RhdGFiYXNlLW9wZW4uaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2RlZGljYXRlZC13b3JrZXJzLWxp
c3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2RvY3VtZW50
LXdyaXRlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb20t
c3RvcmFnZS1vcGVuLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxl
ZC9pbmplY3RlZC1zY3JpcHQtZGlzY2FyZC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtY2xlYXItYXJndW1lbnRzLWlmcmFtZS5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtcmVzb3VyY2UtZXJy
b3JzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2Nr
ZXQtZXJyb3IuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIv
cmVzb3VyY2VzL3dpdGhvdXQtaW5kZXhlZC1kYi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcGluZy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLXRyZWUvcmVzb3VyY2VzL3NjcmlwdC1pbml0aWFsLmpzOgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlcy9z
Y3JpcHQtbmF2aWdhdGVkLmpzOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci93ZWItc29ja2V0LWZyYW1lLWVycm9yLmh0bWw6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3Ivd2ViLXNvY2tldC1mcmFtZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvbG9hZGluZy86CisgICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9hYnNvbHV0ZS11cmwtc3Ry
aXAtd2hpdGVzcGFjZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zY3Jp
cHQtdGVzdHMvc2VuZC1oeWJyaWQtYmxvYi5qczoKKyAgICAgICAgKHJ1blRlc3RzKToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2xvY2FsL2RyYWctb3Zlci1yZW1vdGUtY29udGVudC5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZmFpbC5jc3M6CisgICAgICAgICgjcGFzcyk6CisgICAg
ICAgICogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9yZXNvdXJjZXMvdGVzdC50eHQ6CisgICAg
ICAgICogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS1jb25zdHJ1Y3Rl
ZC1mcm9tLWZvcm0uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVz
aGVldC1sb2FkLW9yZGVyLXByZWxvYWQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2Fs
L2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9s
b2NhbC9saW5rLXN0eWxlc2hlZXQtcHJlZmVycmVkLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9sb2NhbC9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2xvY2FsL3N0eWxlLWFjY2Vzcy1iZWZvcmUtc3R5bGVzaGVldC1sb2FkZWQuaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL3N0eWxlc2hlZXQtYW5kLXNjcmlwdC1sb2Fk
LW9yZGVyLWh0dHAuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL3N0eWxlc2hlZXQt
YW5kLXNjcmlwdC1sb2FkLW9yZGVyLW1lZGlhLXByaW50Lmh0bWw6CisgICAgICAgICogaHR0cC90
ZXN0cy9sb2NhbC9zdHlsZXNoZWV0LWFuZC1zY3JpcHQtbG9hZC1vcmRlci5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbWVkaWEvcmVsb2FkLWFmdGVyLWRpYWxvZy5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvbWVkaWEvcmVzb3VyY2VzL3Rlc3QudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQtcmFuZ2UtY29udGFpbnMtY3VycmVudFRpbWUuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1jb29raWUuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWFib3J0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWluLW1lc3NhZ2UtZXZlbnQtZGlzcGF0Y2guaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9taW1lL3F1b3RlZC1jaGFyc2V0LnBocDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL21pbWUvcmVzb3VyY2VzL3VwcGVyY2FzZS1taW1lLXR5cGUucGhwOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbWltZS9zdGFuZGFyZC1tb2RlLWRvZXMtbm90LWxvYWQtc3R5
bGVzaGVldC13aXRoLXRleHQtcGxhaW4tYW5kLWNzcy1leHRlbnNpb24uaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL21pbWUvc3RhbmRhcmQtbW9kZS1kb2VzLW5vdC1sb2FkLXN0eWxlc2hlZXQt
d2l0aC10ZXh0LXBsYWluLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9taW1lL3N0YW5kYXJk
LW1vZGUtbG9hZHMtc3R5bGVzaGVldC13aXRoLWNoYXJzZXQtYW5kLWNzcy1leHRlbnNpb24uaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21pbWUvc3RhbmRhcmQtbW9kZS1sb2Fkcy1zdHlsZXNo
ZWV0LXdpdGgtY2hhcnNldC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbWltZS9zdGFuZGFy
ZC1tb2RlLWxvYWRzLXN0eWxlc2hlZXQtd2l0aC1lbXB0eS1jb250ZW50LXR5cGUuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL21pbWUvc3RhbmRhcmQtbW9kZS1sb2Fkcy1zdHlsZXNoZWV0LXdp
dGgtdGV4dC1jc3MtYW5kLWludmFsaWQtdHlwZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
bWltZS91cHBlcmNhc2UtbWltZS10eXBlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9taXNj
LzoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy86CisgICAgICAgICogaHR0
cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVkaXJlY3QuanM6CisgICAgICAgIChy
dW5OZXh0VGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItdXRpbC5qczoKKyAgICAgICAgKHdhaXRVbnRpbFRocmVhZENvdW50TWF0Y2hlcy5yZXR1cm4p
OgorICAgICAgICAod2FpdFVudGlsVGhyZWFkQ291bnRNYXRjaGVzKToKKyAgICAgICAgKGRvbmUp
OgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWltcG9ydFNjcmlw
dHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1pbnZh
bGlkLXVybC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVy
aW5nLXN5bmMtb3BlcmF0aW9uLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3Rl
eHQtZW5jb2RpbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvd29ya2VyLWRv
Y3VtZW50LWRvbWFpbi1zZWN1cml0eS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vy
cy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vy
cy93b3JrZXItaW1wb3J0U2NyaXB0c09uRXJyb3IuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dvcmtlcnMvd29ya2VyLWludmFsaWQtdXJsLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3dvcmtlci13b3JrZXJTY3JpcHROb3RUaGVyZS5odG1sOgorICAgICAgICAqIGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvOgorICAgICAgICAqIGh0dHAvdGVzdHMveG1sdmlld2VyL2R1
bXBBc1RleHQvZnJhbWVzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy94bWx2aWV3ZXIvZHVt
cEFzVGV4dC94aHRtbC10YWcueG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMveG1sdmlld2VyL2V4
dGVuc2lvbnMtYXBpLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvYmFkLXN1Yi1wcm90b2NvbC1jb250cm9sLWNo
YXJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L21pc2MvZXhlY3V0ZS1hbmQtcmV0dXJuLXZhbHVlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vaHR0cC90ZXN0cy9taXNjL3NlbGVjdGlvbkFzTWFya3VwLmh0bWw6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBl
cm1pc3Npb25zLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9z
ZWN1cml0eS9hYm91dEJsYW5rL3hzcy1ERU5JRUQtbmF2aWdhdGUtb3BlbmVyLWRvY3VtZW50LXdy
aXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2Fib3V0QmxhbmsveHNzLURFTklFRC1uYXZpZ2F0ZS1vcGVuZXItamF2YXNjcmlw
dC11cmwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVz
dHMvc2VjdXJpdHkvYWJvdXRCbGFuay94c3MtREVOSUVELXNldC1vcGVuZXItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVS
TC94c3MtREVOSUVELWZyb20tZGF0YS11cmwtaW4tZm9yZWlnbi1kb21haW4tc3ViZnJhbWUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tZGF0YS11cmwtaW4tZm9yZWlnbi1kb21haW4td2lu
ZG93LW9wZW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tZGF0YS11cmwtc3ViLWZyYW1l
LTItbGV2ZWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tZGF0YS11cmwtc3ViLWZyYW1l
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLXN1Yi1mcmFtZS10by1kYXRh
LXVybC1zdWItZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tZGF0YS11cmwtdG8t
ZGF0YS11cmwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tamF2YXNjcmlwdC11cmwtd2lu
ZG93LW9wZW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELXRvLWRhdGEtdXJsLWZyb20tZGF0YS11
cmwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELXRvLWRhdGEtdXJsLWluLWZvcmVpZ24tZG9tYWlu
LXN1YmZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRw
L3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC10by1kYXRhLXVybC1pbi1mb3JlaWdu
LWRvbWFpbi1zdWJmcmFtZS1sb2NhdGlvbi1jaGFuZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVE
LXRvLWRhdGEtdXJsLWluLWZvcmVpZ24tZG9tYWluLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwv
eHNzLURFTklFRC10by1kYXRhLXVybC1zdWItZnJhbWUtMi1sZXZlbC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hz
cy1ERU5JRUQtdG8tZGF0YS11cmwtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2Vj
dXJlLWlmcmFtZS1pbi1tYWluLWZyYW1lLWFsbG93ZWQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJh
bWUtaW4tbWFpbi1mcmFtZS1ibG9ja2VkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFp
bi1mcmFtZS1hbGxvd2VkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFtZS1i
bG9ja2VkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtc2NyaXB0LWluLW1haW4tZnJhbWUtYWxsb3dlZC5o
dG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L2luc2VjdXJlLXNjcmlwdC1pbi1tYWluLWZyYW1lLWJsb2NrZWQuaHRtbDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L3dpbmRvdy1uYW1l
ZC1wcm90by1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvaHR0cC90ZXN0cy9j
b29raWVzL3N0cmljdC10aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcuaHRtbDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9odHRwL3Rlc3RzL3NlY3VyaXR5L2Fib3V0QmxhbmsveHNzLURFTklFRC1u
YXZpZ2F0ZS1vcGVuZXItZG9jdW1lbnQtd3JpdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL3F0L2h0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFuay94c3MtREVOSUVELW5hdmln
YXRlLW9wZW5lci1qYXZhc2NyaXB0LXVybC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vcXQvaHR0cC90ZXN0cy9zZWN1cml0eS9hYm91dEJsYW5rL3hzcy1ERU5JRUQtc2V0LW9wZW5l
ci1leHBlY3RlZC50eHQ6CisKIDIwMTItMDYtMTIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgbW9ybmluZyBnYXJkZW5pbmcs
IHNraXAgbmV3IGZhaWxpbmcgdGVzdHMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlLzQwNC1tYW5pZmVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvNDA0LW1hbmlmZXN0Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvNDA0LW1hbmlmZXN0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbCBtYW5pZmVzdD0iZG9lcy1ub3QtZXhpc3QubWFu
aWZlc3QiPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
CiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTQzLDggKzQzLDggQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIGxvZygiRkFJTFVSRTogQ291bGQgbm90IGxvYWQgZGF0YS4iKTsKICAgICB9CiAK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogdmFyIGdvdENoZWNraW5nRXZlbnQg
PSBmYWxzZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvNDA0LXJlc291
cmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS80
MDQtcmVzb3VyY2UuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS80MDQtcmVzb3VyY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0
LDkgQEAKIDxwPlNob3VsZCBzYXkgU1VDQ0VTUzo8L3A+CiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCkKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCkBAIC0yNiw4ICsyNiw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGVs
c2UKICAgICAgICAgbG9nKCJGQUlMVVJFOiBjYWNoZSBzdGF0dXMgaXMgbm90IHVuY2FjaGVkOiAi
ICsgYXBwbGljYXRpb25DYWNoZS5zdGF0dXMpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgZnVu
Y3Rpb24oKSB7IHVuZXhwZWN0ZWRDYWxsYmFjaygiY2FjaGVkIik7IGNhY2hlQ2FsbGJhY2soKSB9
LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNh
Y2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLW1hbmlmZXN0LTQw
NC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL2Fib3J0LWNhY2hlLW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hl
LW9uY2hlY2tpbmctbWFuaWZlc3QtNDA0Lm1hbmlmZXN0Ij4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKQEAg
LTE2LDI4ICsxNiwyOCBAQCBmdW5jdGlvbiBvbmNoZWNraW5nKCkgewogZnVuY3Rpb24gb25ub3Vw
ZGF0ZSgpIHsKICAgICBsb2coIkZBSUxVUkUiKTsKICAgICBsb2coIm5vdXBkYXRlIik7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIG9uY2FjaGVkKCkgewogICAg
IGxvZygiRkFJTFVSRSIpOwogICAgIGxvZygiQ0FDSEVEIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7CiAgICAgbG9nKCJGQUlM
VVJFIik7CiAgICAgbG9nKCJVUERBVEVSRUFEWSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBvbmVycm9yKCkgewogICAgIGxvZygiU1VDQ0VTUyIpOwotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBhcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50
TGlzdGVuZXIoJ2NoZWNraW5nJywgb25jaGVja2luZywgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQw
NC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJv
cnQtY2FjaGUtb25jaGVja2luZy1yZXNvdXJjZS00MDQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmNoZWNraW5n
LXJlc291cmNlLTQwNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWwg
bWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNoZS1vbmNoZWNraW5nLXJlc291cmNlLTQwNC5t
YW5pZmVzdCI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9
CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CkBAIC0xNiwyOCArMTYsMjggQEAgZnVuY3Rpb24g
b25jaGVja2luZygpIHsKIGZ1bmN0aW9uIG9ubm91cGRhdGUoKSB7CiAgICAgbG9nKCJGQUlMVVJF
Iik7CiAgICAgbG9nKCJub3VwZGF0ZSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
fQogCiBmdW5jdGlvbiBvbmNhY2hlZCgpIHsKICAgICBsb2coIkZBSUxVUkUiKTsKICAgICBsb2co
IkNBQ0hFRCIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBv
bnVwZGF0ZXJlYWR5KCkgewogICAgIGxvZygiRkFJTFVSRSIpOwogICAgIGxvZygiVVBEQVRFUkVB
RFkiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gb25lcnJv
cigpIHsKICAgICBsb2coIlNVQ0NFU1MiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0KIAogYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjaGVja2luZycsIG9uY2hl
Y2tpbmcsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJv
cnQtY2FjaGUtb25jaGVja2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25jaGVja2luZy5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uY2hl
Y2tpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sIG1hbmlmZXN0
PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25jaGVja2luZy5tYW5pZmVzdCI+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKSB7CkBAIC0xNiwyOCArMTYsMjggQEAgZnVuY3Rpb24gb25jaGVja2luZygpIHsKIGZ1bmN0
aW9uIG9ubm91cGRhdGUoKSB7CiAgICAgbG9nKCJGQUlMVVJFIik7CiAgICAgbG9nKCJub3VwZGF0
ZSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBvbmNhY2hl
ZCgpIHsKICAgICBsb2coIkZBSUxVUkUiKTsKICAgICBsb2coIkNBQ0hFRCIpOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBvbnVwZGF0ZXJlYWR5KCkgewogICAg
IGxvZygiRkFJTFVSRSIpOwogICAgIGxvZygiVVBEQVRFUkVBRFkiKTsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gb25lcnJvcigpIHsKICAgICBsb2coIlNVQ0NF
U1MiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNo
ZS5hZGRFdmVudExpc3RlbmVyKCdjaGVja2luZycsIG9uY2hlY2tpbmcsIGZhbHNlKTsKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGlu
Zy1tYW5pZmVzdC00MDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctbWFuaWZlc3QtNDA0Lmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWJvcnQt
Y2FjaGUtb25kb3dubG9hZGluZy1tYW5pZmVzdC00MDQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDggQEAKIDxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvYWJvcnQtY2FjaGUtb25kb3du
bG9hZGluZy1tYW5pZmVzdC00MDQubWFuaWZlc3QiPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCkKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkgewpAQCAtMTYs
MjggKzE2LDI4IEBAIGZ1bmN0aW9uIG9uZG93bmxvYWRpbmcoKSB7CiBmdW5jdGlvbiBvbm5vdXBk
YXRlKCkgewogICAgIGxvZygiRkFJTFVSRSIpOwogICAgIGxvZygibm91cGRhdGUiKTsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gb25jYWNoZWQoKSB7CiAgICAg
bG9nKCJGQUlMVVJFIik7CiAgICAgbG9nKCJDQUNIRUQiKTsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKIH0KIAogZnVuY3Rpb24gb251cGRhdGVyZWFkeSgpIHsKICAgICBsb2coIkZBSUxV
UkUiKTsKICAgICBsb2coIlVQREFURVJFQURZIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIG9uZXJyb3IoKSB7CiAgICAgbG9nKCJTVUNDRVNTIik7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRM
aXN0ZW5lcignZG93bmxvYWRpbmcnLCBvbmRvd25sb2FkaW5nLCBmYWxzZSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRpbmctcmVz
b3VyY2UtNDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLXJlc291cmNlLTQwNC5odG1sCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hl
LW9uZG93bmxvYWRpbmctcmVzb3VyY2UtNDA0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCAr
MSw4IEBACiA8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL2Fib3J0LWNhY2hlLW9uZG93bmxvYWRp
bmctcmVzb3VyY2UtNDA0Lm1hbmlmZXN0Ij4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKQEAgLTE2LDI4ICsx
NiwyOCBAQCBmdW5jdGlvbiBvbmRvd25sb2FkaW5nKCkgewogZnVuY3Rpb24gb25ub3VwZGF0ZSgp
IHsKICAgICBsb2coIkZBSUxVUkUiKTsKICAgICBsb2coIm5vdXBkYXRlIik7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIG9uY2FjaGVkKCkgewogICAgIGxvZygi
RkFJTFVSRSIpOwogICAgIGxvZygiQ0FDSEVEIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7CiAgICAgbG9nKCJGQUlMVVJFIik7
CiAgICAgbG9nKCJVUERBVEVSRUFEWSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
fQogCiBmdW5jdGlvbiBvbmVycm9yKCkgewogICAgIGxvZygiU1VDQ0VTUyIpOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBhcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Rvd25sb2FkaW5nJywgb25kb3dubG9hZGluZywgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbmRvd25sb2FkaW5nLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1v
bmRvd25sb2FkaW5nLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvYWJvcnQtY2FjaGUtb25kb3dubG9hZGluZy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNo
ZS1vbmRvd25sb2FkaW5nLm1hbmlmZXN0Ij4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKQEAgLTE2LDI4ICsx
NiwyOCBAQCBmdW5jdGlvbiBvbmRvd25sb2FkaW5nKCkgewogZnVuY3Rpb24gb25ub3VwZGF0ZSgp
IHsKICAgICBsb2coIkZBSUxVUkUiKTsKICAgICBsb2coIm5vdXBkYXRlIik7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIG9uY2FjaGVkKCkgewogICAgIGxvZygi
RkFJTFVSRSIpOwogICAgIGxvZygiQ0FDSEVEIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIG9udXBkYXRlcmVhZHkoKSB7CiAgICAgbG9nKCJGQUlMVVJFIik7
CiAgICAgbG9nKCJVUERBVEVSRUFEWSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
fQogCiBmdW5jdGlvbiBvbmVycm9yKCkgewogICAgIGxvZygiU1VDQ0VTUyIpOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBhcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVu
ZXIoJ2Rvd25sb2FkaW5nJywgb25kb3dubG9hZGluZywgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnBy
b2dyZXNzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvYWJvcnQtY2FjaGUtb25wcm9ncmVzcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDggKzEsOCBAQAogPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9hYm9ydC1jYWNoZS1vbnByb2dy
ZXNzLm1hbmlmZXN0Ij4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKQEAgLTE4LDI4ICsxOCwyOCBAQCBmdW5j
dGlvbiBvbnByb2dyZXNzKGV2ZW50KSB7CiBmdW5jdGlvbiBvbm5vdXBkYXRlKCkgewogICAgIGxv
ZygiRkFJTFVSRSIpOwogICAgIGxvZygibm91cGRhdGUiKTsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKIH0KIAogZnVuY3Rpb24gb25jYWNoZWQoKSB7CiAgICAgbG9nKCJGQUlMVVJFIik7
CiAgICAgbG9nKCJDQUNIRUQiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAog
ZnVuY3Rpb24gb251cGRhdGVyZWFkeSgpIHsKICAgICBsb2coIkZBSUxVUkUiKTsKICAgICBsb2co
IlVQREFURVJFQURZIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0
aW9uIG9uZXJyb3IoKSB7CiAgICAgbG9nKCJTVUNDRVNTIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRh
dGUnLCBvbm5vdXBkYXRlLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2F1dGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2F1dGguaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9hdXRoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8
Ym9keT4KIDxwPlRlc3QgdGhhdCBhcHBjYWNoZSB3b3JrcyB3aXRoIGF1dGhlbnRpY2F0aW9uLiBT
aG91bGQgc2F5IFNVQ0NFU1M6PC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIC8vIFN0b3JlIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLgpA
QCAtMjEsOCArMjEsOCBAQCBmdW5jdGlvbiBzdWNjZXNzKCkKICAgICB0ZXh0LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJTVUNDRVNTIikpOwogICAgIGRvY3VtZW50LmJvZHku
cmVwbGFjZUNoaWxkKHRleHQsIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUi
KVswXSk7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogPC9i
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9jcmFzaC13aGVuLW5h
dmlnYXRpbmctYXdheS10aGVuLWJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2NyYXNoLXdoZW4tbmF2aWdhdGluZy1hd2F5LXRoZW4tYmFjay5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2NyYXNoLXdoZW4tbmF2aWdhdGluZy1hd2F5LXRoZW4tYmFjay5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC01LDIyICs1LDIyIEBAIGZ1bmN0aW9uIG9wZW5XaW5kb3coKQogICAgIHdpbmRvdy5vcGVu
KCdyZXNvdXJjZXMvY3Jhc2gtd2hlbi1uYXZpZ2F0aW5nLWF3YXktdGhlbi1iYWNrLmh0bWwnKSAg
IAogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3Bl
bldpbmRvd3MoKTsKIH0gZWxzZSB7CiAgICAgZG9jdW1lbnQud3JpdGUoJzxkaXYgaWQ9Im1hbnVh
bC1pbnN0cnVjdGlvbnMiPkNsaWNrIDxhIGhyZWY9ImphdmFzY3JpcHQ6b3BlbldpbmRvdygpIj50
aGlzIGxpbms8L2E+IHR3aWNlLiBBIHdpbmRvdyBzaG91bGQgb3BlbiBhbmQgY2xvc2UgdHdpY2Ug
d2l0aG91dCBjcmFzaGluZy48L2Rpdj4nKQogfQogCiBmdW5jdGlvbiBjbG9zZWRXaW5kb3coKQog
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQogICAgICAgICBzZXRUaW1lb3V0KG9wZW5XaW5kb3csIDEwMCk7CiB9CiAKIDwv
c2NyaXB0PgotPGJvZHkgb25sb2FkPSJpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBv
cGVuV2luZG93KCkiPgorPGJvZHkgb25sb2FkPSJpZiAod2luZG93LnRlc3RSdW5uZXIpIG9wZW5X
aW5kb3coKSI+CiA8ZGl2PlRoaXMgdGVzdHMgdGhhdCBsb2FkaW5nIGEgcGFnZSB3aXRoIGEgbWFu
aWZlc3QsIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSBwYWdlLCBhbmQgdGhlbiBiYWNrIGRvZXMg
bm90IGNhdXNlIGEgY3Jhc2guPC9kaXY+CiA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkUgLSB0ZXN0
IG5vdCBjb21wbGV0ZWQ8L2Rpdj4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvY3JlZGVudGlhbC11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2NyZWRlbnRpYWwtdXJsLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvY3JlZGVudGlhbC11cmwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxib2R5PgogPHA+VGVzdCB0aGF0IGFw
cGxpY2F0aW9uIGNhY2hlIGRvZXNuJ3QgYmxvY2sgbG9hZGluZyByZXNvdXJjZXMgZnJvbSB0aGUg
c2FtZSBvcmlnaW4gd2l0aCBjcmVkZW50aWFsLjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiB0ZXN0KCkKQEAgLTE3LDggKzE3
LDggQEAgZnVuY3Rpb24gdGVzdCgpCiBmdW5jdGlvbiBzdWNjZXNzKCkKIHsKICAgICBkb2N1bWVu
dC5ib2R5LnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiU1VDQ0VTUyIpLCBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF0pOwotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogfQogCiBhcHBsaWNhdGlvbkNhY2hlLm9uY2FjaGVkID0gdGVzdDsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvY3lyaWxsaWMtdXJpLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9jeXJpbGxpYy11
cmkuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9jeXJpbGxpYy11cmkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAKIDxk
aXYgaWQ9cmVzdWx0PjwvZGl2PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC02Nyw4ICs2Nyw4IEBA
IGZ1bmN0aW9uIHRlc3QoKQogZnVuY3Rpb24gZnJhbWVEb25lKGV2dCkKIHsKICAgICBsb2coIkRP
TkUiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNo
ZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IHRlc3QoKSB9CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy10
aW1lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
ZGVmZXJyZWQtZXZlbnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLXRpbWVyLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGVmZXJyZWQtZXZl
bnRzLWRlbGV0ZS13aGlsZS1yYWlzaW5nLXRpbWVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTQgKzEsMTQgQEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCiB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CiAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7Ci0gIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIGtpbGxDaGlsZEZyYW1lKCkgewpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMtZGVsZXRlLXdoaWxlLXJhaXNpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVy
cmVkLWV2ZW50cy1kZWxldGUtd2hpbGUtcmFpc2luZy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RlZmVycmVkLWV2ZW50cy1kZWxldGUt
d2hpbGUtcmFpc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDE1ICs1LDE1IEBACiAgICAg
dmFyIGlzUGFyZW50RnJhbWUgPSB3aW5kb3cgPT0gd2luZG93LnRvcDsKIAogICAgIGlmIChpc1Bh
cmVudEZyYW1lKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7Ci0gICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHdpbmRvdy5hcHBsaWNhdGlvbkNhY2hlLm9u
Y2hlY2tpbmcgPSBmdW5jdGlvbigpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvZGVmZXJyZWQtZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZWZlcnJlZC1ldmVudHMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMywxNiArMywxNiBAQAogICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CiAgICAgdmFyIG9ubG9hZEhhc0JlZW5DYWxsZWQgPSBmYWxzZTsKIAotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCkKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgd2luZG93LmFwcGxpY2F0aW9uQ2FjaGUub25jaGVja2luZyA9IGZ1bmN0aW9uKCkg
ewogICAgICAgICBpZiAob25sb2FkSGFzQmVlbkNhbGxlZCkKICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyIKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogICA8L3NjcmlwdD4K
ICAgPHNjcmlwdCBzcmM9IlRISVNfRklMRV9ET0VTX05PVF9FWElTVC5qcyIgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvZGVzdHJveWVkLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9kZXN0cm95ZWQtZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kZXN0cm95ZWQtZnJhbWUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTUsOSArMTUsOSBAQCBmdW5jdGlvbiBnYygpCiAgICAgfQogfQogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgaWZyQ2FjaGU7CkBA
IC00NSw4ICs0NSw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB0cnkgeyBpZnJDYWNoZS51
cGRhdGUoKTsgfSBjYXRjaCAoZXgpIHsgfQogICAgICAgICB0cnkgeyBpZnJDYWNoZS5zd2FwQ2Fj
aGUoKTsgfSBjYXRjaCAoZXgpIHsgfQogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0sIDApOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RldGFjaGVkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGV0YWNoZWQtaWZyYW1lLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGV0YWNo
ZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8cD5UZXN0IHRo
YXQgYWNjZXNzaW5nIGEgZGV0YWNoZWQgaWZyYW1lJ3MgYXBwbGljYXRpb25DYWNoZSB3aW5kb3cg
cHJvcGVydHkgZG9lc24ndCBhc3NlcnQuIElmIHlvdSBkb24ndCBzZWUgYW4gYXNzZXJ0LCBpdCBw
YXNzZWQuPC9wPgogPGlmcmFtZSBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdCgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2RpZmZlcmVudC1odHRwcy1vcmlnaW4tcmVzb3VyY2UtbWFpbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGlmZmVy
ZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS1tYWluLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1y
ZXNvdXJjZS1tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTUgQEAKIDxodG1s
PgogPGJvZHk+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IH0KIAogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihlKSB7CiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9IGUuZGF0YTsg
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9LCBmYWxzZSk7CiA8L3NjcmlwdD4KIDxw
PlRlc3QgdGhhdCBhIHJlc291cmNlIGZyb20gYSBkaWZmZXJlbnQgaHR0cHMgb3JpZ2luIGlzIG5v
dCBjYWNoZWQuPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9kaWZm
ZXJlbnQtb3JpZ2luLW1hbmlmZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9kaWZmZXJlbnQtb3JpZ2luLW1hbmlmZXN0Lmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGlmZmVyZW50LW9y
aWdpbi1tYW5pZmVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPHA+VGVz
dCB0aGF0IGEgZGlmZmVyZW50IG9yaWdpbiBtYW5pZmVzdCBpcyBjb21wbGV0ZWx5IGlnbm9yZWQu
PC9wPgogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIH0KIAogdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKTsKQEAgLTI3LDggKzI3LDggQEAgZnVuY3Rpb24gZG9uZSgpCiAgICAgaWYg
KHJlc3VsdC5pbm5lckhUTUwgPT0gb3JpZ2luYWxSZXN1bHQpCiAgICAgICAgIHJlc3VsdC5pbm5l
ckhUTUwgPSBhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cyA9PSBhcHBsaWNhdGlvbkNhY2hlLlVOQ0FD
SEVEID8gIlBBU1MiIDogIkZBSUw6IGNhY2hlIHN0YXR1cyBpbiBub3QgVU5DQUNIRUQiOwogCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHNldFRpbWVvdXQoZG9uZSwgMTAwKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGlmZmVyZW50LXNjaGVtZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZGlmZmVy
ZW50LXNjaGVtZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2RpZmZlcmVudC1zY2hlbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5
ICsyLDkgQEAKIDxib2R5PgogPHA+VGVzdCB0aGF0IGFwcGxpY2F0aW9uIGNhY2hlIGRvZXNuJ3Qg
YmxvY2sgbG9hZGluZyByZXNvdXJjZXMgd2l0aCBkaWZmZXJlbnQgc2NoZW1lcy48L3A+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24g
dGVzdCgpCkBAIC0xNyw4ICsxNyw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogZnVuY3Rpb24gc3VjY2Vz
cygpCiB7CiAgICAgZG9jdW1lbnQuYm9keS5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIlNVQ0NFU1MiKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIp
WzBdKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNo
ZS5vbmNhY2hlZCA9IHRlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L2Rpc2FibGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2Rpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5
IEBACiA8cD5UZXN0IHRvIGVuc3VyZSB0aGUgdGhlIHdpbmRvdy5hcHBsaWNhdGlvbkNhY2hlIGF0
dHJpYnV0ZSBpcyBkZWZpbmVkIGJ1dCBub24tZnVuY3Rpb25hbCB3aXRoIHRoZSBmZWF0dXJlIGRp
c2FibGVkLjwvcD4KIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkIiwgZmFsc2UpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQiLCBm
YWxzZSk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9kb2N1bWVudC13cml0ZS1odG1sLWVsZW1lbnQtMi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZG9jdW1lbnQtd3JpdGUtaHRtbC1lbGVtZW50LTIu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9kb2N1bWVudC13cml0ZS1odG1sLWVsZW1lbnQtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDggKzEsOCBAQAogPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9kb2N1bWVudC13cml0ZS1odG1s
LWVsZW1lbnQubWFuaWZlc3QiPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMTAsOCArMTAsOCBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICBkb2N1bWVudC53cml0ZSgiU1VDQ0VTUywgbm8gYXNzZXJ0aW9uIGZhaWx1
cmUiKTsKICAgICBkb2N1bWVudC53cml0ZSgiPGJyPmFwcGxpY2F0aW9uQ2FjaGUuc3RhdHVzID09
ICIgKyBhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cyk7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IHRlc3Q7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2RvY3VtZW50LXdyaXRlLWh0bWwtZWxlbWVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZG9jdW1l
bnQtd3JpdGUtaHRtbC1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZG9jdW1lbnQtd3JpdGUtaHRtbC1lbGVtZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKQEAg
LTE5LDggKzE5LDggQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKIAogICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LndyaXRlKCJET05FLiBQYXNzZWQgaWYg
dGhlcmUgd2VyZSBubyBhbGVydHMgZGlzcGxheWVkLiIpOwotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAxMDApOwogfQogPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2R5bmFtaWMtZW50cmllcy1uby1jYWNo
ZS5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvZHluYW1pYy1lbnRyaWVzLW5vLWNhY2hlLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZHluYW1pYy1lbnRyaWVz
LW5vLWNhY2hlLmh0bWwtZGlzYWJsZWQJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiBp
cyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBjYWNoZS48L3A+CiA8ZGl2IGlkPSJyZXN1bHQiPjwv
ZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIHsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZW1wdHktbWFuaWZlc3QuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2VtcHR5LW1h
bmlmZXN0Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvZW1wdHktbWFuaWZlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxNyArNCwx
NyBAQAogPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFPC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gY2FjaGVkKCkKIHsKICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1Mn
OwogICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBhcHBsaWNhdGlvbkNh
Y2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIGNhY2hlZCwgZmFsc2UpOwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWlsLW9uLXVwZGF0ZS0yLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWlsLW9uLXVwZGF0ZS0y
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvZmFpbC1vbi11cGRhdGUtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAog
PGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9mYWlsLW9uLXVwZGF0ZS0yLnBocCI+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gc2V0
TWFuaWZlc3REZWxldGVkKHN0YXRlKQpAQCAtMzYsOCArMzYsOCBAQCBmdW5jdGlvbiBzdWJmcmFt
ZUxvYWRlZCgpCiB7CiAgICAgaWYgKCEtLXN1YmZyYW1lc0xlZnQpIHsKICAgICAgICAgZG9jdW1l
bnQud3JpdGUoJzxwPlNVQ0NFU1M6IE5vIGNyYXNoLjwvcD4nKTsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ZhaWwtb24tdXBkYXRlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWlsLW9uLXVwZGF0ZS5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ZhaWwtb24t
dXBkYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbCBtYW5pZmVz
dD0icmVzb3VyY2VzL2ZhaWwtb24tdXBkYXRlLnBocCI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gc2V0TWFuaWZlc3REZWxldGVk
KHN0YXRlKQpAQCAtMjAsNyArMjAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBhcHBsaWNhdGlv
bkNhY2hlLnVwZGF0ZSgpOwogICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdkYXRhOnRleHQvaHRtbCw8
cD5TVUNDRVNTOiBObyBjcmFzaC48L3A+JyArIAogICAgICAgICAnPHNjcmlwdD4nICsKLSAgICAg
ICAgICAgICdpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7JyArCisgICAgICAgICAgICAnaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsnICsKICAgICAgICAgJzwvc2NyaScgKyAncHQ+JzsK
IH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWxsYmFjay5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZmFsbGJhY2su
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9mYWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogPGRpdiBpZD1y
ZXN1bHQ+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKQEAgLTE0Miw4ICsxNDIsOCBAQCBmdW5j
dGlvbiB0ZXN0NigpCiAgICAgfQogCiAgICAgbG9nKGhhZEVycm9yID8gIkZBSUxVUkUiIDogIlNV
Q0NFU1MiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25D
YWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IHRlc3QoKSB9CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24tZmFsbGJhY2suaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24tZmFsbGJhY2suaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3Jl
aWduLWZhbGxiYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiBBcHBsaWNh
dGlvbiBDYWNoZSBjcmFzaCB3aGVuIGEgZmFsbGJhY2sgZG9jdW1lbnQgaGFzIGEgbWFuaWZlc3Qg
VVJMLjwvcD4KIDxkaXYgaWQ9InJlc3VsdCI+VGVzdGluZy4uLjwvZGl2PgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIApAQCAtMzQsOCArMzQsOCBA
QCBmdW5jdGlvbiBmcmFtZURvbmUoKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aHJvdyAi
VHJ5IGFnYWluIjsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICB9IGNhdGNoIChleCkgewogICAgICAgICAvLyBOb3QgZG9uZSB5ZXQuCiAgICAgICAg
IHNldFRpbWVvdXQoZnJhbWVEb25lLCAxMDApOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWlnbi1p
ZnJhbWUtbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogPGRpdiBpZD1y
ZXN1bHQ+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTMyLDcgKzMyLDcgQEAgYXBwbGlj
YXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdvYnNvbAogYXBwbGljYXRpb25DYWNoZS5hZGRF
dmVudExpc3RlbmVyKCdub3VwZGF0ZScsIGZ1bmN0aW9uKCkgeyBsb2coIm5vdXBkYXRlIik7IHRl
c3QoKSB9LCBmYWxzZSk7CiBhcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hl
ZCcsIGZ1bmN0aW9uKCkgeyBsb2coImNhY2hlZCIpOyB0ZXN0KCkgfSwgZmFsc2UpOwogCi13aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKCkgeyBsb2coIlNVQ0NFU1Mi
KTsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpIH0sIGZhbHNlKTsKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgZnVuY3Rpb24oKSB7IGxvZygiU1VDQ0VTUyIpOyBpZiAod2luZG93LnRlc3RSdW5uZXIpIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpIH0sIGZhbHNlKTsKIAogPC9zY3JpcHQ+CiA8L2JvZHk+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2lkZW1wb3RlbnQtdXBkYXRlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pZGVtcG90
ZW50LXVwZGF0ZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2lkZW1wb3RlbnQtdXBkYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUs
OSArNSw5IEBACiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAt
NDAsOCArNDAsOCBAQCBmdW5jdGlvbiBkb25lKCkKIHsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgewogICAgICAgICBsb2coIkRPTkUiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgfSwgMTApOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2luc2VydC1odG1sLWVsZW1lbnQtd2l0aC1tYW5pZmVzdC0yLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnNlcnQtaHRt
bC1lbGVtZW50LXdpdGgtbWFuaWZlc3QtMi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2luc2VydC1odG1sLWVsZW1lbnQtd2l0aC1tYW5p
ZmVzdC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxkaXY+
PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0K
IAogdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKVswXTsKQEAg
LTIzLDggKzIzLDggQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKIAogICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LndyaXRlKCJET05FLiBQYXNzZWQgaWYg
dGhlcmUgd2VyZSBubyBhbGVydHMgZGlzcGxheWVkLiIpOwotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAxMDApOwogfQogPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2luc2VydC1odG1sLWVsZW1lbnQtd2l0
aC1tYW5pZmVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvaW5zZXJ0LWh0bWwtZWxlbWVudC13aXRoLW1hbmlmZXN0Lmh0bWwJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvaW5zZXJ0LWh0bWwtZWxl
bWVudC13aXRoLW1hbmlmZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8
aHRtbD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
CiBkb2N1bWVudC5yZW1vdmVDaGlsZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwpAQCAtMjQs
OCArMjQsOCBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQogCiAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIkRPTkUuIFBhc3NlZCBpZiB0aGVy
ZSB3ZXJlIG5vIGFsZXJ0cyBkaXNwbGF5ZWQuIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIDEwMCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvaW50ZXJydXB0ZWQtdXBkYXRlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11
cGRhdGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsy
LDkgQEAKIDxwPlRlc3QgdGhhdCBhbiBhcHBsaWNhdGlvbiBjYWNoZSB1cGRhdGUgd29ya3MgYWdh
aW4gYWZ0ZXIgaW50ZXJydXB0aW9uLjwvcD4KIDxwcmUgaWQ9bG9nPjwvcHJlPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyht
c2cpCkBAIC00MywyNCArNDMsMjQgQEAgZnVuY3Rpb24gb25ub3VwZGF0ZSgpCiB7CiAgICAgbG9n
KCJOT1VQREFURSIpOwogICAgIGxvZygiXG5GQUlMIC0gdGhlIGNhY2hlIHdhcyBhbHJlYWR5IHBy
ZXNlbnQsIHNvIHdlIGNvdWxkbid0IHRlc3QgaW5pdGlhbCBsb2FkaW5nIik7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIG9uY2FjaGVkKCkKIHsKICAgICBsb2co
IkNBQ0hFRCIpOwogICAgIGxvZygiXG5QQVNTIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIG9uZXJyb3IoKQogewogICAgIGxvZygiRVJST1IiKTsKICAgICBs
b2coIlxuRkFJTCIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvbG9hZC1mcm9tLWFwcGNhY2hlLWRlZmVy
LXJlc3VtZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvbG9hZC1mcm9tLWFwcGNhY2hlLWRlZmVyLXJlc3VtZS1jcmFzaC5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2xvYWQtZnJv
bS1hcHBjYWNoZS1kZWZlci1yZXN1bWUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
NiArMSwxNiBAQAogPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9sb2FkLWZyb20tYXBwY2FjaGUt
ZGVmZXItcmVzdW1lLWNyYXNoLm1hbmlmZXN0Ij4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRV
c2VEZWZlcnJlZEZyYW1lTG9hZGluZyh0cnVlKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLnNldFVzZURlZmVycmVkRnJh
bWVMb2FkaW5nKHRydWUpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiBmdW5jdGlvbiBmaW5pc2hJZk5lZWRlZCgpIHsKICAg
ICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2gpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9ICJTVUNDRVNTIjsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQogZnVuY3Rpb24gcnVuKCkgewpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9sb2NhbC1jb250ZW50Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9sb2NhbC1jb250
ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvbG9jYWwtY29udGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAog
PHA+U2hvdWxkIHNheSBTVUNDRVNTOjwvcD4KIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CiA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0yMSw4ICsyMSw4IEBAIGZ1bmN0
aW9uIG5vdXBkYXRlKCkKICAgICBpZnIub25sb2FkID0gZnJhbWVDcmVhdGVkOwogICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGxvZygiU1VDQ0VTUyIpOwotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSwgMzAwKTsKICAgICAg
ICAgCiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnIpOwpAQCAtMzEsOCArMzEsOCBA
QCBmdW5jdGlvbiBub3VwZGF0ZSgpCiBmdW5jdGlvbiBmcmFtZUNyZWF0ZWQoKQogewogICAgIGxv
ZygiRkFJTFVSRTogQSBsb2NhbCByZXNvdXJjZSB3YXMgb3BlbmVkIGluIGFuIGlmcmFtZSIpOwot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiByZWxvYWQoKQpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9tYWluLXJlc291cmNlLWhhc2guaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL21haW4tcmVz
b3VyY2UtaGFzaC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL21haW4tcmVzb3VyY2UtaGFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01
LDkgKzUsOSBAQAogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAg
LTMzLDggKzMzLDggQEAgZnVuY3Rpb24gZnJhbWVDcmVhdGVkKCkKICAgICB9IGVsc2UgewogICAg
ICAgICBsb2coIlNVQ0NFU1MiKTsKICAgICAgICAgc2V0TmV0d29ya0VuYWJsZWQodHJ1ZSk7Ci0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCkKICAgICB9CiB9CiAKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvbWFpbi1yZXNvdXJjZS1yZWRpcmVj
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvbWFp
bi1yZXNvdXJjZS1yZWRpcmVjdC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL21haW4tcmVzb3VyY2UtcmVkaXJlY3QuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxwPlRlc3QgdGhhdCBhcHBsaWNhdGlvbiBjYWNoZSBp
cyBjb25zdWx0ZWQgYWdhaW4gYWZ0ZXIgYSByZWRpcmVjdCByZXNwb25zZS48L3A+CiA8ZGl2IGlk
PSJyZXN1bHQiPlRlc3RpbmcuLi48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogfQogCiBmdW5jdGlvbiBzZXROZXR3b3JrRW5hYmxlZChzdGF0ZSkK
QEAgLTI3LDkgKzI3LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKIGZ1bmN0aW9uIGRvbmUoKQogewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICAgICAgYXBwbGljYXRpb25DYWNoZS5vbmVycm9yID0gbnVsbDsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAgICAgc2V0TmV0d29ya0VuYWJsZWQodHJ1ZSk7CiB9
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL21hbmlmZXN0LWNvbnRhaW5p
bmctaXRzZWxmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9tYW5pZmVzdC1jb250YWluaW5nLWl0c2VsZi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL21hbmlmZXN0LWNvbnRhaW5pbmctaXRz
ZWxmLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTcgKzQsMTcgQEAKIDxkaXYgaWQ9InJlc3Vs
dCI+RkFJTFVSRTwvZGl2PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiB9CiAKIGZ1bmN0aW9uIGNhY2hlZCgpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsKICAgICAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVy
KCdjYWNoZWQnLCBjYWNoZWQsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvbWFuaWZlc3QtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvbWFuaWZlc3QtcGFyc2luZy5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL21hbmlmZXN0LXBhcnNpbmcu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIDxkaXYgaWQ9cmVzdWx0PjwvZGl2
PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAog
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC01Myw4ICs1Myw4IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgIH0KIAogICAgIGxvZyhoYWRFcnJvciA/ICJGQUlMVVJFIiA6ICJTVUNDRVNTIik7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0
ZSA9IGZ1bmN0aW9uKCkgeyB0ZXN0KCkgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9tYW5pZmVzdC1yZWRpcmVjdC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9tYW5pZmVzdC1yZWRpcmVjdC0yLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvbWFuaWZlc3QtcmVk
aXJlY3QtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogPHA+U2hvdWxkIHNh
eSBTVUNDRVNTOjwvcD4KIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCkKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQorICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAg
LTI3LDggKzI3LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgZWxzZQogICAgICAgICBsb2coIlNV
Q0NFU1MiKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBhcHBsaWNhdGlv
bkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIGZ1bmN0aW9uKCkgeyBsb2coImNhY2hl
ZCIpOyBjYWNoZUNhbGxiYWNrKCkgfSwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9tYW5pZmVzdC1yZWRpcmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvbWFuaWZlc3QtcmVkaXJlY3QuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9tYW5pZmVzdC1y
ZWRpcmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogPHA+U2hvdWxkIHNh
eSBTVUNDRVNTOjwvcD4KIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCkKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQorICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAg
LTI3LDggKzI3LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgZWxzZQogICAgICAgICBsb2coIlNV
Q0NFU1MiKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBhcHBsaWNhdGlv
bkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIGZ1bmN0aW9uKCkgeyBsb2coImNhY2hl
ZCIpOyBjYWNoZUNhbGxiYWNrKCkgfSwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9tYW5pZmVzdC13aXRoLWVtcHR5LWZpbGUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL21hbmlmZXN0LXdpdGgtZW1wdHktZmls
ZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL21hbmlmZXN0LXdpdGgtZW1wdHktZmlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE2
ICsyLDE2IEBACiA8ZGl2PlRoaXMgdGVzdHMgdGhhdCBhIG1hbmlmZXN0IHRoYXQgY29udGFpbnMg
YW4gZW1wdHkgZmlsZSB3aWxsIG5vdCBjcmFzaCB0aGUgYnJvd3Nlci48L2Rpdj4KIDxkaXYgaWQ9
InJlc3VsdCI+RkFJTFVSRTwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGNhY2hlZCgpCiB7CiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVy
KCdjYWNoZWQnLCBjYWNoZWQsIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvbWF4LXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL21heC1zaXplLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvbWF4LXNpemUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwxOCArMSwxOCBAQAogPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9tYXhzaXplLm1hbmlmZXN0
Ij4KIDxib2R5Pg0KIDxzY3JpcHQ+DQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXBwQ2FjaGVNYXhpbXVtU2l6
ZSgxMCAqIDEwMjQpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBDYWNoZU1heGlt
dW1TaXplKDEwICogMTAyNCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBs
b2cobWVzc2FnZSkKICAgICB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSgxMDAgKiAxMDI0ICogMTAyNCk7Ci0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBDYWNoZU1heGltdW1TaXpl
KDEwMCAqIDEwMjQgKiAxMDI0KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL25hdmlnYXRpbmctYXdheS13aGlsZS1jYWNoZS1hdHRlbXB0LWluLXByb2dyZXNzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9uYXZpZ2F0aW5n
LWF3YXktd2hpbGUtY2FjaGUtYXR0ZW1wdC1pbi1wcm9ncmVzcy5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL25hdmlnYXRpbmctYXdheS13
aGlsZS1jYWNoZS1hdHRlbXB0LWluLXByb2dyZXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTQgKzEsMTQgQEAKIDxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvbmF2aWdhdGluZy1hd2F5LXdo
aWxlLWNhY2hlLWF0dGVtcHQtaW4tcHJvZ3Jlc3MubWFuaWZlc3QiPgogCiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIG5hdmlnYXRlQXdh
eSgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICBlbHNlCiAgICAgICAgIHdp
bmRvdy5sb2NhdGlvbi5ocmVmID0gImFib3V0OmJsYW5rIgogfQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9ub24taHRtbC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL25vbi1odG1sLnhodG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL25vbi1odG1sLnhodG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC02LDkgKzYsOSBAQAogPHA+U2hvdWxkIHNheSBTVUNDRVNTOjwvcD4KIDxk
aXYgaWQ9InJlc3VsdCI+PC9kaXY+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCkBAIC04Miw5ICs4Miw5IEBAIGZ1bmN0aW9uIGZyYW1lQ3JlYXRlZCgpCiAgICAgZWxzZQog
ICAgICAgICBsb2coIkZBSUw6IEZyYW1lLm9ubG9hZCB3YXMgY2FsbGVkLCBidXQgdGhlIGltYWdl
IGRvZXNuJ3Qgc2VlbSB0byBiZSBsb2FkZWQuIik7CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAg
ICBhcHBsaWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBudWxsOwotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vZmZsaW5l
LWFjY2Vzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvb2ZmbGluZS1hY2Nlc3MuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9vZmZsaW5lLWFjY2Vzcy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC01LDkgKzUsOSBAQAogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
QEAgLTQxLDggKzQxLDggQEAgZnVuY3Rpb24gZnJhbWVDcmVhdGVkKCkKICAgICAgICAgY3JlYXRl
RnJhbWUoKTsKICAgICB9IGVsc2UgewogICAgICAgICBsb2coIlNVQ0NFU1MiKTsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKQorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKQogICAgIH0KIH0KIApJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vbmxpbmUtZmFsbGJhY2stbGF5ZXJpbmcuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29ubGluZS1m
YWxsYmFjay1sYXllcmluZy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL29ubGluZS1mYWxsYmFjay1sYXllcmluZy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkgewpAQCAt
MTMsOCArMTMsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkgewogCiBmdW5jdGlvbiB0ZXN0Q29t
cGxldGUocmVzdWx0KSB7CiAgICAgbG9nKHJlc3VsdCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBzeW5jR2V0KHVybCkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9vbmxpbmUtd2hpdGVsaXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vbmxpbmUtd2hpdGVsaXN0Lmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb25saW5lLXdo
aXRlbGlzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogCiA8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTY1LDggKzY1LDggQEAgZnVuY3Rpb24g
dGVzdCgpCiAKICAgICBsb2coaGFkRXJyb3IgPyAiRkFJTCIgOiAiUEFTUyIpOwogCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0
ZW5lcignY2FjaGVkJywgdGVzdCwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMSwxOSArMTEsMTkgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
IC8vIFN0YXJ0IGFuZCBlbmQuCiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpOworICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgICAgfQogCiAgICAgYWRkSUZyYW1lV2l0aEFwcENhY2hlKCk7CiB9CiAKIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0
aW9uIGFkZElGcmFtZVdpdGhBcHBDYWNoZSgpIHsKQEAgLTM2LDcgKzM2LDcgQEAgZnVuY3Rpb24g
YWRkSUZyYW1lV2l0aEFwcENhY2hlKCkgewogICAgICAgICBsb2coZXZlbnQuZGF0YSk7CiAgICAg
ICAgIGlmIChldmVudC5kYXRhID09PSAiUEFTUyAtIGNhY2hlZCBpZnJhbWUtMSIpIHsKICAgICAg
ICAgICAgIGxvZygiY2xlYXJpbmcgY2FjaGUgZm9yIG9yaWdpbiIpOwotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKCJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKICAgICAgICAgICAgIHZh
ciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYWNoZWRGcmFtZScpOwogICAgICAg
ICAgICAgZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgiYXBwY2FjaGVfc3RhdHVzIiwg
IioiKTsKICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09PSAiYXBwY2FjaGVfc3RhdHVz
PTUiKXsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3Rh
LWNvbnRpbnVlZC1kb3dubG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQt
ZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZlc3RzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3du
bG9hZC1tdWx0aXBsZS1tYW5pZmVzdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsMjAgKzEx
LDIwIEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CiAvLyBTdGFydCBhbmQgZW5kLgogCiBmdW5j
dGlvbiBzdGFydFRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVz
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVs
ZWdhdGVDYWxsYmFja3MoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKDIwKjEwMjQpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFw
cGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpOworICAgICAgICB0ZXN0UnVubmVyLnNl
dEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgyMCoxMDI0KTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IH0KIAogICAgIGFkZEZpcnN0SUZyYW1lKCk7CiB9CiAKIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIC8vIFN0YWdlcy4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3du
bG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
b3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQt
ZG93bmxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsMjAgKzExLDIwIEBAIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKSB7CiAvLyBTdGFydCBhbmQgZW5kLgogCiBmdW5jdGlvbiBzdGFydFRlc3Qo
KSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5jbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7Ci0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3Mo
KTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKDEwMjQpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhckFsbEFwcGxpY2F0
aW9uQ2FjaGVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxl
Z2F0ZUNhbGxiYWNrcygpOworICAgICAgICB0ZXN0UnVubmVyLnNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YSgxMDI0KTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGFkZElGcmFtZSgp
OwogfQogCiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCiAvLyBTdGFnZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL29yaWdpbi1xdW90YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTExLDIxICsxMSwyMSBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkgewogLy8gU3RhcnQg
YW5kIGVuZC4KIAogZnVuY3Rpb24gc3RhcnRUZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBbGxB
cHBsaWNhdGlvbkNhY2hlcygpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXBw
bGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKTsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKDIw
KjEwMjQpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhckFsbEFwcGxpY2F0aW9uQ2Fj
aGVzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNh
bGxiYWNrcygpOworICAgICAgICB0ZXN0UnVubmVyLmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNh
dGlvbkNhY2hlUXVvdGEoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoMjAqMTAyNCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBhZGRGaXJz
dElGcmFtZSgpOwogfQogCiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogfQogCiAvLyBTdGFnZXMuCkBAIC00OSw3ICs0OSw3IEBAIGZ1bmN0aW9u
IGFkZFNlY29uZElGcmFtZSgpIHsKICAgICAvLyBFeHBlY3RlZCB0byBmYWlsLCB0aGVuIGluY3Jl
YXNlIHRoZSBxdW90YS4KICAgICBhZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKCJyZXNvdXJjZXMv
cXVvdGEtb3JpZ2luLWlmcmFtZS0yLmh0bWwiLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICBs
b2coZXZlbnQuZGF0YSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSgxMDAqMTAyNCk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKDEwMCoxMDI0KTsKICAgICAgICAgYWRkVGhpcmRJRnJh
bWUoKTsKICAgICB9KTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
b3JpZ2luLXVzYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9vcmlnaW4tdXNhZ2UuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tdXNhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTMsMjAgKzEzLDIwIEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CiAvLyBTdGFydCBhbmQg
ZW5kLgogCiBmdW5jdGlvbiBzdGFydFRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckFsbEFwcGxp
Y2F0aW9uQ2FjaGVzKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOwogICAgICAgICBsb2coIkNsZWFy
ZWQgYXBwbGljYXRpb24gY2FjaGUiKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXBwbGljYXRpb25DYWNoZURl
bGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBhZGRGaXJzdElG
cmFtZSgpOwogfQogCiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfQogCiAvLyBTdGFnZXMuCkBAIC00Miw3ICs0Miw3IEBAIGZ1bmN0aW9uIGFk
ZEZpcnN0SUZyYW1lKCkgewogICAgIC8vIEV4cGVjdGVkIHRvIHN1Y2NlZWQuCiAgICAgYWRkSUZy
YW1lV2l0aENvbnRpbnVhdGlvbigicmVzb3VyY2VzL29yaWdpbi11c2FnZS1pZnJhbWUtMS5odG1s
IiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgbG9nKGV2ZW50LmRhdGEpOwotICAgICAgICB2
YXIgdXNhZ2UgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5hcHBsaWNhdGlvbkNhY2hlRGlza1VzYWdl
Rm9yT3JpZ2luKGRydFVSTCk7CisgICAgICAgIHZhciB1c2FnZSA9IHRlc3RSdW5uZXIuYXBwbGlj
YXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbihkcnRVUkwpOwogICAgICAgICBsb2coIlVzYWdl
IGZvciAiICsgZHJ0VVJMICsgIiBhZnRlciBmaXJzdCBmcmFtZSBpcyBiZXR3ZWVuIDE1MDAwIGFu
ZCAxNjAwMCBieXRlczogIiArICgodXNhZ2UgPiAxNTAwMCkgJiYgKHVzYWdlIDwgMTYwMDApKSk7
CiAgICAgICAgIGFkZFNlY29uZElGcmFtZSgpOwogICAgIH0pOwpAQCAtNTEsMTMgKzUxLDEzIEBA
IGZ1bmN0aW9uIGFkZEZpcnN0SUZyYW1lKCkgewogZnVuY3Rpb24gYWRkU2Vjb25kSUZyYW1lKCkg
ewogICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9vcmlnaW4tdXNhZ2Ut
aWZyYW1lLTIuaHRtbCIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIGxvZyhldmVudC5kYXRh
KTsKLSAgICAgICAgdmFyIHVzYWdlID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuYXBwbGljYXRpb25D
YWNoZURpc2tVc2FnZUZvck9yaWdpbihkcnRVUkwpOworICAgICAgICB2YXIgdXNhZ2UgPSB0ZXN0
UnVubmVyLmFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oZHJ0VVJMKTsKICAgICAg
ICAgbG9nKCJVc2FnZSBmb3IgIiArIGRydFVSTCArICIgYWZ0ZXIgc2Vjb25kIGZyYW1lIGlzIGJl
dHdlZW4gMzAwMDAgYW5kIDMyMDAwIGJ5dGVzOiAiICsgKCh1c2FnZSA+IDMwMDAwKSAmJiAodXNh
Z2UgPCAzMjAwMCkpKTsKIAogICAgICAgICBsb2coIlJlbW92aW5nIEFwcGxpY2F0aW9uIENhY2hl
IGZvciAiICsgZHJ0VVJMKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBcHBs
aWNhdGlvbkNhY2hlRm9yT3JpZ2luKGRydFVSTCk7CisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJB
cHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGRydFVSTCk7CiAKLSAgICAgICAgbG9nKCJVc2FnZSBm
b3IgIiArIGRydFVSTCArICI6ICIgKyBsYXlvdXRUZXN0Q29udHJvbGxlci5hcHBsaWNhdGlvbkNh
Y2hlRGlza1VzYWdlRm9yT3JpZ2luKGRydFVSTCkpOworICAgICAgICBsb2coIlVzYWdlIGZvciAi
ICsgZHJ0VVJMICsgIjogIiArIHRlc3RSdW5uZXIuYXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZv
ck9yaWdpbihkcnRVUkwpKTsKIAogICAgICAgICBmaW5pc2hUZXN0KCk7CiAgICAgfSk7CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbnMtd2l0aC1hcHBjYWNoZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lu
cy13aXRoLWFwcGNhY2hlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lucy13aXRoLWFwcGNhY2hlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDcgKzEwLDcgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKIAogZnVuY3Rpb24g
aGFuZGxlTWVzc2FnZShldmVudCkgewogICAgIGlmIChldmVudC5kYXRhID09PSAiY3JlYXRlZF9j
YWNoZSIpIHsKLSAgICAgICAgbG9nKCJPcmlnaW5zIHdpdGggYXBwbGljYXRpb24gY2FjaGUgYWZ0
ZXIgZnJhbWUgd2FzIGNhY2hlZDogIiArIGxheW91dFRlc3RDb250cm9sbGVyLm9yaWdpbnNXaXRo
QXBwbGljYXRpb25DYWNoZSgpKTsKKyAgICAgICAgbG9nKCJPcmlnaW5zIHdpdGggYXBwbGljYXRp
b24gY2FjaGUgYWZ0ZXIgZnJhbWUgd2FzIGNhY2hlZDogIiArIHRlc3RSdW5uZXIub3JpZ2luc1dp
dGhBcHBsaWNhdGlvbkNhY2hlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvZygicmVjZWl2
ZWQgaW52YWxpZCBtZXNzYWdlIGZyb20gZnJhbWUgJyIgKyBldmVudC5kYXRhICsgIiciKTsKICAg
ICB9CkBAIC0yOCwxMiArMjgsMTIgQEAgZnVuY3Rpb24gYWRkSUZyYW1lV2l0aENhY2hlKCkKIC8v
IFN0YXJ0IGFuZCBlbmQuCiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNs
ZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsKLSAgICAgICAgbG9nKCJPcmlnaW5zIHdpdGggYXBw
bGljYXRpb24gY2FjaGUgYWZ0ZXIgZGVsZXRpb246ICIgKyBsYXlvdXRUZXN0Q29udHJvbGxlci5v
cmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUoKSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgICAgICBsb2co
Ik9yaWdpbnMgd2l0aCBhcHBsaWNhdGlvbiBjYWNoZSBhZnRlciBkZWxldGlvbjogIiArIHRlc3RS
dW5uZXIub3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKCkpOworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgIH0KIAogICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlOwpAQCAtNDIsOCAr
NDIsOCBAQCBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CiB9CiAKIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3Vu
dGVyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICsxLDE2
IEBACiA8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZlc3Qi
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIg
ZXhwZWN0ZWRUb3RhbCA9IDIKIHZhciBldmVudHNSZWNlaXZlZCA9IDA7CiAKIGZ1bmN0aW9uIGRv
bmUoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHByb2dy
ZXNzKGV2ZW50KQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZWxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3JlbG9h
ZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3JlbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogPGRpdiBpZD1y
ZXN1bHQ+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTI3LDggKzI3LDggQEAgZnVuY3Rp
b24gcmVjZWl2ZWRNZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgIHN0YXRlID0gMjsKICAgICAgICAg
c2V0VGltZW91dCgiZnJhbWVzWzBdLnRlc3QoKSIsIDApOwogICAgIH0gZWxzZSBpZiAoc3RhdGUg
PT0gMikgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVtb3ZlLWNh
Y2hlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZW1vdmUtY2FjaGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9yZW1vdmUtY2FjaGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSAr
MTEsOSBAQAogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTg0
LDggKzg0LDggQEAgZnVuY3Rpb24gdGVzdDQoKQogZnVuY3Rpb24gdGVzdDUoKQogewogICAgIGxv
ZygiU1VDQ0VTUyIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlv
biByZXNldE1hbmlmZXN0KCkKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cmVzb3VyY2UtcmVkaXJlY3QtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2UtcmVkaXJlY3QtMi5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlLXJlZGlyZWN0LTIu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIDxwPlNob3VsZCBzYXkgU1VDQ0VT
Uzo8L3A+CiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0yNyw4ICsy
Nyw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGVsc2UKICAgICAgICAgbG9nKCJTVUNDRVNTIik7
CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNoZS5h
ZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBmdW5jdGlvbigpIHsgbG9nKCJjYWNoZWQiKTsgY2Fj
aGVDYWxsYmFjaygpIH0sIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2UtcmVkaXJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2UtcmVkaXJlY3Qu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIDxwPlNob3VsZCBzYXkgU1VDQ0VT
Uzo8L3A+CiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0yNyw4ICsy
Nyw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGVsc2UKICAgICAgICAgbG9nKCJTVUNDRVNTIik7
CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNoZS5h
ZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBmdW5jdGlvbigpIHsgbG9nKCJjYWNoZWQiKTsgY2Fj
aGVDYWxsYmFjaygpIH0sIGZhbHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9zaW1wbGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDgg
QEAKIDxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvc2ltcGxlLm1hbmlmZXN0Ij4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCkKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gY2FjaGVk
KCkKQEAgLTQxLDggKzQxLDggQEAgZnVuY3Rpb24gY2FjaGVkKCkKICAgICAKICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlNVQ0NFU1MiCiAgICAgCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZl
bnRMaXN0ZW5lcignY2FjaGVkJywgY2FjaGVkLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL3RvcC1mcmFtZS0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS90b3AtZnJhbWUtMS5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3RvcC1mcmFtZS0xLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTgsOSArOCw5IEBAIGFueXdheSwgc28gaXQgY2FuIGFsc28gcGFz
cyBpZiB0aGUgVUEgZmEKIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogCiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
CkBAIC0zMSw3ICszMSw3IEBAIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2Fj
aGUKIGFwcGxpY2F0aW9uQ2FjaGUub251cGRhdGVyZWFkeSA9IGZ1bmN0aW9uKCkgeyBsb2coIkZB
SUw6IHJlY2VpdmVkIHVuZXhwZWN0ZWQgdXBkYXRlcmVhZHkgZXZlbnQiKSB9CiBhcHBsaWNhdGlv
bkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgbG9nKCJGQUlMOiByZWNlaXZlZCB1bmV4cGVj
dGVkIGVycm9yIGV2ZW50IikgfQogCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IGZ1bmN0aW9uKCkgeyBsb2coIlNVQ0NFU1MiKTsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpIH0sIGZhbHNlKTsKK3dpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oKSB7IGxvZygiU1VDQ0VTUyIp
OyBpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpIH0sIGZhbHNl
KTsKIAogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3RvcC1mcmFtZS0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS90b3AtZnJhbWUtMi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3RvcC1mcmFtZS0yLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTYsOSArNiw5IEBAIGNvbnRhaW5zIGl0cyByZXNvdXJjZS48L3A+CiA8ZGl2IGlkPXJl
c3VsdD48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlv
biBsb2cobWVzc2FnZSkKIGZ1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCiB7CiAgICAgLy8gSWYgcnVu
bmluZyBtYW51YWxseSBpbiB0aGUgYnJvd3NlciwgcHJpbnQgdGhlIHNlcXVlbmNlIG9mIGV2ZW50
cy4KLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyKQogICAgICAgICBsb2cobWVzc2FnZSk7CiB9CiAKQEAgLTMxLDggKzMxLDgg
QEAgZnVuY3Rpb24gY2hlY2tEb25lKCkKIHsKICAgICBpZiAocmVjZWl2ZWRFeHBlY3RlZE1lc3Nh
Z2UgJiYgcmVjZWl2ZWRDaGVja2luZ0V2ZW50ICYmIHJlY2VpdmVkTm91cGRhdGVFdmVudCkgewog
ICAgICAgICBsb2coIlNVQ0NFU1MiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3RvcC1mcmFtZS0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS90b3AtZnJhbWUtMy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3RvcC1mcmFtZS0zLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTYsOSArNiw5IEBACiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KIAogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIGZ1bmN0aW9uIGRl
YnVnKG1lc3NhZ2UpCiB7CiAgICAgLy8gSWYgcnVubmluZyBtYW51YWxseSBpbiB0aGUgYnJvd3Nl
ciwgcHJpbnQgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cy4KLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICBsb2co
bWVzc2FnZSk7CiB9CiAKQEAgLTMxLDggKzMxLDggQEAgZnVuY3Rpb24gY2hlY2tEb25lKCkKIHsK
ICAgICBpZiAocmVjZWl2ZWRFeHBlY3RlZE1lc3NhZ2UgJiYgcmVjZWl2ZWRDaGVja2luZ0V2ZW50
c0NvdW50ZXIgPT0gMiAmJiByZWNlaXZlZE5vdXBkYXRlRXZlbnRzQ291bnRlciA9PSAyKSB7CiAg
ICAgICAgIGxvZygiU1VDQ0VTUyIpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvdG9wLWZyYW1lLTQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3RvcC1mcmFtZS00Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvdG9wLWZyYW1lLTQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNiw5ICs2LDkgQEAKIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogCiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCkBAIC0xOSw3ICsxOSw3IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogZnVuY3Rpb24gZGVi
dWcobWVzc2FnZSkKIHsKICAgICAvLyBJZiBydW5uaW5nIG1hbnVhbGx5IGluIHRoZSBicm93c2Vy
LCBwcmludCB0aGUgc2VxdWVuY2Ugb2YgZXZlbnRzLgotICAgIGlmICghd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIGxvZyht
ZXNzYWdlKTsKIH0KIApAQCAtMzEsOCArMzEsOCBAQCBmdW5jdGlvbiBjaGVja0RvbmUoKQogewog
ICAgIGlmIChyZWNlaXZlZEV4cGVjdGVkTWVzc2FnZSAmJiByZWNlaXZlZENoZWNraW5nRXZlbnRz
Q291bnRlciA9PSAyICYmIHJlY2VpdmVkTm91cGRhdGVFdmVudHNDb3VudGVyID09IDIpIHsKICAg
ICAgICAgbG9nKCJTVUNDRVNTIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS91cGRhdGUtY2FjaGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3VwZGF0ZS1jYWNoZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3VwZGF0ZS1jYWNoZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00LDkgKzQsOSBAQAogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVz
c2FnZSkKQEAgLTU0LDggKzU0LDggQEAgZnVuY3Rpb24gdGVzdDMoKQogICAgIGxvZygoYXBwbGlj
YXRpb25DYWNoZS5zdGF0dXMgPT0gYXBwbGljYXRpb25DYWNoZS5JRExFKSA/ICJDYWNoZSBzdGF0
dXMgaXMgSURMRSIgOiAoIkZBSUw6IEluY29ycmVjdCBjYWNoZSBzdGF0dXMsICIgKyBhcHBsaWNh
dGlvbkNhY2hlLnN0YXR1cykpOwogCiAgICAgbG9nKCJET05FIik7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSB0ZXN0OwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS93aGl0ZWxpc3Qtd2lsZGNhcmQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3doaXRlbGlz
dC13aWxkY2FyZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3doaXRlbGlzdC13aWxkY2FyZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDkgKzIsOSBAQAogPGJvZHk+CiA8cD5UZXN0IHRoYXQgb25saW5lIHdoaXRlbGlzdCB3aWxkY2Fy
ZCBmbGFnIGlzIGltcGxlbWVudGVkLjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiB0ZXN0KCkKQEAgLTE3LDggKzE3LDggQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShleCkpOwogICAgIH0KLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9
IHRlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3dyb25nLWNvbnRl
bnQtdHlwZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2Fj
aGUvd3JvbmctY29udGVudC10eXBlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvd3JvbmctY29udGVudC10eXBlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQsOSArNCw5IEBACiA8cD5TaG91bGQgc2F5IFNVQ0NFU1M6PC9wPgogPGRpdiBp
ZD1yZXN1bHQ+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMTcsOCArMTcsOCBAQCBmdW5jdGlv
biBsb2cobWVzc2FnZSkKIGZ1bmN0aW9uIGVycm9yRXZlbnRMaXN0ZW5lcigpCiB7CiAgICAgbG9n
KCJGQUlMVVJFOiBBbiBlcnJvciBldmVudCB3YXMgZGlzcGF0Y2hlZCBvbiB3aW5kb3cuYXBwbGlj
YXRpb25DYWNoZS4iKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rp
b24gdmVyaWZ5U3RhdHVzKCkKQEAgLTI4LDggKzI4LDggQEAgZnVuY3Rpb24gdmVyaWZ5U3RhdHVz
KCkKICAgICBlbHNlCiAgICAgICAgIGxvZygiU1VDQ0VTUyIpOwogCi0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2Fj
aGVkJywgdmVyaWZ5U3RhdHVzLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL3dyb25nLXNpZ25hdHVyZS0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS93cm9uZy1zaWduYXR1cmUtMi5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3dyb25nLXNpZ25hdHVy
ZS0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiA8cD5TaG91bGQgc2F5IFNV
Q0NFU1M6PC9wPgogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjcs
OCArMjcsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBlbHNlCiAgICAgICAgIGxvZygiU1VDQ0VT
UyIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2Fj
aGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgZnVuY3Rpb24oKSB7IGxvZygiY2FjaGVkIik7
IGNhY2hlQ2FsbGJhY2soKSB9LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL3dyb25nLXNpZ25hdHVyZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvd3Jvbmctc2lnbmF0dXJlLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvd3Jvbmctc2lnbmF0dXJlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiA8cD5TaG91bGQgc2F5IFNVQ0NFU1M6
PC9wPgogPGRpdiBpZD1yZXN1bHQ+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjcsOCArMjcs
OCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBlbHNlCiAgICAgICAgIGxvZygiU1VDQ0VTUyIpOwog
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUuYWRk
RXZlbnRMaXN0ZW5lcignY2FjaGVkJywgZnVuY3Rpb24oKSB7IGxvZygiY2FjaGVkIik7IGNhY2hl
Q2FsbGJhY2soKSB9LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3hoci1mb3JlaWduLXJlc291cmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS94aHItZm9yZWlnbi1yZXNvdXJjZS5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3hoci1mb3JlaWduLXJl
c291cmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOSArNSw5IEBACiA8ZGl2IGlkPXJlc3Vs
dD48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtNjgsOCArNjgsOCBAQCBmdW5jdGlvbiB0
ZXN0KGV2dCkKICAgICB9IGVsc2UgCiAgICAgICAgIGxvZygiRkFJTDogc3ViZnJhbWUgZGlkbid0
IGdldCBhIGNvcnJlY3QgY2FjaGUiKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
fQogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZyYW1lTWVzc2FnZVJlY2Vp
dmVkLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291
cmNlcy9hY2Nlc3MtdmlhLXJlZGlyZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvYWNjZXNzLXZpYS1yZWRpcmVjdC5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291
cmNlcy9hY2Nlc3MtdmlhLXJlZGlyZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5
IEBACiA8cCBpZD0icmVzdWx0Ij5GQUlMVVJFPC9wPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGNhbkxvYWQodXJsKQpAQCAtMzUs
OCArMzUsOCBAQCBmdW5jdGlvbiBjYWNoZWQoKQogICAgICAgICAKICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlNVQ0NFU1MiCiAgICAgCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0
ZW5lcignY2FjaGVkJywgY2FjaGVkLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Jlc291cmNlcy9jcmFzaC13aGVuLW5hdmlnYXRpbmctYXdheS10aGVuLWJh
Y2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jl
c291cmNlcy9jcmFzaC13aGVuLW5hdmlnYXRpbmctYXdheS10aGVuLWJhY2suaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
Y3Jhc2gtd2hlbi1uYXZpZ2F0aW5nLWF3YXktdGhlbi1iYWNrLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTExLDggKzExLDggQEAgZnVuY3Rpb24gbm91cGRhdGUoKQogewogICAgIHdpbmRvdy5vcGVu
ZXIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNT
JzsKICAgICB3aW5kb3cuY2xvc2UoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0K
IAogYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBjYWNoZWQsIGZh
bHNlKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL25v
dC1pbi1jYWNoZS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9yZXNvdXJjZXMvbm90LWluLWNhY2hlLnR4dAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvbm90LWluLWNhY2hlLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotVGhpcyBmaWxlIGlzIG5vdCBpbiB0aGUgY2FjaGUg
YW5kIGlzIHRodXMgbm90IHBvc3NpYmxlIHRvIGxvYWQuClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorVGhpcyBmaWxlIGlzIG5vdCBpbiB0aGUgY2FjaGUgYW5kIGlzIHRodXMgbm90IHBvc3Np
YmxlIHRvIGxvYWQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291
cmNlcy9zaW1wbGUudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL3NpbXBsZS50eHQJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3NpbXBsZS50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEgKzEgQEAKLUhlbGxvLCBXb3JsZCEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CitIZWxsbywgV29ybGQhCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhbmNl
bC1kdXJpbmctZmFpbHVyZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY2FjaGUvY2FuY2VsLWR1cmluZy1mYWlsdXJlLWNyYXNoLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvY2FuY2VsLWR1cmluZy1m
YWlsdXJlLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4K
IDxib2R5PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9
CiAKIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTsKQEAgLTExLDcgKzExLDcgQEAgaW1nLm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHsKICAgICAvLyBjYW5jZWwgcmVzb3VyY2UgbG9hZCB3aXRoaW4gZGlkRmFp
bCgpCiAgICAgd2luZG93LnN0b3AoKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCJQQVNTIikpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogLy8gUG9y
dCA3IHdpbGwgbGlrZWx5IHJlZnVzZSB0aGUgY29ubmVjdGlvbiwgY2F1c2luZyBhIGRpZEZhaWwo
KQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9jYW5jZWwtZHVyaW5nLXJldmFs
aWRhdGlvbi1zdWNjZWVkZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL2NhbmNlbC1kdXJpbmctcmV2YWxpZGF0aW9uLXN1Y2NlZWRlZC5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2NhbmNlbC1kdXJp
bmctcmV2YWxpZGF0aW9uLXN1Y2NlZWRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDkgKzcs
OSBAQCBJdCdzIHBvc3NpYmxlIGZvciBhIHN1Y2Nlc3NmdWwgcmV2YWxpZGF0CiBXZSBzaG91bGRu
J3QgY3Jhc2ggaWYgb25lIG9mIHRob3NlIGV2ZW50cyBzdG9wcyB0aGUgbG9hZC4NCiBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzYyLg0KIDxzY3JpcHQ+DQot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7DQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7DQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOw0KIH0NCiANCiBmdW5jdGlv
biBvYmwoZSkgew0KQEAgLTI0LDEwICsyNCwxMCBAQCBmdW5jdGlvbiBvYmwoZSkgew0KIH0NCiAN
CiBmdW5jdGlvbiBmaW5pc2goKSB7DQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpDQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7DQorICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOw0K
IH0NCiA8L3NjcmlwdD4NCiA8b2JqZWN0IHR5cGU9ImFwcGxpY2F0aW9uL3gtbm8tc3VjaC1taW1l
IiBvbmJlZm9yZWxvYWQ9Im9ibCgpOyI+PC9lbWJlZD4NCiA8L2JvZHk+DQotPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1sb2Fkcy1tYXgtYWdl
LWh0dHBzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9o
aXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLW1heC1hZ2UtaHR0cHMuaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5
LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLW1heC1hZ2UtaHR0cHMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUsMTAgKzE1LDEwIEBACiAgICAgPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
CiAgICAgPHNjcmlwdD4KICAgICAvLyBBc3luY2hyb25vdXMgdGVzdCBiZWNhdXNlIHRoaXMgcmVx
dWlyZXMgYSBuZXcgd2luZG93IHRvIHBlcmZvcm0gbXVsdGlwbGUgbmF2aWdhdGlvbnMuCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB3aW5kb3cu
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNl
dENhbk9wZW5XaW5kb3dzKCk7CiAgICAgfQogCiAgICAgLy8gVmFsdWVzIHRvIGNoZWNrLgpAQCAt
NzcsOCArNzcsOCBAQAogCiAgICAgICAgIC8vIFRlc3QgY29tcGxldGVkLgogICAgICAgICB0YXJn
ZXQuY2xvc2UoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKIAogICAgIH0sIGZhbHNlKTsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHktY2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9oaXN0b3J5LW9ubHkt
Y2FjaGVkLXN1YnJlc291cmNlLWxvYWRzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvaGlzdG9yeS1vbmx5LWNhY2hlZC1zdWJyZXNvdXJjZS1s
b2Fkcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwxMCArMTUsMTAgQEAKICAgICA8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KICAgICA8c2NyaXB0PgogICAgIC8vIEFzeW5jaHJvbm91cyB0ZXN0
IGJlY2F1c2UgdGhpcyByZXF1aXJlcyBhIG5ldyB3aW5kb3cgdG8gcGVyZm9ybSBtdWx0aXBsZSBu
YXZpZ2F0aW9ucy4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgd2lu
ZG93LnRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKICAgICB9CiAKICAgICAvLyBWYWx1
ZXMgdG8gY2hlY2suCkBAIC03Nyw4ICs3Nyw4IEBACiAKICAgICAgICAgLy8gVGVzdCBjb21wbGV0
ZWQuCiAgICAgICAgIHRhcmdldC5jbG9zZSgpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
d2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogCiAgICAgfSwgZmFsc2UpOwogCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2xvYWRlZC1mcm9tLWNhY2hlLWFmdGVyLXJl
bG9hZC13aXRoaW4taWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9sb2FkZWQtZnJvbS1jYWNoZS1hZnRlci1yZWxvYWQtd2l0aGluLWlmcmFtZS5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2xv
YWRlZC1mcm9tLWNhY2hlLWFmdGVyLXJlbG9hZC13aXRoaW4taWZyYW1lLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTUsOSArNSw5IEBACiAvLyBsb2FkZWQgZnJvbSB0aGUgY2FjaGUuCiAKIGlmICgh
c2Vzc2lvblN0b3JhZ2UubGFzdFJhbmRvbSkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiB9CiAKQEAgLTE3LDggKzE3
LDggQEAgZnVuY3Rpb24gZG9uZShyZXN1bHQpCiAKICAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4
dCA9IHJlc3VsdDsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlv
biBpZnJhbWVMb2FkZWQoKQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9sb2Fk
ZWQtZnJvbS1jYWNoZS1hZnRlci1yZWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlL2xvYWRlZC1mcm9tLWNhY2hlLWFmdGVyLXJlbG9hZC5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2xvYWRlZC1m
cm9tLWNhY2hlLWFmdGVyLXJlbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBA
QAogLy8gbG9hZGVkIGZyb20gdGhlIGNhY2hlLgogCiBpZiAoIXNlc3Npb25TdG9yYWdlLmxhc3RS
YW5kb20pIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAgICAgfQogfQogCkBAIC0xNyw4ICsxNyw4IEBAIGZ1bmN0aW9uIGRvbmUo
cmVzdWx0KQogCiAgICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSByZXN1bHQ7CiAKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gc2NyaXB0TG9hZGVkKCkKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1nZXQucGhwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcG9zdC1yZWRpcmVjdC1n
ZXQucGhwCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hl
L3Bvc3QtcmVkaXJlY3QtZ2V0LnBocAkod29ya2luZyBjb3B5KQpAQCAtMjEsOSArMjEsOSBAQCBp
ZiAoJF9QT1NUWyJzdWJtaXQiXSA9PSAicmVkaXJlY3QiKSB7CiA8Ym9keT4KIDxkaXYgaWQ9InJl
c3VsdCI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIH0KICAgICAKIGZ1bmN0aW9uIGxvZ0FuZEZpbmlzaChtZXNzYWdlKQpAQCAtMzIsOCArMzIs
OCBAQCBmdW5jdGlvbiBsb2dBbmRGaW5pc2gobWVzc2FnZSkKICAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0OwogICAgIHhoci5vcGVuKCJHRVQiLCAiLi4vcmVzb3VyY2VzL3Jlc2V0LXRl
bXAtZmlsZS5waHA/ZmlsZW5hbWU9cG9zdC50bXAiLCBmYWxzZSk7CiAgICAgeGhyLnNlbmQobnVs
bCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDw/cGhwCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bvc3Qtd2l0aC1jYWNoZWQtc3VicmVz
b3VyY2VzLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Bv
c3Qtd2l0aC1jYWNoZWQtc3VicmVzb3VyY2VzLnBocAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9wb3N0LXdpdGgtY2FjaGVkLXN1YnJlc291cmNlcy5w
aHAJKHdvcmtpbmcgY29weSkKQEAgLTE1LDkgKzE1LDkgQEAgaGVhZGVyKCdFeHBpcmVzOiAnIC4g
Z21kYXRlKERBVEVfUkZDMTEyMwogPGJvZHk+CiA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAgICAgCiBmdW5j
dGlvbiBsb2dBbmRGaW5pc2gobWVzc2FnZSkKQEAgLTI2LDggKzI2LDggQEAgZnVuY3Rpb24gbG9n
QW5kRmluaXNoKG1lc3NhZ2UpCiAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKICAg
ICB4aHIub3BlbigiR0VUIiwgIi4uL3Jlc291cmNlcy9yZXNldC10ZW1wLWZpbGUucGhwP2ZpbGVu
YW1lPXBvc3QudG1wIiwgZmFsc2UpOwogICAgIHhoci5zZW5kKG51bGwpOwotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8P3BocApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS9zdG9wcGVkLXJldmFsaWRhdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvc3RvcHBlZC1yZXZhbGlkYXRpb24uaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9zdG9wcGVk
LXJldmFsaWRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGJvZHk+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVu
Y3Rpb24gc2V0TmV0d29ya0VuYWJsZWQoc3RhdGUpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL3N1YnJlc291cmNlLWZhaWxvdmVyLXRvLW5ldHdvcmsuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3N1YnJlc291cmNlLWZhaWxvdmVyLXRv
LW5ldHdvcmsuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS9zdWJyZXNvdXJjZS1mYWlsb3Zlci10by1uZXR3b3JrLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNyArMSw3IEBACiA8Ym9keT4KIDxzY3JpcHQ+Ci0gIGlmICgibGF5b3V0VGVzdENv
bnRyb2xsZXIiIGluIHdpbmRvdykgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgaWYgKCJ0ZXN0UnVubmVyIiBpbiB3aW5kb3cpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogICAgIGRvY3VtZW50LmNvb2tpZSA9ICJyZXN1bHQ9RkFJTCIKIApAQCAt
MTAsOSArMTAsOSBAQAogICAgIC8vIHN5bmMgWEhSIHJlcXVlc3QgdG8gc3RpbGwgc3VjY2VlZC4g
IFRoaXMgcmVsaWVzIG9uIGl0IGxvYWRpbmcgZnJvbSB0aGUKICAgICAvLyBuZXR3b3JrIGFuZCBu
b3QgYmVpbmcgcmVzdHJpY3RlZCB0byBsb2FkaW5nIGZyb20gdGhlIGNhY2hlIChhcyB0aGUgbWFp
bgogICAgIC8vIHBhZ2UgaXMpLgotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZGlu
Z1NjcmlwdCgiZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCkiKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnF1ZXVlRm9yd2FyZE5hdmlnYXRpb24oMSk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZUxvYWRpbmdT
Y3JpcHQoImRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpIik7CisgICAgdGVzdFJ1bm5lci5xdWV1
ZUJhY2tOYXZpZ2F0aW9uKDEpOworICAgIHRlc3RSdW5uZXIucXVldWVGb3J3YXJkTmF2aWdhdGlv
bigxKTsKICAgfQogPC9zY3JpcHQ+CiA8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0icmVzb3Vy
Y2VzL3N1YnJlc291cmNlLWZhaWxvdmVyLXRvLW5ldHdvcmsuY2dpIiBlbmN0eXBlPSJtdWx0aXBh
cnQvZm9ybS1kYXRhIj4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvc3VicmVz
b3VyY2UtZnJhZ21lbnQtaWRlbnRpZmllci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUvc3VicmVzb3VyY2UtZnJhZ21lbnQtaWRlbnRpZmllci5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3N1YnJlc291
cmNlLWZyYWdtZW50LWlkZW50aWZpZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkg
QEAKIDxoZWFkPgogICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIENhbGxDb21tYW5kKGNt
ZCkKQEAgLTI0LDggKzI0LDggQEAKICAgICAgICAgICAgIGdldFJlc291cmNlTG9nKCk7CiAgICAg
ICAgICAgICBDYWxsQ29tbWFuZCgiY2xlYXItcmVzb3VyY2UtcmVxdWVzdC1sb2ciKTsKIAotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBnZXRSZXNvdXJjZUxvZygpCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3N1YnJlc291cmNlLW11bHRpcGxlLWluc3RhbmNl
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvc3VicmVz
b3VyY2UtbXVsdGlwbGUtaW5zdGFuY2VzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvc3VicmVzb3VyY2UtbXVsdGlwbGUtaW5zdGFuY2VzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAgbG9hZCwgYnV0IGFyZSByZWxvYWRl
ZCBpZiB0aGV5IGFyZSByZXF1ZQogPC9wPgogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogdmFyIHJhbmRvbU51bWJlciA9IDA7CiB2YXIgZmly
c3RSYW5kb21OdW1iZXIgPSAwOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS94
aHItYm9keS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUv
eGhyLWJvZHkuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jYWNoZS94aHItYm9keS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHBy
ZSBpZD1sb2c+PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtc2cpIHsK
QEAgLTQyLDggKzQyLDggQEAgZnVuY3Rpb24gcmVwZWF0KCkgewogCiBmdW5jdGlvbiBlbmQoKSB7
CiAgICAgbG9nKCJET05FIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3Nj
cmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvemVyby1s
ZW5ndGgteGhyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNo
ZS96ZXJvLWxlbmd0aC14aHIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS96ZXJvLWxlbmd0aC14aHIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Myw5ICszLDkgQEAKIDxwcmUgaWQ9bG9nPjwvcHJlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5j
dGlvbiBsb2cobXNnKSB7CkBAIC0zNCw4ICszNCw4IEBAIGZ1bmN0aW9uIHJlcGVhdCgpIHsKIAog
ZnVuY3Rpb24gZW5kKCkgewogICAgIGxvZygiRE9ORSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL3Jlc291cmNlcy9zdG9wcGVkLXJldmFsaWRhdGlvbi1yZXN1bHQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdG9wcGVk
LXJldmFsaWRhdGlvbi1yZXN1bHQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3RvcHBlZC1yZXZhbGlkYXRpb24tcmVzdWx0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIGZ1bmN0aW9uIGRvbmUoKSB7CiAg
ICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWciKVswXTsKICAg
ICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwogICAgIHJl
c3VsdC5pbm5lckhUTUwgPSBpbWcud2lkdGggPT0gMTI4ID8gIlBBU1MiIDogIkZBSUwgLSBpbWFn
ZSBub3QgbG9hZGVkIjsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3VicmVzb3Vy
Y2UtdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jl
c291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zdWJyZXNvdXJjZS10ZXN0LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIH0KIAogdmFyIGN1cnJlbnRUZXN0OwpAQCAtNjksOCArNjksOCBAQCBmdW5jdGlvbiBu
ZXh0VGVzdCgpCiAgICAgdW5pcXVlSWQgPSBNYXRoLmZsb29yKDEwMDAwMDAwMCAqIE1hdGgucmFu
ZG9tKCkpOwogICAgIG5vdyA9IG5ldyBEYXRlKCk7CiAgICAgaWYgKCF0ZXN0U3BlYykgewotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBsb2FkVGVzdEZyYW1lKGZyYW1lMSwgdGVzdFNwZWMpOwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL3BoaWxpcC90ZXN0cy5qcwkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsOCArMjE2LDggQEAgZnVuY3Rpb24gX2FkZFRlc3QodGVz
dCkKICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc05hbWUgKz0gJyBw
YXNzJzsKICAgICAgICAgICAgIHdpbmRvdy5fdGVzdFN0YXR1cyA9IFsncGFzcycsIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkJykuaW5uZXJIVE1MXTsKICAgICAgICAgfQotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAgICAgd2luZG93LmVuZFRl
c3QgPSBlbmRUZXN0OwogICAgIHdpbmRvdy53cmFwRnVuY3Rpb24gPSBmdW5jdGlvbiAoZikKQEAg
LTIzOCw5ICsyMzgsOSBAQCBmdW5jdGlvbiBfYWRkVGVzdCh0ZXN0KQogCiAgICAgd2luZG93Lm9u
bG9hZCA9IGZ1bmN0aW9uICgpCiAgICAgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAg
ICAgICAgfQogICAgICAgICB0cnkKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNv
bmZvcm1hbmNlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FudmFzL3dlYmdsL29yaWdpbi1jbGVhbi1jb25mb3JtYW5jZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsMTAgKzEwMiwxMCBAQCBmdW5jdGlvbiBpbml0KCkgewogICBhc3NlcnRNc2co
dmlkZW9GaWxlLCAiUGxheWFibGUgdmlkZW8gZm9ybWF0IGZvdW5kIik7CiAKICAgaWYgKHZpZGVv
RmlsZSkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVk
IiwgIjEiKTsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRX
ZWJHTEVuYWJsZWQiLCAiMSIpOworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAgICAgdmlkZW8uc3JjID0gdmlk
ZW9GaWxlOwogICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoInBsYXlpbmciLCBydW5UZXN0cyk7
CkBAIC0xOTksMTAgKzE5OSwxMCBAQCBmdW5jdGlvbiBydW5UZXN0cygpIHsKICAgfQogCiAgIGRl
YnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKLSAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgIH0KIH0KIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3RoaXJkLXBhcnR5LWNv
b2tpZS1yZWxheGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtcmVsYXhpbmcuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1y
ZWxheGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogPHNjcmlwdD4KIHJl
c2V0Q29va2llcygpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
CiB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KQpAQCAtMjIsMTYgKzIyLDE2IEBAIHdp
bmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpCiBmdW5jdGlvbiBhbGxvd0FsbENvb2tpZXMo
KQogewogICAgIGFsZXJ0KCJBbGxvd2luZyBhbGwgY29va2llcyIpOwotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFs
d2F5c0FjY2VwdENvb2tpZXModHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXModHJ1ZSk7CiAgICAgcnVuTmV4
dFRlc3RPckZpbmlzaCgpOwogfQogCiBmdW5jdGlvbiByZXN0cmljdENvb2tpZXMoKQogewogICAg
IGFsZXJ0KCJSZXN0cmljdGluZyB0byBmaXJzdCBwYXJ0eSBvbmx5IGNvb2tpZXMiKTsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRBbHdheXNBY2NlcHRDb29raWVzKGZhbHNlKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29va2llcyhmYWxzZSk7
CiAgICAgcnVuTmV4dFRlc3RPckZpbmlzaCgpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIHZhciBm
dW5jdGlvbnMgPSBuZXcgQXJyYXkoCiBmdW5jdGlvbiBydW5OZXh0VGVzdE9yRmluaXNoKCkKIHsK
ICAgICBpZiAoY3VycmVudEZ1bmN0aW9uID49IGZ1bmN0aW9ucy5sZW5ndGgpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICAgICAgICAgIHJlc2V0Q29va2llcygpOwogICAgICAgICAgICAgd2lu
ZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgicmVzZXRDb29raWVzQW5kTm90aWZ5RG9uZSIsICIq
Iik7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNv
dXJjZXMvY29va2llcy10ZXN0LXByZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvY29va2ll
cy10ZXN0LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiBmdW5jdGlvbiBkZXNjcmlwdGlvbihtc2cpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3Jlc2V0Q29va2llcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3Jlc2V0Q29va2llcy5qcwko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291
cmNlcy9yZXNldENvb2tpZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBmdW5j
dGlvbiByZXNldENvb2tpZXMoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXMo
dHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNl
dEFsd2F5c0FjY2VwdENvb2tpZXModHJ1ZSk7CiAKICAgICAvLyBEdWUgdG8gY3Jvc3Mtb3JpZ2lu
IHJlc3RyaWN0aW9ucywgd2UgY2FuIG9ubHkgKHNpbXBseSkgcmVzZXQgY29va2llcyBmb3Igb3Vy
IGN1cnJlbnQgb3JpZ2luLgogICAgIHZhciB1cmwgPSAiaHR0cDovLyIgKyB3aW5kb3cubG9jYXRp
b24uaG9zdG5hbWUgKyI6ODAwMC9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0eS5waHA/
cXVlcnlmdW5jdGlvbj1kZWxldGVDb29raWVzIjsKQEAgLTEzLDYgKzEzLDYgQEAgZnVuY3Rpb24g
cmVzZXRDb29raWVzKCkKICAgICAgICAgYWxlcnQoIkF0dGVtcHQgdG8gY2xlYXIgIiArIHVybCAr
ICIgY29va2llcyBtaWdodCBoYXZlIGZhaWxlZC4gIFRlc3QgcmVzdWx0cyBtaWdodCBiZSBvZmYg
ZnJvbSBoZXJlIG9uIG91dC4gKCIgKyBlICsgIikiKTsKICAgICB9CiAgICAgCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0QWx3YXlzQWNjZXB0Q29va2llcyhmYWxzZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOwogfQpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXRBcnJheWNv
b2tpZXMtcmVzdWx0LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldEFycmF5Y29va2llcy1yZXN1bHQucGhwCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldEFycmF5
Y29va2llcy1yZXN1bHQucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsxOSw4IEBACiAgICAg
ICAgIH0gZWxzZQ0KICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iiku
aW5uZXJIVE1MID0gIjxiPkZhaWxlZDwvYj4iOyAgICANCiAgICAgfQ0KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7DQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7DQogDQogPC9zY3JpcHQ+DQogPC9oZWFkPg0KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0VXRmOENvb2tpZXMtcmVzdWx0LnBocAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldFV0
ZjhDb29raWVzLXJlc3VsdC5waHAJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0VXRmOENvb2tpZXMtcmVzdWx0LnBocAkod29y
a2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgICBlY2hvICI8cD5waHBfY29va2llOiAiLiRf
Q09PS0lFWyJwaHBfY29va2llIl0uIjwvcD4iOwogPz4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAgICAgZG9jdW1lbnQuY29va2llPSJqc19jb29raWU9VVRGLTggw6bD
uMOlIOS4reWbvTsgZXhwaXJlcz1Nb25kYXksIDA0LUFwci0yMDIwIDA1OjAwOjAwIEdNVCI7CiAg
ICAgZG9jdW1lbnQud3JpdGUoImNvb2tpZXMgcmVhZCB0aHJvdWdoIGpzOiAiK2RvY3VtZW50LmNv
b2tpZSk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9y
ZXNvdXJjZXMvdGhpcmQtcGFydHktY29va2llLXJlbGF4aW5nLWlmcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvdGhpcmQtcGFy
dHktY29va2llLXJlbGF4aW5nLWlmcmFtZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWNvb2tpZS1y
ZWxheGluZy1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxzY3Jp
cHQ+CiByZXNldENvb2tpZXMoKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHdpbmRvdy5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpCiB7CkBAIC00OCw4ICs0OCw4IEBAIGZ1bmN0aW9uIHNlbmRYSFIocXVl
cnlDb21tYW5kKQogZnVuY3Rpb24gcmVzZXRDb29raWVzQW5kTm90aWZ5RG9uZSgpCiB7CiAgICAg
cmVzZXRDb29raWVzKCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvY3Jvc3MtZmFkZS1yZWxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9jcm9zcy1mYWRl
LXJlbG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Nzcy9jcm9zcy1mYWRlLXJlbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBA
QAogPGJvZHk+CiBUZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaC4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogPC9zY3JpcHQ+CiA8aW1nIHN0
eWxlPSJiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtY3Jvc3MtZmFkZSh1cmwocmVzb3VyY2VzL2Fi
ZS5wbmcpLCB1cmwocmVzb3VyY2VzL2FiZS5wbmcpLCAxJSkiLz4KQEAgLTE2LDggKzE2LDggQEAg
ZnVuY3Rpb24gdHJpZ2dlclJlbG9hZCgpCiAgICAgbG9jYXRpb24ucmVsb2FkKCk7CiB9CiBpZiAo
bG9jYXRpb24uaGFzaCA9PSAnI3h4eHgnKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIAorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIH0gZWxzZQogICAgIHNldFRpbWVvdXQoInRyaWdnZXJSZWxvYWQoKSIsIDEwKTsKIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvY3NzLWltcG9ydHMtcmVkaXJl
Y3QtY3ljbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9j
c3MtaW1wb3J0cy1yZWRpcmVjdC1jeWNsZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9jc3MtaW1wb3J0cy1yZWRpcmVjdC1jeWNsZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogPC9zY3JpcHQ+CiA8bGluayBocmVmPSJjc3MtaW1wb3J0cy1yZWRpcmVjdC1jeWNs
ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2Nzcy9mb250LWZhY2Utc3JjLWxvYWRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9mb250LWZhY2Utc3JjLWxvYWRpbmcuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvZm9udC1mYWNlLXNyYy1s
b2FkaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBACiB9CiA8L3N0eWxlPgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBm
aWxlbmFtZSA9ICdmaWxlbmFtZT13ZWJmb250UmVxdWVzdENvdW50LnR4dCc7CkBAIC0xOSw4ICsx
OSw4IEBAIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3Q7CiAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9ICdGQUlMOiBOZXR3b3JrIGVycm9yLic7
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH07CiAg
ICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICBpZiAoeGhy
LnJlYWR5U3RhdGUgPT0geGhyLkRPTkUpCkBAIC01Myw4ICs1Myw4IEBAIGZ1bmN0aW9uIGNoZWNr
UmVxdWVzdENvdW50KCkgewogICAgICAgICByZXN1bHQuaW5uZXJIVE1MICs9ICdTVUNDRVNTJzsK
ICAgICBlbHNlCiAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgKz0gJ0ZBSUwnOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfTsKIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdp
dGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291cmNlcy9saW5rLWNzcy1kaXNhYmxlZC12YWx1ZS13aXRo
LXNsb3ctbG9hZGluZy1zaGVldC1pbi1lcnJvci5qcwkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVl
LXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LWluLWVycm9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBIVE1MTGlua0VsZW1lbnQncyBkaXNh
YmxlZCBhdHRyaWJ1dGUgaXMgcHJvcGVybHkgY2FjaGVkIHdoaWxlIHNldCB3aGVuIGxvYWRpbmcg
YSBzdHlsZXNoZWV0LiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJj
ZXMvbGluay1jc3MtZGlzYWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL2xpbmstY3Nz
LWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0LmpzCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nzcy9yZXNvdXJjZXMvbGluay1jc3MtZGlz
YWJsZWQtdmFsdWUtd2l0aC1zbG93LWxvYWRpbmctc2hlZXQuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IEhUTUxMaW5rRWxlbWVudCdzIGRp
c2FibGVkIGF0dHJpYnV0ZSBpcyBwcm9wZXJseSBjYWNoZWQgd2hpbGUgc2V0IHdoZW4gbG9hZGlu
ZyBhIHN0eWxlc2hlZXQuIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL3Jlc291
cmNlcy9yZXF1ZXN0LWxvZ2dpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jc3MvcmVzb3VyY2VzL3JlcXVlc3QtbG9nZ2luZy5qcwkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvcmVzb3VyY2VzL3JlcXVlc3QtbG9nZ2luZy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMTIsOSArMTIsOSBAQCBmdW5jdGlvbiBDYWxsQ29tbWFuZChj
bWQpCiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAKICAgICB3aW5kb3cu
c2V0VGltZW91dChlbmRUZXN0LCAwKTsKQEAgLTI1LDggKzI1LDggQEAgZnVuY3Rpb24gZW5kVGVz
dCgpCiAgICAgZ2V0UmVzb3VyY2VMb2coKTsKICAgICBDYWxsQ29tbWFuZCgiY2xlYXItcmVzb3Vy
Y2UtcmVxdWVzdC1sb2ciKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBm
dW5jdGlvbiBnZXRSZXNvdXJjZUxvZygpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Rv
d25sb2FkL2Jhc2ljLWFzY2lpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9kb3dubG9hZC9iYXNpYy1hc2NpaS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2Jhc2ljLWFzY2lpLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOCArMSw4IEBACiA8bWV0YSBjaGFyc2V0PSJrb2k4LXIiPgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q3VzdG9tUG9saWN5
RGVsZWdhdGUodHJ1ZSwgdHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVn
YXRlKHRydWUsIHRydWUpOwogfQogPC9zY3JpcHQ+CiA8cD5Eb3dubG9hZCBmaWxlIG5hbWUgc2hv
dWxkIGJlICJ0ZXN0IGZpbGUudHh0Ii48L3A+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Rvd25sb2FkL2RlZmF1bHQtZW5jb2RpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2RlZmF1bHQtZW5jb2RpbmcuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9kb3dubG9hZC9kZWZhdWx0LWVuY29kaW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUiLCAi
a29pOC1yIik7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdh
dGUodHJ1ZSwgdHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdEZvclBvbGljeURl
bGVnYXRlKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGVmYXVs
dFRleHRFbmNvZGluZ05hbWUiLCAia29pOC1yIik7CisgICAgdGVzdFJ1bm5lci5zZXRDdXN0b21Q
b2xpY3lEZWxlZ2F0ZSh0cnVlLCB0cnVlKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSgpOwogfQogPC9zY3JpcHQ+CiA8cD5Eb3dubG9hZGVkIGZpbGUgbmFtZSBzaG91bGQg
YmUgIlNV0KHQodCVU1MudHh0IiAobGV0dGVycyAiQ0NFIiBhcmUgQ3lyaWxsaWMpLjwvcD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxvYWQvaW5oZXJpdGVkLWVuY29kaW5nLWZv
cm0tc3VibWlzc2lvbi1yZXN1bHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2Rvd25sb2FkL2luaGVyaXRlZC1lbmNvZGluZy1mb3JtLXN1Ym1pc3Npb24tcmVzdWx0
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxv
YWQvaW5oZXJpdGVkLWVuY29kaW5nLWZvcm0tc3VibWlzc2lvbi1yZXN1bHQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxtZXRhIGNoYXJzZXQ9ImtvaTgtciI+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDdXN0b21Q
b2xpY3lEZWxlZ2F0ZSh0cnVlLCB0cnVlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
Rm9yUG9saWN5RGVsZWdhdGUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdh
dGUodHJ1ZSwgdHJ1ZSk7CisgICAgdGVzdFJ1bm5lci53YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsK
IH0KIDwvc2NyaXB0PgogPHA+RG93bmxvYWRlZCBmaWxlIG5hbWUgc2hvdWxkIGJlICJTVfPz5VNT
LnR4dCIgKGxldHRlcnMgIkNDRSIgYXJlIEN5cmlsbGljKS48L3A+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2luaGVyaXRlZC1lbmNvZGluZy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxvYWQvaW5oZXJpdGVkLWVuY29kaW5nLmh0
bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxvYWQv
aW5oZXJpdGVkLWVuY29kaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8
bWV0YSBjaGFyc2V0PSJrb2k4LXIiPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUodHJ1ZSwgdHJ1ZSk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdEZvclBvbGljeURlbGVnYXRlKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRydWUsIHRydWUpOworICAgIHRlc3RS
dW5uZXIud2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiB9CiA8L3NjcmlwdD4KIDxwPkRvd25sb2Fk
ZWQgZmlsZSBuYW1lIHNob3VsZCBiZSAiU1Xz8+VTUy50eHQiIChsZXR0ZXJzICJDQ0UiIGFyZSBD
eXJpbGxpYykuPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9kb3dubG9hZC9saXRl
cmFsLXV0Zi04Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9kb3du
bG9hZC9saXRlcmFsLXV0Zi04Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZG93bmxvYWQvbGl0ZXJhbC11dGYtOC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDggKzEsOCBAQAogPG1ldGEgY2hhcnNldD0ia29pOC1yIj4gPCEtLSBQYWdlIGNoYXJzZXQg
c2hvdWxkIGJlIGlnbm9yZWQgLS0+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSh0cnVlLCB0cnVlKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUodHJ1ZSwgdHJ1ZSk7CiB9CiA8
L3NjcmlwdD4KIDxwPkRvd25sb2FkZWQgZmlsZSBuYW1lIHNob3VsZCBiZSAiU1Xz8+VTUy50eHQi
IChsZXR0ZXJzICJDQ0UiIGFyZSBDeXJpbGxpYykuPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1iYWQtbWltZS10eXBlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1i
YWQtbWltZS10eXBlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtYmFkLW1pbWUtdHlwZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC03LDkgKzcsOSBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7CiB9CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBlcyA9IG5ldyBF
dmVudFNvdXJjZSgicmVzb3VyY2VzL2JhZC1taW1lLXR5cGUuYXNpcyIpOwpAQCAtMzQsOCArMzQs
OCBAQCBlcy5vbmVycm9yID0gZnVuY3Rpb24gKCkgewogCiBmdW5jdGlvbiBlbmQoKSB7CiAgICAg
ZXMuY2xvc2UoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2ZW50c291cmNlLWNv
bnRlbnQtdHlwZS1jaGFyc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1jb250ZW50LXR5cGUtY2hhcnNldC5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2
ZW50c291cmNlLWNvbnRlbnQtdHlwZS1jaGFyc2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTks
OSArOSw5IEBAIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1zZyArICI8YnI+IjsKIH0KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gc2hvdWxkR2V0TWVzc2FnZShl
cykKQEAgLTgzLDggKzgzLDggQEAgZnVuY3Rpb24gbmV4dCgpIHsKIH0KIAogZnVuY3Rpb24gZW5k
KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogc3RhcnRSZXF1ZXN0KCk7CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRz
b3VyY2UtZW9mLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVu
dHNvdXJjZS9ldmVudHNvdXJjZS1lb2YuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1lb2YuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAgZnVuY3Rpb24gbG9nKG1zZykgewogICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbXNnICsgIjxicj4iOwogfQog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgY291bnQgPSAx
OwpAQCAtMTksOCArMTksOCBAQCB2YXIgZXMgPSBuZXcgRXZlbnRTb3VyY2UoInJlc291cmNlcy9l
cy1lCiBlcy5vbmVycm9yID0gZnVuY3Rpb24gKCkgewogICAgIGlmIChjb3VudCsrID09IDMpIHsK
ICAgICAgICAgZXMuY2xvc2UoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgfQogfTsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVu
dHNvdXJjZS9ldmVudHNvdXJjZS1wYXJzZS1ldmVudC1zdHJlYW0uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2ZW50c291cmNlLXBhcnNlLWV2
ZW50LXN0cmVhbS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2V2ZW50c291cmNlL2V2ZW50c291cmNlLXBhcnNlLWV2ZW50LXN0cmVhbS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDkgKzcsOSBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7CiB9
CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBjb3VudCA9
IC0xOwpAQCAtNzAsOCArNzAsOCBAQCBlcy5vbmVycm9yID0gZnVuY3Rpb24gKCkgewogICAgIGVs
c2UKICAgICAgICAgbG9nKCJET05FIik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH07CiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZl
bnRzb3VyY2UvZXZlbnRzb3VyY2UtcmVjb25uZWN0LWR1cmluZy1uYXZpZ2F0ZS1jcmFzaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRz
b3VyY2UtcmVjb25uZWN0LWR1cmluZy1uYXZpZ2F0ZS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2ZW50c291cmNlLXJl
Y29ubmVjdC1kdXJpbmctbmF2aWdhdGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5
ICsyLDkgQEAKIDxib2R5PgogPHA+TmF2aWdhdGUgd2hpbGUgYW4gRXZlbnRTb3VyY2UgcmVjb25u
ZWN0IHRpbWVyIGlzIHdhaXRpbmcsIHRoZW4gaGF2ZSB0aGUgcmVjb25uZWN0IHRpbWVyIHRyaWdn
ZXIgYmVmb3JlIHRoZSBwYWdlIHVubG9hZHMuIFdlIHBhc3MgaWYgd2UgZG9uJ3QgY3Jhc2guCiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rp
b24gbmF2aWdhdGUoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50c291cmNl
L2V2ZW50c291cmNlLXJlY29ubmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtcmVjb25uZWN0Lmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRzb3Vy
Y2UtcmVjb25uZWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDkgQEAgZnVuY3Rp
b24gY2hlY2tSZWFkeVN0YXRlKGVzLCBkZXNpcmVkU3RhdAogICAgICAgICBsb2coIkZBSUw6IGJh
ZCBzdGF0ZSAoIiArIHN0YXRlTmFtZXNbY3VyclN0YXRlXSArICIsIHNob3VsZCBiZSAiICsgc3Rh
dGVOYW1lc1tkZXNpcmVkU3RhdGVdICsgIikiKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGVyckNvdW50ID0gMDsKQEAgLTcxLDggKzcxLDggQEAg
ZnVuY3Rpb24gZW5kKCkgewogICAgICAgICBsb2coIkRPTkUiKTsKICAgICB9CiAKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1zdGF0dXMtY29kZS1zdGF0
ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50c291cmNl
L2V2ZW50c291cmNlLXN0YXR1cy1jb2RlLXN0YXRlcy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2ZW50c291cmNlLXN0YXR1cy1j
b2RlLXN0YXRlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIHZhciBjb3Vu
dCA9IDA7CiBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIGlmIChjb3VudCA+PSB0ZXN0cy5sZW5n
dGgpIHsKICAgICAgICAgbG9nKCJET05FIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02Nyw5ICs2Nyw5
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgfTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogcnVuVGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9ldmVudHNvdXJjZS9leGlzdGVudC1ldmVudHNvdXJjZS1zdGF0dXMtZXJyb3ItaWZy
YW1lLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ldmVu
dHNvdXJjZS9leGlzdGVudC1ldmVudHNvdXJjZS1zdGF0dXMtZXJyb3ItaWZyYW1lLWNyYXNoLmh0
bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3Vy
Y2UvZXhpc3RlbnQtZXZlbnRzb3VyY2Utc3RhdHVzLWVycm9yLWlmcmFtZS1jcmFzaC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yLDEwICsyLDEwIEBACiAgIDxpZnJhbWUgaWQ9InRlc3QiPjwvaWZy
YW1lPgogICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgogICA8c2NyaXB0PgotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAg
IHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpCkBAIC0xOCw4ICsxOCw4IEBACiAgICAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikpOwogICAKICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiUEFTUyI7Ci0g
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIHJ1blRlc3QoKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2Uvbm9uLWV4aXN0ZW50LWV2
ZW50c291cmNlLXN0YXR1cy1lcnJvci1pZnJhbWUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2V2ZW50c291cmNlL25vbi1leGlzdGVudC1ldmVudHNvdXJj
ZS1zdGF0dXMtZXJyb3ItaWZyYW1lLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2Uvbm9uLWV4aXN0ZW50LWV2ZW50c291cmNl
LXN0YXR1cy1lcnJvci1pZnJhbWUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMCAr
MiwxMCBAQAogICA8aWZyYW1lIGlkPSJ0ZXN0Ij48L2lmcmFtZT4KICAgPGRpdiBpZD0icmVzdWx0
Ij48L2Rpdj4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB7Ci0gICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQpAQCAt
MTgsOCArMTgsOCBAQAogICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpKTsKICAgCiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICB9CiAKICAgICBydW5UZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2V2ZW50c291cmNlL3Jlc291cmNlcy93YWl0LXRoZW4tbm90aWZ5LWRvbmUucGhwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2UvcmVzb3VyY2Vz
L3dhaXQtdGhlbi1ub3RpZnktZG9uZS5waHAJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2UvcmVzb3VyY2VzL3dhaXQtdGhlbi1ub3RpZnktZG9u
ZS5waHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNSArNCw1IEBAIGhlYWRlcigiRXhwaXJlczogVGh1
LCAwMSBEZWMgMjAwMyAxNjowMDoKIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5v
LWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKIGhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOwog
c2xlZXAoMSk7Ci1lY2hvICI8c2NyaXB0PiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk8L3NjcmlwdD5cbiI7CitlY2hvICI8
c2NyaXB0PiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpPC9z
Y3JpcHQ+XG4iOwogPz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2Uv
d29ya2Vycy9ldmVudHNvdXJjZS1zaW1wbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2V2ZW50c291cmNlL3dvcmtlcnMvZXZlbnRzb3VyY2Utc2ltcGxlLmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZXZlbnRzb3VyY2Uv
d29ya2Vycy9ldmVudHNvdXJjZS1zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3
LDkgQEAgZnVuY3Rpb24gbG9nKG1zZykgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgKz0gbXNnICsgIjxicj4iOwogfQogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3Vy
Y2VzL3NpbXBsZS13b3JrZXIuanMiKTsKQEAgLTI4LDggKzI4LDggQEAgd29ya2VyLm9uZXJyb3Ig
PSBmdW5jdGlvbiAoKSB7CiB9CiAKIGZ1bmN0aW9uIGVuZCgpIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZpbGVhcGkvY3JlYXRlLWJsb2ItdXJsLWZyb20tZGF0YS11cmwuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVhcGkvY3JlYXRlLWJsb2ItdXJsLWZyb20tZGF0
YS11cmwuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9m
aWxlYXBpL2NyZWF0ZS1ibG9iLXVybC1mcm9tLWRhdGEtdXJsLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTYsOSArNiw5IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSArICJcbiIpKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIAogdmFyIHQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewpAQCAtMjAsOCArMjAsOCBA
QCB2YXIgdCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgZWxzZQogICAgICAgICBsb2co
IkZBSUw6IGNyZWF0ZWQgIiArIGJsb2JVUkwpOwogICAgIGNsZWFySW50ZXJ2YWwodCk7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9LCAxMDApCiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3RlbS9uby1jYWNoZS1maWxlc3lzdGVt
LXVybC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZmlsZXN5c3Rl
bS9uby1jYWNoZS1maWxlc3lzdGVtLXVybC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ZpbGVzeXN0ZW0vbm8tY2FjaGUtZmlsZXN5c3RlbS11cmwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQAogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGZpbGUucmVt
b3ZlKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgfTsKQEAgLTQ5LDkgKzQ5LDkgQEAKICAgICAgIH0pOwogICAgIH0p
OwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICB9CiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvZ2xvYmFsaGlzdG9yeS9oaXN0b3J5LWRlbGVnYXRlLWJhc2ljLTMwMi1yZWRpcmVjdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9o
aXN0b3J5LWRlbGVnYXRlLWJhc2ljLTMwMi1yZWRpcmVjdC5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9yeS1kZWxlZ2F0
ZS1iYXNpYy0zMDItcmVkaXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAK
IDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRD
YWxsYmFja3MoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOwogfQogCiBmdW5jdGlvbiBydW5UZXN0KCkgewpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9nbG9iYWxoaXN0b3J5L2hpc3RvcnktZGVsZWdh
dGUtYmFzaWMtcmVmcmVzaC1yZWRpcmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9oaXN0b3J5LWRlbGVnYXRlLWJhc2ljLXJlZnJlc2gt
cmVkaXJlY3QuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9nbG9iYWxoaXN0b3J5L2hpc3RvcnktZGVsZWdhdGUtYmFzaWMtcmVmcmVzaC1yZWRpcmVjdC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPHNjcmlwdD4KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wRnJhbWVMb2FkQ2FsbGJh
Y2tzKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy10aXRsZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9oaXN0b3J5
LWRlbGVnYXRlLWJhc2ljLXRpdGxlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9oaXN0b3J5LWRlbGVnYXRlLWJhc2ljLXRpdGxl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8dGl0bGU+VGVzdCBUaXRsZSAxPC90aXRs
ZT4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9o
aXN0b3J5LWRlbGVnYXRlLWJhc2ljLXZpc2l0ZWQtbGlua3MuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2dsb2JhbGhpc3RvcnkvaGlzdG9yeS1kZWxlZ2F0ZS1iYXNp
Yy12aXNpdGVkLWxpbmtzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS9oaXN0b3J5LWRlbGVnYXRlLWJhc2ljLXZpc2l0ZWQtbGlu
a3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5yZW1v
dmVBbGxWaXNpdGVkTGlua3MoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIucmVtb3ZlQWxsVmlzaXRlZExpbmtz
KCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9iYWNrLXRvLXBvc3QucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9iYWNrLXRvLXBvc3QucGhwCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvYmFjay10by1wb3N0LnBocAkod29ya2luZyBjb3B5
KQpAQCAtMjEsMTMgKzIxLDEzIEBAIGZ1bmN0aW9uIHN1Ym1pdEZvcm0oKQogICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCl9LCAwKTsKIH0KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogLy8gRGlzYWJsZSBiL2YgY2Fj
aGUgKG5vdCBuZWNlc3NhcnkgaW4gRFJUIHNpbmNlIHRoZSBiL2YgY2FjaGUgaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdCkuCi1pZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKK2lmICghd2lu
ZG93LnRlc3RSdW5uZXIpCiAgICAgd2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24oKSB7fQogCiBp
ZiAoZG9jdW1lbnQubG9jYXRpb24uc2VhcmNoID09ICIiKSB7CkBAIC0zNyw4ICszNyw4IEBAIGlm
IChkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2ggPT0gIiIpIHsKICAgICBpZiAod2luZG93Lm5hbWUg
PT0gImZpbmlzaCIpIHsKICAgICAgICAgd2luZG93Lm5hbWUgPSAiIjsKICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICdQQVNTJzsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgZG9jdW1lbnQuZm9ybXNbMF0uYWN0aW9uID0gIj8yIjsKICAgICAgICAgc3VibWl0Rm9ybSgp
OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L2JhY2std2l0aC1mcmFnbWVu
dC1jaGFuZ2UucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9iYWNrLXdpdGgtZnJhZ21lbnQtY2hhbmdlLnBocAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L2JhY2std2l0aC1mcmFnbWVudC1jaGFuZ2UucGhw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCwxOCArMTAsMTggQEAgaGVhZGVyKCJQcmFnbWE6IG5vLWNh
Y2hlIik7CiA/PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIG9ubG9hZCA9IGZ1bmN0aW9u
KCkgewogICAgIGlmIChzZXNzaW9uU3RvcmFnZS5kaWROYXZpZ2F0ZSkgewogICAgICAgICBjb25z
b2xlLmxvZygnU2hvdWxkIG5vdCBoYXZlIGVuZGVkIHVwIGJhY2sgYXQgdGhlIHRlc3Qgc3RhcnQg
cGFnZScpOwogICAgICAgICBkZWxldGUgc2Vzc2lvblN0b3JhZ2UuZGlkTmF2aWdhdGU7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0zOCw1ICszOCw1IEBAIG9udW5sb2FkID0gZnVuY3Rpb24oKSB7IH07CiA8
cD4KIFRlc3RzIHRoYXQgYSBoaXN0b3J5IG5hdmlnYXRpb24gdGhhdCBpcyBhYm9ydGVkIGJ5IGEg
ZnJhZ21lbnQgY2hhbmdlIGRvZXNuJ3QKIHVwZGF0ZSB0aGUgcHJvdmlzaW9uYWwgaGlzdG9yeSBp
dGVtLiBUaGlzIHRlc3QgcmVsaWVzIG9uCi08Y29kZT5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QmFja0ZvcndhcmRMaXN0PC9jb2RlPiB0byB2ZXJpZnkgY29ycmVjdG5lc3MKKzxjb2RlPnRlc3RS
dW5uZXIuZHVtcEJhY2tGb3J3YXJkTGlzdDwvY29kZT4gdG8gdmVyaWZ5IGNvcnJlY3RuZXNzCiBh
bmQgdGh1cyBjYW4gb25seSBiZSBydW4gdmlhIER1bXBSZW5kZXJUcmVlLjwvcD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9jcm9zcy1vcmlnaW4tcmVwbGFjZS1oaXN0b3J5
LW9iamVjdC1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9jcm9zcy1vcmlnaW4tcmVwbGFjZS1oaXN0b3J5LW9iamVjdC1jaGlsZC5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvY3Jvc3Mt
b3JpZ2luLXJlcGxhY2UtaGlzdG9yeS1vYmplY3QtY2hpbGQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMiwyMSArMiwyMSBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogfQogCiB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KQog
ewogICAgIGlmIChldnQuZGF0YSAhPSAiZG9uZSIpIHsKICAgICAgICAgYWxlcnQoIlVuZXhwZWN0
ZWQgbWVzc2FnZTogIiArIGV2dC5kYXRhKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGFsZXJ0KCJDaGlsZCB3aW5kb3cncyBoaXN0b3J5IG9iamVj
dCBhZnRlciBhdHRlbXB0IHRvIGNsZWFyOiAiICsgd2luZG93LmZyYW1lc1swXS5oaXN0b3J5KTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHNldEhpc3RvcnlMZW5ndGgoKQpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L2Nyb3NzLW9yaWdpbi1yZXBsYWNlLWhpc3Rvcnkt
b2JqZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L2Nyb3NzLW9yaWdpbi1yZXBsYWNlLWhpc3Rvcnktb2JqZWN0Lmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9jcm9zcy1vcmlnaW4tcmVwbGFj
ZS1oaXN0b3J5LW9iamVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDIxICsyLDIxIEBACiA8
aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9
CiAKIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpCiB7CiAgICAgaWYgKGV2dC5kYXRh
ICE9ICJkb25lIikgewogICAgICAgICBhbGVydCgiVW5leHBlY3RlZCBtZXNzYWdlOiAiICsgZXZ0
LmRhdGEpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgYWxlcnQoIlBhcmVudCB3aW5kb3cncyBoaXN0b3J5IG9iamVjdCBhZnRlciBhdHRlbXB0IHRv
IGNsZWFyOiAiICsgd2luZG93Lmhpc3RvcnkpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24g
c2V0SGlzdG9yeUxlbmd0aCgpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rvcnkv
aGlzdG9yeS1uYXZpZ2F0aW9ucy1zZXQtcmVmZXJyZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvaGlzdG9yeS1uYXZpZ2F0aW9ucy1zZXQtcmVmZXJy
ZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L2hpc3RvcnktbmF2aWdhdGlvbnMtc2V0LXJlZmVycmVyLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOSArMiw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMjAwLXJlZnJlc2gtMC1zZWNvbmRz
LnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVj
dC0yMDAtcmVmcmVzaC0wLXNlY29uZHMucGwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0yMDAtcmVmcmVzaC0wLXNlY29uZHMucGwJ
KHdvcmtpbmcgY29weSkKQEAgLTExLDkgKzExLDkgQEAgcHJpbnQgPDxIRVJFX0RPQ19FTkQKIDxo
ZWFkPgogPHRpdGxlPjIwMCBSZWZyZXNoIFJlZGlyZWN0PC90aXRsZT4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmNsZWFy
QmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiA8
L3NjcmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LTIwMC1yZWZyZXNoLTItc2Vjb25kcy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMjAwLXJlZnJlc2gtMi1zZWNvbmRzLnBsCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMjAw
LXJlZnJlc2gtMi1zZWNvbmRzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw5ICsxMSw5IEBAIHBy
aW50IDw8SEVSRV9ET0NfRU5ECiA8aGVhZD4KIDx0aXRsZT4yMDAgUmVmcmVzaCBSZWRpcmVjdDwv
dGl0bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAxLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDx0aXRsZT4zMDEgUmVkaXJlY3Q8L3RpdGxlPgog
PHNjcmlwdD4KICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zv
cndhcmRMaXN0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVh
ckJhY2tGb3J3YXJkTGlzdCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICB9CiAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9u
ID0gJ3Jlc291cmNlcy9yZWRpcmVjdC1oZWxwZXIucGw/MzAxJzt9LCAwKTsKICAgfQpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDIuaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LTMwMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHRpdGxlPjMwMiBS
ZWRpcmVjdDwvdGl0bGU+CiA8c2NyaXB0PgogICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigp
IHt3aW5kb3cubG9jYXRpb24gPSAncmVzb3VyY2VzL3JlZGlyZWN0LWhlbHBlci5wbD8zMDInO30s
IDApOwogICB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
MzAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LTMwMy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5
IEBACiA8dGl0bGU+MzAzIFJlZGlyZWN0PC90aXRsZT4KIDxzY3JpcHQ+CiAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICAgIHdpbmRvdy5zZXRU
aW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5sb2NhdGlvbiA9ICdyZXNvdXJjZXMvcmVkaXJlY3Qt
aGVscGVyLnBsPzMwMyc7fSwgMCk7CiAgIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC0zMDcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDcuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMyw5ICszLDkgQEAKIDx0aXRsZT4zMDcgUmVkaXJlY3Q8L3RpdGxlPgogPHNjcmlw
dD4KICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRM
aXN0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tG
b3J3YXJkTGlzdCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9
CiAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9uID0gJ3Jl
c291cmNlcy9yZWRpcmVjdC1oZWxwZXIucGw/MzA3Jzt9LCAwKTsKICAgfQpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLTAt
c2Vjb25kcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi0wLXNlY29uZHMuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRv
Y3VtZW50LWxvY2F0aW9uLTAtc2Vjb25kcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMs
OSBAQAogPHRpdGxlPkphdmFTY3JpcHQgUmVkaXJlY3Q8L3RpdGxlPgogCiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5jbGVh
ckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmxvY2F0aW9uID0gInJlc291cmNlcy9y
ZWRpcmVjdC10YXJnZXQuaHRtbCMxIjsgfSwgMCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi0yLXNl
Y29uZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rvcnkv
cmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tMi1zZWNvbmRzLmh0bWwJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1
bWVudC1sb2NhdGlvbi0yLXNlY29uZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkg
QEAKIDx0aXRsZT5KYXZhU2NyaXB0IFJlZGlyZWN0PC90aXRsZT4KIAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5j
bGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuY2xlYXJC
YWNrRm9yd2FyZExpc3QoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNl
dFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvcmVk
aXJlY3QtdGFyZ2V0Lmh0bWwjMSI7IH0sIDIwMDApOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVm
b3JlLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpz
LWRvY3VtZW50LWxvY2F0aW9uLWJlZm9yZS1sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMs
OSArMyw5IEBACiA8dGl0bGU+SmF2YVNjcmlwdCBSZWRpcmVjdDwvdGl0bGU+CiAKIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiB9CiBkb2N1bWVudC5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwj
MSI7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRp
cmVjdC1qcy1mb3JtLXN1Ym1pdC0wLXNlY29uZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtMC1zZWNvbmRz
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC0wLXNlY29uZHMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMyw5ICszLDkgQEAKIDx0aXRsZT5KYXZhU2NyaXB0IFJlZGlyZWN0PC90aXRsZT4KIAogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTItc2Vjb25kcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1
Ym1pdC0yLXNlY29uZHMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTItc2Vjb25kcy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHRpdGxlPkphdmFTY3JpcHQgUmVkaXJlY3Q8
L3RpdGxlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtYmVmb3JlLWxv
YWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtanMtZm9ybS1zdWJtaXQtYmVmb3JlLWxvYWQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0
LWJlZm9yZS1sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8dGl0bGU+
SmF2YVNjcmlwdCBSZWRpcmVjdDwvdGl0bGU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9y
d2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRM
aXN0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwv
aGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1s
b2NhdGlvbi0wLXNlY29uZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tMC1zZWNvbmRzLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1s
b2NhdGlvbi0wLXNlY29uZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDx0
aXRsZT5KYXZhU2NyaXB0IFJlZGlyZWN0PC90aXRsZT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9y
d2FyZExpc3QoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgeyBsb2NhdGlvbiA9ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0
bWwjMSI7IH0sIDApOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tMi1zZWNvbmRzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLTItc2Vj
b25kcy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tMi1zZWNvbmRzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsOSArMyw5IEBACiA8dGl0bGU+SmF2YVNjcmlwdCBSZWRpcmVjdDwvdGl0bGU+CiAKIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9jYXRpb24gPSAicmVzb3VyY2Vz
L3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAyMDAwKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi0w
LXNlY29uZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLTAtc2Vjb25kcy5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9j
YXRpb24tYXNzaWduLTAtc2Vjb25kcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBA
QAogPHRpdGxlPkphdmFTY3JpcHQgUmVkaXJlY3Q8L3RpdGxlPgogCiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNs
ZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7IGxvY2F0aW9uLmFzc2lnbigicmVzb3VyY2VzL3JlZGlyZWN0
LXRhcmdldC5odG1sIzEiKTsgfSwgMCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tMi1zZWNvbmRzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LWpzLWxvY2F0aW9uLWFzc2lnbi0yLXNlY29uZHMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2ln
bi0yLXNlY29uZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDx0aXRsZT5K
YXZhU2NyaXB0IFJlZGlyZWN0PC90aXRsZT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3
YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExp
c3QoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeyBsb2NhdGlvbi5hc3NpZ24oInJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRt
bCMxIik7IH0sIDIwMDApOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxv
Y2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJl
Zm9yZS1sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8dGl0bGU+SmF2
YVNjcmlwdCBSZWRpcmVjdDwvdGl0bGU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2Fy
ZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiBsb2NhdGlvbi5hc3NpZ24o
InJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIik7CiA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUt
bG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9y
ZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYmVm
b3JlLWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDx0aXRsZT5KYXZh
U2NyaXB0IFJlZGlyZWN0PC90aXRsZT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJk
TGlzdCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3Qo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGxvY2F0aW9uID0gInJlc291
cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIjsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtMC1zZWNvbmRz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWxvY2F0aW9uLWhyZWYtMC1zZWNvbmRzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVm
LTAtc2Vjb25kcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHRpdGxlPkph
dmFTY3JpcHQgUmVkaXJlY3Q8L3RpdGxlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zvcndh
cmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlz
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7IGxvY2F0aW9uLmhyZWYgPSAicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1s
IzEiOyB9LCAwKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtMi1zZWNvbmRzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhy
ZWYtMi1zZWNvbmRzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLTItc2Vjb25kcy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHRpdGxlPkphdmFTY3JpcHQgUmVkaXJlY3Q8
L3RpdGxlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGxvY2F0aW9u
LmhyZWYgPSAicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAyMDAwKTsKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpz
LWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9h
ZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0zLDkgKzMsOSBAQAogPHRpdGxlPkphdmFTY3JpcHQgUmVkaXJlY3Q8L3RpdGxlPgog
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogfQogbG9jYXRpb24uaHJlZiA9ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0
Lmh0bWwjMSI7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLTAtc2Vjb25kcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1y
ZXBsYWNlLTAtc2Vjb25kcy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tcmVwbGFjZS0wLXNlY29uZHMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDx0aXRsZT5KYXZhU2NyaXB0IFJl
ZGlyZWN0PC90aXRsZT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBs
b2NhdGlvbi5yZXBsYWNlKCJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSIpOyB9LCAw
KTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMi1zZWNvbmRzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2Ut
Mi1zZWNvbmRzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLTItc2Vjb25kcy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHRpdGxlPkphdmFTY3JpcHQgUmVkaXJlY3Q8
L3RpdGxlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGxvY2F0aW9u
LnJlcGxhY2UoInJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIik7IH0sIDIwMDApOwog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
anMtbG9jYXRpb24tcmVwbGFjZS1iZWZvcmUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLWJl
Zm9yZS1sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLWJlZm9yZS1sb2FkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8dGl0bGU+SmF2YVNjcmlwdCBSZWRpcmVj
dDwvdGl0bGU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiBsb2NhdGlvbi5yZXBsYWNlKCJyZXNvdXJjZXMvcmVk
aXJlY3QtdGFyZ2V0Lmh0bWwjMSIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtbWV0YS1yZWZyZXNoLTAtc2Vjb25kcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJl
ZnJlc2gtMC1zZWNvbmRzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMC1zZWNvbmRzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8bWV0YSBodHRwLWVxdWl2PSJSZWZyZXNoIiBj
b250ZW50PSIwOyB1cmw9cmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiPgogPHRpdGxl
Pk1ldGEgUmVmcmVzaCBSZWRpcmVjdDwvdGl0bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zv
cndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJk
TGlzdCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiAK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJl
c2gtMi1zZWNvbmRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LW1ldGEtcmVmcmVzaC0yLXNlY29uZHMuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LW1ldGEtcmVm
cmVzaC0yLXNlY29uZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxtZXRh
IGh0dHAtZXF1aXY9IlJlZnJlc2giIGNvbnRlbnQ9IjI7IHVybD1yZXNvdXJjZXMvcmVkaXJlY3Qt
dGFyZ2V0Lmh0bWwjMSI+CiA8dGl0bGU+TWV0YSBSZWZyZXNoIFJlZGlyZWN0PC90aXRsZT4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiB9CiA8L3NjcmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlcGxhY2VzdGF0ZS1wb3N0LXRvLWdldC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlcGxhY2VzdGF0ZS1wb3N0LXRvLWdldC0yLmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXBs
YWNlc3RhdGUtcG9zdC10by1nZXQtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBA
QAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogCiBmdW5jdGlvbiB0ZXN0KCkKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZXBsYWNlc3RhdGUtcG9zdC10by1nZXQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVwbGFjZXN0YXRlLXBvc3QtdG8tZ2V0Lmh0
bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9y
ZXBsYWNlc3RhdGUtcG9zdC10by1nZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkg
QEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVzb3VyY2VzL2JhY2stZHVyaW5nLW9ubG9hZC1jb250YWluZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVzb3VyY2VzL2Jh
Y2stZHVyaW5nLW9ubG9hZC1jb250YWluZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9iYWNrLWR1cmluZy1vbmxvYWQt
Y29udGFpbmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNCArNSw0IEBAIG9ubG9hZCA9IGZ1
bmN0aW9uKCkgewogPC9zY3JpcHQ+CiBjb250YWluZXIKIDxpZnJhbWUgc3JjPSJiYWNrLWR1cmlu
Zy1vbmxvYWQtbWlkZGxlLmh0bWwiPjwvaWZyYW1lPgotPHNjcmlwdD5oaXN0b3J5LmJhY2soKTs8
L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8c2NyaXB0Pmhpc3RvcnkuYmFj
aygpOzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291
cmNlcy9iYWNrLWR1cmluZy1vbmxvYWQtaHVuZy1wYWdlLnBocAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVzb3VyY2VzL2JhY2stZHVyaW5nLW9ubG9hZC1o
dW5nLXBhZ2UucGhwCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVzb3VyY2VzL2JhY2stZHVyaW5nLW9ubG9hZC1odW5nLXBhZ2UucGhwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDIgKzEsMiBAQAogPD8gc2xlZXAoNjApOyA/PgotRkFJTDogU2hvdWxk
IG5ldmVyIHNlZSB0aGlzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorRkFJTDogU2hvdWxk
IG5ldmVyIHNlZSB0aGlzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVz
b3VyY2VzL2JhY2std2l0aC1mcmFnbWVudC1jaGFuZ2UtdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9iYWNrLXdpdGgtZnJh
Z21lbnQtY2hhbmdlLXRhcmdldC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVzb3VyY2VzL2JhY2std2l0aC1mcmFnbWVudC1jaGFuZ2Ut
dGFyZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDggKzE3LDggQEAgb25oYXNoY2hhbmdl
ID0gZnVuY3Rpb24oKSB7CiBmdW5jdGlvbiBkb25lKCkgewogICAgIGRlbGV0ZSBzZXNzaW9uU3Rv
cmFnZS5kaWROYXZpZ2F0ZTsKICAgICBjb25zb2xlLmxvZygnVmlzaXRlZCBmcmFnbWVudCBhbmQg
d2FpdGVkLicpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMv
Y2hlY2stcmVmZXJyZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVzb3VyY2VzL2NoZWNrLXJlZmVycmVyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMvY2hlY2stcmVmZXJy
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQCBmdW5jdGlvbiBjaGVjaygp
IHsKICAgICBlbHNlCiAgICAgICAgIGxvZygiUEFTUzogY29ycmVjdCByZWZlcnJlciBzZW5kIik7
CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9jcm9zcy1vcmln
aW4tcmVwbGFjZXMtaGlzdG9yeS1vYmplY3QtY2hpbGQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4t
cmVwbGFjZXMtaGlzdG9yeS1vYmplY3QtY2hpbGQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMvY3Jvc3Mtb3Jp
Z2luLXJlcGxhY2VzLWhpc3Rvcnktb2JqZWN0LWNoaWxkLWlmcmFtZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHdp
bmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1yZXBsYWNlcy1oaXN0b3J5LW9i
amVjdC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1yZXBsYWNlcy1oaXN0b3J5LW9iamVjdC1pZnJh
bWUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4tcmVwbGFjZXMtaGlzdG9yeS1vYmplY3QtaWZyYW1l
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogd2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkKIHsKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291
cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMjIsMTEgKzIyLDExIEBAIGZ1bmN0aW9uIHRlc3RIaXN0b3J5SXRlbUNv
dW50KCkKIH0KIAogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbiAoKSB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICB0ZXN0SGlzdG9yeUl0
ZW1Db3VudCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRM
aXN0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0KIH0sIGZhbHNlKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZXBsYWNlc3RhdGUtY3VycmVudC5w
aHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNl
cy9yZXBsYWNlc3RhdGUtY3VycmVudC5waHAJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMvcmVwbGFjZXN0YXRlLWN1cnJlbnQucGhw
CSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
aGlzdG9yeS5nbygwKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1v
dmVJdGVtKCJzdGF0ZSIpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICB9CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZXNvdXJjZXMvcmVwbGFjZXN0YXRlLWZvcndhcmQtYmFjay5waHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZXBsYWNlc3Rh
dGUtZm9yd2FyZC1iYWNrLnBocAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZXBsYWNlc3RhdGUtZm9yd2FyZC1iYWNrLnBocAko
d29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGhp
c3RvcnkuZ28oLTEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92
ZUl0ZW0oInN0YXRlIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bmNyZW1lbnRhbC9mcmFtZS1mb2N1cy1iZWZvcmUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5jcmVtZW50YWwvZnJhbWUtZm9jdXMtYmVmb3JlLWxvYWQu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbmNyZW1l
bnRhbC9mcmFtZS1mb2N1cy1iZWZvcmUtbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDgg
KzIsOCBAQAogPGJvZHk+CiA8aWZyYW1lIGlkPSJzbG93VG9Mb2FkIiBuYW1lPSJzbG93VG9Mb2Fk
IiBzcmM9InNsb3ctdXRmOC10ZXh0LnBsIiBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW4iPjwvaWZy
YW1lPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogc2xvd1RvTG9hZC5mb2N1cygpOwog
c2xvd1RvTG9hZC5ibHVyKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luY3JlbWVu
dGFsL3BhcnRpYWwtanBlZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5jcmVtZW50YWwvcGFydGlhbC1qcGVnLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5jcmVtZW50YWwvcGFydGlhbC1qcGVnLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTMsMTcgKzMsMTcgQEAKIDxoZWFkPgogICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CiAgICAgZnVuY3Rpb24gZm9yY2VEaXNwbGF5KCkgewotICAgICAgd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgIHdpbmRvdy50ZXN0UnVubmVy
LmRpc3BsYXkoKTsKICAgICAgIHNldFRpbWVvdXQoc3RvcExvYWRpbmcsIDApOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHN0b3BMb2FkaW5nKCkgewogICAgICAgd2luZG93LnN0b3AoKTsKLSAgICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICB3aW5kb3cu
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHdpbmRvdy50
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgIHNldFRpbWVvdXQoZm9yY2VEaXNwbGF5
LCAwKTsKICAgICB9CiAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bmNyZW1lbnRhbC9wYXVzZS1pbi1zY3JpcHQtZWxlbWVudC5wbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luY3JlbWVudGFsL3BhdXNlLWluLXNjcmlwdC1lbGVtZW50LnBs
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luY3JlbWVudGFs
L3BhdXNlLWluLXNjcmlwdC1lbGVtZW50LnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsxNSw4
IEBAIHByaW50ICI8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIGxpbmUgbnVtYmUKIHByaW50ICJpbnRl
cnJ1cHRlZCBtaWQgd2F5IHRocm91Z2ggdGhlIHNjcmlwdCBlbGVtZW50PC9wPlxuIjsKIHByaW50
ICI8cHJlIGlkPWxvZz48L3ByZT5cbiI7CiBwcmludCAiPHNjcmlwdD5cbiI7Ci1wcmludCAiaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcilcbiI7Ci1wcmludCAiICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTtcbiI7CitwcmludCAiaWYgKHdpbmRvdy50ZXN0UnVubmVy
KVxuIjsKK3ByaW50ICIgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7XG4iOwogZm9yICgkY291
bnQ9MTsgJGNvdW50PDQwMDA7ICRjb3VudCsrKSB7CiAgICAgcHJpbnQgIlxuIjsKIH0KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5jcmVtZW50YWwvc2xvdy11dGY4LWNzcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5jcmVtZW50YWwvc2xvdy11dGY4
LWNzcy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
Y3JlbWVudGFsL3Nsb3ctdXRmOC1jc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDgg
QEAKIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3Nsb3ctdXRmOC1jc3Mu
cGwiIHR5cGU9InRleHQvY3NzIiBjaGFyc2V0PSJ1dGYtOCI+CiA8c2NyaXB0PgogZnVuY3Rpb24g
dGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gCiAgICAgICAgIChkb2N1bWVudC5zdHls
ZVNoZWV0cy5pdGVtKDApLmNzc1J1bGVzLml0ZW0oMCkuc2VsZWN0b3JUZXh0ID09ICIjcmVzdWx0
IikgPyAiUEFTUyIgOiAiRkFJTCI7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
Y3JlbWVudGFsL3Nsb3ctdXRmOC1odG1sLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5jcmVtZW50YWwvc2xvdy11dGY4LWh0bWwucGwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5jcmVtZW50YWwvc2xvdy11dGY4LWh0bWwucGwJ
KHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDggQEAgcHJpbnQgIlxuIjsKIHByaW50ICJceGVm
XHhiYlx4YmY8Ym9keT48cD5UZXN0IGZvciBidWcgMTA2OTc6IEVycm9ycyBpbiBpbmNyZW1lbnRh
bCBkZWNvZGluZyBvZiBVVEYtOC48L3A+XG4iOwogcHJpbnQgIjxwPlNob3VsZCBiZSBhIGJsYW5r
IHBhZ2UgKGV4Y2VwdCBmb3IgdGhpcyBkZXNjcmlwdGlvbikuPC9wPlxuIjsKIHByaW50ICI8c2Ny
aXB0PlxuIjsKLXByaW50ICJpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKVxuIjsKLXBy
aW50ICIJbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpO1xuIjsKK3ByaW50ICJpZiAo
d2luZG93LnRlc3RSdW5uZXIpXG4iOworcHJpbnQgIgl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTtc
biI7CiBwcmludCAiPC9zY3JpcHQ+XG4iOwogCiAjIFUrMjAwMyA9IFVURi04IEUyODA4MyA9IEVN
IFNQQUNFCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luY3JlbWVudGFsL3NwbGl0LWhl
eC1lbnRpdGllcy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luY3Jl
bWVudGFsL3NwbGl0LWhleC1lbnRpdGllcy5wbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbmNyZW1lbnRhbC9zcGxpdC1oZXgtZW50aXRpZXMucGwJKHdvcmtp
bmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAgcHJpbnQgIlxuIjsKIAogcHJpbnQgIjxib2R5Plxu
IjsKIHByaW50ICI8c2NyaXB0PlxuIjsKLXByaW50ICIgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcilcbiI7Ci1wcmludCAiICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7XG4iOworcHJpbnQgIiAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpXG4iOworcHJp
bnQgIiAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7XG4iOwogcHJpbnQgIjwvc2NyaXB0
PlxuIjsKIHByaW50ICI8cD5UZXN0IGZvciA8YSBocmVmPVwiaHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD00ODIwXCI+YnVnIDQ4MjA8L2E+OiBoZXhhZGVjaW1h
bCBIVE1MIGVudGl0aWVzIHNwbGl0IGFjcm9zcyBUQ1AgcGFja2V0cyBhcmUgbm90IHBhcnNlZCBj
b3JyZWN0bHkuPC9wPiI7CiBwcmludCAiPHA+U2hvdWxkIGJlIGEgYmxhbmsgcGFnZSAoZXhjZXB0
IGZvciB0aGlzIGRlc2NyaXB0aW9uKS48L3A+IjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1jbGVhci1hcmd1bWVudHMtb24tZnJhbWUtbmF2
aWdhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yLWVuYWJsZWQvY29uc29sZS1jbGVhci1hcmd1bWVudHMtb24tZnJhbWUtbmF2aWdhdGlvbi5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci1lbmFibGVkL2NvbnNvbGUtY2xlYXItYXJndW1lbnRzLW9uLWZyYW1lLW5hdmlnYXRpb24uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y29uc29sZS1jbGVhci1hcmd1bWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiB2YXIgbG9hZENvdW50ID0g
MDsKQEAgLTE3LDggKzE3LDggQEAgZnVuY3Rpb24gZnJhbWVMb2FkZWQoZXZlbnQpIHsKICAgICB9
CiAKICAgICBkdW1wQ29uc29sZU1lc3NhZ2VBcmd1bWVudENvdW50cygpOwotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1jbGVhci1hcmd1bWVudHMtb24tZnJhbWUt
cmVtb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9jb25zb2xlLWNsZWFyLWFyZ3VtZW50cy1vbi1mcmFtZS1yZW1vdmUuaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5h
YmxlZC9jb25zb2xlLWNsZWFyLWFyZ3VtZW50cy1vbi1mcmFtZS1yZW1vdmUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxoZWFkPgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
b25zb2xlLWNsZWFyLWFyZ3VtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiBmdW5jdGlvbiByZW1vdmVJRnJh
bWUoKQpAQCAtMTYsOCArMTYsOCBAQCBmdW5jdGlvbiByZW1vdmVJRnJhbWUoKQogICAgICAgICBj
aGlsZCA9IGNvbnRhaW5lci5maXJzdENoaWxkOwogICAgIH0KICAgICBkdW1wQ29uc29sZU1lc3Nh
Z2VBcmd1bWVudENvdW50cygpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBm
dW5jdGlvbiBjcmVhdGVJRnJhbWUoKQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29u
c29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRpb24uaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1i
ZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QAogCiBmdW5jdGlvbiBvbmxvYWQoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNz
YWdlLCBmYWxzZSk7CkBAIC0xNSwxMiArMTUsMTIgQEAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCByZWNlaQogZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKICAgICBp
ZiAoZXZlbnQuZGF0YSAhPSAiZnJhbWVSZWxvYWRlZCIpIHsKICAgICAgICAgdGVzdEZhaWxlZCgi
VW5leHBlY3RlZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuc2hvd1dlYkluc3BlY3RvcigpOwogICAgIHJ1blRlc3QoKTsKIH0KIApJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2Vj
dXJpdHlQb2xpY3ktYmxvY2tzLXNldEludGVydmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3kt
YmxvY2tzLXNldEludGVydmFsLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29udGVudFNlY3VyaXR5UG9saWN5LWJsb2Nr
cy1zZXRJbnRlcnZhbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw5ICsxMCw5IEBAIGZ1bmN0
aW9uIGxvZyh0ZXh0KSB7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdicicpKTsKIH0KIGZ1bmN0aW9uIG9ubG9hZCgpIHsKLSAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3Rv
cigpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgdGVzdFJ1bm5lci5zaG93V2ViSW5zcGVjdG9yKCk7CiAgIH0KIAog
ICB2YXIgaWQgPSBzZXRJbnRlcnZhbCgibG9nKCdGQUlMJykiLCAwKTsKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29udGVudFNlY3VyaXR5UG9saWN5LWJs
b2Nrcy1zZXRUaW1lb3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldFRpbWVv
dXQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3ItZW5hYmxlZC9jb250ZW50U2VjdXJpdHlQb2xpY3ktYmxvY2tzLXNldFRpbWVvdXQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTAsOSArMTAsOSBAQCBmdW5jdGlvbiBsb2codGV4dCkgewog
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnIn
KSk7CiB9CiBmdW5jdGlvbiBvbmxvYWQoKSB7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKKyAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
IHRlc3RSdW5uZXIuc2hvd1dlYkluc3BlY3RvcigpOwogICB9CiAKICAgdmFyIGlkID0gc2V0VGlt
ZW91dCgibG9nKCdGQUlMJykiLCAwKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvZGF0YWJhc2Utb3Blbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZGF0YWJhc2Utb3Blbi5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVk
L2RhdGFiYXNlLW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiwxMyArNiwxMyBAQAogCiBm
dW5jdGlvbiBvbmxvYWQoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
CiAgICAgdmFyIGRiID0gb3BlbkRhdGFiYXNlKCJJbnNwZWN0b3JEYXRhYmFzZVRlc3QiLCAiMS4w
IiwgIlRlc3Qgb2YgZGF0YWJhc2UgaW5zdHJ1bWVudGF0aW9uIiwgMSk7CiAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
aG93V2ViSW5zcGVjdG9yKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLnNob3dXZWJJbnNwZWN0b3IoKTsKICAgICBydW5UZXN0KCk7CiB9CiAKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZGVkaWNhdGVkLXdvcmtl
cnMtbGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yLWVuYWJsZWQvZGVkaWNhdGVkLXdvcmtlcnMtbGlzdC5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2RlZGljYXRlZC13
b3JrZXJzLWxpc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKIDxzY3JpcHQ+
CiBmdW5jdGlvbiBoYW5kbGVMb2FkKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKIAogICAgIHZhciB3b3JrZXIxID0gbmV3IFdvcmtlcigicmVzb3VyY2VzL2RlZGljYXRl
ZC13b3JrZXIuanM/aWQ9MSIpOwogICAgIHdvcmtlcjEub25tZXNzYWdlID0gaGFuZGxlTWVzc2Fn
ZUZyb21Xb3JrZXI7CkBAIC0xOSw4ICsxOSw4IEBAIGZ1bmN0aW9uIGhhbmRsZUxvYWQoKQogICAg
ICAgICBtZXNzYWdlQ291bnQrKzsKICAgICAgICAgY29uc29sZS5sb2coIlJlY2VpdmVkIG1lc3Nh
Z2UgZnJvbSB3b3JrZXIgIiArIG1lc3NhZ2VDb3VudCk7CiAgICAgICAgIGlmIChtZXNzYWdlQ291
bnQgPT09IDIpIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3Rvcigp
OworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2hvd1dlYkluc3BlY3RvcigpOwogICAgICAgICAgICAgcnVuVGVzdCgpOwogICAg
ICAgICB9CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5h
YmxlZC9kb2N1bWVudC13cml0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZG9jdW1lbnQtd3JpdGUuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb2N1bWVu
dC13cml0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAKIGZ1bmN0aW9u
IG9ubG9hZCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgc2Ny
aXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgc2NyaXB0LnRleHRD
b250ZW50ID0gImNvbnNvbGUubG9nKFwic2NyaXB0IGVsZW1lbnRcIikiOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kb20tc3RvcmFnZS1vcGVuLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9k
b20tc3RvcmFnZS1vcGVuLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZG9tLXN0b3JhZ2Utb3Blbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC02LDEzICs2LDEzIEBACiAKIGZ1bmN0aW9uIG9ubG9hZCgpCiB7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2Vb
Imluc3BlY3RvciJdID0gInRydWUiOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zaG93V2ViSW5z
cGVjdG9yKCk7CiAgICAgcnVuVGVzdCgpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci1lbmFibGVkL2luamVjdGVkLXNjcmlwdC1kaXNjYXJkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9pbmplY3Rl
ZC1zY3JpcHQtZGlzY2FyZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2luamVjdGVkLXNjcmlwdC1kaXNjYXJkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5IEBACiAKIGZ1bmN0aW9uIG9wZW5XZWJJbnNwZWN0
b3IoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVu
bmVyLnNob3dXZWJJbnNwZWN0b3IoKTsKICAgICAgICAgcnVuVGVzdCgpOwogICAgIH0KIH0KQEAg
LTE2LDkgKzE2LDkgQEAgZnVuY3Rpb24gb3BlbldlYkluc3BlY3RvcigpCiBmdW5jdGlvbiByZW9w
ZW5XZWJJbnNwZWN0b3Iob2JqZWN0SWQpCiB7CiAgICAgd2luZG93Lm9iamVjdElkID0gdW5lc2Nh
cGUob2JqZWN0SWQpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9y
KCk7CisgICAgdGVzdFJ1bm5lci5jbG9zZVdlYkluc3BlY3RvcigpOwogICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9y
KCk7CisgICAgICB0ZXN0UnVubmVyLnNob3dXZWJJbnNwZWN0b3IoKTsKICAgICAgIHJ1blRlc3Qo
KTsKICAgICB9LCAwKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
LWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtY2xlYXItYXJndW1lbnRzLWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVz
b3VyY2VzL2NvbnNvbGUtY2xlYXItYXJndW1lbnRzLWlmcmFtZS5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNl
cy9jb25zb2xlLWNsZWFyLWFyZ3VtZW50cy1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKLTxzY3JpcHQ+DQotY29uc29sZS5sb2coIkEgbWVzc2FnZSB3aXRoIGZpcnN0
IGFyZ3VtZW50IHN0cmluZyIsICJTZWNvbmQgYXJndW1lbnQgd2hpY2ggc2hvdWxkIGJlIGRpc2Nh
cmRlZCBvbiBpZnJhbWUgcmVtb3ZhbCIpOw0KLWNvbnNvbGUubG9nKDIwMTEsICJBIG1lc3NhZ2Ug
d2l0aCBmaXJzdCBhcmd1bWVudCBpbnRlZ2VyIik7DQotY29uc29sZS5sb2cod2luZG93LCAiQSBt
ZXNzYWdlIHdpdGggZmlyc3QgYXJndW1lbnQgd2luZG93Iik7DQotPC9zY3JpcHQ+DQorPHNjcmlw
dD4KK2NvbnNvbGUubG9nKCJBIG1lc3NhZ2Ugd2l0aCBmaXJzdCBhcmd1bWVudCBzdHJpbmciLCAi
U2Vjb25kIGFyZ3VtZW50IHdoaWNoIHNob3VsZCBiZSBkaXNjYXJkZWQgb24gaWZyYW1lIHJlbW92
YWwiKTsKK2NvbnNvbGUubG9nKDIwMTEsICJBIG1lc3NhZ2Ugd2l0aCBmaXJzdCBhcmd1bWVudCBp
bnRlZ2VyIik7Citjb25zb2xlLmxvZyh3aW5kb3csICJBIG1lc3NhZ2Ugd2l0aCBmaXJzdCBhcmd1
bWVudCB3aW5kb3ciKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvY29uc29sZS1yZXNvdXJjZS1lcnJvcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXJlc291cmNlLWVycm9ycy5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9j
b25zb2xlLXJlc291cmNlLWVycm9ycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01MCw0ICs1MCw0
IEBAIGZ1bmN0aW9uIHRlc3QoKQogVGVzdHMgdGhhdCBlcnJvcnMgdG8gbG9hZCBhIHJlc291cmNl
IGNhdXNlIGVycm9yIG1lc3NhZ2VzIHRvIGJlIGxvZ2dlZCB0byBjb25zb2xlLgogPC9wPgogPC9i
b2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vic29ja2V0LWVycm9y
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29u
c29sZS13ZWJzb2NrZXQtZXJyb3IuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3IuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAgdmFyIG5leHRUZXN0SW5kZXggPSAwOwogCiBmdW5j
dGlvbiBvbmxvYWQoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IGlmICghd2luZG93LldlYlNvY2tldCkgewogICAgICAgICBjb25zb2xlLmxvZygiV2ViU29ja2V0
IGlzIG5vdCBzdXBwb3J0ZWQuIik7IHJldHVybjsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTM3NSw3ICszNzUsNyBAQCBmdW5jdGlvbiBjbG9zZUZy
b250ZW5kKGNhbGxiYWNrKQogICAgIC8vIERvIHRoaXMgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgdG8gc2VuZCByZXNwb25zZQogICAgIC8vIGJhY2sg
dG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGRlc3Ryb3llZC4KICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3Rv
cigpOworICAgICAgICB0ZXN0UnVubmVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CiAgICAgICAgIGNh
bGxiYWNrKCk7CiAgICAgfSwgMCk7CiB9CkBAIC0zODMsMTQgKzM4MywxNCBAQCBmdW5jdGlvbiBj
bG9zZUZyb250ZW5kKGNhbGxiYWNrKQogZnVuY3Rpb24gb3BlbkZyb250ZW5kQW5kSW5jcmVtZW50
KCkKIHsKICAgICBmcm9udGVuZFJlb3BlbmluZ0NvdW50Kys7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2hvd1dlYkluc3BlY3RvcigpOworICAgIHRlc3RSdW5uZXIuc2hvd1dlYkluc3BlY3Rv
cigpOwogICAgIHJ1blRlc3QoKTsKIH0KIAogZnVuY3Rpb24gcnVuQWZ0ZXJJZnJhbWVJc0xvYWRl
ZCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgZnVuY3Rpb24g
c3RlcCgpCiAgICAgewogICAgICAgICBpZiAoIXdpbmRvdy5pZnJhbWVMb2FkZWQpCkBAIC00MDMs
MTEgKzQwMywxMSBAQCBmdW5jdGlvbiBydW5BZnRlcklmcmFtZUlzTG9hZGVkKCkKIAogZnVuY3Rp
b24gcnVuVGVzdChlbmFibGVXYXRjaERvZ1doaWxlRGVidWdnaW5nKQogewotICAgIGlmICghd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICBm
dW5jdGlvbiBydW5UZXN0SW5Gcm9udGVuZChpbml0aWFsaXphdGlvbkZ1bmN0aW9ucywgdGVzdEZ1
bmN0aW9uLCBjb21wbGV0ZVRlc3RDYWxsSWQpCiAgICAgewpAQCAtNDQ0LDcgKzQ0NCw3IEBAIGZ1
bmN0aW9uIHJ1blRlc3QoZW5hYmxlV2F0Y2hEb2dXaGlsZURlYnUKICAgICB9CiAgICAgdmFyIHBh
cmFtZXRlcnMgPSBbIlsiICsgaW5pdGlhbGl6YXRpb25GdW5jdGlvbnMgKyAiXSIsIHRlc3QsIGNv
bXBsZXRlVGVzdENhbGxJZF07CiAgICAgdmFyIHRvRXZhbHVhdGUgPSAiKCIgKyBydW5UZXN0SW5G
cm9udGVuZCArICIpKCIgKyBwYXJhbWV0ZXJzLmpvaW4oIiwgIikgKyAiKTsiOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IocnVuVGVzdENhbGxJZCwgdG9F
dmFsdWF0ZSk7CisgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKHJ1blRlc3RD
YWxsSWQsIHRvRXZhbHVhdGUpOwogCiAgICAgaWYgKGVuYWJsZVdhdGNoRG9nV2hpbGVEZWJ1Z2dp
bmcpIHsKICAgICAgICAgZnVuY3Rpb24gd2F0Y2hEb2coKQpAQCAtNDcxLDkgKzQ3MSw5IEBAIGZ1
bmN0aW9uIGNsb3NlSW5zcGVjdG9yQW5kTm90aWZ5RG9uZSgpCiAgICAgaWYgKHdpbmRvdy5fd2F0
Y2hEb2dUaW1lcikKICAgICAgICAgY2xlYXJUaW1lb3V0KHdpbmRvdy5fd2F0Y2hEb2dUaW1lcik7
CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbG9zZVdlYkluc3BlY3RvcigpOworICAgIHRl
c3RSdW5uZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIDApOwogfQogCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93ZWItc29ja2V0LWZyYW1lLWVycm9yLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd2ViLXNvY2tldC1mcmFt
ZS1lcnJvci5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci93ZWItc29ja2V0LWZyYW1lLWVycm9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTMsOCArMyw4IEBACiA8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0
UHJvdG9jb2xFbmFibGVkIiwgMCk7CiB2YXIgd3M7CiBmdW5jdGlvbiBzZW5kTWVzc2FnZXMoKSB7
CiAgICAgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4MDAwL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2RvZXNfbm90X2V4aXN0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci93ZWItc29ja2V0LWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd2ViLXNvY2tldC1mcmFtZS5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93ZWItc29ja2V0LWZy
YW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8c2NyaXB0IHNyYz0iaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDAp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiB2YXIgd3M7
CiBmdW5jdGlvbiBzZW5kTWVzc2FnZXMoKSB7CiAgICAgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czov
L2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXNvdXJjZXMvd2l0aG91dC1p
bmRleGVkLWRiLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5kZXhlZGRiL3Jlc291cmNlcy93aXRob3V0LWluZGV4ZWQtZGIuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L3Jlc291cmNlcy93aXRob3V0LWluZGV4ZWQtZGIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw5
ICs2LDkgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFnZUxvYWRlZCgpOwogICAgIH0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoMCwgIigiICsg
bm90aWZ5RnJvbnRlbmQgKyAiKSgpIik7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUlu
V2ViSW5zcGVjdG9yKDAsICIoIiArIG5vdGlmeUZyb250ZW5kICsgIikoKSIpOwogfQogPC9zY3Jp
cHQ+CiA8cD5QYWdlIHdpdGhvdXQgSW5kZXhlZCBEQi48L3A+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3BpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3BpbmcuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9waW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24g
b25sb2FkKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEh5cGVybGlu
a0F1ZGl0aW5nRW5hYmxlZCIsIDEpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEh5cGVybGlua0F1ZGl0aW5n
RW5hYmxlZCIsIDEpOwogICAgIHJ1blRlc3QoKTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZXMvc2NyaXB0LWluaXRpYWwu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2UtdHJlZS9yZXNvdXJjZXMvc2NyaXB0LWluaXRpYWwuanMJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2Vz
L3NjcmlwdC1pbml0aWFsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMiBAQAogZnVuY3Rp
b24gZm9vKCkgewotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2VzL3Njcmlw
dC1uYXZpZ2F0ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZXMvc2NyaXB0LW5hdmlnYXRlZC5qcwkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Ut
dHJlZS9yZXNvdXJjZXMvc2NyaXB0LW5hdmlnYXRlZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwy
ICsxLDIgQEAKIGZ1bmN0aW9uIGZvbygpIHsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFmdGVyLTMwMy1h
ZnRlci1wb3N0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Fk
aW5nLzMwNy1hZnRlci0zMDMtYWZ0ZXItcG9zdC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFmdGVyLTMwMy1hZnRlci1wb3N0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwotICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNr
cygpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgdGVzdFJ1bm5lci5kdW1wUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYWQtc2NoZW1lLXN1YmZyYW1lLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2JhZC1zY2hlbWUtc3ViZnJh
bWUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Fk
aW5nL2JhZC1zY2hlbWUtc3ViZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogVGhpcyBpcyBhIHRlc3Qgb2Yg
bG9hZCBjYWxsYmFja3MuIEl0IGlzIG9ubHkgdXNlZnVsIGluc2lkZSB0aGUgcmVncmVzc2lvbiB0
ZXN0IHRvb2wuPGJyPgogPGlmcmFtZSBuYW1lPSJmMSIgc3JjPSJ0aGlzLWlzLWRlZmluaXRlbHkt
YS1iYWQtdXJpLXNjaGVtZToiPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL2JhZC1zZXJ2ZXItc3ViZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFkLXNlcnZlci1zdWJmcmFtZS5odG1sCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFkLXNlcnZlci1z
dWJmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogPC9zY3JpcHQ+CiBUaGlzIGlzIGEgdGVzdCBvZiBsb2FkIGNhbGxiYWNrcy4g
SXQgaXMgb25seSB1c2VmdWwgaW5zaWRlIHRoZSByZWdyZXNzaW9uIHRlc3QgdG9vbC48YnI+CiBJ
dCBhbHNvIGFzc3VtZXMgdGhlcmUgaXMgbm8gd2ViIHNlcnZlciBydW5uaW5nIGxvY2FsbHkgb24g
cG9ydCA1NDMyMS48YnI+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFz
aWMtYXV0aC1yZXNlbmQtd3JvbmctY3JlZGVudGlhbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZXNlbmQtd3JvbmctY3JlZGVu
dGlhbHMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL2Jhc2ljLWF1dGgtcmVzZW5kLXdyb25nLWNyZWRlbnRpYWxzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIsMTkgKzIsMTkgQEAKIDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VzKHRydWUpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uVXNl
cm5hbWUoIndyb25ndXNlcm5hbWUiKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRo
ZW50aWNhdGlvblBhc3N3b3JkKCJ3cm9uZ3Bhc3N3b3JkIik7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMo
dHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ3cm9uZ3Vz
ZXJuYW1lIik7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJ3cm9u
Z3Bhc3N3b3JkIik7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0
aW9uIGZpcnN0RnJhbWVMb2FkZWQoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVz
ZXJuYW1lKCJjb3JyZWN0dXNlcm5hbWUiKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgiY29ycmVjdHBhc3N3b3JkIik7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25V
c2VybmFtZSgiY29ycmVjdHVzZXJuYW1lIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVu
dGljYXRpb25QYXNzd29yZCgiY29ycmVjdHBhc3N3b3JkIik7CiAgICAgfQogICAgIHZhciBmcmFt
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwogICAgIGZyYW1lLnNldEF0dHJp
YnV0ZSgic3JjIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy90ZXN0
Mi9iYXNpYy1hdXRoLXRlc3RpbmcucGhwP3VzZXJuYW1lPWNvcnJlY3R1c2VybmFtZSZwYXNzd29y
ZD1jb3JyZWN0cGFzc3dvcmQiKTsKQEAgLTIzLDggKzIzLDggQEAgZnVuY3Rpb24gZmlyc3RGcmFt
ZUxvYWRlZCgpIHsKIH0KIAogZnVuY3Rpb24gc2Vjb25kRnJhbWVMb2FkZWQoKSB7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXNlbnQtYXV0b21hdGljYWxseS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1j
cmVkZW50aWFscy1zZW50LWF1dG9tYXRpY2FsbHkuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXNlbnQtYXV0
b21hdGljYWxseS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIwICsxLDIwIEBACiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJmaXJzdCIpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoImZpcnN0LXB3Iik7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZXModHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlv
blVzZXJuYW1lKCJmaXJzdCIpOworICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNz
d29yZCgiZmlyc3QtcHciKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAog
ZnVuY3Rpb24gZmlyc3RGcmFtZUxvYWRlZCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNh
dGlvblVzZXJuYW1lKCJzZWNvbmQiKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
QXV0aGVudGljYXRpb25QYXNzd29yZCgic2Vjb25kLXB3Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSgi
c2Vjb25kIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgi
c2Vjb25kLXB3Iik7CiAgICAgfQogICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlmcmFtZSIpOwogICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIik7CkBA
IC0yNCw5ICsyNCw5IEBAIGZ1bmN0aW9uIGZpcnN0RnJhbWVMb2FkZWQoKQogCiBmdW5jdGlvbiBz
ZWNvbmRGcmFtZUxvYWRlZCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVzZXJu
YW1lKCJ0aGlyZCIpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNh
dGlvblBhc3N3b3JkKCJ0aGlyZC1wdyIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICB0ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoInRoaXJkIik7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgidGhpcmQtcHciKTsK
ICAgICB9CiAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7
CiAgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xv
YWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiKTsKQEAgLTM2LDkgKzM2LDkg
QEAgZnVuY3Rpb24gc2Vjb25kRnJhbWVMb2FkZWQoKQogCiBmdW5jdGlvbiB0aGlyZEZyYW1lTG9h
ZGVkKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoImZvdXJ0aCIp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3Jk
KCJmb3VydGgtcHciKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJmb3VydGgiKTsKKyAgICAgICAgdGVz
dFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJmb3VydGgtcHciKTsKICAgICB9CiAg
ICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CiAgICAgZnJh
bWUuc2V0QXR0cmlidXRlKCJzcmMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVz
b3VyY2VzL290aGVyc3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiKTsKQEAgLTQ4
LDggKzQ4LDggQEAgZnVuY3Rpb24gdGhpcmRGcmFtZUxvYWRlZCgpCiAKIGZ1bmN0aW9uIGZvdXJ0
aEZyYW1lTG9hZGVkKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMuaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2lj
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiA8L3NjcmlwdD4KIFRoaXMgaXMgYSB0ZXN0IG9mIGxvYWQgY2FsbGJhY2tzLiBJdCBpcyBv
bmx5IHVzZWZ1bCBpbnNpZGUgdGhlIHJlZ3Jlc3Npb24gdGVzdCB0b29sLgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Nyb3NzLW9yaWdpbi1YSFItd2lsbExvYWRSZXF1ZXN0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Nyb3Nz
LW9yaWdpbi1YSFItd2lsbExvYWRSZXF1ZXN0Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9jcm9zcy1vcmlnaW4tWEhSLXdpbGxMb2FkUmVx
dWVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDEyIEBACiA8c2NyaXB0PgotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkVVJMVG9S
ZWRpcmVjdCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL2Jhci50eHQi
LCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL2Zvby50eHQiKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLmFkZFVSTFRvUmVkaXJlY3QoImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9iYXIudHh0IiwgImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9sb2Fk
aW5nL3Jlc291cmNlcy9mb28udHh0Iik7CiAKICAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOwogICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7
CiAgICAgICAgIGlmIChyZXF1ZXN0LnJlYWR5U3RhdGUgPT0gNCkKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgIH0KICAgICByZXF1ZXN0Lm9wZW4oIkdFVCIsICJodHRwOi8vbG9jYWxo
b3N0OjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvYmFyLnR4dCIpOwogICAgIHJlcXVlc3Quc2VuZCgp
OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2RlbGV0ZWQtaG9zdC1pbi1y
ZXNvdXJjZS1sb2FkLWRlbGVnYXRlLWNhbGxiYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2RlbGV0ZWQtaG9zdC1pbi1yZXNvdXJjZS1sb2FkLWRl
bGVnYXRlLWNhbGxiYWNrLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9hZGluZy9kZWxldGVkLWhvc3QtaW4tcmVzb3VyY2UtbG9hZC1kZWxlZ2F0ZS1j
YWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiA8c2Ny
aXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlv
biBydW5UZXN0KCkKQEAgLTE2LDkgKzE2LDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgfQog
ICAgIAogICAgIGRlbGV0ZSBzZXNzaW9uU3RvcmFnZS5maXJzdExvYWREb25lOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzKCk7Ci0gICAgICAgIHNldFRpbWVvdXQobGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpLCAwKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMo
KTsKKyAgICAgICAgc2V0VGltZW91dCh0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSwgMCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgYWxlcnQoIllvdSBtaWdodCBnZXQgYSBjcmFzaCBpbiBTYWZhcmkg
YWZ0ZXIgZGlzbWlzc2luZyB0aGlzIGFsZXJ0LiIpOwogICAgIH0KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy9lbWJlZC1pbWFnZS1sb2FkLW91dGxpdmVzLWdjLXdpdGhvdXQt
Y3Jhc2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvZW1iZWQtaW1hZ2UtbG9hZC1vdXRsaXZlcy1nYy13aXRob3V0LWNyYXNoaW5nLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9lbWJlZC1p
bWFnZS1sb2FkLW91dGxpdmVzLWdjLXdpdGhvdXQtY3Jhc2hpbmcuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNiArMSwxNiBAQAogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotCWxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQlsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
Kwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IH0KIAogZnVuY3Rpb24gbG9hZGVkKCkgewogCS8vIElmIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24g
Y2F1c2VzIHRoZSBpbWFnZSBsb2FkIHRvIHN0b3AgYW5kIHRoZXJlZm9yZSBjYXVzZXMgdGhlIGxv
YWQgZXZlbnQgdG8gZmlyZSBvbiB0aGUgbWFpbiBmcmFtZSwgd2UgZmFpbGVkLgogCWFsZXJ0KCJG
QUlMOiBUaGUgbG9hZCBldmVudCBmaXJlZCIpOwogCQotCWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0JCWxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwlpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiA8L3Njcmlw
dD4KQEAgLTI2LDggKzI2LDggQEAgVGhpcyBoYXMgYW4gZW1iZWQgZWxlbWVudCByZXByZXNlbnRp
bmcgYQogCiBmdW5jdGlvbiBmaW5pc2hlZCgpIHsKIAl3aW5kb3cuc3RvcCgpCi0JaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLQkJbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIGZvcmNlR0MoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvYWRpbmcvZW1wdHktc3ViZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvYWRpbmcvZW1wdHktc3ViZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2VtcHR5LXN1YmZyYW1lLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3Nj
cmlwdD4KIFRoaXMgaXMgYSB0ZXN0IG9mIGxvYWQgY2FsbGJhY2tzLiBJdCBpcyBvbmx5IHVzZWZ1
bCBpbnNpZGUgdGhlIHJlZ3Jlc3Npb24gdGVzdCB0b29sLjxicj4KIDxpZnJhbWUgbmFtZT0iZjEi
PjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2ZpcmUtZXJy
b3ItZXZlbnQtZW1wdHktNDA0LXNjcmlwdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy9maXJlLWVycm9yLWV2ZW50LWVtcHR5LTQwNC1zY3JpcHQuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Zp
cmUtZXJyb3ItZXZlbnQtZW1wdHktNDA0LXNjcmlwdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01
LDggKzUsOCBAQCBGaXJlIGFuIGVycm9yIGV2ZW50IGZvciBlbXB0eSA0MDQgc2NyaXB0CiA8cD5T
aG91bGQgc2F5IFNVQ0NFU1M6PC9wPgogPHAgaWQ9cmVzdWx0PjwvcD4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIDwvc2NyaXB0PgogPHNjcmlwdAogICBzcmM9InJlc291cmNlcy80MDQtd2l0aC1l
bXB0eS1ib2R5LmNnaSIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9maXJl
LWVycm9yLWV2ZW50LXNjcmlwdC1uby1jb250ZW50LXR5cGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvZmlyZS1lcnJvci1ldmVudC1zY3JpcHQtbm8t
Y29udGVudC10eXBlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9maXJlLWVycm9yLWV2ZW50LXNjcmlwdC1uby1jb250ZW50LXR5cGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAgRmlyZSBhbiBlcnJvciBldmVudCBmb3Ig
ZW1wdHkgNDA0IHNjcmlwdAogPHA+U2hvdWxkIHNheSBTVUNDRVNTOjwvcD4KIDxwIGlkPXJlc3Vs
dD48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxzY3JpcHQKICAgc3Jj
PSJyZXNvdXJjZXMvNDA0LXdpdGgtZW1wdHktYm9keS1uby1jb250ZW50LXR5cGUuY2dpIgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2dtYWlsLWFzc2VydC1vbi1sb2FkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2dtYWlsLWFz
c2VydC1vbi1sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9nbWFpbC1hc3NlcnQtb24tbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogPGh0bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogPC9z
Y3JpcHQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9pbWFn
ZS1pbnB1dC10eXBlLW91dGxpdmVzLWdjLXdpdGhvdXQtY3Jhc2hpbmcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvaW1hZ2UtaW5wdXQtdHlwZS1vdXRs
aXZlcy1nYy13aXRob3V0LWNyYXNoaW5nLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9pbWFnZS1pbnB1dC10eXBlLW91dGxpdmVzLWdjLXdp
dGhvdXQtY3Jhc2hpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxNiBAQAogPHNj
cmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotCWxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gbG9hZGVkKCkg
ewogCS8vIElmIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gY2F1c2VzIHRoZSBpbWFnZSBsb2FkIHRv
IHN0b3AgYW5kIHRoZXJlZm9yZSBjYXVzZXMgdGhlIGxvYWQgZXZlbnQgdG8gZmlyZSBvbiB0aGUg
bWFpbiBmcmFtZSwgd2UgZmFpbGVkLgogCWFsZXJ0KCJGQUlMOiBUaGUgbG9hZCBldmVudCBmaXJl
ZCIpOwogCQotCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JCWxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCXRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KQEAgLTI3LDggKzI3LDggQEAgVGhp
cyB0ZXN0IGhhcyBhIGZvcm0gd2l0aCBhbiBpbnB1dCB0eXBlPQogCiBmdW5jdGlvbiBmaW5pc2hl
ZCgpIHsKIAl3aW5kb3cuc3RvcCgpCi0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LQkJbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworCWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGZvcmNlR0Mo
KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvaW1hZ2UtbG9hZC1vdXRs
aXZlcy1nYy13aXRob3V0LWNyYXNoaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL2ltYWdlLWxvYWQtb3V0bGl2ZXMtZ2Mtd2l0aG91dC1jcmFzaGlu
Zy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvaW1hZ2UtbG9hZC1vdXRsaXZlcy1nYy13aXRob3V0LWNyYXNoaW5nLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTYgKzEsMTYgQEAKIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLQlsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0J
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiB9CiAKIGZ1bmN0aW9uIGxvYWRlZCgpIHsKIAkvLyBJZiB0aGUgZ2FyYmFnZSBjb2xsZWN0
aW9uIGNhdXNlcyB0aGUgaW1hZ2UgbG9hZCB0byBzdG9wIGFuZCB0aGVyZWZvcmUgY2F1c2VzIHRo
ZSBsb2FkIGV2ZW50IHRvIGZpcmUgb24gdGhlIG1haW4gZnJhbWUsIHdlIGZhaWxlZC4KIAlhbGVy
dCgiRkFJTDogVGhlIGxvYWQgZXZlbnQgZmlyZWQiKTsKIAkKLQlpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotCQlsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisJaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9z
Y3JpcHQ+CkBAIC0yNSw4ICsyNSw4IEBAIFRoaXMgdGVzdCBoYXMgYW4gaW1hZ2UgaW5zaWRlIGEg
ZGl2LiAgSXQKIAogZnVuY3Rpb24gZmluaXNoZWQoKSB7CiAJd2luZG93LnN0b3AoKQotCWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JCWxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBmb3JjZUdDKCkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL2xvYWQtamF2YXNjcmlwdC1hZnRlci1tYW55LXhocnMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvbG9hZC1qYXZhc2NyaXB0LWFm
dGVyLW1hbnkteGhycy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvYWRpbmcvbG9hZC1qYXZhc2NyaXB0LWFmdGVyLW1hbnkteGhycy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDggKzksOCBAQCBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsK
IH0KIDwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9sb2NhdGlvbi1o
YXNoLXJlbG9hZC1jeWNsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9sb2NhdGlvbi1oYXNoLXJlbG9hZC1jeWNsZS5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvbG9jYXRpb24taGFzaC1yZWxv
YWQtY3ljbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxzY3JpcHQ+CiBm
dW5jdGlvbiBydW5UZXN0cygpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
CiAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAiIjsKICAgICB3aW5kb3cubG9jYXRpb24uaGFz
aCA9ICIjIjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9uZXN0ZWRfYmFk
X29iamVjdHMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGlu
Zy9uZXN0ZWRfYmFkX29iamVjdHMucGhwCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2xvYWRpbmcvbmVzdGVkX2JhZF9vYmplY3RzLnBocAkod29ya2luZyBjb3B5
KQpAQCAtNiw4ICs2LDggQEAgaWYgKGlzc2V0KCRfR0VUWydvYmplY3QnXSkpIHsKID8+CiA8aHRt
bD4KICAgICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIDwvc2Ny
aXB0PgogICAgIDxvYmplY3QgdHlwZT0iaW1hZ2UvanBlZyIgZGF0YT0ibmVzdGVkX2JhZF9vYmpl
Y3RzLnBocD9vYmplY3QiPgogICAgICAgICA8b2JqZWN0IHR5cGU9ImltYWdlL2pwZWciIGRhdGE9
Im5lc3RlZF9iYWRfb2JqZWN0cy5waHA/b2JqZWN0IiAvPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2FkaW5nL29iamVjdC1pbWFnZS1sb2FkLW91dGxpdmVzLWdjLXdpdGhvdXQtY3Jh
c2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
b2JqZWN0LWltYWdlLWxvYWQtb3V0bGl2ZXMtZ2Mtd2l0aG91dC1jcmFzaGluZy5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvb2JqZWN0LWlt
YWdlLWxvYWQtb3V0bGl2ZXMtZ2Mtd2l0aG91dC1jcmFzaGluZy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE2ICsxLDE2IEBACiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0JbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCWxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
CXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
fQogCiBmdW5jdGlvbiBsb2FkZWQoKSB7CiAJLy8gSWYgdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBj
YXVzZXMgdGhlIGltYWdlIGxvYWQgdG8gc3RvcCBhbmQgdGhlcmVmb3JlIGNhdXNlcyB0aGUgbG9h
ZCBldmVudCB0byBmaXJlIG9uIHRoZSBtYWluIGZyYW1lLCB3ZSBmYWlsZWQuCiAJYWxlcnQoIkZB
SUw6IFRoZSBsb2FkIGV2ZW50IGZpcmVkIik7CiAJCi0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLQkJbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworCWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0
PgpAQCAtMjYsOCArMjYsOCBAQCBUaGlzIGhhcyBhbiBvYmplY3QgZWxlbWVudCByZXByZXNlbnRp
bmcgCiAKIGZ1bmN0aW9uIGZpbmlzaGVkKCkgewogCXdpbmRvdy5zdG9wKCkKLQlpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotCQlsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0KIAogZnVuY3Rpb24gZm9yY2VHQygpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9hZGluZy9vbmxvYWQtdnMtaW1tZWRpYXRlLXJlZnJlc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9vbmxvYWQtdnMtaW1tZWRpYXRl
LXJlZnJlc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvYWRpbmcvb25sb2FkLXZzLWltbWVkaWF0ZS1yZWZyZXNoLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgbWFpbiBmcmFtZSAtIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRgogbWFpbiBmcmFtZSAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogbWFp
biBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBBTEVSVDogU1VDQ0VTUwot
bWFpbiBmcmFtZSAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogZGF0YTp0ZXh0L2h0
bWwsJTNDYm9keSUyMG9ubG9hZD0naWYod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKWxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsnJTNFWW91JTIwc2hvdWxkJTIwaGF2ZSUyMHNl
ZW4lMjBhbiUyMGFsZXJ0LiAKK21haW4gZnJhbWUgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6IGRhdGE6dGV4dC9odG1sLCUzQ2JvZHklMjBvbmxvYWQ9J2lmKHdpbmRvdy50ZXN0UnVu
bmVyKXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyclM0VZb3UlMjBzaG91bGQlMjBoYXZlJTIwc2Vl
biUyMGFuJTIwYWxlcnQuIAogbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lCiBtYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL29ubG9hZC12cy1pbW1lZGlhdGUtcmVmcmVzaC5wbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvb25sb2FkLXZzLWltbWVkaWF0ZS1yZWZyZXNo
LnBsCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
b25sb2FkLXZzLWltbWVkaWF0ZS1yZWZyZXNoLnBsCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYs
NyBAQAogc2VsZWN0IChTVERPVVQpOwogJHwgPSAxOwogCi1wcmludCAiUmVmcmVzaDogMDt1cmw9
ZGF0YTp0ZXh0L2h0bWwsPGJvZHkgb25sb2FkPSdpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Jz5Zb3Ugc2hvdWxkIGhhdmUg
c2VlbiBhbiBhbGVydC5cclxuIjsKK3ByaW50ICJSZWZyZXNoOiAwO3VybD1kYXRhOnRleHQvaHRt
bCw8Ym9keSBvbmxvYWQ9J2lmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Jz5Zb3Ugc2hvdWxkIGhhdmUgc2VlbiBhbiBhbGVydC5cclxuIjsKIHByaW50ICJDb250
ZW50LVR5cGU6IHRleHQvaHRtbFxyXG4iOwogcHJpbnQgIlxyXG4iOwogCkBAIC0xNCwxMiArMTQs
MTIgQEAgcHJpbnQgPDwgIkVPRiI7CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KLTxtZXRhIGh0dHAtZXF1
aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPWRhdGE6dGV4dC9odG1sLCUzQ2JvZHklMjBvbmxv
YWQ9J2lmKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcilsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7JyUzRVlvdSUyMHNob3VsZCUyMGhhdmUlMjBzZWVuJTIwYW4lMjBhbGVydC4i
PgorPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9ZGF0YTp0ZXh0L2h0
bWwsJTNDYm9keSUyMG9ubG9hZD0naWYod2luZG93LnRlc3RSdW5uZXIpdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7JyUzRVlvdSUyMHNob3VsZCUyMGhhdmUlMjBzZWVuJTIwYW4lMjBhbGVydC4iPgog
PC9oZWFkPgogRU9GCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9wZGYt
Y29tbWl0LWxvYWQtY2FsbGJhY2tzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2FkaW5nL3BkZi1jb21taXQtbG9hZC1jYWxsYmFja3MuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3BkZi1jb21taXQtbG9h
ZC1jYWxsYmFja3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPGlmcmFtZSBzcmM9ImRhdGE6YXBwbGljYXRpb24v
cGRmO2Jhc2U2NCwiPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Fk
aW5nL3Bvc3QtaW4taWZyYW1lLXdpdGgtYmFjay1uYXZpZ2F0aW9uLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Bvc3QtaW4taWZyYW1lLXdpdGgtYmFj
ay1uYXZpZ2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9wb3N0LWluLWlmcmFtZS13aXRoLWJhY2stbmF2aWdhdGlvbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xNiwxMyArMTYsMTMgQEAgVG8gdGVzdCBtYW51YWxseSwgY2xpY2sg
b24gdGhlIG5hdmlnYXRpbwogdmFyIGxvYWRlZCA9IGZhbHNlOwogZnVuY3Rpb24gcnVuVGVzdCgp
CiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgIH0KICAgICAKICAgICBsb2FkZWQgPSB0cnVlOwotICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwgMjAwKTsK
KyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgfSwg
MjAwKTsKIH0KIAogZnVuY3Rpb24gY2xpY2tMaW5rKCkKQEAgLTY3LDggKzY3LDggQEAgZnVuY3Rp
b24gbmV4dFN0ZXAoKQogICAgIGNhc2UgMzoKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJnZXRUaXRsZSgpIiwgIlBhZ2UgMiIpOwogICAgICAgICBzaG91bGRCZSgid2luZG93LmZyYW1l
c1swXS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VibWlzc2lvblRpbWUnKS5pbm5lclRleHQi
LCAic3RlcDJvdXRwdXQiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cik7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtNzcsNCArNzcsNCBAQCBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL3ByZWxvYWQtYXBwZW5kLXNjYW4ucGhwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9hZGluZy9wcmVsb2FkLWFwcGVuZC1zY2FuLnBocAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtYXBwZW5k
LXNjYW4ucGhwCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQCBwcmludCBzdHJfcmVwZWF0
KCJBIiwgMjA0OCk7CiA/PiAtLT4KIDxib2R5PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBm
dW5jdGlvbiBjaGVja0ZvclByZWxvYWQoKSB7CiAgICAgdmFyIHJlc3VsdDsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9wcmVsb2FkLWltZy10ZXN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtaW1nLXRlc3QuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3By
ZWxvYWQtaW1nLXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOSArMTYsOSBAQAogICAg
CiAgICBmdW5jdGlvbiB0ZXN0KCkKICAgIHsKLSAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAg
fQogICAgfQogCkBAIC00MCw4ICs0MCw4IEBACiAgICB9CiAKICAgIGZ1bmN0aW9uIGNoZWNrTm90
aWZ5RG9uZSgpIHsKLSAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
IH0KICAgIC8vIFJlc2V0IHJlc291cmNlIGNvdW50ICAgCiAgICBDYWxsQ29tbWFuZCgicmVzZXQt
cmVzb3VyY2UtY291bnQiKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9w
cmVsb2FkLXNsb3ctbG9hZGluZy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL3ByZWxvYWQtc2xvdy1sb2FkaW5nLnBocAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtc2xvdy1sb2FkaW5nLnBo
cAkod29ya2luZyBjb3B5KQpAQCAtNiw5ICs2LDkgQEAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRl
eHQvaHRtbDsgY2hhcnNldAogcHJpbnQgc3RyX3JlcGVhdCgiQSIsIDIwNDgpOwogPz4gLS0+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wUmVzb3VyY2VS
ZXNwb25zZU1JTUVUeXBlcygpOwogfQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibm9uLWV4aXN0
YW50LTEiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3By
b2dyZXNzLWZpbmlzaGVkLWNhbGxiYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL3Byb2dyZXNzLWZpbmlzaGVkLWNhbGxiYWNrLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9wcm9ncmVzcy1m
aW5pc2hlZC1jYWxsYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFBy
b2dyZXNzRmluaXNoZWRDYWxsYmFjaygpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wUHJvZ3Jlc3NGaW5p
c2hlZENhbGxiYWNrKCk7CiB9CiA8L3NjcmlwdD4KIFRoaXMgaXMgYSB0ZXN0IG9mIHByb2dyZXNz
IGZpbmlzaGVkIGNhbGxiYWNrIG9yZGVyaW5nIGluIHJlbGF0aW9uIHRvIGZyYW1lIGxvYWRlciBj
YWxsYmFja3MuIEl0IGlzIG9ubHkgdXNlZnVsIGluc2lkZSB0aGUgcmVncmVzc2lvbiB0ZXN0IHRv
b2wuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9k
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRp
cmVjdC1tZXRob2RzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
OSArMSw5IEBACiA8aHRtbD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAog
ZnVuY3Rpb24gc3RhcnRUZXN0KCkKQEAgLTMyLDggKzMyLDggQEAgZnVuY3Rpb24gaWZyYW1lTG9h
ZGVkKGZyYW1lSUQpCiAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZy
YW1lSUQpOwogICAgIGlmIChpZnJhbWUuaGFzQXR0cmlidXRlKCJzdWJtaXR0ZWQiKSkgewogICAg
ICAgICBpZiAoKytmcmFtZUlEID09IHRlc3RDb2Rlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGNyZWF0ZUZyYW1lKGZyYW1lSUQpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LXdpdGgtbm8tbG9jYXRp
b24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvcmVkaXJlY3Qtd2l0aC1uby1sb2NhdGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3Qtd2l0aC1uby1sb2Nh
dGlvbi1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiAg
ICAgPHRpdGxlPlRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yOTI5MzwvdGl0bGU+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9zbG93LXBhcnNpbmctc3ViZnJhbWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvc2xvdy1wYXJz
aW5nLXN1YmZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9zbG93LXBhcnNpbmctc3ViZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSw4ICsxLDggQEAKIDxodG1sPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIDwvc2NyaXB0PgogPGJvZHk+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvc3RhdGUtb2JqZWN0LXNlY3VyaXR5
LWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9h
ZGluZy9zdGF0ZS1vYmplY3Qtc2VjdXJpdHktZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9zdGF0ZS1vYmplY3Qtc2VjdXJp
dHktZXhjZXB0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8aGVhZD4K
IDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIH0KIAogZnVuY3Rpb24gbG9nKHR4dCkKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9zdmctaW1hZ2UtbG9hZC1vdXRsaXZlcy1nYy13aXRob3V0LWNyYXNoaW5nLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3N2Zy1pbWFn
ZS1sb2FkLW91dGxpdmVzLWdjLXdpdGhvdXQtY3Jhc2hpbmcuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3N2Zy1pbWFnZS1sb2FkLW91dGxp
dmVzLWdjLXdpdGhvdXQtY3Jhc2hpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwx
NiBAQAogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotCWxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQlsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24g
bG9hZGVkKCkgewogCS8vIElmIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gY2F1c2VzIHRoZSBpbWFn
ZSBsb2FkIHRvIHN0b3AgYW5kIHRoZXJlZm9yZSBjYXVzZXMgdGhlIGxvYWQgZXZlbnQgdG8gZmly
ZSBvbiB0aGUgbWFpbiBmcmFtZSwgd2UgZmFpbGVkLgogCWFsZXJ0KCJGQUlMOiBUaGUgbG9hZCBl
dmVudCBmaXJlZCIpOwogCQotCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JCWxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIp
CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KQEAgLTI3LDggKzI3
LDggQEAgVGhpcyBoYXMgYW4gc3ZnIGVsZW1lbnQgdGhhdCBjb250YWlucyBhbgogCiBmdW5jdGlv
biBmaW5pc2hlZCgpIHsKIAl3aW5kb3cuc3RvcCgpCi0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLQkJbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworCWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9u
IGZvcmNlR0MoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvdGV4dC1j
b250ZW50LXR5cGUtd2l0aC1iaW5hcnktZXh0ZW5zaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3RleHQtY29udGVudC10eXBlLXdpdGgtYmluYXJ5
LWV4dGVuc2lvbi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvdGV4dC1jb250ZW50LXR5cGUtd2l0aC1iaW5hcnktZXh0ZW5zaW9uLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiAgICAgPHNjcmlwdD4KICAgICAgICAgdmFy
IGZhaWxlZCA9IGZhbHNlOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9
CiAKICAgICAgICAgZnVuY3Rpb24gaWZyYW1lTm90TG9hZGVkKCkKQEAgLTEyLDkgKzEyLDkgQEAK
ICAgICAgICAgICAgIGlmIChmYWlsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gIkJpbmFyeSBkYXRhIG5vdCBsb2FkZWQgYXMg
dGV4dC4gTWF5YmUgUEFTUy4iOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAiSWYgU2FmYXJpIGRvd25sb2FkZWQgYmluYXJ5RGF0
YS5zaXR4LCB0aGVuIGl0IHBhc3NlZCB0aGUgdGVzdC4iOwogICAgICAgICB9CkBAIC0yOSw4ICsy
OSw4IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lclRleHQgPSAiRkFJTCI7CiAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy92aWRlby1wb3N0ZXItaW1hZ2UtbG9hZC1vdXRsaXZlcy1nYy13
aXRob3V0LWNyYXNoaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL3ZpZGVvLXBvc3Rlci1pbWFnZS1sb2FkLW91dGxpdmVzLWdjLXdpdGhvdXQtY3Jh
c2hpbmcuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL3ZpZGVvLXBvc3Rlci1pbWFnZS1sb2FkLW91dGxpdmVzLWdjLXdpdGhvdXQtY3Jhc2hp
bmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxNiBAQAogPHNjcmlwdD4KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotCWxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gbG9hZGVkKCkgewogCS8vIElmIHRo
ZSBnYXJiYWdlIGNvbGxlY3Rpb24gY2F1c2VzIHRoZSBpbWFnZSBsb2FkIHRvIHN0b3AgYW5kIHRo
ZXJlZm9yZSBjYXVzZXMgdGhlIGxvYWQgZXZlbnQgdG8gZmlyZSBvbiB0aGUgbWFpbiBmcmFtZSwg
d2UgZmFpbGVkLgogCWFsZXJ0KCJGQUlMOiBUaGUgbG9hZCBldmVudCBmaXJlZCIpOwogCQotCWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JCWxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCXRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KQEAgLTI2LDggKzI2LDggQEAgVGhpcyBoYXMgYSB2aWRl
byBlbGVtZW50IHdpdGggYW4gaW1hZ2UgZgogCiBmdW5jdGlvbiBmaW5pc2hlZCgpIHsKIAl3aW5k
b3cuc3RvcCgpCi0JaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLQkJbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGZvcmNlR0MoKSB7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYXV0aGVudGljYXRpb24tYWZ0ZXItcmVkaXJl
Y3Qtc3RvcmVzLXdyb25nLWNyZWRlbnRpYWxzL2F1dGhlbnRpY2F0aW9uLWFmdGVyLXJlZGlyZWN0
LXN0b3Jlcy13cm9uZy1jcmVkZW50aWFscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9hZGluZy9hdXRoZW50aWNhdGlvbi1hZnRlci1yZWRpcmVjdC1zdG9yZXMt
d3JvbmctY3JlZGVudGlhbHMvYXV0aGVudGljYXRpb24tYWZ0ZXItcmVkaXJlY3Qtc3RvcmVzLXdy
b25nLWNyZWRlbnRpYWxzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9hZGluZy9hdXRoZW50aWNhdGlvbi1hZnRlci1yZWRpcmVjdC1zdG9yZXMtd3Jv
bmctY3JlZGVudGlhbHMvYXV0aGVudGljYXRpb24tYWZ0ZXItcmVkaXJlY3Qtc3RvcmVzLXdyb25n
LWNyZWRlbnRpYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzEsMTIgQEAKIDxodG1s
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLQlsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0JbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7Ci0JbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotCWxheW91dFRlc3RDb250cm9sbGVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZXModHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25Vc2Vy
bmFtZSgiaHR0cFVzZXJuYW1lIik7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVu
dGljYXRpb25QYXNzd29yZCgiaHR0cFBhc3N3b3JkIik7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuc2V0
SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNl
dEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoImh0dHBVc2VybmFtZSIpOworICAgIHRlc3RSdW5uZXIu
c2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgiaHR0cFBhc3N3b3JkIik7CiB9CiA8L3NjcmlwdD4K
IApAQCAtMTcsNCArMTcsNCBAQCBTZWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvCiA8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2xvYWRpbmcvYXV0aGVudGlj
YXRpb24tYWZ0ZXItcmVkaXJlY3Qtc3RvcmVzLXdyb25nLWNyZWRlbnRpYWxzL3Jlc291cmNlcy93
cm9uZy1jcmVkZW50aWFsLTEtcmVkaXJlY3QtdG8tYXV0aC5waHAiPgogPC9pZnJhbWU+PGJyPgog
PC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9hdXRoZW50aWNhdGlvbi1hZnRlci1y
ZWRpcmVjdC1zdG9yZXMtd3JvbmctY3JlZGVudGlhbHMvcmVzb3VyY2VzL3dyb25nLWNyZWRlbnRp
YWwtMS1yZWRpcmVjdC10by1hdXRoLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvYWRpbmcvYXV0aGVudGljYXRpb24tYWZ0ZXItcmVkaXJlY3Qtc3RvcmVzLXdyb25n
LWNyZWRlbnRpYWxzL3Jlc291cmNlcy93cm9uZy1jcmVkZW50aWFsLTEtcmVkaXJlY3QtdG8tYXV0
aC5waHAJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGlu
Zy9hdXRoZW50aWNhdGlvbi1hZnRlci1yZWRpcmVjdC1zdG9yZXMtd3JvbmctY3JlZGVudGlhbHMv
cmVzb3VyY2VzL3dyb25nLWNyZWRlbnRpYWwtMS1yZWRpcmVjdC10by1hdXRoLnBocAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw0ICszLDQgQEAKIC8vIFRoYXQgaXMgaW1wb3J0YW50LCBhbmQgdGhlIG5l
eHQgcGFnZSBoYXMgdG8gYmUgbG9hZGVkIHVzaW5nIDEyNy4wLjAuMS4KIGhlYWRlcigiTG9jYXRp
b246IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL2F1dGhlbnRpY2F0aW9uLWFmdGVyLXJl
ZGlyZWN0LXN0b3Jlcy13cm9uZy1jcmVkZW50aWFscy9yZXNvdXJjZXMvd3JvbmctY3JlZGVudGlh
bC0yLWF1dGgtdGhlbi1yZWRpcmVjdC10by1maW5pc2gucGhwIik7CiBleGl0OwotPz4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis/PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL2F1dGhlbnRpY2F0aW9uLWFmdGVyLXJlZGlyZWN0LXN0b3Jlcy13cm9uZy1jcmVkZW50
aWFscy9yZXNvdXJjZXMvd3JvbmctY3JlZGVudGlhbC0zLW91dHB1dC1jcmVkZW50aWFscy10aGVu
LWZpbmlzaC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5n
L2F1dGhlbnRpY2F0aW9uLWFmdGVyLXJlZGlyZWN0LXN0b3Jlcy13cm9uZy1jcmVkZW50aWFscy9y
ZXNvdXJjZXMvd3JvbmctY3JlZGVudGlhbC0zLW91dHB1dC1jcmVkZW50aWFscy10aGVuLWZpbmlz
aC5waHAJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGlu
Zy9hdXRoZW50aWNhdGlvbi1hZnRlci1yZWRpcmVjdC1zdG9yZXMtd3JvbmctY3JlZGVudGlhbHMv
cmVzb3VyY2VzL3dyb25nLWNyZWRlbnRpYWwtMy1vdXRwdXQtY3JlZGVudGlhbHMtdGhlbi1maW5p
c2gucGhwCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNiBAQCBlbHNlCiAJZWNobyAiQXV0aGVu
dGljYXRlZCBhcyB7JF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXX0gd2l0aCBwYXNzd29yZCB7JF9T
RVJWRVJbJ1BIUF9BVVRIX1BXJ119PGJyPiI7CiA/PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0JbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VzLzMwNy1w
b3N0LW91dHB1dC10YXJnZXQucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9yZXNvdXJjZXMvMzA3LXBvc3Qtb3V0cHV0LXRhcmdldC5waHAJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvMzA3
LXBvc3Qtb3V0cHV0LXRhcmdldC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTE1LDggKzE1LDggQEAg
Zm9yZWFjaCAoJHNvcnRlZEtleXMgYXMgJHZhbHVlKSB7CiB9CiA/PgogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2NhbC9hYnNvbHV0ZS11cmwtc3RyaXAtd2hpdGVzcGFjZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvYWJzb2x1dGUtdXJsLXN0cmlwLXdo
aXRlc3BhY2UuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2NhbC9hYnNvbHV0ZS11cmwtc3RyaXAtd2hpdGVzcGFjZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8ZGl2
IGlkPSJ0ZXN0Ij5GQUlMLCBzY3JpcHQgZGlkIG5vdCBydW4uPC9kaXY+CiA8c2NyaXB0IHNyYz0i
IApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9kcmFnLW92ZXItcmVtb3RlLWNv
bnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2Ry
YWctb3Zlci1yZW1vdGUtY29udGVudC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2RyYWctb3Zlci1yZW1vdGUtY29udGVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEyICsxLDEyIEBACiA8cD5UaGlzIHBhZ2UganVzdCBlbWJlZHMgZHJh
Zy1vdmVyLXJlbW90ZS1jb250ZW50LWlmcmFtZS5odG1sIGluIGFuIGlmcmFtZS4gU2VlIGl0cyBy
ZXN1bHRzIGJlbG93OjwvcD4KIDxpZnJhbWUgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50
LWlmcmFtZS5odG1sIj48L2lmcmFtZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAog
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdLmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBmdW5jdGlvbiAoKSB7CiAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFw
cGVuZENoaWxkKGZyYW1lc1swXS5kb2N1bWVudC5ib2R5LmNsb25lTm9kZSh0cnVlKSk7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9LCBmYWxzZSk7CiA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvZmFpbC5jc3MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mYWlsLmNzcwkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mYWlsLmNzcwkod29ya2luZyBjb3B5KQpAQCAtMSwy
ICsxLDIgQEAKICNmYWlsIHsgZGlzcGxheTogaW5saW5lIH0KLSNwYXNzIHsgZGlzcGxheTogbm9u
ZSB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI3Bhc3MgeyBkaXNwbGF5OiBub25lIH0K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQt
b3JkZXItcHJlbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1s
b2FkLW9yZGVyLXByZWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMiArMiwxMiBAQAog
PGhlYWQ+CiAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PVVURi04Ij4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIC8vIFByZXZlbnQg
bmV0d29ya2luZyBsYXllciBmcm9tIHJlb3JkZXJpbmcgbG9hZHMuCi0gICAgICAgIGlmIChsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMpCi0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMoKTsKKyAgICAgICAgaWYgKHRl
c3RSdW5uZXIuc2V0U2VyaWFsaXplSFRUUExvYWRzKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTZXJpYWxpemVIVFRQTG9hZHMoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBDYWxsQ29tbWFu
ZChjbWQpCkBAIC0yNyw4ICsyNyw4IEBACiAgICAgICAgIGdldFJlc291cmNlTG9nKCk7CiAgICAg
ICAgIENhbGxDb21tYW5kKCJjbGVhci1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpOwogCi0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIGdldFJlc291cmNlTG9nKCkKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwv
bGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNo
ZWV0LWxvYWQtb3JkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMiArMiwxMiBAQAogPGhl
YWQ+CiAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PVVURi04Ij4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIC8vIFByZXZlbnQgbmV0
d29ya2luZyBsYXllciBmcm9tIHJlb3JkZXJpbmcgbG9hZHMuCi0gICAgICAgIGlmIChsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRTZXJpYWxpemVIVFRQTG9hZHMoKTsKKyAgICAgICAgaWYgKHRlc3RS
dW5uZXIuc2V0U2VyaWFsaXplSFRUUExvYWRzKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRT
ZXJpYWxpemVIVFRQTG9hZHMoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBDYWxsQ29tbWFuZChj
bWQpCkBAIC0yNyw4ICsyNyw4IEBACiAgICAgICAgIGdldFJlc291cmNlTG9nKCk7CiAgICAgICAg
IENhbGxDb21tYW5kKCJjbGVhci1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpOwogCi0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IGdldFJlc291cmNlTG9nKCkKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvbGlu
ay1zdHlsZXNoZWV0LXByZWZlcnJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LXByZWZlcnJlZC5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1w
cmVmZXJyZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhl
YWQ+CiAgICAgPHNjcmlwdD4gIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICA8L3NjcmlwdD4KICAgICA8c3R5bGU+CiAgICAgICAgICNwYXNzIHsgZGlz
cGxheTogbm9uZSB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3N0eWxlLWFj
Y2Vzcy1iZWZvcmUtc3R5bGVzaGVldC1sb2FkZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3N0eWxlLWFjY2Vzcy1iZWZvcmUtc3R5bGVzaGVldC1sb2Fk
ZWQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Nh
bC9zdHlsZS1hY2Nlc3MtYmVmb3JlLXN0eWxlc2hlZXQtbG9hZGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4gIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgICAgICAgICAKIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgdmFyIHN0YXJ0ID0gbmV3
IERhdGUoKS5nZXRUaW1lKCk7CkBAIC0xMyw4ICsxMyw4IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAg
ICAgdmFyIHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0OwogICAgIGNvbnNvbGUu
aW5uZXJIVE1MID0gKCh0aW1lIDwgNTAwKSA/ICI8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPlBB
U1M8L3NwYW4+ICIgOiAgIjxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+ICIpOy8v
ICsgdGltZTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiAK
QEAgLTI3LDggKzI3LDggQEAgV29ya3MgYXMgSFRUUCB0ZXN0IG9ubHkuCiA8ZGl2IGlkPWNvbnNv
bGU+PC9kaXY+CiA8ZGl2IGlkPXQ+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAvLyBpbmNyZWFzZSBkb2N1bWVudCBjb21wbGV4aXR5IGEgYml0CiBmb3IgKG4gPSAwOyBuIDwg
NTAwOyBuKyspCiAgICAgZG9jdW1lbnQud3JpdGUoIjxkaXY+PHNwYW4+PC9zcGFuPjxkaXY+PHNw
YW4+PC9zcGFuPjwvZGl2PjwvZGl2PiIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2NhbC9zdHlsZXNoZWV0LWFuZC1zY3JpcHQtbG9hZC1vcmRlci1odHRwLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zdHlsZXNoZWV0LWFuZC1zY3JpcHQt
bG9hZC1vcmRlci1odHRwLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9jYWwvc3R5bGVzaGVldC1hbmQtc2NyaXB0LWxvYWQtb3JkZXItaHR0cC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8c2Ny
aXB0PiAgCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
IDwvc2NyaXB0PgogICAgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9sb2NhbC9zbG93LWNzcy1wYXNzLmNnaSI+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3N0eWxlc2hlZXQtYW5kLXNjcmlwdC1sb2FkLW9yZGVyLW1l
ZGlhLXByaW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Nh
bC9zdHlsZXNoZWV0LWFuZC1zY3JpcHQtbG9hZC1vcmRlci1tZWRpYS1wcmludC5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3N0eWxlc2hlZXQt
YW5kLXNjcmlwdC1sb2FkLW9yZGVyLW1lZGlhLXByaW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxzY3JpcHQ+ICAKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiAgICAgPGxp
bmsgcmVsPXN0eWxlc2hlZXQgbWVkaWE9cHJpbnQgaHJlZj0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvY2FsL3Nsb3ctY3NzLXBhc3MuY2dpIj4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9jYWwvc3R5bGVzaGVldC1hbmQtc2NyaXB0LWxvYWQtb3JkZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3N0eWxlc2hlZXQtYW5kLXNj
cmlwdC1sb2FkLW9yZGVyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9jYWwvc3R5bGVzaGVldC1hbmQtc2NyaXB0LWxvYWQtb3JkZXIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdD4g
IAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICA8L3Nj
cmlwdD4KICAgICA8bGluayByZWw9c3R5bGVzaGVldCBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9jYWwvc2xvdy1jc3MtcGFzcy5jZ2kiPgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2NhbC9ibG9iL3NjcmlwdC10ZXN0cy9zZW5kLWh5YnJpZC1ibG9iLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvYmxvYi9zY3JpcHQtdGVz
dHMvc2VuZC1oeWJyaWQtYmxvYi5qcwkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2NhbC9ibG9iL3NjcmlwdC10ZXN0cy9zZW5kLWh5YnJpZC1ibG9iLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC04MywxMSArODMsMTEgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgRignYWJlLnBuZycpIF0sCiAgICAgICAgICAgICAgICAgICAg
ICAgeyAnc3RhcnQnOiAyMCwgJ2xlbmd0aCc6IDMwMDAgfSk7CiAKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAK
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgdXRpbC5y
dW5UZXN0cygpOwogfSBlbHNlCiAgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0IGlzIG5vdCBpbnRl
cmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJlZSIpOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS1jb25zdHJ1Y3Rl
ZC1mcm9tLWZvcm0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
Y2FsL2Zvcm1kYXRhL3NlbmQtZm9ybS1kYXRhLWNvbnN0cnVjdGVkLWZyb20tZm9ybS5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRh
L3NlbmQtZm9ybS1kYXRhLWNvbnN0cnVjdGVkLWZyb20tZm9ybS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw4ICszMCw4IEBAIGZ1bmN0aW9uIG9uSW5wdXRGaWxlQ2hhbmdlKCkKICAgICBsb2co
IlJlc3BvbnNlOiAiICsgeGhyLnJlc3BvbnNlVGV4dCk7CiAKICAgICBsb2coIkRPTkUiKTsKLSAg
ICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSkKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh0ZXN0UnVubmVyLm5vdGlmeURvbmUp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBtb3ZlTW91
c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KQpAQCAtNDksOCArNDksOCBAQCBmdW5jdGlvbiBy
dW5UZXN0cygpCiB9CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0czsKIH0KIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9yZXNvdXJj
ZXMvdGVzdC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9m
b3JtZGF0YS9yZXNvdXJjZXMvdGVzdC50eHQJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEvcmVzb3VyY2VzL3Rlc3QudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xICsxIEBACi1IZWxsbwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0hl
bGxvCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3Jlc291cmNlcy9maWxlLWZv
ci1kcmFnLXRvLXNlbmQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9jYWwvcmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvcmVzb3VyY2VzL2ZpbGUtZm9yLWRy
YWctdG8tc2VuZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTEyMzQ1Njc4OTAKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisxMjM0NTY3ODkwCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2cuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2cuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS9yZWxvYWQtYWZ0
ZXItZGlhbG9nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsMTAgKzYsMTAgQEAKICAgICAgICAg
PHNjcmlwdD4KICAgICAgICAgICAgIHZhciBsb2FkQ291bnQgPSAwOwogCi0gICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNl
S2V5IiwgMSk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAxKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpIApJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZmZXJlZC1yYW5nZS1jb250YWlu
cy1jdXJyZW50VGltZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWVkaWEvdmlkZW8tYnVmZmVyZWQtcmFuZ2UtY29udGFpbnMtY3VycmVudFRpbWUuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1idWZm
ZXJlZC1yYW5nZS1jb250YWlucy1jdXJyZW50VGltZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0z
LDggKzMsOCBAQAogICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtcmVzb3VyY2VzL21lZGlh
LWZpbGUuanM+PC9zY3JpcHQ+CiAgICAgICA8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1yZXNvdXJj
ZXMvdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsgLy8gVG8gZ2V0IHBpeGVscy4KKyAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCh0cnVlKTsgLy8gVG8gZ2V0IHBpeGVscy4KIAogICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkg
ewogICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1jYW5jZWwtbG9hZC5odG1sCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1s
b2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDggQEAKICAgICB2YXIgdmlkZW8g
PSB3aW5kb3cub3BlbmVyLnZpZGVvOwogICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHsKICAgICAgICAgdmFyIGQgPSB2aWRlby5kdXJhdGlvbjsKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSwgNTApOwogICAgIHdpbmRvdy5vcGVuZXIu
YmxhbmsoKTsKICAgICA8L3NjcmlwdD4KQEAgLTI3LDggKzI3LDggQEAKICAgPC90ZXh0YXJlYT4K
IAogICA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKICAg
fQogCiAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1jb29raWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNvb2tpZS5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNv
b2tpZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDEwICs2LDEwIEBACiA8c2NyaXB0IHNyYz0u
Li8uLi9tZWRpYS1yZXNvdXJjZXMvdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PS4uLy4uL21lZGlhLXJlc291cmNlcy9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgogPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0QWx3YXlzQWNjZXB0Q29va2llcyh0cnVlKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBbHdheXNB
Y2NlcHRDb29raWVzKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBsb2FkQ29va2llICgpIHsKQEAgLTI5LDggKzI5LDggQEAK
ICAgICB9CiAKICAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiLCBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgfSApOwogPC9zY3JpcHQ+CiBUZXN0cyB0aGF0IHRoZSBtZWRpYSBwbGF5ZXIgd2lsbCBzZW5k
IHRoZSByZWxldmFudCBjb29raWVzIHdoZW4gcmVxdWVzdGluZyB0aGUgbWVkaWEgZmlsZS48YnIv
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1lcnJvci1hYm9ydC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJy
b3ItYWJvcnQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9tZWRpYS92aWRlby1lcnJvci1hYm9ydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02Miw0ICs2
Miw0IEBACiAgICAgICAgICAgICBvbmNhbnBsYXl0aHJvdWdoPSJjYW5wbGF5dGhyb3VnaCgpIgog
ICAgICAgICAgICAgPjwvdmlkZW8+CiAgICAgPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVk
aWEvcmVzb3VyY2VzL3Rlc3QudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWVkaWEvcmVzb3VyY2VzL3Rlc3QudHh0CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Jlc291cmNlcy90ZXN0LnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNjMsNCArNjMsNCBAQCBwdXJ1cyB1dCBsZWN0dXMuIFByb2luIGludGVyZHVtIGxlY3R1cyBz
CiBsb3JlbSBxdWFtLCBpYWN1bGlzIHNlZCBlZ2VzdGFzIGEsIGxhb3JlZXQgaWQgb2Rpby4gSW50
ZWdlciB2YXJpdXMgc2VtIHNlZAogbWFnbmEgZmFjaWxpc2lzIHNvZGFsZXMuIEV0aWFtIGlkIGFj
Y3Vtc2FuIG9kaW8uIFF1aXNxdWUgc29kYWxlcyB2ZWxpdCBzZWQKIGF1Z3VlIGZlcm1lbnR1bSB2
aXRhZSBsYW9yZWV0IG9kaW8gdGluY2lkdW50LiBRdWlzcXVlIGp1c3RvIHB1cnVzLCB2aXZlcnJh
Ci1ldSBjb25zZXF1YXQgcXVpcywgc29sbGljaXR1ZGluIGVnZXQgbWFzc2EuClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorZXUgY29uc2VxdWF0IHF1aXMsIHNvbGxpY2l0dWRpbiBlZ2V0IG1h
c3NhLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZXNzYWdpbmcvY3Jvc3MtZG9tYWlu
LW1lc3NhZ2UtZXZlbnQtZGlzcGF0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1ldmVudC1kaXNwYXRjaC5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lc3NhZ2lu
Zy9jcm9zcy1kb21haW4tbWVzc2FnZS1ldmVudC1kaXNwYXRjaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDkgKzIsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiBmdW5jdGlvbiBsb2cobXNnKSB7CkBAIC0xNCw4
ICsxNCw4IEBAIGZ1bmN0aW9uIGxvZyhtc2cpIHsKIH0KIAogZnVuY3Rpb24gZG9uZSgpIHsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
ICgpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFp
bi1tZXNzYWdlLXNlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21lc3NhZ2luZy9jcm9zcy1kb21haW4tbWVzc2FnZS1zZW5kLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNz
YWdlLXNlbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw5ICs2LDkgQEAKIDwvaGVhZD4KIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIHBvc3RJdCAoKSB7CkBA
IC0xOCw4ICsxOCw4IEBAIGZ1bmN0aW9uIHBvc3RJdCAoKSB7CiBmdW5jdGlvbiByZWNlaXZlcihl
KSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0
YSA9IGUuZGF0YTsgICAKICAgICAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pbWUvcXVvdGVkLWNoYXJz
ZXQucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWltZS9xdW90ZWQt
Y2hhcnNldC5waHAJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWltZS9xdW90ZWQtY2hhcnNldC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw2IEBACiBp
cyBjb3JyZWN0bHkgcGVyZm9ybWVkLjwvcD4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pbWUvc3RhbmRhcmQtbW9kZS1k
b2VzLW5vdC1sb2FkLXN0eWxlc2hlZXQtd2l0aC10ZXh0LXBsYWluLWFuZC1jc3MtZXh0ZW5zaW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taW1lL3N0YW5kYXJk
LW1vZGUtZG9lcy1ub3QtbG9hZC1zdHlsZXNoZWV0LXdpdGgtdGV4dC1wbGFpbi1hbmQtY3NzLWV4
dGVuc2lvbi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pbWUvc3RhbmRhcmQtbW9kZS1kb2VzLW5vdC1sb2FkLXN0eWxlc2hlZXQtd2l0aC10ZXh0LXBs
YWluLWFuZC1jc3MtZXh0ZW5zaW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBA
CiA8aGVhZD4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3N0eWxlLXdp
dGgtdGV4dC1wbGFpbi5waHAvZm9vLmNzcyI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHdp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVzdWx0JykuaW5uZXJIVE1MID0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWltZS9z
dGFuZGFyZC1tb2RlLWRvZXMtbm90LWxvYWQtc3R5bGVzaGVldC13aXRoLXRleHQtcGxhaW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pbWUvc3RhbmRhcmQtbW9k
ZS1kb2VzLW5vdC1sb2FkLXN0eWxlc2hlZXQtd2l0aC10ZXh0LXBsYWluLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWltZS9zdGFuZGFyZC1tb2RlLWRv
ZXMtbm90LWxvYWQtc3R5bGVzaGVldC13aXRoLXRleHQtcGxhaW4uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMyw4ICszLDggQEAKIDxoZWFkPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJy
ZXNvdXJjZXMvc3R5bGUtd2l0aC10ZXh0LXBsYWluLnBocCI+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWltZS9zdGFuZGFyZC1tb2RlLWxvYWRzLXN0eWxlc2hlZXQtd2l0aC1jaGFyc2V0LWFuZC1j
c3MtZXh0ZW5zaW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aW1lL3N0YW5kYXJkLW1vZGUtbG9hZHMtc3R5bGVzaGVldC13aXRoLWNoYXJzZXQtYW5kLWNzcy1l
eHRlbnNpb24uaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taW1lL3N0YW5kYXJkLW1vZGUtbG9hZHMtc3R5bGVzaGVldC13aXRoLWNoYXJzZXQtYW5kLWNz
cy1leHRlbnNpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxoZWFkPgog
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc3R5bGUtd2l0aC1jaGFyc2V0
LnBocC9mb28uY3NzIj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogd2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uKCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taW1lL3N0YW5kYXJkLW1vZGUt
bG9hZHMtc3R5bGVzaGVldC13aXRoLWNoYXJzZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pbWUvc3RhbmRhcmQtbW9kZS1sb2Fkcy1zdHlsZXNoZWV0LXdpdGgt
Y2hhcnNldC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pbWUvc3RhbmRhcmQtbW9kZS1sb2Fkcy1zdHlsZXNoZWV0LXdpdGgtY2hhcnNldC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQ+CiA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZS13aXRoLWNoYXJzZXQucGhwIj4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taW1lL3N0YW5kYXJkLW1vZGUtbG9hZHMtc3R5bGVzaGVldC13aXRoLWVtcHR5
LWNvbnRlbnQtdHlwZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWltZS9zdGFuZGFyZC1tb2RlLWxvYWRzLXN0eWxlc2hlZXQtd2l0aC1lbXB0eS1jb250ZW50LXR5
cGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taW1l
L3N0YW5kYXJkLW1vZGUtbG9hZHMtc3R5bGVzaGVldC13aXRoLWVtcHR5LWNvbnRlbnQtdHlwZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPGhlYWQ+CiA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZS13aXRoLWVtcHR5LWNvbnRlbnQtdHlwZS5j
Z2kiPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pbWUvc3RhbmRhcmQtbW9kZS1sb2Fkcy1zdHls
ZXNoZWV0LXdpdGgtdGV4dC1jc3MtYW5kLWludmFsaWQtdHlwZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWltZS9zdGFuZGFyZC1tb2RlLWxvYWRzLXN0eWxlc2hl
ZXQtd2l0aC10ZXh0LWNzcy1hbmQtaW52YWxpZC10eXBlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWltZS9zdGFuZGFyZC1tb2RlLWxvYWRzLXN0eWxl
c2hlZXQtd2l0aC10ZXh0LWNzcy1hbmQtaW52YWxpZC10eXBlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTUsOCArNSw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVySFRNTCA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIik7CiB9CiA8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWltZS91cHBlcmNhc2UtbWltZS10eXBl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taW1lL3VwcGVyY2Fz
ZS1taW1lLXR5cGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taW1lL3VwcGVyY2FzZS1taW1lLXR5cGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5
ICsxLDkgQEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBS
ZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taW1lL3Jlc291cmNlcy91cHBlcmNhc2UtbWltZS10eXBlLnBocAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pbWUvcmVzb3VyY2VzL3VwcGVyY2FzZS1taW1lLXR5cGUu
cGhwCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pbWUvcmVz
b3VyY2VzL3VwcGVyY2FzZS1taW1lLXR5cGUucGhwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMs
OCBAQCBoZWFkZXIoIkNvbnRlbnQtVHlwZTogVEVYVC9IVE1MIik7CiA/PgogPGh0bWw+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogCiA8L3NjcmlwdD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjLzQwMS1hbHRlcm5hdGl2ZS1jb250ZW50LnBocAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvNDAxLWFsdGVybmF0aXZlLWNvbnRlbnQucGhw
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvNDAxLWFs
dGVybmF0aXZlLWNvbnRlbnQucGhwCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogICAg
aGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkJyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQt
VHlwZTogdGV4dC9odG1sJyk7CiAgICBlY2hvICc8c2NyaXB0Pic7Ci0gICBlY2hvICcgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSc7Ci0gICBlY2hvICcgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyc7CisgICBlY2hvICcgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpJzsKKyAgIGVjaG8gJyAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsnOwogICAg
ZWNobyAnPC9zY3JpcHQ+JzsKICAgIGVjaG8gJ1BBU1MnOwogICAgZXhpdDsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9CT00tb3ZlcnJpZGUtc2NyaXB0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL0JPTS1vdmVycmlkZS1zY3JpcHQuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL0JPTS1v
dmVycmlkZS1zY3JpcHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3Jp
cHQ+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwPlRlc3QgdGhhdCBCT00gY2FuIG92
ZXJyaWRlIHdoYXRldmVyIGNoYXJzZXQgd2FzIHNldCBpbiBDb250ZW50LVR5cGUKICh0aGlzIGlz
IG5vdCB0aGUgYmVoYXZpb3Igb2YgRmlyZWZveCwgbm9yIGV4cGVjdGVkIGJ5IGFueSBzdGFuZGFy
ZCkuPC9wPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL0JPTS1vdmVycmlkZS5w
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvQk9NLW92ZXJyaWRl
LnBsCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvQk9N
LW92ZXJyaWRlLnBsCSh3b3JraW5nIGNvcHkpCkBAIC03LDQgKzcsNCBAQCBwcmludCAiXHJcbiI7
CiAKIHByaW50ICJceGVmXHhiYlx4YmYiOwogcHJpbnQgIlNV0KHQoUVTUyI7Ci1wcmludCAiPHNj
cmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7PC9zY3JpcHQ+IjsKK3ByaW50ICI8c2NyaXB0PmlmICh3aW5kb3cudGVz
dFJ1bm5lcikgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7PC9zY3JpcHQ+IjsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ET01Db250ZW50TG9hZGVkLWV2ZW50Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL0RPTUNvbnRlbnRMb2FkZWQtZXZl
bnQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L0RPTUNvbnRlbnRMb2FkZWQtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDgg
QEAKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykuYXBwZW5k
Q2hpbGQoaXRlbSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICBs
b2cgPSBhbGVydDsKICAgICAgICAgICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2FjaWQzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2FjaWQzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9hY2lkMy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGh0bWw+
CiAgPHRpdGxlPlRoZSBBY2lkMyBUZXN0PC90aXRsZT4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5rZWVwV2ViSGlzdG9yeSgp
OwogICB9CiAKICAgdmFyIHN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7CkBAIC0zNDYwLDEwICszNDYw
LDEwIEBACiAgICAgICBpZiAoZXJyb3JzID09IDApCiAgICAgICAgIGxvZyArPSAiXG5ObyBKUyBl
cnJvcnMgYW5kIG5vIHRpbWluZyBpc3N1ZXMuXG5XYXMgdGhlIHJlbmRlcmluZyBwaXhlbC1mb3It
cGl4ZWwgcGVyZmVjdCB0b28/IjsKIAotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIGlmIChzY29y
ZSA8IDEwMCkKICAgICAgICAgICBhbGVydChsb2cpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAg
ICAgfQogICAgIH0KICAgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2FzeW5j
LXNjcmlwdC1yZW1vdmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2FzeW5jLXNjcmlwdC1yZW1vdmVkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hc3luYy1zY3JpcHQtcmVtb3ZlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobXNnKSB7
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXN5bmMtc2NyaXB0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2FzeW5jLXNjcmlwdC5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXN5bmMt
c2NyaXB0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxoZWFk
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1
bmN0aW9uIGxvZyhtc2cpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9iYWQt
Y2hhcnNldC1hbGlhcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9iYWQtY2hhcnNldC1hbGlhcy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvYmFkLWNoYXJzZXQtYWxpYXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNCw5ICs0LDkgQEAKICh3ZSBzaG91bGQgZmFsbCBiYWNrIHRvIHBhcmVudCBmcmFtZSBj
aGFyc2V0KS48L3A+CiA8cCBpZD1yZXN1bHQ+VGVzdGluZy4uLjwvcD4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiB2YXIgYWxpYXNlcyA9IFsKQEAg
LTQ1LDggKzQ1LDggQEAgZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQogICAgICAgICB9CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAhZmFpbHVyZXMu
bGVuZ3RoID8gIlNVQ0NFU1MiIDogCiAgICAgICAgICAgICAoIkZBSUw6ICIgKyBmYWlsdXJlcyk7
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0K
IDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2J1YmJsZS1kcmFn
LWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9i
dWJibGUtZHJhZy1ldmVudHMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2J1YmJsZS1kcmFnLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw4ICs0NCw4IEBAIGZ1bmN0aW9uIHRlc3REcmFnRXZlbnRCdWJibGluZyhkcmFnVGFyZ2UK
IAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OyAKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOyAKIAogICAgIGxvZygiVGVzdHMgdGhhdCB3ZSBkb24ndCBidWJibGUgdXAgdGhlIGV2
ZW50cyBpZiB3ZSBkcmFnIHNvbWV0aGluZyB0byBhbiBpZnJhbWUgdGhhdCBoYXMgYW4gaW52YWxp
ZCBzb3VyY2UiKTsKICAgICB0ZXN0RHJhZ0V2ZW50QnViYmxpbmcoImludmFsaWRJZnJhbWVEcmFn
VGFyZ2V0UGFyZW50IiwgImludmFsaWRJZnJhbWVEcmFnVGFyZ2V0Iik7CkBAIC01Niw3ICs1Niw3
IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKQogICAgIGxvZygiVGVzdHMgdGhhdCB3ZSBi
dWJibGUgdXAgdGhlIGV2ZW50cyBpZiB3ZSBkcmFnIHNvbWV0aGluZyB0byBhIG5vbi1pZnJhbWUg
dGFyZ2V0Iik7CiAgICAgdGVzdERyYWdFdmVudEJ1YmJsaW5nKCJ2YWxpZFNwYW5EcmFnVGFyZ2V0
UGFyZW50IiwgInZhbGlkU3BhbkRyYWdUYXJnZXQiKTsKIAotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2Ny
aXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NhY2hlZC1z
Y3JpcHRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Nh
Y2hlZC1zY3JpcHRzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9jYWNoZWQtc2NyaXB0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
OCBAQAogPGh0bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIAogdCA9IDA7CkBAIC0xNSw4ICsxNSw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoZikgewog
ICAgICAgICAgICAgaWYgKGYuY29udGVudFdpbmRvdy5yYW5TY3JpcHQgIT0gdHJ1ZSkgewogICAg
ICAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAnRkFJTFVSRSAtIGRpZCBub3QgcnVuIHNj
cmlwdCBmaXJzdCB0aW1lJwogCi0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZi5jb250ZW50V2luZG93LmxvY2F0
aW9uLmhyZWY9J2Fib3V0OmJsYW5rJzsKQEAgLTI1LDggKzI1LDggQEAgZnVuY3Rpb24gcnVuVGVz
dChmKSB7CiAgICAgICAgICAgICBpZiAoZi5jb250ZW50V2luZG93LnJhblNjcmlwdCAhPSB1bmRl
ZmluZWQpIHsKICAgICAgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gJ0ZBSUxVUkUgLSBy
YW5TY3JpcHQgdmFyaWFibGUgaXMgbm90IHVuZGVmaW5lZCcKIAotICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBmLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZj0ncmVzb3VyY2VzL2Nh
Y2hlZC1zY3JpcHRzLXN1YmZyYW1lLmh0bWwnOwpAQCAtMzcsOCArMzcsOCBAQCBmdW5jdGlvbiBy
dW5UZXN0KGYpIHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXN1bHQuaW5u
ZXJIVE1MID0gJ1NVQ0NFU1MnOwogCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jYW52YXMt
cGF0dGVybi1mcm9tLWluY3JlbWVudGFsLWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NhbnZhcy1wYXR0ZXJuLWZyb20taW5jcmVtZW50YWwtaW1h
Z2UuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NhbnZhcy1wYXR0ZXJuLWZyb20taW5jcmVtZW50YWwtaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw3ICsxLDcgQEAKIFRlc3RzIHRoYXQgaW5jb21wbGV0ZSAobm90IGZ1bGx5IGxvYWRl
ZC9kZWNvZGVkKSBpbWFnZXMgY2Fubm90IGJlIHVzZWQgdG8gY3JlYXRlIGEgQ2FudmFzUGF0dGVy
bi48YnIvPjxici8+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBjYW52YXMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5n
LWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLWRlZmF1bHQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1m
aWVsZC1kZWZhdWx0Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLWRlZmF1bHQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsOSArMTUsOSBAQCBUaGlzIHNob3VsZCBzdWJtaXQg
X2NoYXJzZXRfPWlzbzg1NTktMS4gCiA8L2Zvcm0+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBkb2N1bWVudC50ZXN0Rm9ybS5zdWJtaXQoKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRl
bi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdp
dGgtQmlnNS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUJpZzUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTQsOSArMTQsOSBAQCBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4g
aGlkZGVuIF9jaGFyc2V0XyBmCiA8L2Zvcm0+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Rm9ybSIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXIt
ZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1FVUMtSlAuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRk
ZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1KUC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNl
dC1maWVsZC13aXRoLUVVQy1KUC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw5ICsxNCw5IEBA
IGNoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGYKIDwvZm9ybT4KIAogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBmb3Jt
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13
aXRoLUlTTy0yMDIyLUpQLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1JU08tMjAy
Mi1KUC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQ
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDkgKzE0LDkgQEAgY2hhcmFjdGVyIGVuY29kaW5n
IGluIGhpZGRlbiBfY2hhcnNldF8gZgogPC9mb3JtPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdEZvcm0iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9j
aGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtU2hpZnRfSklTLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rpbmct
aW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlk
ZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTQsOSArMTQsOSBAQCBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmCiA8
L2Zvcm0+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
fQogCiB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNo
YXJzZXQtZmllbGQtd2l0aC1hY2NlcHQtY2hhcnNldC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtYWNjZXB0LWNoYXJzZXQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmll
bGQtd2l0aC1hY2NlcHQtY2hhcnNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw5ICsxNSw5
IEBAIGNoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGYKIDwvZm9ybT4KIAog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBm
b3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVs
ZC13aXRoLWdldC1tZXRob2QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLWdldC1t
ZXRob2QuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9k
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDkgKzE0LDkgQEAgY2hhcmFjdGVyIGVuY29kaW5n
IGluIGhpZGRlbiBfY2hhcnNldF8gZgogPC9mb3JtPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdEZvcm0iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9j
aGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtb25lLWZpZWxkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rpbmct
aW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlk
ZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTQsOSArMTQsOSBAQCBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmCiA8
L2Zvcm0+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
fQogCiB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4tdGV4dC1jaGFy
c2V0LWZpZWxkLXdpdGgtdmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi10ZXh0LWNoYXJzZXQtZmllbGQtd2l0aC12YWx1
ZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
Y2hhci1lbmNvZGluZy1pbi10ZXh0LWNoYXJzZXQtZmllbGQtd2l0aC12YWx1ZS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNCw5ICsxNCw5IEBAIGNoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4g
X2NoYXJzZXRfIGYKIDwvZm9ybT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3RGb3JtIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGlu
Zy13aXRob3V0LWNoYXJzZXQtZmllbGQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy13aXRob3V0LWNoYXJzZXQtZmllbGQuaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5j
b2Rpbmctd2l0aG91dC1jaGFyc2V0LWZpZWxkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDkg
KzEzLDkgQEAgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZgogPC9mb3Jt
PgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHZh
ciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7CiBmb3JtLnN1Ym1p
dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJzZXQtc25pZmZlci1l
bmQtc25pZmZpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvY2hhcnNldC1zbmlmZmVyLWVuZC1zbmlmZmluZy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhcnNldC1zbmlmZmVyLWVuZC1zbmlmZmlu
Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogdmFyIHRpbWUxID0gMDsKIHZh
ciB0aW1lMiA9IDA7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAK
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMzcsOCArMzcsOCBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICBlbHNlCiAgICAgICAgIGxvZygiUEFTUzogRmlyc3Qgc2NyaXB0IHJhbiBiZWZvcmUgc2Vj
b25kIHNjcmlwdCB3YXMgbG9hZGVkLiIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiA8L3NjcmlwdD4KIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVzLXVybHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY29weS1yZXNvbHZlcy11cmxzLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVz
LXVybHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsMTAgKzE1LDEwIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKICAg
ICBzLnNlbGVjdEFsbENoaWxkcmVuKHRlc3QpOwogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJu
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiQ29weSIpOwogICAgIC8vIEl0IGxvb2tzIGxpa2Ugb24gYSBtYWMsIFVSTHMgYXJlIHJl
c29sdmVkIG9ubHkgaWYgdGhlIHBhZ2Ugd2UncmUgcGFzdGluZwpAQCAtNDMsOCArNDMsOCBAQCBm
dW5jdGlvbiBhZnRlclBhc3RlKCkKICAgICB2YXIgcGFzdGVIZXJlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBhc3RlaGVyZSIpOwogICAgIHZhciByZXN1bHRzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdHMiKTsKICAgICByZXN1bHRzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHBhc3RlSGVyZS5pbm5lckhUTUwpKTsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKIH0KIAogaWYgKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCA9PSAiP3Bhc3RlIikK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jcmFzaC1tdWx0aXBsZS1mYW1pbHkt
Zm9udGZhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
Y3Jhc2gtbXVsdGlwbGUtZmFtaWx5LWZvbnRmYWNlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jcmFzaC1tdWx0aXBsZS1mYW1pbHktZm9udGZh
Y2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAogCiA8L3N0eWxlPgogPHNj
cmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9j
cmVhdGVFbGVtZW50TmFtZXNwYWNlMS54bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2NyZWF0ZUVsZW1lbnROYW1lc3BhY2UxLnhtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NyZWF0ZUVsZW1lbnROYW1lc3BhY2Ux
LnhtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDxwcmUgaWQ9ImNvbnNvbGUiPjwv
cHJlPgogCiA8c2NyaXB0IGlkPSJzY3JpcHRUYWciPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgbG9nKCJUaGlzIHRlc3Qgd2FzIHdyaXR0ZW4gdG8gYWRkcmVzcyByZGFyOi8v
cHJvYmxlbS80OTc2ODc5LiAgQW5kIHRlc3RzIGhvdyBuYW1lc3BhY2VVUkkncyBhcmUgYXNzaWdu
ZWQuIik7CiAgICAgbG9nKCIiKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9j
cmVhdGVFbGVtZW50TmFtZXNwYWNlMi54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvY3JlYXRlRWxlbWVudE5hbWVzcGFjZTIueGh0bWwJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jcmVhdGVFbGVtZW50TmFtZXNw
YWNlMi54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxzY3JpcHQgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSIuLi9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtYWNjZXNzLmpzIj48L3NjcmlwdD4K
IDxwcmUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGlkPSJjb25zb2xlIj48
L3ByZT4KIDxzY3JpcHQgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGlkPSJz
Y3JpcHRUYWciPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgbG9nKCJUaGlz
IHRlc3Qgd2FzIHdyaXR0ZW4gdG8gYWRkcmVzcyByZGFyOi8vcHJvYmxlbS80OTc2ODc5LiAgQW5k
IHRlc3RzIGhvdyBuYW1lc3BhY2VVUkkncyBhcmUgYXNzaWduZWQuIik7CiAgICAgbG9nKCIiKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jcmVhdGVFbGVtZW50TmFtZXNwYWNl
My5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jcmVhdGVF
bGVtZW50TmFtZXNwYWNlMy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvY3JlYXRlRWxlbWVudE5hbWVzcGFjZTMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNiw4ICs2LDggQEAKIDxib2R5PgogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InNjcmlwdFRhZyI+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICBsb2coIlRoaXMgdGVzdCB3YXMgd3JpdHRlbiB0byBhZGRy
ZXNzIHJkYXI6Ly9wcm9ibGVtLzQ5NzY4NzkuICBBbmQgdGVzdHMgaG93IG5hbWVzcGFjZVVSSSdz
IGFyZSBhc3NpZ25lZC4iKTsKICAgICBsb2coIiIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2Nzcy1hY2NlcHQtYW55LXR5cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvY3NzLWFjY2VwdC1hbnktdHlwZS5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY3NzLWFjY2VwdC1hbnktdHlw
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogICAgIDxzY3JpcHQ+CiAgICAg
ICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKICAg
ICAgICAgICAgIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUodGFyZ2V0KTsKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jc3MtcmVqZWN0LWFueS10eXBlLWluLXN0cmljdC1t
b2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Nzcy1y
ZWplY3QtYW55LXR5cGUtaW4tc3RyaWN0LW1vZGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Nzcy1yZWplY3QtYW55LXR5cGUtaW4tc3RyaWN0
LW1vZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKICAgICA8c2NyaXB0Pgog
ICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7
CiAgICAgICAgICAgICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRhcmdldCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZG5zLXByZWZldGNoLWNvbnRyb2wuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZG5zLXByZWZldGNoLWNv
bnRyb2wuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2Rucy1wcmVmZXRjaC1jb250cm9sLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4
IEBACiAgICAgfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgZnVuY3Rpb24gZW1pdEZyYW1lV2l0aENvbnRlbnRzKGNvbnRlbnRzKSAKICAgICB7
CiAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8aWZyYW1lIHNyYz1cImRhdGE6dGV4dC9odG1sLCIg
KyBjb250ZW50cyArICJcIj48L2lmcmFtZT4iKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9kcmFnLW5vdC1sb2FkZWQtaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvZHJhZy1ub3QtbG9hZGVkLWltYWdlLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9kcmFnLW5vdC1sb2FkZWQt
aW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVu
Y3Rpb24gbG9nKHRleHQpCkBAIC0yMyw3ICsyMyw3IEBAIGZ1bmN0aW9uIGxvZyh0ZXh0KQogICAg
ICAgICByZWFkeVN0YXRlID0gZG9jdW1lbnQucmVhZHlTdGF0ZTsKICAgICAgICAgaWYgKHJlYWR5
U3RhdGUgPT0gJ2NvbXBsZXRlJykgewogICAgICAgICAgICAgbG9nKCJTdWNjZXNzIikKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCkKICAgICAgICAgfSBlbHNlIGlmIChyZWFkeVN0YXRlID09ICds
b2FkaW5nJyB8fCByZWFkeVN0YXRlID09ICdpbnRlcmFjdGl2ZScpIHsKICAgICAgICAgICAgIHgg
PSBlLm9mZnNldExlZnQgKyBlLm9mZnNldFdpZHRoIC8gMjsKICAgICAgICAgICAgIHkgPSBlLm9m
ZnNldFRvcCArIGUub2Zmc2V0SGVpZ2h0IC8gMjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFsaWQtc291cmNlLWNyYXNoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2RyYWctb3Zlci1pZnJhbWUtaW52
YWxpZC1zb3VyY2UtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2RyYWctb3Zlci1pZnJhbWUtaW52YWxpZC1zb3VyY2UtY3Jhc2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxoZWFkPgogPHNjcmlwdD4KIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyAKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOyAK
IAogICAgIHZhciBhYmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWJlIik7CiAgICAgdmFy
IGRyYWdUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ1RhcmdldCIpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2VtYmVkQ3Jhc2hlci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9lbWJlZENyYXNoZXIuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2VtYmVkQ3Jhc2hl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGVtYmVkIHNyYz0nZG9lc25v
dGV4aXN0Jz4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgYWxl
cnQoIlBBU1M6IElmIHlvdSBzZWUgdGhpcyBhbmQgdGhlIHRlc3QgZGlkIG5vdCBjcmFzaCB0aGUg
dGVzdCBoYXMgcGFzc2VkLiAocmRhcjovL3Byb2JsZW0vNTI2Nzg3MCkiKTsKIDwvc2NyaXB0Pgog
PGZyYW1lc2V0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2VtcHR5LWNvb2tp
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9lbXB0eS1j
b29raWUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2VtcHR5LWNvb2tpZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGJv
ZHk+CiA8cD5UZXN0IHRoYXQgc2V0dGluZyBhIGRvY3VtZW50LmNvb2tpZSB0byBhbiBlbXB0eSB2
YWx1ZSBoYXMgbm8gZWZmZWN0PC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBkb2N1bWVu
dC5jb29raWUgPSAiIjsKIGRvY3VtZW50LndyaXRlKGRvY3VtZW50LmNvb2tpZSA/ICJGQUlMVVJF
IiA6ICJTVUNDRVNTIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZW1wdHkt
ZmlsZS1mb3JtZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9lbXB0eS1maWxlLWZvcm1kYXRhLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9lbXB0eS1maWxlLWZvcm1kYXRhLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTMsOSArMyw5IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgIH0KIAogICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2VtcHR5LXVybHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvZW1wdHktdXJscy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZW1wdHktdXJscy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgZXhwZWN0ZWRQYXNzZXMgPSA2OwpA
QCAtMjYsOCArMjYsOCBAQCBmdW5jdGlvbiBsb2dQYXNzKG1lc3NhZ2UsIG1lc3NhZ2VOdW1iZXIp
CiAgICAgfQogCiAgICAgZXhwZWN0ZWRQYXNzZXMtLTsKLSAgICBpZiAoZXhwZWN0ZWRQYXNzZXMg
PT0gMCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAoZXhwZWN0ZWRQYXNzZXMgPT0gMCAmJiB3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8
L3NjcmlwdD4KIDxsaW5rIHJlbD0iaWNvbiIgc3JjPSIiIGhyZWY9IiIgb25lcnJvcj0ibG9nKCdG
QUlMOiBsaW5rIHJlbD1pY29uIG9uZXJyb3IgZmlyZWQnKSI+PC9saW5rPgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pY29uLWxvYWRpbmctb3Zl
cnJpZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2
aWNvbi1sb2Fkcy13aXRoLWljb24tbG9hZGluZy1vdmVycmlkZS5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWlj
b24tbG9hZGluZy1vdmVycmlkZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDEzICszLDEzIEBA
CiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SWNvbkRhdGFiYXNlRW5hYmxl
ZCh0cnVlKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzYWJsZUltYWdlTG9hZGlu
ZygpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdExvYWRTaXRlSWNvbnNLZXkiLCAxKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cXVldWVSZWxvYWQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcygpOworICAgICAgICB0ZXN0UnVubmVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQo
dHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuZGlzYWJsZUltYWdlTG9hZGluZygpOworICAgICAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0TG9hZFNpdGVJY29uc0tleSIs
IDEpOworICAgICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7CiAgICAgfQogfQogPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRo
LWltYWdlcy1kaXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdp
dGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTIgKzMsMTIgQEAK
IDxzY3JpcHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNr
cygpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRJY29uRGF0YWJhc2VFbmFibGVk
KHRydWUpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNhYmxlSW1hZ2VMb2FkaW5n
KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlUmVsb2FkKCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRJY29uRGF0YWJhc2VFbmFibGVkKHRydWUpOworICAgICAgICB0ZXN0UnVu
bmVyLmRpc2FibGVJbWFnZUxvYWRpbmcoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9h
ZCgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2ZvbnQtZmFjZS1pbi1tdWx0aXBsZS1zZWdtZW50ZWQtZmFjZXMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZm9udC1mYWNlLWluLW11bHRpcGxlLXNl
Z21lbnRlZC1mYWNlcy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvZm9udC1mYWNlLWluLW11bHRpcGxlLXNlZ21lbnRlZC1mYWNlcy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgfQogPC9zdHlsZT4KIDxzY3JpcHQ+
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxwIHN0eWxlPSJmb250
LWZhbWlseTogdGVzdDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5UZXN0IGZvcgogPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDU0Ij5odHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NTQ8L2E+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4
dHBsYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDkgKzE0LDkgQEAgZm9ybXMgUE9TVGVk
IHdpdGggYSBjb250ZW50LXR5cGUgb2YgdGV4dAogICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZh
bHVlPSJwcmVzcyBtZSI+CiA8L2Zvcm0+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogZG9jdW1lbnQuZi5zdWJtaXQoKTsKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9mcmFtZS1kZWZhdWx0LWVuYy1kaWZmZXJlbnQtZG9tYWluLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ZyYW1lLWRlZmF1
bHQtZW5jLWRpZmZlcmVudC1kb21haW4uaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ZyYW1lLWRlZmF1bHQtZW5jLWRpZmZlcmVudC1kb21haW4u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxtZXRhIGh0dHAtZXF1aXY9ImNv
bnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXgtbWFjLWN5cmlsbGljIj4K
IDx0aXRsZT5GcmFtZXMgYW5kIGVuY29kaW5nczwvdGl0bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxmcmFtZXNldCByb3dzPSIwLCoiPgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ZyYW1lLWRlZmF1bHQtZW5jLXNhbWUtZG9tYWluLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ZyYW1lLWRlZmF1
bHQtZW5jLXNhbWUtZG9tYWluLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9mcmFtZS1kZWZhdWx0LWVuYy1zYW1lLWRvbWFpbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjU2Ij4KIDx0aXRsZT5GcmFt
ZXMgYW5kIGVuY29kaW5nczwvdGl0bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3Njcmlw
dD4KIDwvaGVhZD4KIDxmcmFtZXNldCByb3dzPSIwLCoiPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2lmcmFtZS1kb21haW4tdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pZnJhbWUtZG9tYWluLXRlc3QuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2lmcmFtZS1kb21haW4tdGVz
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04MSw4ICs4MSw4IEBAIGZ1bmN0aW9uIHJ1bigpCiAg
ICAgICAgIG9TcGFuMi5pbm5lckhUTUwgPSAiRkFJTDxicj4iICsgc3RyOwogICAgIH0gICAgCiAK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaWZyYW1lLWZsYXR0ZW5pbmctM2xldmVsLW5lc3Rpbmct
d2l0aC1ibG9ja2luZy1yZXNvdXJjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9pZnJhbWUtZmxhdHRlbmluZy0zbGV2ZWwtbmVzdGluZy13aXRoLWJsb2Nr
aW5nLXJlc291cmNlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9pZnJhbWUtZmxhdHRlbmluZy0zbGV2ZWwtbmVzdGluZy13aXRoLWJsb2NraW5n
LXJlc291cmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxodG1sPgog
PGhlYWQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRGcmFt
ZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KICAgICA8
c3R5bGU+Ym9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9PC9zdHlsZT4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pZnJhbWUtaW52YWxpZC1zb3VyY2UtY3Jhc2guaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaWZyYW1lLWludmFs
aWQtc291cmNlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9pZnJhbWUtaW52YWxpZC1zb3VyY2UtY3Jhc2guaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiAgICAgPHNjcmlwdD4KLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiA8
L2hlYWQ+CiAgICAgPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaWZy
YW1lLXJlcGFyZW50aW5nLWlkLWNvbGxpc2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9pZnJhbWUtcmVwYXJlbnRpbmctaWQtY29sbGlzaW9uLmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pZnJhbWUt
cmVwYXJlbnRpbmctaWQtY29sbGlzaW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQs
MTAgQEAKIHZhciB3MSwgdzI7CiB2YXIgaWZyYW1lWEhSQ291bnQgPSAwOwogCi1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cyh0cnVlKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3ModHJ1
ZSk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtNTQsOCArNTQsOCBAQCBmdW5jdGlv
biBub3RpZnlEb25lKCkKICAgICB3MS5jbG9zZSgpOwogICAgIHcyLmNsb3NlKCk7CiAKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtY2hhbmdlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3Jj
LWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEx
LDE1ICsxMSwxNSBAQAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbnNvbGUu
aW5uZXJIVE1MID0gIkZBSUxFRCI7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rp
b24gY2hhbmdlU3JjKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZhciBpbWFn
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOwogCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtbm8tY2hhbmdlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLW5v
LWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvaW1hZ2UtYmxvY2tlZC1zcmMtbm8tY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTMsOCArMyw4IEBACiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2VjbWFzY3JpcHQiPgogICAgICAg
ICBmdW5jdGlvbiBjaGFuZ2VTcmMoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAgICAgdmFy
IGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CiAKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1jaGVja3MtZm9yLWFjY2VwdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1jaGVja3MtZm9yLWFj
Y2VwdC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvaW1hZ2UtY2hlY2tzLWZvci1hY2NlcHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsx
LDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
dGVzdCgpIHsKQEAgLTE1LDggKzE1LDggQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVz
dWx0LmlubmVySFRNTCA9ICJGQUlMIjsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1lcnJvci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFnZS1lcnJvci5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtZXJyb3IuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNCArMSwxNCBAQAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIGZpbmlzaGVkKCkKICAgICB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJykuaW5uZXJIVE1MID0gIlRoZSBpbWFnZSBzaXplIGlzOiAiICsgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLndpZHRoICsgIngiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmhlaWdodDsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8ZGl2IGlkPSJ0YXJnZXQiPgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2lzaW5kZXgtZm9ybWRhdGEuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaXNpbmRleC1mb3JtZGF0YS5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaXNpbmRleC1m
b3JtZGF0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE1ICsyLDE1IEBACiBmdW5jdGlvbiB0
ZXN0KCkKIHsKICAgICBpZiAoIWxvY2F0aW9uLnNlYXJjaC5sZW5ndGgpIHsKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJpc2luZGV4IikpIHsKICAgICAgICAgICAgIGxvZygiQ291bGQgbm90IGZpbmQg
aXNpbmRleCBlbGVtZW50Iik7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaXNpbmRleCIpLnZhbHVlID0gIlRoaXMg
aXMgYSB0ZXN0IjsKQEAgLTIyLDggKzIyLDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGxvZygiUEFTUyIpOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2lzaW5kZXgtd2l0aC1uby1mb3JtLWJhc2UtaHJlZi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pc2luZGV4LXdpdGgtbm8tZm9ybS1iYXNl
LWhyZWYuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2lzaW5kZXgtd2l0aC1uby1mb3JtLWJhc2UtaHJlZi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEwICsxLDEwIEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2lzaW5kZXgtd2l0aC1uby1mb3JtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2lzaW5kZXgtd2l0aC1uby1mb3JtLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pc2luZGV4LXdpdGgtbm8tZm9ybS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICB2
YXIgaXNpbmRleEVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpc2luZGV4Iik7CiAgICAg
aWYgKCFsb2NhdGlvbi5zZWFyY2gubGVuZ3RoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgICAgICB9CiAKICAgICAgICAgaXNpbmRleEVsbS52YWx1ZSA9ICJUaGlzIGlzIGEgdGVz
dCI7CkBAIC0yMiw4ICsyMiw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBsb2coIlBBU1MiKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9qYXZhc2NyaXB0LXVybC1zdG9wLWxvYWRlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvamF2YXNjcmlwdC11cmwtc3RvcC1sb2FkZXJzLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9qYXZhc2NyaXB0
LXVybC1zdG9wLWxvYWRlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsOCArMTgsOCBAQCBm
dW5jdGlvbiBmaW5pc2goKQogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kp
CiAgICAgICAgICAgICBuZXcgT2JqZWN0OwogICAgIH0KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
ICAgIAorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7ICAgIAogfQogCiBmdW5jdGlvbiBsb2FkU2Vjb25kKCkKQEAgLTI3LDkgKzI3LDkg
QEAgZnVuY3Rpb24gbG9hZFNlY29uZCgpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFk
Iikuc3JjID0gImphdmFzY3JpcHQ6ICc8IURPQ1RZUEUgaHRtbD48c2NyaXB0PndpbmRvdy5wYXJl
bnQuZmluaXNoKCk7PCIgKyAiL3NjcmlwdD4nIjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIH0KIAogc2V0VGltZW91dCgibG9hZEZpcnN0KCk7IiwgMCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGFzdC1tb2RpZmllZC1wYXJzaW5nLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xhc3QtbW9kaWZpZWQt
cGFyc2luZy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvbGFzdC1tb2RpZmllZC1wYXJzaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJh
bWVzQXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QodGV4dCkgewpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJlZm9yZWxv
YWQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDExICsz
LDExIEBACiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SWNvbkRhdGFiYXNl
RW5hYmxlZCh0cnVlKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVSZWxvYWQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygp
OworICAgICAgICB0ZXN0UnVubmVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQodHJ1ZSk7CisgICAg
ICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKICAgICB9CiB9CiA8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3VicmVz
b3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbGlu
ay1yZWwtcHJlZmV0Y2gtYW5kLXN1YnJlc291cmNlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1wcmVmZXRjaC1hbmQtc3VicmVz
b3VyY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsOSArMTUsOSBAQCBmdW5jdGlvbiBDYWxs
Q29tbWFuZChjbWQpCiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIH0KIApA
QCAtMjYsOCArMjYsOCBAQCBmdW5jdGlvbiBlbmRUZXN0KCkKICAgICBnZXRSZXNvdXJjZUxvZygp
OwogICAgIENhbGxDb21tYW5kKCJjbGVhci1yZXNvdXJjZS1yZXF1ZXN0LWxvZyIpOwogCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGdldFJlc291cmNlTG9nKCkK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9sb2NhdGlvbi1vcmlnaW4uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbG9jYXRpb24tb3JpZ2lu
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9s
b2NhdGlvbi1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLm9yaWdp
biArICc8YnI+Jyk7CiBkb2N1bWVudC53cml0ZShkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gKyAn
PGJyPicpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xvY2F0aW9uLXJlcGxh
Y2UtY3Jvc3Nkb21haW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvbG9jYXRpb24tcmVwbGFjZS1jcm9zc2RvbWFpbi5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbG9jYXRpb24tcmVwbGFjZS1jcm9zc2Rv
bWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDEyICs0LDEyIEBACiBmdW5jdGlvbiB0ZXN0
KCkKIHsgICAgCiAgICAgd2luZG93LmZyYW1lc1snY3Jvc3NEb21haW5GcmFtZSddLmxvY2F0aW9u
LnJlcGxhY2UoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jlc291cmNlcy9zdWNjZXNzLmh0
bWwiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBzZXRU
aW1lb3V0KCJsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkiLCAxKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHNldFRpbWVvdXQoInRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpIiwgMSk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIAogPC9zY3JpcHQ+CiA8
L2hlYWQ+CkBAIC0yMCw0ICsyMCw0IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CiA8IS0tICAgICAKIDxyZGFyOi8vcHJvYmxlbS80ODA4MDM5PiAKIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjMwCi0tLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCistLT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9sb2NhdGlvbi10ZXN0
LXhzbC1zdHlsZS1zaGVldC54bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2xvY2F0aW9uLXRlc3QteHNsLXN0eWxlLXNoZWV0LnhtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2xvY2F0aW9uLXRlc3QteHNsLXN0eWxl
LXNoZWV0LnhtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKIO+7vzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KIDw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4
dC94c2wiIGhyZWY9InJlc291cmNlcy9sb2NhdGlvbi10ZXN0LXhzbC1zdHlsZS1zaGVldC54c2wi
Pz4NCi08c3R1Yi8+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPHN0dWIvPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL21ldGEtcmVmcmVzaC1zdHJheS1zaW5nbGUtcXVv
dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbWV0YS1y
ZWZyZXNoLXN0cmF5LXNpbmdsZS1xdW90ZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbWV0YS1yZWZyZXNoLXN0cmF5LXNpbmdsZS1xdW90ZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiAK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9taXNzaW5nLXN0eWxlLXNoZWV0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL21pc3Npbmctc3R5
bGUtc2hlZXQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL21pc3Npbmctc3R5bGUtc2hlZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgZnVuY3Rp
b24gZGlkTG9hZCgpCiAgICAgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9h
ZFN0YXR1cyIpLmlubmVyVGV4dCA9ICJQQVNTOiBMb2FkIGV2ZW50IGZpcmVkLiI7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbXVsdGlwbGUtc3VibWl0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL211bHRpcGxlLXN1Ym1pdC5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbXVsdGlwbGUt
c3VibWl0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDkgKzE0LDkgQEAgZnVuY3Rpb24gY2xp
Y2tmKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIH0KIAogc2V0VGltZW91dChmdW5jdGlvbigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N1YicpLmNsaWNrKCk7IH0sIDApOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL25vLWxhc3QtbW9kaWZpZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2Mvbm8tbGFzdC1tb2RpZmllZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mvbm8tbGFzdC1tb2RpZmllZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5j
dGlvbiB0ZXN0KHRleHQpIHsKICAgICBkb2N1bWVudC53cml0ZSgnPGlmcmFtZSBzcmM9Ii4uL3Jl
c291cmNlcy9sYXN0LW1vZGlmaWVkLnBocD9kYXRlPScgKyBlc2NhcGUodGV4dCkgKyAnIj48L2lm
cmFtZT4nKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9vYmplY3QtZW1iZWRk
aW5nLXN2Zy1kZWxheWVkLXNpemUtbmVnb3RpYXRpb24ueGh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL29iamVjdC1lbWJlZGRpbmctc3ZnLWRlbGF5ZWQtc2l6
ZS1uZWdvdGlhdGlvbi54aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL29iamVjdC1lbWJlZGRpbmctc3ZnLWRlbGF5ZWQtc2l6ZS1uZWdvdGlhdGlv
bi54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwxMiArOCwxMiBAQCBvYmplY3QgewogfQogPC9z
dHlsZT4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAg
ICBmdW5jdGlvbiBmaW5pc2hlZCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwgMCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOyB9LCAwKTsKICAgICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9vYmplY3QtaW1hZ2UtZXJyb3Itd2l0aC1vbmxvYWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mvb2JqZWN0LWltYWdl
LWVycm9yLXdpdGgtb25sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9vYmplY3QtaW1hZ2UtZXJyb3Itd2l0aC1vbmxvYWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPHNjcmlwdD4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKQogICAgIH0KIDwvc2NyaXB0PgogPGJvZHk+IApJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL29iamVjdC1pbWFnZS1lcnJvci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9vYmplY3QtaW1hZ2UtZXJyb3IuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL29iamVj
dC1pbWFnZS1lcnJvci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE0IEBACiA8c2Ny
aXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZmluaXNoZWQoKQogICAgIHsKICAgICAgICAg
ZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0KIDwvc2NyaXB0PgogPHA+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2Mvb25sb2FkLXJlbW92ZS1pZnJhbWUtY3Jhc2gtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9vbmxvYWQtcmVtb3ZlLWlmcmFtZS1j
cmFzaC0yLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9vbmxvYWQtcmVtb3ZlLWlmcmFtZS1jcmFzaC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTIsOSArMiw5IEBACiA8aGVhZD4KICAgICA8dGl0bGU+aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTkyOTwvdGl0bGU+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgcmVsb2FkZWQgPSBmYWxzZTsK
QEAgLTE0LDkgKzE0LDkgQEAKICAgICAgICAgICAgICAgICByZWxvYWRlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgZnJhbWVzWzBdLmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGFsZXJ0KCJTVUNDRVNTIik7Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcGVyY2VudC1zaWduLWluLWZvcm0t
ZmllbGQtbmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9wZXJjZW50LXNpZ24taW4tZm9ybS1maWVsZC1uYW1lLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wZXJjZW50LXNpZ24taW4tZm9ybS1maWVs
ZC1uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8aW5wdXQgdHlwZT0i
dGV4dCIgbmFtZT0iYWJjJTQwZGVmIiB2YWx1ZT0idGVzdCI+CiA8L2Zvcm0+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGRvY3VtZW50LmZvcm1zWzBd
LnN1Ym1pdCgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
cG9saWN5LWRlbGVnYXRlLWNhbGxlZC10d2ljZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtY2FsbGVkLXR3aWNlLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVs
ZWdhdGUtY2FsbGVkLXR3aWNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAK
IDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wb3N0LXN1Ym1pdC1idXR0b24uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcG9zdC1zdWJtaXQtYnV0dG9u
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9w
b3N0LXN1Ym1pdC1idXR0b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIDwv
Zm9ybT4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeU5hbWUoInN1Ym1pdCIpWzBdLmNsaWNrKCk7CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2Uu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3By
ZWZldGNoLXB1cnBvc2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiwxMCArNiwxMCBAQCBmdW5j
dGlvbiBmaW5pc2hVcCgpIHsKICAgICB3aW5kb3cubG9jYXRpb24gPSAncmVzb3VyY2VzL3ByZWZl
dGNoLXB1cnBvc2UucGhwJzsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKIH0K
IDwvc2NyaXB0PgogPGxpbmsgaHJlZj0icmVzb3VyY2VzL3ByZWZldGNoLXB1cnBvc2UucGhwIiBy
ZWw9InByZWZldGNoIiBvbmxvYWQ9ImZpbmlzaFVwKCkiPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWFib3V0LWJsYW5rLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWFib3V0LWJsYW5rLmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZWRpcmVj
dC10by1hYm91dC1ibGFuay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0
bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1
bmN0aW9uIHJ1blRlc3QoKQpAQCAtMTcsOCArMTcsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAg
ICBlbHNlCiAgICAgICAgIHIuaW5uZXJIVE1MID0gIkZBSUxFRDogRGlkIG5vdCBjcmFzaCBidXQg
ZGlkIG5vdCBsb2FkIGFib3V0OmJsYW5rIGNvcnJlY3RseSI7CiAgICAgICAgIAotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVkaXJlY3QtdG8tZXh0ZXJu
YWwtdXJsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jl
ZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVkaXJlY3QtdG8tZXh0ZXJuYWwtdXJsLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9y
ZWRpcmVjdC13aXRoLXF1b3Rlcy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL3JlZGlyZWN0LXdpdGgtcXVvdGVzLnBocAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXdpdGgtcXVvdGVzLnBocAkod29y
a2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAKIAogPGJvZHk+CiA8c2NyaXB0PgotICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgIH0KIDwvc2Ny
aXB0PgogICAgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVmZXJyZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVmZXJyZXIuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlZmVy
cmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogd2luZG93LmxvY2F0aW9uID0gJ3Jl
c291cmNlcy9yZWZlcnJlci1yZXN1bHQucGhwJzsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9yZWZyZXNoLWhlYWRlcnMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9yZWZyZXNoLWhlYWRlcnMucGhwCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVmcmVzaC1oZWFkZXJzLnBocAkod29ya2luZyBj
b3B5KQpAQCAtMTUsMTcgKzE1LDE3IEBACiAgIAogICBpZiAoJGdvdE5vQ2FjaGUpIHsKICAgICBl
Y2hvICc8cD5Hb3QgYSBuby1jYWNoZSBkaXJlY3RpdmU7IEZBSUxVUkUhPC9wPic7Ci0gICAgZWNo
byAnPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7IGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsgfTwvc2NyaXB0Pic7CisgICAgZWNobyAnPHNjcmlwdD5p
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH08L3Njcmlw
dD4nOwogICB9IGVsc2UgaWYgKCRnb3RNYXhBZ2UpIHsKICAgICBlY2hvICc8cD5TVUNDRVNTPC9w
Pic7Ci0gICAgZWNobyAnPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfTwvc2NyaXB0Pic7CisgICAgZWNo
byAnPHNjcmlwdD5pZiAod2luZG93LnRlc3RSdW5uZXIpIHsgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7IH08L3NjcmlwdD4nOwogICB9IGVsc2UgewogICAgIGVjaG8gJzxib2R5IG9ubG9hZD0id2lu
ZG93LmxvY2F0aW9uLnJlbG9hZCgpOyI+JzsKICAgICBlY2hvICc8cD5ObyBjYWNoZSBjb250cm9s
IGhlYWRlcnMsIHJlbG9hZGluZy4uLjwvcD4nOwotICAgIGVjaG8gJzxzY3JpcHQ+aWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeyBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7IH08L3NjcmlwdD4nOworICAgIGVjaG8gJzxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOyB9PC9zY3JpcHQ+JzsKICAgICBlY2hv
ICc8c2NyaXB0PmZ1bmN0aW9uIHRlc3QoKSB7d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO308L3Nj
cmlwdD4nOwogICB9CiAKLSAgZWNobyAnPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsgfTwvc2NyaXB0Pic7
CisgIGVjaG8gJzxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7IHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOyB9PC9zY3JpcHQ+JzsKICAgZWNobyAnPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01NDk5Ij5idWcgNTQ5
OTwvYT46IFBhZ2UgcmVsb2FkIGRvZXMgbm90IHNlbmQgYW55IGNhY2hlIGNvbnRyb2wgaGVhZGVy
cy48L3A+JzsKID8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGlj
YXRpb24tcmVkaXJlY3QtMS9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LWNyb3NzLW9y
aWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9hdXRo
ZW50aWNhdGlvbi1yZWRpcmVjdC0xL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJlY3QtY3Jv
c3Mtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0xL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8t
cmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDIxICsxMCwy
MSBAQCByZWRpcmVjdENvZGVzWzNdID0gIjMwNyI7CiBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCiB7
CiAgICAgaWYgKCsrZnJhbWVzTG9hZGVkID09IDQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
YXBwZW5kRnJhbWUocmVkaXJlY3RDb2Rlc1tmcmFtZXNMb2FkZWRdKTsKIH0KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0
VXNlciIpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dv
cmQoInRlc3RQYXNzd29yZCIpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEhh
bmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXModHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRB
dXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNlciIpOworICAgIHRlc3RSdW5uZXIuc2V0QXV0
aGVudGljYXRpb25QYXNzd29yZCgidGVzdFBhc3N3b3JkIik7CiB9CiAKIGZ1bmN0aW9uIGFwcGVu
ZEZyYW1lKGNvZGUpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGlj
YXRpb24tcmVkaXJlY3QtMi9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LXNhbWUtb3Jp
Z2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1dGhl
bnRpY2F0aW9uLXJlZGlyZWN0LTIvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1zYW1l
LW9yaWdpbi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMi9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJl
ZGlyZWN0LXNhbWUtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDIxICsxMCwyMSBA
QCByZWRpcmVjdENvZGVzWzNdID0gIjMwNyI7CiBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCiB7CiAg
ICAgaWYgKCsrZnJhbWVzTG9hZGVkID09IDQpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgYXBw
ZW5kRnJhbWUocmVkaXJlY3RDb2Rlc1tmcmFtZXNMb2FkZWRdKTsKIH0KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNl
ciIpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQo
InRlc3RQYXNzd29yZCIpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldEhhbmRs
ZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXModHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBdXRo
ZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNlciIpOworICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVu
dGljYXRpb25QYXNzd29yZCgidGVzdFBhc3N3b3JkIik7CiB9CiAKIGZ1bmN0aW9uIGFwcGVuZEZy
YW1lKGNvZGUpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRp
b24tcmVkaXJlY3QtMy9hdXRoZW50aWNhdGlvbi1zZW50LXRvLXJlZGlyZWN0LXNhbWUtb3JpZ2lu
LXdpdGgtbG9jYXRpb24tY3JlZGVudGlhbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMy9hdXRoZW50aWNhdGlv
bi1zZW50LXRvLXJlZGlyZWN0LXNhbWUtb3JpZ2luLXdpdGgtbG9jYXRpb24tY3JlZGVudGlhbHMu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2F1
dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTMvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVjdC1z
YW1lLW9yaWdpbi13aXRoLWxvY2F0aW9uLWNyZWRlbnRpYWxzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDIxICsxMCwyMSBAQCByZWRpcmVjdENvZGVzWzNdID0gIjMwNyI7CiBmdW5jdGlvbiBm
cmFtZUxvYWRlZCgpCiB7CiAgICAgaWYgKCsrZnJhbWVzTG9hZGVkID09IDQpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCiAgICAgYXBwZW5kRnJhbWUocmVkaXJlY3RDb2Rlc1tmcmFtZXNMb2FkZWRdKTsK
IH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlcyh0cnVlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlv
blVzZXJuYW1lKCJ0ZXN0VXNlciIpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhl
bnRpY2F0aW9uUGFzc3dvcmQoInRlc3RQYXNzd29yZCIpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXModHJ1ZSk7CisgICAg
dGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNlciIpOworICAgIHRl
c3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgidGVzdFBhc3N3b3JkIik7CiB9CiAK
IGZ1bmN0aW9uIGFwcGVuZEZyYW1lKGNvZGUpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvcmVzb3VyY2VzLzNyZC1sZXZlbC1pZnJhbWUtd2l0aC1ibG9ja2luZy1yZXNvdXJjZS5w
aHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy8z
cmQtbGV2ZWwtaWZyYW1lLXdpdGgtYmxvY2tpbmctcmVzb3VyY2UucGhwCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzLzNyZC1sZXZlbC1p
ZnJhbWUtd2l0aC1ibG9ja2luZy1yZXNvdXJjZS5waHAJKHdvcmtpbmcgY29weSkKQEAgLTksOCAr
OSw4IEBAIHByaW50ICIKIDxib2R5PgogICAgIFBBU1MuCiAgICAgPHNjcmlwdD4KLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAg
PC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVz
b3VyY2VzLzIwMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9yZXNvdXJjZXMvMjAwLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvMjAwLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIDwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
aXhpZTc2L2hhbmRzaGFrZS1mYWlsLWJ5LW5vLXVwZ3JhZGUtaGVhZGVyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9oYW5k
c2hha2UtZmFpbC1ieS1uby11cGdyYWRlLWhlYWRlci5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2hhbmRzaGFr
ZS1mYWlsLWJ5LW5vLXVwZ3JhZGUtaGVhZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDgg
KzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgV2ViU29ja2V0IGhhbmRzaGFrZSBmYWls
cyBpZiBVcGdyYWRlIGhlYWRlciBmaWVsZCBpc24ndCByZWZsZWN0ZWQgYnkgdGhlIHNlcnZlci4i
KTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4
aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOwogCiBmdW5jdGlvbiBlbmRUZXN0KCkK
IHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
aGFuZHNoYWtlLWZhaWwtYnktcHJlcGVuZGVkLW51bGwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2hhbmRzaGFrZS1mYWls
LWJ5LXByZXBlbmRlZC1udWxsLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvaGFuZHNoYWtlLWZhaWwtYnktcHJl
cGVuZGVkLW51bGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3Jp
cHRpb24oJ0Nvbm5lY3Rpb24gc2hvdWxkIGZhaWwgaW1tZWRpYXRlbHksIHJhdGhlciB0aGFuIHN1
Y2NlZWRpbmcgb3Igc3RheWluZyBpbiBsaW1ibyB1bnRpbCB0aW1lb3V0LCBpZiBhIG51bGwgYnl0
ZSBpcyByZWNlaXZlZCBiZWZvcmUgdGhlIGhhbmRzaGFrZS4nKTsKIAogd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZCIsIDEpOwogCiB2YXIgdGltZWRPdXQgPSBmYWxzZTsKIHZhciBjb25uZWN0ZWQgPSBm
YWxzZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGll
NzYvaGFuZHNoYWtlLWZhaWwtYnktc3ViLXByb3RvY29sLW1pc21hdGNoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9oYW5k
c2hha2UtZmFpbC1ieS1zdWItcHJvdG9jb2wtbWlzbWF0Y2guaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9oYW5k
c2hha2UtZmFpbC1ieS1zdWItcHJvdG9jb2wtbWlzbWF0Y2guaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIlRlc3QgV2ViU29ja2V0IGhhbmRzaGFrZSBm
YWlsIGlmIHN1YiBwcm90b2NvbCBuYW1lIG1pc21hdGNoZXMuIik7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAxKTsKIAogdmFyIHByb3RvY29sOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2xvbmctaW52YWxpZC1oZWFkZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhp
ZTc2L2xvbmctaW52YWxpZC1oZWFkZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9sb25nLWludmFsaWQtaGVh
ZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJN
YWtlIHN1cmUgV2ViU29ja2V0IGdpdmVzIGVycm9ycyBvbiBsb25nIGludmFsaWQgdXBncmFkZSBo
ZWFkZXIuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIAogZnVuY3Rpb24gZmlu
aXNoKCkgewogICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SUQpOwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9tdWx0aXBsZS1jb25uZWN0aW9ucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2hpeGllNzYvbXVsdGlwbGUtY29ubmVjdGlvbnMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9tdWx0aXBsZS1j
b25uZWN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiA8cD5UZXN0
IHRoYXQgV2ViU29ja2V0IGlzIG5vdCBzdWJqZWN0IHRvIEhUVFAgY29ubmVjdGlvbiBsaW1pdC4g
U2hvdWxkIHNheSBQQVNTOjwvcD4KIDxwIGlkPXJlc3VsdD5SdW5uaW5nLi4uPC9wPgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIH0KIAogdmFyIHNvY2tldENv
dW50ID0gNTA7CkBAIC0yNiw4ICsyNiw4IEBAIGZvciAoaSA9IDA7IGkgPCBzb2NrZXRDb3VudDsg
KytpKSB7CiAgICAgICAgICAgICAgICAgc29ja2V0c1tqXS5vbmNsb3NlID0gbnVsbDsKICAgICAg
ICAgICAgICAgICBzb2NrZXRzW2pdLmNsb3NlKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAg
ICAgfQogICAgIH0KICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oKSB7IGFsZXJ0KCJGQUlMOiB1
bmV4cGVjdGVkIGNsb3NlIGV2ZW50IikgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9udWxsLWNoYXJhY3Rlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvbnVsbC1jaGFy
YWN0ZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9udWxsLWNoYXJhY3Rlci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIFdlYlNvY2tldCB0cmFu
c2ZlciBudWxsIGNoYXJhY3RlciIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDEpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CiAK
IHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rl
c3RzL2hpeGllNzYvZWNobyIpOwogLy8gXHhmZiBpbiBzdHJpbmcgd291bGQgYmUgXHhjM1x4YmYg
b24gd2Vic29ja2V0IGNvbm5lY3Rpb24gKFVURi04KQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9yZWxvYWQtY3Jhc2guaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3JlbG9h
ZC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3JlbG9hZC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVGVzdCBpZiBpdCBkb2Vzbid0IGNyYXNo
IHdoZW4gcmVsb2FkaW5nIHdoaWxlIFdlYiBTb2NrZXQgaXMgYnVzeSIpOwogCiB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3Nldl
YlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJv
dG9jb2xFbmFibGVkIiwgMSk7CiAKIHZhciBmcmFtZURpdjsKIHZhciByZWxvYWRDb3VudCA9IDA7
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3Nl
bmQtYWZ0ZXItY2xvc2Utb24tdW5sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9zZW5kLWFmdGVyLWNsb3NlLW9uLXVu
bG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oaXhpZTc2L3NlbmQtYWZ0ZXItY2xvc2Utb24tdW5sb2FkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IGlmIFdlYiBT
b2NrZXQgb3BlbmVkIGluIGlmcmFtZSwgcmVmZXJyZWQgaW4gcGFyZW50IGRvY3VtZW50IGlzLCBh
bmQgdHJ5IHRvIHNlbmQoKSByZXR1cm5zIGZhbHNlLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDEpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGVkIiwgMSk7CiAKIHZhciBmcmFtZURpdjsKIHZhciBjbG9zZWRTb2NrZXQ7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NlbmQtZW1wdHkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
aXhpZTc2L3NlbmQtZW1wdHkuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9zZW5kLWVtcHR5Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJXZWJTb2NrZXQ6IENhbGxp
bmcgc2VuZCgpIHdpdGhvdXQgYXJndW1lbnRzIHNob3VsZCByYWlzZSBTeW50YXhFcnJvci4iKTsK
IAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOwogCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0
KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2VjaG8iKTsKIApJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9zZW5k
LW9iamVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hpeGllNzYvc2VuZC1vYmplY3QuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9zZW5kLW9iamVj
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiV2Vi
U29ja2V0OiBzZW5kKG9iamVjdCkgc2hvdWxkIGJlIGludGVycHJldGVkIGFzIHNlbmQob2JqZWN0
LnRvU3RyaW5nKCkpLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CiAKIGZ1bmN0
aW9uIGNyZWF0ZUVtcHR5QmxvYigpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oaXhpZTc2L3NlbmQtdGhyb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NlbmQtdGhyb3cuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaGl4aWU3Ni9zZW5kLXRocm93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEw
LDggQEAKIGRlc2NyaXB0aW9uKCJXZWIgU29ja2V0IHNlbmQgdGVzdCIpOwogCiB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3Nldl
YlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJv
dG9jb2xFbmFibGVkIiwgMSk7CiAKIGZ1bmN0aW9uIGVuZFRlc3QoKQogewpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9zZW5kLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9z
ZW5kLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2hpeGllNzYvc2VuZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsx
MCw4IEBACiBkZXNjcmlwdGlvbigiV2ViIFNvY2tldCBzZW5kIHRlc3QiKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDEpOwogCiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvc2VydmVyLWNsb3NlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aGl4aWU3Ni9zZXJ2ZXItY2xvc2UuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9zZXJ2ZXItY2xvc2UuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIldlYlNvY2tldDog
VGVzdCBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NlLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3Rv
Y29sRW5hYmxlZCIsIDEpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVk
IiwgMSk7CiAKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2hpeGllNzYvc2VydmVyLWNsb3NlIik7CiB2YXIgY2xvc2VFdmVudDsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvc2ltcGxl
LXN0cmVzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hpeGllNzYvc2ltcGxlLXN0cmVzcy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NpbXBsZS1z
dHJlc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSwxMCArNSwxMCBAQAogPHNjcmlwdD4KIHZh
ciBudW1TbWFsbE1lc3NhZ2VzID0gMTAwMDsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGVkIiwgMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDEpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTQ2LDggKzQ2LDggQEAgZnVu
Y3Rpb24gdGVzdExhcmdlU3RyaW5nKCkKICAgICAgICAgbG9nKG1zZy5kYXRhLmxlbmd0aCA9PSBz
dHIubGVuZ3RoID8gIlBBU1MiIDogIkZBSUwgLSB3cm9uZyByZXNwb25zZSBsZW5ndGgiKTsKICAg
ICAgICAgd3Muc2VuZCgiR29vZGJ5ZSIpOwogICAgICAgICB3cy5vbm1lc3NhZ2UgPSBudWxsOwot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgc2V0
VGltZW91dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpIiwgMCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHNldFRpbWVvdXQoInRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpIiwgMCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NpbXBsZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
c2ltcGxlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvc2ltcGxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEw
LDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJTaW1wbGUgV2ViIFNvY2tldCB0ZXN0Iik7CiAKIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIAogZnVuY3Rpb24gZW5kVGVzdCgpCiB7CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NwbGl0LWJp
bmFyeS1mcmFtZS1oZWFkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NwbGl0LWJpbmFyeS1mcmFtZS1oZWFkZXIuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaGl4aWU3Ni9zcGxpdC1iaW5hcnktZnJhbWUtaGVhZGVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJXZWJTb2NrZXQ6IEhpeGllNzYgYmlu
YXJ5IGZyYW1lcyBzaG91bGQgYmUgaGFuZGxlZCBjb3JyZWN0bHkgZXZlbiBpZiBmcmFtZSBoZWFk
ZXIgaXMgc3BsaXQgaW50byBtdWx0aXBsZSBUQ1AgcGFja2V0cy4iKTsKIAogd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3Rv
Y29sRW5hYmxlZCIsIDEpOwogCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9z
dDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3NwbGl0LWJpbmFyeS1mcmFtZS1oZWFkZXIi
KTsKIHZhciBlcnJvckNvdW50ID0gMDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2hpeGllNzYvc3ViLXByb3RvY29sLXdpdGgtc3BhY2UuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3N1
Yi1wcm90b2NvbC13aXRoLXNwYWNlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvc3ViLXByb3RvY29sLXdpdGgt
c3BhY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24o
IlRlc3QgV2ViU29ja2V0IGhhbmRzaGFrZSBzdWNjZXNzIHdpdGggc3ViIHByb3RvY29sIGNvbnRh
aW5zIHNwYWNlLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CiAKIHZhciBwcm90
b2NvbDsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4
aWU3Ni9zdWItcHJvdG9jb2wuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3N1Yi1wcm90b2NvbC5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2
L3N1Yi1wcm90b2NvbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNj
cmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgaGFuZHNoYWtlIHN1Y2Nlc3Mgd2l0aCBzdWIgcHJvdG9j
b2wuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIAogdmFyIHByb3RvY29sOwog
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3Vu
ZGVmaW5lZC1hdHRyaWJ1dGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91bmRlZmluZWQtYXR0cmlidXRlcy5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oaXhpZTc2L3VuZGVmaW5lZC1hdHRyaWJ1dGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTks
OCArOSw4IEBACiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBkZXNjcmlwdGlvbigi
VGVzdCBXZWJTb2NrZXQgYXR0cmlidXRlcyB3aGljaCBzaG91bGQgbm90IGJlIGRlZmluZWQgd2hl
biBoaXhpZS03NiBwcm90b2NvbCBpcyB1c2VkLiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CiAKIHZhciB3cyA9IG5ldyBXZWJTb2Nr
ZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvc2ltcGxlIik7
CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
dW5pY29kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hpeGllNzYvdW5pY29kZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VuaWNvZGUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIldlYiBTb2NrZXQg
dW5pY29kZSBtZXNzYWdlIHRlc3QiKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOwog
CiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2hpeGllNzYvdXJsLWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvdXJsLWF0dHJpYnV0
ZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oaXhpZTc2L3VybC1hdHRyaWJ1dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTAsOCArMTAsOCBAQAogCiBkZXNjcmlwdGlvbigiQm90aCAuVVJMIGFuZCAudXJsIGF0dHJpYnV0
ZXMgc2hvdWxkIHdvcmsgKGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMpLiIpOwogCi1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CiAKIHZhciB1
cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC8iOwogdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwp
OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91
cmwtbm8tdHJhaWxpbmctc2xhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC1uby10cmFpbGluZy1zbGFzaC5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oaXhpZTc2L3VybC1uby10cmFpbGluZy1zbGFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVVJMIHRoYXQgZG9lc24ndCBoYXZlIHRyYWls
aW5nIHNsYXNoIHNob3VsZCBub3QgZW1pdCBlbXB0eSBSZXF1ZXN0LVVSSS4iKTsKIAogd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tl
dFByb3RvY29sRW5hYmxlZCIsIDEpOwogCiB2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAi
OwogdmFyIGhhbmRzaGFrZV9zdWNjZXNzID0gZmFsc2U7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC1wYXJzaW5nLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwt
cGFyc2luZy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC1wYXJzaW5nLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTksOCArOSw4IEBACiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBkZXNjcmlw
dGlvbigiVGVzdCBXZWJTb2NrZXQgVVJMIHBhcnNpbmcuIik7CiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIAogLy8gTm90IGVub3VnaCBh
cmd1bWVudHMuCiBzaG91bGRUaHJvdygnbmV3IFdlYlNvY2tldCgpJyk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC13aXRoLWNyZWRlbnRp
YWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oaXhpZTc2L3VybC13aXRoLWNyZWRlbnRpYWwuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtd2l0
aC1jcmVkZW50aWFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2Ny
aXB0aW9uKCJNYWtlIHN1cmUgaGFuZHNoYWtlIHdpdGggVVJMIHdpdGggY3JlZGVudGFpbCBpbmZv
IHN1Y2Nlc3MuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIAogdmFyIHVybCA9
ICJ3czovL3VzZXI6cGFzc0AxMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni9l
Y2hvLWxvY2F0aW9uIjsKIHZhciBoYW5kc2hha2Vfc3VjY2VzcyA9IGZhbHNlOwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91cmwtd2l0aC1lbXB0
eS1xdWVyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hpeGllNzYvdXJsLXdpdGgtZW1wdHktcXVlcnkuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni91
cmwtd2l0aC1lbXB0eS1xdWVyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBA
CiBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIGhhbmRzaGFrZSB3aXRoIFVSTCB3aXRoIGVtcHR5IHF1
ZXJ5IGNvbXBvbmVudHMgc3VjY2Vzcy4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVu
YWJsZWQiLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEp
OwogCiB2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2hpeGll
NzYvZWNoby1sb2NhdGlvbj8iOwogdmFyIGhhbmRzaGFrZV9zdWNjZXNzID0gZmFsc2U7CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC13aXRo
LXF1ZXJ5LWZvci1uby1xdWVyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvdXJsLXdpdGgtcXVlcnktZm9yLW5vLXF1ZXJ5
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hpeGllNzYvdXJsLXdpdGgtcXVlcnktZm9yLW5vLXF1ZXJ5Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgaGFuZHNo
YWtlIHdpdGggVVJMIHdpdGggcXVlcnkgY29tcG9uZW50cyBmYWlscyBhZ2FpbnN0IHNlcnZlciB0
aGF0IGRvZXNuJ3Qgc3VwcG9ydCBxdWVyeSBjb21wb25lbnQuIik7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAxKTsKIAogdmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9oaXhpZTc2L25vLXF1ZXJ5PyI7CiB2YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxz
ZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
dXJsLXdpdGgtcXVlcnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3VybC13aXRoLXF1ZXJ5Lmh0bWwJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
dXJsLXdpdGgtcXVlcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVz
Y3JpcHRpb24oIk1ha2Ugc3VyZSBoYW5kc2hha2Ugd2l0aCBVUkwgd2l0aCBxdWVyeSBjb21wb25l
bnRzIHN1Y2Nlc3MuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIAogdmFyIHVy
bCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L2VjaG8tbG9j
YXRpb24/cT12IjsKIHZhciBoYW5kc2hha2Vfc3VjY2VzcyA9IGZhbHNlOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93ZWJzb2NrZXQtZXZlbnQt
dGFyZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaGl4aWU3Ni93ZWJzb2NrZXQtZXZlbnQtdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
d2Vic29ja2V0LWV2ZW50LXRhcmdldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBA
QAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogZGVzY3JpcHRpb24oIk1ha2Ugc3Vy
ZSBXZWJTb2NrZXQgb2JqZWN0IGFjdHMgYXMgRXZlbnRUYXJnZXQuIik7CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIAogdmFyIHdzID0g
bmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3
Ni9zaW1wbGUiKTsKIHdzLmNsb3NlKCk7IC8vIFRoYXQgaXMgbm90IGEgdGVzdCB3aXRoIGEgV2Vi
U29ja2V0IHNlcnZlciwgcHJldmVudCBsb2dnaW5nIGFuIGVycm9yIHRvIGNvbnNvbGUuCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dlYnNvY2tl
dC1wZW5kaW5nLWFjdGl2aXR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93ZWJzb2NrZXQtcGVuZGluZy1hY3Rpdml0eS5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oaXhpZTc2L3dlYnNvY2tldC1wZW5kaW5nLWFjdGl2aXR5Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KIDxwPlNob3Vs
ZCBhbGVydCAiUEFTUyIuPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5h
YmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5l
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKIH0KIAogZnVuY3Rpb24gZ2MoKQpAQCAtMjUsOCArMjUsOCBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICB9CiAgICAgd3Mub25tZXNzYWdlID0gZnVuY3Rpb24obXNnKSB7CiAgICAgICAg
IGFsZXJ0KG1zZy5kYXRhKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgfQogICAgIHdzID0gbnVsbDsKICAgICBnYygpOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93ZWJzb2NrZXQtcHJvdG9jb2wt
aWdub3JlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hpeGllNzYvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4
aWU3Ni93ZWJzb2NrZXQtcHJvdG9jb2wtaWdub3JlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgaGFuZHNoYWtlIHN1Y2Nl
c3Mgd2l0aG91dCBwcm90b2NvbCBhbmQgaWdub3JlIFdlYlNvY2tldC1Qcm90b2NvbCBmcm9tIHNl
cnZlci4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZl
cmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOwogCiB2YXIgcHJvdG9jb2w7
CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
d29ya2Vycy9jbG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtlcnMvY2xvc2Ut
aW4tb25tZXNzYWdlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvd29ya2Vycy9jbG9zZS1pbi1vbm1l
c3NhZ2UtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwxMCArOCwxMCBAQAogPHByZSBp
ZD1sb2c+CiA8L3ByZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MSk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjIsOCArMjIsOCBAQCBmdW5jdGlv
biBsb2cobWVzc2FnZSkKIGZ1bmN0aW9uIGVuZFRlc3QoKQogewogICAgIGxvZygiVEVTVCBDT01Q
TEVURSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogdmFyIHdvcmtlciA9IG5l
dyBXb3JrZXIoJ3Jlc291cmNlcy9jbG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2guanMnKTsKIHdvcmtl
ci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtlcnMvY2xvc2UtaW4tc2hhcmVkLXdvcmtl
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2hpeGllNzYvd29ya2Vycy9jbG9zZS1pbi1zaGFyZWQtd29ya2VyLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGll
NzYvd29ya2Vycy9jbG9zZS1pbi1zaGFyZWQtd29ya2VyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTgsMTAgKzgsMTAgQEAKIDxwcmUgaWQ9bG9nPgogPC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2Vi
U29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNv
Y2tldFByb3RvY29sRW5hYmxlZCIsIDEpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAg
LTIyLDggKzIyLDggQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiBmdW5jdGlvbiBlbmRUZXN0KCkK
IHsKICAgICBsb2coIlRFU1QgQ09NUExFVEUiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIH0KIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCdyZXNvdXJjZXMvY2xvc2UtaW4t
d29ya2VyLmpzJywgJ3dlYnNvY2tldENsb3NlSW5Xb3JrZXInKTsKIHdvcmtlci5wb3J0Lm9ubWVz
c2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2hpeGllNzYvd29ya2Vycy9jbG9zZS1pbi13b3JrZXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dv
cmtlcnMvY2xvc2UtaW4td29ya2VyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvd29ya2Vycy9jbG9zZS1pbi13
b3JrZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwxMCArOCwxMCBAQAogPHByZSBpZD1sb2c+
CiA8L3ByZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CiB9
CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjIsOCArMjIsOCBAQCBmdW5jdGlvbiBsb2co
bWVzc2FnZSkKIGZ1bmN0aW9uIGVuZFRlc3QoKQogewogICAgIGxvZygiVEVTVCBDT01QTEVURSIp
OwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogdmFyIHdvcmtlciA9IG5ldyBXb3Jr
ZXIoJ3Jlc291cmNlcy9jbG9zZS1pbi13b3JrZXIuanMnKTsKIHdvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbiAoZXZ0KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oaXhpZTc2L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93b3JrZXJzL3NoYXJlZC13
b3JrZXItc2ltcGxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsMTAgKzgsMTAgQEAKIDxwcmUg
aWQ9bG9nPgogPC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVk
IiwgMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIs
IDEpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTIyLDggKzIyLDggQEAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsKICAgICBsb2coIlRFU1QgQ09N
UExFVEUiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIHZhciB3b3JrZXIgPSBu
ZXcgU2hhcmVkV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLXNpbXBsZS5qcycsICd3ZWJzb2NrZXRT
aW1wbGUnKTsKIHdvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvd29ya2Vycy93
b3JrZXItaGFuZHNoYWtlLWNoYWxsZW5nZS1yYW5kb21uZXNzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93b3JrZXJzL3dv
cmtlci1oYW5kc2hha2UtY2hhbGxlbmdlLXJhbmRvbW5lc3MuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93b3Jr
ZXJzL3dvcmtlci1oYW5kc2hha2UtY2hhbGxlbmdlLXJhbmRvbW5lc3MuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOCwxMCArOCwxMCBAQAogPHByZSBpZD1sb2c+CiA8L3ByZT4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMSk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQpAQCAtMjIsOCArMjIsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIGZ1bmN0aW9uIGVu
ZFRlc3QoKQogewogICAgIGxvZygiVEVTVCBDT01QTEVURSIpOwotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfQogdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3Jlc291cmNlcy93b3JrZXIt
aGFuZHNoYWtlLWNoYWxsZW5nZS1yYW5kb21uZXNzLmpzJyk7CiB3b3JrZXIub25tZXNzYWdlID0g
ZnVuY3Rpb24gKGV2dCkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaGl4aWU3Ni93b3JrZXJzL3dvcmtlci1zaW1wbGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtlcnMvd29y
a2VyLXNpbXBsZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtlcnMvd29ya2VyLXNpbXBsZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC04LDEwICs4LDEwIEBACiA8cHJlIGlkPWxvZz4KIDwvcHJlPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDEpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAxKTsKIH0KIAogZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCkBAIC0yMiw4ICsyMiw4IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogZnVu
Y3Rpb24gZW5kVGVzdCgpCiB7CiAgICAgbG9nKCJURVNUIENPTVBMRVRFIik7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9CiB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3VyY2Vz
L3dvcmtlci1zaW1wbGUuanMnKTsKIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2FsZXJ0
LWluLWV2ZW50LWhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2FsZXJ0LWluLWV2ZW50LWhhbmRsZXIuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9hbGVydC1pbi1ldmVudC1oYW5kbGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDgg
KzEwLDggQEAKIGRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgZXZlbnQgaGFuZGxlciBjYWxsZWQgc2Vy
aWFsbHkuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHdzID0gbmV3
IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5k
MiIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2JhZC1oYW5kc2hha2UtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2JhZC1oYW5kc2hha2UtY3Jhc2guaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9iYWQtaGFuZHNoYWtlLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEw
LDggQEAKIGRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgV2ViU29ja2V0IGRvZXNuJ3QgY3Jhc2ggd2l0
aCBiYWQgaGFuZHNoYWtlIG1lc3NhZ2UuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xF
bmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAw
KTsKIAogdmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9iYWQtaGFuZHNoYWtlLWNyYXNoIik7CiB3cy5vbm9wZW4gPSBmdW5jdGlv
biAoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2JhZC1zdWItcHJvdG9jb2wtY29udHJvbC1jaGFycy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYmFkLXN1Yi1wcm90b2NvbC1j
b250cm9sLWNoYXJzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYmFkLXN1Yi1wcm90b2NvbC1jb250cm9sLWNoYXJz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CiBkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgYmFkIHN1Yi1wcm90b2Nv
bCBuYW1lcyBieSBjb250cm9sIGNoYXJhY3RlcnMuIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogLy8gRmFpbHMgaWYgcHJvdG9j
b2wgY29udGFpbnMgYW4gY2hhcmFjdGVyIGxlc3MgdGhhbiBVKzAwMjAuCiBzaG91bGRUaHJvdygn
bmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC9zaW1wbGUiLCAiXHUwMDAwIiknKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYmFkLXN1
Yi1wcm90b2NvbC1lbXB0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYmFkLXN1Yi1wcm90b2NvbC1lbXB0eS5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2JhZC1zdWItcHJvdG9jb2wtZW1wdHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5
LDggQEAKIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIGRlc2NyaXB0aW9uKCJUZXN0
IFdlYlNvY2tldCBiYWQgc3ViLXByb3RvY29sIG5hbWVzIChlbXB0eSkuIik7CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogLy8gRmFp
bHMgaWYgcHJvdG9jb2wgaXMgYW4gZW1wdHkgc3RyaW5nLgogc2hvdWxkVGhyb3coJ25ldyBXZWJT
b2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvc2ltcGxlIiwgIiIpJyk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2JhZC1zdWItcHJvdG9jb2wtbm9u
LWFzY2lpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9iYWQtc3ViLXByb3RvY29sLW5vbi1hc2NpaS5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Jh
ZC1zdWItcHJvdG9jb2wtbm9uLWFzY2lpLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4
IEBACiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBkZXNjcmlwdGlvbigiVGVzdCBX
ZWJTb2NrZXQgYmFkIHN1Yi1wcm90b2NvbCBuYW1lcyBieSBub24tQVNDSUkgY2hhcnMuIik7CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsK
IAogLy8gRmFpbHMgaWYgcHJvdG9jb2wgY29udGFpbnMgYW4gY2hhcmFjdGVyIGdyZWF0ZXIgdGhh
biBVKzAwN0UuCiBzaG91bGRUaHJvdygnbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4
MC9zaW1wbGUiLCAiXHUwMDdGIiknKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvYmluYXJ5LXR5cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2JpbmFyeS10eXBlLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvYmluYXJ5LXR5cGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAKIDxz
Y3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQuYmluYXJ5VHlwZSBhdHRyaWJ1dGUu
Iik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9j
b2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKIAogdmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJz
b2NrZXQvdGVzdHMvaHliaS9zaW1wbGUiKTsKIHNob3VsZEJlRXF1YWxUb1N0cmluZygid3MuYmlu
YXJ5VHlwZSIsICJibG9iIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Jyb2tlbi11dGY4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9icm9rZW4tdXRmOC5odG1sCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2Jyb2tlbi11dGY4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2Ny
aXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3aGVu
IGl0IHJlY2VpdmVzIGEgdGV4dCBmcmFtZSBjb250YWluaW5nIGJyb2tlbiBVVEYtOCBkYXRhLiIp
OwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciB3cyA9IG5ldyBXZWJTb2Nr
ZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnJva2VuLXV0Zjgi
KTsKIHZhciBjbG9zZUV2ZW50OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9i
dWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRB
bW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsx
MCw4IEBACiBkZXNjcmlwdGlvbigiV2ViIFNvY2tldCBidWZmZXJlZEFtb3VudCBhZnRlciBjbG9z
ZWQgaW4gYnVzeSIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIGZ1bmN0aW9u
IGNyZWF0ZVN0cmluZ1dpdGhMZW5ndGgobGVuZ3RoKQogewpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFt
b3VudC1hZnRlci1jbG9zZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBk
ZXNjcmlwdGlvbigiV2ViIFNvY2tldCBidWZmZXJlZEFtb3VudCBhZnRlciBjbG9zZWQiKTsKIAog
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3Nldl
YlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiBmdW5jdGlvbiBjcmVhdGVTdHJpbmdXaXRo
TGVuZ3RoKGxlbmd0aCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbGllbnQtY2xvc2UuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9jbGllbnQtY2xvc2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVz
Y3JpcHRpb24oIldlYlNvY2tldDogVGVzdCBjbGllbnQtaW5pdGlhdGVkIGNsb3NlLiIpOwogCiB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2Vi
U29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndz
Oi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xpZW50LWNsb3NlIik7CiB2
YXIgY2xvc2VFdmVudDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY2xvc2UtYmVmb3JlLW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWJlZm9yZS1vcGVuLmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY2xvc2UtYmVmb3JlLW9wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCAr
MTAsOCBAQAogZGVzY3JpcHRpb24oIlRlc3QgaWYgV2ViIFNvY2tldCBmaXJlcyBjbG9zZSBldmVu
dCB3aGVuIFdlYlNvY2tldCBpcyBvcGVuZWQgYW5kIGNsb3NlZCBmb3JlIG9wZW4gZXZlbnQgaXMg
cmVjZWl2ZWQuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHVybHMg
PSBbCiAgICAgIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNobyIs
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3Nl
LWNvZGUtYW5kLXJlYXNvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY2xvc2UtY29kZS1hbmQtcmVhc29uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEw
LDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IENsb3NlRXZlbnQgY29kZSBhbmQgcmVhc29uIHByb3Bl
cnR5LiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciBjbG9zZUV2ZW50
OwogdmFyIGNvZGVOb3JtYWxDbG9zdXJlID0gMTAwMDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXZlbnQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWV2ZW50
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCAr
MTAsOCBAQAogZGVzY3JpcHRpb24oIk1ha2Ugc3VyZSBXZWJTb2NrZXQgZmlyZXMgQ2xvc2VFdmVu
dCB3aGVuIGNsb3NlZC4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAw
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIg
d3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NpbXBsZSIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2Nsb3NlLW9uLW5hdmlnYXRlLW5ldy1sb2NhdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Utb24t
bmF2aWdhdGUtbmV3LWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Utb24tbmF2aWdhdGUtbmV3
LWxvY2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0
aW9uKCJUZXN0IGlmIFdlYiBTb2NrZXQgaXMgY2xvc2VkIHdoZW4gbmF2aWdhdGluZyB0byBuZXcg
bG9jYXRpb24uIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIGZyYW1l
RGl2OwogdmFyIGNsb3NlZFNvY2tldDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Utb24tdW5sb2FkLWFuZC1mb3JjZS1nYy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xv
c2Utb24tdW5sb2FkLWFuZC1mb3JjZS1nYy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLW9uLXVubG9hZC1h
bmQtZm9yY2UtZ2MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3Jp
cHRpb24oIlRlc3QgaWYgV2ViIFNvY2tldCBpcyBjbG9zZWQgb24gdW5sb2FkIGFuZCBub3QgY3Jh
c2hlZCBpZiBnYXJiYWdlIGNvbGxlY3RlZCIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MCk7CiAKIHZhciBmcmFtZURpdjsKIHZhciBjbG9zZWRTb2NrZXQ7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLW9uLXVubG9hZC1yZWZlcmVu
Y2UtaW4tcGFyZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1vbi11bmxvYWQtcmVmZXJlbmNlLWluLXBhcmVudC5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Nsb3NlLW9uLXVubG9hZC1yZWZlcmVuY2UtaW4tcGFyZW50Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IGlmIFdlYiBT
b2NrZXQgb3BlbmVkIGluIGlmcmFtZSBidXQgcmVmZXJyZWQgaW4gcGFyZW50IGRvY3VtZW50IGlz
IGNsb3NlZCBvbiB1bmxvYWRpbmcgdGhlIGZyYW1lLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGVkIiwgMCk7CiAKIHZhciBmcmFtZURpdjsKIHZhciBjbG9zZWRTb2NrZXQ7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLW9uLXVubG9hZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvY2xvc2Utb24tdW5sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Utb24tdW5sb2FkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IGlmIFdl
YiBTb2NrZXQgaXMgY2xvc2VkIG9uIHVubG9hZCIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3Rv
Y29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVk
IiwgMCk7CiAKIHZhciBmcmFtZURpdjsKIHZhciBjbG9zZWRTb2NrZXQ7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLXVucmVmLXdlYnNvY2tl
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY2xvc2UtdW5yZWYtd2Vic29ja2V0Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtdW5yZWYt
d2Vic29ja2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0
aW9uKCJUZXN0IGlmIFdlYiBTb2NrZXQgaXMgY2xvc2VkIHdoaWxlIGhhbmRzaGFraW5nIGFuZCB1
bnJlZmVyZW5jZWQsIGl0IHNob3VsZCBmaXJlIGNsb3NlIGV2ZW50IGF0IG1vc3Qgb25jZS4iKTsK
IAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgY291bnRDbG9zZUV2ZW50ID0g
MDsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
bG9zZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xvc2UuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVmVyaWZ5IFdlYlNvY2tldDo6Y2xvc2Ug
YmVoYXZpb3JzLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciBleGNl
cHRpb25OYW1lOwogdmFyIGV4Y2VwdGlvblByb3RvOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNvbnRyb2wtZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2NvbXByZXNzZWQtY29udHJvbC1mcmFtZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NvbXByZXNzZWQtY29udHJv
bC1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlv
bigiVGVzdCB3aGV0aGVyIGEgY29tcHJlc3NlZCBjb250cm9sIGZyYW1lIGlzIHJlamVjdGVkIik7
CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHdzID0gbmV3IFdlYlNvY2tl
dCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jb21wcmVzc2VkLWNv
bnRyb2wtZnJhbWUiKTsKIHZhciBjbG9zZUV2ZW50OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jcm9zcy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nyb3NzLW9yaWdp
bi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nyb3NzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4
ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiV2ViIFNvY2tldCBDcm9zcyBPcmlnaW4gdGVzdCIpOwog
CiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2
V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciBvcmlnaW47CiAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1j
b21wLWJpdC1vbm9mZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1jb21wLWJpdC1vbm9mZi5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtY29tcC1iaXQtb25vZmYuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIlRlc3QgY29tcHJlc3Npb24gZW5hYmxlZC9k
aXNhYmxlZCBmcmFtZSByZWNlaXZpbmcuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xF
bmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAw
KTsKIAogdmFyIGNsb3NlRXZlbnQ7CiB2YXIgd3M7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2RlZmxhdGUtZnJhbWUtaW52YWxpZC1wYXJhbWV0ZXIuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9kZWZs
YXRlLWZyYW1lLWludmFsaWQtcGFyYW1ldGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDgg
KzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgaW52
YWxpZCBkZWZsYXRlLWZyYW1lIHBhcmFtZXRlcnMuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJv
dG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKIAogdmFyIGNsb3NlRXZlbnQ7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0ZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Rl
ZmxhdGUtZnJhbWUtcGFyYW1ldGVyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZGVmbGF0ZS1mcmFtZS1wYXJhbWV0
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIlRl
c3QgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLiIpOwogCiB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNv
Y2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9j
b2xFbmFibGVkIiwgMCk7CiAKIHZhciBjbG9zZUV2ZW50OwogdmFyIHdzOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLXdpdGgtbm8tZXh0ZW5z
aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9lY2hvLXdpdGgtbm8tZXh0ZW5zaW9uLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNoby13aXRo
LW5vLWV4dGVuc2lvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNj
cmlwdGlvbigiVGVzdCBXZWJTb2NrZXQuZXh0ZW5zaW9ucyBhdHRyaWJ1dGUgd2l0aCBubyBleHRl
bnNpb24gc3VwcG9ydCBpbiBzZXJ2ZXIgc2lkZS4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDApOwogCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2VjaG8td2l0aC1uby1leHRlbnNpb24iKTsKIGRlYnVnKCJDaGVj
ayB0aGUgdmFsdWUgYmVmb3JlIG9wZW5pbmcgdGhlIGNvbm5lY3Rpb246Iik7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2V4dGVuc2lvbnMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2V4dGVuc2lvbnMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9leHRlbnNpb25zLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IFdlYlNvY2tldC5leHRlbnNpb25z
IGF0dHJpYnV0ZS4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NpbXBsZSIpOwogZGVidWcoIkNoZWNrIHRoZSB2YWx1ZSBiZWZvcmUgb3BlbmluZyB0aGUgY29u
bmVjdGlvbjoiKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZnJhZ21lbnRlZC1iaW5hcnktZnJhbWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWJpbmFyeS1m
cmFtZXMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWJpbmFyeS1mcmFtZXMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIldlYlNvY2tldDogUmVjZWl2
ZSBmcmFnbWVudGVkIGJpbmFyeSBtZXNzYWdlcy4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDApOwogCiBmdW5jdGlvbiBjcmVhdGVIZWxsb1dvcmxkVmFsdWUoKQogewpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWNvbnRy
b2wtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZS5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Zy
YWdtZW50ZWQtY29udHJvbC1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4
IEBACiBkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWplY3RzIGEgZnJhZ21l
bnRlZCBjb250cm9sIGZyYW1lIGFuZCBhYm9ydHMgdGhlIGNvbm5lY3Rpb24uIik7CiAKIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgw
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtY29udHJvbC1mcmFtZSI7CiB2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KHVybCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFnbWVudGVkLWZyYW1l
cy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2ZyYWdtZW50ZWQtZnJhbWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJSZWNlaXZlIGZyYWdtZW50ZWQgV2ViU29ja2V0
IGZyYW1lcy4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgdXJsID0g
IndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhZ21lbnRlZC1mcmFt
ZXMiOwogdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFtZS1sZW5ndGhzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9mcmFtZS1s
ZW5ndGhzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvZnJhbWUtbGVuZ3Rocy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC01LDEwICs1LDEwIEBACiA8c2NyaXB0PgogdmFyIG1heExlbmd0aCA9IDEwMjU7CiAKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
CkBAIC0zNiw4ICszNiw4IEBAIHdzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKG1zZykgewogICAgICAg
ICAgICAgbG9nKCJQQVNTIik7CiAgICAgICAgIHdzLnNlbmQoIkdvb2RieWUiKTsKICAgICAgICAg
d3Mub25tZXNzYWdlID0gbnVsbDsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIHNldFRpbWVvdXQoImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKSIsIDApOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KCJ0ZXN0UnVubmVyLm5vdGlmeURvbmUoKSIsIDApOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGxhc3RTdHJpbmcgKz0gIioiOwogICAgICAgICB3cy5zZW5kKGxhc3RTdHJpbmcp
OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5k
c2hha2UtY2hhbGxlbmdlLXJhbmRvbW5lc3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1jaGFsbGVuZ2UtcmFu
ZG9tbmVzcy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1jaGFsbGVuZ2UtcmFuZG9tbmVzcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbignSGFuZHNoYWtl
IHJlcXVlc3Qgc2hvdWxkIGNvbnRhaW4gcmFuZG9tIGNoYWxsZW5nZSB2YWx1ZXMuJyk7CiAKIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIGNoYWxsZW5nZTE7CiB2YXIgY2hhbGxl
bmdlMjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
aGFuZHNoYWtlLWVycm9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZXJyb3IuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5k
c2hha2UtZXJyb3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3Jp
cHRpb24oIkhhbmRzaGFrZSBlcnJvciB0ZXN0Iik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9j
b2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKIAogZnVuY3Rpb24gZW5kVGVzdCgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVh
ZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1leHRlbnNpb25zLWhlYWRlci5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2hhbmRzaGFrZS1mYWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0
IGhhbmRzaGFrZSBmYWlscyBpZiB0aGUgc2VydmVyIHNlbmRzIFNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyBoZWFkZXIuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHVy
bCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1m
YWlsLWJ5LWV4dGVuc2lvbnMtaGVhZGVyIjsKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNo
YWtlLWZhaWwtYnktbWF4bGVuZ3RoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1tYXhsZW5ndGgu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1tYXhsZW5ndGguaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oJ0Nvbm5lY3Rpb24gc2hvdWxkIGZh
aWwgaW1tZWRpYXRlbHksIHJhdGhlciB0aGFuIHN1Y2NlZWRpbmcgb3Igc3RheWluZyBpbiBsaW1i
byB1bnRpbCB0aW1lb3V0LCBpZiBoYW5kc2hha2UgaXMgbG9uZ2VyIHRoYW4gMTAyNCBieXRlcy4n
KTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4
aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgdGltZWRPdXQgPSBmYWxz
ZTsKIHZhciBjb25uZWN0ZWQgPSBmYWxzZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wt
aGVhZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXIu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXIu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIlRlc3Qg
d2hldGhlciBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgbWlz
bWF0Y2hlZCBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlci4iKTsKIAogd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3Rv
Y29sRW5hYmxlZCIsIDApOwogCiB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVy
IjsKIHZhciBjbG9zZUV2ZW50OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1tb3JlLWFjY2VwdC1oZWFkZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2hhbmRzaGFrZS1mYWlsLWJ5LW1vcmUtYWNjZXB0LWhlYWRlci5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRz
aGFrZS1mYWlsLWJ5LW1vcmUtYWNjZXB0LWhlYWRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IFdlYlNvY2tldCBoYW5kc2hha2Ug
ZmFpbHMgaWYgdGhlcmUgYXJlIG1vcmUgb25lIFNlYy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlciBm
aWVsZCBpbiB0aGUgcmVzcG9uc2UuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFi
bGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsK
IAogZnVuY3Rpb24gZW5kVGVzdCgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1vcmUtcHJvdG9jb2wtaGVhZGVy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1tb3JlLXByb3RvY29sLWhlYWRlci5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1vcmUtcHJvdG9jb2wtaGVhZGVyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgV2ViU29ja2V0
IGhhbmRzaGFrZSBmYWlscyBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBTZWMtV2ViU29ja2V0
LVByb3RvY29sIGhlYWRlciBmaWVsZCBpbiB0aGUgcmVzcG9uc2UuIik7CiAKIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2Vi
U29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKIAogZnVuY3Rpb24gZW5kVGVzdCgpCiB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW5v
LWFjY2VwdC1oZWFkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWFjY2VwdC1oZWFkZXIu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1uby1hY2NlcHQtaGVhZGVyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIg
V2ViU29ja2V0IGhhbmRzaGFrZSBmYWlscyBpZiB0aGUgc2VydmVyIGRvZXMgbm90IHNlbmQgU2Vj
LVdlYlNvY2tldC1BY2NlcHQgaGVhZGVyLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MCk7CiAKIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9oYW5kc2hha2UtZmFpbC1ieS1uby1hY2NlcHQtaGVhZGVyIjsKIHZhciB3cyA9IG5ldyBXZWJT
b2NrZXQodXJsKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbm8tY29ubmVjdGlvbi1oZWFkZXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRz
aGFrZS1mYWlsLWJ5LW5vLWNvbm5lY3Rpb24taGVhZGVyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtl
LWZhaWwtYnktbm8tY29ubmVjdGlvbi1oZWFkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAs
OCArMTAsOCBAQAogZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBXZWJTb2NrZXQgaGFuZHNoYWtlIGZh
aWxzIGlmIENvbm5lY3Rpb24gaGVhZGVyIGZpZWxkIGlzbid0IHJlZmxlY3RlZCBieSB0aGUgc2Vy
dmVyLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIGZ1bmN0aW9uIGVuZFRl
c3QoKQogewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3Iu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbignSGFuZHNoYWtlIHNob3VsZCBmYWlsIHdo
ZW4gdGhlIGZpcnN0IGxpbmUgZG9lcyBub3QgZW5kIHdpdGggQ1JMRi4nKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgY29ubmVjdGVkID0gZmFsc2U7CiB2YXIgb3JpZ2lu
OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5k
c2hha2UtZmFpbC1ieS1uby11cGdyYWRlLWhlYWRlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnkt
bm8tdXBncmFkZS1oZWFkZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1uby11cGdy
YWRlLWhlYWRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlw
dGlvbigiVGVzdCB0aGF0IFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMgaWYgVXBncmFkZSBoZWFk
ZXIgZmllbGQgaXNuJ3QgcmVmbGVjdGVkIGJ5IHRoZSBzZXJ2ZXIuIik7CiAKIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2Vi
U29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKIAogZnVuY3Rpb24gZW5kVGVzdCgpCiB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LXBy
ZXBlbmRlZC1udWxsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1wcmVwZW5kZWQtbnVsbC5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LXByZXBlbmRlZC1udWxsLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCdDb25uZWN0aW9uIHNob3VsZCBm
YWlsIGltbWVkaWF0ZWx5LCByYXRoZXIgdGhhbiBzdWNjZWVkaW5nIG9yIHN0YXlpbmcgaW4gbGlt
Ym8gdW50aWwgdGltZW91dCwgaWYgYSBudWxsIGJ5dGUgaXMgcmVjZWl2ZWQgYmVmb3JlIHRoZSBo
YW5kc2hha2UuJyk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHRpbWVk
T3V0ID0gZmFsc2U7CiB2YXIgY29ubmVjdGVkID0gZmFsc2U7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LXdyb25nLWFj
Y2VwdC1oZWFkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LXdyb25nLWFjY2VwdC1oZWFkZXIu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS13cm9uZy1hY2NlcHQtaGVhZGVyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0IHdoZXRo
ZXIgV2ViU29ja2V0IGhhbmRzaGFrZSBmYWlscyBpZiB0aGUgc2VydmVyIHNlbmRzIGluY29ycmVj
dCBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXIuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJv
dG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKIAogdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LXdyb25nLWFjY2VwdC1oZWFkZXIiOwogdmFyIHdzID0g
bmV3IFdlYlNvY2tldCh1cmwpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9odHRwb25seS1jb29raWUucGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9odHRwb25seS1jb29raWUucGwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaHR0cG9ubHktY29va2llLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBA
IHByaW50IDw8SFRNTAogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tl
dFByb3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgY29va2llOwogCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdtZW50cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaW50ZXJsZWF2ZWQtZnJhZ21lbnRzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW50ZXJsZWF2ZWQtZnJh
Z21lbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9u
KCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IHJlamVjdHMgaW50ZXJsZWF2ZWQgZnJhZ21lbnRlZCBm
cmFtZXMuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHVybCA9ICJ3
czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludGVybGVhdmVkLWZyYWdt
ZW50cyI7CiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludmFsaWQtY29udGludWF0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9pbnZhbGlkLWNvbnRpbnVhdGlvbi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludmFsaWQtY29udGludWF0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJUZXN0
IHdoZXRoZXIgV2ViU29ja2V0IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3aGVuIGl0IHJlY2VpdmVz
IGFuIHVuZXhwZWN0ZWQgY29udGludWF0aW9uIGZyYW1lIHdpdGhvdXQgYW55IGxlYWRpbmcgdGV4
dCBvciBiaW5hcnkgZnJhbWUuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVk
IiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAog
dmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVz
dHMvaHliaS9pbnZhbGlkLWNvbnRpbnVhdGlvbiIpOwogdmFyIGNsb3NlRXZlbnQ7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2ludmFsaWQtZW5jb2Rl
LWxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaW52YWxpZC1lbmNvZGUtbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW52YWxp
ZC1lbmNvZGUtbGVuZ3RoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRl
c2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3
aGVuIGl0IHJlY2VpdmVzIGFuIHVuZXhwZWN0ZWQgZW5jb2RpbmcgbGVuZ3RoIGZyYW1lLiIpOwog
CiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2
V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciBjbG9zZUV2ZW50OwogdmFyIHBh
eWxvYWRfZXh0ZW5kZWQgPSBbIjEyNl8xMjUiLCAiMTI2XzAiLCAiMTI3XzY1NTM1IiwgIjEyN18w
Il07CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2lu
dmFsaWQtbWFza2VkLWZyYW1lcy1mcm9tLXNlcnZlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW52YWxpZC1tYXNrZWQtZnJh
bWVzLWZyb20tc2VydmVyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW52YWxpZC1tYXNrZWQtZnJhbWVzLWZyb20t
c2VydmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9u
KCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGFib3J0cyB0aGUgY29ubmVjdGlvbiB3aGVuIGl0IHJl
Y2VpdmVzIGFuIG1hc2tlZCBmcmFtZXMgZnJvbSBzZXJ2ZXIuIik7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAwKTsKIAogdmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2ludmFsaWQtbWFza2VkLWZyYW1lcy1mcm9tLXNlcnZlciI7CiB2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KHVybCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2ludmFsaWQtc3VicHJvdG9jb2wtY2hhcmFjdGVycy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW52
YWxpZC1zdWJwcm90b2NvbC1jaGFyYWN0ZXJzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW52YWxpZC1zdWJwcm90
b2NvbC1jaGFyYWN0ZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRl
c2NyaXB0aW9uKCJXZWJTb2NrZXQgc2hvdWxkIGZhaWwgaWYgc3VicHJvdG9jb2wgY29udGFpbnMg
YSBmb3JiaWRkZW4gY2hhcmFjdGVyLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5h
YmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CiAKIGZ1bmN0aW9uIGVzY2FwZVVuaWNvZGVDaGFyYWN0ZXIoY29kZVBvaW50KQogewpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnZhbGlkLXN1YnBy
b3RvY29scy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaW52YWxpZC1zdWJwcm90b2NvbHMuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnZhbGlk
LXN1YnByb3RvY29scy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogZGVzY3JpcHRpb24oIldlYlNvY2tldCBzaG91bGQg
ZmFpbCBpZiBpbnZhbGlkIHN1YnByb3RvY29scyBhcmUgc3BlY2lmaWVkIik7CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHVy
bCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9zaW1wbGUiOwogc2hvdWxk
VGhyb3coIm5ldyBXZWJTb2NrZXQodXJsLCAnYSBiJykiLCAiJ0Vycm9yOiBTWU5UQVhfRVJSOiBE
T00gRXhjZXB0aW9uIDEyJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9sb25nLWNvbnRyb2wtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFt
ZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2xvbmctY29udHJvbC1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCByZWpl
Y3RzIGNvbnRyb2wgZnJhbWVzIGxvbmdlciB0aGFuIDEyNSBieXRlcy4iKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1jb250cm9sLWZyYW1lIjsKIHZhciB3cyA9IG5ldyBXZWJT
b2NrZXQodXJsKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvbG9uZy1pbnZhbGlkLWhlYWRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbG9uZy1pbnZhbGlkLWhlYWRlci5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2xvbmctaW52YWxpZC1oZWFkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAs
OCArMTAsOCBAQAogZGVzY3JpcHRpb24oIk1ha2Ugc3VyZSBXZWJTb2NrZXQgZ2l2ZXMgZXJyb3Jz
IG9uIGxvbmcgaW52YWxpZCB1cGdyYWRlIGhlYWRlci4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQ
cm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5h
YmxlZCIsIDApOwogCiBmdW5jdGlvbiBmaW5pc2goKSB7CiAgICAgY2xlYXJUaW1lb3V0KHRpbWVv
dXRJRCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L211bHRpcGxlLWNvbm5lY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9tdWx0aXBsZS1jb25uZWN0aW9ucy5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL211bHRpcGxlLWNvbm5lY3Rpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzEsMTAgQEAKIDxwPlRlc3QgdGhhdCBXZWJTb2NrZXQgaXMgbm90IHN1YmplY3QgdG8gSFRUUCBj
b25uZWN0aW9uIGxpbWl0LiBTaG91bGQgc2F5IFBBU1M6PC9wPgogPHAgaWQ9cmVzdWx0PlJ1bm5p
bmcuLi48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwog
fQogCiB2YXIgc29ja2V0Q291bnQgPSA1MDsKQEAgLTI2LDggKzI2LDggQEAgZm9yIChpID0gMDsg
aSA8IHNvY2tldENvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICBzb2NrZXRzW2pdLm9uY2xv
c2UgPSBudWxsOwogICAgICAgICAgICAgICAgIHNvY2tldHNbal0uY2xvc2UoKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQogICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbigp
IHsgYWxlcnQoIkZBSUw6IHVuZXhwZWN0ZWQgY2xvc2UgZXZlbnQiKSB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL211bHRpcGxlLXN1YnByb3RvY29s
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvbXVsdGlwbGUtc3VicHJvdG9jb2xzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbXVsdGlwbGUtc3Vi
cHJvdG9jb2xzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0
aW9uKCJUZXN0IFdlYlNvY2tldCBzdWJwcm90b2NvbCBuZWdvdGlhdGlvbi4iKTsKIAogd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tl
dFByb3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEy
Ny4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Byb3RvY29sLXRlc3Q/cHJvdG9jb2w9
c3VwZXJjaGF0IiwgWyJjaGF0IiwgInN1cGVyY2hhdCJdKTsKIHZhciBjbG9zZUV2ZW50OwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9uby1zdWJwcm90
b2NvbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvbm8tc3VicHJvdG9jb2wuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9uby1zdWJwcm90b2NvbC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiV2ViU29j
a2V0J3MgcHJvdG9jb2wgYXR0cmlidXRlIHNob3VsZCBiZSBhbiBlbXB0eSBzdHJpbmcgaWYgdGhl
IHNlcnZlciBkaWQgbm90IHByb3ZpZGUgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIuIik7
CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHdzID0gbmV3IFdlYlNvY2tl
dCgid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9zaW1wbGUiKTsKIHZh
ciBjbG9zZUV2ZW50OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9udWxsLWNoYXJhY3Rlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvbnVsbC1jaGFyYWN0ZXIuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9udWxsLWNoYXJhY3Rlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBk
ZXNjcmlwdGlvbigiTWFrZSBzdXJlIFdlYlNvY2tldCB0cmFuc2ZlciBudWxsIGNoYXJhY3RlciIp
OwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciB3cyA9IG5ldyBXZWJTb2Nr
ZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvZWNobyIpOwogLy8g
XHhmZiBpbiBzdHJpbmcgd291bGQgYmUgXHhjM1x4YmYgb24gd2Vic29ja2V0IGNvbm5lY3Rpb24g
KFVURi04KQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9wb25nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9wb25nLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcG9uZy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdlYlNvY2tldCBj
b3JyZWN0bHkgcmVzcG9uZHMgdG8gYSBwaW5nIG1lc3NhZ2Ugc2VudCBmcm9tIHRoZSBzZXJ2ZXIu
Iik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIHVybCA9ICJ3czovL2xv
Y2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3BvbmciOwogdmFyIHdzID0gbmV3IFdl
YlNvY2tldCh1cmwpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9yZWNlaXZlLWFycmF5YnVmZmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWFycmF5YnVmZmVyLmh0
bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvcmVjZWl2ZS1hcnJheWJ1ZmZlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiV2ViU29ja2V0OiBSZWNlaXZlIEFycmF5QnVmZmVy
cy4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiBmdW5jdGlvbiBjcmVhdGVB
cnJheUJ1ZmZlckNvbnRhaW5pbmdIZWxsb1dvcmxkKCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVjZWl2ZS1ibG9iLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNlaXZl
LWJsb2IuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWNlaXZlLWJsb2IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIldlYlNvY2tldDogUmVjZWl2ZSBCbG9icy4iKTsK
IAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiBmdW5jdGlvbiBjcmVhdGVBcnJheUJ1
ZmZlckNvbnRhaW5pbmdIZWxsb1dvcmxkKCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVsb2FkLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZWxvYWQtY3Jhc2gu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9yZWxvYWQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCAr
MTAsOCBAQAogZGVzY3JpcHRpb24oIlRlc3QgaWYgaXQgZG9lc24ndCBjcmFzaCB3aGVuIHJlbG9h
ZGluZyB3aGlsZSBXZWIgU29ja2V0IGlzIGJ1c3kiKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDApOwogCiB2YXIgZnJhbWVEaXY7CiB2YXIgcmVsb2FkQ291bnQgPSAwOwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1iaXRzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVGVzdCB3aGV0aGVyIFdl
YlNvY2tldCByZWplY3RzIGZyYW1lcyB3aG9zZSByZXNlcnZlZCBiaXQgaXMgb24uIik7CiAKIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogLy8gImNvbXByZXNzZWQ9dHJ1ZSZiaXROdW1i
ZXI9MSIgbXVzdCBub3QgYmUgaW5jbHVkZWQgaW4gY29tcHJlc3NlZEFuZEJpdE51bWJlclBhcmFt
ZXRlcnMgYXJyYXkuCiB2YXIgY29tcHJlc3NlZEFuZEJpdE51bWJlclBhcmFtZXRlcnMgPSBbImNv
bXByZXNzZWQ9ZmFsc2UmYml0TnVtYmVyPTEiLApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1vcGNvZGVzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1v
cGNvZGVzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtb3Bjb2Rlcy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVGVzdHMgd2hldGhlciBXZWJTb2NrZXQg
aWdub3JlcyBmcmFtZXMgd2l0aCByZXNlcnZlZCBvcGNvZGUuIik7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAwKTsKIAogdmFyIGNsb3NlRXZlbnQ7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hZnRlci1jbG9zZS1vbi11bmxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3NlbmQtYWZ0ZXItY2xvc2Utb24tdW5sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hZnRl
ci1jbG9zZS1vbi11bmxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAog
ZGVzY3JpcHRpb24oIlRlc3QgaWYgV2ViIFNvY2tldCBvcGVuZWQgaW4gaWZyYW1lLCByZWZlcnJl
ZCBpbiBwYXJlbnQgZG9jdW1lbnQgaXMsIGFuZCB0cnkgdG8gc2VuZCgpIHJldHVybnMgZmFsc2Uu
Iik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogdmFyIGZyYW1lRGl2OwogdmFy
IGNsb3NlZFNvY2tldDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvc2VuZC1hcnJheWJ1ZmZlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1hcnJheWJ1ZmZlci5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3NlbmQtYXJyYXlidWZmZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAs
OCBAQAogZGVzY3JpcHRpb24oIldlYlNvY2tldDogU2VuZCBBcnJheUJ1ZmZlcnMuIik7CiAKIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogZnVuY3Rpb24gc3RhcnRzV2l0aCh0YXJnZXQs
IHByZWZpeCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvc2VuZC1ibG9iLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2IuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2Iu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIldlYlNv
Y2tldDogU2VuZCBCbG9icy4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiBm
dW5jdGlvbiBzdGFydHNXaXRoKHRhcmdldCwgcHJlZml4KQogewpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWVtcHR5Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWVt
cHR5Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1lbXB0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4
ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiV2ViU29ja2V0OiBDYWxsaW5nIHNlbmQoKSB3aXRob3V0
IGFyZ3VtZW50cyBzaG91bGQgcmFpc2UgU3ludGF4RXJyb3IuIik7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAwKTsKIAogdmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6
ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvIik7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1maWxlLWJsb2ItZmFpbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
c2VuZC1maWxlLWJsb2ItZmFpbC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLWZhaWwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIldlYlNvY2tl
dCBzaG91bGQgZmFpbCB0aGUgY29ubmVjdGlvbiBpZiBpdCBoYXMgZmFpbGVkIHRvIHJlYWQgYSBC
bG9iLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIGZ1bmN0aW9uIHN0YXJ0
c1dpdGgodGFyZ2V0LCBwcmVmaXgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWZpbGUtYmxvYi5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NlbmQtZmlsZS1ibG9iLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDgg
KzEwLDggQEAKIGRlc2NyaXB0aW9uKCJXZWJTb2NrZXQ6IFNlbmQgYSBGaWxlLiIpOwogCiB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4
aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIGZ1bmN0aW9uIHN0YXJ0c1dpdGgodGFyZ2V0LCBw
cmVmaXgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlbmQtb2JqZWN0LXRvc3RyaW5nLWNoZWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLW9iamVjdC10b3N0cmlu
Zy1jaGVjay5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtb2JqZWN0LXRvc3RyaW5nLWNoZWNrLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJXZWJTb2NrZXQ6IE9i
amVjdCdzIHRvU3RyaW5nIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS4iKTsKIAog
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3Nldl
YlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiAKIHZhciB0ZXN0T2JqID0gbmV3IGZ1bmN0
aW9uKCkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9zZW5kLXRocm93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLXRocm93Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC10aHJvdy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiV2ViIFNv
Y2tldCBzZW5kIHRlc3QiKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAw
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiBmdW5j
dGlvbiBlbmRUZXN0KCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvc2VuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIldlYiBTb2NrZXQgc2Vu
ZCB0ZXN0Iik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogZnVuY3Rpb24gZW5k
VGVzdCgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3NlcnZlci1jbG9zZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VydmVyLWNsb3NlLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VydmVy
LWNsb3NlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9u
KCJXZWJTb2NrZXQ6IFRlc3Qgc2VydmVyLWluaXRpYXRlZCBjbG9zZS4iKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4w
LjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlcnZlci1jbG9zZSIpOwogdmFyIGNsb3Nl
RXZlbnQ7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NldC1wcm90b2NvbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2V0LXByb3RvY29sLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2V0LXByb3Rv
Y29sLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJX
ZWJTb2NrZXQucHJvdG9jb2wgc2hvdWxkIG5vdCBiZSBtb2RpZmllZC4iKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4w
LjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2FjY2VwdC1maXJzdC1zdWJwcm90b2NvbCIs
ICJjaGF0Iik7CiB2YXIgY2xvc2VFdmVudDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxlLXN0cmVzcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxlLXN0cmVzcy5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NpbXBsZS1zdHJlc3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSwxMCAr
NSwxMCBAQAogPHNjcmlwdD4KIHZhciBudW1TbWFsbE1lc3NhZ2VzID0gMTAwMDsKIAotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2
V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3Nldl
YlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
QEAgLTQ2LDggKzQ2LDggQEAgZnVuY3Rpb24gdGVzdExhcmdlU3RyaW5nKCkKICAgICAgICAgbG9n
KG1zZy5kYXRhLmxlbmd0aCA9PSBzdHIubGVuZ3RoID8gIlBBU1MiIDogIkZBSUwgLSB3cm9uZyBy
ZXNwb25zZSBsZW5ndGgiKTsKICAgICAgICAgd3Muc2VuZCgiR29vZGJ5ZSIpOwogICAgICAgICB3
cy5vbm1lc3NhZ2UgPSBudWxsOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgc2V0VGltZW91dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpIiwgMCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoInRlc3RSdW5uZXIubm90aWZ5RG9uZSgpIiwgMCk7CiAgICAgfQogfQogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NpbXBsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2ltcGxlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJTaW1wbGUgV2ViIFNvY2tldCB0
ZXN0Iik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAogZnVuY3Rpb24gZW5kVGVz
dCgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3N1Yi1wcm90b2NvbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvc3ViLXByb3RvY29sLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc3ViLXByb3Rv
Y29sLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJU
ZXN0IFdlYlNvY2tldCBoYW5kc2hha2Ugc3VjY2VzcyB3aXRoIHN1YiBwcm90b2NvbC4iKTsKIAog
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3Nldl
YlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgcHJvdG9jb2w7CiAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdG9vLWxvbmctcGF5bG9h
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvdG9vLWxvbmctcGF5bG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25nLXBheWxvYWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogZGVzY3JpcHRpb24oIlRlc3Rz
IHdoZXRoZXIgV2ViU29ja2V0IGNvcnJlY3RseSBhYm9ydHMgdGhlIGNvbm5lY3Rpb24gd2hlbiBp
dCByZWNlaXZlcyBhIGZyYW1lIHdpdGggdG9vIGxvbmcgcGF5bG9hZC4iKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOwogCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4w
LjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Rvby1sb25nLXBheWxvYWQiKTsKIHZhciBj
bG9zZUV2ZW50OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS91bmljb2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS91bmljb2RlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5pY29kZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiV2ViIFNvY2tldCB1
bmljb2RlIG1lc3NhZ2UgdGVzdCIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAK
IGZ1bmN0aW9uIGVuZFRlc3QoKQogewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91bm1hc2tlZC1mcmFtZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VubWFza2VkLWZyYW1lcy5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VubWFza2VkLWZyYW1lcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4
ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiUmVjZWl2ZSB1bm1hc2tlZCBXZWJTb2NrZXQgZnJhbWVz
LiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciB1cmwgPSAid3M6Ly9s
b2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS91bm1hc2tlZC1mcmFtZXMiOwogdmFy
IHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS91bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1pbi1jbG9zZS1yZWFzb24uaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91
bnBhaXJlZC1zdXJyb2dhdGVzLWluLWNsb3NlLXJlYXNvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiQ2hlY2tzIHdoZXRoZXIgU1lOVEFYX0VSUiBp
cyB0aHJvd24gd2hlbiBhdHRlbXBpbmcgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aCB1bnBh
aXJlZCBzdXJyb2dhdGVzLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIs
IDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZh
ciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZWNobyIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3VucGFpcmVkLXN1cnJvZ2F0ZXMtaW4tbWVzc2FnZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQt
c3Vycm9nYXRlcy1pbi1tZXNzYWdlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdW5wYWlyZWQtc3Vycm9nYXRlcy1p
bi1tZXNzYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0
aW9uKCJDaGVja3Mgd2hldGhlciBTWU5UQVhfRVJSIGlzIHRocm93biB3aGVuIGF0dGVtcGluZyB0
byBzZW5kIHVucGFpcmVkIHN1cnJvZ2F0ZXMuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9j
b2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKIAogdmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJz
b2NrZXQvdGVzdHMvaHliaS9lY2hvIik7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLWF0dHJpYnV0ZS5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VybC1hdHRyaWJ1dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCAr
MTAsOCBAQAogCiBkZXNjcmlwdGlvbigiQm90aCAuVVJMIGFuZCAudXJsIGF0dHJpYnV0ZXMgc2hv
dWxkIHdvcmsgKGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMpLiIpOwogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciB1cmwgPSAi
d3M6Ly8xMjcuMC4wLjE6ODg4MC8iOwogdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtbm8tdHJh
aWxpbmctc2xhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3VybC1uby10cmFpbGluZy1zbGFzaC5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vy
bC1uby10cmFpbGluZy1zbGFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBA
CiBkZXNjcmlwdGlvbigiVVJMIHRoYXQgZG9lc24ndCBoYXZlIHRyYWlsaW5nIHNsYXNoIHNob3Vs
ZCBub3QgZW1pdCBlbXB0eSBSZXF1ZXN0LVVSSS4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDApOwogCiB2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAiOwogdmFyIGhhbmRzaGFr
ZV9zdWNjZXNzID0gZmFsc2U7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VybC1wYXJzaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtcGFyc2luZy5odG1sCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3VybC1wYXJzaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBkZXNjcmlwdGlvbigiVGVzdCBXZWJTb2NrZXQgVVJM
IHBhcnNpbmcuIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAwKTsKIAogLy8gTm90IGVub3VnaCBhcmd1bWVudHMuCiBzaG91bGRUaHJvdygn
bmV3IFdlYlNvY2tldCgpJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3VybC13aXRoLWNyZWRlbnRpYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRoLWNyZWRlbnRp
YWwuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1jcmVkZW50aWFsLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgaGFuZHNoYWtlIHdpdGgg
VVJMIHdpdGggY3JlZGVudGFpbCBpbmZvIHN1Y2Nlc3MuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0
UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVu
YWJsZWQiLCAwKTsKIAogdmFyIHVybCA9ICJ3czovL3VzZXI6cGFzc0AxMjcuMC4wLjE6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uIjsKIHZhciBoYW5kc2hha2Vfc3VjY2Vz
cyA9IGZhbHNlOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS91cmwtd2l0aC1lbXB0eS1xdWVyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvdXJsLXdpdGgtZW1wdHktcXVlcnkuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS91cmwtd2l0aC1lbXB0eS1xdWVyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIGhhbmRzaGFrZSB3aXRoIFVSTCB3
aXRoIGVtcHR5IHF1ZXJ5IGNvbXBvbmVudHMgc3VjY2Vzcy4iKTsKIAogd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29s
RW5hYmxlZCIsIDApOwogCiB2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvZWNoby1sb2NhdGlvbj8iOwogdmFyIGhhbmRzaGFrZV9zdWNjZXNzID0gZmFs
c2U7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Vy
bC13aXRoLXF1ZXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS91cmwtd2l0aC1xdWVyeS5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3VybC13aXRo
LXF1ZXJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9u
KCJNYWtlIHN1cmUgaGFuZHNoYWtlIHdpdGggVVJMIHdpdGggcXVlcnkgY29tcG9uZW50cyBzdWNj
ZXNzLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciB1cmwgPSAid3M6
Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9lY2hvLWxvY2F0aW9uP3E9diI7
CiB2YXIgaGFuZHNoYWtlX3N1Y2Nlc3MgPSBmYWxzZTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd2Vic29ja2V0LWV2ZW50LXRhcmdldC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d2Vic29ja2V0LWV2ZW50LXRhcmdldC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dlYnNvY2tldC1ldmVudC10YXJn
ZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAKIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KIGRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgV2ViU29ja2V0IG9iamVjdCBh
Y3RzIGFzIEV2ZW50VGFyZ2V0LiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4
aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8v
MTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxlIik7CiB3cy5jbG9zZSgp
OyAvLyBUaGF0IGlzIG5vdCBhIHRlc3Qgd2l0aCBhIFdlYlNvY2tldCBzZXJ2ZXIsIHByZXZlbnQg
bG9nZ2luZyBhbiBlcnJvciB0byBjb25zb2xlLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtcGVuZGluZy1hY3Rpdml0eS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d2Vic29ja2V0LXBlbmRpbmctYWN0aXZpdHkuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93ZWJzb2NrZXQtcGVuZGlu
Zy1hY3Rpdml0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiA8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+CiA8cD5TaG91bGQgYWxlcnQgIlBBU1MiLjwvcD4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiB9CiAKIGZ1bmN0aW9uIGdjKCkKQEAg
LTI1LDggKzI1LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgfQogICAgIHdzLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKG1zZykgewogICAgICAgICBhbGVydChtc2cuZGF0YSk7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgICB3cyA9IG51bGw7CiAg
ICAgZ2MoKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvemVyby1sZW5ndGgtdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvemVyby1sZW5ndGgtdGV4dC5odG1sCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3plcm8tbGVuZ3RoLXRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAog
ZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgaGFuZGxlcyB6ZXJvIGxlbmd0aCB0
ZXh0IGZyYW1lIGNvcnJlY3RseS4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwog
CiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3plcm8tbGVuZ3RoLXRleHQiKTsKIHZhciBjbG9zZUV2ZW50OwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWNv
ZGUtYW5kLXJlYXNvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1jb2RlLWFuZC1yZWFzb24uaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL2Nsb3NlLWNvZGUtYW5kLXJlYXNvbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiVGVzdCBDbG9zZUV2ZW50IGNvZGUgYW5k
IHJlYXNvbiBwcm9wZXJ0eSBpbiBXb3JrZXIuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9j
b2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKIAogZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHByZWZpeCkKIHsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1pbi1v
bm1lc3NhZ2UtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNoLmh0
bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2guaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtOCwxMCArOCwxMCBAQAogPHByZSBpZD1sb2c+CiA8L3ByZT4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQpAQCAtMjIsOCArMjIsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIGZ1bmN0aW9u
IGVuZFRlc3QoKQogewogICAgIGxvZygiVEVTVCBDT01QTEVURSIpOwotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogfQogdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3Jlc291cmNlcy9jbG9z
ZS1pbi1vbm1lc3NhZ2UtY3Jhc2guanMnKTsKIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAo
ZXZ0KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3dvcmtlcnMvY2xvc2UtaW4tc2hhcmVkLXdvcmtlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1pbi1z
aGFyZWQtd29ya2VyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1pbi1zaGFyZWQtd29ya2Vy
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsMTAgKzgsMTAgQEAKIDxwcmUgaWQ9bG9nPgogPC9w
cmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogfQogCiBm
dW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTIyLDggKzIyLDggQEAgZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCiBmdW5jdGlvbiBlbmRUZXN0KCkKIHsKICAgICBsb2coIlRFU1QgQ09NUExFVEUiKTsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29y
a2VyKCdyZXNvdXJjZXMvY2xvc2UtaW4td29ya2VyLmpzJywgJ3dlYnNvY2tldENsb3NlSW5Xb3Jr
ZXInKTsKIHdvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1p
bi13b3JrZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtaW4td29ya2VyLmh0bWwJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9jbG9zZS1pbi13b3JrZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwxMCArOCwxMCBA
QAogPHByZSBpZD1sb2c+CiA8L3ByZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2Nv
bEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RS
dW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xF
bmFibGVkIiwgMCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjIsOCArMjIsOCBA
QCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIGZ1bmN0aW9uIGVuZFRlc3QoKQogewogICAgIGxvZygi
VEVTVCBDT01QTEVURSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogdmFyIHdv
cmtlciA9IG5ldyBXb3JrZXIoJ3Jlc291cmNlcy9jbG9zZS1pbi13b3JrZXIuanMnKTsKIHdvcmtl
ci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xv
c2UuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEw
LDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlv
cnMgaW4gV29ya2VyLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDAp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIGZ1bmN0
aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvbXVsdGlwbGUtc3VicHJvdG9jb2xzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93b3JrZXJzL211bHRpcGxlLXN1YnByb3RvY29scy5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMv
bXVsdGlwbGUtc3VicHJvdG9jb2xzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDgg
QEAKIGRlc2NyaXB0aW9uKCJUZXN0IFdlYlNvY2tldCBzdWJwcm90b2NvbCBuZWdvdGlhdGlvbiBp
biB3b3JrZXJzLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIGZ1bmN0aW9u
IHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvbm8tb25tZXNzYWdlLWluLXN5bmMtb3AuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvbm8tb25tZXNzYWdlLWluLXN5bmMtb3AuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJz
L25vLW9ubWVzc2FnZS1pbi1zeW5jLW9wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEw
LDggQEAKIGRlc2NyaXB0aW9uKCJXZWJTb2NrZXQncyBtZXNzYWdlIGV2ZW50IHNob3VsZCBub3Qg
YmUgaW52b2tlZCB3aGlsZSB3ZSBhcmUgd2FpdGluZyBmb3IgdGhlIHJlc3VsdCBvZiBhIHN5bmNo
cm9ub3VzIG9wZXJhdGlvbiAoc3VjaCBhcyBXZWJTb2NrZXQuc2VuZCgpKSBvbiB3b3JrZXJzLiIp
OwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhp
ZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIGZ1bmN0aW9uIHN0YXJ0c1dpdGgo
c3RyLCBwcmVmaXgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvbm8tc3VicHJvdG9jb2wuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvbm8tc3VicHJv
dG9jb2wuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL25vLXN1YnByb3RvY29sLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJXZWJTb2NrZXQncyBwcm90b2Nv
bCBhdHRyaWJ1dGUgc2hvdWxkIGJlIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgc2VydmVyIGRpZCBu
b3QgcHJvdmlkZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlci4iKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOwogCiBmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcHJlZml4KQog
ewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3Jr
ZXJzL3JlY2VpdmUtYXJyYXlidWZmZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVjZWl2ZS1hcnJheWJ1ZmZl
ci5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVjZWl2ZS1hcnJheWJ1ZmZlci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlwdGlvbigiV2ViU29ja2V0OiBSZWNlaXZl
IEFycmF5QnVmZmVycyBpbiBXZWIgV29ya2Vycy4iKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxl
ZCIsIDApOwogCiBmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcHJlZml4KQogewpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3JlY2VpdmUt
YmxvYi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZWNlaXZlLWJsb2IuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jl
Y2VpdmUtYmxvYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiBkZXNjcmlw
dGlvbigiV2ViU29ja2V0OiBSZWNlaXZlIEJsb2JzIGluIFdlYiBXb3JrZXJzLiIpOwogCiB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4
aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKIGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVm
aXgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3dvcmtlcnMvc2VuZC1hcnJheWJ1ZmZlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVy
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zZW5kLWFycmF5YnVmZmVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJXZWJTb2NrZXQ6IFNlbmQgQXJyYXlC
dWZmZXJzIGluIFdlYiBXb3JrZXJzLiIpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5h
YmxlZCIsIDApOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CiAKIGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCiB7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1ibG9iLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS93b3JrZXJzL3NlbmQtYmxvYi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvc2VuZC1ibG9iLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJXZWJTb2NrZXQ6
IFNlbmQgQmxvYnMgaW4gV2ViIFdvcmtlcnMuIik7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9j
b2xFbmFibGVkIiwgMCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKIAogZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHByZWZpeCkKIHsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXNpbXBsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCwxMCArOCwxMCBAQAogPHByZSBpZD1sb2c+CiA8L3ByZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJT
b2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29j
a2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAt
MjIsOCArMjIsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIGZ1bmN0aW9uIGVuZFRlc3QoKQog
ewogICAgIGxvZygiVEVTVCBDT01QTEVURSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogfQogdmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoJ3Jlc291cmNlcy93b3JrZXItc2lt
cGxlLmpzJywgJ3dlYnNvY2tldFNpbXBsZScpOwogd29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVu
Y3Rpb24gKGV2dCkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL3dvcmtlci1oYW5kc2hha2UtY2hhbGxlbmdlLXJhbmRvbW5lc3MuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvd29ya2VyLWhhbmRzaGFrZS1jaGFsbGVuZ2UtcmFuZG9tbmVzcy5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3dvcmtlcnMvd29ya2VyLWhhbmRzaGFrZS1jaGFsbGVuZ2UtcmFuZG9tbmVzcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC04LDEwICs4LDEwIEBACiA8cHJlIGlkPWxvZz4KIDwvcHJlPgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIH0KIAogZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCkBAIC0yMiw4ICsyMiw4IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQog
ZnVuY3Rpb24gZW5kVGVzdCgpCiB7CiAgICAgbG9nKCJURVNUIENPTVBMRVRFIik7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigncmVzb3Vy
Y2VzL3dvcmtlci1oYW5kc2hha2UtY2hhbGxlbmdlLXJhbmRvbW5lc3MuanMnKTsKIHdvcmtlci5v
bm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvd29ya2VyLXJlbG9hZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy93b3JrZXItcmVsb2FkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy93b3JrZXItcmVsb2FkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKIGRlc2NyaXB0aW9uKCJSZWxvYWQgYWZ0
ZXIgV2ViU29ja2V0IGNyZWF0aW9uIHNob3VsZCBub3QgY2F1c2UgYSBjcmFzaC4iKTsKIAogd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNv
Y2tldFByb3RvY29sRW5hYmxlZCIsIDApOwogCiBkb2N1bWVudC5pZnJhbWVGaW5pc2hlZCA9IGZ1
bmN0aW9uKCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvd29ya2Vycy93b3JrZXItc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3dvcmtlci1zaW1wbGUu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS93b3JrZXJzL3dvcmtlci1zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtOCwxMCArOCwxMCBAQAogPHByZSBpZD1sb2c+CiA8L3ByZT4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZX
ZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2Vi
U29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpA
QCAtMjIsOCArMjIsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIGZ1bmN0aW9uIGVuZFRlc3Qo
KQogewogICAgIGxvZygiVEVTVCBDT01QTEVURSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3Jlc291cmNlcy93b3JrZXItc2ltcGxl
LmpzJyk7CiB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkgewpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItaW1wb3J0U2NyaXB0cy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zaGFyZWQtd29y
a2VyLWltcG9ydFNjcmlwdHMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDE3ICs3LDE3IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8
YnI+IjsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFy
IHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoJ3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0
cy5qcycsICdpbXBvcnRTY3JpcHRzJyk7CiAKIHdvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0
aW9uKGV2dCkgewogICAgIGxvZyhldnQuZGF0YSk7Ci0gICAgaWYgKGV2dC5kYXRhID09ICJET05F
IiAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAoZXZ0LmRhdGEgPT0gIkRPTkUiICYmIHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2Ny
aXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NoYXJl
ZC13b3JrZXItaW52YWxpZC11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1pbnZhbGlkLXVybC5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1p
bnZhbGlkLXVybC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHA+VGVzdCB3
b3JrZXIgaW52YWxpZCB1cmwgZXhjZXB0aW9ucy4gU2hvdWxkIHByaW50IHR3byAiUEFTUyIgc3Rh
dGVtZW50cy48L3A+CiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvdGVybWluYXRlLWR1cmluZy1zeW5jLW9wZXJhdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5
bmMtb3BlcmF0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy90ZXJtaW5hdGUtZHVyaW5nLXN5bmMtb3BlcmF0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTY2LDkgKzY2LDkgQEAgZnVuY3Rpb24gY2xvc2VXb3JrZXIoKQogZnVuY3Rp
b24gcnVuVGVzdCgpCiB7CiAgICAgbG9nKCdTdGFydGluZyB0ZXN0IHJ1bi4nKTsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogICAgIHN0YXJ0TmV4dFRlc3QoKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy90ZXh0LWVuY29kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3RleHQtZW5jb2RpbmcuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3RleHQtZW5jb2RpbmcuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMsOSArMTMsOSBAQCBUaGlzIGlzIHdoYXQncyB0ZXN0ZWQ6PGJyPgogPGRp
diBzdHlsZT0iYmFja2dyb3VuZDpiZWlnZTsgcGFkZGluZzoxMHB4OyIgaWQ9InN0YXR1cyI+PC9k
aXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
CiAvLyBXYWl0IGZvciB0aGlzIG1hbnkgd29ya2VycyB0byBmaW5pc2ggdGhlaXIgdGVzdHMuCkBA
IC0zMyw4ICszMyw4IEBAIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQogICAgICAgICBzdGF0dXNfcGFu
ZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RhdHVzU3RyaW5nc1tpXSkp
OwogICAgICAgICBzdGF0dXNfcGFuZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiYnIiKSk7CiAgICAgfQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5j
dGlvbiBsb2coc291cmNlLCBtc2cpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvd29ya2VyLWRvY3VtZW50LWRvbWFpbi1zZWN1cml0eS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtZG9tYWluLXNlY3Vy
aXR5Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy93b3JrZXItZG9jdW1lbnQtZG9tYWluLXNlY3VyaXR5Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIHsKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0
cy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvd29ya2VyLWltcG9ydFNjcmlwdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNywxNyArNywx
NyBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CiB9CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdy
ZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMuanMnKTsKIAogd29ya2VyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgewogICAgIGxvZyhldnQuZGF0YSk7Ci0gICAgaWYgKGV2dC5kYXRhID09
ICJET05FIiAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAoZXZ0LmRhdGEgPT0gIkRPTkUiICYm
IHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0K
IDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3dvcmtlci1pbXBvcnRTY3JpcHRzT25FcnJvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0c09uRXJyb3IuaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtl
ci1pbXBvcnRTY3JpcHRzT25FcnJvci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDkgKzcsOSBA
QCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CiB9CiAKLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNv
dXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXJyb3IuanMnKTsKQEAgLTI1LDEwICsyNSwxMCBA
QCB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGVycm9yKQogICAgIHByb3BlcnRpZXMuc29ydCgp
OwogICAgIGxvZyhwcm9wZXJ0aWVzKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgLy8gQWxsb3cg
dGhlIGNvbnNvbGUgbWVzc2FnZSB0byBiZSBkdW1wZWQgb3V0LgogICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0sIDAp
OwogICAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXIt
aW52YWxpZC11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvd29ya2VyLWludmFsaWQtdXJsLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW52YWxpZC11cmwuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxwPlRlc3Qgd29ya2VyIGludmFsaWQgdXJsIGV4Y2Vw
dGlvbnMuIFNob3VsZCBwcmludCB0d28gIlBBU1MiIHN0YXRlbWVudHMuPC9wPgogPGRpdiBpZD1y
ZXN1bHQ+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQogewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci13b3Jr
ZXJTY3JpcHROb3RUaGVyZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy93b3JrZXItd29ya2VyU2NyaXB0Tm90VGhlcmUuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci13b3JrZXJTY3Jp
cHROb3RUaGVyZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogPHA+VGhlIG9y
ZGVyIG9mIHRoZSBlcnJvciBldmVudHMgc2hvdWxkIGJlIG9uZXJyb3IgYW5kIHRoZW4gZXJyb3Ig
ZXZlbnQsIGFuZCB0aGlzIHRlc3Qgc2hvdWxkIGJlIGltcHJvdmVkIHRvIHZlcmlmeSB0aGF0IHdo
ZW4gYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjQ4NSBpcyBm
aXhlZC48L3A+CiA8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiB7CkBAIC0x
Niw4ICsxNiw4IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogZnVuY3Rpb24gZG9uZSgpCiB7CiAg
ICAgbG9nKCJET05FIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHZhciBl
dmVudENvdW50ID0gMDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLXJlZGlyZWN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlZGlyZWN0LmpzCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1y
ZWRpcmVjdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsOCBAQCBmdW5jdGlvbiBydW5O
ZXh0VGVzdCgpCiAgICAgICAgIHdpbmRvd1t0ZXN0Q2FzZXNbdGVzdEluZGV4IC0gMV1dKCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgbG9nKCJET05FIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIApAQCAtNTgsOSArNTgsOSBAQCBmdW5j
dGlvbiB0ZXN0Q3Jvc3NPcmlnaW5SZWRpcmVjdGVkTG9hZCgpCiAgICAgfQogfQogCi1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBydW5OZXh0VGVzdCgpOwpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItdXRpbC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci11dGlsLmpzCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwx
MiArMzEsMTIgQEAgZnVuY3Rpb24gd2FpdFVudGlsV29ya2VyVGhyZWFkc0V4aXQoY2FsbAogZnVu
Y3Rpb24gd2FpdFVudGlsVGhyZWFkQ291bnRNYXRjaGVzKGNhbGxiYWNrLCBjb3VudCkKIHsKICAg
ICAvLyBXaGVuIHJ1bm5pbmcgaW4gYSBicm93c2VyLCBqdXN0IHdhaXQgZm9yIG9uZSBzZWNvbmQg
dGhlbiBjYWxsIHRoZSBjYWxsYmFjay4KLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgZ2ModHJ1ZSk7IGNhbGxiYWNrKCk7IH0sIDEwMDApOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLndvcmtlclRocmVh
ZENvdW50ID09IGNvdW50KSB7CisgICAgaWYgKHRlc3RSdW5uZXIud29ya2VyVGhyZWFkQ291bnQg
PT0gY291bnQpIHsKICAgICAgICAgLy8gV29ya2VyIHRocmVhZHMgaGF2ZSBleGl0ZWQuCiAgICAg
ICAgIGNhbGxiYWNrKCk7CiAgICAgfSBlbHNlIHsKQEAgLTY0LDcgKzY0LDcgQEAgZnVuY3Rpb24g
ZG9uZSgpCiAKICAgICAvLyBDYWxsIG5vdGlmeURvbmUgdmlhIHRoZSBxdWV1ZSBzbyBhbnkgcGVu
ZGluZyBjb25zb2xlIG1lc3NhZ2VzL2V4Y2VwdGlvbnMgYXJlIHdyaXR0ZW4gb3V0IGZpcnN0Lgog
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIDApOwogfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvWE1MSHR0cFJlcXVl
c3RFeGNlcHRpb24uaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw4ICszMCw4IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoX21lc3NhZ2Ug
KyAiXG4iKSk7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2
YXIgZTsKICAgICB0cnkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hYm9ydC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWJvcnQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1jcmFzaC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xMSw5ICsxMSw5IEBAIGZ1bmN0aW9uIGYoKSB7CiB9CiAKIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KICAgICAKICAgICBmKCk7CkBAIC0yNyw4ICsyNyw4
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgfQogICAgICAKICAgICAgLy8gQWRkIGEgc21h
bGwgdGltZW91dCB0byBnaXZlIHRoZSBjYWxsYmFja3MgYSBjaGFuY2UgdG8gZmlyZQotICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBzZXRUaW1lb3V0KCJsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkiLCAxMDApCisgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgc2V0VGltZW91dCgidGVzdFJ1bm5lci5ub3RpZnlEb25lKCkiLCAx
MDApCiB9ICAgICAgICAgCiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWJvcnQtc2hvdWxkLWNhbmNlbC1sb2FkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1z
aG91bGQtY2FuY2VsLWxvYWQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1zaG91bGQtY2FuY2VsLWxvYWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTIsMTQgKzEyLDE0IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAg
ICAgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7CiAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKIAotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB9CiAgICAg
CiAgICAgZigpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0LXNob3VsZC1kZXN0
cm95LXJlc3BvbnNlVGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWJvcnQtc2hvdWxkLWRlc3Ryb3ktcmVzcG9uc2VUZXh0Lmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvYWJvcnQtc2hvdWxkLWRlc3Ryb3ktcmVzcG9uc2VUZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOCArMSw4IEBACiA8cD5UaGlzIHRlc3RzIHRoYXQgY2FsbGluZyBYTUxIdHRwUmVxdWVz
dC5hYm9ydCgpIHJlbW92ZXMgdGhlIHJlc3BvbnNlVGV4dCBmb3IgdGhlIFhNTEh0dHBSZXF1ZXN0
LjwvcD4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgewpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1hbmQtcmVk
aXJlY3RzLWFzeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1hbmQtcmVkaXJlY3RzLWFzeW5jLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy1hc3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yLDkgKzIsOSBAQAogCiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKQEAgLTEwNSw4ICsxMDUsOCBAQCB2YXIgY3VycmVudFRlc3QgPSAwOwogZnVuY3Rpb24gbmV4
dFRlc3QoKSB7CiAgICAgaWYgKGN1cnJlbnRUZXN0IDwgdGVzdHMubGVuZ3RoKQogICAgICAgICBy
dW5UZXN0QXN5bmMuYXBwbHkobnVsbCwgdGVzdHNbY3VycmVudFRlc3QrK10pOwotICAgIGVsc2Ug
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGVsc2UgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogbmV4dFRlc3QoKTsKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJl
ZGlyZWN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYW5kLXJlZGlyZWN0cy5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLWFuZC1yZWRpcmVjdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIAog
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC01NSw4ICs1NSw4
IEBAIHZhciBjdXJyZW50VGVzdCA9IDA7CiBmdW5jdGlvbiBuZXh0VGVzdCgpIHsKICAgICBpZiAo
Y3VycmVudFRlc3QgPCB0ZXN0cy5sZW5ndGgpCiAgICAgICAgIHJ1blRlc3QuYXBwbHkobnVsbCwg
dGVzdHNbY3VycmVudFRlc3QrK10pOwotICAgIGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGVsc2UgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIAogbmV4dFRlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctYWNjZXNzLWNvbnRyb2wtb3Jp
Z2luLWhlYWRlci1kYXRhLXVybC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctYWNjZXNzLWNv
bnRyb2wtb3JpZ2luLWhlYWRlci1kYXRhLXVybC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2lj
LWFsbG93LWFjY2Vzcy1jb250cm9sLW9yaWdpbi1oZWFkZXItZGF0YS11cmwuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNywxNCArNywxNCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVu
Y3Rpb24oZXZ0KSB7CiAgICAgaWYgKGV2dC5kYXRhID09ICJkb25lIikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LWFjY2Vzcy1j
b250cm9sLW9yaWdpbi1oZWFkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LWFjY2Vzcy1j
b250cm9sLW9yaWdpbi1oZWFkZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1h
Y2Nlc3MtY29udHJvbC1vcmlnaW4taGVhZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCAr
Nyw4IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSAr
ICJcbiIpKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIChmdW5jdGlvbigpIHsKICAgICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1hc3luYy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRy
b2wtYmFzaWMtYWxsb3ctYXN5bmMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1h
c3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDI1ICs3LDI1IEBAIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICJcbiIpKTsKIH0KIAotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gcHJvY2Vzc1N0YXRl
Q2hhbmdlKCkKIHsKICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0geGhyLkRPTkUpIHsKICAgICAg
ICAgbG9nKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKIGZ1bmN0aW9uIGVycm9ySGFuZGxlcigpCiB7CiAg
ICAgbG9nKCJGQUlMOiBOZXR3b3JrIGVycm9yLiIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCiB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1w
cmVmbGlnaHQtY2FjaGUtaW52YWxpZGF0aW9uLWJ5LWhlYWRlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFz
aWMtYWxsb3ctcHJlZmxpZ2h0LWNhY2hlLWludmFsaWRhdGlvbi1ieS1oZWFkZXIuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9h
Y2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1wcmVmbGlnaHQtY2FjaGUtaW52YWxpZGF0aW9uLWJ5
LWhlYWRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDE2ICs3LDE2IEBAIGZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICJcbiIpKTsKIH0KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gZXJyb3JIYW5k
bGVyKGV2ZW50KQogewogICAgIGxvZygiRkFJTDogTmV0d29yayBlcnJvci4gIik7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIHZhciBmaWxlbmFtZSA9ICJmaWxlbmFtZT1wcmVm
bGlnaHRDYWNoZUludmFsaWRhdGlvbkJ5SGVhZGVyLnR4dCI7CkBAIC01OCw4ICs1OCw4IEBAIGZ1
bmN0aW9uIHNlY29uZFJlcXVlc3QoKQogICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0geGhy
LkRPTkUpIHsKICAgICAgICAgICAgIGxvZyh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAg
IGxvZygiUEFTUzogU2Vjb25kIHJlcXVlc3QgY29tcGxldGUiKTsKLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAg
ICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vz
cy1jb250cm9sLWJhc2ljLWFsbG93LXByZWZsaWdodC1jYWNoZS1pbnZhbGlkYXRpb24tYnktbWV0
aG9kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1wcmVmbGlnaHQtY2FjaGUtaW52YWxpZGF0
aW9uLWJ5LW1ldGhvZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LXByZWZsaWdo
dC1jYWNoZS1pbnZhbGlkYXRpb24tYnktbWV0aG9kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcs
MTYgKzcsMTYgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNz
YWdlICsgIlxuIikpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
fQogCiBmdW5jdGlvbiBlcnJvckhhbmRsZXIoZXZlbnQpCiB7CiAgICAgbG9nKCJGQUlMOiBOZXR3
b3JrIGVycm9yLiAiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogdmFyIGZp
bGVuYW1lID0gImZpbGVuYW1lPXByZWZsaWdodENhY2hlSW52YWxpZGF0aW9uQnlNZXRob2QudHh0
IjsKQEAgLTU4LDggKzU4LDggQEAgZnVuY3Rpb24gc2Vjb25kUmVxdWVzdCgpCiAgICAgICAgIGlm
ICh4aHIucmVhZHlTdGF0ZSA9PSB4aHIuRE9ORSkgewogICAgICAgICAgICAgbG9nKHhoci5yZXNw
b25zZVRleHQpOwogICAgICAgICAgICAgbG9nKCJQQVNTOiBTZWNvbmQgcmVxdWVzdCBjb21wbGV0
ZSIpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctcHJlZmxpZ2h0LWNh
Y2hlLXRpbWVvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LXByZWZsaWdodC1jYWNoZS10
aW1lb3V0Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctcHJlZmxpZ2h0LWNhY2hl
LXRpbWVvdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNywxNiArNywxNiBAQCBmdW5jdGlvbiBs
b2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7CiB9CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGVycm9ySGFu
ZGxlcihldmVudCkKIHsKICAgICBsb2coIkZBSUw6IE5ldHdvcmsgZXJyb3IuICIpOwotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiB2YXIgZmlsZW5hbWUgPSAiZmlsZW5hbWU9cHJl
ZmxpZ2h0Q2FjaGVUaW1lb3V0LnR4dCI7CkBAIC01OCw4ICs1OCw4IEBAIGZ1bmN0aW9uIHNlY29u
ZFJlcXVlc3QoKQogICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0geGhyLkRPTkUpIHsKICAg
ICAgICAgICAgIGxvZyh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgIGxvZygiUEFTUzog
U2Vjb25kIHJlcXVlc3QgY29tcGxldGUiKQotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFz
aWMtYWxsb3ctcHJlZmxpZ2h0LWNhY2hlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1wcmVm
bGlnaHQtY2FjaGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1wcmVmbGlnaHQt
Y2FjaGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNywxNiArNywxNiBAQCBmdW5jdGlvbiBsb2co
bWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7CiB9CiAKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGVycm9ySGFuZGxl
cihldmVudCkKIHsKICAgICBsb2coIkZBSUw6IE5ldHdvcmsgZXJyb3IuICIpOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiB2YXIgZmlsZW5hbWUgPSAiZmlsZW5hbWU9cHJlZmxp
Z2h0Q2FjaGUudHh0IjsKQEAgLTYyLDggKzYyLDggQEAgZnVuY3Rpb24gc2Vjb25kUmVxdWVzdCgp
CiAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSB4aHIuRE9ORSkgewogICAgICAgICAgICAg
bG9nKHhoci5yZXNwb25zZVRleHQpOwogICAgICAgICAgICAgbG9nKCJQQVNTOiBTZWNvbmQgcmVx
dWVzdCBjb21wbGV0ZSIpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ct
c3Rhci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctc3Rhci5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLWJhc2ljLWFsbG93LXN0YXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNv
bGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikp
OwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogKGZ1bmN0aW9uKCkgewogICAgIHZhciB4aHIgPSBuZXcg
WE1MSHR0cFJlcXVlc3Q7CkBAIC0zMCw4ICszMCw4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCiAgICAgbG9nKHhoci5yZXNwb25zZVRleHQpOwogfSkoKTsKIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7ICAKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsgIAogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nl
c3MtY29udHJvbC1iYXNpYy1hbGxvdy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICJcbiIpKTsKIH0KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKIChmdW5jdGlvbigpIHsKICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwpAQCAt
MzAsOCArMzAsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgIGxvZyh4
aHIucmVzcG9uc2VUZXh0KTsKIH0pKCk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgCitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7ICAKIDwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1kZW5pZWQtcHJlZmxpZ2h0LWNhY2hlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3Mt
Y29udHJvbC1iYXNpYy1kZW5pZWQtcHJlZmxpZ2h0LWNhY2hlLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRy
b2wtYmFzaWMtZGVuaWVkLXByZWZsaWdodC1jYWNoZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDkgKzIsOSBAQAogPGJvZHk+CiA8cD5UZXN0IGFzeW5jIHhociBwcmVmbGlnaHQgY2FjaGUgZGVu
aWFsLiAgSWYgdGhpcyB0ZXN0IHBhc3NlcywgdGhlcmUgc2hvdWxkIGJlIGEgc2luZ2xlIFBBU1Mg
YmVsb3cuPC9wPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgdmFyIGNvbnNvbGVfbWVzc2Fn
ZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ1bCIpOwpAQCAtMzAsOCArMzAsOCBAQAogICAg
ICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gMSkKICAgICAgICAgICAgIGxvZygiUEFTUyIpOwog
ICAgICAgICBlbHNlIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7Ci0gICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfQog
ICAgIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1kZW5pZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWRl
bmllZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLWRlbmllZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC03LDggKzcsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKG1lc3NhZ2UgKyAiXG4iKSk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAoZnVuY3Rpb24oKSB7
CiAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtZ2V0LWZhaWwtbm9u
LXNpbXBsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtZ2V0LWZhaWwtbm9uLXNpbXBsZS5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLWJhc2ljLWdldC1mYWlsLW5vbi1zaW1wbGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNyw4ICs3LDggQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShtZXNzYWdlICsgIlxuIikpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogKGZ1bmN0aW9uKCkg
ewogICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLW5vbi1zaW1wbGUt
YWxsb3ctYXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLW5vbi1zaW1wbGUtYWxsb3ctYXN5bmMu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1ub24tc2ltcGxlLWFsbG93LWFzeW5jLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTcsMjUgKzcsMjUgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOwogfQogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBwcm9jZXNzU3RhdGVDaGFuZ2UoKQog
ewogICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSB4aHIuRE9ORSkgewogICAgICAgICBsb2coeGhy
LnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgIH0KIH0KIAogZnVuY3Rpb24gZXJyb3JIYW5kbGVyKCkKIHsKICAgICBsb2coIkZB
SUw6IE5ldHdvcmsgZXJyb3IuIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAK
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLW5vbi1zaW1wbGUtYWxsb3cu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLWJhc2ljLW5vbi1zaW1wbGUtYWxsb3cuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29u
dHJvbC1iYXNpYy1ub24tc2ltcGxlLWFsbG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCAr
Nyw4IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSAr
ICJcbiIpKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIChmdW5jdGlvbigpIHsKICAgICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1ub24tc2ltcGxlLWRlbnktY2FjaGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9h
Y2Nlc3MtY29udHJvbC1iYXNpYy1ub24tc2ltcGxlLWRlbnktY2FjaGVkLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNz
LWNvbnRyb2wtYmFzaWMtbm9uLXNpbXBsZS1kZW55LWNhY2hlZC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC03LDggKzcsOCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KG1lc3NhZ2UgKyAiXG4iKSk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAoZnVuY3Rpb24oKSB7CiAg
ICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtcG9zdC1mYWlsLW5vbi1z
aW1wbGUtY29udGVudC10eXBlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1wb3N0LWZhaWwtbm9uLXNp
bXBsZS1jb250ZW50LXR5cGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNpYy1wb3N0LWZhaWwt
bm9uLXNpbXBsZS1jb250ZW50LXR5cGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDgg
QEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxu
IikpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsK
IApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29u
dHJvbC1iYXNpYy13aGl0ZWxpc3QtcmVxdWVzdC1oZWFkZXJzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1iYXNp
Yy13aGl0ZWxpc3QtcmVxdWVzdC1oZWFkZXJzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMt
d2hpdGVsaXN0LXJlcXVlc3QtaGVhZGVycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIs
OCBAQAogPGJvZHk+CiA8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4KIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0
aW9uIGxvZyhtZXNzYWdlKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtd2hpdGVsaXN0LXJlc3BvbnNlLWhlYWRl
cnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLWJhc2ljLXdoaXRlbGlzdC1yZXNwb25zZS1oZWFkZXJzLmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvYWNjZXNzLWNvbnRyb2wtYmFzaWMtd2hpdGVsaXN0LXJlc3BvbnNlLWhlYWRlcnMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5PgogPHByZSBpZD0nY29uc29sZSc+
PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICB7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZs
aWdodC1hc3luYy1oZWFkZXItZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1wcmVmbGlnaHQtYXN5bmMt
aGVhZGVyLWRlbmllZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1hc3luYy1oZWFk
ZXItZGVuaWVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOSArNyw5IEBAIGZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICJcbiIpKTsKIH0KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogKGZ1bmN0aW9uKCkgewpAQCAt
NDgsOCArNDgsOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAg
IH0KIAogICAgICAgICBsb2coeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgICAKICAgICB4aHIub25yZWFkeXN0
YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1hc3luYy1tZXRob2QtZGVuaWVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9hY2Nlc3MtY29udHJvbC1wcmVmbGlnaHQtYXN5bmMtbWV0aG9kLWRlbmllZC5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXByZWZsaWdodC1hc3luYy1tZXRob2QtZGVuaWVkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTcsOSArNyw5IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSArICJcbiIpKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIAogKGZ1bmN0aW9uKCkgewpAQCAtNDcsOCArNDcsOCBAQCBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgIH0KIAogICAgICAgICBsb2coeGhyLnJl
c3BvbnNlVGV4dCk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgIH0KIAogICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wt
cHJlZmxpZ2h0LWFzeW5jLW5vdC1zdXBwb3J0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1h
c3luYy1ub3Qtc3VwcG9ydGVkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LWFzeW5j
LW5vdC1zdXBwb3J0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOwogfQog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiAoZnVuY3Rpb24oKSB7
CkBAIC00Nyw4ICs0Nyw4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAg
ICAgICAgfQogCiAgICAgICAgIGxvZyh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCiAgICAgeGhyLm9ucmVhZHlz
dGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1wcmVmbGlnaHQtY3JlZGVudGlhbC1hc3luYy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
YWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LWNyZWRlbnRpYWwtYXN5bmMuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3Mt
Y29udHJvbC1wcmVmbGlnaHQtY3JlZGVudGlhbC1hc3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC03LDEwICs3LDEwIEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSArICJcbiIpKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
QWx3YXlzQWNjZXB0Q29va2llcyh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29va2llcyh0cnVlKTsKIH0KIAogdmFy
IGNvb2tpZVNldCA9IGZhbHNlOwpAQCAtMzYsOCArMzYsOCBAQCBmdW5jdGlvbiBzdGFydFRlc3Qo
KSB7CiBmdW5jdGlvbiBzdG9wVGVzdCgpIHsKICAgICAvLyBDbGVhbiB1cCBhbGwgY29va2llcyBm
b3IgbG9jYWxob3N0OjgwMDAuCiAgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgicmVz
ZXRDb29raWVzQW5kTm90aWZ5RG9uZSIsICIqIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1jcmVkZW50aWFsLXN5
bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1jcmVkZW50aWFsLXN5bmMuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nl
c3MtY29udHJvbC1wcmVmbGlnaHQtY3JlZGVudGlhbC1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTcsMTAgKzcsMTAgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtZXNzYWdlICsgIlxuIikpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRBbHdheXNBY2NlcHRDb29raWVzKHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgdGVzdFJ1bm5lci5zZXRBbHdheXNBY2NlcHRDb29raWVzKHRydWUpOwogfQogCiB2
YXIgY29va2llU2V0ID0gZmFsc2U7CkBAIC0zNiw4ICszNiw4IEBAIGZ1bmN0aW9uIHN0YXJ0VGVz
dCgpIHsKIGZ1bmN0aW9uIHN0b3BUZXN0KCkgewogICAgIC8vIENsZWFuIHVwIGFsbCBjb29raWVz
IGZvciBsb2NhbGhvc3Q6ODAwMC4KICAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJy
ZXNldENvb2tpZXNBbmROb3RpZnlEb25lIiwgIioiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LWhlYWRlcnMtYXN5
bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1oZWFkZXJzLWFzeW5jLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNz
LWNvbnRyb2wtcHJlZmxpZ2h0LWhlYWRlcnMtYXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDggQEAKIDxwPlRlc3QgdGhhdCBjdXN0b20gaGVhZGVycyBhcmUgbm90IHNlbnQgd2l0
aCBPUFRJT05TIHByZWZsaWdodCByZXF1ZXN0LjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiByZXNldFN0YXR1cygpCkBAIC0x
OSwxMyArMTksMTMgQEAgZnVuY3Rpb24gc2VuZFJlcXVlc3QoKQogICAgIHJlcS5zZXRSZXF1ZXN0
SGVhZGVyKCJYLUN1c3RvbS1IZWFkZXIiLCAiZm9vYmFyIik7CiAgICAgcmVxLm9uZXJyb3IgPSBm
dW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiRkFJTDogb25lcnJvciBjYWxsZWQiKSk7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgICByZXEub25sb2FkID0gZnVu
Y3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUocmVxLnJlc3BvbnNlVGV4dCkpOwotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAgICAgcmVxLnNlbmQoKTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxp
Z2h0LWhlYWRlcnMtc3luYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LWhlYWRlcnMtc3luYy5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1oZWFkZXJzLXN5bmMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxwPlRlc3QgdGhhdCBjdXN0b20gaGVhZGVycyBhcmUg
bm90IHNlbnQgd2l0aCBPUFRJT05TIHByZWZsaWdodCByZXF1ZXN0LjwvcD4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gcmVzZXRTdGF0dXMoKQogewpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1wcmVmbGlnaHQtcmVx
dWVzdC1oZWFkZXItbG93ZXJjYXNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1wcmVmbGlnaHQtcmVxdWVzdC1o
ZWFkZXItbG93ZXJjYXNlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LXJlcXVlc3Qt
aGVhZGVyLWxvd2VyY2FzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGJv
ZHk+CiA8cD5UZXN0IGZvciBidWcgNzUwODk6IEFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVy
cyB2YWx1ZXMgc2hvdWxkIGJlIGxvd2VyY2FzZS48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gc2VuZFJlcXVlc3QoKQpAQCAt
MTQsMTUgKzE0LDE1IEBAIGZ1bmN0aW9uIHNlbmRSZXF1ZXN0KCkKICAgICB4aHIuc2V0UmVxdWVz
dEhlYWRlcigiWC1DdXN0b20tSGVhZGVyIiwgImZvb2JhciIpOwogICAgIHhoci5vbmVycm9yID0g
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIkZBSUw6IG9uZXJyb3IgY2FsbGVkIikpOwotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICB4aHIub25yZWFkeXN0
YXRlY2hhbmdlPWZ1bmN0aW9uKCkgewogICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGU9PTQpIHsK
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoeGhyLnJlc3BvbnNlVGV4dCkpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgeGhy
LnNlbmQoKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNj
ZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LXN5bmMtaGVhZGVyLWRlbmllZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wt
cHJlZmxpZ2h0LXN5bmMtaGVhZGVyLWRlbmllZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZs
aWdodC1zeW5jLWhlYWRlci1kZW5pZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDgg
QEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxu
IikpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogKGZ1bmN0aW9uKCkgewogICAgIHZhciB4aHIgPSBu
ZXcgWE1MSHR0cFJlcXVlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LXN5bmMtbWV0aG9kLWRlbmllZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNj
ZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LXN5bmMtbWV0aG9kLWRlbmllZC5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1j
b250cm9sLXByZWZsaWdodC1zeW5jLW1ldGhvZC1kZW5pZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNyw4ICs3LDggQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlICsgIlxuIikpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogKGZ1bmN0aW9uKCkgewogICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LXN5bmMtbm90LXN1
cHBvcnRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LXN5bmMtbm90LXN1cHBvcnRlZC5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1zeW5jLW5vdC1zdXBwb3J0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogKGZ1bmN0
aW9uKCkgewogICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcmVwZWF0ZWQt
ZmFpbGVkLXByZWZsaWdodC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcmVwZWF0ZWQtZmFpbGVkLXBy
ZWZsaWdodC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXJlcGVhdGVkLWZhaWxlZC1wcmVm
bGlnaHQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxiYXNlIGhy
ZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iPjwvYmFzZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgcmVxdWVzdENvdW50ID0gMDsKQEAg
LTE4LDkgKzE4LDkgQEAgZnVuY3Rpb24gcHJlZmxpZ2h0UmVxdWVzdCgpIHsKICAgICAgICAgcmVx
dWVzdENvdW50Kys7CiAgICAgICAgIC8vIFRoaXMgaGFjayBvZiBzaG93aW5nIGFuZCBoaWRpbmcg
dGhlIGluc3BlY3RvciBncmVhdGx5IGluY3JlYXNlcyB0aGUgbGlrZWxpaG9vZAogICAgICAgICAv
LyB0aGF0IHJlZmVyZW5jZXMgdG8gdGhlIENhY2hlZFJlc291cmNlIHVuZGVybHlpbmcgdGhlIFhI
UiBnZXQgY2xlYW5lZCBvdXQuCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3Io
KTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zaG93V2ViSW5zcGVjdG9yKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmNsb3NlV2ViSW5z
cGVjdG9yKCk7CiAgICAgICAgIH0KICAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdCgpOwogICAgIH0K
QEAgLTMwLDggKzMwLDggQEAgZnVuY3Rpb24gcHJlZmxpZ2h0UmVxdWVzdCgpIHsKIAogZnVuY3Rp
b24gZmluaXNoKHJlc3VsdCkgewogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUocmVzdWx0KSk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiA8L3NjcmlwdD4KIDxib2R5IG9ubG9hZD0icHJlZmxpZ2h0UmVxdWVzdCgpIj48L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250
cm9sLXJlc3BvbnNlLXdpdGgtYm9keS1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1yZXNwb25zZS13aXRo
LWJvZHktc3luYy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXJlc3BvbnNlLXdpdGgtYm9keS1zeW5j
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBAIEJvZHkgZnJvbSBjcm9zcyBvcmln
aW4gcHJlZmxpZ2h0IHJlc3BvbnMKIDxkaXYgaWQ9cmVzdWx0PlJ1bm5pbmcgdGVzdC4uLjwvZGl2
PgogPHNjcmlwdD4KIAotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgIHdpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpIHsKICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcmVzcG9u
c2Utd2l0aC1ib2R5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1yZXNwb25zZS13aXRoLWJvZHkuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9h
Y2Nlc3MtY29udHJvbC1yZXNwb25zZS13aXRoLWJvZHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NSw5ICs1LDkgQEAgQm9keSBmcm9tIGNyb3NzIG9yaWdpbiBwcmVmbGlnaHQgcmVzcG9ucwogPGRp
diBpZD1yZXN1bHQ+UnVubmluZyB0ZXN0Li4uPC9kaXY+CiA8c2NyaXB0PgogCi0gIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgfQogCiAgIHdpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKQEAgLTE1LDggKzE1LDggQEAgQm9keSBmcm9tIGNyb3NzIG9yaWdpbiBwcmVm
bGlnaHQgcmVzcG9ucwogICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpIHsK
ICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlPT00KSB7CiAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICh4aHIucmVzcG9uc2VUZXh0ID09ICJl
Y2hvIikgPyAiUEFTUyIgOiAoIkZBSUw6ICIgKyB4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAg
ICAgfTsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nl
c3MtY29udHJvbC1yZXNwb25zZS13aXRoLWV4cG9zZS1oZWFkZXJzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1y
ZXNwb25zZS13aXRoLWV4cG9zZS1oZWFkZXJzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcmVzcG9u
c2Utd2l0aC1leHBvc2UtaGVhZGVycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw0ICsyMiw0
IEBAIHhoci5zZW5kKG51bGwpOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KLTwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUt
YWxsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNhbmRib3hlZC1pZnJhbWUtYWxsb3cuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nl
c3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWFsbG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOSArMSw5IEBACiA8aHRtbD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVk
LWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVk
LWlmcmFtZS1kZW5pZWQtd2l0aG91dC13aWxkY2FyZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXNh
bmRib3hlZC1pZnJhbWUtZGVuaWVkLXdpdGhvdXQtd2lsZGNhcmQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5k
Ym94ZWQtaWZyYW1lLWRlbmllZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtc2FuZGJveGVkLWlmcmFtZS1kZW5p
ZWQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9hY2Nlc3MtY29udHJvbC1zYW5kYm94ZWQtaWZyYW1lLWRlbmllZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+IAogPHNjcmlwdD4KIAotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiB9CiAKIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hdXRob3Jp
emF0aW9uLWhlYWRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvYXV0aG9yaXphdGlvbi1oZWFkZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hdXRob3JpemF0aW9u
LWhlYWRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHA+VGVzdCB0aGF0
IEF1dGhvcml6YXRpb24gaGVhZGVyIGNhbiBiZSBzZXQgdmlhIHNldFJlcXVlc3RIZWFkZXIuPC9w
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB0cnkgewogICAgIHZhciByZXEgPSBuZXcgWE1M
SHR0cFJlcXVlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2Jhc2ljLWF1dGgtZGVmYXVsdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC1kZWZhdWx0Lmh0bWwJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0
aC1kZWZhdWx0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5ObyBhdXRo
ZW50aWNhdGlvbiBkaWFsb2dzIHNob3VsZCBhcHBlYXIsIGFuZCB0aGUgYmVsb3cgbGluZSBzaG91
bGQgc2F5ICJQQVNTIi48L3A+CiA8ZGl2IGlkPXJlc3VsdD5UZXN0IGRpZG4ndCBydW4uPC9kaXY+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVu
Y3Rpb24gc3RlcDEoKQpAQCAtMzcsOCArMzcsOCBAQCBmdW5jdGlvbiBzdGVwMygpCiAgICAgcmVx
Lm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvYmFzaWMtYXV0aC1kZWZhdWx0L2RpcjIvY2F0Y2gucGhw
IiwgdHJ1ZSk7CiAgICAgcmVxLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gcmVxLnN0YXR1cyA9PSAyMDAg
PyAiUEFTUyIgOiAiRkFJTCI7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0KICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5u
ZXJIVE1MID0gIlRlc3RpbmcsIHN0ZXAgMy4uLiI7CiAgICAgcmVxLnNlbmQoKTsKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC1ub3Bhc3N3b3Jk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9iYXNpYy1hdXRoLW5vcGFzc3dvcmQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9iYXNpYy1hdXRoLW5vcGFzc3dvcmQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiwxMyArMiwxMyBAQAogPGJvZHk+CiA8cD5UZXN0cyBmb3Ig
WE1MSHR0cFJlcXVlc3QgYXV0aGVudGljYXRpb24gd2l0aCBvbmx5IHVzZXJuYW1lIG9yIHBhc3N3
b3JkIHNldAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlcyAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0
aGVudGljYXRpb25Vc2VybmFtZSkgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoInVzZXIiKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
LnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMgJiYgd2luZG93LnRlc3RSdW5uZXIu
c2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRI
YW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKHRydWUpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ1c2VyIik7CiAgICAgICAgIH0KLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5xdWV1ZUxvYWQoImh0dHA6Ly91c2VyOkBsb2NhbGhvc3Q6ODAwMC94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMvYmFzaWMtYXV0aC1ub3VzZXJwYXNzL2Jhc2ljLWF1dGgtbm91c2Vy
cGFzcy5waHAiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRl
c3RSdW5uZXIucXVldWVMb2FkKCJodHRwOi8vdXNlcjpAbG9jYWxob3N0OjgwMDAveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2Jhc2ljLWF1dGgtbm91c2VycGFzcy9iYXNpYy1hdXRoLW5vdXNlcnBh
c3MucGhwIik7CiAgICAgfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYmFzaWMtYXV0aC1ub3VzZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Jhc2ljLWF1dGgtbm91c2VyLmh0
bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYmFzaWMtYXV0aC1ub3VzZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMyArMiwx
MyBAQAogPGJvZHk+CiA8cD5UZXN0cyBmb3IgWE1MSHR0cFJlcXVlc3QgYXV0aGVudGljYXRpb24g
d2l0aCBvbmx5IHVzZXJuYW1lIG9yIHBhc3N3b3JkIHNldAogPHNjcmlwdD4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyAmJiB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCkgewotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlcyh0cnVlKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRp
Y2F0aW9uUGFzc3dvcmQoInBhc3N3b3JkIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VzICYmIHdpbmRvdy50ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlcyh0cnVlKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNz
d29yZCgicGFzc3dvcmQiKTsKICAgICAgICAgfQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgi
aHR0cDovLzpwYXNzd29yZEBsb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
YmFzaWMtYXV0aC1ub3VzZXJwYXNzL2Jhc2ljLWF1dGgtbm91c2VycGFzcy5waHAiKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIucXVldWVMb2Fk
KCJodHRwOi8vOnBhc3N3b3JkQGxvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy9iYXNpYy1hdXRoLW5vdXNlcnBhc3MvYmFzaWMtYXV0aC1ub3VzZXJwYXNzLnBocCIpOwogICAg
IH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2Jhc2ljLWF1dGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2Jhc2ljLWF1dGguaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9iYXNpYy1hdXRoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8Ym9keT4KIDxwPlRlc3RzIGZvciBYTUxIdHRwUmVx
dWVzdCBhdXRoZW50aWNhdGlvbi4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAKICAgICB2YXIg
Y29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CkBAIC0xMDEs
OCArMTAxLDggQEAKICAgICAgICAgICAgIHJlcS5zZW5kKCIiKTsKICAgICAgICAgICB9IGVsc2Ug
aWYgKGFzeW5jU3RlcCA9PSA3KSB7CiAgICAgICAgICAgICBsb2coJ2FzeW5jNzogJyArIHJlcS5y
ZXNwb25zZVRleHQpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBsb2coImFzeW5jIiArIGFzeW5jU3RlcCArICIgZmFpbGVkIHdpdGggdW5leHBlY3RlZCBzdGF0
dXM6ICIgKyByZXEuc3RhdHVzKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYmluYXJ5LXgtdXNlci1kZWZpbmVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9iaW5hcnkteC11c2VyLWRlZmluZWQuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9iaW5hcnkteC11c2VyLWRlZmluZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsx
LDggQEAKIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTU1Ij5idWcgMTU1NTU8L2E+OgogWE1MSHR0cFJlcXVlc3QgZG9lcyBub3Qg
c3VwcG9ydCBjaGFyc2V0ICJ4LXVzZXItZGVmaW5lZCIsIHdoaWNoIGNhbiBmYWNpbGl0YXRlIGxv
YWRpbmcgb2YgYmluYXJ5IGRhdGEuPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHRyeSB7CiAg
IHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvYnJva2VuLXhtbC1lbmNvZGluZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYnJva2VuLXhtbC1lbmNvZGluZy5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2Jyb2tlbi14bWwtZW5jb2RpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsx
LDggQEAKIDxwPjxhIGhyZWY9InJkYXI6Ly9wcm9ibGVtLzY2MjE3MDEiPnJkYXI6Ly9wcm9ibGVt
LzY2MjE3MDE8L2E+IFRlc3QgdGhhdCBYTUwgcmVzb3VyY2VzIHdpdGggaW5jb3JyZWN0IGVuY29k
aW5nIHJldHJpZXZlZCB2aWEgWE1MSHR0cFJlcXVlc3QgYXJlIGZ1bGx5IGRlY29kZWQsCiBjZi4g
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDc5Ij5i
dWcgMTcwNzk8L2E+LjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHJlcSA9IG5l
dyBYTUxIdHRwUmVxdWVzdDsKIHJlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL2Jyb2tlbi1lbmNv
ZGluZy54bWwiLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2NhY2hlLWhlYWRlcnMtYWZ0ZXItcmVsb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jYWNoZS1oZWFkZXJzLWFmdGVyLXJl
bG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2NhY2hlLWhlYWRlcnMtYWZ0ZXItcmVsb2FkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTksOSArOSw5IEBAIGNvdWxkIGxvYWQgdGhlIHJlc291cmNlIHdpdGhvdXQgY29udGFj
dGkKIFRoZSB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBpcyBubyBIVFRQX0NBQ0hFX0NPTlRST0wgaGVh
ZGVyIGRpc3BsYXllZCBiZWxvdy48YnI+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3Jp
cHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CkBAIC0zNiw4ICsz
Niw4IEBAIFRoZSB0ZXN0IHBhc3NlcyBpZiB0aGVyZSBpcyBubyBIVFRQX0NBQ0gKICAgICAKICAg
ICBmdW5jdGlvbiBmaW5pc2goKSB7CiAgICAgICAgIGxvZyh4aHIucmVzcG9uc2VUZXh0KTsKLSAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogPC9zY3Jp
cHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2NhY2hlLW92ZXJyaWRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9jYWNoZS1vdmVycmlkZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2NhY2hlLW92ZXJyaWRlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5UZXN0cyBmb3IgPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMTAiPiBidWcgODIxMDwv
YT4gLSAKIENvbmRpdGlvbmFsIFhNTEh0dHBSZXF1ZXN0IGdldHMgc2hvdWxkIHBhc3MgMzA0IHJl
c3BvbnNlcyB1bmNoYW5nZWQuPC9wPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICAgIAogICAgIHZh
ciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKQEAgLTIx
MSw4ICsyMTEsOCBAQCBDb25kaXRpb25hbCBYTUxIdHRwUmVxdWVzdCBnZXRzIHNob3VsZCBwCiAg
ICAgICAgICAgICByZXEuc2VuZChudWxsKTsKICAgICAgICAgICB9IGVsc2UgaWYgKGFzeW5jU3Rl
cCA9PSAxMikgewogICAgICAgICAgICAgbG9nKCJhc3luYzogSWYtTW9kaWZpZWQtU2luY2Ugb3Zl
cnJpZGUgKHVuY2FjaGVkIHJlc3BvbnNlKTogc3RhdHVzID0gIiArIHJlcS5zdGF0dXMpOwotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2NodW5rZWQtcHJvZ3Jlc3MtZXZlbnQtZXhwZWN0ZWRMZW5ndGguaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2No
dW5rZWQtcHJvZ3Jlc3MtZXZlbnQtZXhwZWN0ZWRMZW5ndGguaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jaHVua2VkLXByb2dy
ZXNzLWV2ZW50LWV4cGVjdGVkTGVuZ3RoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOSArOCw5
IEBACiA8cD5QQVNTIHNob3VsZCBhcHBlYXIgYmVsb3c6PC9wPgogPHAgaWQ9Y29uc29sZT48L3A+
CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTMzLDggKzMzLDgg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9u
KGUpIHsKICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IHhoci5ET05FKSAKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvY2xvc2Utd2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jbG9zZS13aW5kb3cuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jbG9zZS13
aW5kb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2Fu
T3BlbldpbmRvd3MoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nvbm5lY3Rpb24tZXJyb3Itc3luYy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY29ubmVjdGlv
bi1lcnJvci1zeW5jLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvY29ubmVjdGlvbi1lcnJvci1zeW5jLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQsOCArNCw4IEBACiA8cD5UZXN0IHRoZSBiZWhhdmlvciBvZiBhIHN5bmMgWE1M
SHR0cFJlcXVlc3QgdGhhdCBlbmNvdW50ZXJzIGFuIGluZmluaXRlIHJlZGlyZWN0aW9uIGxvb3Au
PC9wPgogPHNjcmlwdD4KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdHJ5
IHsKICAgICAgICAgaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkgewpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jb29raWVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jb29raWVzLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY29v
a2llcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBAIFhNTEh0dHBSZXF1ZXN0
IGRvZXMgbm90IGhhbmRsZSBzZXQtY29va2kKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmZpcnN0Q2hpbGQuZGF0YSA9IHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB0cnkgewogICAgICAgICBjbGVhckNvb2tpZXMoKTsK
ICAgICAgICAgdmFyIHJlc3BvbnNlID0gZ2V0QW5kU2V0Q29va2llcygpOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jcm9zcy1vcmlnaW4tYXV0aG9yaXphdGlv
bi13aXRoLWVtYmVkZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9jcm9zcy1vcmlnaW4tYXV0aG9yaXphdGlvbi13aXRoLWVtYmVkZGVy
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLWF1dGhvcml6YXRpb24td2l0aC1lbWJlZGRlci5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiA8YnV0dG9uIG9uY2xpY2s9InByZXNldEF1
dGhvcml6YXRpb24oKSI+U3RhcnQ8L2J1dHRvbj4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dz
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldENh
bk9wZW5XaW5kb3dzKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMTQsOCArMTQs
OCBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIAogZnVuY3Rpb24gcHJlc2V0QXV0aG9yaXphdGlv
bigpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuYXV0aGVudGljYXRlU2Vzc2lvbigiaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4tYXV0aG9yaXphdGlvbi5w
aHAiLCAidGVzdCIsICJ0ZXN0Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLmF1dGhlbnRpY2F0ZVNlc3Npb24oImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWF1dGhvcml6YXRpb24ucGhwIiwg
InRlc3QiLCAidGVzdCIpOwogCiAgICAgdGVzdCgpOwogfQpAQCAtMzIsMTEgKzMyLDExIEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICBsb2coIlBBU1MiKTsKICAgICB9CiAgICAgbG9nKCJET05F
Iik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIAotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICBwcmVzZXRBdXRo
b3JpemF0aW9uKCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLWF1dGhvcml6YXRpb24uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nyb3NzLW9yaWdpbi1hdXRo
b3JpemF0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLWF1dGhvcml6YXRpb24uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBAQAogPGJ1dHRvbiBvbmNsaWNrPSJwcmVzZXRBdXRob3Jp
emF0aW9uKCkiPlN0YXJ0PC9idXR0b24+CiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVu
V2luZG93cygpOwogfQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTEyNywxNyArMTI3LDE3
IEBAIGZ1bmN0aW9uIHRlc3RfYXN5bmNfYXV0aF9leHBsaWNpdCgpCiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGxvZygiRkFJTDogV3Jvbmcgc3RhdHVzIGNvZGUgIiArIHJlcS5zdGF0dXMpOwog
ICAgICAgICBsb2coIkRPTkUiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgfQogICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
IGxvZygiRkFJTDogUmVjZWl2ZWQgZXJyb3IgZXZlbnQuIik7CiAgICAgICAgIGxvZygiRE9ORSIp
OwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9
CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCiAgICAgcHJlc2V0QXV0aG9yaXphdGlvbigpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nyb3NzLW9yaWdpbi1jb29raWUtc3RvcmFn
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvY3Jvc3Mtb3JpZ2luLWNvb2tpZS1zdG9yYWdlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLWNvb2tp
ZS1zdG9yYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTEgQEAKIDxidXR0b24g
b25jbGljaz0idGVzdFN5bmNDb29raWVzTm9DcmVkZW50aWFscygpOyI+U3RhcnQ8L2J1dHRvbj4K
IDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0QWx3YXlzQWNjZXB0Q29va2llcygxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICB0ZXN0UnVubmVyLnNl
dEFsd2F5c0FjY2VwdENvb2tpZXMoMSk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAt
MzAsOCArMzAsOCBAQCBmdW5jdGlvbiBjbGVhckNvb2tpZXMoKQogZnVuY3Rpb24gZW5kVGVzdGlu
ZygpCiB7CiAgICAgY2xlYXJDb29raWVzKCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIGNoZWNrRm9yQ29va2llKCkKQEAgLTEwNSw3ICsxMDUsNyBAQCBmdW5j
dGlvbiB0ZXN0U3luY0Nvb2tpZXNXaXRoQ3JlZGVudGlhbHMoCiAgICAgZW5kVGVzdGluZygpOwog
fQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQogICAgIHRlc3RTeW5jQ29va2llc05vQ3JlZGVudGlhbHMoKTsKIDwvc2NyaXB0PgogCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nyb3NzLW9yaWdpbi1u
by1hdXRob3JpemF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9jcm9zcy1vcmlnaW4tbm8tYXV0aG9yaXphdGlvbi5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Ny
b3NzLW9yaWdpbi1uby1hdXRob3JpemF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzEsMTAgQEAKIDxidXR0b24gb25jbGljaz0icHJlc2V0QXV0aG9yaXphdGlvbigpIj5TdGFydDwv
YnV0dG9uPgogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKIH0KIAog
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0xNDYsMTcgKzE0NiwxNyBAQCBmdW5jdGlvbiB0ZXN0
X2FzeW5jX2F1dGhfZXhwbGljaXQoKQogICAgIHJlcS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAg
ICAgICAgbG9nKChyZXEuc3RhdHVzID09IDQwMSkgPyAiUEFTUzogNDAxIEF1dGhvcml6YXRpb24g
cmVxdWlyZWQiIDogIkZBSUw6IExvYWRlZCIpOwogICAgICAgICBsb2coIkRPTkUiKTsKLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogICAgIHJlcS5v
bmVycm9yID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIGxvZygiUEFTUzogUmVjZWl2ZWQgZXJyb3Ig
ZXZlbnQuIik7CiAgICAgICAgIGxvZygiRE9ORSIpOwotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCitpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgcHJlc2V0QXV0aG9yaXphdGlv
bigpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2Nyb3NzLW9yaWdpbi1uby1jcmVkZW50aWFsLXByb21wdC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLW5vLWNy
ZWRlbnRpYWwtcHJvbXB0Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLW5vLWNyZWRlbnRpYWwtcHJvbXB0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiBUaGVyZSBzaG91bGQgYmUgbm8g
YXV0aGVudGljYXRpb24gcHJvbXB0IGRpc3BsYXllZCwgc2luY2UgdGhpcyBpcyBhIGNyb3NzLW9y
aWdpbiByZXF1ZXN0LgogSW4gYXV0b21hdGljIG1vZGUsIHRoZSB0ZXN0IHJlbGllcyBvbiBsb2dn
aW5nIG9mIGF1dGhlbnRpY2F0aW9uIHNoZWV0cy4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgciA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKQEAg
LTExLDExICsxMSwxMSBAQCByLm9wZW4oIkdFVCIsICJodHRwOi8vbG9jYWxob3N0OjgwMDAveG1s
CiByLnNlbmQoKTsKIHIub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgYWxlcnQoIkZBSUw6IHNo
b3VsZCBoYXZlIGZhaWxlZCBkdWUgdG8gbGFjayBvZiBjcm9zcyBvcmlnaW4gaGVhZGVycyIpOwot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogci5vbmVycm9yID0gZnVuY3Rpb24oKSB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLXByZWZsaWdodC1n
ZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2Nyb3NzLW9yaWdpbi1wcmVmbGlnaHQtZ2V0Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtb3JpZ2luLXByZWZs
aWdodC1nZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxwPlRoZSAiT3Jp
Z2luIiBoZWFkZXIgbXVzdCBiZSBzZW50IHdpdGggYSAibm9uLXNpbXBsZSIgY3Jvc3Mtb3JpZ2lu
IHJlc291cmNlIHNoYXJpbmcgcmVxdWVzdCB0aGF0IHVzZXMgdGhlIEdFVCBtZXRob2QuPC9wPgog
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0yMyw4ICsyMyw4
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGxvZygi
b25lcnJvciIpIH0KICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIGxvZyh4
aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgfQogICAgIHhoci5zZW5kKG51bGwpOwogfQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jcm9zcy1zaXRlLWRlbmllZC1yZXNwb25zZS1zeW5j
LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2Nyb3NzLXNpdGUtZGVuaWVkLXJlc3BvbnNlLXN5bmMtMi5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nyb3NzLXNpdGUt
ZGVuaWVkLXJlc3BvbnNlLXN5bmMtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBA
QAogPHByZSBpZD1wcmVPbmVycm9yPkZBSUw6IG9uZXJyb3Igd2FzIG5vdCBjYWxsZWQuPC9wcmU+
CiA8cHJlIGlkPWNvbnNvbGU+PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC0yMyw4ICsyMyw4
IEBAIGZ1bmN0aW9uIGNoZWNrUmVzcG9uc2UoKQogewogICAgIGlmIChyZXEucmVzcG9uc2VUZXh0
Lmxlbmd0aCkgewogICAgICAgICBlcnJvcigicmVzcG9uc2VUZXh0IGlzIG5vdCBlbXB0eSIpOwot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpCiAgICAgfQogfQogCkBA
IC0zOSw4ICszOSw4IEBAIGZ1bmN0aW9uIHN0ZWFsUmVzcG9uc2UoKQogICAgICAgICBjaGVja1Jl
c3BvbnNlKCk7CiAgICAgICAgIGlmICghaGFkRXJyb3IpCiAgICAgICAgICAgICBsb2coIlBBU1Mi
KTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKQorICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKQogICAgIH0sIDEw
MCk7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jv
c3Mtc2l0ZS1kZW5pZWQtcmVzcG9uc2Utc3luYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtc2l0ZS1kZW5pZWQtcmVzcG9uc2Ut
c3luYy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2Nyb3NzLXNpdGUtZGVuaWVkLXJlc3BvbnNlLXN5bmMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxwcmUgaWQ9cHJlT25lcnJvcj5GQUlMOiBvbmVycm9y
IHdhcyBub3QgY2FsbGVkLjwvcHJlPgogPHByZSBpZD1jb25zb2xlPjwvcHJlPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIHsKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtc2l0ZS1kZW5pZWQtcmVzcG9uc2Uu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2Nyb3NzLXNpdGUtZGVuaWVkLXJlc3BvbnNlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvY3Jvc3Mtc2l0ZS1kZW5pZWQtcmVz
cG9uc2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxwcmUgaWQ9cHJlT25l
cnJvcj5GQUlMOiBvbmVycm9yIHdhcyBub3QgY2FsbGVkLjwvcHJlPgogPHByZSBpZD1jb25zb2xl
PjwvcHJlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9
CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtNDksOCArNDksOCBAQCBmdW5jdGlvbiBjaGVj
a1Jlc3BvbnNlKCkKICAgICB9IGNhdGNoIChleCkgewogICAgICAgICBsb2coZXgpOwogICAgIH0K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogdmFyIHJlcSA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZGVm
YXVsdC1jb250ZW50LXR5cGUtZGFzaGJvYXJkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9kZWZhdWx0LWNvbnRlbnQtdHlwZS1kYXNoYm9h
cmQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9kZWZhdWx0LWNvbnRlbnQtdHlwZS1kYXNoYm9hcmQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxib2R5PgogPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBkZWZh
dWx0IENvbnRlbnQtVHlwZSBmb3IgWE1MSHR0cFJlcXVlc3QgaXMgYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIHdoZW4gcnVubmluZyBpbiB0aGUgRGFzaGJvYXJkIGNvbXBhdGliaWxp
dHkgbW9kZS48L3A+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VXNlRGFzaGJvYXJkQ29tcGF0
aWJpbGl0eU1vZGUodHJ1ZSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5z
ZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAgICAgfQogICAgIAogICAgIG9ialhtbEh0dHAgPSBuZXcgWE1MSHR0
cFJlcXVlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Rl
dGFjaGluZy1mcmFtZS0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9kZXRhY2hpbmctZnJhbWUtMi5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2RldGFjaGluZy1mcmFt
ZS0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+CiA8cD48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjU0MjAiPmJ1ZyAyNTI0MDwvYT48L3A+CiA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpCisgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCkKICAgfQogCiAgZnVuY3Rpb24gdGVzdCgpIHsKQEAgLTIzLDggKzIz
LDggQEAKICAgICAgfQogICAgICAvLyBGQUlMIGlmIGxvYWRlZCBkYXRhIGZyb20gYW5vdGhlciBk
b21haW4uCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwg
PSAoY2xpZW50ICYmIGNsaWVudC5yZXNwb25zZVRleHQubWF0Y2goL2xvY2FsaG9zdC8pKSA/ICJG
QUlMIiA6ICJQQVNTIgotICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkKKyAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKQogICAgfQogICAgZnJh
bWVzWzBdLmxvY2F0aW9uID0gZnJhbWVzWzBdLmxvY2F0aW9uLnRvU3RyaW5nKCkucmVwbGFjZSgi
MTI3LjAuMC4xIiwgImxvY2FsaG9zdCIpCiAgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9kZXRhY2hpbmctZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2RldGFjaGluZy1mcmFtZS5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2RldGFjaGluZy1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPHA+
VGVzdCB0aGF0IHJlbW92aW5nIGFuIElGUkFNRSBmcm9tIGFuIFhNTEh0dHBSZXF1ZXN0IGZpbmlz
aGVkIGNhbGxiYWNrIGRvZXMgbm90IGNhdXNlIGEgY3Jhc2guPC9wPgogPGlmcmFtZSBzcmM9InJl
c291cmNlcy9kZXRhY2hlZC1mcmFtZS5odG1sIj48L2lmcmFtZT4KIDxzY3JpcHQ+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IH0KIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9kb2NMb2FkZXJGcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZG9jTG9hZGVyRnJhbWUuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9kb2NMb2Fk
ZXJGcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIGZ1bmN0aW9uIHBy
b2Nlc3NSZXFDaGFuZ2UoKQogICAgICAgICAgICAgYWxlcnQoJ1RoZXJlIHdhcyBhIHByb2JsZW0g
cmV0cmlldmluZyB0aGUgWE1MIGRhdGE6ICcgKyBycS5zdGF0dXNUZXh0KTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDksOSArNDksOSBAQCBmdW5jdGlvbiBwcm9jZXNz
UmVxQ2hhbmdlKCkKIDxwPlRlc3QgZm9yIDxhIGhyZWY9InJkYXI6Ly9wcm9ibGVtLzQyOTgwNTIi
PnJkYXI6Ly9wcm9ibGVtLzQyOTgwNTI8L2E+OiBDcmFzaCBpbiBLV1FDaGVja0lmUmVsb2FkaW5n
IGF0IGh0dHA6Ly93d3cuaW5xdWlzaXRvcnguY29tL2JldGEvPC9wPgogPHAgaWQ9InJlc3VsdCI+
PC9wPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2RvY3VtZW50LWRvbWFpbi1zZXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Rv
Y3VtZW50LWRvbWFpbi1zZXQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9kb2N1bWVudC1kb21haW4tc2V0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIDxwcmU+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogZG9jdW1lbnQuZG9tYWluID0gJzAuMC4xJzsKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9lbmNvZGUtcmVxdWVzdC11cmwtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZW5jb2RlLXJlcXVl
c3QtdXJsLTIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9lbmNvZGUtcmVxdWVzdC11cmwtMi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCw5ICsxMCw5IEBACiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5hcHBlbmRDaGlsZChpdGVtKTsKICAgICB9CiAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgfQogCiAgICAgPCEtLSBG
aXJlZm94IDMgZW5jb2RlcyBxdWVyeSBwYXJ0IG9mIFhNTEh0dHBSZXF1ZXN0IHJlcXVlc3RzIGFz
IFVURi04LCBidXQgV2ViS2l0IGRvZXNuJ3Qgc3BlY2lhbCBjYXNlIHRoZXNlLiAtLT4KQEAgLTM3
LDggKzM3LDggQEAKICAgICAgICAgICAgIGxvZygiRnJhbWUsIGFicy1wYXRoOiAiICsgKGZyYW1l
c1swXS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQgPT0gIlolRkNyaWNoIiA/
ICJQQVNTIiA6ICJGQUlMICgiICsgZnJhbWVzWzBdLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC50
ZXh0Q29udGVudCArICIpIikpOwogICAgICAgICAgICAgbG9nKCJGcmFtZSwgcmVsLXBhdGg6ICIg
KyAoZnJhbWVzWzFdLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudCA9PSAiWiVG
Q3JpY2giID8gIlBBU1MiIDogIkZBSUwgKCIgKyBmcmFtZXNbMF0uZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LnRleHRDb250ZW50ICsgIikiKSk7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2VuY29k
ZS1yZXF1ZXN0LXVybC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvZW5jb2RlLXJlcXVlc3QtdXJsLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZW5jb2RlLXJlcXVlc3Qt
dXJsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAKICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmFwcGVuZENoaWxkKGl0ZW0pOwogICAgIH0KIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKICAgICByZXEub3BlbigiR0VUIiwgIi94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
cHJpbnQtcXVlcnkuY2dpP9Cf0YDQvtCy0LXRgNC60LAiLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2V2ZW50LWxpc3RlbmVyLWdjLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9ldmVudC1s
aXN0ZW5lci1nYy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2V2ZW50LWxpc3RlbmVyLWdjLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDE2ICsyMiwxNiBAQCBmdW5jdGlvbiBwcm9jZXNzU3RhdGVDaGFuZ2UoZSkKICAgICBp
ZiAoZGlkQ29sbGVjdCkKICAgICAgICAgd3JpdGUoIlBBU1M6IGV2ZW50IGhhbmRsZXIgZmlyZWQg
YWZ0ZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLlxuIik7CiAgICAgaWYgKGUudGFyZ2V0LnJlYWR5U3Rh
dGUgPT0gNCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSAKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICAgICAgICAKICAg
ICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9ldmVudC10YXJnZXQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2V2ZW50LXRhcmdldC5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2V2ZW50LXRhcmdldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHA+
VGVzdHMgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTA1MyI+IGJ1ZyAxMTA1MzwvYT4gLSAKIFhNTEh0dHBSZXF1ZXN0IHNob3VsZCBiZSBhbiBF
dmVudFRhcmdldC48L3A+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgIAogICAgIHZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dWwiKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9leGNlcHRpb25zLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9l
eGNlcHRpb25zLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvZXhjZXB0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDgg
KzYsOCBAQAogPHA+VGVzdCB0aGF0IFhNTEh0dHBSZXF1ZXN0IHJhaXNlcyBleGNlcHRpb25zIHdo
ZW4gaXQgc2hvdWxkLjwvcD4KIDxzY3JpcHQ+CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgIHZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dWwiKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9leHRyYS1wYXJhbWV0
ZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9leHRyYS1wYXJhbWV0ZXJzLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZXh0cmEtcGFyYW1ldGVycy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogPHA+VGVzdCB0aGF0IFhNTEh0dHBSZXF1ZXN0IHRv
bGVyYXRlcyBleHRyYSBwYXJhbWV0ZXJzIHRvIGl0cyBtZXRob2RzLjwvcD4KIDxzY3JpcHQ+CiAK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBjb25zb2xlX21lc3NhZ2Vz
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGNvbnNvbGVfbWVzc2FnZXMpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9mYWlsZWQtYXV0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZmFpbGVkLWF1dGguaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9mYWlsZWQtYXV0
aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw5ICsxOCw5IEBAIGZ1bmN0aW9uIGxvZyhuLCBt
ZXNzYWdlKSB7CiB9CiAKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0g
ZWxzZSB7CiAgICAgYWxlcnQoIlBsZWFzZSBjYW5jZWwgYWxsIGF1dGhlbnRpY2F0aW9uIGRpYWxv
Z3MgdGhhdCB3aWxsIGFwcGVhciIpOwogfQpAQCAtNjUsMTMgKzY1LDEzIEBAIGZ1bmN0aW9uIHRl
c3Q0KCkgewogICAgICAgICByLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgIGlmIChyLnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgICAgICAgY2hlY2tSZXN1bHQo
NCwgci5zdGF0dXMpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgfQog
ICAgICAgICB9OwogICAgICAgICByLnNlbmQoKTsKICAgICB9IGNhdGNoIChleCkgewogICAgICAg
ICBsb2coNCwgZXgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9mcmFtZS1sb2FkLWNh
bmNlbGxlZC1hYm9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvZnJhbWUtbG9hZC1jYW5jZWxsZWQtYWJvcnQuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9mcmFtZS1s
b2FkLWNhbmNlbGxlZC1hYm9ydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw5ICsxOSw5IEBA
IG90aGVyIG5vdGlmaWNhdGlvbnMuPC9wPgogICAgIAogICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgp
CiAgICAgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgfQogICAgICAgICBs
b2coIkxvYWRpbmcgc3ViZnJhbWUgdG8gY2FuY2VsIik7CiAgICAgICAgIGZyYW1lZGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZyYW1lZGl2Jyk7CkBAIC0zMyw4ICszMyw4IEBAIG90aGVy
IG5vdGlmaWNhdGlvbnMuPC9wPgogICAgICAgICBsb2coIkJvZHkgb2Ygc3ViZnJhbWUgaXMgbG9h
ZGVkLiAgWE1MSHR0cFJlcXVlc3Qgc2hvdWxkIGJlIGluIHByb2dyZXNzLiAgTnVraW5nIHRoZSBp
ZnJhbWUiKTsKICAgICAgICAgZnJhbWVkaXYuaW5uZXJIVE1MID0gJ1Rlc3QgY29tcGxldGUnOwog
ICAgICAgICBsb2coIklmcmFtZSByZW1vdmVkIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBkdW1wUmVxdWVz
dFN0YXR1cyhyZXEpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvZnJhbWUtdW5sb2FkLWFib3J0LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9mcmFtZS11bmxvYWQtYWJvcnQtY3Jhc2guaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9mcmFtZS11bmxvYWQtYWJvcnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiwx
NyArNiwxNyBAQAogICAgIHZhciBjb25zb2xlTWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ1bCIpOwogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZU1lc3NhZ2Vz
KTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdWJmcmFtZUxvYWRlZCgpCiAgICAgewog
ICAgICAgICB2YXIgZnJhbWVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJhbWVkaXYn
KTsKICAgICAgICAgZnJhbWVEaXYuaW5uZXJIVE1MID0gJ1BBU1NFRCc7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGR1
bXBSZXF1ZXN0U3RhdHVzKHJlcXVlc3QpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2dldC1kYW5nZXJvdXMtaGVhZGVycy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0LWRhbmdlcm91cy1oZWFkZXJz
Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvZ2V0LWRhbmdlcm91cy1oZWFkZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMs
OCArMyw4IEBACiA8cD5UZXN0IHRoYXQgZ2V0UmVzcG9uc2VIZWFkZXIgYW5kIGdldEFsbFJlc3Bv
bnNlSGVhZGVycyBjYW5ub3QgYmUgdXNlZCB0byBnZXQgdGhlIGNvb2tpZSBoZWFkZXIgZmllbGRz
LjwvcD4KIDxwcmUgaWQ9InJlc3VsdCI+RkFJTDogU2NyaXB0IGRpZG4ndCBydW4gb3IgcmFpc2Vk
IGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uLjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKICAgICByZXEu
b3BlbigiUE9TVCIsICJyZXNvdXJjZXMvZ2V0LXNldC1jb29raWUuY2dpIiwgZmFsc2UpOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRBbGxSZXNwb25zZUhl
YWRlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVycy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldEFsbFJlc3BvbnNlSGVhZGVy
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHhoci5vbnJlYWR5c3RhdGVj
aGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBpZiAoL15TZXQtQ29va2llOnxe
U2V0LUNvb2tpZTI6L2ltLnRlc3QoaGVhZGVyKSkKICAgICAgICAgICAgICAgICAgICAgbG9nKCJG
QUlMRUQgIiArIHJTdGF0ZSArCiAiOiAvXlNldC1Db29raWU6fF5TZXQtQ29va2llMjovIG1hdGNo
ZXMuIGdldEFsbFJlc3BvbnNlSGVhZGVycyByZXR1cm5lZDpcbiIgKyBoZWFkZXIpOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIC8vZG8gbm90IHByaW50IGxpc3Qg
Zm9yIGF1dG9tYXRlZCB0ZXN0cyB0byBhdm9pZCBmYWxzZSBmYWlsdXJlcy4KICAgICAgICAgICAg
ICAgICAgICAgbG9nKCJQQVNTRUQgIiArIHJTdGF0ZSArCiAiOiBnZXRBbGxSZXNwb25zZUhlYWRl
cnMgcmV0dXJuZWQgd2hhdCBsb29rcyBsaWtlIGEgY29uZm9ybWluZyBoZWFkZXJsaXN0LiIpOwpA
QCAtNjUsMTQgKzY1LDE0IEBAIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgIGxvZygiRkFJTEVEICIgKyByU3RhdGUgKyAiOiBFWENFUFRJT04gVEhST1dO
OiAiICsgZS5tZXNzYWdlICsgIi4iKTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoKHJTdGF0
ZSA9PSA0KSAmJiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSkKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAoKHJTdGF0ZSA9PSA0KSAm
JiAod2luZG93LnRlc3RSdW5uZXIpKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KICAgICAvLyBUZXN0IGZvciBy
ZWFkeVN0YXRlID0gMAogICAgIHRyeSB7CkBAIC04Niw4ICs4Niw4IEBAIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgIH0gY2F0Y2goZSkgewogICAgICAgICBs
b2coIkZBSUxFRCBvcGVuL3NlbmQ6IEVYQ0VQVElPTiBUSFJPV046ICIgKyBlLm1lc3NhZ2UgKyIu
Iik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0K
IH0KIDwvc2NyaXB0PgpAQCAtOTksNyArOTksNyBAQCBhbmQgPGEgaHJlZj0iaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93CiA8cD5Bc3NlcnRpb246IEludm9raW5nIGdldEFsbFJlc3BvbnNlSGVh
ZGVycyBtZXRob2Qgd2hlbiByZWFkeVN0YXRlID49IDIKIChIRUFERVJTX1JFQ0VJVkVEKSBzaG91
bGQgcmV0dXJuIGEgY29uZm9ybWluZyBsaXN0IG9mIGhlYWRlcnMuPC9wPgogPHNjcmlwdD4KLSAg
ICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyKQogICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+SWYgdGhlIHRlc3QgcGFzc2VzIG9u
ZSBzaG91bGQgc2VlIFwKIGJlbG93IHRoZSBydWxlciB0aGUgdGV4dCBcInBhc3NlZFwiIGluIGFs
bCBjYXBpdGFsIGxldHRlcnMsIDUgdGltZXMsIFwKIGZvbGxvd2VkIGVhY2ggdGltZSBieSBhIHNw
YWNlIGFuZCB0aGUgcmVhZHlTdGF0ZSBudW1iZXIuPC9wPlxuXApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VI
ZWFkZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw3ICs1Miw3IEBAIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgICBlbHNlIC8vc2F2ZWRIZWFkZXIgPT0gaGVhZGVyIGhlcmU7IG5vIG5lZWQgdG8g
cmVwcmludCBoZWFkZXIKICAgICAgICAgICAgICAgICAgICAgbG9nMygiUEFTU0VEIiwgclN0YXRl
LCBoZWFkZXJOYW1lKTsKICAgICAgICAgICAgIGVsc2Ugey8vZmlyc3QgaGVhZGVyIHZhbHVlIHJl
dHJpZXZlZAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogLy9kbyBub3QgcHJpbnQg
dGhlIGhlYWRlcidzIHZhbHVlIGZvciBhdXRvbWF0ZWQgdGVzdHMgdG8gYXZvaWQgZmFsc2UgZmFp
bHVyZXMuCiAgICAgICAgICAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0ZSwgIlJlc3Bv
bnNlSGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0dXJuZWQgYSB2YWx1ZS4iKTsKICAgICAg
ICAgICAgICAgICBlbHNlCkBAIC04MSwxMyArODEsMTMgQEAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5n
ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb2czKCJGQUlMRUQi
LCByU3RhdGUsICJleGNlcHRpb24gdGhyb3duOiAiICsgZS5tZXNzYWdlICsgIi4iKTsKICAgICB9
Ci0gICAgaWYgKChyU3RhdGUgPT0gNCkgJiYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYg
KChyU3RhdGUgPT0gNCkgJiYgKHdpbmRvdy50ZXN0UnVubmVyKSkKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogfQogCiBmdW5jdGlvbiB0ZXN0KCkgewpAQCAtMTAzLDggKzEwMyw4IEBAIGZ1bmN0aW9u
IHRlc3QoKSB7CiAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgIH0gY2F0Y2goZSkgewogICAg
ICAgICBsb2czKCJGQUlMRUQiLCAib3Blbi9zZW5kIiwgImV4Y2VwdGlvbiB0aHJvd246ICIgKyBl
Lm1lc3NhZ2UgKyIuIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpAQCAtMTI2LDcgKzEyNiw3IEBAIGFuZCA8YSBocmVm
PSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3cKIDxsaT4zYi4gVGhlIHBhcmFtZXRlciBpcyAi
Q29udGVudC1UeXBlOiIgKGl0IGlzIG5vdCBhIHZhbGlkIGhlYWRlciBuYW1lKS48L2xpPgogCiA8
c2NyaXB0PgotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5JZiB0aGUgdGVz
dCBwYXNzZXMgb25lIHNob3VsZCBzZWUgXAogYmVsb3cgdGhlIHJ1bGVyIHRoZSB0ZXh0IFwicGFz
c2VkXCIgaW4gYWxsIGNhcGl0YWwgbGV0dGVycywgb25jZSBmb3IgZXZlcnkgcmVhZHkgc3RhdGUg
Jmx0OyAyLCBcCiBmb2xsb3dlZCBlYWNoIHRpbWUgYnkgYSBzcGFjZSBhbmQgdGhlIHJlYWR5U3Rh
dGUgbnVtYmVyIGFuZCA2IHRpbWVzIGZvciBldmVyeSByZWFkeSBzdGF0ZSA+PSAyLjwvcD5cblwK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaGVsbG8td29ybGQu
Y2dpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
aGVsbG8td29ybGQuY2dpCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2hlbGxvLXdvcmxkLmNnaQkod29ya2luZyBjb3B5KQpAQCAtMSw0
ICsxLDQgQEAKICMhL3Vzci9iaW4vcGVybCAtdwogCiBwcmludCAiQ29udGVudC10eXBlOiB0ZXh0
L3BsYWluXG5cbiI7Ci1wcmludCAiSGVsbG8gV29ybGQhIjsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCitwcmludCAiSGVsbG8gV29ybGQhIjsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVu
dC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjMs
OCArMjMsOCBAQCBmdW5jdGlvbiBvblByb2dyZXNzKGUpIHsKICAgICBsb2coIlRhcmdldDogIiAr
IGUudGFyZ2V0KTsKICAgICBsb2coIkN1cnJlbnQgdGFyZ2V0OiAiICsgZS5jdXJyZW50VGFyZ2V0
KTsKICAgICBlLmN1cnJlbnRUYXJnZXQub25wcm9ncmVzcyA9IG51bGw7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIG9uRXJyb3IoZSkgewpAQCAtMzMsOSArMzMs
OSBAQCBmdW5jdGlvbiBvbkVycm9yKGUpIHsKIAogdmFyIHNob3VsZE5vdGlmeSA9IGZhbHNlOwog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgcmVxID0gbmV3
IFhNTEh0dHBSZXF1ZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2luamVjdC1oZWFkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luamVjdC1oZWFkZXIuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmplY3QtaGVhZGVy
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIDxwPlRlc3QgdGhh
dCBzZXRSZXF1ZXN0SGVhZGVyIHByb3Blcmx5IGNoZWNrcyBmb3IgbGluZSBmZWVkcyBpbiBoZWFk
ZXIgdmFsdWVzLjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdCh2
YWwpIHsKICAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbnRlcmFjdGl2ZS1zdGF0ZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaW50ZXJhY3Rp
dmUtc3RhdGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9pbnRlcmFjdGl2ZS1zdGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC02LDkgKzYsOSBAQAogR01BSUw6IFhNTEh0dHBSZXF1ZXN0IGRvZXMgbm90IGNvcnJlY3RseSBy
ZXBvcnQgIkludGVyYWN0aXZlIiBzdGF0ZSBvbiByZWNlaXB0IG9mIGxvYWQgZGF0YS48L3A+CiA8
c2NyaXB0PgogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgib2wiKTsKQEAgLTUxLDggKzUxLDggQEAgR01BSUw6IFhNTEh0dHBS
ZXF1ZXN0IGRvZXMgbm90IGNvcnJlY3RseQogICAgICAgICAgICAgKytjb3VudDsKICAgICAgICAg
ZWxzZSBpZiAocmVxLnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgICAgICAgbG9nKChjb3VudCA+
IDEpID8gIlNVQ0NFU1MiIDogIkZBSUxVUkUgKGNvdW50ID0gIiArIGNvdW50ICsgIikiKTsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICB9CiAgICAgfQogICAgIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9sb2dvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2xvZ291dC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2xvZ291dC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC01LDkgKzUsOSBAQAogPHNwYW4+QXN5bmMgcmVxdWVzdCBzZW50IGJlZm9yZSBs
b2dvdXQ6IDwvc3Bhbj48c3BhbiBpZD0iYXN5bmMiPkZBSUwgLSBUZXN0IG5vdCBydW48L3NwYW4+
PGJyPgogPHNwYW4+TG9nb3V0OiA8L3NwYW4+PHNwYW4gaWQ9ImxvZ291dCI+RkFJTCAtIFRlc3Qg
bm90IHJ1bjwvc3Bhbj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBsb2dpbigpCkBAIC00NSw4ICs0NSw4IEBAIHIub3BlbigiR0VU
IiwgInJlc291cmNlcy9sb2dvdXQvcmVzb3VyY2UKIHIub25sb2FkID0gZnVuY3Rpb24oKSB7CiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFzeW5jIikuaW5uZXJIVE1MID0gci5zdGF0dXMg
PT0gMjAwID8gIlBBU1MiIDogIkZBSUwiOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiByLnNlbmQoIiIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L21ldGhvZHMtYXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L21ldGhvZHMtYXN5bmMuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9tZXRob2RzLWFzeW5j
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5UZXN0cyBmb3IgPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MTIiPiBidWcgMzgx
MjwvYT4gLSAKIEdFVCBhbmQgUE9TVCBzaG91bGQgbm90IGJlIHRoZSBvbmx5IEhUVFAgbWV0aG9k
cyBpbXBsZW1lbnRlZCBpbiBYTUxIdHRwUmVxdWVzdC48L3A+CiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9
CiAgICAgCiAgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJvbCIpOwpAQCAtMTMzLDggKzEzMyw4IEBAIEdFVCBhbmQgUE9TVCBzaG91bGQgbm90IGJlIHRo
ZSBvbmx5IEhUVFAKICAgICAgICAgICAgICByZXEuc2VuZCgiMTIzIik7CiAgICAgICAgICAgIH0g
ZWxzZSBpZiAoYXN5bmNTdGVwID09IDIxKSB7CiAgICAgICAgICAgICAgbG9nKCdTRUFSQ0goIjEy
MyIpOiAnICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5n
ZXRSZXNwb25zZUhlYWRlcigiUkVRTEVOR1RIIikgKyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAi
ICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFUWVBFIikpOwotICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbG9nKCJFcnJvciBsb2FkaW5nIFVSTDogc3Rh
dHVzICIgKyByZXEuc3RhdHVzKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvbWV0aG9kcy1sb3dlci1jYXNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9tZXRob2RzLWxvd2VyLWNhc2UuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9t
ZXRob2RzLWxvd2VyLWNhc2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxw
PlRlc3RzIGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA5OSI+IGJ1ZyA4MDk5PC9hPiAtIAogWE1MSHR0cFJlcXVlc3QgbG93ZXJjYXNlIHBvc3Qg
cmVxdWVzdHMgYnJva2VuLjwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAKICAgICB2YXIg
Y29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CkBAIC01OSw4
ICs1OSw4IEBAIFhNTEh0dHBSZXF1ZXN0IGxvd2VyY2FzZSBwb3N0IHJlcXVlc3RzIGIKICAgICAg
ICAgICAgIHJlcS5zZW5kKCIiKTsKICAgICAgICAgICB9IGVsc2UgaWYgKGFzeW5jU3RlcCA9PSAz
KSB7CiAgICAgICAgICAgICBsb2coJ0RvSXQoIiIpOiAnICsgcmVxLmdldFJlc3BvbnNlSGVhZGVy
KCJSRVFNRVRIT0QiKSArICIoIiArIHJlcS5nZXRSZXNwb25zZUhlYWRlcigiUkVRTEVOR1RIIikg
KyAiIGJ5dGVzKSwgQ29udGVudC1UeXBlOiAiICsgcmVxLmdldFJlc3BvbnNlSGVhZGVyKCJSRVFU
WVBFIikpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvbWV0aG9kcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvbWV0aG9kcy5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L21l
dGhvZHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxwPlRlc3RzIGZvciA8
YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMiI+IGJ1
ZyAzODEyPC9hPiAtIAogR0VUIGFuZCBQT1NUIHNob3VsZCBub3QgYmUgdGhlIG9ubHkgSFRUUCBt
ZXRob2RzIGltcGxlbWVudGVkIGluIFhNTEh0dHBSZXF1ZXN0LjwvcD4KIDxzY3JpcHQ+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoY29uc29sZV9tZXNzYWdlcyk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L25ld2xpbmUtaW4tcmVxdWVzdC11cmkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L25ld2xpbmUtaW4tcmVxdWVzdC11
cmkuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9uZXdsaW5lLWluLXJlcXVlc3QtdXJpLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTMsOCArMyw4IEBAIE5ld2xpbmUgaW4gWE1MSHR0cFJlcXVlc3QgVVJMIGNhbiBiZSB1c2UKIDxw
cmUgaWQ9ImxmIj5MRiBGQUlMOiB0ZXN0IGRpZCBub3QgcnVuPC9wcmU+CiA8cHJlIGlkPSJjciI+
Q1IgRkFJTDogdGVzdCBkaWQgbm90IHJ1bjwvcHJlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogcmVxLm9wZW4oIkdFVCIsICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3ByaW50LWhlYWRlcnMuY2dp
XG4iLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L251bGwtYXV0aC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9udWxsLWF1dGgucGhwCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L251bGwtYXV0aC5waHAJKHdvcmtpbmcgY29weSkK
QEAgLTIsOCArMiw4IEBACiA8cD5ObyBhdXRoIHRva2VucyBzaG91bGQgYmUgc2VudCB3aXRoIHRo
aXMgcmVxdWVzdC48L3A+CiA8cHJlIGlkPSdzeW5jUmVzdWx0Jz4gPC9wcmU+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogcmVxLm9wZW4oJ1BPU1QnLCAn
PD9waHAgZWNobyAnaHR0cDovL2ZvbzpiYXJAJyAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICcv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2VjaG8tYXV0aC5waHAnID8+JywgZmFsc2UsIG51bGws
IG51bGwpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vbmFi
b3J0LWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9vbmFib3J0LWV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25hYm9ydC1ldmVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHA+VGhpcyB0ZXN0IHRoYXQgdGhlIGFib3J0IGV2
ZW50IGlzIGZpcmVkIGZvciBYTUxIdHRwUmVxdWVzdHMgd2hlbiBjYWxsaW5nIHhoci5hYm9ydCgp
PC9wPgogPHByZSBpZD0nY29uc29sZSc+PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMTgsOCAr
MTgsOCBAQAogICAgIGZ1bmN0aW9uIGFib3J0SGFuZGxlcihldnQpCiAgICAgewogICAgICAgICBs
b2coIlBBU1M6IGFib3J0IGV2ZW50IGZpcmVkLiIpOwotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29uZXJyb3It
ZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29uZXJyb3ItZXZlbnQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vbmVycm9yLWV2ZW50Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5UaGlzIHRlc3QgdGhhdCB0aGUgZXJyb3IgZXZlbnQg
aXMgZmlyZWQgZm9yIFhNTEh0dHBSZXF1ZXN0czwvcD4KIDxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJl
PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5j
dGlvbiBsb2cobWVzc2FnZSkKQEAgLTE4LDggKzE4LDggQEAKICAgICBmdW5jdGlvbiBlcnJvckhh
bmRsZXIoZXZ0KQogICAgIHsKICAgICAgICAgbG9nKCJQQVNTOiBlcnJvciBldmVudCBmaXJlZC4i
KTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQog
CiAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9vbmxvYWRlbmQtZXZlbnQtYWZ0ZXItYWJvcnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29ubG9hZGVu
ZC1ldmVudC1hZnRlci1hYm9ydC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29ubG9hZGVuZC1ldmVudC1hZnRlci1hYm9ydC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDkgKzgsOSBAQAogPHA+UEFTUyBzaG91bGQgYXBwZWFy
IGJlbG93OjwvcD4KIDxwIGlkPWNvbnNvbGU+PC9wPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCkBAIC0zNSw4ICszNSw4IEBAIGZ1bmN0aW9uIGxvZ1VuZXhwZWN0ZWRQ
cm9ncmVzc0V2ZW50KGUpIHsKIGZ1bmN0aW9uIGNvbXBsZXRlVGVzdCgpCiB7CiAgICAgbG9nKHJl
c3VsdHMgPT0gZXhwZWN0ZWQgPyAiUEFTUyIgOiAiRkFJTEVEIHJlc3VsdHMgOiAnIiArIHJlc3Vs
dHMgKyAiJywgZXhwZWN0ZWQgOiAnIiArIGV4cGVjdGVkICsgIiciKTsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29ubG9hZGVuZC1ldmVudC1hZnRlci1lcnJvci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25s
b2FkZW5kLWV2ZW50LWFmdGVyLWVycm9yLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25sb2FkZW5kLWV2ZW50LWFmdGVyLWVy
cm9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOSArOCw5IEBACiA8cD5QQVNTIHNob3VsZCBh
cHBlYXIgYmVsb3c6PC9wPgogPHAgaWQ9Y29uc29sZT48L3A+CiA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBm
dW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTM2LDggKzM2LDggQEAgZnVuY3Rpb24gbG9nVW5leHBl
Y3RlZFByb2dyZXNzRXZlbnQoZSkgewogZnVuY3Rpb24gY29tcGxldGVUZXN0KCkKIHsKICAgICBs
b2cocmVzdWx0cyA9PSBleHBlY3RlZCA/ICJQQVNTIiA6ICJGQUlMRUQgcmVzdWx0cyA6ICciICsg
cmVzdWx0cyArICInLCBleHBlY3RlZCA6ICciICsgZXhwZWN0ZWQgKyAiJyIpOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiB0ZXN0KCkKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25sb2FkZW5kLWV2ZW50LWFmdGVyLWxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L29ubG9hZGVuZC1ldmVudC1hZnRlci1sb2FkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25sb2FkZW5kLWV2ZW50LWFmdGVy
LWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAKIDxwPlBBU1Mgc2hvdWxk
IGFwcGVhciBiZWxvdzo8L3A+CiA8cCBpZD1jb25zb2xlPjwvcD4KIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAK
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMzUsOCArMzUsOCBAQCBmdW5jdGlvbiBsb2dVbmV4
cGVjdGVkUHJvZ3Jlc3NFdmVudChlKSB7CiBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoKQogewogICAg
IGxvZyhyZXN1bHRzID09IGV4cGVjdGVkID8gIlBBU1MiIDogIkZBSUxFRCByZXN1bHRzIDogJyIg
KyByZXN1bHRzICsgIicsIGV4cGVjdGVkIDogJyIgKyBleHBlY3RlZCArICInIik7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSAKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25sb2FkZW5kLWV2ZW50LWFmdGVyLXN5
bmMtcmVxdWVzdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L29ubG9hZGVuZC1ldmVudC1hZnRlci1zeW5jLXJlcXVlc3RzLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
b25sb2FkZW5kLWV2ZW50LWFmdGVyLXN5bmMtcmVxdWVzdHMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtOCw5ICs4LDkgQEAKIDxwPlBBU1MgUEFTUyBQQVNTIHNob3VsZCBhcHBlYXIgYmVsb3c6PC9w
PgogPHAgaWQ9Y29uc29sZT48L3A+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBsb2cobWVz
c2FnZSkKQEAgLTM0LDggKzM0LDggQEAgZnVuY3Rpb24gbG9nVW5leHBlY3RlZFByb2dyZXNzRXZl
bnQoZSkgewogZnVuY3Rpb24gY29tcGxldGVUZXN0KGV4cGVjdGVkKQogewogICAgIGxvZyhyZXN1
bHRzID09IGV4cGVjdGVkID8gIlBBU1MiIDogIkZBSUxFRCByZXN1bHRzIDogJyIgKyByZXN1bHRz
ICsgIicsIGV4cGVjdGVkIDogJyIgKyBleHBlY3RlZCArICInIik7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3ROb3JtYWwoKQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vbmxvYWRzdGFydC1ldmVudC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb25sb2Fkc3Rh
cnQtZXZlbnQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9vbmxvYWRzdGFydC1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zLDkgKzMsOSBAQAogPHA+VGhpcyB0ZXN0IHRoYXQgdGhlIGxvYWRzdGFydCBldmVudCBpcyBm
aXJlZCBmb3IgWE1MSHR0cFJlcXVlc3RzPC9wPgogPHByZSBpZD0nY29uc29sZSc+PC9wcmU+CiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKQpAQCAtMjMsOCArMjMsOCBAQAogICAgIGZ1bmN0aW9uIHJlYWR5c3RhdGVj
aGFuZ2VIYW5kbGVyKGV2dCkKICAgICB7CiAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSB4
aHIuRE9ORSkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3Blbi1hc3luYy1vdmVybG9hZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3Blbi1hc3luYy1v
dmVybG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L29wZW4tYXN5bmMtb3ZlcmxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMjUsOCArMjUsOCBAQAogICAgICAgICAgIGxvZygiRkFJTDogIiArIGRlc2NyaXB0aW9uICsg
IiAoZXhwZWN0ZWQ6IiArIGV4cGVjdGVkU3RhdGUgKyAiLCBhY3R1YWw6IiArIHJlcS5yZWFkeVN0
YXRlICsiKSIpOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
cmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgcmVxLm9wZW4oIkdFVCIsICJtZXRob2Rz
LmNnaSIsIHRydWUpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9vcmlnaW4tZXhhY3QtbWF0Y2hpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1leGFjdC1tYXRjaGluZy5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29y
aWdpbi1leGFjdC1tYXRjaGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
PCFET0NUWVBFIGh0bWw+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKIDwvc2NyaXB0PgogPGlmcmFtZSBzdHlsZT0id2lkdGg6IDEw
MCU7IGhlaWdodDogNjAwcHgiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9vcmlnaW4tZXhhY3QtbWF0Y2hpbmctaWZyYW1lLmh0bWwiPjwvaWZyYW1l
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVh
ZGVyLWNyb3NzLW9yaWdpbi1nZXQtYXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2luLWdl
dC1hc3luYy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2luLWdldC1hc3luYy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC02LDE3ICs2LDE3IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7
CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOwogfQogCi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CiB4aHIub3BlbignR0VUJywgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVz
dC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctYWNjZXNzLWNvbnRyb2wtb3Jp
Z2luLWhlYWRlci5jZ2knLCB0cnVlKTsKIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAg
bG9nKHhoci5yZXNwb25zZVRleHQpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQog
eGhyLnNlbmQobnVsbCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1vcmlnaW4tZ2V0LXN5bmMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdp
bi1oZWFkZXItY3Jvc3Mtb3JpZ2luLWdldC1zeW5jLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9z
cy1vcmlnaW4tZ2V0LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAgZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7
CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiB4
aHIub3BlbignR0VUJywgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctYWNjZXNzLWNvbnRyb2wtb3JpZ2luLWhl
YWRlci5jZ2knLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29yaWdpbi1oZWFkZXItY3Jvc3Mtb3JpZ2luLXBvc3QtYXN5bmMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi1oZWFk
ZXItY3Jvc3Mtb3JpZ2luLXBvc3QtYXN5bmMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9y
aWdpbi1wb3N0LWFzeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsMTcgKzYsMTcgQEAgZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7
CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKIHhoci5vcGVuKCdQT1NUJywgJ2h0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxs
b3ctYWNjZXNzLWNvbnRyb2wtb3JpZ2luLWhlYWRlci5jZ2knLCB0cnVlKTsKIHhoci5vbmxvYWQg
PSBmdW5jdGlvbiAoKSB7CiAgICAgbG9nKHhoci5yZXNwb25zZVRleHQpOwotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogfQogeGhyLnNlbmQobnVsbCk7CiA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1jcm9zcy1v
cmlnaW4tcG9zdC1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1wb3N0LXN5bmMuaHRt
bAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9vcmlnaW4taGVhZGVyLWNyb3NzLW9yaWdpbi1wb3N0LXN5bmMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNiw4ICs2LDggQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiB4aHIub3BlbignUE9TVCcsICdodHRwOi8vbG9jYWxob3N0
OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93
LWFjY2Vzcy1jb250cm9sLW9yaWdpbi1oZWFkZXIuY2dpJywgZmFsc2UpOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLXNhbWUtb3JpZ2lu
LWdldC1hc3luYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1nZXQtYXN5bmMuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9v
cmlnaW4taGVhZGVyLXNhbWUtb3JpZ2luLWdldC1hc3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC02LDE3ICs2LDE3IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtZXNzYWdlICsgJ1xuJykpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiB4aHIub3BlbignR0VU
JywgJ3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy1hY2Nlc3MtY29udHJvbC1v
cmlnaW4taGVhZGVyLmNnaScsIHRydWUpOwogeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAg
ICBsb2coeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9
CiB4aHIuc2VuZChudWxsKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLXNhbWUtb3JpZ2luLWdldC1zeW5jLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmln
aW4taGVhZGVyLXNhbWUtb3JpZ2luLWdldC1zeW5jLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1l
LW9yaWdpbi1nZXQtc3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQCBmdW5j
dGlvbiBsb2cobWVzc2FnZSkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
JykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsK
IH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKIHho
ci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LWFjY2Vz
cy1jb250cm9sLW9yaWdpbi1oZWFkZXIuY2dpJywgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4taGVhZGVyLXNhbWUtb3JpZ2luLXBvc3Qt
YXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29yaWdpbi1oZWFkZXItc2FtZS1vcmlnaW4tcG9zdC1hc3luYy5odG1sCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdp
bi1oZWFkZXItc2FtZS1vcmlnaW4tcG9zdC1hc3luYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02
LDE3ICs2LDE3IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlICsgJ1xuJykpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogfQogCiB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiB4aHIub3BlbignUE9TVCcs
ICdyZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctYWNjZXNzLWNvbnRyb2wtb3Jp
Z2luLWhlYWRlci5jZ2knLCB0cnVlKTsKIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAg
bG9nKHhoci5yZXNwb25zZVRleHQpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQog
eGhyLnNlbmQobnVsbCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1lLW9yaWdpbi1wb3N0LXN5bmMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdp
bi1oZWFkZXItc2FtZS1vcmlnaW4tcG9zdC1zeW5jLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWhlYWRlci1zYW1l
LW9yaWdpbi1wb3N0LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAgZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7
CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiB4
aHIub3BlbignUE9TVCcsICdyZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3ctYWNj
ZXNzLWNvbnRyb2wtb3JpZ2luLWhlYWRlci5jZ2knLCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi13aGl0ZWxpc3RpbmctYWxsLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmln
aW4td2hpdGVsaXN0aW5nLWFsbC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi13aGl0ZWxpc3RpbmctYWxsLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIAogPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+CiA8c2NyaXB0PgotbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIsICJodHRw
IiwgIiIsIHRydWUpOwotbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIsICJodHRwIiwgIiIsIHRydWUpOwordGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK3Rlc3RS
dW5uZXIuYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIsICJodHRwIiwgIiIsIHRydWUpOwordGVzdFJ1bm5lci5hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeSgiaHR0cDovL2xvY2FsaG9zdDo4MDAwIiwgImh0dHAiLCAiIiwgdHJ1ZSk7CiAKIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQogewpAQCAtNDYsNyArNDYsNyBAQCBmdW5jdGlvbiB0ZXN0SVBB
ZGRyZXNzKCkKICAgICBpZnJhbWUuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMvb3JpZ2luLXdoaXRlbGlzdGluZy1pcC1hZGRyZXNzLXRlc3QuaHRt
bCI7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihlKSB7
CiAgICAgICAgIGlmIChlLmRhdGEgPT0gIkRPTkUiKQotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxvZyhlLmRhdGEpOwogICAgIH0sIGZhbHNl
KTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdo
aXRlbGlzdGluZy1leGFjdC1tYXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdoaXRlbGlzdGluZy1leGFjdC1tYXRjaC5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29yaWdpbi13aGl0ZWxpc3RpbmctZXhhY3QtbWF0Y2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMiw5ICsyLDkgQEAKIAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0Pgot
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIsICJodHRwIiwgImxvY2FsaG9zdCIs
IGZhbHNlKTsKK3Rlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwordGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Cit0ZXN0UnVubmVyLmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiLCAiaHR0cCIsICJsb2NhbGhvc3QiLCBmYWxzZSk7CiAKIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKQogewpAQCAtNTMsNyArNTMsNyBAQCBmdW5jdGlvbiBuZXh0VGVzdCgpCiAg
ICAgaWYgKGN1cnJlbnRUZXN0IDwgdGVzdHMubGVuZ3RoKQogICAgICAgICB0ZXN0LmFwcGx5KG51
bGwsIHRlc3RzW2N1cnJlbnRUZXN0KytdKTsKICAgICBlbHNlCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIG5leHRUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29yaWdpbi13aGl0ZWxpc3RpbmctaHR0cHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L29yaWdpbi13aGl0ZWxpc3RpbmctaHR0
cHMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9vcmlnaW4td2hpdGVsaXN0aW5nLWh0dHBzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOSArMiw5IEBACiAKIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLWxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLWxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLWxheW91dFRlc3RDb250cm9sbGVyLmFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAiaHR0cHMiLCAibG9jYWxob3N0Iiwg
ZmFsc2UpOwordGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKK3Rlc3RSdW5uZXIuYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCIsICJodHRwcyIsICJsb2NhbGhvc3QiLCBmYWxzZSk7CiAKIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKQogewpAQCAtNTAsNyArNTAsNyBAQCBmdW5jdGlvbiBuZXh0VGVzdCgpCiAg
ICAgaWYgKGN1cnJlbnRUZXN0IDwgdGVzdHMubGVuZ3RoKQogICAgICAgICB0ZXN0LmFwcGx5KG51
bGwsIHRlc3RzW2N1cnJlbnRUZXN0KytdKTsKICAgICBlbHNlCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIG5leHRUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29yaWdpbi13aGl0ZWxpc3RpbmctaXAtYWRkcmVzc2VzLXdpdGgtc3ViZG9tYWlucy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
b3JpZ2luLXdoaXRlbGlzdGluZy1pcC1hZGRyZXNzZXMtd2l0aC1zdWJkb21haW5zLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
b3JpZ2luLXdoaXRlbGlzdGluZy1pcC1hZGRyZXNzZXMtd2l0aC1zdWJkb21haW5zLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8cD5TcGVjaWZ5aW5nIHRoYXQgYW4gSVAgYWRk
cmVzcyBzaG91bGQgbWF0Y2ggc3ViZG9tYWlucyBkb2Vzbid0IG1ha2Ugc2Vuc2UuIFRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcuPC9wPgogPHByZSBpZD0iY29u
c29sZSI+PC9wcmU+CiA8c2NyaXB0PgotbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotbGF5b3V0VGVzdENvbnRy
b2xsZXIuYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MCIsICJodHRwIiwgIiouMC4wLjEiLCB0cnVlKTsKK3Rlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit0ZXN0UnVubmVyLmFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KCJodHRwOi8vbG9jYWxob3N0OjgwMDAiLCAiaHR0cCIsICIqLjAuMC4xIiwg
dHJ1ZSk7CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogewpAQCAtMTUsNyArMTUsNyBAQCBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CiBpZnJhbWUuc3JjID0gImh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvb3JpZ2luLXdoaXRlbGlzdGluZy1p
cC1hZGRyZXNzLXRlc3QuaHRtbCI7CiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IGZ1bmN0aW9uKGUpIHsKICAgICBpZiAoZS5kYXRhID09ICJET05FIikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICBlbHNlCiAgICAgICAgIGxvZyhlLmRhdGEpOwogfSwgZmFsc2UpOwpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4td2hpdGVsaXN0aW5n
LWlwLWFkZHJlc3Nlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdoaXRlbGlzdGluZy1pcC1hZGRyZXNzZXMuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9v
cmlnaW4td2hpdGVsaXN0aW5nLWlwLWFkZHJlc3Nlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDkgKzEsOSBAQAogPHA+VGVzdHMgb3JpZ2luIHdoaXRlbGlzdGluZyB3aXRoIElQIGFkZHJlc3Nl
cy48L3A+CiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQ+Ci1sYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci1sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Ci1sYXlvdXRUZXN0Q29udHJvbGxlci5hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgi
aHR0cDovL2xvY2FsaG9zdDo4MDAwIiwgImh0dHAiLCAiMTI3LjAuMC4xIiwgZmFsc2UpOwordGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK3Rlc3RS
dW5uZXIuYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MCIsICJodHRwIiwgIjEyNy4wLjAuMSIsIGZhbHNlKTsKIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
CiB7CkBAIC0xNSw3ICsxNSw3IEBAIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsK
IGlmcmFtZS5zcmMgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9vcmlnaW4td2hpdGVsaXN0aW5nLWlwLWFkZHJlc3MtdGVzdC5odG1sIjsKIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZSkgewogICAgIGlmIChlLmRhdGEg
PT0gIkRPTkUiKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIGVsc2UKICAgICAgICAgbG9nKGUu
ZGF0YSk7CiB9LCBmYWxzZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L29yaWdpbi13aGl0ZWxpc3RpbmctcmVtb3ZhbC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdoaXRlbGlzdGluZy1y
ZW1vdmFsLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdoaXRlbGlzdGluZy1yZW1vdmFsLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIsNyArMiw3IEBACiAKIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlw
dD4KLWxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK3Rlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIHsKQEAgLTI5LDExICsyOSwxMSBAQCBm
dW5jdGlvbiB0ZXN0KG9yaWdpbiwgcHJvdG9jb2wsIGhvc3QsIHN1CiAKICAgICBsb2FkVVJMKHVy
bCwgZmFsc2UpOwogCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkob3JpZ2luLCBwcm90b2NvbC50b0xvd2VyQ2FzZSgpLCBob3N0LnRvTG93ZXJD
YXNlKCksIHN1YmRvbWFpbnMpOworICAgIHRlc3RSdW5uZXIuYWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkob3JpZ2luLCBwcm90b2NvbC50b0xvd2VyQ2FzZSgpLCBob3N0LnRvTG93ZXJDYXNl
KCksIHN1YmRvbWFpbnMpOwogCiAgICAgbG9hZFVSTCh1cmwsIHRydWUpOwogCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIucmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkob3JpZ2luLCBw
cm90b2NvbCwgaG9zdCwgc3ViZG9tYWlucyk7CisgICAgdGVzdFJ1bm5lci5yZW1vdmVPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShvcmlnaW4sIHByb3RvY29sLCBob3N0LCBzdWJkb21haW5zKTsK
IAogICAgIGxvYWRVUkwodXJsLCBmYWxzZSk7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdoaXRlbGlzdGluZy1zdWJkb21haW5zLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4t
d2hpdGVsaXN0aW5nLXN1YmRvbWFpbnMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9vcmlnaW4td2hpdGVsaXN0aW5nLXN1YmRv
bWFpbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIAogPHByZSBpZD0iY29u
c29sZSI+PC9wcmU+CiA8c2NyaXB0PgotbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotbGF5b3V0VGVzdENvbnRy
b2xsZXIuYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIsICJodHRwIiwgImxvY2FsaG9zdCIsIHRydWUpOwordGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Cit0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK3Rlc3RSdW5uZXIuYWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIsICJodHRwIiwgImxvY2FsaG9z
dCIsIHRydWUpOwogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIHsKQEAgLTUyLDcgKzUyLDcgQEAg
ZnVuY3Rpb24gbmV4dFRlc3QoKQogICAgIGlmIChjdXJyZW50VGVzdCA8IHRlc3RzLmxlbmd0aCkK
ICAgICAgICAgdGVzdC5hcHBseShudWxsLCB0ZXN0c1tjdXJyZW50VGVzdCsrXSk7CiAgICAgZWxz
ZQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBuZXh0VGVzdCgpOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9wb3N0LWNvbnRlbnQtdHlwZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcG9zdC1jb250
ZW50LXR5cGUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9wb3N0LWNvbnRlbnQtdHlwZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC00LDggKzQsOCBAQAogLSBwb3N0aW5nIGRhdGEgdmlhIFhNTEh0dHBSZXF1ZXN0IGRvZXNuJ3Qg
d29yayAod3JvbmcgQ29udGVudC1UeXBlKS48L3A+CiA8cD5TaG91bGQgYmUgYXBwbGljYXRpb24v
eG1sOjwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBv
YmpYbWxIdHRwID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogICAgIG9ialhtbEh0dHAub3BlbigiUE9T
VCIsICJwcmludC1jb250ZW50LXR5cGUuY2dpIiwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9wb3N0LXdpdGgtYm91bmRhcnkuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Bvc3Qtd2l0aC1i
b3VuZGFyeS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Bvc3Qtd2l0aC1ib3VuZGFyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zLDggKzMsOCBAQAogUkVHUkVTU0lPTiAocjU3NTQ0KTogWE1MSHR0cFJlcXVlc3QgUE9TVGVk
IG11bHRpcGFydC9mb3JtLWRhdGEgd3JvbmdmdWxseSBnZXRzIGEgY2hhcnNldCBhcHBlbmRlZC48
L3A+CiA8cD5UaGVyZSBzaG91bGQgYmUgbm8gY2hhcnNldCBhZGRlZCwgYW5kIG1vc3QgaW1wb3J0
YW50bHksIGl0IHNob3VsZG4ndCBiZSBhcHBlbmRlZCB0byB0aGUgZW5kLjwvcD4KIDxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogdmFyIGJvdW5kYXJ5ID0gIi0tLS1NSVNGb3JtQm91bmRhcnlNVENj
SDFwdGhoWVBZRXBWIjsKIHZhciBjb250ZW50VHlwZSA9ICJtdWx0aXBhcnQvZm9ybS1kYXRhOyBi
b3VuZGFyeT0iICsgYm91bmRhcnk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3JhbmdlLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JhbmdlLXRlc3QuaHRtbAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yYW5nZS10ZXN0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8Ym9keT4KIDxwPlRlc3QgUmFuZ2Ugc3Vw
cG9ydCBpbiBYTUxIdHRwUmVxdWVzdDwvcD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIHZh
ciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKQEAgLTgw
LDggKzgwLDggQEAKICAgICAgICAgLy8gTmV4dCB0ZXN0IHcvIGEgcXVlcnkgcGFyYW1ldGVyIGFw
cGVuZGVkIHNvIHRoYXQgZWFjaCBYSFIKICAgICAgICAgLy8gaGFzIGEgdW5pcXVlIFVSTC4KICAg
ICAgICAgcnVuUmFuZ2VUZXN0KHRydWUsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAKICAgICAgICAgfSk7
CiAgICAgfSk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
LWxvZ2luLWFzeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZS1sb2dpbi1hc3luYy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlLWxvZ2luLWFzeW5jLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTUsOSArNSw5IEBACiA8c3Bhbj5SZS1sb2dpbjogPC9zcGFuPjxz
cGFuIGlkPSJyZWxvZ2luIj5GQUlMIC0gVGVzdCBub3QgcnVuPC9zcGFuPjxicj4KIDxzcGFuPk5l
dyBkZWZhdWx0OiA8L3NwYW4+PHNwYW4gaWQ9Im5ld2RlZmF1bHQiPkZBSUwgLSBUZXN0IG5vdCBy
dW48L3NwYW4+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKQEAgLTUyLDggKzUyLDggQEAgZnVu
Y3Rpb24gZjQoKQogICAgIHhoci5zZW5kKCIiKTsKICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24o
KSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXdkZWZhdWx0IikuaW5uZXJI
VE1MID0geGhyLnJlc3BvbnNlVGV4dCA9PSAiVXNlcjogdXNlcjIsIHBhc3N3b3JkOiBwYXNzLiIg
PyAiUEFTUyIgOiAiRkFJTCI7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9yZS1sb2dpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvcmUtbG9naW4uaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZS1sb2dpbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC01LDggKzUsOCBAQAogPHNwYW4+UmUtbG9naW46IDwvc3Bhbj48c3BhbiBpZD0i
cmVsb2dpbiI+RkFJTCAtIFRlc3Qgbm90IHJ1bjwvc3Bhbj48YnI+CiA8c3Bhbj5OZXcgZGVmYXVs
dDogPC9zcGFuPjxzcGFuIGlkPSJuZXdkZWZhdWx0Ij5GQUlMIC0gVGVzdCBub3QgcnVuPC9zcGFu
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
OwogLy8gIj9sb2dpbjEiIGlzIG9ubHkgaGVyZSBmb3IgZWFzZSBvZiBkZWJ1Z2dpbmc7IGl0IGRv
ZXNuJ3QgYWZmZWN0IGJlaGF2aW9yLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9yZWFkeXN0YXRlY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZWFkeXN0YXRlY2hhbmdlLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVh
ZHlzdGF0ZWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogWE1MSHR0
cFJlcXVlc3Qgc2hvdWxkIGRpc3BhdGNoIHJlYWR5c3RhdGVjaGFuZ2UgZXZlbnQuPC9wPgogPHA+
SWYgdGhpcyBwYXNzZXMgeW91IHNob3VsZCBzZWUgYWxlcnRzIGZvciBvbnJlYWR5c3RhdGVjaGFu
Z2UgYW5kIGZvciBhIHJlYWR5c3RhdGVjaGFuZ2UgbGlzdGVuZXIuPC9wPgogPHNjcmlwdD4KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9uIGNhbGxlZDEoZXZ0KSB7
CiAgICAgICAgIGFsZXJ0KCJvbnJlYWR5c3RhdGVjaGFuZ2UgY2FsbGVkIik7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi0y
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9yZWRpcmVjdC1jcm9zcy1vcmlnaW4tMi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi0y
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5UZXN0IHRoYXQgYSBjcm9z
cy1vcmlnaW4gcmVkaXJlY3QgdG8gYSBzZXJ2ZXIgdGhhdCByZXNwb25kcyBpcyBpbmRpc3Rpbmd1
aXNoYWJsZSBmcm9tIG9uZSB0aGF0IGRvZXMgbm90LiBTaG91bGQgc2F5IFBBU1M6PC9wPgogPHBy
ZSBpZD0nY29uc29sZSc+PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtNTEsOCArNTEsOCBAQAog
ICAgICAgICAgICAgbG9nKCJOb24tZXhpc3RlbnQgc2VydmVyOiIpOwogICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKz0gbG9nTWlzc2luZzsK
ICAgICAgICAgfQotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9CiAKICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi1wb3N0LXN5
bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi1wb3N0LXN5bmMuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZWRpcmVjdC1jcm9z
cy1vcmlnaW4tcG9zdC1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8
cD5UZXN0IHRoYXQgYSBjcm9zcy1vcmlnaW4gcmVkaXJlY3QgdG8gYSBzZXJ2ZXIgdGhhdCByZXNw
b25kcyBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIG9uZSB0aGF0IGRvZXMgbm90LiBTaG91bGQg
c2F5IFBBU1M6PC9wPgogPHByZSBpZD0nY29uc29sZSc+PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5j
dGlvbiBsb2cobWVzc2FnZSkKICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi1wb3N0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZWRpcmVjdC1jcm9zcy1v
cmlnaW4tcG9zdC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi1wb3N0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5UZXN0IHRoYXQgYSBjcm9zcy1vcmlnaW4gcmVk
aXJlY3QgdG8gYSBzZXJ2ZXIgdGhhdCByZXNwb25kcyBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9t
IG9uZSB0aGF0IGRvZXMgbm90LiBTaG91bGQgc2F5IFBBU1M6PC9wPgogPHByZSBpZD0nY29uc29s
ZSc+PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtNTYsOCArNTYsOCBAQAogICAgICAgICAgICAg
bG9nKCJOb24tZXhpc3RlbnQgc2VydmVyOiIpOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKz0gbG9nTWlzc2luZzsKICAgICAgICAgfQot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAg
ICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi1zeW5jLWRvdWJsZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVkaXJl
Y3QtY3Jvc3Mtb3JpZ2luLXN5bmMtZG91YmxlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVkaXJlY3QtY3Jvc3Mtb3JpZ2lu
LXN5bmMtZG91YmxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8cD5UZXN0
IHRoYXQgYSBjcm9zcy1vcmlnaW4gY2hhaW4gb2YgcmVkaXJlY3RzIHRvIGEgc2VydmVyIHRoYXQg
cmVzcG9uZHMgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBvbmUgdGhhdCBkb2VzIG5vdC4gU2hv
dWxkIHNheSBQQVNTOjwvcD4KIDxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgogPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9yZWRpcmVjdC1jcm9zcy1vcmlnaW4tc3luYy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVkaXJlY3QtY3Jv
c3Mtb3JpZ2luLXN5bmMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZWRpcmVjdC1jcm9zcy1vcmlnaW4tc3luYy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHA+VGVzdCB0aGF0IGEgY3Jvc3Mtb3JpZ2lu
IHJlZGlyZWN0IHRvIGEgc2VydmVyIHRoYXQgcmVzcG9uZHMgaXMgaW5kaXN0aW5ndWlzaGFibGUg
ZnJvbSBvbmUgdGhhdCBkb2VzIG5vdC4gU2hvdWxkIHNheSBQQVNTOjwvcD4KIDxwcmUgaWQ9J2Nv
bnNvbGUnPjwvcHJlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgewpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZWRpcmVjdC1jcm9z
cy1vcmlnaW4tdHJpcG1pbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi10cmlwbWluZS5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi10cmlwbWluZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDkgKzEsOSBAQAogPHA+VGVzdCB0aGF0IGEgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0IGRvZXMgbm90
IHJlc3VsdCBpbiBhIG5vbi1zaW1wbGUgcmVxdWVzdCBiZWluZyBzZW50IHRvIHRoZSB0YXJnZXQu
PC9wPgogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC05Miw4
ICs5Miw4IEBAIGZ1bmN0aW9uIGRvbmUoKQogICAgIHJlc2V0VHJpcG1pbmUoKTsKICAgICBsb2co
IkRPTkUiKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiB0ZXN0MSgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZWRpcmVjdC1jcm9z
cy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlZGlyZWN0LWNyb3NzLW9y
aWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHA+VGVzdCB0aGF0IGEg
Y3Jvc3Mtb3JpZ2luIHJlZGlyZWN0IHRvIGEgc2VydmVyIHRoYXQgcmVzcG9uZHMgaXMgaW5kaXN0
aW5ndWlzaGFibGUgZnJvbSBvbmUgdGhhdCBkb2VzIG5vdC4gU2hvdWxkIHNheSBQQVNTOjwvcD4K
IDxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTUxLDggKzUxLDgg
QEAKICAgICAgICAgICAgIGxvZygiTm9uLWV4aXN0ZW50IHNlcnZlcjoiKTsKICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICs9IGxvZ01pc3Np
bmc7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgfQogCiAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZWZlcmVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZWZlcmVyLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
cmVmZXJlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDkgKzYsOSBAQCBSRUdSRVNTSU9OOiBO
byBodHRwIHJlZmVyZXIgaGVhZGVyIHNlbnQgCiA8ZGl2IGlkPWFzeW5jPmFzeW5jOiA8L2Rpdj4K
IAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiByZXEgPSBuZXcg
WE1MSHR0cFJlcXVlc3Q7CkBAIC0yOSw4ICsyOSw4IEBAIGZ1bmN0aW9uIHByb2Nlc3NTdGF0ZUNo
YW5nZSgpIHsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhc3luYyIpLmZpcnN0Q2hp
bGQuZGF0YSArPSAiT0siOwogICAgIGVsc2UKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJhc3luYyIpLmZpcnN0Q2hpbGQuZGF0YSArPSByZXEucmVzcG9uc2VUZXh0OwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZW1lbWJlci1iYWQtcGFzc3dvcmQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlbWVtYmVyLWJhZC1wYXNzd29y
ZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3JlbWVtYmVyLWJhZC1wYXNzd29yZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MSw5ICsxMSw5IEBACiA8YnI+CiA8YnV0dG9uIG9uY2xpY2s9InN0YXR1cygpIj5TdGF0dXM8L2J1
dHRvbj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCkKIH0KIAog
ZnVuY3Rpb24gc2VuZFdpdGhDcmVkZW50aWFscyhuZXh0KQpAQCAtNjEsOCArNjEsOCBAQCBzZW5k
V2l0aENyZWRlbnRpYWxzKGZ1bmN0aW9uKCkgewogc2VuZFdpdGhvdXRDcmVkZW50aWFscyhmdW5j
dGlvbigpIHsKIHZhciBzID0gc3RhdHVzKCk7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJIVE1MID0gKHMgPT0gMiA/ICJQQVNTIiA6ICgiRkFJTDogIiArIHMpKTsKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfSl9KTsKIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNv
ZGluZzIuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw4ICs2OSw4IEBAIFhNTEh0dHBSZXF1ZXN0IHNob3VsZCBmb3JjZSB0byBzZW5kIGNvbnQKICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQ0IikuZmlyc3RDaGlsZC5k
YXRhICs9ICIgRkFJTFVSRTogJyIgKyByZXEucmVzcG9uc2VUZXh0ICsgIiciOwogICAgIH0KIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdGVzdDEoKTsKICAgICB0ZXN0Migp
OwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWVu
Y29kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9yZXF1ZXN0LWVuY29kaW5nLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVxdWVzdC1lbmNvZGluZy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQCBYTUxIdHRwUmVxdWVzdCBzaG91bGRuJ3QgaG9u
b3IgYSBjaGFyc2V0CiA8ZGl2IGlkPXJlc3VsdD5GQUlMOiBzY3JpcHQgZGlkbid0IHJ1biB0byBj
b21wbGV0aW9uLjwvZGl2PgogPHNjcmlwdD4KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiAgICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogICAgIHJlcS5vcGVuKCJQT1NUIiwg
InJlc291cmNlcy9wb3N0LWVjaG8tYXMtdXRmLTguY2dpIiwgZmFsc2UpOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXF1ZXN0LWZyb20tcG9wdXAuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlcXVl
c3QtZnJvbS1wb3B1cC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3JlcXVlc3QtZnJvbS1wb3B1cC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0zLDEwICszLDEwIEBACiBYTUxIdHRwUmVxdWVzdCBkb2Vzbid0IHdvcmsgaW4gYSBK
YXZhU2NyaXB0LWNyZWF0ZWQgd2luZG93LjwvcD4KIDxwIGlkPXJlc3VsdD5GQUlMPC9wPgogPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3Mo
KTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogd2luUmVmPXdpbmRvdy5v
cGVuKCk7CkBAIC0xOCw3ICsxOCw3IEBAIHdpblJlZi5kb2N1bWVudC53cml0ZWxuKCJ2YXIgcmVx
ID0gbmV3IFgKIHdpblJlZi5kb2N1bWVudC53cml0ZWxuKCJyZXEub25yZWFkeXN0YXRlY2hhbmdl
ID0gcmVzdWx0OyIpOwogd2luUmVmLmRvY3VtZW50LndyaXRlbG4oInJlcS5vcGVuKCdHRVQnLCAn
cmVxdWVzdC1mcm9tLXBvcHVwLmh0bWwnLCB0cnVlKTsiKTsKIHdpblJlZi5kb2N1bWVudC53cml0
ZWxuKCJyZXEuc2VuZChudWxsKTsiKTsKLXdpblJlZi5kb2N1bWVudC53cml0ZWxuKCJmdW5jdGlv
biByZXN1bHQoKSB7IGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0KSB7IG9wZW5lci5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MPSdTVUNDRVNTJzsgaWYgKG9wZW5lci5s
YXlvdXRUZXN0Q29udHJvbGxlcikgb3BlbmVyLmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsgd2luZG93LmNsb3NlKCk7IH0gfSIpOword2luUmVmLmRvY3VtZW50LndyaXRlbG4oImZ1
bmN0aW9uIHJlc3VsdCgpIHsgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQpIHsgb3BlbmVyLmRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUw9J1NVQ0NFU1MnOyBpZiAob3Bl
bmVyLnRlc3RSdW5uZXIpIG9wZW5lci50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgd2luZG93LmNs
b3NlKCk7IH0gfSIpOwogd2luUmVmLmRvY3VtZW50LndyaXRlbG4oIjxcL3NjcmlwdD48XC9ib2R5
PjxcL2h0bWw+Iik7CiB3aW5SZWYuZG9jdW1lbnQuY2xvc2UoKTsKIDwvc2NyaXB0PjwvYm9keT48
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc3Bv
bnNlLWJsb2Itc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzcG9uc2UtYmxvYi1zaXplLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzcG9uc2UtYmxvYi1z
aXplLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5UZXN0IEJsb2Iuc2l6
ZSBvZiByZXNwb25zZSBibG9iIHJlY2VpdmVkIGZvciBYTUxIdHRwUmVxdWVzdDwvcD4KIDxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyh0ZXh0KQpAQCAtMjYsOCArMjYsOCBAQCByZXEu
b25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgaWYgKHJlcS5yZWFkeVN0YXRl
ID09IDQpIHsKICAgICAgICAgdGVzdCgyMDAsIHJlcS5zdGF0dXMpOwogICAgICAgICB0ZXN0KDEw
Mzc0NiwgcmVxLnJlc3BvbnNlLnNpemUpCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0KIH07CiByZXEuc2VuZChudWxsKTsKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzcG9uc2UtZW5jb2RpbmcuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc3BvbnNl
LWVuY29kaW5nLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvcmVzcG9uc2UtZW5jb2RpbmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNyw5ICs3LDkgQEAKIC0gY29ycmVjdGx5IGRldGVybWluZSB0aGUgZW5jb2Rpbmcgb2YgWE1M
SHR0cFJlcXVlc3QgcmVzcG9uc2VzLjwvcD4KIDxzY3JpcHQ+CiAKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAg
dmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwpAQCAt
MTE5LDggKzExOSw4IEBACiAgICAgICAgICAgICAgZ2V0KCdyZXNvdXJjZXMvdXRmLTgtbm8tY2hh
cnNldC5odG1sJywgdHJ1ZSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXN5bmNTdGVwID09IDEx
KSB7CiAgICAgICAgICAgICAgbG9nKCJBc3luYzogSFRNTCwgVVRGLTggYXMgZGVmYXVsdDogIiAr
IHJlcS5yZXNwb25zZVRleHQucmVwbGFjZSgvXHMvZywgIiIpLnJlcGxhY2UoLy4qPGJvZHk+KC4q
KTxcL2JvZHk+LiovLCAiJDEiKSk7Ci0gICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgbG9nKCJFcnJvciBsb2FkaW5nIFVSTDogc3RhdHVzICIgKyByZXEu
c3RhdHVzKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2Vu
ZC1hcnJheS1idWZmZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3NlbmQtYXJyYXktYnVmZmVyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2VuZC1hcnJheS1idWZm
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5PgogVGVzdHMgc2Vu
ZGluZyBhbiBhcnJheSBidWZmZXIuCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBjb25z
b2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNzYWdlcyk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQuaHRtbAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9zZW5kLW9uLWFib3J0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiAgICAg
IEFTU0VSVChtX3RhYmxlKSB3aGVuIHhoci5vbmFib3J0IGNyZWF0ZXMgYW5vdGhlciB4aHIgb3Ig
Y2FsbHMgc2V0VGltZW91dAogLS0+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gYWJvcnRIYW5kbGVyKCkKQEAgLTI0LDUgKzI0LDUg
QEAgeGhyLm9uYWJvcnQgPSBhYm9ydEhhbmRsZXI7CiB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0g
b25yZWFkeXN0YXRlY2hhbmdlSGFuZGxlcjsKIHhoci5vcGVuKCJHRVQiLCAiZm9vLnR4dCIsIHRy
dWUpOyAKIHhoci5zZW5kKG51bGwpOwotbG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8
c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTwvc2NyIiArICJpcHQ+UEFTUzogTm8gYXNzZXJ0aW9uIGZhaWx1cmUu
IjsKK2xvY2F0aW9uLmhyZWYgPSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5pZiAod2luZG93LnRl
c3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpPC9zY3IiICsgImlwdD5QQVNTOiBObyBh
c3NlcnRpb24gZmFpbHVyZS4iOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtdW5kZWZpbmVkLWFuZC1udWxsLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZW5kLXVuZGVmaW5l
ZC1hbmQtbnVsbC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtdW5kZWZpbmVkLWFuZC1udWxsLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIFRlc3RzIHRoYXQgc2VuZGluZyB1bmRlZmlu
ZWQgb3IgbnVsbCByZXN1bHRzIGluIGFuIGVtcHR5IHJlcXVlc3QgYm9keS4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ1bCIpOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2VyaWFsaXplLWRv
Y3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9zZXJpYWxpemUtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXJpYWxpemUtZG9jdW1lbnQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgIFhNTEh0dHBSZXF1ZXN0IGRvZXMg
bm90IHByb3Blcmx5IGVuY29kZSAmYW1wOyBhbmQgJmx0OyBpbiBvdXRnb2luZyBtZXNzYWdlcy48
L3A+CiAgICA8L2JvZHk+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgLy8gQ3JlYXRlIGEg
bmV3IGRvY3VtZW50CiAgICAgICAgdmFyIGRvbSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNy
ZWF0ZURvY3VtZW50KCIiLCIiLCBudWxsKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvc2V0LWRhbmdlcm91cy1oZWFkZXJzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtZGFuZ2Vyb3VzLWhlYWRl
cnMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9zZXQtZGFuZ2Vyb3VzLWhlYWRlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Myw4ICszLDggQEAKIDxwPlRlc3QgdGhhdCBzZXRSZXF1ZXN0SGVhZGVyIGNhbm5vdCBiZSB1c2Vk
IHRvIGFsdGVyIHNlY3VyaXR5LXNlbnNpdGl2ZSBoZWFkZXJzLjwvcD4KIDxwcmUgaWQ9cmVzdWx0
PkZBSUw6IHNjcmlwdCBkaWRuJ3QgcnVuIG9yIHJhaXNlZCBhbiB1bmV4cGVjdGVkIGV4Y2VwdGlv
bi48L3ByZT4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAg
ICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogICAgIHJlcS5vcGVuKCJHRVQiLCAicmVzb3Vy
Y2VzL3ByaW50LWhlYWRlcnMuY2dpIiwgZmFsc2UpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9zaW1wbGUtY3Jvc3Mtb3JpZ2luLWRlbmllZC1ldmVudHMtcG9z
dC1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9zaW1wbGUtY3Jvc3Mtb3JpZ2luLWRlbmllZC1ldmVudHMtcG9zdC1zeW5jLmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvc2ltcGxlLWNyb3NzLW9yaWdpbi1kZW5pZWQtZXZlbnRzLXBvc3Qtc3luYy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHA+VGVzdCB0aGF0IGEgc2ltcGxlIGNyb3NzLW9y
aWdpbiByZXF1ZXN0IHRvIGEgc2VydmVyIHRoYXQgcmVzcG9uZHMgKGJ1dCBkb2VzIG5vdCBwZXJt
aXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzKSBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIG9uZSB0
aGF0IGRvZXMgbm90IGV4aXN0LiBTaG91bGQgc2F5IFBBU1M6PC9wPgogPHByZSBpZD0nY29uc29s
ZSc+PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICB7CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NpbXBsZS1jcm9zcy1vcmln
aW4tZGVuaWVkLWV2ZW50cy1wb3N0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zaW1wbGUtY3Jvc3Mtb3JpZ2luLWRlbmllZC1ldmVudHMt
cG9zdC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3NpbXBsZS1jcm9zcy1vcmlnaW4tZGVuaWVkLWV2ZW50cy1wb3N0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cD5UZXN0IHRoYXQgYSBzaW1wbGUgY3Jv
c3Mtb3JpZ2luIHJlcXVlc3QgdG8gYSBzZXJ2ZXIgdGhhdCByZXNwb25kcyAoYnV0IGRvZXMgbm90
IHBlcm1pdCBjcm9zcy1vcmlnaW4gcmVxdWVzdHMpIGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20g
b25lIHRoYXQgZG9lcyBub3QgZXhpc3QuIFNob3VsZCBzYXkgUEFTUzo8L3A+CiA8cHJlIGlkPSdj
b25zb2xlJz48L3ByZT4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCkBAIC01Nyw4ICs1Nyw4IEBACiAgICAgICAg
ICAgICBsb2coIk5vbi1leGlzdGVudCBzZXJ2ZXI6Iik7CiAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCArPSBsb2dNaXNzaW5nOwogICAgICAg
ICB9Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0K
IAogICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3Qvc2ltcGxlLWNyb3NzLW9yaWdpbi1kZW5pZWQtZXZlbnRzLXN5
bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3NpbXBsZS1jcm9zcy1vcmlnaW4tZGVuaWVkLWV2ZW50cy1zeW5jLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2ltcGxl
LWNyb3NzLW9yaWdpbi1kZW5pZWQtZXZlbnRzLXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Myw4ICszLDggQEAKIDxwPlRlc3QgdGhhdCBhIHNpbXBsZSBjcm9zcy1vcmlnaW4gcmVxdWVzdCB0
byBhIHNlcnZlciB0aGF0IHJlc3BvbmRzIChidXQgZG9lcyBub3QgcGVybWl0IGNyb3NzLW9yaWdp
biByZXF1ZXN0cykgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBvbmUgdGhhdCBkb2VzIG5vdCBl
eGlzdC4gU2hvdWxkIHNheSBQQVNTOjwvcD4KIDxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgogPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgewpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zaW1wbGUtY3Jvc3Mtb3JpZ2luLWRlbmllZC1ldmVu
dHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3NpbXBsZS1jcm9zcy1vcmlnaW4tZGVuaWVkLWV2ZW50cy5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NpbXBsZS1jcm9z
cy1vcmlnaW4tZGVuaWVkLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBA
QAogPHA+VGVzdCB0aGF0IGEgc2ltcGxlIGNyb3NzLW9yaWdpbiByZXF1ZXN0IHRvIGEgc2VydmVy
IHRoYXQgcmVzcG9uZHMgKGJ1dCBkb2VzIG5vdCBwZXJtaXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Rz
KSBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIG9uZSB0aGF0IGRvZXMgbm90IGV4aXN0LiBTaG91
bGQgc2F5IFBBU1M6PC9wPgogPHByZSBpZD0nY29uc29sZSc+PC9wcmU+CiA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQpAQCAtNTEsOCArNTEsOCBAQAogICAgICAgICAgICAgbG9nKCJOb24tZXhpc3RlbnQgc2VydmVy
OiIpOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5l
ckhUTUwgKz0gbG9nTWlzc2luZzsKICAgICAgICAgfQotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NpbXBsZS1j
cm9zcy1vcmlnaW4tcHJvZ3Jlc3MtZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zaW1wbGUtY3Jvc3Mtb3JpZ2luLXByb2dyZXNz
LWV2ZW50cy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3NpbXBsZS1jcm9zcy1vcmlnaW4tcHJvZ3Jlc3MtZXZlbnRzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiAoaS5lLiBpZiB0aGUgbGlzdGVuZXIgaXMg
c2V0IGFmdGVyIGNhbGxpbmcgc2VuZCgpLCBhbmQgdGhlcmUgYXJlIG5vIG90aGVyIHJlYXNvbnMg
dG8gbWFrZSBhIHByZWZsaWdodCByZXF1ZXN0KS48L3A+CiA8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBm
dW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTEwMyw4ICsxMDMsOCBAQCBmdW5jdGlvbiB0ZXN0Mygp
CiAgICAgeGhyLnVwbG9hZC5vbmxvYWQgPSBmdW5jdGlvbigpIHsgbG9nKCJGQUlMOiB1cGxvYWQu
b25sb2FkIikgfQogICAgIHhoci51cGxvYWQub25lcnJvciA9IGZ1bmN0aW9uKCkgeyAKICAgICAg
ICAgbG9nKCJ1cGxvYWQub25lcnJvciAoZXhwZWN0ZWQpIikKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogICAgIHhoci5vbmVycm9yID0gZnVuY3Rp
b24oKSB7CiAgICAgICAgIGxvZygib25lcnJvciAoZXhwZWN0ZWQpIik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NtYWxsLWNodW5rcy1yZXNwb25zZS10ZXh0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9zbWFsbC1jaHVua3MtcmVzcG9uc2UtdGV4dC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NtYWxsLWNodW5rcy1yZXNwb25z
ZS10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBk
ZWJ1ZyhzdHIpIHsKQEAgLTE1LDggKzE1LDggQEAgZnVuY3Rpb24gcHJvY2Vzc1N0YXRlQ2hhbmdl
KCkgewogICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSAzKSB7CiAgICAgICAgIGRlYnVnKGNvdW50
KysgKyAnIHJlc3BvbnNlVGV4dDogJyArIHJlcS5yZXNwb25zZVRleHQpOwogICAgIH0gZWxzZSBp
ZiAocmVxLnJlYWR5U3RhdGUgPT0gNCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvc3RhdGUtYWZ0ZXItbmV0d29yay1lcnJvci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3RhdGUtYWZ0ZXItbmV0
d29yay1lcnJvci5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3N0YXRlLWFmdGVyLW5ldHdvcmstZXJyb3IuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogCiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9n
KG1lc3NhZ2UpCkBAIC0yNiw4ICsyNiw4IEBAIGZ1bmN0aW9uIG9uUmVhZHlTdGF0ZUNoYW5nZSgp
CiAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICAgc2V0TmV0d29ya0VuYWJs
ZWQodHJ1ZSk7CiAgICAgICAgIGxvZygiU1VDQ0VTUyIpOwotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3RhdHVzLWFmdGVyLWFib3J0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdGF0dXMtYWZ0ZXIt
YWJvcnQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9zdGF0dXMtYWZ0ZXItYWJvcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Niw5ICs2LDkgQEAgUkVHUkVTU0lPTjogWE1MSHR0cFJlcXVlc3QuYWJvcnQoKSByZXNldAogCiAK
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIg
cmVxID0gbnVsbDsKQEAgLTY2LDggKzY2LDggQEAgZnVuY3Rpb24gY2FsbEJhY2tGdW5jdGlvbigp
CiAgICAgICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwogICAgICAgICByZXEuYWJv
cnQoKTsKICAgICAgICAgbG9nKCJEb25lLiIpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQt
eG1sLWNvbnRlbnQtdHlwZXMuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKIApJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdmctY3JlYXRlZC1ieS14aHItYWxsb3dlZC1p
bi1kYXNoYm9hcmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3N2Zy1jcmVhdGVkLWJ5LXhoci1hbGxvd2VkLWluLWRhc2hib2FyZC5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3N2Zy1jcmVhdGVkLWJ5LXhoci1hbGxvd2VkLWluLWRhc2hib2FyZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw4ICs1Niw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBjYXRjaCAoZSkgewogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiA8L3Nj
cmlwdD4KQEAgLTY4LDEwICs2OCwxMCBAQAogPGRpdiBpZD0idGFyZ2V0RGl2Ij48L2Rpdj4KIDxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFVzZURhc2hi
b2FyZENvbXBhdGliaWxpdHlNb2RlKHRydWUpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5z
ZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAg
IH0KIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC91cGxvYWQtb25sb2FkLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91cGxvYWQtb25sb2FkLWV2ZW50Lmh0bWwJ
KHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvdXBsb2FkLW9ubG9hZC1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBA
QAogPHA+VGhpcyB0ZXN0IHRoYXQgdGhlIGxvYWQgZXZlbnQgaXMgZmlyZWQgZm9yIFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkIG9iamVjdHMuPC9wPgogPHByZSBpZD0nY29uc29sZSc+PC9wcmU+CiA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKQpAQCAtMjMsOCArMjMsOCBAQAogICAgIGZ1bmN0aW9uIHJlYWR5c3RhdGVjaGFu
Z2VIYW5kbGVyKGV2dCkKICAgICB7CiAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSB4aHIu
RE9ORSkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvdXBsb2FkLW9ubG9hZGVuZC1ldmVudC1hZnRlci1hYm9ydC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
dXBsb2FkLW9ubG9hZGVuZC1ldmVudC1hZnRlci1hYm9ydC5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VwbG9hZC1vbmxvYWRl
bmQtZXZlbnQtYWZ0ZXItYWJvcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAK
IDxwPlBBU1Mgc2hvdWxkIGFwcGVhciBiZWxvdzo8L3A+CiA8cCBpZD1jb25zb2xlPjwvcD4KIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMzUsOCArMzUsOCBAQCBm
dW5jdGlvbiBsb2dVbmV4cGVjdGVkUHJvZ3Jlc3NFdmVudChlKSB7CiBmdW5jdGlvbiBjb21wbGV0
ZVRlc3QoKQogewogICAgIGxvZyhyZXN1bHRzID09IGV4cGVjdGVkID8gIlBBU1MiIDogIkZBSUxF
RCByZXN1bHRzIDogJyIgKyByZXN1bHRzICsgIicsIGV4cGVjdGVkIDogJyIgKyBleHBlY3RlZCAr
ICInIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3Qo
KQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91cGxvYWQtb25s
b2FkZW5kLWV2ZW50LWFmdGVyLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VwbG9hZC1vbmxvYWRlbmQtZXZlbnQtYWZ0ZXItbG9h
ZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3VwbG9hZC1vbmxvYWRlbmQtZXZlbnQtYWZ0ZXItbG9hZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC04LDkgKzgsOSBAQAogPHA+UEFTUyBzaG91bGQgYXBwZWFyIGJlbG93OjwvcD4K
IDxwIGlkPWNvbnNvbGU+PC9wPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCkBAIC0zNSw4ICszNSw4IEBAIGZ1bmN0aW9uIGxvZ1VuZXhwZWN0ZWRQcm9ncmVzc0V2ZW50
KGUpIHsKIGZ1bmN0aW9uIGNvbXBsZXRlVGVzdCgpCiB7CiAgICAgbG9nKHJlc3VsdHMgPT0gZXhw
ZWN0ZWQgPyAiUEFTUyIgOiAiRkFJTEVEIHJlc3VsdHMgOiAnIiArIHJlc3VsdHMgKyAiJywgZXhw
ZWN0ZWQgOiAnIiArIGV4cGVjdGVkICsgIiciKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3VwbG9hZC1vbmxvYWRlbmQtZXZlbnQtYWZ0ZXItc3luYy1yZXF1ZXN0cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
dXBsb2FkLW9ubG9hZGVuZC1ldmVudC1hZnRlci1zeW5jLXJlcXVlc3RzLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdXBsb2Fk
LW9ubG9hZGVuZC1ldmVudC1hZnRlci1zeW5jLXJlcXVlc3RzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTgsOSArOCw5IEBACiA8cD5QQVNTIFBBU1Mgc2hvdWxkIGFwcGVhciBiZWxvdzo8L3A+CiA8
cCBpZD1jb25zb2xlPjwvcD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQpAQCAtMzQsOCArMzQsOCBAQCBmdW5jdGlvbiBsb2dVbmV4cGVjdGVkUHJvZ3Jlc3NFdmVudChl
KSB7CiBmdW5jdGlvbiBjb21wbGV0ZVRlc3QoZXhwZWN0ZWQpCiB7CiAgICAgbG9nKHJlc3VsdHMg
PT0gZXhwZWN0ZWQgPyAiUEFTUyIgOiAiRkFJTEVEIHJlc3VsdHMgOiAnIiArIHJlc3VsdHMgKyAi
JyBleHBlY3RlZCA6ICciICsgZXhwZWN0ZWQgKyAiJyIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogfQogCiBmdW5jdGlvbiB0ZXN0Tm9ybWFsKCkKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdXBsb2FkLW9ubG9hZHN0YXJ0LWV2ZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91cGxvYWQt
b25sb2Fkc3RhcnQtZXZlbnQuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91cGxvYWQtb25sb2Fkc3RhcnQtZXZlbnQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxwPlRoaXMgdGVzdCB0aGF0IHRoZSBsb2Fk
c3RhcnQgZXZlbnQgaXMgZmlyZWQgZm9yIFhNTEh0dHBSZXF1ZXN0VXBsb2FkIG9iamVjdHMuPC9w
PgogPHByZSBpZD0nY29uc29sZSc+PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMjMsOCArMjMs
OCBAQAogICAgIGZ1bmN0aW9uIHJlYWR5c3RhdGVjaGFuZ2VIYW5kbGVyKGV2dCkKICAgICB7CiAg
ICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSB4aHIuRE9ORSkgewotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0K
ICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdXBs
b2FkLW9ucHJvZ3Jlc3MtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VwbG9hZC1vbnByb2dyZXNzLWV2ZW50Lmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdXBs
b2FkLW9ucHJvZ3Jlc3MtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAK
IDxwPlRoaXMgdGVzdCB0aGF0IHByb2dyZXNzIGV2ZW50cyBhcmUgZmlyZWQgZm9yIFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkIG9iamVjdHMuPC9wPgogPHByZSBpZD0nY29uc29sZSc+PC9wcmU+CiA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKQpAQCAtMjQsOCArMjQsOCBAQAogICAgIGZ1bmN0aW9uIHJlYWR5c3RhdGVjaGFu
Z2VIYW5kbGVyKGV2dCkKICAgICB7CiAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSB4aHIu
RE9ORSkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvdXBsb2FkLXByb2dyZXNzLWV2ZW50cy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdXBsb2FkLXByb2dy
ZXNzLWV2ZW50cy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3VwbG9hZC1wcm9ncmVzcy1ldmVudHMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMyw5ICszLDkgQEAKIDxwPlRoaXMgdGVzdCB0aGF0IHByb2dyZXNzIGV2ZW50cyBh
cmUgZmlyZWQgZm9yIFhNTEh0dHBSZXF1ZXN0VXBsb2FkIG9iamVjdHMgaW4gdGhlIGNvcnJlY3Qg
b3JkZXIsIGxvYWRzdGFydCwgcHJvZ3Jlc3MsIGxvYWQuPC9wPgogPHByZSBpZD0nY29uc29sZSc+
PC9wcmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQpAQCAtMzMsOCArMzMsOCBAQAogICAgIGZ1bmN0aW9uIHJl
YWR5c3RhdGVjaGFuZ2VIYW5kbGVyKGV2dCkKICAgICB7CiAgICAgICAgIGlmICh4aHIucmVhZHlT
dGF0ZSA9PSB4aHIuRE9ORSkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdXJpLXJlc29sdXRpb24tb3BlcmEtb3Bl
bi0wMDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA0Lmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvdXJpLXJlc29sdXRp
b24tb3BlcmEtb3Blbi0wMDQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMCBAQAog
ICAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gdGVzdChmcmFtZSkKICAgICB7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogICAgICAgICB9CiAgICAgICAgIHZhciBjbGllbnQgPSBuZXcgZnJhbWUuY29u
dGVudFdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICBjbGllbnQub3BlbigiR0VUIiwg
InRlc3QtdXJpLXJlc29sdXRpb24udHh0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA1Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91cmktcmVzb2x1
dGlvbi1vcGVyYS1vcGVuLTAwNS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA1
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAKICAgICA8c2NyaXB0PgogICAg
IGZ1bmN0aW9uIHRlc3QoZnJhbWUpCiAgICAgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAg
ICAgfQogICAgICAgICB2YXIgY2xpZW50ID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuWE1MSHR0
cFJlcXVlc3QoKTsKICAgICAgICAgZnJhbWUuY29udGVudFdpbmRvdy50ZXN0KGNsaWVudCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VyaS1yZXNvbHV0aW9u
LW9wZXJhLW9wZW4tMDA2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC91cmktcmVzb2x1dGlvbi1vcGVyYS1vcGVuLTAwNi5odG1sCShyZXZp
c2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Vy
aS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA2Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAg
KzQsMTAgQEAKICAgICA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHRlc3QoZnJhbWUpCiAgICAgewot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAgICB2YXIgY2xpZW50ID0gbmV3
IGZyYW1lLmNvbnRlbnRXaW5kb3cuWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgZnJhbWUuY29u
dGVudFdpbmRvdy50ZXN0KGNsaWVudCk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA3Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91cmktcmVzb2x1dGlv
bi1vcGVyYS1vcGVuLTAwNy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA3Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAKICAgICA8c2NyaXB0PgogICAgIGZ1
bmN0aW9uIHRlc3QoZnJhbWUpCiAgICAgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1Rl
eHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAg
fQogICAgICAgICB2YXIgY2xpZW50ID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuWE1MSHR0cFJl
cXVlc3QoKTsKICAgICAgICAgZnJhbWUuY29udGVudFdpbmRvdy50ZXN0KGNsaWVudCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VyaS1yZXNvbHV0aW9uLW9w
ZXJhLW9wZW4tMDA4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC91cmktcmVzb2x1dGlvbi1vcGVyYS1vcGVuLTAwOC5odG1sCShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VyaS1y
ZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQs
MTAgQEAKICAgICA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHRlc3QoZnJhbWUpCiAgICAgewotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogICAgICAgICB2YXIgY2xpZW50ID0gZnJhbWUu
Y29udGVudFdpbmRvdy5jbGllbnQoKTsKICAgICAgICAgY2xpZW50Lm9ucmVhZHlzdGF0ZWNoYW5n
ZSA9IGZ1bmN0aW9uKCkKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvdXJpLXJlc29sdXRpb24tb3BlcmEtb3Blbi0wMDkuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9w
ZW4tMDA5Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvdXJpLXJlc29sdXRpb24tb3BlcmEtb3Blbi0wMDkuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNCwxMCArNCwxMCBAQAogICAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gdGVz
dChmcmFtZSkKICAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICB9CiAgICAgICAg
IHZhciBjbGllbnQgPSBmcmFtZS5jb250ZW50V2luZG93LmNsaWVudCgpOwogICAgICAgICBjbGll
bnQuc2VuZCgiIik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDEwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC91cmktcmVzb2x1dGlvbi1vcGVyYS1vcGVu
LTAxMC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDEwLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQsMTAgKzQsMTAgQEAKICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+CiAgICAgICAg
IDxzY3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgICAgICA8cD48aWZy
YW1lIHNyYz0icmVzb3VyY2VzL3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDEwLWlmcmFtZS5o
dG1sIiBvbmxvYWQ9InRoaXMuY29udGVudFdpbmRvdy5jbGllbnQoKSI+PC9pZnJhbWU+PC9wPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94aHItb251bmxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3hoci1vbnVubG9hZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3hoci1vbnVubG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC05LDggKzksOCBAQCBSRUdSRVNTSU9OOiBSZXByb2R1Y2libGUgY3Jhc2ggaW4gWE1MSHR0CiA8
IS0tIFdoZW4gcnVubmluZyBhcyBhbiBhdXRvbWF0ZWQgdGVzdCwgY3Jhc2hlcyB3aGVuIGxvYWRp
bmcgdGhlIG5leHQgdGVzdCBjYXNlLiAtLT4KIDxzY3JpcHQ+CiAgICAgCi0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiB0ZXN0KHVybCkKICAgICB7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbC1lbmNvZGluZy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1sLWVu
Y29kaW5nLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QveG1sLWVuY29kaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCAr
Nyw4IEBACiA8cD5UaGUgcmVxdWVzdCBib2R5IHNob3VsZCBjb250YWluIHRoZSB3b3JkICLQn9GA
0L7QstC10YDQutCwIi48L3A+CiA8c2NyaXB0PgogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKICAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InVsIik7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtNTBtcy1kb3dubG9hZC1kaXNwYXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtNTBtcy1kb3dubG9hZC1k
aXNwYXRjaC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LTUwbXMtZG93bmxvYWQtZGlzcGF0Y2guaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSArMTEsOSBAQCBldmVyeSA1MG1zIG9yIGZvciBldmVy
eSBieXRlIHJlY2VpdmVkLCB3CiA8cCBpZD0iY29uc29sZSI+PC9wPgogCiA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
fQogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKQEAgLTQxLDggKzQxLDggQEAgZnVuY3Rpb24gdGVz
dChpdGVyYXRpb24sIGRlbGF5LCBjb21wYXJlLAogICAgICAgICAgICAgbG9nKHBhc3NlZCA/ICJQ
QVNTRUQiIDogIkZBSUxFRCAoY291bnQgd2FzICIgKyBjb3VudCArICIpIGZvciAiICsgdGVzdERl
c2NyaXB0aW9uKTsKICAgICAgICAgICAgICsrdGVzdHNDb21wbGV0ZWQ7CiAgICAgICAgICAgICBp
ZiAodGVzdHNDb21wbGV0ZWQgPT0gNSkgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1MU1Byb2dyZXNzRXZlbnQtUHJvZ3Jlc3NFdmVudC1z
aG91bGQtbWF0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUxTUHJvZ3Jlc3NFdmVudC1Qcm9ncmVzc0V2ZW50
LXNob3VsZC1tYXRjaC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUxTUHJvZ3Jlc3NFdmVudC1Qcm9n
cmVzc0V2ZW50LXNob3VsZC1tYXRjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjks
MTMgQEAgZnVuY3Rpb24gb25Qcm9ncmVzcyhlKSB7CiAgICAgZWxzZQogICAgICAgICBsb2coIkZB
SUxFRCB0b3RhbFNpemUgYW5kIHRvdGFsIGRvIG5vdCBtYXRjaCAob3IgYm90aCBhcmUgbnVsbCki
KTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LWFib3J0LXJlYWR5U3RhdGUtc2hvdWxkRGlzcGF0Y2hFdmVudC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
YWJvcnQtcmVhZHlTdGF0ZS1zaG91bGREaXNwYXRjaEV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtYWJvcnQtcmVhZHlTdGF0ZS1zaG91bGREaXNwYXRjaEV2ZW50Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDggKzQ3LDggQEAgZnVuY3Rpb24gdGVzdEFib3J0V2l0aFJlYWR5U3RhdGVFdmVu
dExvYQogICAgIGVsc2UKICAgICAgICAgbG9nKCJGQUlMRUQiKTsKIAotICAgIGlmIChmaW5pc2hl
ZFRlc3RzID09IGFib3J0VG9Eby5sZW5ndGggJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKGZp
bmlzaGVkVGVzdHMgPT0gYWJvcnRUb0RvLmxlbmd0aCAmJiB3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIC8vIENhbGxlZCB3aXRoIG51bSAh
PSAxCkBAIC03NywxNyArNzcsMTcgQEAgZnVuY3Rpb24gdGVzdEFib3J0V2l0aFJlYWR5U3RhdGVF
dmVudChudQogICAgICAgICAgICAgICAgIGxvZygiRkFJTEVEIik7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoZmluaXNoZWRUZXN0cyA9PSBhYm9ydFRvRG8ubGVuZ3RoICYmIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgaWYgKGZpbmlzaGVkVGVzdHMgPT0gYWJvcnRUb0RvLmxlbmd0aCAm
JiB3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgIH0KIAogICAgIHhoci5vcGVuKCJHRVQiLCAicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRy
dWUpOwogICAgIHhoci5zZW5kKG51bGwpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogfQogCiB2YXIgZmluaXNoZWRUZXN0cyA9IDA7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWFib3J0LXJlYWR5U3Rh
dGUtc2hvdWxkTm90RGlzcGF0Y2hFdmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtYWJvcnQtcmVhZHlTdGF0
ZS1zaG91bGROb3REaXNwYXRjaEV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtYWJvcnQtcmVh
ZHlTdGF0ZS1zaG91bGROb3REaXNwYXRjaEV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDggKzQzLDggQEAgZnVuY3Rpb24gdGVzdEFib3J0RG9Ob3REaXNwYXRjaEV2ZW50KG51bQogICAg
ICAgICAgICAgICAgIGxvZygiRkFJTEVEIik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChmaW5pc2hlZFRlc3RzID09IGFib3J0VG9Eby5sZW5ndGggJiYgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICBpZiAoZmluaXNoZWRUZXN0cyA9PSBhYm9ydFRvRG8ubGVuZ3RoICYmIHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgfQogCiAgICAgeGhyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvMTI1MS5odG1sIiwgdHJ1ZSk7
CkBAIC01NSw5ICs1NSw5IEBAIGZ1bmN0aW9uIHRlc3RBYm9ydERvTm90RGlzcGF0Y2hFdmVudChu
dW0KICAgICAgICAgeGhyLnNlbmQobnVsbCk7CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIHZhciBmaW5pc2hlZFRlc3RzID0gMDsKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtYWRkRXZlbnRMaXN0
ZW5lci1vblByb2dyZXNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLW9uUHJvZ3Jl
c3MuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLW9uUHJvZ3Jlc3MuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTcsMTMgKzE3LDEzIEBAIGZ1bmN0aW9uIGxvZyhtc2cpCiAK
IGZ1bmN0aW9uIG9uUHJvZ3Jlc3MoZSkgewogICAgIGxvZygiUEFTU0VEICgiICsgY291bnQgKyAi
KSIpOwotICAgIGlmICgrK2NvdW50ID4gMiAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAoKytj
b3VudCA+IDIgJiYgd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiAv
LyBUZXN0IGZvciBjYXB0dXJlIHBoYXNlIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1jaGVjay1nZXQtcmVhZHlzdGF0ZS1mb3ItNDA0
LXdpdGhvdXQtYm9keS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtY2hlY2stZ2V0LXJlYWR5c3RhdGUtZm9yLTQw
NC13aXRob3V0LWJvZHkuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1jaGVjay1nZXQtcmVhZHlzdGF0
ZS1mb3ItNDA0LXdpdGhvdXQtYm9keS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBA
QAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogZnVuY3Rpb24gbG9hZFhNTERvYygp
IHsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICB9CiAKICAgICB2YXIgcmVzID0gIiI7CkBAIC0xNiw4ICsxNiw4IEBAIGZ1
bmN0aW9uIGxvYWRYTUxEb2MoKSB7CiAgICAgICAgICAgICBpZihyZXMgPT0gIjEyNCIgJiYgeG1s
aHR0cC5zdGF0dXMgPT0gNDA0KSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9ICJQQVNTIjsKIAotICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1jaGVjay1oZWFkLXJlYWR5c3Rh
dGUtZm9yLTQwNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtY2hlY2staGVhZC1yZWFkeXN0YXRlLWZvci00MDQu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC94bWxodHRwcmVxdWVzdC1jaGVjay1oZWFkLXJlYWR5c3RhdGUtZm9yLTQwNC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogPHByZSBpZD0icmVzdWx0Ij5GQUlMPC9w
cmU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAg
dmFyIHJlcyA9ICIiOwpAQCAtMTcsOCArMTcsOCBAQAogICAgICAgICAgICAgaWYocmVzID09ICIx
MjQiICYmIHhtbGh0dHAuc3RhdHVzID09IDQwNCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lclRleHQgPSAiUEFTUyI7CiAKLSAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtY29udGVudHR5
cGUtZW1wdHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWNvbnRlbnR0eXBlLWVtcHR5Lmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtY29udGVudHR5cGUtZW1wdHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsOSAr
MTgsOSBAQCBDcmFzaC4KIDwvcD4KIAogPHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogICB9CiAKICAgdmFyIHhtbGh0dHAgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKQEAgLTMwLDggKzMwLDggQEAgQ3Jhc2guCiAKICAgZnVuY3Rpb24gZG9uZSgpIHsKICAg
ICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlID09IDQpIHsKLSAgICAgIGlmICh4bWxodHRwLnJlc3Bv
bnNlWE1MLmRvY3VtZW50RWxlbWVudCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGlmICh4bWxo
dHRwLnJlc3BvbnNlWE1MLmRvY3VtZW50RWxlbWVudCAmJiB3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogICB9CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
Y3JsZi1nZXRBbGxSZXNwb25zZUhlYWRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtY3JsZi1nZXRBbGxSZXNw
b25zZUhlYWRlci5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWNybGYtZ2V0QWxsUmVzcG9uc2VIZWFk
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw5ICs2LDkgQEAKIDxwPlRlc3QgcGFnZSBmb3Ig
dGhlIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODk4
Ij5idWcgMTQ4OTg8L2E+IDogWE1MSHR0cFJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIHNo
b3VsZCBzZXBhcmF0ZSBoZWFkZXJzIHdpdGggQ1JMRjwvcD4KIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAog
dmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwpAQCAtMjUsOCArMjUsOCBAQCB4aHIub25y
ZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQQVNTIikpOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQog
fQogeGhyLm9wZW4oIkdFVCIsICJ0ZXN0UGFnZS5odG1sIiwgdHJ1ZSk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWZvcmJpZGRlbi1t
ZXRob2RzLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtZm9yYmlkZGVuLW1ldGhvZHMtZXhjZXB0
aW9uLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtZm9yYmlkZGVuLW1ldGhvZHMtZXhjZXB0aW9uLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAgZnVuY3Rpb24gdGVzdEV4Y2VwdGlv
bihtZXRob2QpCiAgICAgfQogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHhocjsKIApAQCAtNTIs
OCArNTIsOCBAQCBsb2coIkNPTk5FQ1QgOiAiKTsKIHRlc3RFeGNlcHRpb24oIkNPTk5FQ1QiKTsK
IGluc2VydE5ld0xpbmUoKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAKIDwvc2NyaXB0PgogCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdl
LW5vdC1sb2FkZWQtc3ZnLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQtc3ZnLnN2Zwko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC94bWxodHRwcmVxdWVzdC1pbWFnZS1ub3QtbG9hZGVkLXN2Zy5zdmcJKHdvcmtpbmcgY29weSkK
QEAgLTE4LDEzICsxOCwxMyBAQAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkZBSUxFRCIpKTsKIAot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgfQog
CiAgICAgICAgIHhoci5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL2xvYWQtaWNvbi5zdmcnKTsKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
aW1hZ2Utbm90LWxvYWRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW1hZ2Utbm90LWxvYWRlZC5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3htbGh0dHByZXF1ZXN0LWltYWdlLW5vdC1sb2FkZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTksMTMgKzE5LDEzIEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29uc29s
ZS5pbm5lckhUTUwgPSAiRkFJTEVEIjsKIAotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtbWlzc2luZy1maWxlLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtbWlz
c2luZy1maWxlLWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LW1pc3NpbmctZmlsZS1l
eGNlcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQCBmdW5jdGlvbiBz
ZW5kUmVxdWVzdCgpIAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
dHJ5IHsKICAgICB2YXIgcmVxdWVzdCA9IHNlbmRSZXF1ZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LW11bHRpcGxlLW9wZW4u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3htbGh0dHByZXF1ZXN0LW11bHRpcGxlLW9wZW4uaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1tdWx0
aXBsZS1vcGVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDkgKzIxLDkgQEAgQXJyYXkucHJv
dG90eXBlLmlzRXF1YWwgPSBmdW5jdGlvbihleHBlYwogICAgIHJldHVybiB0cnVlOwogfQogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgeGhyOwpAQCAtNTQs
OCArNTQsOCBAQCB4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy9wcmludC1oZWFkZXJzCiAKIGxv
ZyhyZXN1bHRzLmlzRXF1YWwoZXhwZWN0ZWQpID8gIlBBU1MiIDogIkZBSUxFRCByZXN1bHRzIDog
IiArIHJlc3VsdHMgKyAiIGV4cGVjdGVkIDogIiArIGV4cGVjdGVkKTsKIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAKIDwvc2NyaXB0PgogPC9ib2R5PjwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tY29udGVudC1sZW5ndGgtb25Qcm9n
cmVzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tY29udGVudC1sZW5ndGgtb25Qcm9ncmVzcy5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3htbGh0dHByZXF1ZXN0LW5vLWNvbnRlbnQtbGVuZ3RoLW9uUHJvZ3Jlc3MuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAsMTUgKzEwLDE1IEBACiA8cCBpZD0ic2hvdWxkQmVDYWxsZWQiPiBGQUlM
RUQgPC9wPgogPHAgaWQ9InNob3VsZE5vdEJlQ2FsbGVkIj4gUEFTU0VEIDwvcD4KIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAKIHZhciBjb3VudCA9IDA7CiBmdW5jdGlvbiBjaGVja0RvbmUoKSB7Ci0gICAgaWYg
KCsrY291bnQgPT0gMiAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAoKytjb3VudCA9PSAyICYm
IHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0K
IAogZnVuY3Rpb24gb25Qcm9ncmVzc1Bhc3NlZChlKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LW5vLWNvbnRlbnQtdHlwZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3Qtbm8tY29udGVudC10eXBlLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tY29u
dGVudC10eXBlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTMgKzcsMTMgQEAKIDxwPiBUaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCBhbiBYSFIgY29udGVudCB3aXRoIG5vIENvbnRlbnQtVHlwZSBz
ZXQgZG9lcyBub3QgY3Jhc2ggdGhlIGJyb3dzZXIuIDwvcD4KIDxib2R5PgogPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogZnVuY3Rpb24gY2hlY2tEb25lKCkgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogdmFyIHJlcSA9
IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1vblByb2dyZXNzLW9wZW4tc2hvdWxkLXplcm8tbGVu
Z3RoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC94bWxodHRwcmVxdWVzdC1vblByb2dyZXNzLW9wZW4tc2hvdWxkLXplcm8tbGVuZ3RoLmh0
bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3Qtb25Qcm9ncmVzcy1vcGVuLXNob3VsZC16ZXJvLWxlbmd0aC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTQgQEAgZnVuY3Rpb24gb25SZWFkeVN0
YXRlQ2hhbmdlKCkgewogICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgICAgIC8v
IENvbXBhcmUgbGFzdCBwb3NpdGlvbiB3aXRoIHRoZSBrbm93biByZXNvdXJjZSBzaXplLgogICAg
ICAgICBsb2coKGxhc3RQb3NpdGlvbiA9PSByZXNvdXJjZVNpemUpID8gIlBBU1NFRCIgOiAoIkZB
SUxFRDogZXhwZWN0ZWQgIiArIHJlc291cmNlU2l6ZSArICIsIGFjdHVhbCAiICsgbGFzdFBvc2l0
aW9uKSk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAg
IH0KIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHJl
cSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1vcGVuLWVtcHR5LW1ldGhvZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3Qtb3Blbi1lbXB0eS1tZXRob2QuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1vcGVuLWVtcHR5
LW1ldGhvZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHA+VGVzdCB0aGF0
IG9wZW4gdGhyb3dzIGEgU1lOVEFYX0VSUiBleGNlcHRpb24gd2hlbiBjYWxsZWQgd2l0aCBhbiBl
bXB0eSBtZXRob2QuPC9wPgogPHByZSBpZD0icmVzdWx0Ij5GQUlMOiBzY3JpcHQgZGlkbid0IHJ1
biBvciByYWlzZWQgYW4gdW5leHBlY3RlZCBleGNlcHRpb24uPC9wcmU+CiA8c2NyaXB0PgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIHJlc3VsdCA9ICJGQUlMOiBubyBl
eGNlcHRpb24gd2FzIGNhdWdodCI7CiAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtcG9zdC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcG9zdC1jcmFzaC5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LXBvc3QtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxo
ZWFkPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CkBAIC0xMiw4ICsxMiw4IEBAIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKIHhoci5v
bnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICBpZiAoeGhyLnJlYWR5U3RhdGUg
PT0gNCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFnZSIpLnRleHRDb250
ZW50ID0gIlBBU1MiOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QveG1saHR0cHJlcXVlc3QtcmVzcG9uc2VUZXh0LWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
cmVzcG9uc2VUZXh0LWV4Y2VwdGlvbi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXJlc3BvbnNlVGV4
dC1leGNlcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQCBmdW5jdGlv
biB0ZXN0KG51bSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
aWYgKGZpbmlzaGVkVGVzdHMgPT0gNCAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlm
IChmaW5pc2hlZFRlc3RzID09IDQgJiYgd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKICAgICB4aHIub3BlbigiR0VUIiwgInJl
c291cmNlcy8xMjUxLmh0bWwiLCB0cnVlKTsKQEAgLTQ2LDkgKzQ2LDkgQEAgZnVuY3Rpb24gdGVz
dChudW0pCiAgICAgICAgIHhoci5zZW5kKG51bGwpOwogfQogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgZmluaXNoZWRUZXN0cyA9IDA7CkBAIC01OSw0ICs1
OSw0IEBAIGZvciAoaSA9IDE7IGkgPCA1OyBpKyspIHsKIAogPC9zY3JpcHQ+CiAKLTwvYm9keT48
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9ib2R5PjwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtcmVz
cG9uc2VYTUwtZXhjZXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1leGNlcHRpb24u
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC94bWxodHRwcmVxdWVzdC1yZXNwb25zZVhNTC1leGNlcHRpb24uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBmdW5jdGlvbiB0ZXN0KG51bSkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGZpbmlzaGVkVGVzdHMgPT0gNCAm
JiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmIChmaW5pc2hlZFRlc3RzID09IDQgJiYg
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9CiAKICAgICB4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy8xMjUxLmh0bWwiLCB0cnVl
KTsKQEAgLTQ3LDkgKzQ3LDkgQEAgZnVuY3Rpb24gdGVzdChudW0pCiAgICAgICAgIHhoci5zZW5k
KG51bGwpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2
YXIgZmluaXNoZWRUZXN0cyA9IDA7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXNldHJlcXVlc3RoZWFkZXItbm8tbmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3Qtc2V0cmVxdWVzdGhlYWRlci1uby1uYW1lLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
c2V0cmVxdWVzdGhlYWRlci1uby1uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4
IEBACiA8cD5UZXN0IHRoYXQgc2V0UmVxdWVzdEhlYWRlciB0aHJvd3MgYSBTWU5UQVhfRVJSIGV4
Y2VwdGlvbiB3aGVuIGNhbGxlZCB3aXRoIGFuIGVtcHR5IGhlYWRlciBuYW1lLjwvcD4KIDxwcmUg
aWQ9InJlc3VsdCI+RkFJTDogc2NyaXB0IGRpZG4ndCBydW4gb3IgcmFpc2VkIGFuIHVuZXhwZWN0
ZWQgZXhjZXB0aW9uLjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgIHZhciByZXN1bHQgPSAiRkFJTDogbm8gZXhjZXB0aW9uIHdhcyBjYXVnaHQiOwog
ICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXNldHJlcXVlc3RoZWFkZXItbm8t
dmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXNldHJlcXVlc3RoZWFkZXItbm8tdmFsdWUuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94
bWxodHRwcmVxdWVzdC1zZXRyZXF1ZXN0aGVhZGVyLW5vLXZhbHVlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOCArMyw4IEBACiA8cD5UZXN0IHRoYXQgc2V0UmVxdWVzdEhlYWRlciBjYW4gYmUg
dXNlZCB0byBzZXQgaGVhZGVycyB0aGF0IGhhdmUgYSBuYW1lLCBidXQgbm8gdmFsdWUuPC9wPgog
PHByZSBpZD1yZXN1bHQ+RkFJTDogc2NyaXB0IGRpZG4ndCBydW4gb3IgcmFpc2VkIGFuIHVuZXhw
ZWN0ZWQgZXhjZXB0aW9uLjwvcHJlPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKICAgICAKICAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CiAgICAgcmVxLm9wZW4o
IkdFVCIsICJyZXNvdXJjZXMvcHJpbnQtaGVhZGVycy5jZ2kiLCBmYWxzZSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8t
cHJvZ3Jlc3MtZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXByb2dyZXNzLWV2ZW50cy5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtbm8tcHJvZ3Jlc3MtZXZlbnRzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8cHJlIGlkPWxvZz48L3ByZT4KIAogPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQogewpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxo
dHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy1uby10aW1lcnMu
aHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC94bWxodHRwcmVxdWVzdC1zeW5jLW5vLXRpbWVycy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC00LDggKzQsOCBAQAogPHByZSBpZD1sb2c+PC9wcmU+CiAKIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkKIHsK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3Qtc3luYy12cy1hc3luYy1hc3NlcnRpb24tZmFpbHVyZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy12
cy1hc3luYy1hc3NlcnRpb24tZmFpbHVyZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXN5bmMtdnMt
YXN5bmMtYXNzZXJ0aW9uLWZhaWx1cmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDgg
QEAKIDxwPllvdSBzaG91bGQgc2VlICJQQVNTIiBvbmNlOjwvcD4KIAogPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciB4aHI7CiAKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtdGVzdC1zZW5k
LWZsYWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXRlc3Qtc2VuZC1mbGFnLmh0bWwJKHJldmlzaW9uIDEyMDEw
OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtdGVzdC1zZW5kLWZsYWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQCBm
dW5jdGlvbiBsb2cobWVzc2FnZSkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbnMi
KS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKIH0KIAotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKIHZhciB4aHI7CiAKQEAgLTU2LDggKzU2LDggQEAgdHJ5IHsKICAgICBsb2coIlBB
U1MiKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAKIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUt
cmVkaXJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXVuc2FmZS1yZWRpcmVjdC5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LXVuc2FmZS1yZWRpcmVjdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBA
QAogZnVuY3Rpb24gZGlkUmVhZEZpbGUoKQogewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogJyArIHJlcS5yZXNwb25zZVRleHQ7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyAgICAKIH0KIAogZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCkBAIC0zMywxNCArMzMsMTQgQEAgZnVuY3Rpb24gb25TeW5jUmVxRXJyb3IoKQogZnVu
Y3Rpb24gb25SZXFFcnJvcihlKQogewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSAnU1VDQ0VTUzogRXJyb3IgaGFuZGxlciB3YXMgY2FsbGVkIHdpdGgg
cmVhZHlTdGF0ZSAnICsgcmVxLnJlYWR5U3RhdGU7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAKICAgICAvLyBG
aXJzdCwgbWFrZSBhIHN5bmMgcmVxdWVzdC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvemVyby1sZW5ndGgtcmVzcG9uc2Utc3luYy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvemVyby1sZW5ndGgtcmVz
cG9uc2Utc3luYy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3plcm8tbGVuZ3RoLXJlc3BvbnNlLXN5bmMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKIC0gemVyby1sZW5ndGggcmVzcG9uc2VzIHRvIFhNTEhU
VFBSZXF1ZXN0IG1pc2hhbmRsZWQuPC9wPgogPHNjcmlwdD4KIAotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiAgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ1bCIpOwogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZV9tZXNz
YWdlcyk7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3plcm8t
bGVuZ3RoLXJlc3BvbnNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC96ZXJvLWxlbmd0aC1yZXNwb25zZS5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3plcm8tbGVuZ3Ro
LXJlc3BvbnNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOSArNyw5IEBACiAtIHplcm8tbGVu
Z3RoIHJlc3BvbnNlcyB0byBYTUxIVFRQUmVxdWVzdCBtaXNoYW5kbGVkLjwvcD4KIDxzY3JpcHQ+
CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgfQogCiAgICAgdmFyIGNvbnNvbGVfbWVzc2FnZXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ1bCIpOwpAQCAtOTcsOCArOTcsOCBAQAogICAgICAgIGxvZygib25yZWFkeXN0
YXRlY2hhbmdlOiAiICsgc3RhdGVOYW1lKHJlcS5yZWFkeVN0YXRlKSk7CiAgICAgICAgZHVtcFJl
c3BvbnNlKCk7CiAgICAgICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQpIHsKLSAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgfQog
ICAgIH0KICAgICAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
cmVzb3VyY2VzL2Nsb3NlLXdpbmRvdy1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2Nsb3NlLXdpbmRvdy1mcmFt
ZS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9jbG9zZS13aW5kb3ctZnJhbWUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMyw1ICszLDUgQEAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKIHhoci5vcGVu
KCJHRVQiLCBsb2NhdGlvbi5ocmVmICsgIj8iKTsKIHhoci5zZW5kKCk7CiB3aW5kb3cuY2xvc2Uo
KTsKLXdpbmRvdy5vcGVuZXIuc2V0VGltZW91dCgiaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpIiwgMTApOword2luZG93Lm9w
ZW5lci5zZXRUaW1lb3V0KCJpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpIiwgMTApOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9kZXRhY2hlZC1mcmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2RldGFjaGVk
LWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2RldGFjaGVkLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDggKzEwLDggQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIHZhciBw
YXJlbnRXaW5kb3cgPSB3aW5kb3cucGFyZW50OwogICAgICAgICAgICAgcGFyZW50V2luZG93LmRv
Y3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocGFyZW50V2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJpZnJhbWUiKVswXSk7CiAgICAgICAgICAgICBwYXJlbnRXaW5kb3cuZG9jdW1l
bnQuYm9keS5pbm5lckhUTUwgKz0gIjxwPlBBU1M6IE5vIGNyYXNoLjwvcD4iOwotICAgICAgICAg
ICAgaWYgKHBhcmVudFdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAg
ICBwYXJlbnRXaW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgaWYgKHBhcmVudFdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHBhcmVu
dFdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2VuZGxl
c3N4bWwucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2VuZGxlc3N4bWwucGhwCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9lbmRsZXNzeG1sLnBo
cAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKIDw/cGhwCiBzbGVlcCgxMCk7Ci0/Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKz8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9mcmFtZS1sb2FkLXRvLWNhbmNlbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL2ZyYW1lLWxvYWQtdG8tY2FuY2VsLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2ZyYW1lLWxvYWQtdG8t
Y2FuY2VsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDQgKzMyLDQgQEAgZnVuY3Rpb24gcmVh
ZHlTdGF0ZUNoYW5nZWQoZXZ0KQogPGJvZHkgb25sb2FkPSJsb2FkWE1MRG9jKCk7IHdpbmRvdy5w
YXJlbnQuc3ViZnJhbWVMb2FkZWQoKTsiIG9udW5sb2FkPSJ3aW5kb3cucGFyZW50LmxvZygnSWZy
YW1lIHVubG9hZGVkJyk7Ij4KIDxwPlRoaXMgc2hvdWxkIGhhdmUgYW4gWE1MSHR0cFJlcXVlc3Qg
Z29pbmcgb24gaW5zaWRlIGl0PC9wPgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2dldC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0LnR4dAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotUEFTUwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA0LWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA0LWlmcmFtZS5odG1sCShyZXZpc2lvbiAx
MjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy91cmktcmVzb2x1dGlvbi1vcGVyYS1vcGVuLTAwNC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTIsOCArMTIsOCBAQAogICAgICAgICAgICAgY2xpZW50Lm9ucmVhZHlzdGF0ZWNoYW5n
ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGlmIChjbGllbnQucmVhZHlTdGF0ZSA9
PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgIHAuZmlyc3RDaGlsZC5kYXRhID0gY2xpZW50LnJl
c3BvbnNlVGV4dDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2xpZW50LnNlbmQoIiIpOwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvdXJp
LXJlc29sdXRpb24tb3BlcmEtb3Blbi0wMDUtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvdXJpLXJlc29sdXRp
b24tb3BlcmEtb3Blbi0wMDUtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3VyaS1yZXNvbHV0aW9u
LW9wZXJhLW9wZW4tMDA1LWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4
IEBACiAgICAgICAgICAgICBjbGllbnQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGNsaWVudC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICAg
ICAgICAgICAgICAgcC5maXJzdENoaWxkLmRhdGEgPSBjbGllbnQucmVzcG9uc2VUZXh0OwotICAg
ICAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjbGllbnQub3BlbigiR0VUIiwgInRlc3QtdXJpLXJlc29s
dXRpb24udHh0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy91cmktcmVzb2x1dGlvbi1vcGVyYS1vcGVuLTAwNi1pZnJhbWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNl
cy91cmktcmVzb2x1dGlvbi1vcGVyYS1vcGVuLTAwNi1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
dXJpLXJlc29sdXRpb24tb3BlcmEtb3Blbi0wMDYtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDggKzEyLDggQEAKICAgICAgICAgICAgIGNsaWVudC5vbnJlYWR5c3RhdGVjaGFuZ2Ug
PSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBpZiAoY2xpZW50LnJlYWR5U3RhdGUgPT0g
NCkgewogICAgICAgICAgICAgICAgICAgICBwLmZpcnN0Q2hpbGQuZGF0YSA9IGNsaWVudC5yZXNw
b25zZVRleHQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvdXJpLXJlc29sdXRpb24tb3BlcmEtb3Bl
bi0wMDctaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvdXJpLXJlc29sdXRpb24tb3BlcmEtb3Blbi0wMDctaWZy
YW1lLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA3LWlmcmFt
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgICAgICAgICBjbGll
bnQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGNsaWVudC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICAgICAgICAgICAgICAgcC5maXJzdENo
aWxkLmRhdGEgPSBjbGllbnQucmVzcG9uc2VUZXh0OwotICAgICAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjbGllbnQub3BlbigiR0VUIiwgInRlc3QtdXJpLXJlc29sdXRpb24udHh0Iik7CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy91cmktcmVzb2x1
dGlvbi1vcGVyYS1vcGVuLTAwOC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy91cmktcmVzb2x1dGlvbi1vcGVy
YS1vcGVuLTAwOC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvdXJpLXJlc29sdXRpb24tb3BlcmEt
b3Blbi0wMDgtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDggKzE2LDggQEAKICAg
ICAgICAgZnVuY3Rpb24gdGVzdChjbGllbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHAuZmly
c3RDaGlsZC5kYXRhID0gY2xpZW50LnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAg
ICAgIDwvc2NyaXB0PgogICAgIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA5LWlm
cmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDA5LWlmcmFtZS5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy91cmktcmVzb2x1dGlvbi1vcGVyYS1vcGVuLTAwOS1pZnJhbWUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogICAgICAgICAgICAgY2xpZW50Lm9ucmVh
ZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGlmIChjbGllbnQu
cmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgIHAuZmlyc3RDaGlsZC5kYXRh
ID0gY2xpZW50LnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2xpZW50
Lm9wZW4oIkdFVCIsICJ0ZXN0LXVyaS1yZXNvbHV0aW9uLnR4dCIpOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvdXJpLXJlc29sdXRpb24tb3Bl
cmEtb3Blbi0wMTAtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvdXJpLXJlc29sdXRpb24tb3BlcmEtb3Blbi0w
MTAtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3VyaS1yZXNvbHV0aW9uLW9wZXJhLW9wZW4tMDEw
LWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICAgICAg
ICBjbGllbnQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGNsaWVudC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICAgICAgICAgICAgICAgcC5m
aXJzdENoaWxkLmRhdGEgPSBjbGllbnQucmVzcG9uc2VUZXh0OwotICAgICAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjbGllbnQub3BlbigiR0VUIiwgInRlc3QtdXJpLXJlc29sdXRpb24udHh0Iik7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWxo
dHRwcmVxdWVzdC1taW1ldHlwZS1taXhlZC1jYXNlLnBocAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWxodHRwcmVxdWVzdC1t
aW1ldHlwZS1taXhlZC1jYXNlLnBocAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1saHR0cHJlcXVlc3QtbWltZXR5
cGUtbWl4ZWQtY2FzZS5waHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACiA8P3BocAog
aGVhZGVyKCdDb250ZW50LVR5cGU6IEFwcGxpY2F0aW9uL1hodG1sK1htbCcpOwogcmVhZGZpbGUo
J2xvYWQtaWNvbi54aHRtbCcpOwotPz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis/PgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMDEu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3dlYi1hcHBzLzAwMS5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAwMS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC02LDkgKzYsOSBAQAogIDxib2R5PgogICA8cD5TY3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKICAgIH0KIAogICAgdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgncCcpWzBdOwpAQCAtMTksOCArMTksOCBAQAogICAgci5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGlmIChyLnJlYWR5U3RhdGUgPT0gNCkgewog
ICAgICAgIHAuZmlyc3RDaGlsZC5kYXRhID0gci5yZXNwb25zZVRleHQ7Ci0gICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgfSBlbHNlCiAgICAgICAgcC5maXJzdENoaWxk
LmRhdGEgPSAnVGVzdCBpbiBwcm9ncmVzcyAoJyArIHIucmVhZHlTdGF0ZSArICcvNCknOwogICAg
fTsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMv
MDAyLXNpbXBsZS1hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAwMi1zaW1wbGUtYS50eHQJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDAyLXNp
bXBsZS1hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotQQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKK0EKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvd2ViLWFwcHMvMDAyLXNpbXBsZS1iLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAwMi1zaW1wbGUtYi50eHQJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2Vi
LWFwcHMvMDAyLXNpbXBsZS1iLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotQgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0IKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDAyLXNpbXBsZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDAyLXNpbXBsZS5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3dlYi1hcHBzLzAwMi1zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2
LDggQEAKICA8Ym9keT4KICAgPHA+RkFJTDogU2NyaXB0IGRpZCBub3QgcnVuLjwvcD4KICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
dmFyIHAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgncCcpWzBdOwogICAgcC5maXJz
dENoaWxkLmRhdGEgPSAnRkFJTDogVGVzdCBkaWQgbm90IGNvbXBsZXRlLic7CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAwMi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMv
MDAyLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDAyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4
IEBACiAgPGJvZHk+CiAgIDxwPlNjcmlwdCBkaWQgbm90IHJ1bi48L3A+CiAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgIHZhciBwID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3AnKVswXTsKICAgIHAuZmlyc3RDaGlsZC5k
YXRhID0gJ0ZBSUw6IFRlc3Qgc2NyaXB0IGZhaWxlZCBhbmQgd2luZG93Lm9uZXJyb3Igbm90IHN1
cHBvcnRlZC4nOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93
ZWItYXBwcy8wMDJhLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAwMmEudHh0CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAwMmEudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xICsxIEBACi1GaXJzdCBvcGVuKCkgdXNlZC4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCitGaXJzdCBvcGVuKCkgdXNlZC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDAyYi50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMDJiLnR4dAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93
ZWItYXBwcy8wMDJiLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotVFdPClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorVFdPCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAwMmMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDAyYy50eHQJKHJldmlzaW9uIDEy
MDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMv
MDAyYy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLVRIUkVFClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorVEhSRUUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvd2ViLWFwcHMvMDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMDMuaHRtbAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMDMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKICA8Ym9keT4KICAgPHA+RkFJTDog
U2NyaXB0IGRpZCBub3QgcnVuLjwvcD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgotICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgncCcpWzBdOwogICAgcC5maXJzdENoaWxkLmRhdGEgPSAnRkFJTDogVGVzdCBz
Y3JpcHQgZGlkIG5vdCBmaW5pc2guJzsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMDQuaHRtbAkocmV2aXNpb24gMTIw
MTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8w
MDQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKICA8Ym9keT4KICAgPHA+RkFJ
TDogU2NyaXB0IGRpZCBub3QgcnVuLjwvcD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgotICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgncCcpWzBdOwogICAgcC5maXJzdENoaWxkLmRhdGEgPSAnRkFJTDogVGVz
dCBzY3JpcHQgZGlkIG5vdCBmaW5pc2guJzsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDA1Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMDUuaHRtbAkocmV2aXNpb24g
MTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBw
cy8wMDUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKICA8Ym9keT4KICAgPHA+
RkFJTDogU2NyaXB0IGRpZCBub3QgcnVuLjwvcD4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgotICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgdmFyIHAgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgncCcpWzBdOwogICAgcC5maXJzdENoaWxkLmRhdGEgPSAnRkFJTDog
VGVzdCBzY3JpcHQgZGlkIG5vdCBmaW5pc2guJzsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDA3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMDcuaHRtbAkocmV2aXNp
b24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWIt
YXBwcy8wMDcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogICA8cD5GQUlM
OiBTY3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8cHJlPjwvcHJlPgogICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIgcCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF07CiAgICB2YXIgcHJlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ByZScpWzBdOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMDguaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAwOC5odG1sCShy
ZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3dlYi1hcHBzLzAwOC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogIDxib2R5
PgogICA8cD5GQUlMOiBTY3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIgcCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF07CiAgICBwLmZpcnN0Q2hpbGQuZGF0YSA9
ICdGQUlMOiBUZXN0IHNjcmlwdCBkaWQgbm90IGZpbmlzaC4nOwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMTAuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAxMC5odG1s
CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3dlYi1hcHBzLzAxMC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogIDxi
b2R5PgogICA8cD5GQUlMOiBTY3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIgcCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF07CiAgICBwLmZpcnN0Q2hpbGQuZGF0
YSA9ICdGQUlMOiBUZXN0IHNjcmlwdCBkaWQgbm90IGZpbmlzaC4nOwpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMTEuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAxMS5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3dlYi1hcHBzLzAxMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAog
IDxib2R5PgogICA8cD5GQUlMOiBTY3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIgcCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF07CiAgICBwLmZpcnN0Q2hpbGQu
ZGF0YSA9ICdGQUlMOiBUZXN0IHNjcmlwdCBkaWQgbm90IGZpbmlzaC4nOwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMTIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAx
Mi5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3dlYi1hcHBzLzAxMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QAogIDxib2R5PgogICA8cD5GQUlMOiBTY3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIg
cCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF07CiAgICBwLmZpcnN0Q2hp
bGQuZGF0YSA9ICdGQUlMOiBUZXN0IHNjcmlwdCBkaWQgbm90IGZpbmlzaC4nOwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy8wMTMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBz
LzAxMy5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAxMy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDkgKzYs
OSBAQAogIDxib2R5PgogICA8cD5GQUlMOiBTY3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKICAgIH0KIAogICAgdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgncCcpWzBdOwpAQCAtMjksOCArMjksOCBAQAogICAgICAgICAgICB2YXIgYzIg
PSByLnN0YXR1c1RleHQ7CiAgICAgICAgICAgIHAuZmlyc3RDaGlsZC5kYXRhID0gYzEgPT0gNDAw
ICYmIGMyID09ICdHb29kIHdvcmsnID8gJ1BBU1MnIDogJ0ZBSUw6IFN0YXR1cyBhdCByZWFkeVN0
YXRlIDMgd2FzOiAnICsgYzEgKyAnLCAiJyArIGMyICsgJyInOwogCi0gICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICB9LCA1MDApOwog
ICAgICAgIH0KICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC93ZWItYXBwcy8wMTQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAxNC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAxNC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogIDxib2R5PgogICA8cD5GQUlMOiBTY3Jp
cHQgZGlkIG5vdCBydW4uPC9wPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0g
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIgcCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdwJylbMF07CiAgICBwLmZpcnN0Q2hpbGQuZGF0YSA9ICdGQUlMOiBUZXN0IHNjcmlw
dCBkaWQgbm90IGZpbmlzaC4nOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC93ZWItYXBwcy8wMTUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAxNS5odG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAxNS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogIDxib2R5PgogICA8cD5GQUlMOiBT
Y3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIgcCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdwJylbMF07CiAgICBwLmZpcnN0Q2hpbGQuZGF0YSA9ICdGQUlMOiBUZXN0IHNj
cmlwdCBkaWQgbm90IGZpbmlzaC4nOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC93ZWItYXBwcy8wMTguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAxOC5odG1sCShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dlYi1hcHBzLzAx
OC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogICBnZXQgYW55IGFsZXJ0cyBv
ciBzZWUgdGhlIHdvcmQgIkZBSUwiIGFueXdoZXJlIG9uIHRoZSBuZXh0IGxpbmUuPC9wPgogICA8
cD5GQUlMOiBTY3JpcHQgZGlkIG5vdCBydW4uPC9wPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+Ci0gICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICB2YXIgcCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMV07CiAgICBwLmZpcnN0Q2hpbGQuZGF0YSA9ICdGQUlM
OiBUZXN0IHNjcmlwdCBkaWQgbm90IGZpbmlzaC4nOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy9yZWFkbWUudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvcmVhZG1lLnR4dAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC93ZWItYXBwcy9yZWFkbWUudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi1UZXN0cyBz
dWJtaXR0ZWQgYnkgSWFuICdIaXhpZScgSGlja3NvbiwgdGhlIGN1cnJlbnQgdmVyc2lvbiBpcyBh
dmFpbGFibGUgYXQgIDxodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2FkaG9jL2RvbS93ZWItYXBw
cy9YTUxIdHRwUmVxdWVzdC8+LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK1Rlc3RzIHN1
Ym1pdHRlZCBieSBJYW4gJ0hpeGllJyBIaWNrc29uLCB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIGF2
YWlsYWJsZSBhdCAgPGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvYWRob2MvZG9tL3dlYi1hcHBz
L1hNTEh0dHBSZXF1ZXN0Lz4uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3dlYi1hcHBzL3Jlc291cmNlcy8wMTgtdGVzdC54bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93ZWItYXBwcy9yZXNvdXJjZXMvMDE4
LXRlc3QueG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dlYi1hcHBzL3Jlc291cmNlcy8wMTgtdGVzdC54bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTYsNCArNiw0IEBACiAgIDxmb3JtIGFjdGlvbj0iamF2YXNjcmlwdDphbGVydCgnRkFJ
TCcpIiBvbnN1Ym1pdD0idGhpcy5maXJzdENoaWxkLmRhdGEgPSAnRkFJTCc7IHJldHVybiBmYWxz
ZTsiPlBBU1M8L2Zvcm0+CiAgIDxzY3JpcHQ+YWxlcnQoJ0ZBSUwnKTwvc2NyaXB0PgogIDwvYm9k
eT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvYWJvcnQtZXhjZXB0
aW9uLWFzc2VydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvd29ya2Vycy9hYm9ydC1leGNlcHRpb24tYXNzZXJ0Lmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vy
cy9hYm9ydC1leGNlcHRpb24tYXNzZXJ0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5
IEBACiA8cD5PbiBzdWNjZXNzLCB5b3Ugc2hvdWxkIHNlZSBhIHNpbmdsZSBQQVNTIGJlbG93Ljwv
cD4KIDxzY3JpcHQgc3JjPSIuLi8uLi93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItdXRpbC5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICB2YXIgY29uc29sZV9tZXNzYWdl
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CkBAIC0zNiw4ICszNiw4IEBACiAgICAg
ZnVuY3Rpb24gZG9uZVdpdGhUZXN0KCkKICAgICB7CiAgICAgICAgIGxvZygiUEFTUyIpOwotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiA8L3Njcmlw
dD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
d29ya2Vycy9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtZ2V0LWZhaWwtbm9uLXNpbXBs
ZS10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtZ2V0LWZhaWwtbm9u
LXNpbXBsZS10ZXN0LmpzCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2lj
LWdldC1mYWlsLW5vbi1zaW1wbGUtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBjb25zb2xl
X21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKQEAgLTIyLDExICsyMiwx
MSBAQCB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgIGxvZyhldmVu
dC5kYXRhLnN1YnN0cig0KSk7CiAgICAgZWxzZSBpZiAoL0RPTkUvLnRlc3QoZXZlbnQuZGF0YSkp
IHsKICAgICAgICAgbG9nKCJET05FIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvZygiRVJST1IiKTsKLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9j
bG9zZS10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UtdGVzdC5qcwkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291
cmNlcy9jbG9zZS10ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
CkBAIC01NCw4ICs1NCw4IEBAIGZ1bmN0aW9uIHRlc3RTeW5jKCkgewogZnVuY3Rpb24gZG9uZSgp
CiB7CiAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBoYW5kbGVFeGNlcHRpb24oZXZ0KQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9maWxlLW5vdC1m
b3VuZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL2ZpbGUtbm90LWZvdW5kLmpzCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3Vy
Y2VzL2ZpbGUtbm90LWZvdW5kLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICB9CiAKIHZhciBjb25zb2xlX21lc3Nh
Z2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKQEAgLTIwLDcgKzIwLDcgQEAgd29y
a2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkKICAgICAgICAgbG9nKGV2dC5kYXRhLnN1YnN0
cig0KSk7CiAgICAgZWxzZSBpZiAoL0RPTkUvLnRlc3QoZXZ0LmRhdGEpKSB7CiAgICAgICAgIGxv
ZygiUEFTUyIpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dv
cmtlcnMvcmVzb3VyY2VzL21ldGhvZHMtYXN5bmMtdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL21ldGhv
ZHMtYXN5bmMtdGVzdC5qcwkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9tZXRob2RzLWFzeW5jLXRlc3Qu
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogfQogCiB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIm9sIik7CkBAIC0yMiwxMSArMjIsMTEgQEAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2dCkKICAgICAgICAgbG9nKGV2dC5kYXRhLnN1YnN0cig0KSk7CiAgICAgZWxzZSBp
ZiAoL0RPTkUvLnRlc3QoZXZ0LmRhdGEpKSB7CiAgICAgICAgIGxvZygiRE9ORSIpOwotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBsb2coIkVSUk9SIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvbWV0aG9kcy10ZXN0LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9yZXNvdXJjZXMvbWV0
aG9kcy10ZXN0LmpzCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL21ldGhvZHMtdGVzdC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiB9CiAKIHZhciBjb25zb2xlX21lc3NhZ2VzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b2wiKTsKQEAgLTIwLDcgKzIwLDcgQEAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkK
ICAgICAgICAgbG9nKGV2dC5kYXRhLnN1YnN0cig0KSk7CiAgICAgZWxzZSBpZiAoL0RPTkUvLnRl
c3QoZXZ0LmRhdGEpKSB7CiAgICAgICAgIGxvZygiRE9ORSIpOwotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvcmVzb3VyY2VzL3JlZmVyZXItdGVzdC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dv
cmtlcnMvcmVzb3VyY2VzL3JlZmVyZXItdGVzdC5qcwkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3Jlc291cmNlcy9yZWZl
cmVyLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACi1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7CkBAIC0yMSwxMSArMjEsMTEgQEAgd29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkKICAgICBpZiAoL2xvZyAuKy8udGVzdChldnQuZGF0YSkpCiAg
ICAgICAgIGxvZyhldnQuZGF0YS5zdWJzdHIoNCkpOwogICAgIGVsc2UgaWYgKC9ET05FLy50ZXN0
KGV2dC5kYXRhKSkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICB9IGVsc2UgewogICAgICAgICBsb2coIkVSUk9SIik7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1sdmlld2VyL2V4dGVuc2lvbnMtYXBpLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWx2aWV3ZXIvZXh0ZW5zaW9ucy1hcGkuaHRtbAkocmV2
aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWx2aWV3ZXIvZXh0ZW5z
aW9ucy1hcGkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBAQAogPGh0bWw+CiA8
aGVhZD4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgeG1s
V2luZG93OwpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnb3V0cHV0JykudGV4dENvbnRlbnQgPSBzdHI7CiAgICAgICAgICAg
ICB4bWxXaW5kb3cuY2xvc2UoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAg
ICB9CiAKICAgICAgICAgZnVuY3Rpb24gY2hlY2tTb3VyY2VYTUwoKQpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWx2aWV3ZXIvZHVtcEFzVGV4dC9mcmFtZXMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbHZpZXdlci9kdW1wQXNUZXh0L2ZyYW1lcy5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbHZpZXdl
ci9kdW1wQXNUZXh0L2ZyYW1lcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAog
CiBmdW5jdGlvbiBvbmxvYWQoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBpZnJhbWVzT3BlbmVkID0gMDsKQEAgLTEzLDEwICsx
MywxMCBAQCB2YXIgaWZyYW1lc09wZW5lZCA9IDA7CiBmdW5jdGlvbiBpZnJhbWVMb2FkZWQoKQog
ewogICAgIGlmICgrK2lmcmFtZXNPcGVuZWQgPT09IDIpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbHZpZXdlci9k
dW1wQXNUZXh0L3hodG1sLXRhZy54bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWx2aWV3ZXIvZHVtcEFzVGV4dC94aHRtbC10YWcueG1sCShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbHZpZXdlci9kdW1wQXNUZXh0L3hodG1sLXRh
Zy54bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAKICAgICA8eGh0bWw6c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgPCFbQ0RBVEFbCi0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIGlmIChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZ3JlZW4iKS5zdHlsZS5jb2xvciA9PSAiZ3JlZW4iKQogICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MnKS50ZXh0Q29udGVudCA9ICJTVUNDRVNT
IjsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oaXhpZTc2L2JhZC1zdWItcHJvdG9jb2wtY29udHJvbC1jaGFycy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2lu
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvYmFkLXN1Yi1wcm90b2NvbC1jb250
cm9sLWNoYXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0td2luL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
YmFkLXN1Yi1wcm90b2NvbC1jb250cm9sLWNoYXJzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwxOCArMSwxOCBAQAotQ09OU09MRSBNRVNTQUdFOiBXcm9uZyBwcm90b2NvbCBmb3Ig
V2ViU29ja2V0ICdcdTAwMDAnDQotQ09OU09MRSBNRVNTQUdFOiBXcm9uZyBwcm90b2NvbCBmb3Ig
V2ViU29ja2V0ICdcdTAwMDknDQotQ09OU09MRSBNRVNTQUdFOiBXcm9uZyBwcm90b2NvbCBmb3Ig
V2ViU29ja2V0ICdcdTAwMUInDQotVGVzdCBXZWJTb2NrZXQgYmFkIHN1Yi1wcm90b2NvbCBuYW1l
cyBieSBjb250cm9sIGNoYXJhY3RlcnMuDQotDQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLg0K
LQ0KLVBBU1MgbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC9zaW1wbGUiLCAiXDAi
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuDQot
UEFTUyBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3NpbXBsZSIsICIJIikgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLg0KLVBBU1Mg
bmV3IFdlYlNvY2tldCgid3M6Ly8xMjcuMC4wLjE6ODg4MC9zaW1wbGUiLCAiDQotIikgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuIElMTEVHQUwuDQotUEFTUyBu
ZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3NpbXBsZSIsICINCi0iKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gSUxMRUdBTC4NCi1QQVNTIG5l
dyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvc2ltcGxlIiwgIhsiKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuDQotUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQ0KLQ0KLVRFU1QgQ09NUExFVEUNCi0NCitDT05TT0xFIE1FU1NB
R0U6IFdyb25nIHByb3RvY29sIGZvciBXZWJTb2NrZXQgJ1x1MDAwMCcKK0NPTlNPTEUgTUVTU0FH
RTogV3JvbmcgcHJvdG9jb2wgZm9yIFdlYlNvY2tldCAnXHUwMDA5JworQ09OU09MRSBNRVNTQUdF
OiBXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICdcdTAwMUInCitUZXN0IFdlYlNvY2tldCBi
YWQgc3ViLXByb3RvY29sIG5hbWVzIGJ5IGNvbnRyb2wgY2hhcmFjdGVycy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitQQVNTIG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4
ODAvc2ltcGxlIiwgIlwwIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00g
RXhjZXB0aW9uIDEyLgorUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3Np
bXBsZSIsICIJIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0
aW9uIDEyLgorUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3NpbXBsZSIs
ICIKKyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiBJTExF
R0FMLgorUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3NpbXBsZSIsICIK
KyIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiBJTExFR0FM
LgorUEFTUyBuZXcgV2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3NpbXBsZSIsICIbIikg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvbWlzYy9leGVjdXRlLWFuZC1y
ZXR1cm4tdmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9odHRwL3Rlc3RzL21pc2MvZXhlY3V0ZS1hbmQtcmV0dXJuLXZhbHVlLmh0bWwJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMv
bWlzYy9leGVjdXRlLWFuZC1yZXR1cm4tdmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwy
NiArMiwyNiBAQAogPGh0bWw+CiA8Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAotICB2
YXIgaW50VGVzdCA9IGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRl
ZFdvcmxkQW5kUmV0dXJuVmFsdWUoMCwgIjUiKTsKKyAgdmFyIGludFRlc3QgPSB0ZXN0UnVubmVy
LmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFsdWUoMCwgIjUiKTsKICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnRXhwZWN0
aW5nIDU6ICcgKyBpbnRUZXN0KSk7CiAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CiAKLSAgdmFyIGRvdWJsZVRlc3QgPSBsYXlvdXRUZXN0
Q29udHJvbGxlci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlKDAs
ICIzLjE0Iik7CisgIHZhciBkb3VibGVUZXN0ID0gdGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlwdElu
SXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlKDAsICIzLjE0Iik7CiAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0V4cGVjdGluZyAzLjE0OiAnICsg
ZG91YmxlVGVzdCkpOwogICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2JyJykpOwogCi0gIHZhciBzdHJpbmdUZXN0ID0gbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZSgwLCAnIlRoZSBx
dWljayBicm93biBkb2cuIicpOworICB2YXIgc3RyaW5nVGVzdCA9IHRlc3RSdW5uZXIuZXZhbHVh
dGVTY3JpcHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZSgwLCAnIlRoZSBxdWljayBicm93
biBkb2cuIicpOwogICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCdFeHBlY3RpbmcgIlRoZSBxdWljayBicm93biBkb2cuIjogJyArIHN0cmluZ1Rlc3Qp
KTsKICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdi
cicpKTsKIAotICB2YXIgYm9vbGVhblRlc3QgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0
ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlKDAsICIhdHJ1ZSIpOworICB2YXIg
Ym9vbGVhblRlc3QgPSB0ZXN0UnVubmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5k
UmV0dXJuVmFsdWUoMCwgIiF0cnVlIik7CiAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0V4cGVjdGluZyBmYWxzZTogJyArIGJvb2xlYW5UZXN0KSk7
CiAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnIn
KSk7CiAKLSAgdmFyIG51bGxUZXN0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVTY3Jp
cHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZSgwLCAibnVsbCIpOworICB2YXIgbnVsbFRl
c3QgPSB0ZXN0UnVubmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFs
dWUoMCwgIm51bGwiKTsKICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgnRXhwZWN0aW5nIG51bGw6ICcgKyBudWxsVGVzdCkpOwogICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwogfQpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9taXNjL3NlbGVjdGlvbkFz
TWFya3VwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aHR0cC90ZXN0cy9taXNjL3NlbGVjdGlvbkFzTWFya3VwLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvbWlzYy9zZWxlY3Rp
b25Bc01hcmt1cC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGRvY3VtZW50LmxvY2F0
aW9uLmhyZWYgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDgwL21pc2MvcmVzb3VyY2VzL2Nocm9taXVt
LXNlbGVjdGlvbkFzTWFya3VwLmh0bWwiOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vaHR0cC90ZXN0cy9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9w
ZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvcGVybWlzc2lvbmNs
aWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBA
QAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBQZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tzKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBQZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tzKCk7CiB9CiAKIGZ1bmN0aW9uIGxv
ZyhhKQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1
cml0eS93aW5kb3ctbmFtZWQtcHJvdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvd2luZG93LW5hbWVk
LXByb3RvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS93aW5kb3ctbmFtZWQtcHJvdG8tZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdF
OiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vbG9jYWxob3N0OjgwODAvc2VjdXJpdHkvcmVzb3VyY2VzL2lubm9jZW50LXZpY3RpbS13aXRo
LWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD4o
ZnVuY3Rpb24gKCkgeyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpICAgICAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAgICAgICAgfSwgMCk7ICAg
ICAgICAgICAgd2luZG93Lm5hbWUgPSAiX19wcm90b19fIjsgICAgICAgICAgICBwYXJlbnQuX19w
cm90b19fLmFsZXJ0LmNvbnN0cnVjdG9yKCJhbGVydChkb2N1bWVudC5ib2R5LmlubmVySFRNTCki
KSgpOyAgICAgICAgfSkoKTwvc2NyaXB0Pi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBt
dXN0IG1hdGNoLgorQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRv
IGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwODAvc2VjdXJpdHkvcmVz
b3VyY2VzL2lubm9jZW50LXZpY3RpbS13aXRoLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBV
UkwgZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD4oZnVuY3Rpb24gKCkgeyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyAgICAgICAgICAgIH0s
IDApOyAgICAgICAgICAgIHdpbmRvdy5uYW1lID0gIl9fcHJvdG9fXyI7ICAgICAgICAgICAgcGFy
ZW50Ll9fcHJvdG9fXy5hbGVydC5jb25zdHJ1Y3RvcigiYWxlcnQoZG9jdW1lbnQuYm9keS5pbm5l
ckhUTUwpIikoKTsgICAgICAgIH0pKCk8L3NjcmlwdD4uIERvbWFpbnMsIHByb3RvY29scyBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KIAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuY2F1Z2h0IFR5
cGVFcnJvcjogQ2Fubm90IHJlYWQgcHJvcGVydHkgJ2FsZXJ0JyBvZiB1bmRlZmluZWQKIApJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9hYm91
dEJsYW5rL3hzcy1ERU5JRUQtbmF2aWdhdGUtb3BlbmVyLWRvY3VtZW50LXdyaXRlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rl
c3RzL3NlY3VyaXR5L2Fib3V0QmxhbmsveHNzLURFTklFRC1uYXZpZ2F0ZS1vcGVuZXItZG9jdW1l
bnQtd3JpdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2Fib3V0QmxhbmsveHNzLURFTklF
RC1uYXZpZ2F0ZS1vcGVuZXItZG9jdW1lbnQtd3JpdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0zLDcgKzMsNyBAQCBDT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0
dGVtCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5jYXVnaHQgVHlwZUVycm9yOiBDYW5ub3Qg
cmVhZCBwcm9wZXJ0eSAnYm9keScgb2YgdW5kZWZpbmVkCiBUaGlzIHBhZ2Ugb3BlbnMgYSB3aW5k
b3cgdG8gIiIsIGluamVjdHMgbWFsaWNpb3VzIGNvZGUsIGFuZCB0aGVuIG5hdmlnYXRlcyBpdHMg
b3BlbmVyIHRvIHRoZSB2aWN0aW0uIFRoZSBvcGVuZWQgd2luZG93IHRoZW4gdHJpZXMgdG8gc2Ny
aXB0cyBpdHMgb3BlbmVyIGFmdGVyIGRvY3VtZW50LndyaXRlaW5nIGEgbmV3IGRvY3VtZW50Lgog
Q29kZSBpbmplY3RlZCBpbnRvIHdpbmRvdzoKLTxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoJzxzY3Jp
cHQ+ZnVuY3Rpb24gd3JpdGUodGFyZ2V0LCBtZXNzYWdlKSB7IHRhcmdldC5kb2N1bWVudC5ib2R5
LmlubmVySFRNTCA9IG1lc3NhZ2U7IH1zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dyaXRlKHdpbmRv
dy5vcGVuZXIsIFwnRkFJTDogWFNTIHdhcyBhbGxvd2VkLlwnKTt9LCAxMDApO3NldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7d3JpdGUod2luZG93Lm9wZW5lci50b3AuZnJhbWVzWzFdLCBcJ1NVQ0NFU1M6
IFdpbmRvdyByZW1haW5lZCBpbiBvcmlnaW5hbCBTZWN1cml0eU9yaWdpbi5cJyk7fSwgMjAwKTtz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBs
YXlvdXRUZXN0Q29udHJvbGxlci5nbG9iYWxGbGFnID0gdHJ1ZTsgfSwgMzAwKTs8XC9zY3JpcHQ+
Jyk7PC9zY3JpcHQ+Cis8c2NyaXB0PmRvY3VtZW50LndyaXRlKCc8c2NyaXB0PmZ1bmN0aW9uIHdy
aXRlKHRhcmdldCwgbWVzc2FnZSkgeyB0YXJnZXQuZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBt
ZXNzYWdlOyB9c2V0VGltZW91dChmdW5jdGlvbigpIHt3cml0ZSh3aW5kb3cub3BlbmVyLCBcJ0ZB
SUw6IFhTUyB3YXMgYWxsb3dlZC5cJyk7fSwgMTAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dy
aXRlKHdpbmRvdy5vcGVuZXIudG9wLmZyYW1lc1sxXSwgXCdTVUNDRVNTOiBXaW5kb3cgcmVtYWlu
ZWQgaW4gb3JpZ2luYWwgU2VjdXJpdHlPcmlnaW4uXCcpO30sIDIwMCk7c2V0VGltZW91dChmdW5j
dGlvbigpIHsgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLmdsb2JhbEZsYWcgPSB0
cnVlOyB9LCAzMDApOzxcL3NjcmlwdD4nKTs8L3NjcmlwdD4KICAKIAogLS0tLS0tLS0KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRC
bGFuay94c3MtREVOSUVELW5hdmlnYXRlLW9wZW5lci1qYXZhc2NyaXB0LXVybC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0
cy9zZWN1cml0eS9hYm91dEJsYW5rL3hzcy1ERU5JRUQtbmF2aWdhdGUtb3BlbmVyLWphdmFzY3Jp
cHQtdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9hYm91dEJsYW5rL3hzcy1ERU5JRUQt
bmF2aWdhdGUtb3BlbmVyLWphdmFzY3JpcHQtdXJsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMyw3ICszLDcgQEAgQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRl
bQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuY2F1Z2h0IFR5cGVFcnJvcjogQ2Fubm90IHJl
YWQgcHJvcGVydHkgJ2JvZHknIG9mIHVuZGVmaW5lZAogVGhpcyBwYWdlIG9wZW5zIGEgd2luZG93
IHRvICIiLCBpbmplY3RzIG1hbGljaW91cyBjb2RlLCBhbmQgdGhlbiBuYXZpZ2F0ZXMgaXRzIG9w
ZW5lciB0byB0aGUgdmljdGltLiBUaGUgb3BlbmVkIHdpbmRvdyB0aGVuIHRyaWVzIHRvIHNjcmlw
dHMgaXRzIG9wZW5lciBhZnRlciByZWxvYWRpbmcgaXRzZWxmIGFzIGEgamF2YXNjcmlwdCBVUkwu
CiBDb2RlIGluamVjdGVkIGludG8gd2luZG93OgotPHNjcmlwdD53aW5kb3cubG9jYXRpb24gPSAn
amF2YXNjcmlwdDpcJzxzY3JpcHQ+ZnVuY3Rpb24gd3JpdGUodGFyZ2V0LCBtZXNzYWdlKSB7IHRh
cmdldC5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IG1lc3NhZ2U7IH1zZXRUaW1lb3V0KGZ1bmN0
aW9uKCkge3dyaXRlKHdpbmRvdy5vcGVuZXIsIFxcXCdGQUlMOiBYU1Mgd2FzIGFsbG93ZWQuXFxc
Jyk7fSwgMTAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dyaXRlKHdpbmRvdy5vcGVuZXIudG9w
LmZyYW1lc1sxXSwgXFxcJ1NVQ0NFU1M6IFdpbmRvdyByZW1haW5lZCBpbiBvcmlnaW5hbCBTZWN1
cml0eU9yaWdpbi5cXFwnKTt9LCAyMDApO3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLmdsb2JhbEZsYWcg
PSB0cnVlOyB9LCAzMDApOzxcXFwvc2NyaXB0PlwnJzwvc2NyaXB0PgorPHNjcmlwdD53aW5kb3cu
bG9jYXRpb24gPSAnamF2YXNjcmlwdDpcJzxzY3JpcHQ+ZnVuY3Rpb24gd3JpdGUodGFyZ2V0LCBt
ZXNzYWdlKSB7IHRhcmdldC5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IG1lc3NhZ2U7IH1zZXRU
aW1lb3V0KGZ1bmN0aW9uKCkge3dyaXRlKHdpbmRvdy5vcGVuZXIsIFxcXCdGQUlMOiBYU1Mgd2Fz
IGFsbG93ZWQuXFxcJyk7fSwgMTAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dyaXRlKHdpbmRv
dy5vcGVuZXIudG9wLmZyYW1lc1sxXSwgXFxcJ1NVQ0NFU1M6IFdpbmRvdyByZW1haW5lZCBpbiBv
cmlnaW5hbCBTZWN1cml0eU9yaWdpbi5cXFwnKTt9LCAyMDApO3NldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5nbG9iYWxGbGFnID0gdHJ1ZTsg
fSwgMzAwKTs8XFxcL3NjcmlwdD5cJyc8L3NjcmlwdD4KICAKIAogLS0tLS0tLS0KSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFu
ay94c3MtREVOSUVELXNldC1vcGVuZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFuay94
c3MtREVOSUVELXNldC1vcGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMjAxMDkpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2Fib3V0Qmxh
bmsveHNzLURFTklFRC1zZXQtb3BlbmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
OCw3ICs4LDcgQEAgQ29kZSBpbmplY3RlZCBpbnRvIHdpbmRvdzoKIDxzY3JpcHQ+ZnVuY3Rpb24g
d3JpdGUodGFyZ2V0LCBtZXNzYWdlKSB7IHRhcmdldC5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9
IG1lc3NhZ2U7IH0KIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d3JpdGUod2luZG93Lm9wZW5lci50
b3AuZnJhbWVzWzBdLCAnRkFJTDogWFNTIHdhcyBhbGxvd2VkLicpO30sIDEwMCk7CiBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkge3dyaXRlKHdpbmRvdy5vcGVuZXIudG9wLmZyYW1lc1sxXSwgJ1NVQ0NF
U1M6IFdpbmRvdyByZW1haW5lZCBpbiBvcmlnaW5hbCBTZWN1cml0eU9yaWdpbi4nKTt9LCAyMDAp
Owotc2V0VGltZW91dChmdW5jdGlvbigpIHsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFsRmxhZyA9IHRydWU7IH0sIDMwMCk7PC9zY3Jp
cHQ+CitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBpZiAod2luZG93LnRlc3RSdW5uZXIpIHRlc3RS
dW5uZXIuZ2xvYmFsRmxhZyA9IHRydWU7IH0sIDMwMCk7PC9zY3JpcHQ+CiAgCiAKIC0tLS0tLS0t
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5
L2RhdGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLWluLWZvcmVpZ24tZG9tYWluLXN1YmZy
YW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJs
LWluLWZvcmVpZ24tZG9tYWluLXN1YmZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIwMTA5
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9k
YXRhVVJML3hzcy1ERU5JRUQtZnJvbS1kYXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi1zdWJmcmFt
ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1F
U1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtZnJvbS1k
YXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi1zdWJmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBV
UkwgZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD53aW5kb3cub25sb2FkID0gZnVu
Y3Rpb24oKXt0cnkge3RvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWNjZXNzTWUnKS5pbm5l
ckhUTUwgPSAnRkFJTDogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20gYSBkYXRhOiBVUkwgb24gYSBk
aWZmZXJlbnQgZG9tYWluIHdhcyBhbGxvd2VkJzthbGVydCgnRkFJTDogTm8gZXhjZXB0aW9uIHRo
cm93bi4nKTt9IGNhdGNoIChlKSB7YWxlcnQoJ1BBU1M6IEV4Y2VwdGlvbiB0aHJvd24gc3VjY2Vz
c2Z1bGx5LicpO31pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKWxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTt9PC9zY3JpcHQ+PC9oZWFkPjxib2R5PjxwPklubmVyLWlubmVy
IGlmcmFtZS4gVGhpcyBpZnJhbWUgKHdoaWNoIGlzIGRhdGE6IFVSTCBhbmQgd2hvc2UgcGFyZW50
IGlzIG9uIGEgZm9yZWlnbiBkb21haW4pIGlzIHRoZSBmcmFtZSBhdHRlbXB0aW5nIHRvIGFjY2Vz
cyB0aGUgbWFpbiBmcmFtZS4gIEl0IHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MgdG8gaXQuPC9wPjwv
Ym9keT48L2h0bWw+LiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCitD
T05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5J
RUQtZnJvbS1kYXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi1zdWJmcmFtZS5odG1sIGZyb20gZnJh
bWUgd2l0aCBVUkwgZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD53aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKXt0cnkge3RvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWNjZXNz
TWUnKS5pbm5lckhUTUwgPSAnRkFJTDogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20gYSBkYXRhOiBV
Ukwgb24gYSBkaWZmZXJlbnQgZG9tYWluIHdhcyBhbGxvd2VkJzthbGVydCgnRkFJTDogTm8gZXhj
ZXB0aW9uIHRocm93bi4nKTt9IGNhdGNoIChlKSB7YWxlcnQoJ1BBU1M6IEV4Y2VwdGlvbiB0aHJv
d24gc3VjY2Vzc2Z1bGx5LicpO31pZiAod2luZG93LnRlc3RSdW5uZXIpdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7fTwvc2NyaXB0PjwvaGVhZD48Ym9keT48cD5Jbm5lci1pbm5lciBpZnJhbWUuIFRo
aXMgaWZyYW1lICh3aGljaCBpcyBkYXRhOiBVUkwgYW5kIHdob3NlIHBhcmVudCBpcyBvbiBhIGZv
cmVpZ24gZG9tYWluKSBpcyB0aGUgZnJhbWUgYXR0ZW1wdGluZyB0byBhY2Nlc3MgdGhlIG1haW4g
ZnJhbWUuICBJdCBzaG91bGQgbm90IGhhdmUgYWNjZXNzIHRvIGl0LjwvcD48L2JvZHk+PC9odG1s
Pi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCiBBTEVSVDogUEFT
UzogRXhjZXB0aW9uIHRocm93biBzdWNjZXNzZnVsbHkuCiBUaGUgc2NlbmFyaW8gZm9yIHRoaXMg
dGVzdCBpcyB0aGF0IHlvdSBoYXZlIGFuIGlmcmFtZSB3aXRoIGNvbnRlbnQgZnJvbSBhIGZvcmVp
Z24gZG9tYWluLiBJbiB0aGF0IGZvcmVpZ24gY29udGVudCBpcyBhbiBpZnJhbWUgd2hpY2ggbG9h
ZHMgYSBkYXRhOiBVUkwuIFRoaXMgdGVzdHMgdGhhdCB0aGUgZGF0YTogVVJMIGxvYWRlZCBpZnJh
bWUgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIG1haW4gZnJhbWUgdXNpbmcgdG9wLmRvY3Vt
ZW50LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1
cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtZnJvbS1kYXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi13
aW5kb3ctb3Blbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtZnJvbS1k
YXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tZGF0YS11cmwtaW4tZm9yZWlnbi1kb21h
aW4td2luZG93LW9wZW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBA
QAotQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBm
cmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZGF0YVVSTC94c3Mt
REVOSUVELWZyb20tZGF0YS11cmwtaW4tZm9yZWlnbi1kb21haW4td2luZG93LW9wZW4uaHRtbCBm
cm9tIGZyYW1lIHdpdGggVVJMIGRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjxzY3JpcHQ+d2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7dHJ5IHtwYXJlbnQub3BlbmVyLmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY2Nlc3NNZScpLmlubmVySFRNTCA9ICdGQUlMOiBDcm9zcyBmcmFtZSBhY2Nl
c3MgZnJvbSBhIGRhdGE6IFVSTCBvbiBhIGRpZmZlcmVudCBkb21haW4gd2FzIGFsbG93ZWQnO2Fs
ZXJ0KCdGQUlMOiBObyBleGNlcHRpb24gdGhyb3duLicpO30gY2F0Y2ggKGUpIHthbGVydCgnUEFT
UzogRXhjZXB0aW9uIHRocm93biBzdWNjZXNzZnVsbHkuJyk7fWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFsRmxhZyA9IHRydWU7fTwvc2Ny
aXB0PjwvaGVhZD48Ym9keT48cD5Jbm5lci1pbm5lciBpZnJhbWUuIFRoaXMgaWZyYW1lICh3aGlj
aCBpcyBkYXRhOiBVUkwgYW5kIHdob3NlIHBhcmVudCBpcyBvbiBhIGZvcmVpZ24gZG9tYWluKSBp
cyB0aGUgZnJhbWUgYXR0ZW1wdGluZyB0byBhY2Nlc3MgdGhlIG1haW4gZnJhbWUuICBJdCBzaG91
bGQgbm90IGhhdmUgYWNjZXNzIHRvIGl0LjwvcD48L2JvZHk+PC9odG1sPi4gRG9tYWlucywgcHJv
dG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2
YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tZGF0YS11cmwtaW4tZm9yZWln
bi1kb21haW4td2luZG93LW9wZW4uaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGRhdGE6dGV4dC9o
dG1sLDxodG1sPjxoZWFkPjxzY3JpcHQ+d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7dHJ5IHtw
YXJlbnQub3BlbmVyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2Nlc3NNZScpLmlubmVySFRN
TCA9ICdGQUlMOiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRhdGE6IFVSTCBvbiBhIGRpZmZl
cmVudCBkb21haW4gd2FzIGFsbG93ZWQnO2FsZXJ0KCdGQUlMOiBObyBleGNlcHRpb24gdGhyb3du
LicpO30gY2F0Y2ggKGUpIHthbGVydCgnUEFTUzogRXhjZXB0aW9uIHRocm93biBzdWNjZXNzZnVs
bHkuJyk7fWlmICh3aW5kb3cudGVzdFJ1bm5lcil0ZXN0UnVubmVyLmdsb2JhbEZsYWcgPSB0cnVl
O308L3NjcmlwdD48L2hlYWQ+PGJvZHk+PHA+SW5uZXItaW5uZXIgaWZyYW1lLiBUaGlzIGlmcmFt
ZSAod2hpY2ggaXMgZGF0YTogVVJMIGFuZCB3aG9zZSBwYXJlbnQgaXMgb24gYSBmb3JlaWduIGRv
bWFpbikgaXMgdGhlIGZyYW1lIGF0dGVtcHRpbmcgdG8gYWNjZXNzIHRoZSBtYWluIGZyYW1lLiAg
SXQgc2hvdWxkIG5vdCBoYXZlIGFjY2VzcyB0byBpdC48L3A+PC9ib2R5PjwvaHRtbD4uIERvbWFp
bnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIAogQUxFUlQ6IFBBU1M6IEV4Y2Vw
dGlvbiB0aHJvd24gc3VjY2Vzc2Z1bGx5LgogT3BlbmVyIEZyYW1lCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklF
RC1mcm9tLWRhdGEtdXJsLXN1Yi1mcmFtZS0yLWxldmVsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2Rh
dGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLXN1Yi1mcmFtZS0yLWxldmVsLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtZnJvbS1kYXRhLXVybC1zdWIt
ZnJhbWUtMi1sZXZlbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci1DT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9kYXRhVVJML3hzcy1E
RU5JRUQtZnJvbS1kYXRhLXVybC1zdWItZnJhbWUtMi1sZXZlbC5odG1sIGZyb20gZnJhbWUgd2l0
aCBVUkwgZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD5mdW5jdGlvbiB0ZXN0KCkg
e3RyeSB7dG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2Nlc3NNZSIpLmlubmVySFRNTCA9
ICJGQUlMOiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRhdGE6IFVSTCBpbnNpZGUgYW5vdGhl
ciBkYXRhOiBVUkwgd2FzIGFsbG93ZWQuIjt9IGNhdGNoIChlKSB7fWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpO308L3Njcmlw
dD48L2hlYWQ+PGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij48cD5Jbm5lci1pbm5lciBpZnJhbWUuPC9w
PjwvYm9keT48L2h0bWw+LiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2gu
CitDT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9kYXRhVVJML3hzcy1E
RU5JRUQtZnJvbS1kYXRhLXVybC1zdWItZnJhbWUtMi1sZXZlbC5odG1sIGZyb20gZnJhbWUgd2l0
aCBVUkwgZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD5mdW5jdGlvbiB0ZXN0KCkg
e3RyeSB7dG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2Nlc3NNZSIpLmlubmVySFRNTCA9
ICJGQUlMOiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRhdGE6IFVSTCBpbnNpZGUgYW5vdGhl
ciBkYXRhOiBVUkwgd2FzIGFsbG93ZWQuIjt9IGNhdGNoIChlKSB7fWlmICh3aW5kb3cudGVzdFJ1
bm5lcil0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTt9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9h
ZD0idGVzdCgpOyI+PHA+SW5uZXItaW5uZXIgaWZyYW1lLjwvcD48L2JvZHk+PC9odG1sPi4gRG9t
YWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCiBUaGlzIHRlc3RzIHRoYXQg
YSBkYXRhOiBVUkwgbG9hZGVkIGluIGFuIGlmcmFtZSBpbnNpZGUgYW5vdGhlciBkYXRhOiBVUkwg
bG9hZGVkIGlmcmFtZSBkb2Vzbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBtYWluIGZyYW1lLgogCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2Rh
dGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLXN1Yi1mcmFtZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1
cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtZnJvbS1kYXRhLXVybC1zdWItZnJhbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLXN1Yi1m
cmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1DT05TT0xF
IE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGgg
VVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtZnJv
bS1kYXRhLXVybC1zdWItZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGRhdGE6dGV4dC9o
dG1sLDxodG1sPjxoZWFkPjxzY3JpcHQ+ZnVuY3Rpb24gdGVzdCgpIHt0cnkge3BhcmVudC5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYWNjZXNzTWUnKS5pbm5lckhUTUwgPSAnRkFJTDogQ3Jvc3Mg
ZnJhbWUgYWNjZXNzIGZyb20gYSBkYXRhOiBVUkwgd2FzIGFsbG93ZWQuJzt9IGNhdGNoIChlKSB7
fWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPjxwPklubmVy
IGlmcmFtZS48L3A+PC9ib2R5PjwvaHRtbD4uIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMg
bXVzdCBtYXRjaC4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0
byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Rh
dGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLXN1Yi1mcmFtZS5odG1sIGZyb20gZnJhbWUg
d2l0aCBVUkwgZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD5mdW5jdGlvbiB0ZXN0
KCkge3RyeSB7cGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2Nlc3NNZScpLmlubmVy
SFRNTCA9ICdGQUlMOiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRhdGE6IFVSTCB3YXMgYWxs
b3dlZC4nO30gY2F0Y2ggKGUpIHt9aWYgKHdpbmRvdy50ZXN0UnVubmVyKXRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPjxwPklubmVy
IGlmcmFtZS48L3A+PC9ib2R5PjwvaHRtbD4uIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMg
bXVzdCBtYXRjaC4KIAogVGhpcyB0ZXN0cyB0aGF0IGEgZGF0YTogVVJMIGxvYWRlZCBpbiBhbiBp
ZnJhbWUgZG9lc24ndCBoYXZlIGFjY2VzcyB0byBpdHMgcGFyZW50J3MgZnJhbWUKIApJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJM
L3hzcy1ERU5JRUQtZnJvbS1kYXRhLXVybC1zdWItZnJhbWUtdG8tZGF0YS11cmwtc3ViLWZyYW1l
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLXN1
Yi1mcmFtZS10by1kYXRhLXVybC1zdWItZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMjAx
MDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5
L2RhdGFVUkwveHNzLURFTklFRC1mcm9tLWRhdGEtdXJsLXN1Yi1mcmFtZS10by1kYXRhLXVybC1z
dWItZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09O
U09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3
aXRoIFVSTCBkYXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48c2NyaXB0PmZ1bmN0aW9uIGZpcmVT
ZW50aW5lbCgpIHtpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKWxheW91dFRlc3RDb250
cm9sbGVyLmdsb2JhbEZsYWcgPSB0cnVlO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJm
aXJlU2VudGluZWwoKTsiPjxwPklubmVyIGlmcmFtZS48L3A+PHAgaWQ9J2FjY2Vzc01lJz5QYXNz
OiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIHNpYmxpbmcgZGF0YTogVVJMIHdhcyBkZW5pZWQu
PC9wPjwvYm9keT48L2h0bWw+IGZyb20gZnJhbWUgd2l0aCBVUkwgZGF0YTp0ZXh0L2h0bWwsPGh0
bWw+PGhlYWQ+PHNjcmlwdD5mdW5jdGlvbiBsb2FkZWQoKSB7aWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikge3NldFRpbWVvdXQod2FpdEZvckZsYWcsIDEpO2Z1bmN0aW9uIHdhaXRGb3JG
bGFnKCkge2lmICghbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFsRmxhZykge3NldFRpbWVvdXQo
d2FpdEZvckZsYWcsIDEpO3JldHVybjt9cGVyZm9ybVRlc3QoKTt9fSBlbHNlIHtkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICdDbGljayB0aGUgYnV0dG9uIHdo
ZW4gYWxsIHRoZSBzdWJmcmFtZXMgaGF2ZSBmaW5pc2hlZCBsb2FkaW5nLic7fX1mdW5jdGlvbiBw
ZXJmb3JtVGVzdCgpIHt0cnkge3BhcmVudC5mcmFtZXNbJ2ZpcnN0U3ViRnJhbWUnXS5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYWNjZXNzTWUnKS5pbm5lckhUTUwgPSAnRkFJTDogQ3Jvc3MgZnJh
bWUgYWNjZXNzIGZyb20gYSBzaWJsaW5nIGRhdGE6IFVSTCB3YXMgYWxsb3dlZC4nO30gY2F0Y2gg
KGUpIHt9aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcilsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7fTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyI+
PHA+SW5uZXIgaWZyYW1lLjwvcD48YnV0dG9uIG9uY2xpY2s9J3BlcmZvcm1UZXN0KCk7Jz5UZXN0
PC9idXR0b24+PHByZSBpZD0nY29uc29sZSc+PC9wcmU+PC9ib2R5PjwvaHRtbD4uIERvbWFpbnMs
IHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZl
IEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgZGF0YTp0ZXh0L2h0
bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD5mdW5jdGlvbiBmaXJlU2VudGluZWwoKSB7aWYgKHdpbmRv
dy50ZXN0UnVubmVyKXRlc3RSdW5uZXIuZ2xvYmFsRmxhZyA9IHRydWU7fTwvc2NyaXB0PjwvaGVh
ZD48Ym9keSBvbmxvYWQ9ImZpcmVTZW50aW5lbCgpOyI+PHA+SW5uZXIgaWZyYW1lLjwvcD48cCBp
ZD0nYWNjZXNzTWUnPlBhc3M6IENyb3NzIGZyYW1lIGFjY2VzcyBmcm9tIGEgc2libGluZyBkYXRh
OiBVUkwgd2FzIGRlbmllZC48L3A+PC9ib2R5PjwvaHRtbD4gZnJvbSBmcmFtZSB3aXRoIFVSTCBk
YXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48c2NyaXB0PmZ1bmN0aW9uIGxvYWRlZCgpIHtpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHtzZXRUaW1lb3V0KHdhaXRGb3JGbGFnLCAxKTtmdW5jdGlvbiB3
YWl0Rm9yRmxhZygpIHtpZiAoIXRlc3RSdW5uZXIuZ2xvYmFsRmxhZykge3NldFRpbWVvdXQod2Fp
dEZvckZsYWcsIDEpO3JldHVybjt9cGVyZm9ybVRlc3QoKTt9fSBlbHNlIHtkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICdDbGljayB0aGUgYnV0dG9uIHdoZW4g
YWxsIHRoZSBzdWJmcmFtZXMgaGF2ZSBmaW5pc2hlZCBsb2FkaW5nLic7fX1mdW5jdGlvbiBwZXJm
b3JtVGVzdCgpIHt0cnkge3BhcmVudC5mcmFtZXNbJ2ZpcnN0U3ViRnJhbWUnXS5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYWNjZXNzTWUnKS5pbm5lckhUTUwgPSAnRkFJTDogQ3Jvc3MgZnJhbWUg
YWNjZXNzIGZyb20gYSBzaWJsaW5nIGRhdGE6IFVSTCB3YXMgYWxsb3dlZC4nO30gY2F0Y2ggKGUp
IHt9aWYgKHdpbmRvdy50ZXN0UnVubmVyKXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO308L3Njcmlw
dD48L2hlYWQ+PGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPjxwPklubmVyIGlmcmFtZS48L3A+PGJ1
dHRvbiBvbmNsaWNrPSdwZXJmb3JtVGVzdCgpOyc+VGVzdDwvYnV0dG9uPjxwcmUgaWQ9J2NvbnNv
bGUnPjwvcHJlPjwvYm9keT48L2h0bWw+LiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11
c3QgbWF0Y2guCiAKIFRoaXMgdGVzdHMgdGhhdCBhIGRhdGE6IFVSTCBzdWJmcmFtZSBjYW4ndCBh
Y2Nlc3MgYSBzaWJsaW5nIGRhdGE6IFVSTCBzdWJmcmFtZS4KIApJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQt
ZnJvbS1kYXRhLXVybC10by1kYXRhLXVybC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hz
cy1ERU5JRUQtZnJvbS1kYXRhLXVybC10by1kYXRhLXVybC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tZGF0YS11cmwtdG8tZGF0YS11cmwtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBV
bnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBkYXRhOnRl
eHQvaHRtbCw8aHRtbD48aGVhZD48c2NyaXB0PmZ1bmN0aW9uIGZpcmVTZW50aW5lbCgpIHtpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKWxheW91dFRlc3RDb250cm9sbGVyLmdsb2JhbEZs
YWcgPSB0cnVlO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJmaXJlU2VudGluZWwoKTsi
PjxwIGlkPSJhY2Nlc3NNZSI+UEFTUzogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20gYSBkYXRhOiBV
Ukwgd2FzIGRlbmllZC48L3A+PHA+SW5uZXItaW5uZXIgaWZyYW1lLjwvcD48L2JvZHk+PC9odG1s
PiBmcm9tIGZyYW1lIHdpdGggVVJMIGRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjxzY3JpcHQ+
ZnVuY3Rpb24gbG9hZGVkKCkge3ZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5uZXInKTtpZnJhbWUuc3JjID0gJ2RhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjxzY3InICsg
J2lwdD5mdW5jdGlvbiBmaXJlU2VudGluZWwoKSB7aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcilsYXlvdXRUZXN0Q29udHJvbGxlci5nbG9iYWxGbGFnID0gdHJ1ZTt9PC9zY3InICsgJ2lw
dD48L2hlYWQ+PGJvZHkgb25sb2FkPSJmaXJlU2VudGluZWwoKTsiPjxwIGlkPSJhY2Nlc3NNZSI+
UEFTUzogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20gYSBkYXRhOiBVUkwgd2FzIGRlbmllZC48L3A+
PHA+SW5uZXItaW5uZXIgaWZyYW1lLjwvcD48L2JvZHk+PC9odG1sPic7aWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikge3NldFRpbWVvdXQod2FpdEZvckZsYWcsIDEpO2Z1bmN0aW9uIHdh
aXRGb3JGbGFnKCkge2lmICghbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFsRmxhZykge3NldFRp
bWVvdXQod2FpdEZvckZsYWcsIDEpO3JldHVybjt9cGVyZm9ybVRlc3QoKTt9fSBlbHNlIHtkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICdDbGljayB0aGUgYnV0
dG9uIHdoZW4gYWxsIHRoZSBzdWJmcmFtZXMgaGF2ZSBmaW5pc2hlZCBsb2FkaW5nLic7fX1mdW5j
dGlvbiBwZXJmb3JtVGVzdCgpIHt0cnkge2ZyYW1lc1swXS5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWNjZXNzTWUnKS5pbm5lckhUTUwgPSAnRkFJTDogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20g
YSBkYXRhOiBVUkwgd2FzIGFsbG93ZWQuJzt9IGNhdGNoIChlKSB7fWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpO308L3Njcmlw
dD48L2hlYWQ+PGJvZHkgb25sb2FkPSdsb2FkZWQoKTsnPjxpZnJhbWUgaWQ9J2lubmVyJz48L2lm
cmFtZT48cD5Jbm5lciBpZnJhbWUuPC9wPjxidXR0b24gb25jbGljaz0ncGVyZm9ybVRlc3QoKTsn
PlRlc3Q8L2J1dHRvbj48cHJlIGlkPSdjb25zb2xlJz48L3ByZT48L2JvZHk+PC9odG1sPi4gRG9t
YWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorQ09OU09MRSBNRVNTQUdFOiBV
bnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBkYXRhOnRl
eHQvaHRtbCw8aHRtbD48aGVhZD48c2NyaXB0PmZ1bmN0aW9uIGZpcmVTZW50aW5lbCgpIHtpZiAo
d2luZG93LnRlc3RSdW5uZXIpdGVzdFJ1bm5lci5nbG9iYWxGbGFnID0gdHJ1ZTt9PC9zY3JpcHQ+
PC9oZWFkPjxib2R5IG9ubG9hZD0iZmlyZVNlbnRpbmVsKCk7Ij48cCBpZD0iYWNjZXNzTWUiPlBB
U1M6IENyb3NzIGZyYW1lIGFjY2VzcyBmcm9tIGEgZGF0YTogVVJMIHdhcyBkZW5pZWQuPC9wPjxw
PklubmVyLWlubmVyIGlmcmFtZS48L3A+PC9ib2R5PjwvaHRtbD4gZnJvbSBmcmFtZSB3aXRoIFVS
TCBkYXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48c2NyaXB0PmZ1bmN0aW9uIGxvYWRlZCgpIHt2
YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lubmVyJyk7aWZyYW1lLnNyYyA9
ICdkYXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48c2NyJyArICdpcHQ+ZnVuY3Rpb24gZmlyZVNl
bnRpbmVsKCkge2lmICh3aW5kb3cudGVzdFJ1bm5lcil0ZXN0UnVubmVyLmdsb2JhbEZsYWcgPSB0
cnVlO308L3NjcicgKyAnaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9ImZpcmVTZW50aW5lbCgpOyI+
PHAgaWQ9ImFjY2Vzc01lIj5QQVNTOiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRhdGE6IFVS
TCB3YXMgZGVuaWVkLjwvcD48cD5Jbm5lci1pbm5lciBpZnJhbWUuPC9wPjwvYm9keT48L2h0bWw+
JztpZiAod2luZG93LnRlc3RSdW5uZXIpIHtzZXRUaW1lb3V0KHdhaXRGb3JGbGFnLCAxKTtmdW5j
dGlvbiB3YWl0Rm9yRmxhZygpIHtpZiAoIXRlc3RSdW5uZXIuZ2xvYmFsRmxhZykge3NldFRpbWVv
dXQod2FpdEZvckZsYWcsIDEpO3JldHVybjt9cGVyZm9ybVRlc3QoKTt9fSBlbHNlIHtkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICdDbGljayB0aGUgYnV0dG9u
IHdoZW4gYWxsIHRoZSBzdWJmcmFtZXMgaGF2ZSBmaW5pc2hlZCBsb2FkaW5nLic7fX1mdW5jdGlv
biBwZXJmb3JtVGVzdCgpIHt0cnkge2ZyYW1lc1swXS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWNjZXNzTWUnKS5pbm5lckhUTUwgPSAnRkFJTDogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20gYSBk
YXRhOiBVUkwgd2FzIGFsbG93ZWQuJzt9IGNhdGNoIChlKSB7fWlmICh3aW5kb3cudGVzdFJ1bm5l
cil0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTt9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0n
bG9hZGVkKCk7Jz48aWZyYW1lIGlkPSdpbm5lcic+PC9pZnJhbWU+PHA+SW5uZXIgaWZyYW1lLjwv
cD48YnV0dG9uIG9uY2xpY2s9J3BlcmZvcm1UZXN0KCk7Jz5UZXN0PC9idXR0b24+PHByZSBpZD0n
Y29uc29sZSc+PC9wcmU+PC9ib2R5PjwvaHRtbD4uIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9y
dHMgbXVzdCBtYXRjaC4KIAogVGhpcyB0ZXN0cyB0aGF0IGEgZGF0YTogVVJMIHN1YmZyYW1lIGNh
bid0IGFjY2VzcyBhIGNoaWxkIGRhdGE6IFVSTCBzdWJmcmFtZSBvZiBpdHNlbGYuCiAKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVS
TC94c3MtREVOSUVELWZyb20tamF2YXNjcmlwdC11cmwtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELWZyb20tamF2YXNjcmlwdC11cmwtd2luZG93LW9w
ZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC1mcm9tLWph
dmFzY3JpcHQtdXJsLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0
byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Rh
dGFVUkwveHNzLURFTklFRC1mcm9tLWphdmFzY3JpcHQtdXJsLXdpbmRvdy1vcGVuLmh0bWwgZnJv
bSBmcmFtZSB3aXRoIFVSTCBkYXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48c2NyaXB0PmZ1bmN0
aW9uIHRlc3QoKSB7dHJ5IHtvcGVuZXIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFjY2Vzc01l
IikuaW5uZXJIVE1MID0gIkZBSUw6IEFjY2VzcyBmcm9tIGEgd2luZG93IG9wZW5lZCB3aXRoIGEg
ZGF0YTogVVJMIHdhcyBhbGxvd2VkISI7fSBjYXRjaCAoZSkge31pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKWxheW91dFRlc3RDb250cm9sbGVyLmdsb2JhbEZsYWcgPSB0cnVlO308L3Nj
cmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij48cD5PcGVuZWQgRnJhbWUuPC9wPjwv
Ym9keT48L2h0bWw+LiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCitD
T05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5J
RUQtZnJvbS1qYXZhc2NyaXB0LXVybC13aW5kb3ctb3Blbi5odG1sIGZyb20gZnJhbWUgd2l0aCBV
UkwgZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD5mdW5jdGlvbiB0ZXN0KCkge3Ry
eSB7b3BlbmVyLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2Nlc3NNZSIpLmlubmVySFRNTCA9
ICJGQUlMOiBBY2Nlc3MgZnJvbSBhIHdpbmRvdyBvcGVuZWQgd2l0aCBhIGRhdGE6IFVSTCB3YXMg
YWxsb3dlZCEiO30gY2F0Y2ggKGUpIHt9aWYgKHdpbmRvdy50ZXN0UnVubmVyKXRlc3RSdW5uZXIu
Z2xvYmFsRmxhZyA9IHRydWU7fTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9InRlc3QoKTsi
PjxwPk9wZW5lZCBGcmFtZS48L3A+PC9ib2R5PjwvaHRtbD4uIERvbWFpbnMsIHByb3RvY29scyBh
bmQgcG9ydHMgbXVzdCBtYXRjaC4KIAogT3BlbmVyIEZyYW1lCiAKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVE
LXRvLWRhdGEtdXJsLWZyb20tZGF0YS11cmwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94
c3MtREVOSUVELXRvLWRhdGEtdXJsLWZyb20tZGF0YS11cmwtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC10by1kYXRhLXVybC1mcm9tLWRhdGEtdXJsLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTog
VW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgZGF0YTp0
ZXh0L2h0bWwsPGh0bWw+PGJvZHk+PHAgaWQ9J2FjY2Vzc01lJz5QQVNTOiBDcm9zcyBmcmFtZSBh
Y2Nlc3MgZnJvbSBhIGRhdGE6IFVSTCB3YXMgZGVuaWVkLjwvcD48cD5Jbm5lciBpZnJhbWUuPC9w
PjxpZnJhbWUgbmFtZT0naW5uZXJGcmFtZScgaWQ9J2lubmVyRnJhbWUnIHNyYz0nZGF0YTp0ZXh0
L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD5mdW5jdGlvbiB0ZXN0KCkge3RyeSB7cGFyZW50LmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2Nlc3NNZSIpLmlubmVySFRNTCA9ICJGQUlMOiBDcm9z
cyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRhdGE6IFVSTCB3YXMgYWxsb3dlZC4iO30gY2F0Y2ggKGUp
IHt9aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcilsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7fTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9InRlc3QoKTsiPjxwPklu
bmVyLWlubmVyIGlmcmFtZS48L3A+PC9ib2R5PjwvaHRtbD4nPjwvaWZyYW1lPjwvYm9keT48L2h0
bWw+IGZyb20gZnJhbWUgd2l0aCBVUkwgZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlw
dD5mdW5jdGlvbiB0ZXN0KCkge3RyeSB7cGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJh
Y2Nlc3NNZSIpLmlubmVySFRNTCA9ICJGQUlMOiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRh
dGE6IFVSTCB3YXMgYWxsb3dlZC4iO30gY2F0Y2ggKGUpIHt9aWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcilsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7fTwvc2NyaXB0Pjwv
aGVhZD48Ym9keSBvbmxvYWQ9InRlc3QoKTsiPjxwPklubmVyLWlubmVyIGlmcmFtZS48L3A+PC9i
b2R5PjwvaHRtbD4uIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KK0NP
TlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUg
d2l0aCBVUkwgZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGJvZHk+PHAgaWQ9J2FjY2Vzc01lJz5QQVNT
OiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRhdGE6IFVSTCB3YXMgZGVuaWVkLjwvcD48cD5J
bm5lciBpZnJhbWUuPC9wPjxpZnJhbWUgbmFtZT0naW5uZXJGcmFtZScgaWQ9J2lubmVyRnJhbWUn
IHNyYz0nZGF0YTp0ZXh0L2h0bWwsPGh0bWw+PGhlYWQ+PHNjcmlwdD5mdW5jdGlvbiB0ZXN0KCkg
e3RyeSB7cGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2Nlc3NNZSIpLmlubmVySFRN
TCA9ICJGQUlMOiBDcm9zcyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGRhdGE6IFVSTCB3YXMgYWxsb3dl
ZC4iO30gY2F0Y2ggKGUpIHt9aWYgKHdpbmRvdy50ZXN0UnVubmVyKXRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij48cD5Jbm5lci1p
bm5lciBpZnJhbWUuPC9wPjwvYm9keT48L2h0bWw+Jz48L2lmcmFtZT48L2JvZHk+PC9odG1sPiBm
cm9tIGZyYW1lIHdpdGggVVJMIGRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjxzY3JpcHQ+ZnVu
Y3Rpb24gdGVzdCgpIHt0cnkge3BhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNjZXNz
TWUiKS5pbm5lckhUTUwgPSAiRkFJTDogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20gYSBkYXRhOiBV
Ukwgd2FzIGFsbG93ZWQuIjt9IGNhdGNoIChlKSB7fWlmICh3aW5kb3cudGVzdFJ1bm5lcil0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTt9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0idGVzdCgp
OyI+PHA+SW5uZXItaW5uZXIgaWZyYW1lLjwvcD48L2JvZHk+PC9odG1sPi4gRG9tYWlucywgcHJv
dG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCiBUaGlzIHRlc3RzIHRoYXQgYSBkYXRhOiBV
UkwgbG9hZGVkIGluIGFuIGlmcmFtZSBpbnNpZGUgYW5vdGhlciBkYXRhOiBVUkwgbG9hZGVkIGlm
cmFtZSBkb2Vzbid0IGhhdmUgYWNjZXNzIHRvIGl0cyBwYXJlbnQsIHRoZSBmaXJzdCBkYXRhOiBV
UkwgbG9hZGVkIGlmcmFtZS4KIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
aHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtdG8tZGF0YS11cmwtaW4tZm9y
ZWlnbi1kb21haW4tc3ViZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVO
SUVELXRvLWRhdGEtdXJsLWluLWZvcmVpZ24tZG9tYWluLXN1YmZyYW1lLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90
ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtdG8tZGF0YS11cmwtaW4tZm9yZWlnbi1k
b21haW4tc3ViZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBA
QAotQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBm
cmFtZSB3aXRoIFVSTCBkYXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48c2NyaXB0PmZ1bmN0aW9u
IGxvYWRlZCgpIHtpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKWxheW91dFRlc3RDb250
cm9sbGVyLmdsb2JhbEZsYWcgPSB0cnVlO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSds
b2FkZWQoKTsnPjxwIGlkPSdhY2Nlc3NNZSc+UEFTUzogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20g
YSBmcmFtZSBvbiBhIGZvcmVpZ24gZG9tYWluIGRlbmllZCE8L3A+PHA+SW5uZXItaW5uZXIgaWZy
YW1lLiBUaGlzIGlmcmFtZSAod2hpY2ggaXMgZGF0YTogVVJMIGFuZCB3aG9zZSBwYXJlbnQgaXMg
b24gYSBmb3JlaWduIGRvbWFpbikgaXMgdGhlIGZyYW1lIHRoYXQgdGhlIG1haW4gZnJhbWUgaXMg
dHJ5aW5nIHRvIGFjY2Vzcy4gIEl0IHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MgdG8gaXQuPC9wPjwv
Ym9keT48L2h0bWw+IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC10by1kYXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi1z
dWJmcmFtZS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCitD
T05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMIGRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjxzY3JpcHQ+ZnVuY3Rpb24gbG9h
ZGVkKCkge2lmICh3aW5kb3cudGVzdFJ1bm5lcil0ZXN0UnVubmVyLmdsb2JhbEZsYWcgPSB0cnVl
O308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSdsb2FkZWQoKTsnPjxwIGlkPSdhY2Nlc3NN
ZSc+UEFTUzogQ3Jvc3MgZnJhbWUgYWNjZXNzIGZyb20gYSBmcmFtZSBvbiBhIGZvcmVpZ24gZG9t
YWluIGRlbmllZCE8L3A+PHA+SW5uZXItaW5uZXIgaWZyYW1lLiBUaGlzIGlmcmFtZSAod2hpY2gg
aXMgZGF0YTogVVJMIGFuZCB3aG9zZSBwYXJlbnQgaXMgb24gYSBmb3JlaWduIGRvbWFpbikgaXMg
dGhlIGZyYW1lIHRoYXQgdGhlIG1haW4gZnJhbWUgaXMgdHJ5aW5nIHRvIGFjY2Vzcy4gIEl0IHNo
b3VsZCBub3QgaGF2ZSBhY2Nlc3MgdG8gaXQuPC9wPjwvYm9keT48L2h0bWw+IGZyb20gZnJhbWUg
d2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklF
RC10by1kYXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi1zdWJmcmFtZS5odG1sLiBEb21haW5zLCBw
cm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKIFRoZSBzY2VuYXJpbyBmb3IgdGhpcyB0
ZXN0IGlzIHRoYXQgeW91IGhhdmUgYW4gaWZyYW1lIHdpdGggY29udGVudCBmcm9tIGEgZm9yZWln
biBkb21haW4uIEluIHRoYXQgZm9yZWlnbiBjb250ZW50IGlzIGFuIGlmcmFtZSB3aGljaCBsb2Fk
cyBhIGRhdGE6IFVSTC4gVGhpcyB0ZXN0cyB0aGF0IHRoaXMgbWFpbiBkb2N1bWVudCBkb2VzIG5v
dCBoYXZlIGFjY2VzcyB0byB0aGF0IGRhdGE6IFVSTCBsb2FkZWQgaWZyYW1lLgogCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwv
eHNzLURFTklFRC10by1kYXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi1zdWJmcmFtZS1sb2NhdGlv
bi1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELXRvLWRhdGEt
dXJsLWluLWZvcmVpZ24tZG9tYWluLXN1YmZyYW1lLWxvY2F0aW9uLWNoYW5nZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELXRvLWRhdGEtdXJsLWluLWZvcmVp
Z24tZG9tYWluLXN1YmZyYW1lLWxvY2F0aW9uLWNoYW5nZS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0
IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGRhdGE6dGV4dC9odG1sLDxodG1sPjxo
ZWFkPjxzY3JpcHQ+ZnVuY3Rpb24gbG9hZGVkKCkge2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFsRmxhZyA9IHRydWU7fTwvc2NyaXB0Pjwv
aGVhZD48Ym9keSBvbmxvYWQ9J2xvYWRlZCgpOyc+PHAgaWQ9J2FjY2Vzc01lJz5QQVNTOiBDcm9z
cyBmcmFtZSBhY2Nlc3MgZnJvbSBhIGZyYW1lIG9uIGEgZm9yZWlnbiBkb21haW4gZGVuaWVkITwv
cD48cD5Jbm5lciBpZnJhbWUuIFRoaXMgaWZyYW1lICh3aGljaCBpcyBkYXRhOiBVUkwgYW5kIHdo
b3NlIHBhcmVudCBpcyBvbiBhIGZvcmVpZ24gZG9tYWluKSBpcyB0aGUgZnJhbWUgdGhhdCB0aGUg
bWFpbiBmcmFtZSBpcyB0cnlpbmcgdG8gYWNjZXNzLiAgSXQgc2hvdWxkIG5vdCBoYXZlIGFjY2Vz
cyB0byBpdC48L3A+PC9ib2R5PjwvaHRtbD4gZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELXRvLWRhdGEtdXJsLWluLWZv
cmVpZ24tZG9tYWluLXN1YmZyYW1lLWxvY2F0aW9uLWNoYW5nZS5odG1sLiBEb21haW5zLCBwcm90
b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCitDT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZh
U2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGRhdGE6dGV4dC9odG1sLDxo
dG1sPjxoZWFkPjxzY3JpcHQ+ZnVuY3Rpb24gbG9hZGVkKCkge2lmICh3aW5kb3cudGVzdFJ1bm5l
cil0ZXN0UnVubmVyLmdsb2JhbEZsYWcgPSB0cnVlO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25s
b2FkPSdsb2FkZWQoKTsnPjxwIGlkPSdhY2Nlc3NNZSc+UEFTUzogQ3Jvc3MgZnJhbWUgYWNjZXNz
IGZyb20gYSBmcmFtZSBvbiBhIGZvcmVpZ24gZG9tYWluIGRlbmllZCE8L3A+PHA+SW5uZXIgaWZy
YW1lLiBUaGlzIGlmcmFtZSAod2hpY2ggaXMgZGF0YTogVVJMIGFuZCB3aG9zZSBwYXJlbnQgaXMg
b24gYSBmb3JlaWduIGRvbWFpbikgaXMgdGhlIGZyYW1lIHRoYXQgdGhlIG1haW4gZnJhbWUgaXMg
dHJ5aW5nIHRvIGFjY2Vzcy4gIEl0IHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MgdG8gaXQuPC9wPjwv
Ym9keT48L2h0bWw+IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC10by1kYXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi1z
dWJmcmFtZS1sb2NhdGlvbi1jaGFuZ2UuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0
cyBtdXN0IG1hdGNoLgogCiBPcGVuZXIgZnJhbWUKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtdG8tZGF0
YS11cmwtaW4tZm9yZWlnbi1kb21haW4td2luZG93LW9wZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZGF0YVVSTC94c3MtREVOSUVELXRvLWRhdGEtdXJsLWluLWZvcmVpZ24tZG9tYWluLXdpbmRvdy1v
cGVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtdG8tZGF0
YS11cmwtaW4tZm9yZWlnbi1kb21haW4td2luZG93LW9wZW4tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlw
dCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBkYXRhOnRleHQvaHRtbCw8aHRtbD48
aGVhZD48c2NyaXB0PmZ1bmN0aW9uIGxvYWRlZCgpIHtpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKWxheW91dFRlc3RDb250cm9sbGVyLmdsb2JhbEZsYWcgPSB0cnVlO308L3NjcmlwdD48
L2hlYWQ+PGJvZHkgb25sb2FkPSdsb2FkZWQoKTsnPjxwIGlkPSdhY2Nlc3NNZSc+UEFTUzogQWNj
ZXNzIGZyb20gdGhlIG1haW4gZnJhbWUgd2FzIGRlbmllZCE8L3A+PHA+SW5uZXItaW5uZXIgaWZy
YW1lLiBUaGlzIGlmcmFtZSAod2hpY2ggaXMgZGF0YTogVVJMIGFuZCB3aG9zZSBwYXJlbnQgaXMg
b24gYSBmb3JlaWduIGRvbWFpbikgaXMgdGhlIGZyYW1lIHRoYXQgdGhlIG1haW4gZnJhbWUgaXMg
dHJ5aW5nIHRvIGFjY2Vzcy4gIEl0IHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MgdG8gaXQuPC9wPjwv
Ym9keT48L2h0bWw+IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC10by1kYXRhLXVybC1pbi1mb3JlaWduLWRvbWFpbi13
aW5kb3ctb3Blbi5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2gu
CitDT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZy
YW1lIHdpdGggVVJMIGRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjxzY3JpcHQ+ZnVuY3Rpb24g
bG9hZGVkKCkge2lmICh3aW5kb3cudGVzdFJ1bm5lcil0ZXN0UnVubmVyLmdsb2JhbEZsYWcgPSB0
cnVlO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSdsb2FkZWQoKTsnPjxwIGlkPSdhY2Nl
c3NNZSc+UEFTUzogQWNjZXNzIGZyb20gdGhlIG1haW4gZnJhbWUgd2FzIGRlbmllZCE8L3A+PHA+
SW5uZXItaW5uZXIgaWZyYW1lLiBUaGlzIGlmcmFtZSAod2hpY2ggaXMgZGF0YTogVVJMIGFuZCB3
aG9zZSBwYXJlbnQgaXMgb24gYSBmb3JlaWduIGRvbWFpbikgaXMgdGhlIGZyYW1lIHRoYXQgdGhl
IG1haW4gZnJhbWUgaXMgdHJ5aW5nIHRvIGFjY2Vzcy4gIEl0IHNob3VsZCBub3QgaGF2ZSBhY2Nl
c3MgdG8gaXQuPC9wPjwvYm9keT48L2h0bWw+IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC10by1kYXRhLXVybC1pbi1m
b3JlaWduLWRvbWFpbi13aW5kb3ctb3Blbi5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBv
cnRzIG11c3QgbWF0Y2guCiAKIFBBU1M6IENyb3NzIGZyYW1lIGFjY2VzcyB0byBhIGRhdGE6IFVS
TCBlbWJlZCBpbiBhIGZyYW1lIHdpbmRvdy5vcGVuJ2VkIG9uIGZvcmVpZ24gZG9tYWluIGRlbmll
ZCEKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1
cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtdG8tZGF0YS11cmwtc3ViLWZyYW1lLTItbGV2ZWwtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELXRvLWRhdGEtdXJsLXN1Yi1mcmFt
ZS0yLWxldmVsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIwMTA5KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQt
dG8tZGF0YS11cmwtc3ViLWZyYW1lLTItbGV2ZWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRl
bXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBkYXRhOnRleHQvaHRtbCw8aHRtbD48aGVhZD48
c2NyaXB0PmZ1bmN0aW9uIGZpcmVTZW50aW5lbCgpIHtpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKWxheW91dFRlc3RDb250cm9sbGVyLmdsb2JhbEZsYWcgPSB0cnVlO308L3NjcmlwdD48
L2hlYWQ+PGJvZHkgb25sb2FkPSJmaXJlU2VudGluZWwoKTsiPjxwIGlkPSJhY2Nlc3NNZSI+UEFT
UzogQ3Jvc3MgZnJhbWUgYWNjZXNzIHRvIGEgZGF0YTogVVJMIDIgbGV2ZWxzIGRlZXAgd2FzIGRl
bmllZC48L3A+PHA+SW5uZXItaW5uZXIgaWZyYW1lLjwvcD48L2JvZHk+PC9odG1sPiBmcm9tIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9kYXRhVVJML3hzcy1E
RU5JRUQtdG8tZGF0YS11cmwtc3ViLWZyYW1lLTItbGV2ZWwuaHRtbC4gRG9tYWlucywgcHJvdG9j
b2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNj
cmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBkYXRhOnRleHQvaHRtbCw8aHRt
bD48aGVhZD48c2NyaXB0PmZ1bmN0aW9uIGZpcmVTZW50aW5lbCgpIHtpZiAod2luZG93LnRlc3RS
dW5uZXIpdGVzdFJ1bm5lci5nbG9iYWxGbGFnID0gdHJ1ZTt9PC9zY3JpcHQ+PC9oZWFkPjxib2R5
IG9ubG9hZD0iZmlyZVNlbnRpbmVsKCk7Ij48cCBpZD0iYWNjZXNzTWUiPlBBU1M6IENyb3NzIGZy
YW1lIGFjY2VzcyB0byBhIGRhdGE6IFVSTCAyIGxldmVscyBkZWVwIHdhcyBkZW5pZWQuPC9wPjxw
PklubmVyLWlubmVyIGlmcmFtZS48L3A+PC9ib2R5PjwvaHRtbD4gZnJvbSBmcmFtZSB3aXRoIFVS
TCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVELXRvLWRh
dGEtdXJsLXN1Yi1mcmFtZS0yLWxldmVsLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9y
dHMgbXVzdCBtYXRjaC4KIAogVGhpcyB0ZXN0cyB0aGF0IHRoZSBtYWluIGZyYW1lIGRvZXNuJ3Qg
aGF2ZSBhY2Nlc3MgdG8gYSBkYXRhOiBVUkwgbG9hZGVkIGluIGFuIGlmcmFtZSBpbnNpZGUgYW5v
dGhlciBkYXRhOiBVUkwgbG9hZGVkIGlmcmFtZS4KIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJML3hzcy1ERU5JRUQtdG8tZGF0
YS11cmwtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvZGF0YVVSTC94c3MtREVOSUVE
LXRvLWRhdGEtdXJsLXdpbmRvdy1vcGVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIwMTA5KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRh
VVJML3hzcy1ERU5JRUQtdG8tZGF0YS11cmwtd2luZG93LW9wZW4tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNj
cmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBkYXRhOnRleHQvaHRtbCw8aHRt
bD48aGVhZD48c2NyaXB0PmZ1bmN0aW9uIGZpcmVTZW50aW5lbCgpIHtpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKWxheW91dFRlc3RDb250cm9sbGVyLmdsb2JhbEZsYWcgPSB0cnVlO308
L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJmaXJlU2VudGluZWwoKTsiPjxwPk9wZW5lZCBG
cmFtZTwvcD48cCBpZD0nYWNjZXNzTWUnPlBBU1M6IENyb3NzIGZyYW1lIGFjY2VzcyBmcm9tIGFu
IG9wZW5lciBmcmFtZSB3YXMgZGVuaWVkPC9wPjwvYm9keT48L2h0bWw+IGZyb20gZnJhbWUgd2l0
aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2RhdGFVUkwveHNzLURFTklFRC10
by1kYXRhLXVybC13aW5kb3ctb3Blbi5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRz
IG11c3QgbWF0Y2guCitDT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGRhdGE6dGV4dC9odG1sLDxodG1sPjxoZWFkPjxzY3Jp
cHQ+ZnVuY3Rpb24gZmlyZVNlbnRpbmVsKCkge2lmICh3aW5kb3cudGVzdFJ1bm5lcil0ZXN0UnVu
bmVyLmdsb2JhbEZsYWcgPSB0cnVlO308L3NjcmlwdD48L2hlYWQ+PGJvZHkgb25sb2FkPSJmaXJl
U2VudGluZWwoKTsiPjxwPk9wZW5lZCBGcmFtZTwvcD48cCBpZD0nYWNjZXNzTWUnPlBBU1M6IENy
b3NzIGZyYW1lIGFjY2VzcyBmcm9tIGFuIG9wZW5lciBmcmFtZSB3YXMgZGVuaWVkPC9wPjwvYm9k
eT48L2h0bWw+IGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L2RhdGFVUkwveHNzLURFTklFRC10by1kYXRhLXVybC13aW5kb3ctb3Blbi5odG1sLiBEb21h
aW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKIE9wZW5lciBGcmFtZQogCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21p
eGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZyYW1lLWluLW1haW4tZnJhbWUtYWxsb3dlZC5o
dG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9o
dHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1m
cmFtZS1hbGxvd2VkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkgKzEsMTkgQEAKIDxodG1s
PgogPGJvZHk+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEZy
YW1lTG9hZENhbGxiYWNrcygpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5X
aW5kb3dzKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5k
b3dzV2hlbkNvbXBsZXRlKHRydWUpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0QWxsb3dEaXNwbGF5aW5nSW5zZWN1cmVDb250ZW50IiwgZmFsc2Up
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250
ZW50KHRydWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2lu
ZG93cygpOworICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBs
ZXRlKHRydWUpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRBbGxv
d0Rpc3BsYXlpbmdJbnNlY3VyZUNvbnRlbnQiLCBmYWxzZSk7CisgICAgdGVzdFJ1bm5lci5zZXRB
bGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCh0cnVlKTsKIH0KIAogd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbiAoZSkgewotICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0sIGZhbHNlKTsKIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4t
bWFpbi1mcmFtZS1ibG9ja2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZy
YW1lLWluLW1haW4tZnJhbWUtYmxvY2tlZC5odG1sCShyZXZpc2lvbiAxMjAxMDkpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFtZS1ibG9ja2VkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTggKzEsMTggQEAKIDxodG1sPgogPGJvZHk+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOwotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0QWxsb3dEaXNwbGF5
aW5nSW5zZWN1cmVDb250ZW50IiwgZmFsc2UpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1
bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIHRlc3RSdW5uZXIuc2V0Q2xvc2VSZW1haW5p
bmdXaW5kb3dzV2hlbkNvbXBsZXRlKHRydWUpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRBbGxvd0Rpc3BsYXlpbmdJbnNlY3VyZUNvbnRlbnQiLCBmYWxzZSk7CiB9
CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24gKGUpIHsKLSAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9LCBmYWxzZSk7CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQv
aW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENv
bnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLmh0bWwJKHJldmlzaW9u
IDEyMDEwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWltYWdlLWluLW1haW4tZnJhbWUtYWxsb3dlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5ICsxLDE5IEBACiA8aHRtbD4KIDxib2R5PgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0
ZSh0cnVlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEFsbG93RGlzcGxheWluZ0luc2VjdXJlQ29udGVudCIsIGZhbHNlKTsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCh0cnVlKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEZyYW1lTG9h
ZENhbGxiYWNrcygpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICB0
ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKKyAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0QWxsb3dEaXNwbGF5aW5nSW5z
ZWN1cmVDb250ZW50IiwgZmFsc2UpOworICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dEaXNwbGF5T2ZJ
bnNlY3VyZUNvbnRlbnQodHJ1ZSk7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgZnVuY3Rpb24gKGUpIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9LCBmYWxzZSk7CiAK
IDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFtZS1ibG9j
a2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0
cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFt
ZS1ibG9ja2VkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWltYWdl
LWluLW1haW4tZnJhbWUtYmxvY2tlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4ICsxLDE4
IEBACiA8aHRtbD4KIDxib2R5PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRDYW5PcGVuV2luZG93cygpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVt
YWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEFsbG93RGlzcGxheWluZ0luc2VjdXJlQ29udGVu
dCIsIGZhbHNlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOworICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3Blbldp
bmRvd3MoKTsKKyAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21w
bGV0ZSh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0QWxs
b3dEaXNwbGF5aW5nSW5zZWN1cmVDb250ZW50IiwgZmFsc2UpOwogfQogCiB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uIChlKSB7Ci0gIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogfSwgZmFsc2UpOwogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLXNjcmlwdC1p
bi1tYWluLWZyYW1lLWFsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1z
Y3JpcHQtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250
ZW50L2luc2VjdXJlLXNjcmlwdC1pbi1tYWluLWZyYW1lLWFsbG93ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxOSArMSwxOSBAQAogPGh0bWw+CiA8Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRBbGxvd1J1bm5p
bmdJbnNlY3VyZUNvbnRlbnQiLCBmYWxzZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQodHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKKyAg
ICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDbG9z
ZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdEFsbG93UnVubmluZ0luc2VjdXJlQ29udGVudCIsIGZhbHNl
KTsKKyAgICB0ZXN0UnVubmVyLnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KHRydWUp
OwogfQogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uIChlKSB7
Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfSwgZmFsc2UpOwogCiA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250
ZW50L2luc2VjdXJlLXNjcmlwdC1pbi1tYWluLWZyYW1lLWJsb2NrZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21p
eGVkQ29udGVudC9pbnNlY3VyZS1zY3JpcHQtaW4tbWFpbi1mcmFtZS1ibG9ja2VkLmh0bWwJKHJl
dmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLXNjcmlwdC1pbi1tYWluLWZyYW1lLWJs
b2NrZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxOCArMSwxOCBAQAogPGh0bWw+CiA8Ym9k
eT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3Mo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVu
Q29tcGxldGUodHJ1ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRBbGxvd1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQiLCBmYWxzZSk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBGcmFtZUxvYWRDYWxs
YmFja3MoKTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVzdFJ1
bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEFsbG93UnVubmluZ0luc2VjdXJlQ29u
dGVudCIsIGZhbHNlKTsKIH0KIAogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBm
dW5jdGlvbiAoZSkgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0sIGZhbHNlKTsKIAogPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9odHRwL3Rlc3RzL2Nvb2tpZXMvc3Ry
aWN0LXRoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2h0dHAvdGVzdHMvY29va2llcy9zdHJpY3QtdGhpcmQtcGFydHkt
Y29va2llLWJsb2NraW5nLmh0bWwJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2h0dHAvdGVzdHMvY29va2llcy9zdHJpY3QtdGhpcmQtcGFydHktY29va2llLWJs
b2NraW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiA8c2NyaXB0PgogcmVz
ZXRDb29raWVzKCk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAK
IHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpCkBAIC0yMiwxNiArMjIsMTYgQEAgd2lu
ZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkKIGZ1bmN0aW9uIGFsbG93QWxsQ29va2llcygp
CiB7CiAgICAgYWxlcnQoIkFsbG93aW5nIGFsbCBjb29raWVzIik7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QWx3
YXlzQWNjZXB0Q29va2llcyh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQWNjZXB0Q29va2llcyh0cnVlKTsKICAgICBydW5OZXh0
VGVzdE9yRmluaXNoKCk7CiB9CiAKIGZ1bmN0aW9uIHJlc3RyaWN0Q29va2llcygpCiB7CiAgICAg
YWxlcnQoIlJlc3RyaWN0aW5nIHRvIGZpcnN0IHBhcnR5IG9ubHkgY29va2llcyIpOwotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldEFsd2F5c0Jsb2NrQ29va2llcyh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWx3YXlzQmxvY2tDb29raWVzKHRydWUpOwogICAg
IHJ1bk5leHRUZXN0T3JGaW5pc2goKTsKIH0KIApAQCAtNzcsNyArNzcsNyBAQCB2YXIgZnVuY3Rp
b25zID0gbmV3IEFycmF5KAogZnVuY3Rpb24gcnVuTmV4dFRlc3RPckZpbmlzaCgpCiB7CiAgICAg
aWYgKGN1cnJlbnRGdW5jdGlvbiA+PSBmdW5jdGlvbnMubGVuZ3RoKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CiAgICAgICAgICAgICByZXNldENvb2tpZXMoKTsKICAgICAgICAgICAgIHdpbmRvdy5m
cmFtZXNbMF0ucG9zdE1lc3NhZ2UoInJlc2V0Q29va2llc0FuZE5vdGlmeURvbmUiLCAiKiIpOwog
ICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2Fib3V0QmxhbmsveHNzLURFTklFRC1uYXZpZ2F0ZS1vcGVuZXItZG9jdW1lbnQtd3JpdGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2h0dHAv
dGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFuay94c3MtREVOSUVELW5hdmlnYXRlLW9wZW5lci1kb2N1
bWVudC13cml0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2h0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFuay94c3MtREVOSUVELW5h
dmlnYXRlLW9wZW5lci1kb2N1bWVudC13cml0ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTMsNyArMyw3IEBAIENPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW0K
IENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBUeXBlRXJyb3I6ICd1bmRlZmluZWQnIGlzIG5vdCBh
biBvYmplY3QKIFRoaXMgcGFnZSBvcGVucyBhIHdpbmRvdyB0byAiIiwgaW5qZWN0cyBtYWxpY2lv
dXMgY29kZSwgYW5kIHRoZW4gbmF2aWdhdGVzIGl0cyBvcGVuZXIgdG8gdGhlIHZpY3RpbS4gVGhl
IG9wZW5lZCB3aW5kb3cgdGhlbiB0cmllcyB0byBzY3JpcHRzIGl0cyBvcGVuZXIgYWZ0ZXIgZG9j
dW1lbnQud3JpdGVpbmcgYSBuZXcgZG9jdW1lbnQuCiBDb2RlIGluamVjdGVkIGludG8gd2luZG93
OgotPHNjcmlwdD5kb2N1bWVudC53cml0ZSgnPHNjcmlwdD5mdW5jdGlvbiB3cml0ZSh0YXJnZXQs
IG1lc3NhZ2UpIHsgdGFyZ2V0LmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gbWVzc2FnZTsgfXNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7d3JpdGUod2luZG93Lm9wZW5lciwgXCdGQUlMOiBYU1Mgd2Fz
IGFsbG93ZWQuXCcpO30sIDEwMCk7c2V0VGltZW91dChmdW5jdGlvbigpIHt3cml0ZSh3aW5kb3cu
b3BlbmVyLnRvcC5mcmFtZXNbMV0sIFwnU1VDQ0VTUzogV2luZG93IHJlbWFpbmVkIGluIG9yaWdp
bmFsIFNlY3VyaXR5T3JpZ2luLlwnKTt9LCAyMDApO3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLmdsb2Jh
bEZsYWcgPSB0cnVlOyB9LCAzMDApOzxcL3NjcmlwdD4nKTs8L3NjcmlwdD4KKzxzY3JpcHQ+ZG9j
dW1lbnQud3JpdGUoJzxzY3JpcHQ+ZnVuY3Rpb24gd3JpdGUodGFyZ2V0LCBtZXNzYWdlKSB7IHRh
cmdldC5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IG1lc3NhZ2U7IH1zZXRUaW1lb3V0KGZ1bmN0
aW9uKCkge3dyaXRlKHdpbmRvdy5vcGVuZXIsIFwnRkFJTDogWFNTIHdhcyBhbGxvd2VkLlwnKTt9
LCAxMDApO3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7d3JpdGUod2luZG93Lm9wZW5lci50b3AuZnJh
bWVzWzFdLCBcJ1NVQ0NFU1M6IFdpbmRvdyByZW1haW5lZCBpbiBvcmlnaW5hbCBTZWN1cml0eU9y
aWdpbi5cJyk7fSwgMjAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHRlc3RSdW5uZXIuZ2xvYmFsRmxhZyA9IHRydWU7IH0sIDMwMCk7PFwvc2NyaXB0Picp
Ozwvc2NyaXB0PgogIAogCiAtLS0tLS0tLQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
aHR0cC90ZXN0cy9zZWN1cml0eS9hYm91dEJsYW5rL3hzcy1ERU5JRUQtbmF2aWdhdGUtb3BlbmVy
LWphdmFzY3JpcHQtdXJsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9odHRwL3Rlc3RzL3NlY3VyaXR5L2Fib3V0QmxhbmsveHNzLURFTklFRC1uYXZp
Z2F0ZS1vcGVuZXItamF2YXNjcmlwdC11cmwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMjAxMDkp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9odHRwL3Rlc3RzL3NlY3VyaXR5L2Fib3V0Qmxh
bmsveHNzLURFTklFRC1uYXZpZ2F0ZS1vcGVuZXItamF2YXNjcmlwdC11cmwtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBDT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBK
YXZhU2NyaXB0IGF0dGVtCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVHlwZUVycm9yOiAndW5k
ZWZpbmVkJyBpcyBub3QgYW4gb2JqZWN0CiBUaGlzIHBhZ2Ugb3BlbnMgYSB3aW5kb3cgdG8gIiIs
IGluamVjdHMgbWFsaWNpb3VzIGNvZGUsIGFuZCB0aGVuIG5hdmlnYXRlcyBpdHMgb3BlbmVyIHRv
IHRoZSB2aWN0aW0uIFRoZSBvcGVuZWQgd2luZG93IHRoZW4gdHJpZXMgdG8gc2NyaXB0cyBpdHMg
b3BlbmVyIGFmdGVyIHJlbG9hZGluZyBpdHNlbGYgYXMgYSBqYXZhc2NyaXB0IFVSTC4KIENvZGUg
aW5qZWN0ZWQgaW50byB3aW5kb3c6Ci08c2NyaXB0PndpbmRvdy5sb2NhdGlvbiA9ICdqYXZhc2Ny
aXB0OlwnPHNjcmlwdD5mdW5jdGlvbiB3cml0ZSh0YXJnZXQsIG1lc3NhZ2UpIHsgdGFyZ2V0LmRv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MID0gbWVzc2FnZTsgfXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
d3JpdGUod2luZG93Lm9wZW5lciwgXFxcJ0ZBSUw6IFhTUyB3YXMgYWxsb3dlZC5cXFwnKTt9LCAx
MDApO3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7d3JpdGUod2luZG93Lm9wZW5lci50b3AuZnJhbWVz
WzFdLCBcXFwnU1VDQ0VTUzogV2luZG93IHJlbWFpbmVkIGluIG9yaWdpbmFsIFNlY3VyaXR5T3Jp
Z2luLlxcXCcpO30sIDIwMCk7c2V0VGltZW91dChmdW5jdGlvbigpIHsgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFsRmxhZyA9IHRydWU7
IH0sIDMwMCk7PFxcXC9zY3JpcHQ+XCcnPC9zY3JpcHQ+Cis8c2NyaXB0PndpbmRvdy5sb2NhdGlv
biA9ICdqYXZhc2NyaXB0OlwnPHNjcmlwdD5mdW5jdGlvbiB3cml0ZSh0YXJnZXQsIG1lc3NhZ2Up
IHsgdGFyZ2V0LmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gbWVzc2FnZTsgfXNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7d3JpdGUod2luZG93Lm9wZW5lciwgXFxcJ0ZBSUw6IFhTUyB3YXMgYWxsb3dl
ZC5cXFwnKTt9LCAxMDApO3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7d3JpdGUod2luZG93Lm9wZW5l
ci50b3AuZnJhbWVzWzFdLCBcXFwnU1VDQ0VTUzogV2luZG93IHJlbWFpbmVkIGluIG9yaWdpbmFs
IFNlY3VyaXR5T3JpZ2luLlxcXCcpO30sIDIwMCk7c2V0VGltZW91dChmdW5jdGlvbigpIHsgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLmdsb2JhbEZsYWcgPSB0cnVlOyB9LCAzMDAp
OzxcXFwvc2NyaXB0PlwnJzwvc2NyaXB0PgogIAogCiAtLS0tLS0tLQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvaHR0cC90ZXN0cy9zZWN1cml0eS9hYm91dEJsYW5rL3hzcy1ERU5JRUQt
c2V0LW9wZW5lci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvaHR0cC90ZXN0cy9zZWN1cml0eS9hYm91dEJsYW5rL3hzcy1ERU5JRUQtc2V0LW9wZW5l
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEyMDEwOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L2h0dHAvdGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFuay94c3MtREVOSUVELXNldC1vcGVuZXIt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQCBDb2RlIGluamVjdGVk
IGludG8gd2luZG93OgogPHNjcmlwdD5mdW5jdGlvbiB3cml0ZSh0YXJnZXQsIG1lc3NhZ2UpIHsg
dGFyZ2V0LmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gbWVzc2FnZTsgfQogc2V0VGltZW91dChm
dW5jdGlvbigpIHt3cml0ZSh3aW5kb3cub3BlbmVyLnRvcC5mcmFtZXNbMF0sICdGQUlMOiBYU1Mg
d2FzIGFsbG93ZWQuJyk7fSwgMTAwKTsKIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d3JpdGUod2lu
ZG93Lm9wZW5lci50b3AuZnJhbWVzWzFdLCAnU1VDQ0VTUzogV2luZG93IHJlbWFpbmVkIGluIG9y
aWdpbmFsIFNlY3VyaXR5T3JpZ2luLicpO30sIDIwMCk7Ci1zZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5n
bG9iYWxGbGFnID0gdHJ1ZTsgfSwgMzAwKTs8L3NjcmlwdD4KK3NldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5nbG9iYWxGbGFnID0gdHJ1ZTsg
fSwgMzAwKTs8L3NjcmlwdD4KICAKIAogLS0tLS0tLS0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9yZWZyZXNoLW1ldGEtd2l0aC1uZXdsaW5lLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUEdoMGJXdytDanhvWldGa1BnbzhUVVZVUVNBZ0lF
aFVWRkF0UlZGVlNWWWdJQ0FnSUNBOUlDSlNaV1p5WlhOb0lnb2dJQ0FnSUNBZwpJQ0FnSUNBZ0lD
QWdRMjl1ZEdWdWRDQTlJQ0l3T3cwS0FRSURCQVVHQndnSkN3d09EeEFSRWhNVUZSWVhHQmthR3h3
ZEhoOGdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdWVkpNUFhKbGMyOTFjbU5sY3k4eU1EQXVhSFJ0YkNJ
K0NnbzhMMmhsWVdRK0NqeGliMlI1UGdvOGNENDgKWVNCb2NtVm1QU0pvZEhSd09pOHZZblZuY3k1
M1pXSnJhWFF1YjNKbkwzTm9iM2RmWW5WbkxtTm5hVDlwWkQweE1qYzVPU0krUW5WbgpJREV5Tnpr
NVBDOWhQaTQ4TDNBK0NqeHdQa1pCU1V4VlVrVWdLSE5vYjNWc1pDQnlaV1JwY21WamRDa3VQQzl3
UGdvOGMyTnlhWEIwClBncHBaaUFvZDJsdVpHOTNMblJsYzNSU2RXNXVaWElwSUhzS0lDQjBaWE4w
VW5WdWJtVnlMbVIxYlhCQmMxUmxlSFFvS1RzS0lDQjAKWlhOMFVuVnVibVZ5TG5kaGFYUlZiblJw
YkVSdmJtVW9LVHNLZlFvOEwzTmpjbWx3ZEQ0S1BDOWliMlI1UGdvOEwyaDBiV3crQ2c9PQoKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3JlcGx5
Mi50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKei9EdTR1WHc2
dUFLCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJj
ZXMvcmVwbHkzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBh
IGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgp6
L0R1NHVYdzZ1QUsKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9yZXBseTQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0KCnovRHU0dVh3NnVBSwoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL3JlcGx5LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBm
aWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtCgowSi9SZ05DKzBMTFF0ZEdBMExyUXNBbz0KCg==
</data>
<flag name="review"
          id="154714"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>