<?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>89741</bug_id>
          
          <creation_ts>2012-06-21 23:27:18 -0700</creation_ts>
          <short_desc>Use testRunner instead of layoutTestController in fast/fast-mobile-scrolling, flexbox, forms, frames, gradients tests</short_desc>
          <delta_ts>2012-06-21 23:52:47 -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>darin</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655262</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-21 23:27:18 -0700</bug_when>
    <thetext>Use testRunner instead of layoutTestController in fast/fast-mobile-scrolling, flexbox, forms, frames, gradients tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655264</commentid>
    <comment_count>1</comment_count>
      <attachid>148967</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-21 23:30:51 -0700</bug_when>
    <thetext>Created attachment 148967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655268</commentid>
    <comment_count>2</comment_count>
      <attachid>148967</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-21 23:43:27 -0700</bug_when>
    <thetext>Comment on attachment 148967
Patch

Looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655272</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-21 23:52:47 -0700</bug_when>
    <thetext>Committed r121008: &lt;http://trac.webkit.org/changeset/121008&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148967</attachid>
            <date>2012-06-21 23:30:51 -0700</date>
            <delta_ts>2012-06-21 23:43:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89741-20120621233050.patch</filename>
            <type>text/plain</type>
            <size>413979</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMTAwNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA2LTIxICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSB0ZXN0UnVubmVyIGluc3RlYWQgb2YgbGF5
b3V0VGVzdENvbnRyb2xsZXIgaW4gZmFzdC9mYXN0LW1vYmlsZS1zY3JvbGxpbmcsIGZsZXhib3gs
IGZvcm1zLCBmcmFtZXMsIGdyYWRpZW50cyB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZmxleGJveC9ib3gtb3JkaW5hbC1ncm91cC5o
dG1sOgorICAgICAgICAqIGZhc3QvZmxleGJveC9ib3gtc2l6ZS1pbnRlZ2VyLW92ZXJmbG93Lmh0
bWw6CisgICAgICAgICogZmFzdC9mbGV4Ym94L2NyYXNoLWJ1dHRvbi1pbnB1dC1hdXRvZm9jdXMu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2ZsZXhib3gvY3Jhc2gtYnV0dG9uLWtleWdlbi5odG1sOgor
ICAgICAgICAqIGZhc3QvZmxleGJveC9jcmFzaC1idXR0b24tcmVsYXlvdXQuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2ZsZXhib3gvY3Jhc2gtZmxleGJveC1uby1sYXlvdXQtY2hpbGQuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2ZsZXhib3gvaG9yaXpvbnRhbC1ib3gtZmxvYXQtY3Jhc2guaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2ZsZXhib3gvaW5saW5lLWNoaWxkcmVuLWNyYXNoLmh0bWw6CisgICAgICAg
ICogZmFzdC9mbGV4Ym94L2xheW91dEhvcml6b250YWxCb3gtY3Jhc2guaHRtbDoKKyAgICAgICAg
KiBmYXN0L2ZsZXhib3gvbGluZS1jbGFtcC1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvZmxl
eGJveC9vdmVyaGFuZ2luZy1mbG9hdHMtbm90LXJlbW92ZWQtY3Jhc2guaHRtbDoKKyAgICAgICAg
KiBmYXN0L2ZsZXhib3gvcmVzb3VyY2VzL2JveC1vcmllbnQtYnV0dG9uLmpzOgorICAgICAgICAq
IGZhc3QvZm9ybXMvOgorICAgICAgICAqIGZhc3QvZnJhbWVzLzoKKyAgICAgICAgKiBmYXN0L2dy
YWRpZW50cy9jcmFzaC1vbi0xcHgtYm9yZGVyLmh0bWw6CisgICAgICAgICogZmFzdC9ncmFkaWVu
dHMvY3Jhc2gtb24tZGVnZW5lcmF0ZS1ncmFkaWVudC5odG1sOgorICAgICAgICAqIGZhc3QvZ3Jh
ZGllbnRzL2NyYXNoLW9uLXJlbW92ZS5odG1sOgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2Ny
YXNoLW9uLXRyLmh0bWw6CisgICAgICAgICogZmFzdC9ncmFkaWVudHMvY3NzMy1jb2xvci1zdG9w
LXVuaXRzLmh0bWw6CisgICAgICAgICogZmFzdC9ncmFkaWVudHMvY3NzMy1jb2xvci1zdG9wcy5o
dG1sOgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2NzczMtbGluZWFyLWFuZ2xlLWdyYWRpZW50
cy5odG1sOgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2NzczMtbGluZWFyLXJpZ2h0LWFuZ2xl
LWdyYWRpZW50cy5odG1sOgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2NzczMtcmFkaWFsLWdy
YWRpZW50LWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9ncmFkaWVudHMvY3NzMy1yYWRpYWwt
Z3JhZGllbnRzLmh0bWw6CisgICAgICAgICogZmFzdC9ncmFkaWVudHMvY3NzMy1yYWRpYWwtZ3Jh
ZGllbnRzMi5odG1sOgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2NzczMtcmFkaWFsLWdyYWRp
ZW50czMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2dyYWRpZW50cy9jc3MzLXJlcGVhdGluZy1lbmQt
ZmlsbC5odG1sOgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2NzczMtcmVwZWF0aW5nLWxpbmVh
ci1ncmFkaWVudHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2dyYWRpZW50cy9jc3MzLXJlcGVhdGlu
Zy1saW5lYXItZ3JhZGllbnRzMi5odG1sOgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2NzczMt
cmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2dyYWRpZW50
cy9ncmFkaWVudC1hZnRlci10cmFuc3BhcmVudC1ib3JkZXIuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2dyYWRpZW50cy9ncmFkaWVudC1vbi1wc2V1ZG9lbGVtZW50LWNyYXNoLmh0bWw6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9zZWFyY2gtcG9wdXAtY3Jhc2hlci5odG1s
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL21lbnVsaXN0LXR5cGVhaGVhZC1m
aW5kLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvZnJhbWVzL3Njcm9sbGluZy1p
ZnJhbWUtb3V0LW9mLXZpZXdwb3J0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
Zm9ybXMvYXR0cmlidXRlZC1zdHJpbmdzLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zh
c3QvZm9ybXMvbGlzdGJveC1zY3JvbGxiYXItaGl0LXRlc3QuaHRtbDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9jdXMtb3B0aW9uLWNvbnRyb2wtb24t
cGFnZS5qczoKKyAgICAgICAgKHN0YXJ0VGVzdCk6CisgICAgICAgIChydW5LZXlQcmVzc2VzKToK
KyAgICAgICAgKG5vdGlmeURvbmUpOgorCiAyMDEyLTA2LTIxICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTIwOTgyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L2JveC1vcmRpbmFsLWdy
b3VwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L2JveC1vcmRp
bmFsLWdyb3VwLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZmxl
eGJveC9ib3gtb3JkaW5hbC1ncm91cC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4
IEBAIGRpdi5udW1iZXIgewogCiA8L3N0eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9z
Y3JpcHQ+CiA8Ym9keT4KIDxwPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L2JveC1z
aXplLWludGVnZXItb3ZlcmZsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZsZXhib3gvYm94LXNpemUtaW50ZWdlci1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZsZXhib3gvYm94LXNpemUtaW50ZWdlci1vdmVyZmxvdy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0Pgogd2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKICAgdmFyIGNlbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2VsbCIpOwogICB2YXIg
dGV4dCA9IGNlbGwuZmlyc3RFbGVtZW50Q2hpbGQ7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zs
ZXhib3gvY3Jhc2gtYnV0dG9uLWlucHV0LWF1dG9mb2N1cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZmxleGJveC9jcmFzaC1idXR0b24taW5wdXQtYXV0b2ZvY3VzLmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZmxleGJveC9jcmFzaC1idXR0
b24taW5wdXQtYXV0b2ZvY3VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8
Ym9keT4KIDxwIHN0eWxlPSJ2aXNpYmlsaXR5OiBjb2xsYXBzZTsiPjxidXR0b24+PGlucHV0IGF1
dG9mb2N1cz48aW5wdXQgaWQ9InRlc3QiPjwvaW5wdXQ+PC9idXR0b24+PC9wPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdCcpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3QnKSk7CiBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmxleGJveC9jcmFzaC1idXR0b24ta2V5Z2VuLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L2NyYXNoLWJ1dHRvbi1rZXlnZW4uaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L2NyYXNoLWJ1dHRvbi1rZXln
ZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5PgogPHAgc3R5bGU9
InZpc2liaWxpdHk6IGNvbGxhcHNlOyI+PGJ1dHRvbj48a2V5Z2VuIGF1dG9mb2N1cz48aW5wdXQg
aWQ9InRlc3QiPjwva2V5Z2VuPjwvYnV0dG9uPjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
KS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jykp
OwogZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZsZXhi
b3gvY3Jhc2gtYnV0dG9uLXJlbGF5b3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mbGV4Ym94L2NyYXNoLWJ1dHRvbi1yZWxheW91dC5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZsZXhib3gvY3Jhc2gtYnV0dG9uLXJlbGF5b3V0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIDxwIHN0eWxlPSJ2aXNpYmls
aXR5OiBjb2xsYXBzZTsiPjxidXR0b24+PGlucHV0PjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2lucHV0JylbMF0ub2Zmc2V0VG9wOzwvc2NyaXB0PjxpbnB1dCBpZD0idGVz
dCI+PC9pbnB1dD48L2J1dHRvbj48L3A+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiBkb2N1bWVu
dC5ib2R5Lm9mZnNldFRvcDsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0JykucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpKTsKIGRvY3Vt
ZW50LmJvZHkub2Zmc2V0VG9wOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L2NyYXNo
LWZsZXhib3gtbm8tbGF5b3V0LWNoaWxkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mbGV4Ym94L2NyYXNoLWZsZXhib3gtbm8tbGF5b3V0LWNoaWxkLmh0bWwJKHJldmlzaW9u
IDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZmxleGJveC9jcmFzaC1mbGV4Ym94LW5vLWxh
eW91dC1jaGlsZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBib29tKCkgewogICBzZXRUaW1lb3V0KCdkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJwcm9ncmVzcyIpLnNldEF0dHJpYnV0ZSgic3R5bGUiLCAib3ZlcmZs
b3c6IHNjcm9sbDsgYm9yZGVyLXN0eWxlOiBkb3R0ZWQ7Iik7JywgMTApOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mbGV4Ym94L2hvcml6b250YWwtYm94LWZsb2F0LWNyYXNoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L2hvcml6b250YWwtYm94LWZsb2F0LWNy
YXNoLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZmxleGJveC9o
b3Jpem9udGFsLWJveC1mbG9hdC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
OCBAQAogPGh0bWw+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgewpA
QCAtMTQsMTAgKzE0LDEwIEBACiAgICAgICAgIHRlc3QuYXBwZW5kQ2hpbGQoYmxvY2txdW90ZSk7
CiAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgICAgICB0ZXN0LnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQodGVzdCk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAv
LyBGb3JjZSBhIGZvY3VzIGluIHdoaWNoIGZvcmNlcyBhIHBhaW50IHRoYXQgY2FuIHRyaWdnZXIg
dGhlIGNyYXNoLgotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0V2luZG93SXNL
ZXkoZmFsc2UpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0V2luZG93SXNL
ZXkodHJ1ZSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFdpbmRvd0lzS2V5KGZhbHNlKTsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0V2luZG93SXNLZXkodHJ1ZSk7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVySFRNTCA9ICJQQVNTIjsK
ICAgICAgICAgfQogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmxleGJveC9pbmxpbmUt
Y2hpbGRyZW4tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZsZXhi
b3gvaW5saW5lLWNoaWxkcmVuLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZmxleGJveC9pbmxpbmUtY2hpbGRyZW4tY3Jhc2guaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTQsOCArMTQsOCBAQAogfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zs
ZXhib3gvbGF5b3V0SG9yaXpvbnRhbEJveC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmxleGJveC9sYXlvdXRIb3Jpem9udGFsQm94LWNyYXNoLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZmxleGJveC9sYXlvdXRIb3Jpem9udGFs
Qm94LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAuYzY6bnRoLWxh
c3QtY2hpbGQoMm4rMTAwMDAwMDAwMDAwMDAwMDApIHsgdGV4dC1hbGlnbjogLXdlYmtpdC1jZW50
ZXI7IHdpZHRoOiAxMHB4OyB9CiAuYzI2OmZpcnN0LWxldHRlciB7IHZpc2liaWxpdHk6IGluaGVy
aXQ7IG92ZXJmbG93OiBzY3JvbGw7IGZsb2F0OiBsZWZ0Ozwvc3R5bGU+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgdmFyIGJ1dHRvbiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mbGV4
Ym94L2xpbmUtY2xhbXAtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZsZXhib3gvbGluZS1jbGFtcC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZsZXhib3gvbGluZS1jbGFtcC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw4ICsyOSw4IEBACiAgICAgICAgIHBsYWNlaG9sZGVyLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQocGxhY2Vob2xkZXIpOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAgICAgdGVzdCgpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mbGV4Ym94L292ZXJoYW5naW5nLWZsb2F0cy1ub3QtcmVtb3ZlZC1jcmFz
aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmxleGJveC9vdmVyaGFuZ2lu
Zy1mbG9hdHMtbm90LXJlbW92ZWQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mbGV4Ym94L292ZXJoYW5naW5nLWZsb2F0cy1ub3QtcmVtb3ZlZC1jcmFz
aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBACiB9DQogPC9zdHlsZT4NCiA8
c2NyaXB0Pg0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KIA0KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7DQogICAg
IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOw0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmxleGJv
eC9yZXNvdXJjZXMvYm94LW9yaWVudC1idXR0b24uanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mbGV4Ym94L3Jlc291cmNlcy9ib3gtb3JpZW50LWJ1dHRvbi5qcwkocmV2aXNpb24g
MTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mbGV4Ym94L3Jlc291cmNlcy9ib3gtb3JpZW50
LWJ1dHRvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMjEsNSArMjEsNSBAQCBzaG91bGRCZSgiZ2Vi
aSgndG9Ib3Jpem9udGFsJykuY2xpZW50SGVpCiBzaG91bGRCZSgiZ2ViaSgndG9WZXJ0aWNhbCcp
LmNsaWVudEhlaWdodCIsICJyZWZlcmVuY2VWZXJ0aWNhbEhlaWdodCIpOwogCiAvLyBJZiB3ZSBh
cmUgaW4gRFRSLCB3ZSBkb24ndCBuZWVkIG1lYW5pbmdsZXNzIG1lc3NhZ2VzLgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbiIpLmlubmVySFRNTCA9ICIiOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy84MjUwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy84MjUwLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvODI1MC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQCBUaGUgdGV4dCBm
aWVsZCBzaG91bGQgaGF2ZSBhIHNwYWNlIGluIGl0CiAKIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogCiB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CiBlLmZvY3VzKCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zLzExNDIzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy8xMTQyMy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zLzExNDIzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDgg
KzEwLDggQEAgZnVuY3Rpb24gbG9nKHN0cikgewogICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkp
OwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIAogdmFyIHRleHRhcmVhID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRhcmVhIik7CiB0ZXh0YXJlYS5mb2N1cygpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy8yNTE1My5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvMjUxNTMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy8yNTE1My5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIs
OCBAQCBUaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGNsaWNraW5nIGluCiA8aW5wdXQgaWQ9
InRleHRmaWVsZCIgb25Gb2N1cz0id2luZG93LnNjcm9sbEJ5KDAsIDQwKSIgdmFsdWU9ImNsaWNr
IGluIG1lIj48YnI+CiA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDE1MDBweDsiPgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2lu
ZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRleHRmaWVsZCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXh0ZmllbGQiKTsKICAgICAvLyBDbGljayBuZWFyIHRoZSBlbmQgb2Yg
dGhlIGZpZWxkIHNvIHRoYXQgdGhlIGNhcmV0IGFmdGVyIGFsbCBvZiB0aGUgdGV4dCBpbnNpZGUg
aXQuCiAgICAgeCA9IHRleHRmaWVsZC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIHRleHRmaWVs
ZC5vZmZzZXRMZWZ0ICsgdGV4dGZpZWxkLm9mZnNldFdpZHRoIC0gNTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvNDYyODQwOS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvNDYyODQwOS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zLzQ2Mjg0MDkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxw
PlRoaXMgdGVzdHMgZm9yIGEgY3Jhc2ggd2hlbiBpbnNlcnRpbmcgdGV4dCBpbnRvIGEgdGV4dGFy
ZWEgdGhhdCBoYXMgYmVlbiBzaHJ1bmsgdG8gemVybyByb3dzIGp1c3QgYmVmb3JlIHRoZSBpbnNl
cnRpb24uPC9wPgogPHRleHRhcmVhIGlkPSJ0ZXh0YXJlYSIgcm93cz0iMSI+PC90ZXh0YXJlYT4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogdmFyIGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGV4dGFyZWEiKTsKIGUuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7CiBl
LnJvd3MgPSAwOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVu
dF9zZWxlY3RlZDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hU
TUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogICAgICAgPG9wdGlvbiBpZD0idGhlT3B0aW9uIj5s
YWxhbGE8L29wdGlvbj4KICAgICA8L3NlbGVjdD4KICAgICA8c2NyaXB0PgotICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgIHZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RoZU9wdGlvbicpOwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ09uZScp
LnRleHRDb250ZW50ID0gby5zZWxlY3RlZDsKICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsb2dUd28nKS50ZXh0Q29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVTZWxl
Y3QnKS5zZWxlY3RlZEluZGV4OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0
aW9uRWxlbWVudF9zZWxlY3RlZDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQAogICAgIDxzZWxlY3QgaWQ9InRoZVNl
bGVjdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICAgICA8b3B0aW9uIGlkPSJ0aGVPcHRpb24i
PmxhbGFsYTwvb3B0aW9uPgogICAgIDxzY3JpcHQ+Ci0gICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgICAgdmFyIG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlT3B0aW9u
Jyk7CiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nT25lJykudGV4dENvbnRlbnQg
PSBvLnNlbGVjdGVkOwogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ1R3bycpLnRl
eHRDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNlbGVjdCcpLnNlbGVjdGVk
SW5kZXg7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3Nl
bGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0
aW9uRWxlbWVudF9zZWxlY3RlZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTUsOCArNSw4IEBACiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpOwogICAgICAgICAgICAgdmFyIHRoZU9wdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0aGVPcHRpb24nKTsKICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IHRoZU9wdGlv
bi5zZWxlY3RlZCArICI8YnI+IjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRp
dHlTdGF0ZS0wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtMDAxLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS0wMDEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsOCAr
MTYsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHYgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5TmFtZSgidmljdGltIik7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
VmFsaWRpdHlTdGF0ZS0wMDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtMDAyLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS0wMDIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Nyw4ICs3LDggQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL1ZhbGlkaXR5U3RhdGUtcmVtb3ZlZC1jb250cm9sLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXJlbW92ZWQtY29udHJvbC5odG1sCShy
ZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUt
cmVtb3ZlZC1jb250cm9sLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAgZnVu
Y3Rpb24gZ2MoKQogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICB2YXIgdmFsaWRpdHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
dHJvbCIpLnZhbGlkaXR5OwogICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnRyb2wiKSk7CiAgICAgZ2MoKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0w
MDQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxp
ZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3
LDggQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeU5hbWUoInZpY3RpbSIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1Zh
bGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA1Lmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1
ZU1pc3NpbmctMDA1Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBACiAgICAgfQog
CiAgICAgZnVuY3Rpb24gdGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAKICAgICAgICAgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2
aWN0aW0iKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZh
bHVlTWlzc2luZy0wMDYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwNi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9u
IHRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
CiAgICAgICAgIHYgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA4
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRl
LXZhbHVlTWlzc2luZy0wMDguaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXZhbHVlTWlzc2luZy0wMDguaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNyw4ICs3LDggQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOwogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtdmFsdWVNaXNzaW5nLTAwOS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS12YWx1ZU1pc3Npbmct
MDA5Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvVmFs
aWRpdHlTdGF0ZS12YWx1ZU1pc3NpbmctMDA5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCAr
Nyw4IEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9h
Y2Nlc3Mta2V5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hY2Nl
c3Mta2V5Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
YWNjZXNzLWtleS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw4IEBAIGZ1bmN0aW9u
IHByZXNzS2V5KGtleSkKIH0KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IDk7IGkrKykKICAgICAg
ICAgICAgIHByZXNzS2V5KGkudG9TdHJpbmcoKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2FjdGl2YXRlLWFuZC1kaXNhYmxlZC1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvYWN0aXZhdGUtYW5kLWRpc2FibGVkLWVsZW1lbnRzLmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWN0aXZhdGUtYW5k
LWRpc2FibGVkLWVsZW1lbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidXR0b24nKTsK
ICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5w
dXQnKTsgICAgICAgICAgICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLWFuZC1y
ZW1vdmUtb3B0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9h
ZGQtYW5kLXJlbW92ZS1vcHRpb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9hZGQtYW5kLXJlbW92ZS1vcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtOCw4ICs4LDggQEAgQ2Fubm90IGNoYW5nZSBTRUxFQ1QgdG8gYSBkeW5hbWljYWxseSBjcgog
PC9mb3JtPgogPGRpdiBpZD1yZXM+PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gbG9nKG1zZykKICAgICB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2FkZC1yZW1vdmUtZm9ybS1lbGVtZW50cy1zdHJlc3MtdGVzdC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLXJlbW92ZS1mb3JtLWVs
ZW1lbnRzLXN0cmVzcy10ZXN0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvYWRkLXJlbW92ZS1mb3JtLWVsZW1lbnRzLXN0cmVzcy10ZXN0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8c2NyaXB0PgogCiBmdW5jdGlvbiB0ZXN0KCkg
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGlucHV0cyA9ICIiOwog
ICAgIGZvciAoaSA9IDA7IGkgIT0gNTAwOyArK2kpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2FkZC1yZW1vdmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVudC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLXJlbW92ZS1vcHRpb24tbW9kaWZpY2F0aW9u
LWV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
YWRkLXJlbW92ZS1vcHRpb24tbW9kaWZpY2F0aW9uLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTYsOCArNiw4IEBACiA8L2Zvcm0+CiA8ZGl2IGlkPXJlcz48L2Rpdj4KIDxzY3JpcHQ+Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAg
IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLXNlbGVjdGVkLW9wdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLXNlbGVjdGVkLW9wdGlv
bi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2FkZC1z
ZWxlY3RlZC1vcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCBDYW5u
b3QgY2hhbmdlIFNFTEVDVCB0byBhIGR5bmFtaWNhbGx5IGNyCiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgcmVzdWx0cyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIHJlc3VsdHMuaWQgPSAicmVzIjsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWF0dHJpYnV0ZS5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1h
dHRyaWJ1dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgICB9CiAKICAg
ICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICAgIAogICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJpbnB1dCIpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1j
aGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1
cy1pbnB1dC1jc3Mtc3R5bGUtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLWlucHV0LWNzcy1zdHlsZS1jaGFuZ2UuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAgaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kOiBn
cmVlbjsgfQogPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZXN0IiBhdXRvZm9jdXM+CiA8ZGl2IGlk
PSJyZXN1bHQiPkZBSUw8L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIHZh
ciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMS5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDEuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9u
IHRlc3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICAgICAgCiAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdKQogICAgICAgICAgICAgbG9nKCJT
VUNDRVNTIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0w
MDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1v
cGVyYS0wMDIuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9hdXRvZm9jdXMtb3BlcmEtMDAyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDgg
QEAKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAoZG9jdW1l
bnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQi
KVswXSkKICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDAzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwMy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdCgp
IHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAg
ICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImlucHV0IilbMF0gJiYKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9w
ICE9IDApCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVy
YS0wMDQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9h
dXRvZm9jdXMtb3BlcmEtMDA0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDkgKzExLDkgQEAK
ICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKICAgICAgICAgfQogICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnaW5wdXQnKVswXTsKICAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgncCcpWzBdOwpAQCAtMzAsOCArMzAsOCBAQAogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBsb2coIkZBSUxVUkUiKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA1Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA1Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwNS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw5ICsxNyw5IEBACiAgICAgICAgIGlucHV0LmF1dG9mb2N1cyA9IHRy
dWU7CiAgICAgICAgIHAuYXBwZW5kQ2hpbGQoaW5wdXQpOwogCi0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzZXRUaW1lb3V0KGNoZWNrLCAw
KTsKQEAgLTMxLDggKzMxLDggQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9nKCJGQUlM
VVJFIik7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1
dG9mb2N1cy1vcGVyYS0wMDYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2F1dG9mb2N1cy1vcGVyYS0wMDYuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA2Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTExLDggKzExLDggQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICBpZiAoZG9j
dW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpKQog
ICAgICAgICAgICAgbG9nKCJTVUNDRVNTIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2F1dG9mb2N1cy1vcGVyYS0wMDcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDcuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtb3BlcmEtMDA3Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE3LDggKzE3LDggQEAKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gdGVzdCgpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAg
aWYgKGdvdEJsdXIpCiAgICAgICAgICAgICBsb2coIlNVQ0NFU1MiKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLW9wZXJhLTAwOC5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F1dG9mb2N1cy1vcGVyYS0wMDguaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdLmZvY3Vz
KCk7CiAgICAgICAgIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXSkKICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyIp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMtcmVhZG9ubHktYXR0cmli
dXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdXRvZm9jdXMt
cmVhZG9ubHktYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvYXV0b2ZvY3VzLXJlYWRvbmx5LWF0dHJpYnV0ZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDggKzIsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogZnVuY3Rpb24gbG9nKG1zZykgewogICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYnV0
dG9uLWNsaWNrLURPTS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
YnV0dG9uLWNsaWNrLURPTS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2J1dHRvbi1jbGljay1ET00uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsy
LDggQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0aGVidXR0b24iKS5jbGljaygpOyAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSAKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogfQogCiBmdW5jdGlvbiBjbGlja3koKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2J1dHRvbi1lbnRlci1jbGljay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvYnV0dG9uLWVudGVyLWNsaWNrLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvYnV0dG9uLWVudGVyLWNsaWNrLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQsOCArNCw4IEBACiAgICAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdmFyIGJ0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0Jyk7CiAgICAgICAgIGJ0LmZvY3VzKCk7Ci0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oIlxyIiwgW10pOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9idXR0b24taW4tZm9ybXMtY29sbGVjdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYnV0dG9uLWluLWZvcm1zLWNv
bGxlY3Rpb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9idXR0b24taW4tZm9ybXMtY29sbGVjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDgg
KzMsOCBAQAogCiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdFBhc3NlZCht
c2cpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2J1dHRvbi1zcGFjZWJhci1jbGlj
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYnV0dG9uLXNwYWNl
YmFyLWNsaWNrLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvYnV0dG9uLXNwYWNlYmFyLWNsaWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4
IEBACiAgICAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdmFyIGJ0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2J0Jyk7CiAgICAgICAgIGJ0LmZvY3VzKCk7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oJyAnKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvYnV0dG9uLXN0YXRlLXJlc3RvcmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2J1dHRvbi1zdGF0ZS1yZXN0b3JlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYnV0dG9uLXN0YXRlLXJlc3RvcmUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTYsMTQgKzE2LDE0IEBACiAKICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gcmVzdWx0OwogCi0gICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBiZWVuSGVyZS52YWx1ZSA9ICJGQUlMIjsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvY2FyZXQtcnRsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9jYXJldC1ydGwuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9jYXJldC1ydGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4
ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEVkaXRpbmdDYWxsYmFj
a3MoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgdGVzdFJ1bm5lci5kdW1wRWRpdGlu
Z0NhbGxiYWNrcygpOwogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvY2hhbmdlLWZvcm0tZWxlbWVudC1kb2N1bWVudC1jcmFzaC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvY2hhbmdlLWZvcm0tZWxlbWVudC1kb2N1
bWVudC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2NoYW5nZS1mb3JtLWVsZW1lbnQtZG9jdW1lbnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKIGZ1bmN0aW9uIGdjKCkgewogICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jaGVja2JveC1hcHBlYXJhbmNlLWNoYW5nZS1ieS1jaGVj
a2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jaGVja2JveC1h
cHBlYXJhbmNlLWNoYW5nZS1ieS1jaGVja2VkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvY2hlY2tib3gtYXBwZWFyYW5jZS1jaGFuZ2UtYnktY2hlY2tl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDExICs1LDExIEBACiA8c2NyaXB0PgogdmFyIGNo
ZWNrYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07CiBjaGVj
a2JveC5vZmZzZXRUb3A7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CiAgICAgY2hlY2tib3guY2hlY2tlZCA9IHRydWU7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiB9LCAwKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9j
bG9uZS1pbnB1dC13aXRoLWRpcnR5LXZhbHVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9jbG9uZS1pbnB1dC13aXRoLWRpcnR5LXZhbHVlLmh0bWwJKHJldmlzaW9u
IDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvY2xvbmUtaW5wdXQtd2l0aC1kaXJ0
eS12YWx1ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQCBUaGUgY2xvbmVkIGlu
cHV0IGVsZW1lbnQgc2hvdWxkIHJldGFpbiB0CiA8ZGl2PjxpbnB1dCBpZD0idGVzdCIgdGl0bGU9
IjEiIHR5cGU9InRleHQiIHZhbHVlPSJGQUlMIj48L2Rpdj4KIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Rlc3QnKTsKIHRlc3QudmFsdWUgPSAnUEFTUyc7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29u
dGVudC1ib3VuZGFyeS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTE2LDggKzE2LDggQEAgdmFyIHN1Y2NlZWQgPSB0cnVlOwogCiBmdW5jdGlvbiBy
dW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIC8vIFRoZSAy
bmQgcGFyYW1ldGVyIDIyIGlzIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0ZXh0YXJlYSB3aXRoIGlk
ICJ0ZXh0YXJlYV9ydGwiLgogICAgIHRlc3RDYXJldFJlY3QoInRleHRhcmVhX3J0bCIsIDIyLCAi
cnRsIiwgImhvcml6b250YWwiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvY3Vyc29y
LXBvc2l0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jdXJz
b3ItcG9zaXRpb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9jdXJzb3ItcG9zaXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICB2YXIgZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQiKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGFuZ2xpbmctZm9ybS1lbGVtZW50LWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYW5nbGluZy1mb3JtLWVsZW1l
bnQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9kYW5nbGluZy1mb3JtLWVsZW1lbnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4
ICsxLDggQEAKIDxodG1sPgogICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBn
YygpIHsKQEAgLTE4LDggKzE4LDggQEAKICAgICAgICAgZm9ybS5pZCA9ICdmb28nOwogICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pOwogICAgICAgICBkb2N1bWVudC5ib2R5
LmlubmVySFRNTCArPSAnUEFTUyc7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2RlZmVyLXVwZGF0ZUZyb21FbGVtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kZWZlci11cGRhdGVGcm9tRWxlbWVudC5odG1sCShy
ZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RlZmVyLXVwZGF0ZUZy
b21FbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiA8aWZyYW1lPjwv
aWZyYW1lPgogPHRleHRhcmVhIGlkPSJ0YXJnZXQiPlRlc3QgZGlkIG5vdCBydW48L3RleHRhcmVh
PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciB0YXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CiAgICAgdGFyZ2V0Lm9mZnNl
dFRvcDsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGVsZXRlLXRleHQtd2l0aC1pbnZp
c2libGUtYnIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RlbGV0
ZS10ZXh0LXdpdGgtaW52aXNpYmxlLWJyLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZGVsZXRlLXRleHQtd2l0aC1pbnZpc2libGUtYnIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQCBkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0
VGV4dCcsIGZhbHNlCiBpZiAodGVzdC52YWx1ZSAhPSAnUEFTUycpCiAgICAgdGVzdC52YWx1ZSA9
ICdGQUlMJzsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRlc3QucGFyZW50Tm9kZS5wYXJlbnRO
b2RlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgZG9jdW1lbnQud3JpdGVsbih0ZXN0LnZh
bHVlKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQtbW91c2Vkb3du
LWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxl
ZC1tb3VzZWRvd24tZXZlbnQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9kaXNhYmxlZC1tb3VzZWRvd24tZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNiw4ICs2LDggQEAKIDxkaXYgaWQ9ImxvZyI+RkFJTDwvZGl2PgogPHNjcmlwdD4KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGNsaWNrT24oZWxlbWVudCkKIHsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZGlzYWJsZWQtc2VhcmNoLWlucHV0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5wdXQuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kaXNhYmxlZC1zZWFyY2gtaW5w
dXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxoZWFkPgogPHNjcmlwdD4K
IAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGxvZ0RpdjsK
QEAgLTQyLDcgKzQyLDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignYScpOwogICAgICAgICBs
b2coJ1RoZSBpbm5lciB0ZXh0IGVsZW1lbnQgb2YgdGhlIHNlYXJjaCBpbnB1dCBzaG91bGQgbmV2
ZXIgYmUgMC1oZWlnaHQnLCBpbnB1dC52YWx1ZSA9PSAnYScpOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgIH0sIDApOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Rpc3BsYXkt
bm9uZS1pbi1vbmNoYW5nZS1rZXlib2FyZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZGlzcGxheS1ub25lLWluLW9uY2hhbmdlLWtleWJvYXJkLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGlzcGxheS1ub25lLWluLW9u
Y2hhbmdlLWtleWJvYXJkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVh
ZD4KICAgICA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGFsZXJ0KCdUaGlzIHRlc3QgZG9lcyBub3Qgd29yayBpbiBTYWZhcmkuJyk7CiAgICAgICAg
ICAgICByZXR1cm47CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RvY3VtZW50LXdyaXRl
LWVtcHR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kb2N1bWVu
dC13cml0ZS1lbXB0eS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2RvY3VtZW50LXdyaXRlLWVtcHR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCAr
NSw4IEBACiAKICA8cD5UaGVyZSBzaG91bGQgbm90IGJlIGFueSB0ZXh0IGJlbG93IHRoaXMgc2Vu
dGVuY2UuPC9wPgogICA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICBkb2N1bWVudC53cml0
ZSgpIAogICA8L3NjcmlwdD4KICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZG9jdW1l
bnQtd3JpdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RvY3Vt
ZW50LXdyaXRlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZG9jdW1lbnQtd3JpdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAKIGZ1
bmN0aW9uIHRlc3QoKSB7CiAgIGlmIChkb2N1bWVudC5VUkwuaW5kZXhPZignPycpID09IC0xKSB7
CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgIH0KICAgICAKICAgICBkb2N1bWVudC53cml0ZSgiPGh0bWw+PGJvZHk+IiArCkBAIC0xNiw4
ICsxNiw4IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgInB0PjwvYm9keT48L2h0bWw+Iik7CiAg
IH0gZWxzZSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TD0iU1VDQ0VTUyI7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgfQogICAKIH0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZG9tc3RyaW5nLXJlcGxhY2UtY3Jhc2guaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RvbXN0cmluZy1yZXBsYWNlLWNyYXNo
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZG9tc3Ry
aW5nLXJlcGxhY2UtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxo
dG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiI+CiA8aGVh
ZD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3Jp
cHQ+CiA8dGl0bGU+CiA8L3RpdGxlPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kb3Vi
bGUtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RvdWJs
ZS1mb2N1cy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2RvdWJsZS1mb2N1cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgICAgICAgICAgICAgdGVzdEVsZW1lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRleHRhcmVhIikpOwogICAgICAgICAgICAgICAgIHRlc3RFbGVtZW50KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbnB1dCIpKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZHJh
Zy1pbnRvLXRleHRhcmVhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9kcmFnLWludG8tdGV4dGFyZWEuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9kcmFnLWludG8tdGV4dGFyZWEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTEsMTMgKzExLDEzIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAKICAgICBpbnB1dC5zZWxlY3Qo
KTsKIAotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICghd2lu
ZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIXdpbmRvdy5ldmVudFNl
bmRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICAKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKQEAgLTMxLDcgKzMxLDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAg
ICBlbHNlCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRl
eHQgPSAiVGVzdCBmYWlsZWQhIElucHV0IHZhbHVlIHdhcyAiICsgaW5wdXQudmFsdWUgKyAiIGFu
ZCB0ZXh0IGFyZWEgdmFsdWUgd2FzICIgKyB0ZXh0YXJlYS52YWx1ZSArICIuIjsKIAotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RyYWct
b3V0LW9mLXRleHRhcmVhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9kcmFnLW91dC1vZi10ZXh0YXJlYS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2RyYWctb3V0LW9mLXRleHRhcmVhLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTExLDEzICsxMSwxMyBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogCiAgICAgdGV4dGFyZWEu
c2VsZWN0KCk7CiAKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBp
ZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCF3aW5kb3cu
ZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh0eCwgdHkpOwogICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOwpAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkg
ewogICAgIGVsc2UKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVyVGV4dCA9ICJUZXN0IGZhaWxlZCEgSW5wdXQgdmFsdWUgd2FzICIgKyBpbnB1dC52YWx1ZSAr
ICIgYW5kIHRleHQgYXJlYSB2YWx1ZSB3YXMgIiArIHRleHRhcmVhLnZhbHVlICsgIi4iOwogCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZWxlbWVudC1ieS1uYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9lbGVtZW50LWJ5LW5hbWUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9lbGVtZW50LWJ5LW5hbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICsz
LDggQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHV0RWxlbWVudEhlcmUiKS5p
bm5lckhUTUwgPSAiPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3Rlc3RFbGVtZW50JyB2YWx1ZT0n
dGVzdCBlbGVtZW50IGNvbnRlbnRzJz4iOwogICAgIGRvY3VtZW50LnRlc3RGb3JtLnRlc3RFbGVt
ZW50LmZvY3VzKCk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVy
VGV4dCA9ICJGb3JtIGVsZW1lbnQgd2FzIGZvdW5kLiI7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2VsZW1lbnQtb3JkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2VsZW1lbnQtb3JkZXIuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9lbGVtZW50LW9yZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCAr
Miw4IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGYgPSB3aW5kb3cuZG9jdW1lbnQuZm9ybXNbMF07
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZW1wdHktZ2V0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS1nZXQuaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS1nZXQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTEsOSArMTEsOSBAQCBFbXB0eSBmb3JtcyBhcmUgc3VibWl0dGVkIGluY29ycmVj
dGx5LjwvCiA8L2Zvcm0+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogCiBpZiAoZG9jdW1lbnQuVVJMLmluZGV4T2YoJz8nKSA9PSAtMSkgewpAQCAt
MjcsOCArMjcsOCBAQCBpZiAoZG9jdW1lbnQuVVJMLmluZGV4T2YoJz8nKSA9PSAtMSkgewogICAg
IGVsc2UKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPkZhaWx1cmU8L3A+Iik7CiAgICAgCi0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9lbXB0eS10ZXh0YXJlYS10b2dnbGUtZGlzYWJsZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1k
aXNhYmxlZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2VtcHR5LXRleHRhcmVhLXRvZ2dsZS1kaXNhYmxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
LDkgKzQsOSBAQCB0aGUgdGVzdCBzdWNjZWVkZWQuPHA+CiA8dGV4dGFyZWEgaWQ9InRhIiBkaXNh
YmxlZD0iZGlzYWJsZWQiPjwvdGV4dGFyZWE+CiAKIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CkBAIC0yMCw3ICsyMCw3IEBAIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cHJlPkZBSUwsIHJl
c3VsdCB3YXMgJyIgKyByZXN1bHQgKyAiJy48L3ByZT4iKTsKICAgICB9Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiB9LCAwKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9lbnRlci1jbGlja3MtYnV0dG9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZW50ZXItY2xpY2tzLWJ1dHRvbnMuaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9lbnRlci1jbGlja3MtYnV0dG9ucy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBAIGZ1bmN0aW9uIGxvZ0V2ZW50KGV2ZW50KQog
CiBmdW5jdGlvbiBsb2FkZWQoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAg
ICAgdmFyIGtleXMgPSBbJ1xyJywgJyAnXTsKICAgICB2YXIga2V5TmFtZXMgPSBbJ0VudGVyJywg
J1UrMDAyMCddOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mYWxsYmFjay1jb250ZW50
LXN1Ym1pc3Npb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zh
bGxiYWNrLWNvbnRlbnQtc3VibWlzc2lvbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZhbGxiYWNrLWNvbnRlbnQtc3VibWlzc2lvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC02LDkgKzYsOSBAQAogPGlmcmFtZSBuYW1lPSJ0ZyI+PC9pZnJhbWU+CiA8
ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKQEAgLTE5LDgg
KzE5LDggQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLnRleHRDb250ZW50ID0gIlBBU1MiOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykudGV4
dENvbnRlbnQgPSAiRkFJTDogYWN0dWFsPSIgKyBhY3R1YWxfc2VhcmNoOwotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCBmYWxzZSk7CiAKICAgICBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpWzBdLnN1Ym1pdCgpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb2N1czIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzMi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBA
QAogCiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gbG9nKHMpCiB7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLWNoYW5nZS1vbi1rZXlwcmVzcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtY2hhbmdlLW9uLWtleXBy
ZXNzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9j
dXMtY2hhbmdlLW9uLWtleXByZXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDgg
QEAgZnVuY3Rpb24gcnVuVGVzdChuYW1lLCBzaG91bGRDaGFuZ2VTZWxlYwogICAgIGRvY3VtZW50
LndyaXRlbG4oKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBydW5UZXN0KCdpbnB1dCcsIGZhbHNlKTsKICAg
ICBydW5UZXN0KCdpbnB1dCcsIHRydWUpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
b2N1cy1jb250cm9sLXRvLXBhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2ZvY3VzLWNvbnRyb2wtdG8tcGFnZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLWNvbnRyb2wtdG8tcGFnZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC04LDggKzgsOCBAQCBmdW5jdGlvbiBsb2coc3RyKQogCiBmdW5jdGlvbiBydW5U
ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGlmICghd2luZG93
LmV2ZW50U2VuZGVyKQogICAgICAgICByZXR1cm47CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ZvY3VzLXNlbGVjdGlvbi1pbnB1dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9jdXMtc2VsZWN0aW9uLWlucHV0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtc2VsZWN0aW9uLWlucHV0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQsMTUgKzQsMTUgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiBydW5UZXN0
KCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAKICAgICB2YXIgYWNjZXNzS2V5TW9k
aWZpZXJzID0gWyJhbHRLZXkiXTsKICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5zZWFyY2go
L1xiTWFjIE9TIFhcYi8pICE9IC0xKQogICAgICAgICBhY2Nlc3NLZXlNb2RpZmllcnMgPSBbImN0
cmxLZXkiLCAiYWx0S2V5Il07CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRWRpdGlu
Z0NhbGxiYWNrcygpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKICAgICBzaG91bGRCZSgiZmlyc3Quc2VsZWN0aW9uU3RhcnQiLCAiMTIiKTsK
ICAgICBzaG91bGRCZSgiZmlyc3Quc2VsZWN0aW9uRW5kIiwgIjE5Iik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLXNlbGVjdGlvbi10ZXh0YXJlYS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtc2VsZWN0aW9uLXRleHRhcmVhLmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMtc2VsZWN0
aW9uLXRleHRhcmVhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTUgKzQsMTUgQEAKIDxzY3Jp
cHQ+CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAK
ICAgICB2YXIgYWNjZXNzS2V5TW9kaWZpZXJzID0gWyJhbHRLZXkiXTsKICAgICBpZiAobmF2aWdh
dG9yLnVzZXJBZ2VudC5zZWFyY2goL1xiTWFjIE9TIFhcYi8pICE9IC0xKQogICAgICAgICBhY2Nl
c3NLZXlNb2RpZmllcnMgPSBbImN0cmxLZXkiLCAiYWx0S2V5Il07CiAKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wRWRpdGluZ0NhbGxiYWNrcygpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBzaG91bGRCZSgiZmlyc3Quc2Vs
ZWN0aW9uU3RhcnQiLCAiMTEiKTsKICAgICBzaG91bGRCZSgiZmlyc3Quc2VsZWN0aW9uRW5kIiwg
IjE4Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLXN0eWxlLXBlbmRpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLXN0eWxlLXBl
bmRpbmcuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
b2N1cy1zdHlsZS1wZW5kaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8
aHRtbD4KIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9ImRhdGE6dGV4dC9jc3MsYm9ndXN7fSI+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxib2R5PgogVGVzdCB0aGF0IGZv
Y3VzKCkgc2V0cyBpbnB1dCBmb2N1cyBjb3JyZWN0bHkgZXZlbiB3aGVuIHRoZXJlIGFyZSBwZW5k
aW5nIHN0eWxlc2hlZXQgbG9hZHMuPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
b2N1cy13aXRoLWRpc3BsYXktYmxvY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZvY3VzLXdpdGgtZGlzcGxheS1ibG9jay5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLXdpdGgtZGlzcGxheS1ibG9jay5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsxNSw3IEBAIG91dHB1dCwgbWV0ZXIsIHByb2dyZXNz
IHsKIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3QgZW5zdXJlcyB0aGF0ICZsdDtvdXRwdXQmZ3Q7LCAm
bHQ7bWV0ZXImZ3Q7IGFuZCAmbHQ7cHJvZ3Jlc3MmZ3Q7IGFyZSBub3QgZm9jdXNlZC4nKTsKIAog
ZnVuY3Rpb24gbW92ZUZvY3VzKGVsZW1lbnQpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bignXHQnKTsKICAgICBlbHNlCiAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZvY3VzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZm9jdXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDgg
QEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiB9CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIxIiku
Zm9jdXMoKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiMiIpLmZvY3VzKCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWFjdGlvbi5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYWN0aW9uLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxib2R5PgogPHNjcmlwdD4KLSBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAKIGZ1bmN0aW9uIHRlc3QodWwpIHsKIHVsLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
b3VyY2VWaWV3RGl2JykuaW5uZXJIVE1MPScgVGhpcyB0ZXN0OiBQQVNTRUQhJwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWFzc29jaWF0ZWQtZWxlbWVudC1jcmFzaDIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRlZC1lbGVt
ZW50LWNyYXNoMi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tYXNzb2NpYXRlZC1lbGVtZW50LWNyYXNoMi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDkgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBnYygpIHsKQEAgLTM0LDggKzM0LDgg
QEAgZnVuY3Rpb24gZGVsYXkoKQogICAgIGZvcm0uc2V0QXR0cmlidXRlKCdpZCcsICdmb3JtMicp
OwogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZm9ybSk7CiAgICAgbG9jYXRpb24ucmVs
b2FkKCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVh
ZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hc3NvY2lhdGVkLWVsZW1lbnQt
Y3Jhc2gzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWFz
c29jaWF0ZWQtZWxlbWVudC1jcmFzaDMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWFzc29jaWF0ZWQtZWxlbWVudC1jcmFzaDMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxib2R5PgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogPC9zY3JpcHQ+CiBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXNuJ3QgY3Jhc2guICBOb3Rl
OiBZb3UgbWlnaHQgbmVlZCB0byByZWxvYWQgdGhpcyB0ZXN0CiBtYW55IHRpbWVzIChvciBydW4g
dGhlIHRlc3QgdW5kZXIgdmFsZ3JpbmQgLyBBU0FOKSB0byBzZWUgYSBjcmFzaC4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1hc3NvY2lhdGVkLWVsZW1lbnQtY3Jhc2guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRlZC1lbGVt
ZW50LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZm9ybS1hc3NvY2lhdGVkLWVsZW1lbnQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw5ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIAogaWYgKCF3aW5kb3cuZ2MpIHsKQEAgLTMxLDggKzMxLDgg
QEAgZnVuY3Rpb24gZGVsYXkoKSB7CiAgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdmb3JtJyk7CiAgICAgZm9ybS5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2Zvcm0yJyk7CiAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1hdHRyaWJ1dGUtZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWF0dHJpYnV0ZS1lbGVtZW50cy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgY2hlY2tzIGEgZm9ybSBlbGVtZW50IGNhbiBoYW5kbGUgZWxlbWVudHMgb2Ygd2hp
Y2ggZm9ybSBhdHRyaWJ1dGUgcG9pbnRzIHRoZSBmb3JtIGVsZW1lbnQgZXZlbiBpZiBlbGVtZW50
cyBhcmUgb3V0c2lkZSBvZiB0aGUgZm9ybS4iKTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKIHZh
ciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKQEAgLTQ0LDggKzQ0LDggQEAgaWYgKHF1ZXJ5Lmlu
ZGV4T2YoJ3N1Ym1pdHRlZD10cnVlJykgPT0gLQogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
cGFpcnNbMF0nLCAna2V5MT12YWx1ZTEnKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Bh
aXJzWzFdJywgJ2tleTI9dmFsdWUyJyk7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdwYWly
c1syXScsICdzdWJtaXR0ZWQ9dHJ1ZScpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
fQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1j
b2xsZWN0aW9uLWxvb2t1cC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZm9ybS1jb2xsZWN0aW9uLWxvb2t1cC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tY29sbGVjdGlvbi1sb29rdXAuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw4ICsxLDggQEAKIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxzY3JpcHQ+
CiBmdW5jdGlvbiBydW5UZXN0KCkgewotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogdmFyIGZvcm0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7CiB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpbnB1dCcpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWNv
bnRyb2wtZWxlbWVudC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZm9ybS1jb250cm9sLWVsZW1lbnQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWNvbnRyb2wtZWxlbWVudC1jcmFzaC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAg
Ly8gUmVwZWF0IHRvIGluY3JlYXNlIGNoYW5jZSBvZiBjcmFzaC4KQEAgLTEwLDcgKzEwLDcgQEAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oNzUsNzUpOwogICAgICAgICB9LCAwKTsKICAgICB9Ci0gICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7IH0gfSwgMCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyB9IH0s
IDApOwogfQogPC9zY3JpcHQ+CiBHZW5lcmF0ZWQgYnkgY2x1c3Rlci1mdXp6LiBUaGlzIHRlc3Qg
cGFzc2VzIGlmIGl0IGRvZXNuJ3QgY3Jhc2guCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2Zvcm0tZGF0YS1lbmNvZGluZy0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9mb3JtLWRhdGEtZW5jb2RpbmctMi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGF0YS1lbmNvZGluZy0yLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTgsOSArOCw5IEBACiAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cSB2YWx1ZT0i
JiMxMTA1OyYjNjY1NjA7JiMxMTkwODM7w6djIj48YnI+CiA8L2Zvcm0+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogaWYgKGRvY3VtZW50LlVSTC5z
dWJzdHJpbmcoMCwgNCkgPT0gImZpbGUiKSB7CkBAIC0yNSw4ICsyNSw4IEBAIGlmIChkb2N1bWVu
dC5VUkwuc3Vic3RyaW5nKDAsIDQpID09ICJmaWwKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ZG9jdW1lbnQud3JpdGUoIjxwPkZhaWx1cmU8L3A+Iik7CiAgICAgICAgIAotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKIH0gZWxzZSB7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGF0YS1lbmNvZGluZy1ub3JtYWxpemF0aW9u
LW92ZXJydW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0t
ZGF0YS1lbmNvZGluZy1ub3JtYWxpemF0aW9uLW92ZXJydW4uaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRhdGEtZW5jb2Rpbmctbm9ybWFsaXph
dGlvbi1vdmVycnVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDkgKzExLDkgQEAgUkVHUkVT
U0lPTjogUmVwcm9kdWNpYmxlIGNyYXNoIGF0IFdpa2lwZQogIDxpbnB1dCB0eXBlPWhpZGRlbiBu
YW1lPXEgdmFsdWU9IiYjeDY1OyYjeDMwMTsiPjxicj4KIDwvZm9ybT4KIDxzY3JpcHQ+Ci1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBpZiAoZG9jdW1lbnQuVVJMLnN1
YnN0cmluZygwLCA0KSA9PSAiZmlsZSIpIHsKQEAgLTI4LDggKzI4LDggQEAgaWYgKGRvY3VtZW50
LlVSTC5zdWJzdHJpbmcoMCwgNCkgPT0gImZpbAogICAgICAgICA8IS0tIG5vIGNyYXNoID09IHN1
Y2Nlc3MgLS0+CiAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5TVUNDRVNTPC9wPiIpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
fQogCiB9IGVsc2UgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWRhdGEtZW5j
b2RpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZGF0
YS1lbmNvZGluZy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tZGF0YS1lbmNvZGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDkgKzgsOSBA
QAogIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXEgdmFsdWU9IiYjMTEwNTsmIzY2NTYwOyYjMTE5
MDgzO+djIj48YnI+CiA8L2Zvcm0+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIAogaWYgKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCwgNCkgPT0gImZp
bGUiKSB7CkBAIC0yNSw4ICsyNSw4IEBAIGlmIChkb2N1bWVudC5VUkwuc3Vic3RyaW5nKDAsIDQp
ID09ICJmaWwKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPkZh
aWx1cmUsIHF1ZXJ5IGlzICIgKyBkb2N1bWVudC5VUkwuc3Vic3RyaW5nKGRvY3VtZW50LlVSTC5p
bmRleE9mKCc/JykrMSwgZG9jdW1lbnQuVVJMLmxlbmd0aCkgKyAiPC9wPiIpOwogICAgICAgICAK
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCiB9
IGVsc2UgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC1tdWx0aXBhcnQy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC1tdWx0
aXBhcnQyLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
Zm9ybS1nZXQtbXVsdGlwYXJ0Mi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDkgKzksOSBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InByZXNz
IG1lIj4KICAgICAgICAgICAgICAgICA8L2Zvcm0+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogaWYgKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCwg
NCkgPT0gImZpbGUiKSB7CkBAIC0yNyw4ICsyNyw4IEBAIGlmIChkb2N1bWVudC5VUkwuc3Vic3Ry
aW5nKDAsIDQpID09ICJmaWwKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZG9jdW1lbnQud3Jp
dGUoIjxwPkZhaWx1cmU8L3A+Iik7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgfQogCiB9IGVsc2UgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9mb3JtLWdldC1tdWx0aXBhcnQzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9mb3JtLWdldC1tdWx0aXBhcnQzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1nZXQtbXVsdGlwYXJ0My5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC05LDkgKzksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5
cGU9InN1Ym1pdCIgdmFsdWU9InByZXNzIG1lIj4KICAgICAgICAgICAgICAgICA8L2Zvcm0+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogaWYgKGRv
Y3VtZW50LlVSTC5zdWJzdHJpbmcoMCwgNCkgPT0gImZpbGUiKSB7CkBAIC0yNyw4ICsyNyw4IEBA
IGlmIChkb2N1bWVudC5VUkwuc3Vic3RyaW5nKDAsIDQpID09ICJmaWwKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPkZhaWx1cmU8L3A+Iik7CiAKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogCiB9IGVsc2UgewpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC1tdWx0aXBhcnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZ2V0LW11bHRpcGFydC5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZ2V0LW11
bHRpcGFydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDkgKzksOSBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InByZXNzIG1lIj4KICAgICAg
ICAgICAgICAgICA8L2Zvcm0+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIAogaWYgKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCwgNCkgPT0gImZpbGUi
KSB7CkBAIC0yNyw4ICsyNyw4IEBAIGlmIChkb2N1bWVudC5VUkwuc3Vic3RyaW5nKDAsIDQpID09
ICJmaWwKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPkZhaWx1
cmU8L3A+Iik7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgfQogCiB9IGVsc2UgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdl
dC10ZXh0cGxhaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zv
cm0tZ2V0LXRleHRwbGFpbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw5
ICsxMCw5IEBACiAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InByZXNzIG1lIj4KIDwv
Zm9ybT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQog
CiBpZiAoZG9jdW1lbnQuVVJMLnN1YnN0cmluZygwLCA0KSA9PSAiZmlsZSIpIHsKQEAgLTI5LDgg
KzI5LDggQEAgaWYgKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCwgNCkgPT0gImZpbAogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+RmFpbHVyZTogKCIgKyBkb2N1
bWVudC5VUkwgKyAiKTwvcD4iKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKICAgICB9CiAKIH0gZWxzZSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tcG9zdC11cmxlbmNvZGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9mb3JtLXBvc3QtdXJsZW5jb2RlZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tcG9zdC11cmxlbmNvZGVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTksOSArOSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQg
dHlwZT0ic3VibWl0IiB2YWx1ZT0icHJlc3MgbWUiPgogICAgICAgICAgICAgICAgIDwvZm9ybT4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBpZiAo
ZG9jdW1lbnQuVVJMLnN1YnN0cmluZygwLCA0KSA9PSAiZmlsZSIpIHsKQEAgLTI3LDggKzI3LDgg
QEAgaWYgKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCwgNCkgPT0gImZpbAogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+RmFpbHVyZTwvcD4iKTsKIAotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiAKIH0gZWxzZSB7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tc3VibWlzc2lvbi1jcmVhdGUtY3Jh
c2gueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLXN1Ym1p
c3Npb24tY3JlYXRlLWNyYXNoLnhodG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2Zvcm0tc3VibWlzc2lvbi1jcmVhdGUtY3Jhc2gueGh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQsOSArNCw5IEBAIFRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLgog
PGlucHV0IGlkPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgLz4KIDwvZm9ybT4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB0ZXh0Tm9kZSA9IGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJ4Iik7CkBAIC0xNiw4ICsxNiw4IEBAIHJ1blRlc3QgPSBmdW5j
dGlvbigpIHsKICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7
CiAgICAgZXZlbnQuaW5pdEV2ZW50KCJjbGljayIpOwogICAgIHRleHROb2RlLmRpc3BhdGNoRXZl
bnQoZXZlbnQpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBzZXRUaW1lb3V0
KHJ1blRlc3QsIDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtbWV0aG9kLWF0
dHJpYnV0ZS1idXR0b24taHRtbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZm9ybW1ldGhvZC1hdHRyaWJ1dGUtYnV0dG9uLWh0bWwuaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtbWV0aG9kLWF0dHJpYnV0ZS1idXR0
b24taHRtbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiA8L2Zvcm0+CiA8
c2NyaXB0PgogZGVzY3JpcHRpb24oIlRlc3QgZm9yIHRoZSBmb3JtbWV0aG9kIGF0dHJpYnV0ZSBp
biBidXR0b24gdGFncy4iKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIGJ1dHRv
biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidXR0b24nKTsKQEAgLTI3LDggKzI3LDggQEAg
aWYgKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCwgNCkgPT0gImZpbAogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCdUaGUgZm9ybW1ldGhvZCBhdHRyaWJ1dGUgd2FzIG5vdCB1
c2VkJyk7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm1tZXRo
b2QtYXR0cmlidXRlLWlucHV0LWh0bWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Zvcm1tZXRob2QtYXR0cmlidXRlLWlucHV0LWh0bWwuaHRtbAkocmV2aXNpb24g
MTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtbWV0aG9kLWF0dHJpYnV0ZS1p
bnB1dC1odG1sLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAKIDwvZm9ybT4K
IDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGVzdCBmb3IgdGhlIGZvcm1tZXRob2QgYXR0cmlidXRl
IGluIGlucHV0IHRhZ3MuIik7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBidXR0
b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnV0dG9uJyk7CkBAIC0yNyw4ICsyNyw4IEBA
IGlmIChkb2N1bWVudC5VUkwuc3Vic3RyaW5nKDAsIDQpID09ICJmaWwKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnVGhlIGZvcm1tZXRob2QgYXR0cmlidXRlIHdhcyBub3Qg
dXNlZCcpOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtdGFy
Z2V0LWF0dHJpYnV0ZS1idXR0b24taHRtbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybXRhcmdldC1hdHRyaWJ1dGUtYnV0dG9uLWh0bWwuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtdGFyZ2V0LWF0dHJpYnV0
ZS1idXR0b24taHRtbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw5ICsxMiw5IEBAIGRlc2Ny
aXB0aW9uKCJUZXN0IGZvciB0aGUgZm9ybXRhcmdldCBhdHQKIAogZnVuY3Rpb24gcnVuVGVzdCgp
CiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVl
KTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICB9CiAKICAgICAvLyBOb3QgZHVtcGluZyBhcyB0ZXh0IHNpbmNlIHRoZSBE
dW1wUmVuZGVyVHJlZSBkb2VzIG5vdCBkdW1wIHRoZSB0ZXh0IGNvbnRlbnQgb2YgY2hpbGQgZnJh
bWVzLiAgICAgICAgICAgICAgICAKQEAgLTI4LDggKzI4LDggQEAgZnVuY3Rpb24gcGFzc0ZyYW1l
TG9hZGVkKCkKICAgICAgICAgcmV0dXJuOwogICAgIHRlc3RQYXNzZWQoIlRoZSBmb3JtdGFyZ2V0
IGF0dHJpYnV0ZSB3YXMgc3VjY2Vzc2Z1bGx5IHVzZWQuIik7CiAgICAgaXNTdWNjZXNzZnVsbHlQ
YXJzZWQoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gZmFp
bEZyYW1lTG9hZGVkKCkKQEAgLTM4LDggKzM4LDggQEAgZnVuY3Rpb24gZmFpbEZyYW1lTG9hZGVk
KCkKICAgICAgICAgcmV0dXJuOwogICAgIHRlc3RGYWlsZWQoIlRoZSBmb3JtdGFyZ2V0IGF0dHJp
YnV0ZSB3YXMgbm90IHVzZWQuIik7CiAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogPGlmcmFtZSBzcmM9ImFib3V0
OmJsYW5rIiBpZD0icGFzcyIgbmFtZT0icGFzc0ZyYW1lIiBvbmxvYWQ9InBhc3NGcmFtZUxvYWRl
ZCgpIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybXRhcmdldC1h
dHRyaWJ1dGUtaW5wdXQtaHRtbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvZm9ybXRhcmdldC1hdHRyaWJ1dGUtaW5wdXQtaHRtbC5odG1sCShyZXZpc2lvbiAxMjA5
MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm10YXJnZXQtYXR0cmlidXRlLWlucHV0
LWh0bWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsOSArMTIsOSBAQCBkZXNjcmlwdGlvbigi
VGVzdCBmb3IgdGhlIGZvcm10YXJnZXQgYXR0CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAgICAgfQogCiAgICAgLy8gTm90IGR1bXBpbmcgYXMgdGV4dCBzaW5jZSB0aGUgRHVtcFJlbmRl
clRyZWUgZG9lcyBub3QgZHVtcCB0aGUgdGV4dCBjb250ZW50IG9mIGNoaWxkIGZyYW1lcy4gICAg
ICAgICAgICAgICAgCkBAIC0yOCw4ICsyOCw4IEBAIGZ1bmN0aW9uIHBhc3NGcmFtZUxvYWRlZCgp
CiAgICAgICAgIHJldHVybjsKICAgICB0ZXN0UGFzc2VkKCJUaGUgZm9ybXRhcmdldCBhdHRyaWJ1
dGUgd2FzIHN1Y2Nlc3NmdWxseSB1c2VkLiIpOwogICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGZhaWxGcmFtZUxv
YWRlZCgpCkBAIC0zOCw4ICszOCw4IEBAIGZ1bmN0aW9uIGZhaWxGcmFtZUxvYWRlZCgpCiAgICAg
ICAgIHJldHVybjsKICAgICB0ZXN0RmFpbGVkKCJUaGUgZm9ybXRhcmdldCBhdHRyaWJ1dGUgd2Fz
IG5vdCB1c2VkLiIpOwogICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDxpZnJhbWUgc3JjPSJhYm91dDpibGFuayIg
aWQ9InBhc3MiIG5hbWU9InBhc3NGcmFtZSIgb25sb2FkPSJwYXNzRnJhbWVMb2FkZWQoKSI+PC9p
ZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2dldC1mb3Jtcy10by1hYm91dC1i
bGFuay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZ2V0LWZvcm1z
LXRvLWFib3V0LWJsYW5rLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZ2V0LWZvcm1zLXRvLWFib3V0LWJsYW5rLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTUsOSArNSw5IEBACiAgICAgPHNjcmlwdD4KIAogZnVuY3Rpb24gcnVuKCkgewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB3aW5kb3cudGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAgZGVzY3JpcHRpb24oJ1N1Ym1pdHRp
bmcgYSBHRVQgZm9ybSB0byAmbHQ7YWJvdXQ6YmxhbmsmZ3Q7IHNob3VsZCByZWRpcmVjdCB0aGUg
YnJvd3NlciB0byAmbHQ7YWJvdXQ6Ymxhbms/Jmd0Oy4nKTsKQEAgLTI3LDggKzI3LDggQEAgZnVu
Y3Rpb24gb25GcmFtZUxvYWQoKQogCiAgICAgc2hvdWxkQmUoJ2lmcmFtZS5jb250ZW50RG9jdW1l
bnQuVVJMJywgJyJhYm91dDpibGFuaz8iJyk7CiAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogICAgIDwvc2Ny
aXB0PgogICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2hpZGRlbi1pbnB1
dC1lbmFibGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9oaWRk
ZW4taW5wdXQtZW5hYmxlZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2hpZGRlbi1pbnB1dC1lbmFibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiA8aGVhZD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiA8L3NjcmlwdD4KIAogPHN0eWxlPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9oaWRk
ZW4tbGlzdGJveC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaGlk
ZGVuLWxpc3Rib3guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9oaWRkZW4tbGlzdGJveC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZGlzcGxheSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZGlzcGxheSgpOwogPC9zY3JpcHQ+CiBUaGlzIHRlc3RzIHRoYXQgdGhlIHdob2xlIGxp
c3Rib3ggY29udHJvbCBpcyBoaWRkZW4gd2hlbiB2aXNpYmlsaXR5IGlzIHNldCB0byBoaWRkZW4u
CiA8YnI+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ltcGxpY2l0LXN1Ym1pc3Npb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ltcGxpY2l0LXN1Ym1p
c3Npb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
bXBsaWNpdC1zdWJtaXNzaW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDkgQEAg
dmFyIGFsbFRlc3RzID0gWwogICAgIFsgIk11bHRpcGxlIHRleHQgaW5wdXRzIHdpdGggYSBkaXNh
YmxlZCBidXR0b24iLCAiIXRleHQsdGV4dCwtYnV0dG9uIiwgIm4iXQogXTsKIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogdmFyIHJlc3VsdHMgPSB7CkBAIC03NCw4
ICs3NCw4IEBAIGZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkKICAgICB9CiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FyZW5hJykudGV4dENvbnRlbnQgPSAnJzsKICAgICByZXN1bHRzLnB1Ymxp
c2goKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gYnVpbGRB
bmRUZXN0Rm9ybShhcmVuYSwgaW5wdXRzLCBkZXNjcmlwdGlvbikKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW5saW5lLWlnbm9yZWQtb24tbGVnZW5kLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbmxpbmUtaWdub3JlZC1vbi1sZWdlbmQuaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbmxpbmUtaWdub3JlZC1v
bi1sZWdlbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhl
YWQ+CiAJPHNjcmlwdD4KLQkgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
CSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCSAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKwkgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCSAg
ICB9CiAJPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LWFwcGVhcmFuY2UtZWxlbWVudEZyb21Qb2ludC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1lbGVtZW50RnJvbVBvaW50Lmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFy
YW5jZS1lbGVtZW50RnJvbVBvaW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBA
CiA8aGVhZD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiBzaG93RWxlbWVudCh4LCB5KSB7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIAogICAgIHZhciByZXN1bHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVzJyk7CiAgICAgdmFyIG15RWxlbWVudCA9IGRvY3VtZW50LmVs
ZW1lbnRGcm9tUG9pbnQoeCwgeSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0
LWFwcGVhcmFuY2UtcHJldmVudERlZmF1bHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2UtcHJldmVudERlZmF1bHQuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXBy
ZXZlbnREZWZhdWx0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiA8c2NyaXB0
PgogZnVuY3Rpb24gdGVzdCgpCiB7ICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oMjUsIDU1KTsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvaW5wdXQtYXV0b2ZpbGxlZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWF1dG9maWxsZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMyw4ICszLDggQEAKICAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZhciB0ZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZicpOwpAQCAt
MTIsOCArMTIsOCBAQAogICAgICAgICB2YXIgb3JpZ2luYWxGb3JlZ3JvdW5kID0gY29tcHV0ZWRT
dHlsZS5jb2xvcjsKICAgICAgICAgdmFyIG9yaWdpbmFsQmFja2dyb3VuZCA9IGNvbXB1dGVkU3R5
bGUuYmFja2dyb3VuZENvbG9yOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dG9maWxsZWQo
dGYsIHRydWUpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0QXV0b2ZpbGxlZCh0ZiwgdHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBCb3RoIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBzaG91bGQgY2hh
bmdlLgpAQCAtMjksOCArMjksOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0b2ZpbGxlZCh0ZiwgZmFsc2UpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QXV0b2Zp
bGxlZCh0ZiwgZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ29sb3JzIHNob3VsZCBi
ZSByZXN0b3JlZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtY2hhbmdpbmct
dmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWNo
YW5naW5nLXZhbHVlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtY2hhbmdpbmctdmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2
LDggQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nw
JykuZm9jdXMoKTsKICAgICAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
fQogICAgIAogICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICdU
ZXN0Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWRlbGV0ZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtZGVsZXRlLmh0bWwJKHJl
dmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtZGVsZXRlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vZWRp
dGluZy9lZGl0aW5nLmpzIiBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9KYXZhU2Ny
aXB0IiA+PC9zY3JpcHQ+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgfQogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0ZicpLnNldFNlbGVjdGlvblJhbmdlKDUsIDExKTsKICAgICBkZWxldGVDb21tYW5kKCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWVsZW1lbnQtYXR0YWNoLWNyYXNoLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1lbGVtZW50LWF0
dGFjaC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lucHV0LWVsZW1lbnQtYXR0YWNoLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
OCArMSw4IEBACiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdD4KLSAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
ICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LWZpcnN0LWxldHRlci1lZGl0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1maXJzdC1sZXR0ZXItZWRpdC5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWZpcnN0LWxldHRl
ci1lZGl0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4IEBAIGlucHV0OmZpcnN0LWxl
dHRlciB7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogZnVuY3Rp
b24gdGVzdCgpCiB7CiAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKTsKQEAgLTIwLDcgKzIwLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGV2ZW50
U2VuZGVyLmtleURvd24oImwiKTsKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigibyIpOwog
ICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgic2VsZWN0QWxsIik7IC8vIERvZXMgc2VsZWN0
QWxsIGZvciBhbGlnbmluZyB0aGUgQGF1dG9mb2N1cyBhdHRyaWJ1dGUgb24gdGhlIGV4cGVjdGF0
aW9uLgotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1oaXQtdGVzdC1ib3JkZXIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWhpdC10ZXN0LWJvcmRlci5odG1sCShy
ZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWhpdC10ZXN0
LWJvcmRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiA8c2Ny
aXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICAgICAgCiAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMn
KTsKICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGYnKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtaW1hZ2Utc3VibWl0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1pbWFnZS1zdWJtaXQuaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1pbWFnZS1zdWJt
aXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBAQAogPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CiA8c2NyaXB0PgogZnVuY3Rpb24gbm90aWZ5RG9uZSgpIHsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gZmFpbEFuZERvbmUobWVzc2FnZSkgewpA
QCAtNDEsOCArNDEsOCBAQCBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHsKICAgICB9CiB9CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogCiB2YXIgc3RhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c3RhdGUnKTsKIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1pbXBsaWNpdC1sZW5ndGgtbGltaXQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWltcGxpY2l0
LWxlbmd0aC1saW1pdC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LWltcGxpY2l0LWxlbmd0aC1saW1pdC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC03LDggKzcsOCBAQAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgIlxuIikpOwogICAgIH0KIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIHRlc3RTdHJpbmcgPSAiIjsK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tdWx0aXBsZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbXVsdGlwbGUuaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1tdWx0aXBsZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4ICsxOCw4IEBACiAgICAgICAgIAogICAgICAgICBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHZhciB1cDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXAxIik7CiAgICAgICAgICAgICB2
YXIgdXAyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwMiIpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1uYW1lZC1hY3Rpb24tb3ZlcnJpZGVzLWFjdGlvbi1hdHRyaWJ1
dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW5hbWVk
LWFjdGlvbi1vdmVycmlkZXMtYWN0aW9uLWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW5hbWVkLWFjdGlvbi1vdmVycmlkZXMt
YWN0aW9uLWF0dHJpYnV0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogPHAg
aWQ9InJlc3VsdCI+PC9wPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgZG9jdW1lbnQu
Zm9ybXNbMF0uYWN0aW9uLnZhbHVlID0gIlBhc3NlZCI7CiAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSAiVGVzdCAiICsgKGRvY3VtZW50LmZvcm1z
WzBdLmFjdGlvbi52YWx1ZSA/IGRvY3VtZW50LmZvcm1zWzBdLmFjdGlvbi52YWx1ZSA6ICJGYWls
ZWQiKTsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXBsYWNlaG9s
ZGVyLXBhaW50LW9yZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1wbGFjZWhvbGRlci1wYWludC1vcmRlci5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXBsYWNlaG9sZGVyLXBhaW50LW9yZGVyLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8Ym9keT4KIDxzY3JpcHQ+CiAvLyBX
ZSBkb24ndCBjYXJlIGEgcmVuZGVyIHRyZWUgb2YgdGhpcyB0ZXN0LgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0
cnVlKTsKIDwvc2NyaXB0PgogPHN0eWxlPgogaW5wdXQgewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pbnB1dC1yZWFkb25seS1hdXRvc2Nyb2xsLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1yZWFkb25seS1hdXRvc2Nyb2xsLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtcmVhZG9ubHktYXV0
b3Njcm9sbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogICAgICAgICA8c2Ny
aXB0PgogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGF1
dG9zY3JvbGxUZXN0UGFydDEsIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
QEAgLTI3LDggKzI3LDggQEAKICAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KQogICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAgICAgICAgICAg
ICAgICAgbG9nKCJTY3JvbGxMZWZ0OiAiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RmJyku
c2Nyb2xsTGVmdCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBmdW5jdGlvbiBsb2cobXNnKQogICAgICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1yZWFkb25seS1mb2N1cy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtcmVhZG9ubHktZm9jdXMuaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1yZWFkb25seS1mb2N1cy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogPGhlYWQ+CiA8c2NyaXB0PgogZnVuY3Rp
b24gcnVuVGVzdCgpIHsKLSAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgIHZhciBpbnB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpJyk7CiAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGlu
cHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZzZXRXaWR0aCAvIDIsIGlucHV0Lm9mZnNldFRvcCAr
IGlucHV0Lm9mZnNldEhlaWdodCAvIDIpOwpAQCAtMTQsNyArMTQsNyBAQCB3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CiAgIGlucHV0Lm9uZm9jdXMgPSBmdW5jdGlvbihlKSB7CiAgICAgZG9j
dW1lbnQuYm9keS5pbm5lckhUTUwgPSAnUEFTUyc7CiAgIH0KLSAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgIHJ1blRlc3QoKTsK
IH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zZWFyY2gt
cHJlc3MtZXNjYXBlLWtleS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtc2VhcmNoLXByZXNzLWVzY2FwZS1rZXkuaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zZWFyY2gtcHJlc3MtZXNjYXBlLWtleS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw3IEBAIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIGlmIHRoZSB2YWx1ZSBpbiAKICAgICAgICAgICAgICJUbyBydW4gKGEgcGFydCBvZikgdGhp
cyB0ZXN0IG1hbnVhbGx5LCB0eXBlIHNvbWUgdGV4dCBpbiB0aGUgc2VhcmNoIGZvcm0gYW5kIHRo
ZW4gcHJlc3MgdGhlIEVzY2FwZSBrZXkuICIgKwogICAgICAgICAgICAgIklmIHRoZSB0ZXh0IGlz
IGNsZWFyZWQsIHRoZW4gdGhlIHRlc3QgcGFzc2VzLiIpOwogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgIHZhciBpbnB1dCA9ICQoInNlYXJjaCIp
OwogICAgIHZhciBlbmFibGVkID0gZmFsc2U7CiAgICAgdmFyIGRpc2FibGVkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc2VsZWN0LW9uLWNsaWNrLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zZWxlY3Qtb24tY2xpY2su
aHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1z
ZWxlY3Qtb24tY2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFk
PgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgdmFyIHRmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RmJyk7CiAgICAgdmFy
IHggPSB0Zi5vZmZzZXRMZWZ0ICsgdGYub2Zmc2V0V2lkdGggLyAyOwogICAgIHZhciB5ID0gdGYu
b2Zmc2V0VG9wICsgdGYub2Zmc2V0SGVpZ2h0IC8gMjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtc2VsZWN0LXdlYmtpdC11c2VyLXNlbGVjdC1ub25lLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zZWxlY3Qtd2Via2l0LXVzZXItc2Vs
ZWN0LW5vbmUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1zZWxlY3Qtd2Via2l0LXVzZXItc2VsZWN0LW5vbmUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdmFyIHRmID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3RmJyk7CiAgICAgdGYuc2VsZWN0KCk7CiAgICAgaWYgKHRmLnNlbGVjdGlvblN0
YXJ0ID09IDAgJiYgdGYuc2VsZWN0aW9uRW5kID09IDApIHsgLy8gOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1zZWxlY3Rpb24taGlkZGVuLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zZWxlY3Rpb24taGlkZGVuLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc2VsZWN0aW9uLWhp
ZGRlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQCBmdW5jdGlvbiBsb2cobXNn
KSB7CiB9CiAgICAgCiBmdW5jdGlvbiB0ZXN0ICgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgIHZhciB0ZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZicpOwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXNldHZhbHVlLXNlbGVjdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc2V0dmFsdWUtc2Vs
ZWN0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtc2V0dmFsdWUtc2VsZWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4
IEBAIEphdmFTY3JpcHQgRm9ybSBWYWxpZGF0aW9uIGlzc3VlIG9uIEJhbmMKIDwvZm9ybT4KIAog
PHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdOwogICBpbnB1dC52YWx1ZSA9ICIxIjsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1lbnRlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdGV4dC1lbnRlci5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXRleHQtZW50ZXIuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxwPjxpbnB1dCBpZD0iaW5wdXQiIHZhbHVl
PSIxMjM0NTY3OCI+PC9pbnB1dD48L3A+CiA8cD5Db250ZW50IG9mIGlucHV0IGFmdGVyIHByZXNz
aW5nIHJldHVybiBpcyAiPHNwYW4gaWQ9InJlc3VsdCI+PC9zcGFuPiIuIEl0IHNob3VsZCBiZSAi
MTIzNDU2NzgiLjwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIHZhciBpbnB1dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOwogaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMiwg
Nik7CiB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiS2V5Ym9hcmRFdmVudHMiKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdHlwZS1jaGFuZ2UtaW4tb25mb2N1
cy1rZXlib2FyZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5w
dXQtdHlwZS1jaGFuZ2UtaW4tb25mb2N1cy1rZXlib2FyZC5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXR5cGUtY2hhbmdlLWluLW9uZm9jdXMt
a2V5Ym9hcmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAg
IDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYWxl
cnQoJ1RoaXMgdGVzdCBkb2VzIG5vdCB3b3JrIGluIFNhZmFyaS4nKTsKICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdHlwZS1jaGFuZ2UtaW4t
b25mb2N1cy1tb3VzZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtdHlwZS1jaGFuZ2UtaW4tb25mb2N1cy1tb3VzZS5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXR5cGUtY2hhbmdlLWluLW9uZm9jdXMt
bW91c2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAgIDxz
Y3JpcHQ+CiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYWxlcnQo
J1RoaXMgdGVzdCBkb2VzIG5vdCB3b3JrIGluIFNhZmFyaS4nKTsKICAgICAgICAgICAgIHJldHVy
bjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtemVyby1oZWlnaHQtZm9jdXMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXplcm8taGVp
Z2h0LWZvY3VzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtemVyby1oZWlnaHQtZm9jdXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3
LDcgQEAKIDwvcD4KIDx0ZXh0YXJlYSBpZD0idGFyZ2V0IiBzdHlsZT0iaGVpZ2h0OiAwIj48L3Rl
eHRhcmVhPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuZm9jdXMoKTsKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLWF0dGFjaC1hc3Nl
cnRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ludGVyYWN0
aXZlLXZhbGlkYXRpb24tYXR0YWNoLWFzc2VydGlvbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ludGVyYWN0aXZlLXZhbGlkYXRpb24tYXR0YWNoLWFz
c2VydGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSwxMyArMTUsMTMgQEAKIDxzY3JpcHQ+
CiBmdW5jdGlvbiBjaGVjaygpIHsKICAgICB0ZXN0UGFzc2VkKCdOb3QgY3Jhc2hlZC4nKTsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICBzZXRUaW1lb3V0KGNoZWNrLCAxMCk7CiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMV0uY2xpY2soKTsKIH0gZWxzZSB7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ludGVyYWN0aXZlLXZhbGlkYXRpb24tY2FuY2VsLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0
aW9uLWNhbmNlbC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ludGVyYWN0aXZlLXZhbGlkYXRpb24tY2FuY2VsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEyICszMCwxMiBAQCBmdW5jdGlvbiBzdGFydE9yVmVyaWZ5KCkgewogICAgICAgICB0ZXN0
UGFzc2VkKCdUaGUgZm9ybSB3YXMgbm90IHN1Ym1pdHRlZC4nKTsKICAgICB9CiAgICAgZGVidWco
J1RFU1QgQ09NUExFVEUnKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiB3aW5kb3cub25sb2FkID0gc3RhcnRPclZlcmlmeTsKIDwvc2NyaXB0
PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxp
ZGF0aW9uLWZvcm1ub3ZhbGlkYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLWZvcm1ub3ZhbGlkYXRlLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW50ZXJhY3RpdmUtdmFsaWRh
dGlvbi1mb3Jtbm92YWxpZGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBA
IGZ1bmN0aW9uIHN0YXJ0T3JWZXJpZnkoKSB7CiAgICAgICAgIHRlc3RQYXNzZWQoJ1RoZSBmb3Jt
IHNob3VsZCBub3QgYmUgc3VibWl0dGVkLicpOwogICAgICAgICBzaG91bGRCZVRydWUoJ2xvY2F0
aW9uLnNlYXJjaC5pbmRleE9mKCJpMD0iKSAhPSAtMScpOwogICAgICAgICBkZWJ1ZygnVEVTVCBD
T01QTEVURScpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdCgpIHNraXBz
IHZhbGlkYXRpb24uIFVzZSB0aGUgc3VibWl0IGJ1dHRvbi4KICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3MnKS5jbGljaygpOwpAQCAtMjksOCArMjksOCBAQCBmdW5jdGlvbiBzdGFy
dE9yVmVyaWZ5KCkgewogICAgIH0KIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB3aW5kb3cub25s
b2FkID0gc3RhcnRPclZlcmlmeTsKIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLW5vdmFsaWRhdGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ludGVyYWN0aXZlLXZhbGlkYXRpb24t
bm92YWxpZGF0ZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2ludGVyYWN0aXZlLXZhbGlkYXRpb24tbm92YWxpZGF0ZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yMCw4ICsyMCw4IEBAIGZ1bmN0aW9uIHN0YXJ0T3JWZXJpZnkoKSB7CiAgICAgICAgIHRl
c3RQYXNzZWQoJ1RoZSBmb3JtIHNob3VsZCBub3QgYmUgc3VibWl0dGVkLicpOwogICAgICAgICBz
aG91bGRCZVRydWUoJ2xvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJpMD0iKSAhPSAtMScpOwogICAg
ICAgICBkZWJ1ZygnVEVTVCBDT01QTEVURScpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBIVE1MRm9ybUVsZW1l
bnQ6OnN1Ym1pdCgpIHNraXBzIHZhbGlkYXRpb24uIFVzZSB0aGUgc3VibWl0IGJ1dHRvbi4KICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5jbGljaygpOwpAQCAtMjksOCArMjks
OCBAQCBmdW5jdGlvbiBzdGFydE9yVmVyaWZ5KCkgewogICAgIH0KIH0KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiB3aW5kb3cub25sb2FkID0gc3RhcnRPclZlcmlmeTsKIDwvc2NyaXB0PgogPC9ib2R5
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLXBy
ZXZlbnRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW50ZXJh
Y3RpdmUtdmFsaWRhdGlvbi1wcmV2ZW50ZWQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLXByZXZlbnRlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTIgQEAgZnVuY3Rpb24gc3RhcnRPclZlcmlm
eSgpIHsKICAgICAgICAgZGVidWcoJ1RFU1QgQ09NUExFVEUnKTsKICAgICB9CiAKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB3aW5kb3cub25s
b2FkID0gc3RhcnRPclZlcmlmeTsKIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLXJlbW92ZS1ub2RlLWluLWhhbmRs
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ludGVyYWN0aXZl
LXZhbGlkYXRpb24tcmVtb3ZlLW5vZGUtaW4taGFuZGxlci5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ludGVyYWN0aXZlLXZhbGlkYXRpb24tcmVtb3Zl
LW5vZGUtaW4taGFuZGxlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBAIGZ1
bmN0aW9uIHN0YXJ0T3JWZXJpZnkoKSB7CiAgICAgaWYgKHF1ZXJ5LmluZGV4T2YoJ3N1Ym1pdHRl
ZD10cnVlJykgIT0gLTEpIHsKICAgICAgICAgdGVzdFBhc3NlZCgnVGhlIGZvcm0gd2FzIHN1Ym1p
dHRlZC4nKTsKICAgICAgICAgZGVidWcoJ1RFU1QgQ09NUExFVEUnKTsKLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
SFRNTEZvcm1FbGVtZW50OjpzdWJtaXQoKSBza2lwcyB2YWxpZGF0aW9uLiBVc2UgdGhlIHN1Ym1p
dCBidXR0b24uCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuY2xpY2soKTsK
QEAgLTM2LDggKzM2LDggQEAgZnVuY3Rpb24gc3RhcnRPclZlcmlmeSgpIHsKICAgICB9CiB9CiAK
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogd2luZG93Lm9ubG9hZCA9IHN0YXJ0T3JWZXJpZnk7CiA8L3Nj
cmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW50ZXJhY3RpdmUt
dmFsaWRhdGlvbi1yZXF1aXJlZC1jaGVja2JveC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvaW50ZXJhY3RpdmUtdmFsaWRhdGlvbi1yZXF1aXJlZC1jaGVja2JveC5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ludGVyYWN0
aXZlLXZhbGlkYXRpb24tcmVxdWlyZWQtY2hlY2tib3guaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjAsOCArMjAsOCBAQCBmdW5jdGlvbiBzdGFydE9yVmVyaWZ5KCkgewogICAgICAgICB0ZXN0UGFz
c2VkKCdUaGUgZm9ybSBzaG91bGQgYmUgc3VibWl0dGVkLicpOwogICAgICAgICBzaG91bGRCZVRy
dWUoJ2xvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0ZXJtcz1vbiIpICE9IC0xJyk7CiAgICAgICAg
IGRlYnVnKCdURVNUIENPTVBMRVRFJyk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpMCcpLmNoZWNrZWQgPSB0cnVlOwogICAgICAgICAvLyBIVE1MRm9ybUVsZW1lbnQ6OnN1
Ym1pdCgpIHNraXBzIHZhbGlkYXRpb24uIFVzZSB0aGUgc3VibWl0IGJ1dHRvbi4KQEAgLTMwLDgg
KzMwLDggQEAgZnVuY3Rpb24gc3RhcnRPclZlcmlmeSgpIHsKICAgICB9CiB9CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogd2luZG93Lm9ubG9hZCA9IHN0YXJ0T3JWZXJpZnk7CiA8L3NjcmlwdD4KIDwv
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGFyZ2UtcGFydHMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xhcmdlLXBhcnRzLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGFyZ2UtcGFydHMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKICAgPHRpdGxlPlRlc3QgZm9yIEJ1ZyA0MTcz
Ny4gUEFTUyB1bmxlc3MgY3Jhc2guPC90aXRsZT4KIDwvaGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIDwvc2NyaXB0PgogPGJvZHk+CiA8cD5UZXN0IGZvciBCdWcgNDE3MzcuIFBBU1MgdW5s
ZXNzIGNyYXNoLjwvcD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGVnZW5kLWFjY2Vz
cy1rZXkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xlZ2VuZC1h
Y2Nlc3Mta2V5Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvbGVnZW5kLWFjY2Vzcy1rZXkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiB9CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQu
c2VhcmNoKC9cYk1hYyBPUyBYXGIvKSAhPSAtMSkKICAgICAgICAgICAgIG1vZGlmaWVycyA9IFsi
Y3RybEtleSIsICJhbHRLZXkiXTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGVnZW5k
LWRpc3BsYXktbm9uZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
bGVnZW5kLWRpc3BsYXktbm9uZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2xlZ2VuZC1kaXNwbGF5LW5vbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Nyw4ICs3LDggQEAKICAgICA8bGVnZW5kIGlkPSJ0YXJnZXQiIHN0eWxlPSJkaXNwbGF5OiBub25l
OyI+TGVnZW5kYXJ5PC9sZWdlbmQ+CiA8L2ZpZWxkc2V0PgogPHNjcmlwdD4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgIGRp
c3BsYXkgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQi
KSkuZGlzcGxheTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJveC1jbGVhci1y
ZXN0b3JlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94
LWNsZWFyLXJlc3RvcmUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9saXN0Ym94LWNsZWFyLXJlc3RvcmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjgs
OCArMjgsOCBAQCBmdW5jdGlvbiBjbGVhckxpc3QoKQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIHBvcHVsYXRlTGlzdCgpOwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteUxpc3QiKS5zZWxlY3RlZEluZGV4ID0gMTk7
CkBAIC0zOCw4ICszOCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0V2lkdGg7IC8vIEZvcmNlIGEgbGF5b3V0LgogICAgIHBvcHVsYXRlTGlzdCgpOwogCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJveC1jbGlwLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LWNsaXAuaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LWNsaXAuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTEsOCArMTEsOCBAQAogICAgIDxvcHRpb24+YWFhYWFhPC9vcHRpb24+CiAgICAgPC9z
ZWxlY3Q+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5
KCk7CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2xpc3Rib3gtb25jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2xpc3Rib3gtb25jaGFuZ2UuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LW9uY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE4LDkgKzE4LDkgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzZXR1
cCgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBjaGVja1NlbGVjdGlvbigiMCIpOwpAQCAtMTE2LDggKzEx
Niw4IEBACiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNsMSIpLmJs
dXIoKTsKICAgICAgICAgICAgICAgICBjaGVja1NlbGVjdGlvbigiNCIpOwogCi0gICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZ1bmN0
aW9uIG1vdXNlRG93bk9uU2VsZWN0KHNlbElkLCBpbmRleCwgc2hpZnQsIG1ldGFPckN0cmwpCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2Nyb2xsLWFmdGVyLW9wdGlvbnMt
cmVtb3ZlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJv
eC1zY3JvbGwtYWZ0ZXItb3B0aW9ucy1yZW1vdmVkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJveC1zY3JvbGwtYWZ0ZXItb3B0aW9ucy1yZW1v
dmVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiAgICAgICAgIDxzY3JpcHQ+
CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBzZXRUaW1lb3V0KHRlc3QyLCAwKTsKQEAgLTI3LDggKzI3LDggQEAKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBsb2coIlRlc3QgRmFpbGVkLiAgc2Nyb2xsVG9wID0gIiAr
IHNjcm9sbFRvcCArICIgZXZlbiB0aG91Z2ggdGhlcmUgaXMgb25seSBvbmUgb3B0aW9uIGluIHRo
ZSBsaXN0Ym94Iik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBmdW5jdGlvbiBsb2cobXNnKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0
Ym94LXNlbGVjdC1hbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2xpc3Rib3gtc2VsZWN0LWFsbC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2VsZWN0LWFsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
OSw4ICsxOSw4IEBACiAKICAgICAgICAgICAgICAgICBzbC5tdWx0aXBsZSA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmdW5jdGlvbiBsb2cobXNnKSB7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2xpc3Rib3gtdHlwZWFoZWFkLWN5cmlsbGljLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXR5cGVhaGVhZC1jeXJpbGxpYy5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2xpc3Rib3gtdHlw
ZWFoZWFkLWN5cmlsbGljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDggQEAgZnVu
Y3Rpb24gbG9nKHN0cikgewogICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOwogfQogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAvLyBTZXQgdGhlIGlucHV0IGZvY3VzIHRvIHRoZSA8
c2VsZWN0PiBlbGVtZW50LgogdmFyIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dCIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXR5cGVhaGVhZC1lbXB0
eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJveC10eXBl
YWhlYWQtZW1wdHkuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9saXN0Ym94LXR5cGVhaGVhZC1lbXB0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDgg
KzUsOCBAQAogPC9zZWxlY3Q+CiA8ZGl2IGlkPSJyZXN1bHQiPkNhbm5vdCBydW4gaW50ZXJhY3Rp
dmVseS48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaXN0Iik7CiAgICAg
ICAgIGxpc3QuZm9jdXMoKTsKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigieiIpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXR5cGVhaGVhZC1ncmVlay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJveC10eXBlYWhlYWQtZ3Jl
ZWsuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0
Ym94LXR5cGVhaGVhZC1ncmVlay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4IEBA
IGZ1bmN0aW9uIGxvZyhzdHIpIHsKICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKIH0KIAot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHdpbmRv
dy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogLy8gU2V0IHRoZSBpbnB1dCBmb2N1cyB0byB0
aGUgPHNlbGVjdD4gZWxlbWVudC4KIHZhciBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3QiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJveC10eXBlYWhlYWQt
c2Nyb2xsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94
LXR5cGVhaGVhZC1zY3JvbGwuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9saXN0Ym94LXR5cGVhaGVhZC1zY3JvbGwuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTEsOCArMTEsOCBAQAogPC9zZWxlY3Q+CiA8ZGl2IGlkPSJyZXN1bHQiPkNhbm5vdCBydW4g
aW50ZXJhY3RpdmVseS48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaXN0
Iik7CiAgICAgICAgIGxpc3QuZm9jdXMoKTsKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
YSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9saXN0Ym94LXdpZHRoLWNoYW5nZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbGlzdGJveC13aWR0aC1j
aGFuZ2UuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9s
aXN0Ym94LXdpZHRoLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE0ICsyLDE0IEBA
CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0
KCkgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoInRlc3QyKCkiLCAxMDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rpb24g
dGVzdDIoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NsJyku
b3B0aW9uc1swXSA9IG5ldyBPcHRpb24gKCAiVGhpcyB0ZXh0IHNob3VsZCBmaXQgaW4gdGhlIGxp
c3QgYm94IiwgIjEiICk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
bWVudWxpc3QtZGlzYWJsZWQtc2VsZWN0ZWQtb3B0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9tZW51bGlzdC1kaXNhYmxlZC1zZWxlY3RlZC1vcHRpb24uaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tZW51bGlzdC1k
aXNhYmxlZC1zZWxlY3RlZC1vcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksOCArMTks
OCBAQCBwYXJlbnQuaW5uZXJIVE1MID0gJzxmb3JtIGFjdGlvbj0iIj4nCiAgICAgKyAnPC9zZWxl
Y3Q+JwogICAgICsgJzwvZm9ybT4nOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIHZhciBxdWVyeSA9
IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7CiBpZiAocXVlcnkuaW5kZXhPZignc3VibWl0dGVkPXRy
dWUnKSA9PSAtMSkgewogICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnc2VsZWN0JylbMF07CkBAIC0yOSw4ICsyOSw4IEBAIGlmIChxdWVyeS5pbmRleE9mKCdz
dWJtaXR0ZWQ9dHJ1ZScpID09IC0KIH0gZWxzZSB7CiAgICAgc2hvdWxkQmUoJ3F1ZXJ5LmluZGV4
T2YoInNlbGVjdD1EaXNhYmxlZCIpJywgJy0xJyk7CiAgICAgc2hvdWxkQmUoJ3F1ZXJ5LmluZGV4
T2YoInNlbGVjdD1FbmFibGVkIiknLCAnLTEnKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKIH0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21l
bnVsaXN0LW5vLXJlbmRlcmVyLW9ubW91c2Vkb3duLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9tZW51bGlzdC1uby1yZW5kZXJlci1vbm1vdXNlZG93bi5odG1sCShy
ZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21lbnVsaXN0LW5vLXJl
bmRlcmVyLW9ubW91c2Vkb3duLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAg
ICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICB2YXIgc2wgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2wnKTsKICAgICAgICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2N1
bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpOwogICAgICAgICAgICAgICAgIGV2ZW50Lmlu
aXRNb3VzZUV2ZW50KCJtb3VzZWRvd24iLCB0cnVlLCB0cnVlLCB3aW5kb3csIDEsIHNsLm9mZnNl
dExlZnQsIHNsLm9mZnNldFRvcCwgc2wub2Zmc2V0TGVmdCwgc2wub2Zmc2V0VG9wLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgZG9jdW1lbnQpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9tZW51bGlzdC1zZWxlY3Rpb24tcmVzZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL21lbnVsaXN0LXNlbGVjdGlvbi1yZXNldC5odG1sCShyZXZpc2lv
biAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21lbnVsaXN0LXNlbGVjdGlvbi1y
ZXNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogPHAgaWQ9InJlc3VsdCI+
CiA8L3A+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgc2Vs
ZWN0LnNlbGVjdGVkSW5kZXggPSAxOwogICAgIHJlc3VsdC5pbm5lclRleHQgPSBzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCA9PSAxID8gIlBBU1MiIDogIkZBSUwiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9tZW51bGlzdC1zdWJtaXQtd2l0aG91dC1zZWxlY3Rpb24uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21lbnVsaXN0LXN1Ym1pdC13aXRob3V0LXNlbGVj
dGlvbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21l
bnVsaXN0LXN1Ym1pdC13aXRob3V0LXNlbGVjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
OCw4ICsxOCw4IEBAIHBhcmVudC5pbm5lckhUTUwgPSAnPGZvcm0gYWN0aW9uPSIiPicKICAgICAr
ICc8L3NlbGVjdD4nCiAgICAgKyAnPC9mb3JtPic7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogdmFy
IHF1ZXJ5ID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaDsKIGlmIChxdWVyeS5pbmRleE9mKCdzdWJt
aXR0ZWQ9dHJ1ZScpID09IC0xKSB7CiAgICAgdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdzZWxlY3QnKVswXTsKQEAgLTI3LDggKzI3LDggQEAgaWYgKHF1ZXJ5Lmlu
ZGV4T2YoJ3N1Ym1pdHRlZD10cnVlJykgPT0gLQogICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1p
dCgpOwogfSBlbHNlIHsKICAgICBzaG91bGRCZSgncXVlcnkuaW5kZXhPZigic2VsZWN0PURpc2Fi
bGVkIiknLCAnLTEnKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21lbnVsaXN0LXdpZHRoLWNo
YW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWVudWxpc3Qt
d2lkdGgtY2hhbmdlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvbWVudWxpc3Qtd2lkdGgtY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCAr
Miw4IEBACiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICBmdW5jdGlv
biB0ZXN0KCkgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCdhZGRMb25nT3B0aW9uKCk7JywgMTAwKTsK
ICAgICAgICAgICAgIH0KQEAgLTE0LDggKzE0LDggQEAKICAgICAgICAgICAgICAgICB2YXIgc2wg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidCIpOwogICAgICAgICAgICAgICAgIHNsLmFwcGVu
ZENoaWxkKG5ld09wdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hl
YWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21pc3BsYWNlZC1pbWctZm9ybS1yZWdp
c3RyYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21pc3Bs
YWNlZC1pbWctZm9ybS1yZWdpc3RyYXRpb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9taXNwbGFjZWQtaW1nLWZvcm0tcmVnaXN0cmF0aW9uLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiDvu788cD5UZXN0IGZvciA8YSBocmVmPSJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ0ODgiPmJ1ZyAzNDQ4ODwv
YT46IENyYXNoIGluIG1hbmdsZW1lIGluIFdlYkNvcmU6OkVsZW1lbnQ6OmdldEF0dHJpYnV0ZS48
L3A+CiA8cD5QYXNzIGlmIG5vIGNyYXNoIG9yIGFzc2VydGlvbiBmYWlsdXJlLjwvcD4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPEZPUk0+PFNFTEVDVD48SU1HPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9taXNzaW5nLWFjdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWlzc2luZy1hY3Rpb24uaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9taXNzaW5nLWFjdGlvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMSw5ICsxMSw5IEBACiA8L2Zvcm0+CiAKIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBpZiAoZG9jdW1lbnQuVVJMLmluZGV4
T2YoJz8nKSA9PSAtMSkgewpAQCAtMjcsOCArMjcsOCBAQCBpZiAoZG9jdW1lbnQuVVJMLmluZGV4
T2YoJz8nKSA9PSAtMSkgewogICAgIGVsc2UKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPkZh
aWx1cmU8L3A+Iik7CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tdWx0aXBsZS1mb3JtLXN1Ym1p
c3Npb24tcHJvdGVjdGlvbi1tb3VzZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvbXVsdGlwbGUtZm9ybS1zdWJtaXNzaW9uLXByb3RlY3Rpb24tbW91c2UuaHRtbAko
cmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tdWx0aXBsZS1mb3Jt
LXN1Ym1pc3Npb24tcHJvdGVjdGlvbi1tb3VzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDEw
ICsyLDEwIEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dz
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGFkZEV2ZW50TGlzdGVu
ZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihlKSB7CkBAIC00Myw3ICs0Myw3IEBAIGZ1bmN0aW9uIHN1
Ym1pdFRvKHRhcmdldCkKIDxsaT5DbGljayBvbiAiQ2xpY2sgMiIgdG8gc3VibWl0IGZvcm0gdG8g
dGhpcyB3aW5kb3cuIFNpbmdsZSB3b3JkICJTVUNDRVNTIiBzaG91bGQgcmVwbGFjZSB0aGUgY29u
dGVudHMgb2YgdGhpcyBkb2N1bWVudC4KIDwvb2w+CiA8cD5JZiBlaXRoZXIgZXZlbnQgZG9lc24n
dCBvY2N1ciwgdGhlIHRlc3QgaGFzIGZhaWxlZC4KLTxmb3JtIG1ldGhvZD0icG9zdCIgbmFtZT0i
dGVzdCIgYWN0aW9uPSJkYXRhOnRleHQvaHRtbCw8c2NyaXB0PmlmIChvcGVuZXIpIHsgb3BlbmVy
LnBvc3RNZXNzYWdlKCd0cm9sb2xvJywgJyonKTsgd2luZG93LmNsb3NlKCk7IH0gZWxzZSB7IGRv
Y3VtZW50LndyaXRlKCdTVUNDRVNTJyk7IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH08L3NjcmlwdD4iPgorPGZvcm0gbWV0
aG9kPSJwb3N0IiBuYW1lPSJ0ZXN0IiBhY3Rpb249ImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+aWYg
KG9wZW5lcikgeyBvcGVuZXIucG9zdE1lc3NhZ2UoJ3Ryb2xvbG8nLCAnKicpOyB3aW5kb3cuY2xv
c2UoKTsgfSBlbHNlIHsgZG9jdW1lbnQud3JpdGUoJ1NVQ0NFU1MnKTsgd2luZG93LnRlc3RSdW5u
ZXIgJiYgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH08L3NjcmlwdD4iPgogPGlucHV0IHR5cGU9
ImJ1dHRvbiIgaWQ9ImJ1dHRvbjEiIHZhbHVlPSJDbGljayAxIiBvbmNsaWNrPSJzdWJtaXRUbygn
X25ldycpIj4KIDxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24yIiB2YWx1ZT0iQ2xpY2sg
MiIgb25jbGljaz0ic3VibWl0VG8oJ19zZWxmJykiPgogPC9mb3JtPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9tdWx0aXBsZS1zZWxlY3RlZC1vcHRpb25zLWlubmVySFRNTC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbXVsdGlwbGUtc2VsZWN0ZWQtb3B0
aW9ucy1pbm5lckhUTUwuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9tdWx0aXBsZS1zZWxlY3RlZC1vcHRpb25zLWlubmVySFRNTC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC04LDggKzgsOCBAQCBTZWxlY3RpbmcgYSBiYW5rIGluIEFtZXJpY2FuIEV4cHJl
c3MgUGF5CiA8L3NlbGVjdD4KIDxkaXYgaWQ9cGF5bWVudG9wdGlvbnM+PC9kaXY+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXltZW50b3B0aW9u
cyIpLmlubmVySFRNTCA9IAogICAgICc8c2VsZWN0PicgKwpAQCAtMTcsNyArMTcsNyBAQCBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicGF5bWVudG9wdGlvbnMiCiAgICAgJzxvcHRpb24gc2VsZWN0
ZWQ+UEFTUzwvb3B0aW9uPicgKwogICAgICc8L3NlbGVjdD4nCiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIp
WzBdLnZhbHVlID09ICJQQVNTIiAmJiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2Vs
ZWN0IilbMV0udmFsdWUgPT0gIlBBU1MiKQoraWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKVswXS52YWx1ZSA9PSAiUEFTUyIgJiYg
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIpWzFdLnZhbHVlID09ICJQQVNT
IikKICAgICBkb2N1bWVudC53cml0ZSgiUEFTUyIpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL211dGF0aW9uLWV2ZW50LXJlY2FsYy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbXV0YXRpb24tZXZlbnQtcmVjYWxjLmh0
bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbXV0YXRpb24t
ZXZlbnQtcmVjYWxjLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8L2Zvcm0+
CiA8ZGl2IGlkPXJlcz48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHNlbGVj
dCA9IGRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWzBdOwogdmFyIHJlcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXMiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbm8tYXV0
b2ZvY3VzLWluLXNhbmRib3guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL25vLWF1dG9mb2N1cy1pbi1zYW5kYm94Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbm8tYXV0b2ZvY3VzLWluLXNhbmRib3guaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0
PgogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGUgYWN0aXZlRWxlbWVudCBpcyB0aGUgYm9keSByYXRo
ZXIgdGhhbiB0aGUgaW5wdXQgZWxlbWVudAogKHdoaWNoIGl0IHdvdWxkIGJlIGlmIHRoZSBzYW5k
Ym94IGRpZG4ndCBzdWNjZWVkIGluIGJsb2NraW5nIGF1dG9mb2N1cykuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL251bWVyaWMtaW5wdXQtbmFtZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtZXJpYy1pbnB1dC1uYW1lLmh0bWwJKHJldmlzaW9uIDEy
MDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtZXJpYy1pbnB1dC1uYW1lLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIHNob3dNZSgpCiAgICAgICAgICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL29uY2hhbmdlLWNoYW5nZS10eXBlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9vbmNoYW5nZS1jaGFuZ2UtdHlwZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uY2hhbmdlLWNoYW5nZS10eXBlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTE2LDggKzE2LDggQEAKICAgICAgICAgICBkaWRGaXJlT25DaGFuZ2UgPSB0
cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogICAgICAgICB9CiAKICAgICAgICAgdGYuZm9jdXMoKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvb25jaGFuZ2UtZW50ZXItc3VibWl0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1lbnRlci1zdWJtaXQuaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1lbnRlci1z
dWJtaXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSwxMiArOSwxMiBAQAogICAgIGZ1bmN0aW9u
IHRlc3QoKSB7CiAgICAgICAgIHZhciB0ZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Zicp
OwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgdGYuZm9jdXMoKTsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsKICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmtleURvd24oJ1xyJyk7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvb25jaGFuZ2Utc2V0dmFsdWVmb3J1c2VyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZvcnVzZXIuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbmNoYW5nZS1zZXR2YWx1ZWZv
cnVzZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTMgKzEwLDEzIEBACiAgICAgICAgICAg
ZGlkRmlyZU9uQ2hhbmdlID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIHRmLmZv
Y3VzKCk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFZhbHVlRm9yVXNlcih0ZiwgJ0hlbGxvIScp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0VmFsdWVGb3JVc2VyKHRmLCAnSGVsbG8hJyk7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBTaG91bGQgbm90IGZpcmUgdGhlIGV2ZW50IHVudGlsIGZvY3VzIGlzIGxvc3QuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29uc2VsZWN0LXNlbGVjdGFsbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25zZWxlY3Qtc2VsZWN0YWxsLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25zZWxlY3Qtc2VsZWN0YWxs
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4v
ZWRpdGluZy9lZGl0aW5nLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkg
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB9CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RmJykuZm9jdXMoKTsKICAgICBzZWxlY3RBbGxDb21tYW5kKCk7ICAg
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbnNlbGVjdC10ZXh0YXJlYS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvb25zZWxlY3QtdGV4dGFyZWEuaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbnNlbGVjdC10
ZXh0YXJlYS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQCB0ZXh0YXJlYSB7IC13
ZWJraXQtYXBwZWFyYW5jZTogdGV4dGFyZWE7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHRl
c3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
ICAgICB2YXIgdGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGEnKTsKIAogICAgICAgICBs
b2coJ0NhbGxpbmcgZm9jdXMgb24gdGV4dGFyZWEnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvb25zZWxlY3QtdGV4dGZpZWxkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9vbnNlbGVjdC10ZXh0ZmllbGQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vbnNlbGVjdC10ZXh0ZmllbGQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNiw4ICs2LDggQEAKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gdGVzdCgpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIHZh
ciB0ZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZicpOwogICAgICAgCiAgICAgICAgIGxv
ZygnQ2FsbGluZyBmb2N1cyBvbiB0ZXh0IGZpZWxkJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL29wdGlvbi1jaGFuZ2Utc2luZ2xlLXNlbGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vcHRpb24tY2hhbmdlLXNpbmdsZS1zZWxlY3RlZC5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29wdGlvbi1jaGFu
Z2Utc2luZ2xlLXNlbGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDggKzE1LDggQEAK
IDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQu
Zm9ybXNbMF0uZWxlbWVudHNbMF0ub3B0aW9uc1sxXS5zZWxlY3RlZCA9IHRydWU7CiBkb2N1bWVu
dC5mb3Jtc1swXS5lbGVtZW50c1sxXS5vcHRpb25zWzFdLnNlbGVjdGVkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvb3B0aW9uLWNvbnN0cnVjdG9yLXNlbGVjdGVkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vcHRpb24tY29uc3RydWN0b3It
c2VsZWN0ZWQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9vcHRpb24tY29uc3RydWN0b3Itc2VsZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4
ICsxLDggQEAKIDxodG1sPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIgcG9w
dXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9wdXAnKTsKICAgICAgICAgdmFyIHN1Y2Nl
c3M7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29wdGlvbi1pbi1vcHRncm91cC1yZW1v
dmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vcHRpb24taW4t
b3B0Z3JvdXAtcmVtb3ZhbC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL29wdGlvbi1pbi1vcHRncm91cC1yZW1vdmFsLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gdGVzdCgpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIHZh
ciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlMxIik7CiAgICAgICAgIGxpc3QucmVt
b3ZlKDMpOwogICAgICAgICBsb2cobGlzdC5sZW5ndGggPT0gMyA/ICJQYXNzZWQiIDogIkZhaWxl
ZCIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9vcHRpb24tbW91c2VldmVudHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29wdGlvbi1tb3VzZWV2ZW50
cy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL29wdGlv
bi1tb3VzZWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBAIGZ1bmN0
aW9uIG1vdXNlZXZlbnR2ZXJpZnkyKGV2ZW50LCB4LCB5LCAKICAgICBzaG91bGRCZSgiZXZlbnQu
eSIsIGV2ZW50LnksIHkpOwogfQogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogCiAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewpAQCAtODMsOCArODMsOCBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiAgICAgfQogCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcGFzc3dvcmQtZG91YmxlY2xpY2stc2VsZWN0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXNzd29yZC1kb3VibGVjbGljay1zZWxl
Y3Rpb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9w
YXNzd29yZC1kb3VibGVjbGljay1zZWxlY3Rpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4
ICs1LDggQEAKICAgICAgICAgdmFyIHBhc3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGYn
KTsKICAgICAgICAgdmFyIHJlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMnKTsKIAot
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg0NSwgMjUpOwogICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CiAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Bhc3N3b3JkLXBsYWNlaG9sZGVyLXRleHQtc2Vj
dXJpdHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Bhc3N3b3Jk
LXBsYWNlaG9sZGVyLXRleHQtc2VjdXJpdHkuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXNzd29yZC1wbGFjZWhvbGRlci10ZXh0LXNlY3VyaXR5Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgICAgICAgIDxzY3JpcHQ+CiAgICAg
ICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gMSkgbGVh
dmUgZmllbGQgMSBhbG9uZS4gSXQgc2hvdWxkIHNob3cgdGhlIHBsYWNlaG9sZGVyIHRleHQuCiAg
ICAgICAgICAgICAgICAgLy8gMikgZm9jdXMgZmllbGQgMiBhbmQgdHlwZS4gIEl0IHNob3VsZCBz
aG93IGJ1bGxldHMgZm9yIHRoZSBwYXNzd29yZC4KQEAgLTE4LDggKzE4LDggQEAKICAgICAgICAg
ICAgICAgICAgICAgcGFzc3dvcmQudmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgcGFz
c3dvcmQuYmx1cigpOwogCi0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cGFzdGUtaW50by10ZXh0YXJlYS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcGFzdGUtaW50by10ZXh0YXJlYS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3Bhc3RlLWludG8tdGV4dGFyZWEuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw4ICsxLDggQEAKIDxwPlRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIHRleHQgcGFz
dGVkIGludG8gYSB0ZXh0YXJlYSB3b3VsZCBhcHBlYXIgb25lIGNoYXJhY3RlciBiZWZvcmUgdGhl
IHBvc2l0aW9uIHdoZXJlIGl0IHdhcyBwYXN0ZWQuPC9wPgogPHRleHRhcmVhIHJvd3M9NSBpZD0i
dGVzdCI+eHg8L3RleHRhcmVhPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogdmFyIGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwogZS5zZXRTZWxlY3Rpb25SYW5nZSgxLCAxKTsK
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICIoVGhlcmUgc2hvdWxk
IGJlIG9uZSAneCcgYmVmb3JlIGFuZCBhZnRlciB0aGlzIHNlbnRlbmNlLikiKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvcGFzdGUtbXVsdGlsaW5lLXRleHQtaW5wdXQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Bhc3RlLW11bHRpbGluZS10ZXh0LWlu
cHV0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGFz
dGUtbXVsdGlsaW5lLXRleHQtaW5wdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDgg
QEAKIDxodG1sPiAKICAgPGhlYWQ+IAogICAgIDxzY3JpcHQ+IAotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIGZ1bmN0
aW9uIGdldElucHV0KCkKICAgICAgICAgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9w
YXR0ZXJuLWF0dHJpYnV0ZS0wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BhdHRlcm4tYXR0cmlidXRlLTAwMS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC03LDggKzcsOCBAQAogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0g
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgIHYg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgidmljdGltIik7CiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDIuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0w
MDIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgICB9CiAKICAgICBmdW5j
dGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKIAogICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOwog
ICAgICAgICB2WzBdLnBhdHRlcm4gPSAic29tZXRoaW5nIjsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcGF0dGVybi1hdHRyaWJ1dGUtMDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXR0ZXJuLWF0dHJpYnV0ZS0wMDMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiB0
ZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICAgICAgICB2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOwogICAgICAg
ICB2WzBdLnBhdHRlcm4gKz0gIiBlbHNlIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cGxhY2Vob2xkZXItY3Jhc2gtd2l0aC1zY3JvbGxiYXItY29ybmVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1jcmFzaC13aXRoLXNjcm9sbGJh
ci1jb3JuZXIuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9wbGFjZWhvbGRlci1jcmFzaC13aXRoLXNjcm9sbGJhci1jb3JuZXIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTAsMTMgKzEwLDEzIEBACiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaScpLmFk
ZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbigpIHsKICAgICB0aGlzLnN0eWxlLmRp
c3BsYXkgPSAibm9uZSI7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5p
bm5lclRleHQgPSAnUEFTUyAobm90IGNyYXNoZWQpJzsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0pOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5l
dmVudFNlbmRlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2knKS5mb2N1cygpOwog
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdhJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3BsYWNlaG9sZGVyLW5vbi10ZXh0ZmllbGQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3BsYWNlaG9sZGVyLW5vbi10ZXh0ZmllbGQuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1ub24tdGV4
dGZpZWxkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiA8L3A+CiA8aW5wdXQg
aWQ9InRhcmdldCIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iUEFTUyI+CiA8c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLnNldEF0dHJpYnV0ZSgicGxhY2Vo
b2xkZXIiLCAicGxhY2Vob2xkZXIiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGxh
Y2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMywxNCArMywxNCBAQAogZnVuY3Rpb24gZmluaXNoVGVzdCgp
CiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0Jykuc2V0QXR0cmlidXRlKCdw
bGFjZWhvbGRlcicsJ1BsYWNlaG9sZGVyJyk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogICAgIHNldFRpbWVvdXQoZmluaXNoVGVzdCwgMCk7CiB9CiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcGxhaW50ZXh0LW1vZGUtMS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcGxhaW50ZXh0LW1vZGUtMS5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3BsYWludGV4dC1tb2RlLTEuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQCBmdW5jdGlvbiBhc3NlcnQoZnVuYywgYXJncywgZXhw
ZWN0ZWQpCiAKIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRmaWVsZCIpOwogZS5mb2N1cygpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFpbnRleHQtbW9kZS0yLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wbGFpbnRleHQtbW9kZS0yLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGxhaW50ZXh0LW1vZGUtMi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBAIGZ1bmN0aW9uIGFzc2VydChmdW5j
LCBhcmdzLCBleHBlY3RlZCkgewogPGRpdiBpZD0icmljaGNvbnRlbnQiPlRoaXMgPGI+c3R5bGVk
IDxpPnRleHQ8L2k+PC9iPiwgYW5kIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbSI+IGxp
bms8L2E+IHdpbGwgYmUgcGFzdGVkIGludG8gdGhlIHRleHRmaWVsZC4gIEFsbCByaWNobmVzcyBz
aG91bGQgYmUgc3RyaXBwZWQuPC9kaXY+CiA8b2wgaWQ9ImNvbnNvbGUiPjwvb2w+CiA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKIHZh
ciByaWNoY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyaWNoY29udGVudCIpOwog
dmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CkBAIC0zNiw3ICszNiw3IEBAIGUuc2V0U2Vs
ZWN0aW9uUmFuZ2UoMCwgMCk7CiB3aW5kb3cuc2V0VGltZW91dChwYXN0ZSwgNTAwKTsKIGZ1bmN0
aW9uIHBhc3RlKCkgewogICAgIGFzc2VydCgiZG9jdW1lbnQuZXhlY0NvbW1hbmQiLCAiUGFzdGUi
LCB0cnVlKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQog
PC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9yYWRpby1jaGVja2JveC1yZXN0b3JlLWluZGV0ZXJtaW5hdGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhZGlvLWNoZWNrYm94LXJlc3RvcmUt
aW5kZXRlcm1pbmF0ZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3JhZGlvLWNoZWNrYm94LXJlc3RvcmUtaW5kZXRlcm1pbmF0ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBkaXNwYXRjaEV2ZW50KHRhcmdldCwgZXZl
bnRUeXBlLCBvZmZzZXRYLCBvZmZzZXRZKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcmVtb3ZlZC1pbWFnZS1hcy1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmVtb3ZlZC1pbWFnZS1hcy1wcm9wZXJ0eS5odG1sCShyZXZpc2lv
biAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlbW92ZWQtaW1hZ2UtYXMtcHJv
cGVydHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKIDxpbWcgc3JjPSIiIGlk
PSJpIj4KIDwvZm9ybT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiBmdW5jdGlvbiBnYygpCkBAIC0zMyw4ICszMyw4IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICB9IGNhdGNoIChleCkgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImRpdiIpWzBdLmlubmVySFRNTCA9ICJQQVNTIjsKICAgICAgICAgfQotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9LCAwKTsKIH0K
IDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZW5kZXItdGV4dC1jcmFz
aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVuZGVyLXRleHQt
Y3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
ZW5kZXItdGV4dC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiA+
PGlucHV0IHR5cGU9InRleHQiIG9ua2V5ZG93bj0ibW92ZSh0aGlzLm5leHRTaWJsaW5nKSI+CiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgYWN0
aXZlSW5wdXQgPSBudWxsOwogCkBAIC0yOSwxMCArMjksMTAgQEAgdmFyIGlucHV0cyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYQogbW92ZShpbnB1dHNbMF0pOwogCiBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
aW5wdXRzLmxlbmd0aCAtIDE7IGkrKykKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bignZG93
bkFycm93JywgW10pOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnUEFTUycpKTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmVwYXJlbnRlZC1pbWFnZS1hcy1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVwYXJlbnRlZC1pbWFnZS1hcy1wcm9wZXJ0eS5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JlcGFyZW50ZWQt
aW1hZ2UtYXMtcHJvcGVydHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxm
b3JtPjwvZm9ybT4KIDxkaXYgaWQ9ImRpdiI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jl
c2V0LWF1dG9maWxsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3Jlc2V0LWF1dG9maWxsZWQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9yZXNldC1hdXRvZmlsbGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTMg
KzcsMTMgQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIH0KIAogICAgICAgICB2
YXIgZmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmllbGQnKTsKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0QXV0b2ZpbGxlZChmaWVsZCwgdHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRBdXRvZmlsbGVkKGZpZWxk
LCB0cnVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1RoaXMg
dGVzdCByZXF1aXJlcyBhIExheW91dFRlc3RDb250cm9sbGVyLicpOwogICAgICAgICAgICAgcmV0
dXJuOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXN0b3JlLXNlbGVjdGlvbi1hZnRl
ci1sYXlvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc3Rv
cmUtc2VsZWN0aW9uLWFmdGVyLWxheW91dC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc3RvcmUtc2VsZWN0aW9uLWFmdGVyLWxheW91dC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDEzICszLDEzIEBACiA8aHRtbD4KIDxoZWFkPgogICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBzZW5kS2V5KGVsZW1lbnQsIGtleSkgewotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewog
ICAgICAgICAgICAga2V5ID0ga2V5LnN1YnN0cigwLDEpLnRvTG93ZXJDYXNlKCkgKyBrZXkuc3Vi
c3RyKDEpOyAvLyBsb3dlcmNhc2UgMXN0IGxldHRlciBmb3IgZXZlbnRTZW5kZXIKICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oa2V5KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2LDgg
KzQ2LDggQEAKICAgICAgICAgc2VuZEtleSh0ZXN0SW5wdXQsICdyJyk7CiAKICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVyVGV4dCA9IHRlc3RJbnB1dC52YWx1
ZTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICB9
LCAwKTsKICAgICB9CiAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NhdmVkLXN0
YXRlLWFkb3B0Tm9kZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2F2ZWQtc3RhdGUtYWRvcHROb2RlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2F2ZWQtc3RhdGUtYWRvcHROb2RlLWNyYXNoLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTQgKzcsMTQgQEAgTWFyc2htYWxsb3dzCiA8aWZyYW1l
IGlkPSJpZnJhbWUiIHNyYz0iZGF0YTp0ZXh0L2h0bWwsIj48L2lmcmFtZT4KIDxpbnB1dCB0eXBl
PSJwYXNzd29yZCIgaWQ9InBhc3N3b3JkIiB2YWx1ZT0ic2Vpa29vQyI+CiA8c2NyaXB0PgotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICB9CiAKICAgICB2YXIgbmV3RG9jID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFt
ZSIpLmNvbnRlbnREb2N1bWVudDsKICAgICBuZXdEb2MuYWRvcHROb2RlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzZWxlY3QiKSk7CiAgICAgbmV3RG9jLmFkb3B0Tm9kZShkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGV4dGFyZWEiKSk7CiAgICAgbmV3RG9jLmFkb3B0Tm9kZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicGFzc3dvcmQiKSk7Ci0gICAgbG9jYXRpb24uaHJlZj0iZGF0YTp0ZXh0
L2h0bWwsU1VDQ0VTUzxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpPC9zY3IiICsgImlwdD4iOworICAgIGxvY2F0
aW9uLmhyZWY9ImRhdGE6dGV4dC9odG1sLFNVQ0NFU1M8c2NyaXB0PmlmICh3aW5kb3cudGVzdFJ1
bm5lcikgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk8L3NjciIgKyAiaXB0PiI7CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWFicy1wb3MtY2FuY2VsLWJ1dHRv
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWFicy1w
b3MtY2FuY2VsLWJ1dHRvbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlYXJjaC1hYnMtcG9zLWNhbmNlbC1idXR0b24uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMyw4ICszLDggQEAKICAgICA8dGl0bGU+U2VhcmNoIEZpZWxkIHdpdGggVHJhbnNmb3Jt
PC90aXRsZT4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWNhbmNlbC1idXR0b24t
bW91c2V1cC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNo
LWNhbmNlbC1idXR0b24tbW91c2V1cC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlYXJjaC1jYW5jZWwtYnV0dG9uLW1vdXNldXAuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNSwxMCArNSwxMCBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICAg
ICAgdmFyIHMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaDEiKTsKICAgICAgICAg
ICAgIHZhciBzMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWFyY2gyIik7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlYXJjaC1jbGljay1pbi1wbGFjZWhvbGRlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWNsaWNrLWluLXBsYWNl
aG9sZGVyLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2VhcmNoLWNsaWNrLWluLXBsYWNlaG9sZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcg
KzEyLDcgQEAKICAgICAgICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAg
ICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CiAgICAg
ICAgICAgICB2YXIgeCA9IHRhcmdldC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIHRhcmdldC5v
ZmZzZXRMZWZ0ICsgdGFyZ2V0Lm9mZnNldFdpZHRoIC8gMjsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VhcmNoLWRlbGV0ZS13aGlsZS1jYW5jZWwtYnV0dG9uLWNsaWNrZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlYXJjaC1kZWxldGUtd2hpbGUt
Y2FuY2VsLWJ1dHRvbi1jbGlja2VkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWRlbGV0ZS13aGlsZS1jYW5jZWwtYnV0dG9uLWNsaWNrZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsNyArMTcsNyBAQAogICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOwogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKIAotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgZnVuY3Rpb24gZGVsZXRlU2VhcmNoKCkKQEAg
LTMyLDExICszMiwxMSBAQAogICAgICAgICAgICAgCiAgICAgICAgICAgICBmdW5jdGlvbiBkcmFn
KCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAg
ICAgICAgICAgICAgdmFyIHNlYXJjaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gn
KTsKICAgICAgICAgICAgICAgICB2YXIgeCA9IHNlYXJjaC5vZmZzZXRMZWZ0ICsgc2VhcmNoLm9m
ZnNldFdpZHRoIC0gNjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWRpc2Fi
bGVkLXJlYWRvbmx5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
ZWFyY2gtZGlzYWJsZWQtcmVhZG9ubHkuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zZWFyY2gtZGlzYWJsZWQtcmVhZG9ubHkuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQCBmdW5jdGlvbiBzZXRJbnB1dEF0dHJpYnV0ZXMoaW5wdXQs
IHZhbHVlCiAgICAgaW5wdXQucmVhZE9ubHkgPSAhIXJlYWRvbmx5OwogfQogCi1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB2
YXIgaW5wdXQgPSAkKCJzZWFyY2hfaW5wdXQiKTsKICAgICB2YXIgY2FuY2VsQnV0dG9uUG9zaXRp
b24gPSBzZWFyY2hDYW5jZWxCdXR0b25Qb3NpdGlvbihpbnB1dCk7CiAgICAgdmFyIG1pZGRsZUJ1
dHRvblBvc2l0aW9uID0ge307CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlYXJjaC1l
dmVudC1kZWxheS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2Vh
cmNoLWV2ZW50LWRlbGF5Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VhcmNoLWV2ZW50LWRlbGF5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE2
ICszMiwxNiBAQCBmdW5jdGlvbiBzZWFyY2hFdmVudChldmVudCkKICAgICAgICAgICAgIHNlbmRE
ZWxldGVLZXlFdmVudCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIHNldFRpbWVvdXQoImxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIsIDApOyAvLyBEbyBpdCBvbiBhIHRpbWVyIHRv
IGF2b2lkIFdpbmRvd3MgRFJUIGhhbmdpbmcuCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHNldFRpbWVvdXQoInRlc3RSdW5uZXIubm90aWZ5RG9uZSgpIiwgMCk7
IC8vIERvIGl0IG9uIGEgdGltZXIgdG8gYXZvaWQgV2luZG93cyBEUlQgaGFuZ2luZy4KICAgICB9
CiB9CiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic2VhcmNoIikuZm9jdXMoKTsKICAgICBzZW5kS2V5RXZlbnQoKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLWhpZGRlbi1jYW5jZWwtYnV0dG9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWFyY2gtaGlkZGVuLWNh
bmNlbC1idXR0b24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zZWFyY2gtaGlkZGVuLWNhbmNlbC1idXR0b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTAsOCArMTAsOCBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1vdXNlRG93bkNv
dW50ID0gMDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAg
ICAgICAgICAgIHZhciBzZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWFyY2giKTsKIApA
QCAtMjAsNyArMjAsNyBAQAogCiAgICAgICAgICAgICAgICAgdmFyIHkgPSBzZi5vZmZzZXRUb3Ag
KyBzZi5vZmZzZXRIZWlnaHQgLyAyOwogCi0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewogICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhidXR0b25Y
LCB5KTsKICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc2VhcmNoLXBsYWNlaG9sZGVyLXZhbHVlLWNoYW5nZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlYXJjaC1wbGFjZWhvbGRlci12YWx1ZS1j
aGFuZ2VkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2VhcmNoLXBsYWNlaG9sZGVyLXZhbHVlLWNoYW5nZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NCwxMiArNCwxMiBAQCBmdW5jdGlvbiBkZWxheWVkVGVzdCgpCiB7CiAgICAgdmFyIHNlYXJjaEZp
ZWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKICAgICBzZWFyY2hGaWVsZC5z
ZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgIlRlc3QgUGFzc2VkIik7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiB9CiAKIHNldFRpbWVvdXQoZGVsYXllZFRlc3QsIDEwMCk7CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3NlYXJjaC10cmFuc2Zvcm1lZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VhcmNoLXRyYW5zZm9ybWVkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLXRyYW5zZm9ybWVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE2LDggKzE2LDggQEAKICAgICAgICAgQ2xpY2tpbmcgdGhlICh4KSBidXR0b24gc2hvdWxk
IGNsZWFyIHRoZSBmaWVsZC4KICAgICA8L3A+CiAgICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CiAgICAgICAgICAgICB2YXIgdHJhbnNsYXRpb25BbW91bnQgPSA1MDsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLXpvb21lZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoLXpvb21lZC5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlYXJjaC16b29tZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogICAgICAgICBDbGlja2luZyB0aGUgKHgpIGJ1
dHRvbiBzaG91bGQgY2xlYXIgdGhlIGZpZWxkLgogICAgIDwvcD4KICAgICA8c2NyaXB0PgotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgewogICAgICAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKICAgICAgICAgICAgIHZhciBjYW5jZWxQb3MgPSBzZWFy
Y2hDYW5jZWxCdXR0b25Qb3NpdGlvbih0YXJnZXQpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zZWxlY3QtYWNjZXNza2V5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9zZWxlY3QtYWNjZXNza2V5Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWFjY2Vzc2tleS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xNSw3ICsxNSw3IEBAIEZBSUwKIDwvZGl2PgogPHNjcmlwdD4KICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgdmFyIG1vZGlmaWVy
czsKICAgICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuc2VhcmNoKC9cYk1hYyBPUyBYXGIv
KSAhPSAtMSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNhY2hlLWRlc3lu
Y2hyb25pemF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
ZWxlY3QtY2FjaGUtZGVzeW5jaHJvbml6YXRpb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2FjaGUtZGVzeW5jaHJvbml6YXRpb24uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAKIHZhciBzZWxlY3QgPSBkb2N1bWVudC5m
b3Jtc1swXS5lbGVtZW50c1swXTsKIHZhciByZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzIik7CiBzZWxlY3QuZm9jdXMoKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCJkb3duQXJyb3ciLCBbXSk7CiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZG93
bkFycm93IiwgWyJzaGlmdEtleSJdKTsKIH0gZWxzZSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10by1wb3B1cC1yb3VuZHRyaXAuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtbGlzdGJveC10
by1wb3B1cC1yb3VuZHRyaXAuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLWxpc3Rib3gtdG8tcG9wdXAtcm91bmR0cmlwLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxzY3JpcHQ+CiAKLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQpA
QCAtMzgsOCArMzgsOCBAQCBmdW5jdGlvbiByZXBvcnRSZXN1bHRzKCkKICAgICAgICAgIjxsaT5B
bmQgbmVpdGhlciBzaG91bGQgZHJvcHBpbmcgb3V0IG9mIHRoZSBtZXNzYWdlIGxvb3A6ICIgKyAo
c2VsZWN0ZWQzID09IHNlbGVjdGVkMSA/ICJQQVNTIiA6ICJGQUlMIikgKwogICAgICAgICAiPC91
bD4iOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdlLXBvcHVwLXRvLWxpc3Rib3gt
aW4tZXZlbnQtaGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LWluLWV2ZW50LWhhbmRsZXIuaHRtbAko
cmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtY2hhbmdl
LXBvcHVwLXRvLWxpc3Rib3gtaW4tZXZlbnQtaGFuZGxlci5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zLDggKzMsOCBAQAogPGhlYWQ+CiAgIDx0aXRsZT5DaGFuZ2UgcG9wdXAgdG8gbGlzdCBpbnNp
ZGUgbW91c2UgZXZlbnQgaGFuZGxlci48L3RpdGxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICBmdW5jdGlvbiBzZW5kQ2xpY2soKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0Ym94LXJvdW5kdHJpcC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWNoYW5nZS1wb3B1cC10by1saXN0
Ym94LXJvdW5kdHJpcC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NlbGVjdC1jaGFuZ2UtcG9wdXAtdG8tbGlzdGJveC1yb3VuZHRyaXAuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPHNjcmlwdD4KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpCkBAIC0z
OCw4ICszOCw4IEBAIGZ1bmN0aW9uIHJlcG9ydFJlc3VsdHMoKQogICAgICAgICAiPGxpPkFuZCBu
ZWl0aGVyIHNob3VsZCBkcm9wcGluZyBvdXQgb2YgdGhlIG1lc3NhZ2UgbG9vcDogIiArIChzZWxl
Y3RlZDMgPT0gc2VsZWN0ZWQxID8gIlBBU1MiIDogIkZBSUwiKSArCiAgICAgICAgICI8L3VsPiI7
CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1kaXJ0eS1wYXJlbnQtcHJlZi13aWR0aHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1kaXJ0eS1wYXJl
bnQtcHJlZi13aWR0aHMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9zZWxlY3QtZGlydHktcGFyZW50LXByZWYtd2lkdGhzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTUsMTMgKzUsMTMgQEAKICAgICAgIGZ1bmN0aW9uIGdvKCkgewogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsMScpLnN0eWxlLmRpc3BsYXkgPSAnJzsKIAotICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAg
ICAgfQogCiAgICAgICBmdW5jdGlvbiBtYWluKCkgewotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICBzZXRUaW1l
b3V0KGdvLCAwKTsKICAgICAgIH0KICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0LWRvdWJsZS1vbmNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWRvdWJsZS1vbmNoYW5nZS5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1kb3VibGUtb25jaGFuZ2Uu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw3ICs5LDcgQEAKICAgICAgICAgICAgICAgICBpZiAo
IXdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICAgICAgdmFyIHBv
cHVwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN3aXRjaGVyIik7CiAgICAgICAgICAgICAg
ICAgcG9wdXAuZm9jdXMoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWVt
cHR5LWxpc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVj
dC1lbXB0eS1saXN0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VsZWN0LWVtcHR5LWxpc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDgg
QEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKDIwLCA3MCk7CiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtZW1wdHktb3B0Z3JvdXAuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1lbXB0eS1vcHRncm91
cC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVj
dC1lbXB0eS1vcHRncm91cC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPHNj
cmlwdD4KIGZ1bmN0aW9uIHN1Ym1pdEZvcm0oKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB3aW5kb3cudGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Ym1pdGZv
cm0iKS5zdWJtaXQoKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zZWxlY3QtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NlbGVjdC1nZW5lcmF0ZWQtY29udGVudC5odG1sCShyZXZpc2lvbiAxMjA5
MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1nZW5lcmF0ZWQtY29udGVudC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBAIGZ1bmN0aW9uIGJvb20oKSB7CiAg
ICAgdmFyIHMyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7CiAgICAgczIuc2V0
QXR0cmlidXRlKCdjbGFzcycsICdzMicpOwogICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5h
cHBlbmRDaGlsZChzMik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiB3aW5kb3cu
b25sb2FkID0gYm9vbTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
ZWxlY3QtaW5kZXgtc2V0dGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zZWxlY3QtaW5kZXgtc2V0dGVyLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWluZGV4LXNldHRlci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0zLDggKzMsOCBAQAogICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgdmFyIHNsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Ns
Jyk7CiAgICAgICAgICAgICAgICAgdmFyIG5vID0gbmV3IE9wdGlvbigpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtbGlzdC1ib3gtbW91c2UtZm9jdXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1saXN0LWJveC1tb3VzZS1mb2N1
cy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVj
dC1saXN0LWJveC1tb3VzZS1mb2N1cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBA
QAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIHZhciBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0Iik7
CiAgICAgdmFyIHggPSBzZWxlY3QuY2xpZW50TGVmdCArIDEwOwogICAgIHZhciB5ID0gc2VsZWN0
LmNsaWVudFRvcCArIDEwOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtbGlz
dGJveC1mb2N1cy1kaXNwbGF5bm9uZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0LWxpc3Rib3gtZm9jdXMtZGlzcGxheW5vbmUuaHRtbAkocmV2aXNpb24g
MTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtbGlzdGJveC1mb2N1cy1k
aXNwbGF5bm9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzksOCBAQAogPGlucHV0IGlk
PSJzZWxlY3RhYmxlIj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
IHZhciBzZWxlY3RhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbGVjdGFibGUnKTsK
IHZhciBtdWx0aXNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtdWx0aXNlbGVjdCcp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtbWF4LWxlbmd0aC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LW1heC1sZW5ndGguaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtbWF4
LWxlbmd0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogPHNlbGVjdCBpZD0i
dGhlU2VsZWN0Ij48L3NlbGVjdD4KIAogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgIGZ1bmN0aW9uIGxvZyhtc2cpCiAgICAgewpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9zZWxlY3QtbmFtZWRJdGVtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3QtbmFtZWRJdGVtLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LW5hbWVkSXRlbS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw4IEBAIGZ1bmN0aW9uIHRlc3QoKSAKICAgICAgICAgICAgIHByaW50
KCJFUlJPUjogIiArIGUubWVzc2FnZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiB9CiA8L3NjcmlwdD4KIDx0aXRsZT5UZXN0IGZvciBIVE1MU2VsZWN0
RWxlbWVudC5uYW1lZEl0ZW0oKTwvdGl0bGU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3NlbGVjdC1uby1uYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zZWxlY3Qtbm8tbmFtZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1uby1uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3
LDkgQEAgU0VMRUNUIHdpdGggbm8gbmFtZSBnZW5lcmF0ZXMgaW52YWxpZCBxdQogPGgyIGlkPSJw
YXNzIj5QQVNTPC9oMj4KIDxoMiBpZD0iZmFpbCI+RkFJTDwvaDI+CiA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQog
CiBmdW5jdGlvbiB0ZXN0KCkgewpAQCAtNTUsOCArNTUsOCBAQCBmdW5jdGlvbiB0ZXN0KCkgewog
ICAgICAgICB9IAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzcyIpLnN0eWxl
LmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKICAgICB9Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiB9OwogPC9zY3JpcHQ+CiA8cD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2VsZWN0LW9wdGlvbi1hY2Nlc3NrZXktY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1vcHRpb24tYWNjZXNza2V5LWNyYXNoLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LW9wdGlvbi1hY2Nl
c3NrZXktY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBAQAogPHNjcmlw
dD4KIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3QgaXMgdG8gZW5zdXJlIHRoYXQgd2UgZG8gbm90IGNy
YXNoIHdoZW4gc2VsZWN0aW5nIGFuIGl0ZW0gZnJvbSBhIG1lbnUgbGlzdCBpbiBhIGxpc3QgYm94
IHRocm91Z2ggYW4gYWNjZXNzIGtleS4nKQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIg
c2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKICAgICBz
ZWxlY3RFbGVtZW50LmZvY3VzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVj
dC1vdXQtb2YtYm91bmRzLWluZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9zZWxlY3Qtb3V0LW9mLWJvdW5kcy1pbmRleC5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1vdXQtb2YtYm91bmRzLWluZGV4Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiAgICAgPGhlYWQ+CiAgICAgICAgIDxz
Y3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIHZhciBz
bCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbCcpOwogICAgICAgICAgICAgc2wuc2VsZWN0
ZWRJbmRleCA9IDE7CiAgICAgICAgICAgICBzbC5zZWxlY3RlZEluZGV4ID0gMjsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXBvcHVwLXBhZ2VrZXlzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcG9wdXAtcGFnZWtleXMuaHRtbAko
cmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcG9wdXAt
cGFnZWtleXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4LDcgQEAKICAgICB9CiAgICAg
CiAgICAgZnVuY3Rpb24gc2VuZEtleShlbGVtZW50LCBrZXkpIHsKLSAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKICAgICAgICAgICAgIGtleSA9IGtleS5zdWJzdHIoMCwxKS50b0xvd2VyQ2FzZSgpICsga2V5
LnN1YnN0cigxKTsgLy8gbG93ZXJjYXNlIDFzdCBsZXR0ZXIgZm9yIGV2ZW50U2VuZGVyCiAgICAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0x
NzMsOCArMTczLDggQEAKICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICB7CiAgICAgICAgIHRyeXsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgICAgICAgICAgdmFyIHBhc3NlZCA9IHRydWU7CiAgICAgICAgICAgICBwYXNzZWQg
PSB0ZXN0UGFnZURvd25Ob0Rpc2FibGVkRWxlbWVudHMoKSAmJiBwYXNzZWQ7CiAgICAgICAgICAg
ICBwYXNzZWQgPSB0ZXN0UGFnZVVwTm9EaXNhYmxlZEVsZW1lbnRzKCkgJiYgcGFzc2VkOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcmVtb3ZlLW9wdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXJlbW92ZS1vcHRpb24uaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcmVt
b3ZlLW9wdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIGZ1bmN0aW9u
IHRlc3QoKSB7DQogCXZhciBhZnRlciA9IHppcHNlbGVjdC5vcHRpb25zLmxlbmd0aDsKICAgICBp
ZiAoYmVmb3JlID4gYWZ0ZXIpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVE
aXYiKS5pbm5lckhUTUwgPSAidGVzdCBwYXNzZWQiCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyAg
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsgIAogfQ0KIDwvU0NSSVBUPg0KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VsZWN0LXJlcGxhY2Utb3B0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3QtcmVwbGFjZS1vcHRpb24uaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcmVwbGFjZS1vcHRpb24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkK
IHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB2YXIgc2VsZWN0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbGVjdCcpOwogICAgIHNlbGVjdC5vcHRpb25zWzFdID0gbmV3
IE9wdGlvbigiUmVwbGFjZW1lbnQgT3B0aW9uIDEiLCAiUmVwbGFjZW1lbnQgT3B0aW9uIDEiKTsK
ICAgICB2YXIgbGVuZ3RoID0gc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3QtcmVzZXQtbXVsdGlwbGUtc2VsZWN0aW9ucy00LXNpbmdsZS1z
ZWxlY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVj
dC1yZXNldC1tdWx0aXBsZS1zZWxlY3Rpb25zLTQtc2luZ2xlLXNlbGVjdGlvbi5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1yZXNldC1tdWx0
aXBsZS1zZWxlY3Rpb25zLTQtc2luZ2xlLXNlbGVjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMSw4ICsxMSw4IEBAIGZ1bmN0aW9uIHByaW50KG1lc3NhZ2UpDQogfQ0KIGZ1bmN0aW9uIHRl
c3QoKQ0KIHsNCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQ0KKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogICAgIHNlbGVjdEVs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0MSIpOw0KICAgICBpZiAoc2Vs
ZWN0RWxlbWVudC52YWx1ZSA9PSAiMyIpDQogICAgICAgICBwcmludCgiTE9BRDpTVUNDRUVERUQh
Iik7DQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtcmVzZXQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1yZXNldC5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1yZXNldC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3Qo
KQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHZhciBzZWxlY3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsZWN0Jyk7CiAgICAgdmFyIGluZGV4ID0gc2VsZWN0LnNl
bGVjdGVkSW5kZXg7CiAgICAgZG9jdW1lbnQuZm9ybXNbMF0ucmVzZXQoKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNjcmlwdC1vbmNoYW5nZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXNjcmlwdC1vbmNoYW5nZS5odG1sCShy
ZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zY3JpcHQt
b25jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAg
ICAgICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAg
ICAgICB2YXIgcG9wdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3dpdGNoZXIxIik7CiAg
ICAgICAgICAgICAgICAgcG9wdXAuZm9jdXMoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2VsZWN0LXNldC1pbm5lci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VsZWN0LXNldC1pbm5lci5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1zZXQtaW5uZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Niw4ICs2LDggQEAKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsZWN0JykubGVuZ3RoOyAv
LyBjYXVzZSB0aGUgPHNlbGVjdD4gZWxlbWVudCB0byBidWlsZCBhIGxpc3Qgb2Ygb3B0aW9ucwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncm91cCcpLmlubmVySFRNTCA9ICIiOyAvLyBy
ZW1vdmUgYW4gb3B0aW9uIHVzaW5nIGlubmVySFRNTApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zZWxlY3QtdHlwZS1haGVhZC1saXN0LWJveC1uby1zZWxlY3Rpb24uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC10eXBlLWFoZWFkLWxpc3QtYm94
LW5vLXNlbGVjdGlvbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NlbGVjdC10eXBlLWFoZWFkLWxpc3QtYm94LW5vLXNlbGVjdGlvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBACiA8L3NlbGVjdD4KIDxkaXYgaWQ9InJlc3VsdCI+
VG8gcnVuIGludGVyYWN0aXZlbHksIHRhYiB0byBsaXN0IGFuZCB0eXBlICIxMiIgcXVpY2tseS4g
SWYgaXQgZG9lc24ndCBjcmFzaCwgdGhlIHRlc3QgcGFzc2VkLjwvZGl2PgogPHNjcmlwdD4KLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIHZhciBtZW51ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxpc3QiKTsKICAgICAgICAgbWVudS5mb2N1cygpOwogICAgICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCIxIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3NlbGVjdC10eXBlLWFoZWFkLW5vbi1sYXRpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXR5cGUtYWhlYWQtbm9uLWxhdGluLmh0bWwJKHJldmlzaW9u
IDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LXR5cGUtYWhlYWQtbm9u
LWxhdGluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8c2VsZWN0IGlkPSJt
ZW51Ij48b3B0aW9uPiYjeDA1ZTk7PC9vcHRpb24+PG9wdGlvbj4mI3gwNWQzOzwvb3B0aW9uPjxv
cHRpb24+JiN4MDVkMjs8L29wdGlvbj48b3B0aW9uPiYjeDA1ZGI7PC9vcHRpb24+PG9wdGlvbj4m
I3gwNWUyOzwvb3B0aW9uPjwvc2VsZWN0PgogPGRpdiBpZD0icmVzdWx0Ij5DYW5ub3QgcnVuIGlu
dGVyYWN0aXZlbHkuPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKICAgICAgICAgdmFyIG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVudSIp
OwogICAgICAgICBtZW51LmZvY3VzKCk7CiAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIlx1
MDVkMiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qtd2lkdGgtZm9udC1j
aGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC13
aWR0aC1mb250LWNoYW5nZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC13aWR0aC1mb250LWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC00LDggKzQsOCBAQAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKIAogICAgIHZhciB3aWR0aEJlZm9yZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzZWxlY3QiKS5vZmZzZXRXaWR0aDsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Vs
ZWN0Iikuc2V0QXR0cmlidXRlKCJzdHlsZSIsICJmb250LXNpemU6IDMycHgiKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0ZWQtaW5kZXgtYXNzZXJ0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3RlZC1pbmRleC1hc3NlcnQuaHRtbAko
cmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3RlZC1pbmRl
eC1hc3NlcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgTm8gYXNzZXJ0aW9u
IGZhaWx1cmUgKG9uIGEgZGVidWcgYnVpbGQpIAogPHNlbGVjdCBpZD0idCI+CiA8L3NlbGVjdD4K
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndCcpLnNlbGVjdGVkSW5kZXg7CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0ZWQtaW5kZXgtdmFs
dWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdGVkLWlu
ZGV4LXZhbHVlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2VsZWN0ZWQtaW5kZXgtdmFsdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDgg
QEAKIFNlZSBidWcgNzk4NDA0LiA8L3A+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVu
Y3Rpb24gdGVzdChzZWxlY3RlZF92YWx1ZSkgewogaWYgKHNlbGVjdGVkX3ZhbHVlID09ICdDJykg
ewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Rpb24tZnVuY3Rpb25zLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Rpb24tZnVuY3Rpb25z
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0
aW9uLWZ1bmN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IHZhciBlbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpOwogICAgICAgICAgICAg
ICAgIHByaW50KCI9PT10ZXh0YXJlYT09PSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zbG93LWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
bG93LWNsaWNrLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2xvdy1jbGljay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGJvZHk+
CiBUZXN0IHRoYXQgY2xpY2soKSBvbiBjaGVja2JveGVzIGlzIG5vdCBzbG93Ljxicj48aW5wdXQg
dHlwZT1jaGVja2JveCBpZD1jYj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAKIHZhciBz
dGFydHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKIHZhciBjYiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjYicpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0
b3JlLWhpZGRlbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Rh
dGUtcmVzdG9yZS1oaWRkZW4uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLWhpZGRlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
OSw4ICsxOSw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgdmFyIHN0YXRlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImVtcHR5T25GaXJzdFZpc2l0Iik7CiAgICAgaWYgKCFzdGF0ZS52
YWx1ZSkgewogICAgICAgICAvLyBGaXJzdCB2aXNpdC4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHN0YXRlLnZhbHVlID0gInZpc2l0
ZWQiOwogCiAgICAgICAgIGRvY3VtZW50LmYuaGlkZGVuLnZhbHVlID0gImFmdGVyIjsKQEAgLTM1
LDggKzM1LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAgICAgc2NyaXB0LnNyYyA9ICIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIjsKICAgICAgICAgc2NyaXB0LnR5cGUgPSAi
dGV4dC9qYXZhc2NyaXB0IjsKICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgIH07CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0
KTsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8t
bm9uLWF1dG9jb21wbGV0ZS1mb3JtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUtZm9ybS5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8t
bm9uLWF1dG9jb21wbGV0ZS1mb3JtLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDgg
QEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgdmFyIHN0YXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2VtcHR5T25GaXJzdFZpc2l0Jyk7CiAgICAgaWYgKCFzdGF0ZS52YWx1ZSkgewogICAg
ICAgICAvLyBGaXJzdCB2aXNpdC4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAgICAgICAgIHN0YXRlLnZhbHVlID0gJ3Zpc2l0ZWQnOwogICAgIAog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQxJykudmFsdWUgPSAndmFsdWUx
JzsKQEAgLTUxLDggKzUxLDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHNob3VsZEJl
KCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQyIikudmFsdWUnLCAnInZhbHVlMiInKTsK
ICAgICAgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0YXJlYTIiKS52
YWx1ZScsICciZ29vZCInKTsKICAgICAgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzZWxlY3QyIikudmFsdWUnLCAnIkJTRCInKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1lZGl0ZWQtY29udHJvbHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8t
bm9uLWVkaXRlZC1jb250cm9scy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWVkaXRlZC1jb250cm9scy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIHZh
ciBzdGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbXB0eU9uRmlyc3RWaXNpdCcpOwog
ICAgIGlmICghc3RhdGUudmFsdWUpIHsKICAgICAgICAgLy8gRmlyc3QgdmlzaXQuCi0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICBzdGF0
ZS52YWx1ZSA9ICd2aXNpdGVkJzsKICAgICAgICAgbWFrZUZvcm0ocGFyZW50LCAnMScsICcxJywg
JzEnLCAnMScsICcxJywgJzEnLCAnMScsICcxJywgJzEnKTsKICAgICAKQEAgLTU2LDggKzU2LDgg
QEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGV4dGFyZWEiKS52YWx1ZScsICciMiInKTsKICAgICAKICAgICAgICAgcGFyZW50
LmlubmVySFRNTCA9ICcnOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtc2F2
ZS1vZi1kZXRhY2hlZC1jb250cm9sLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9zdGF0ZS1zYXZlLW9mLWRldGFjaGVkLWNvbnRyb2wuaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1zYXZlLW9mLWRldGFjaGVkLWNv
bnRyb2wuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQCBmdW5jdGlvbiBydW5U
ZXN0KCkKICAgICB2YXIgc3RhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1wdHlPbkZp
cnN0VmlzaXQnKTsKICAgICBpZiAoIXN0YXRlLnZhbHVlKSB7CiAgICAgICAgIC8vIEZpcnN0IHZp
c2l0LgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICAgICAgc3RhdGUudmFsdWUgPSAndmlzaXRlZCc7CiAKICAgICAgICAgZm9ybTEuaW5uZXJI
VE1MID0gJzxpbnB1dCBuYW1lPXVzZXIgaWQ9aW5wdXQxPic7CkBAIC0zNSw4ICszNSw4IEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICAvLyBTZWNvbmQgdmlzaXQuCiAgICAgICAgIHNob3Vs
ZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQyIikudmFsdWUnLCAnIiInKTsgLy8g
Tm90ICd2YWx1ZTEnLgogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgIH0KICB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c3R5bGUtZGlzcGxheS1ub25lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zdHlsZS1kaXNwbGF5LW5vbmUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zdHlsZS1kaXNwbGF5LW5vbmUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMyw4ICszLDggQEAKICA8cD5UaGlzIHRlc3RzIHRvIHNlZSBpZiAnc3R5bGUuZGlzcGxheScg
Zm9yIGFuIGVsZW1lbnQgY2FuIGJlIHNldCBkeW5hbWljYWxseS4gIFNlZSBidWcgODIwOTQ3LiA8
L3A+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZG9jdW1lbnQud3JpdGVsbigiPGRpdiAg
aWQ9XCJyZXN1bHRcIj4gXHJcbiAgVGhpcyB0ZXN0OiBGQUlMRUQgPC9kaXY+XHJcbiIpOwogZG9j
dW1lbnQud3JpdGVsbigiPGRpdiAgaWQ9XCJhbm5vdW5jZTpUb3BcIj5cclxuIFRoaXMgdGV4dCBz
aG91bGQgYmUgaGlkZGVuIDwvZGl2PlxyXG4iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3VibWl0LWNoYW5nZS1mcmFnbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3VibWl0LWNoYW5nZS1mcmFnbWVudC5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC1jaGFuZ2UtZnJhZ21lbnQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGlmIChkb2N1bWVudC5sb2NhdGlvbi5o
cmVmLmluZGV4T2YoIm49diIpID09IC0xKQpAQCAtMTcsOCArMTcsOCBAQCBmdW5jdGlvbiBydW5U
ZXN0KCkgewogZnVuY3Rpb24gaGFzaENoYW5nZWQoKSB7CiAgICAgaWYgKGRvY3VtZW50LmxvY2F0
aW9uLmhyZWYuaW5kZXhPZigiZmlyc3RhY3Rpb24iKSAhPSAtMSkgewogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTD0iUEFTUyI7Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtbmlsLXZhbHVlLWZpZWxkLWFzc2VydC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0LW5pbC12YWx1ZS1maWVs
ZC1hc3NlcnQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zdWJtaXQtbmlsLXZhbHVlLWZpZWxkLWFzc2VydC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03
LDE0ICs3LDE0IEBACiA8Zm9ybSBpZD0idCI+PGlucHV0PjwvZm9ybT4KIDxzY3JpcHQ+CiAgICAg
aWYgKCFsb2NhdGlvbi5ocmVmLm1hdGNoKCdcXD8nKSkgewotICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICAgICAgfQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidCIpLnN1
Ym1pdCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lclRleHQgPSAiUEFTUyI7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9zdWJtaXQtdG8tYmxhbmstbXVsdGlwbGUtdGltZXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC10by1ibGFuay1tdWx0aXBsZS10aW1lcy5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N1Ym1pdC10
by1ibGFuay1tdWx0aXBsZS10aW1lcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNywxNSArMTcs
MTUgQEAKICAgICAgICAgPC9mb3JtPgogICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
ICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRD
YW5PcGVuV2luZG93cygpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5P
cGVuV2luZG93cygpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAg
ICAgICAgIH0KICAgICAgICAgdmFyIG51bWJlclRpbWVzVG9DbGljayA9IDI7CiAgICAgICAgIHZh
ciBudW1iZXJUaW1lc1RvU3BhY2UgPSAyOwogICAgICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAh
d2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8
fCAhd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2xpY2soKTsKQEAgLTY1LDggKzY1LDggQEAKICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oJyAnKTsKICAgICAgICAgfQogICAgICAgICBmdW5jdGlvbiBu
b3RpZnlEb25lKCkgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VS
ZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENsb3NlUmVt
YWluaW5nV2luZG93c1doZW5Db21wbGV0ZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CiAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9ib2R5PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtdG8tdXJsLWZyYWdtZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtdG8tdXJsLWZyYWdtZW50
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3VibWl0
LXRvLXVybC1mcmFnbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE1ICsyLDE1IEBACiA8
aGVhZD4KIDx0aXRsZT5UZXN0IGZvciBCdWcgMjAwMzg6IFJFR1JFU1NJT04gKHIzNTE1MSk6IENh
bid0IHBvc3QgY29tbWVudHMgb24gZmxpY2tyLmNvbTwvdGl0bGU+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdCgpIHsK
ICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCAhPSAiI3ByZXZpZXciKSB7CiAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteXN1Ym1pdCIpLmNsaWNrKCk7Ci0gICAgICAgIHNl
dFRpbWVvdXQoJ2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9JywgNTAwMCk7CisgICAgICAgIHNldFRpbWVvdXQoJ2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeyB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgfScsIDUwMDAp
OwogICAgIH0KIH0KIDwvc2NyaXB0PgpAQCAtMjgsOCArMjgsOCBAQCBpZiAoZG9jdW1lbnQubG9j
YXRpb24uaGFzaCAhPSAiI3ByZXZpZXciCiAgICAgZG9jdW1lbnQud3JpdGUoIkZBSUwiKTsKIH0g
ZWxzZSB7CiAgICAgZG9jdW1lbnQud3JpdGUoIlBBU1MiKTsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3N1Ym1pdC13aXRoLWJhc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3N1Ym1pdC13aXRoLWJhc2UuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdWJtaXQtd2l0aC1iYXNlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDE0ICsxMCwxNCBAQAogPGZvcm0gaWQ9InQiIGFjdGlvbj0iIiBvbnN1Ym1pdD0icmV0
dXJuIHRydWUiPjxpbnB1dCBuYW1lPWEgdmFsdWU9Yj48L2Zvcm0+CiA8c2NyaXB0PgogICAgIGlm
ICghbG9jYXRpb24uaHJlZi5tYXRjaCgnXFw/JykpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgICAgICAgIH0KICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQiKS5zdWJt
aXQoKTsKICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKICAgICB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdGFiLWluLWlucHV0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90YWItaW4taW5wdXQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90YWItaW4taW5wdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMSwx
MiBAQAogPHNjcmlwdD4KLQlpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotCSAgICB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCWlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKwkgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+
CiBZb3Ugc2hvdWxkIHNlZSAiXHRIZWxsbyBXb3JsZCIgaW4gdGhlIHRleHQgZmllbGQgYmVsb3c8
YnIgLz4KIDxpbnB1dCBpZD0iaW5wdXRFbGVtIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iCUhlbGxvIFdv
cmxkIj4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLQlpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAJCXZhciBp
bnB1dEVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXRFbGVtIik7CiAJCWRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoaW5wdXRFbGVtLnZhbHVlKSk7CiAJfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90YWJzLXdpdGgtbW9kaWZpZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90YWJzLXdpdGgtbW9kaWZpZXJzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGFicy13aXRoLW1vZGlmaWVycy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC00LDggKzQsOCBAQAogCiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVu
Y3Rpb24gbG9nKHMpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RhcmdldGVkLWZy
YW1lLXN1Ym1pc3Npb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RhcmdldGVkLWZyYW1lLXN1Ym1pc3Npb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90YXJnZXRlZC1mcmFtZS1zdWJtaXNzaW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTQsOCArNCw4IEBACiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAgICAg
ICAgICAgLy8gTm90IGR1bXBpbmcgYXMgdGV4dCBzaW5jZSB0aGUgRHVtcFJlbmRlclRyZWUgZG9l
cyBub3QgZHVtcCB0aGUgdGV4dCBjb250ZW50IG9mIGNoaWxkIGZyYW1lcy4gICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdibGFua0J1dHRvbicpOwpAQCAtMTYsOCArMTYsOCBAQAogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF0u
Y29udGVudERvY3VtZW50LlVSTCA9PSAiYWJvdXQ6YmxhbmsiKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtY29udHJvbC1zZWxl
Y3QtYmx1cnJlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4
dC1jb250cm9sLXNlbGVjdC1ibHVycmVkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1jb250cm9sLXNlbGVjdC1ibHVycmVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTMsOCArMyw4IEBACiA8aW5wdXQgdmFsdWU9IlRoaXMgaXMgZHVtbXkgdGV4
dC4gVGhpcyBpcyBkdW1teSB0ZXh0Ij4KIDxwcmUgaWQ9ImxvZ2dlciI+PC9wcmU+CiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIGFzc2VydChwcm9wZXJ0eSwgYWN0dWFsLCBleHBl
Y3RlZCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1jb250cm9sLXNlbGVj
dGlvbi1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4
dC1jb250cm9sLXNlbGVjdGlvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtY29udHJvbC1zZWxlY3Rpb24tY3Jhc2guaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAgVGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jh
c2guDQogPHRleHRhcmVhIGlkPSJBIj48L3RleHRhcmVhPg0KIDx0ZXh0YXJlYSBpZD0iQiI+PC90
ZXh0YXJlYT4NCiA8c2NyaXB0Pg0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCitpZiAod2luZG93LnRlc3RS
dW5uZXIpDQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KIA0KIEEuc2VsZWN0aW9uU3Rh
cnQgPSAwOw0KIEIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHQtZmllbGQtc2V0dmFsdWUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtZmllbGQtc2V0dmFsdWUtY3Jhc2guaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0LWZpZWxkLXNldHZh
bHVlLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CiAKIGZ1bmN0aW9uIHRlc3QoKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0LWlucHV0LWV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1pbnB1dC1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yMCw4ICsyMCw4IEBAIGZ1bmN0aW9uIHR5cGVJbnRvKGVsZW1lbnQsIHZhbHVlKQogCiBm
dW5jdGlvbiBydW5UZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAg
IGxvZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKICAgICB2YXIgaW5wdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1zZXQtdmFsdWUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHQtc2V0LXZhbHVlLWNyYXNoLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dC1zZXQtdmFsdWUtY3Jh
c2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsOCBAQAogICAgICAgICA8aW5wdXQg
aWQ9InUiIHZhbHVlPSJMb3JlbSBpcHN1bSI+CiAgICAgPC9kaXY+CiAgICAgPHNjcmlwdD4KLSAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiAgICAgICAg
IHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInQiKTsKICAgICAgICAgdmFyIHEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1hbmQtbXV0YXRpb24tZXZlbnRzLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtYW5kLW11dGF0
aW9uLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogPC9zdHlsZT4K
IDxzY3JpcHQ+CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKQogICAgIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEt
YXBwZWFyYW5jZS13cmFwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1hcHBlYXJhbmNlLXdyYXAuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1hcHBlYXJhbmNlLXdyYXAuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcsOSArMTcsOSBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3JlcycpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXMnKS5pbm5lckhUTUwgKyBtc2cgKyAiPGJyPiI7CiB9CiAgICAgCi1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgdW5lc2NhcGVkTGluZVdyYXAgPSB1
bmVzY2FwZSgiJTBEJTBBIik7CkBAIC01OSw4ICs1OSw4IEBAIGlmIChkb2N1bWVudC5VUkwuc3Vi
c3RyaW5nKDAsIDQpID09ICJmaWwKICAgICAgICAgYXNzZXJ0TGluZVdyYXAoIndyYXA9aGFyZCBt
aXhlZCBydGwgYW5kIGx0ciB0ZXh0IiwgdXJsU3RyaW5nLnN1YnN0cmluZyhpbmRleDUsIGluZGV4
NiAtIDEpLCB0cnVlKTsKICAgICAgICAgYXNzZXJ0TGluZVdyYXAoIndyYXA9aGFyZCB2aXNpYmls
aXR5OmhpZGRlbiIsIHVybFN0cmluZy5zdWJzdHJpbmcoaW5kZXg2LCBpbmRleDcgLSAxKSwgdHJ1
ZSk7CiAKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAg
fQogCiB9IGVsc2UgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1hcnJv
dy1uYXZpZ2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1hcnJvdy1uYXZpZ2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtYXJyb3ctbmF2aWdhdGlvbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBAIGZ1bmN0aW9uIGxvZyhzdHIpCiAKIGZ1bmN0aW9uIHJ1
blRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgaWYgKCF3aW5k
b3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdGV4dGFyZWEtY3JsZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdGV4dGFyZWEtY3JsZi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWNybGYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5
LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgdmFyIGVsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CiAg
ICAgICAgICAgICAgICAgZWx0LnZhbHVlID0gIlRoaXNccmlzXHJhXHJ0ZXN0IjsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtZGVmYXVsdC12YWx1ZS1sZWFkaW5nLW5ld2xp
bmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWRl
ZmF1bHQtdmFsdWUtbGVhZGluZy1uZXdsaW5lLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtZGVmYXVsdC12YWx1ZS1sZWFkaW5nLW5ld2xp
bmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdmFyIGVsdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CiAgICAgICAgICAgICAgICAgZWx0LmRlZmF1
bHRWYWx1ZSA9ICJcbnRlc3RpbmciOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0
YXJlYS1oYXJkLWxpbmV3cmFwLWVtcHR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0YXJlYS1oYXJkLWxpbmV3cmFwLWVtcHR5Lmh0bWwJKHJldmlzaW9uIDEy
MDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtaGFyZC1saW5ld3JhcC1l
bXB0eS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw5ICsxMCw5IEBAIEJ1ZyA5NTM3IFJFR1JF
U1NJT046IFJlcHJvZHVjaWJsZSBjcmFzaCAKIDxpbnB1dCB0eXBlPSJzdWJtaXQiPgogPC9mb3Jt
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgd2luZG93LnRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBpZiAoZG9jdW1lbnQuVVJMLmluZGV4T2YoJz8nKSA9
PSAtMSkgewpAQCAtMjQsOCArMjQsOCBAQCBpZiAoZG9jdW1lbnQuVVJMLmluZGV4T2YoJz8nKSA9
PSAtMSkgewogICAgIGVsc2UKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxkaXY+RmFpbHVyZS48
L2Rpdj48ZGl2PkV4cGVjdGVkOiB0ZXh0YXJlYT08L2Rpdj48ZGl2PkFjdHVhbDogIiArIGZvcm1E
YXRhICsgIjwvZGl2PiIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0KIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1saW5ld3JhcC1keW5hbWljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saW5ld3JhcC1keW5hbWljLmh0bWwJKHJldmlzaW9uIDEy
MDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGluZXdyYXAtZHluYW1p
Yy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDkgKzcsOSBAQAogPC9mb3JtPgogPHNjcmlwdD4K
IGlmIChkb2N1bWVudC5VUkwuaW5kZXhPZignPycpID09IC0xKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB3aW5k
b3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICB9CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRh
cmVhIikucmVtb3ZlQXR0cmlidXRlKCJ3cmFwIik7CiAgICAgZG9jdW1lbnQuZi5zdWJtaXQoKTsK
QEAgLTE5LDggKzE5LDggQEAgaWYgKGRvY3VtZW50LlVSTC5pbmRleE9mKCc/JykgPT0gLTEpIHsK
ICAgICAgICAgZG9jdW1lbnQud3JpdGUoIlN1Y2Nlc3MiKTsKICAgICBlbHNlCiAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCJGYWlsdXJlLiAgVGhlIGZvcm0gZGF0YSB0aGF0IHNob3VsZCBoYXZlIGJl
ZW4gc3VibWl0dGVkOiB0ZXh0YXJlYT0xMjM0NTY3ODk8YnI+VGhpcyBpcyB3aGF0IHdhcyBhY3R1
YWxseSBzdWJtaXR0ZWQ6ICIgKyBmb3JtRGF0YSk7ICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB3aW5kb3cudGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbm8tc2Nyb2xsLW9uLWJsdXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLW5vLXNjcm9sbC1vbi1ibHVy
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFy
ZWEtbm8tc2Nyb2xsLW9uLWJsdXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAK
IDxoZWFkPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgICB2YXIgdGEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGEnKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1ub2RlLXJlbW92ZWQtZnJvbS1kb2N1bWVudC1jcmFzaC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbm9kZS1yZW1vdmVkLWZyb20tZG9j
dW1lbnQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90ZXh0YXJlYS1ub2RlLXJlbW92ZWQtZnJvbS1kb2N1bWVudC1jcmFzaC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiIHhtbG5zOnhodD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCi0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpDQorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQog
ICAgICAgICB7DQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
Ow0KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsNCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpDQpAQCAtMTEsOCArMTEsOCBAQAogICAgICAgICAgICAgdmFyIGVsZW1l
bnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygnaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCcsJ2h0bWwnKTsNCiAgICAgICAgICAgICBlbGVtZW50c1swXS50ZXh0Q29udGVu
dCA9ICJQQVNTIjsNCiAgICAgICAgICAgICANCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7DQorICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiAgICAgICAgIH0NCiAgICAgPC9z
Y3JpcHQ+IA0KICAgICA8eGh0Om9iamVjdD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RleHRhcmVhLXBhc3RlLW5ld2xpbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHRhcmVhLXBhc3RlLW5ld2xpbmUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1wYXN0ZS1uZXdsaW5lLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdmFyIHRhID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhIik7CiAgICAgdGEudmFsdWUgPSAiYWJjXG4iOwogICAgIHRhLmZvY3Vz
KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBsYWNlaG9sZGVyLXJl
bGF5b3V0LWFzc2VydGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItcmVsYXlvdXQtYXNzZXJ0aW9uLmh0bWwJKHJldmlzaW9u
IDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXIt
cmVsYXlvdXQtYXNzZXJ0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQgQEAK
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiBmdW5j
dGlvbiByZW1vdmVUZXh0QXJlYSgpIHsKICAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdCcpOwogICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQp
OwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgc2V0VGlt
ZW91dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyIsIDApOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBzZXRUaW1lb3V0KCJ0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsiLCAwKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGxhY2Vob2xkZXItc2V0LWF0dHJpYnV0ZS5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVh
LXBsYWNlaG9sZGVyLXNldC1hdHRyaWJ1dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxNCAr
MywxNCBAQAogZnVuY3Rpb24gZmluaXNoVGVzdCgpCiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RleHRhcmVhJykuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsJ1BsYWNlaG9sZGVy
Jyk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQog
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIHNldFRpbWVvdXQoZmlu
aXNoVGVzdCwgMCk7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEt
c2Nyb2xsYmFyLWhlaWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGV4dGFyZWEtc2Nyb2xsYmFyLWhlaWdodC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXNjcm9sbGJhci1oZWlnaHQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNyw4ICs3LDggQEAgbGkge292ZXJmbG93OmF1dG87fQogPC9zdHlsZT4K
IAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBjaGVja0ZvclZlcnRpY2FsU2Ny
b2xsYmFyKCkgewogICB2YXIgYWN0dWFsX2hlaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsaXN0X2l0ZW0nKS5jbGllbnRIZWlnaHQ7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RleHRhcmVhLXNjcm9sbGVkLWVuZGxpbmUtY2FyZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXNjcm9sbGVkLWVuZGxpbmUtY2FyZXQuaHRtbAko
cmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1zY3Jv
bGxlZC1lbmRsaW5lLWNhcmV0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8
c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgdmFyIHRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhJykKICAgICB2YXIgcmVz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlcycpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3RleHRhcmVhLXNldHZhbHVlLXN1Ym1pdC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtc2V0dmFsdWUtc3VibWl0Lmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtc2V0dmFsdWUt
c3VibWl0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDkgKzEyLDkgQEAKIAogaWYgKGRvY3Vt
ZW50LlVSTC5pbmRleE9mKCc/JykgPT0gLTEpIHsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgd2luZG93LnRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgfQogICAgIAogICAgIHZhciB0ZXh0YXJlYTEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGV4dGFyZWExIik7CkBAIC0zMiw4ICszMiw4IEBAIGlmIChkb2N1bWVudC5VUkwu
aW5kZXhPZignPycpID09IC0xKSB7CiAgICAgZWxzZQogICAgICAgICBkb2N1bWVudC53cml0ZSgi
RmFpbHVyZS4gIFRoZSB2YWx1ZSBzZXQgaW4gdGhlIHRleHRhcmVhIHZpYSBqYXZhc2NyaXB0IHdh
c24ndCBzZW50IHdoZW4gdGhlIGZvcm0gd2FzIHN1Ym1pdHRlZC4gIEV4cGVjdGVkOiAiICsgZXhw
ZWN0ZWQgKyAiLCBGb3VuZDogIiArIGZvcm1EYXRhKTsKICAgICAKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgd2luZG93
LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtc2V0dmFsdWUtd2l0aG91dC1yZW5kZXJlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtc2V0dmFsdWUtd2l0
aG91dC1yZW5kZXJlci5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLXNldHZhbHVlLXdpdGhvdXQtcmVuZGVyZXIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOCw4ICs4LDggQEAgZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkgewogfQogCiBmdW5j
dGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB9CiAK
ICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXN1Ym1pdC1jcmFzaC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtc3VibWl0LWNyYXNoLmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtc3Vi
bWl0LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDkgKzEyLDkgQEAgZnVuY3Rpb24g
bG9nKHMpIHsKIAogKGZ1bmN0aW9uICgpIHsgICAgCiAgICAgaWYgKGRvY3VtZW50LlVSTC5pbmRl
eE9mKCc/JykgPT0gLTEpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgIH0K
IAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGFyZWEiKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOwpAQCAtMjUsNyArMjUsNyBAQCBmdW5jdGlvbiBsb2cocykgewogICAgIGxv
ZygiUEFTUzogWW91IGRpZG4ndCBjcmFzaC4iKTsKICAgICBsb2coIlN1Ym1pdHRlZCBmb3JtIHZh
bHVlOiAiICsgbG9jYXRpb24uc2VhcmNoKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogfSkoKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS10cmFpbGluZy1uZXdsaW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy90ZXh0YXJlYS10cmFpbGluZy1uZXdsaW5lLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysr
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtdHJhaWxpbmctbmV3bGluZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQog
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHZhciB0YSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0YSIpOwogICAgIHRhLmZvY3VzKCk7CiAgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydExpbmVCcmVhayIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS10eXBlLXNwYWNlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdGV4dGFyZWEtdHlwZS1zcGFjZXMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS10eXBlLXNwYWNlcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNyBAQAogPHA+PHRleHRhcmVhIGlkPSJ0YSI+PC90ZXh0YXJlYT48L3A+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB2YXIgdGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGEiKTsKIHRhLmZvY3VzKCk7CiBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRmaWVsZC1kcmFnLWludG8tZGlzYWJsZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRmaWVsZC1kcmFnLWludG8t
ZGlzYWJsZWQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0ZmllbGQtZHJhZy1pbnRvLWRpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3
LDcgKzE3LDcgQEAgdmFyIGZpZWxkWSA9IGZpZWxkLm9mZnNldFRvcCArIGZpZWxkLm9mZgogCiB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0ZXh0LCAwLCB0ZXh0LCAxKTsK
IAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGV4dFgsIHRleHRZKTsKICAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKICAgICAvLyBsZWFwIGZvcndhcmQgc28gbW91c2VEb3du
IHdpbGwga2ljayBvZmYgYSBkcmFnIGluc3RlYWQgb2Ygc3RhcnRpbmcgYSBuZXcgc2VsZWN0aW9u
LgpAQCAtMjYsNyArMjYsNyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZmllbGRYLCBmaWVsZFkpOwogICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB2YXIgcmVzdWx0VGV4dCA9ICJGQUlM
IgogICAgIGlmICghZmllbGQudmFsdWUpCiAgICAgICAgIHJlc3VsdFRleHQgPSAiUEFTUyAtLSBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE3NyI7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRmaWVsZC1mb2N1cy1vdXQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRmaWVsZC1mb2N1cy1vdXQuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0ZmllbGQtZm9jdXMtb3V0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdl
KSB7CiB9CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgCiAgICAgdmFyIGZpZWxkMSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmaWVsZDEiKTsKICAgICB2YXIgZmllbGQyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZpZWxkMiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0Zmll
bGQtaW5zaWRlLWFuY2hvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdGV4dGZpZWxkLWluc2lkZS1hbmNob3IuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0ZmllbGQtaW5zaWRlLWFuY2hvci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC03LDggKzcsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAg
ICAgICAgICB2YXIgdGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGYnKTsKICAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRmaWVsZC1sYXN0Y2hhbmdlLXdhcy11c2VyZWRpdC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGZpZWxkLWxhc3RjaGFuZ2Utd2FzLXVzZXJl
ZGl0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4
dGZpZWxkLWxhc3RjaGFuZ2Utd2FzLXVzZXJlZGl0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEw
LDcgKzEwLDcgQEAgSFRNTFRleHRBcmVhRWxlbWVudC5sYXN0Q2hhbmdlV2FzVXNlckVkaQogPGlu
cHV0IHR5cGU9InRleHQiPjx0ZXh0YXJlYT48L3RleHRhcmVhPgogPHNjcmlwdD4KIAotaWYgKCF3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5pbnRlcm5hbHMpCitpZiAoIXdp
bmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuaW50ZXJuYWxzKQogICAgIHRlc3RGYWlsZWQoJ1Ro
aXMgdGVzdCByZXF1aXJlcyBhY2Nlc3MgdG8gd2luZG93LmludGVybmFscycpOwogCiB2YXIgdGV4
dEZpZWxkOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0ZmllbGQtbm8tbGluZWJy
ZWFrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0ZmllbGQt
bm8tbGluZWJyZWFrLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdGV4dGZpZWxkLW5vLWxpbmVicmVhay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDcg
KzgsNyBAQCBvbmtleXByZXNzID0gZnVuY3Rpb24oZSkgewogfQogCiBvbmxvYWQgPSBmdW5jdGlv
bigpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiXG4iKTsKIH0KIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0ZmllbGQtb25jaGFuZ2Ut
ZGVsZXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRm
aWVsZC1vbmNoYW5nZS1kZWxldGlvbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHRmaWVsZC1vbmNoYW5nZS1kZWxldGlvbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+DQogPHNjcmlwdD4NCiAgICAgZnVuY3Rpb24g
dGVzdCgpIHsNCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7DQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
DQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQogICAgICAgICB9DQog
ICAgICAgICBzZXRUaW1lb3V0KHRlc3QyLCAwKTsNCiAgICAgfQ0KQEAgLTExLDggKzExLDggQEAK
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RmJykuZm9jdXMoKTsNCiAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsNCiAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
IlxyIiwgbnVsbCk7DQotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0K
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsNCiAgICAgfQ0KICAgICBmdW5jdGlvbiB0ZXN0MygpDQogICAgIHsNCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRmaWVsZC1vdXRsaW5lLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0ZmllbGQtb3V0bGluZS5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRmaWVsZC1vdXRsaW5lLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHZh
ciB0ZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZicpOwogICAgICAgICAgICAgdGYuZm9j
dXMoKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmtleURvd24oImEiKTsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3du
KCJiIik7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiYyIpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0ZmllbGQtdG8tcGFzc3dvcmQtb24tZm9jdXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRmaWVsZC10by1wYXNz
d29yZC1vbi1mb2N1cy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRmaWVsZC10by1wYXNzd29yZC1vbi1mb2N1cy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0zLDkgKzMsOSBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24g
Y2hhbmdlVG9QYXNzd29yZEZpZWxkKHRleHRGaWVsZCkKQEAgLTE1LDcgKzE1LDcgQEAgZnVuY3Rp
b24gY2hhbmdlVG9QYXNzd29yZEZpZWxkKHRleHRGaWVsZAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CiAgICAgICAgIHZhciBmaWVsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmaWVsZCIpLmZvY3VzKCk7CiAKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicCIpOwpA
QCAtMjYsNyArMjYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgc2hvdWxkQmUoJ2ZpZWxk
LnZhbHVlJywgIidwYXNzJyIpOwogICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwogCi0g
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGlucHV0LW5vdC1maXJlZC1vbi1lbnRlci1p
bi1pbnB1dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGlu
cHV0LW5vdC1maXJlZC1vbi1lbnRlci1pbi1pbnB1dC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRpbnB1dC1ub3QtZmlyZWQtb24tZW50ZXItaW4t
aW5wdXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTQgKzQwLDE0IEBAIGZvcm0uYWRkRXZl
bnRMaXN0ZW5lcignc3VibWl0JywgZnVuY3Rpb24KICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogfSk7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBlbC5mb2N1cygpOwogaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgewogICAgIGxvZygnXG5TZW5kaW5nIEVudGVyIHRvIGlucHV0IGVsZW1lbnQnKTsKICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCdccicsIFtdKTsKLX0gZWxzZSBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorfSBlbHNlIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICBsb2co
J1RoaXMgdGVzdCByZXF1aXJlcyBldmVudFNlbmRlciB0byBydW4gaW4gTGF5b3V0VGVzdHMuJyk7
CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90eXBlLWFmdGVyLWZv
Y3VzLXJ1bGUtc2hyaW5rLXdpZHRoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy90eXBlLWFmdGVyLWZvY3VzLXJ1bGUtc2hyaW5rLXdpZHRoLmh0bWwJKHJldmlzaW9u
IDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdHlwZS1hZnRlci1mb2N1cy1ydWxl
LXNocmluay13aWR0aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxOCArMjAsMTggQEAgdmFy
IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbQogZnVuY3Rpb24gdHlwZVRleHQo
KSB7CiAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcsIGZhbHNlLCBudWxsKTsK
ICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnUEFTUycpOwot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICAgICAgaW5wdXQucGFyZW50Tm9kZS5pbm5lckhUTUwgPSBpbnB1dC52
YWx1ZTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgZG9jdW1lbnQud3JpdGUoJ1Ro
aXMgdGVzdCByZXF1aXJlcyBldmVudFNlbmRlcicpOwogICAgIGVsc2UgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogCiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGlucHV0Lm9m
ZnNldExlZnQgKyBpbnB1dC5vZmZzZXRXaWR0aCAqIDIgLyAzLCBpbnB1dC5vZmZzZXRUb3AgKyBp
bnB1dC5vZmZzZXRIZWlnaHQgLyAyKTsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5n
LWVkaXRpbmctY3Jhc2gtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdXBkYXRlLWZyb20tZWxlbWVudC1kdXJpbmctZWRpdGluZy1jcmFzaC0xLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZyb20tZWxlbWVu
dC1kdXJpbmctZWRpdGluZy1jcmFzaC0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsOCArNyw4
IEBACiA8cCBpZD0iY29udGFpbmVyIj48dGV4dGFyZWE+PC90ZXh0YXJlYT48L3A+CiA8c2NyaXB0
PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIHRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3RleHRhcmVhJylbMF07CiB0ZXh0YXJlYS5mb2N1cygpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZnJvbS1lbGVtZW50LWR1cmluZy1lZGl0aW5nLWNyYXNo
LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mcm9t
LWVsZW1lbnQtZHVyaW5nLWVkaXRpbmctY3Jhc2gtMi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mcm9tLWVsZW1lbnQtZHVyaW5nLWVkaXRp
bmctY3Jhc2gtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQCBkaXYgKyAqIHt9
CiA8L3RleHRhcmVhPjwvcD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgdGV4dGFy
ZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGV4dGFyZWEnKVswXTsKIHRleHRh
cmVhLmZvY3VzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVz
c2FnZS1hcHBlYXJhbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy92YWxpZGF0aW9uLW1lc3NhZ2UtYXBwZWFyYW5jZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2FnZS1hcHBlYXJhbmNlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDkgKzE0LDkgQEAKIAogPHNjcmlwdD4KIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzdWJtaXQnKS5jbGljaygpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7IH0sIDEwKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOyB9LCAxMCk7CiB9CiA8L3NjcmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy92YWxpZGF0aW9uLW1lc3NhZ2UtY2xvbmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2FnZS1jbG9uZS5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2Fn
ZS1jbG9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4ICsxOCw4IEBAIHZhciBsYXN0SW5P
cmlnaW5hbFNoYWRvdzsKIHZhciBsYXN0SW5DbG9uZWRTaGFkb3c7CiAkKCdzdWJtaXQnKS5jbGlj
aygpOwogc2V0VGltZW91dChjbG9uZUVsZW1lbnRXaXRoVmFsaWRhdGlvbk1lc3NhZ2UsIDApOwot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiAKIGZ1bmN0aW9uIGNsb25lRWxlbWVudFdpdGhWYWxpZGF0aW9u
TWVzc2FnZSgpIHsKICAgICAkKCdkZXN0JykuYXBwZW5kQ2hpbGQob3JpZ2luYWwuY2xvbmVOb2Rl
KCkpOwpAQCAtMjcsMTQgKzI3LDE0IEBAIGZ1bmN0aW9uIGNsb25lRWxlbWVudFdpdGhWYWxpZGF0
aW9uTWVzc2EKIH0KIAogZnVuY3Rpb24gY29uZmlybU5vQnViYmxlKCkgewotICAgIGlmICghd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGxhc3RJbk9yaWdpbmFsU2hhZG93ID0gaW50ZXJuYWxzLnNo
YWRvd1Jvb3Qob3JpZ2luYWwpLmxhc3RDaGlsZDsKICAgICBzaG91bGRCZVRydWUoJ2ludGVybmFs
cy5zaGFkb3dQc2V1ZG9JZChsYXN0SW5PcmlnaW5hbFNoYWRvdykgPT0gIi13ZWJraXQtdmFsaWRh
dGlvbi1idWJibGUiJyk7CiAgICAgbGFzdEluQ2xvbmVkU2hhZG93ID0gaW50ZXJuYWxzLnNoYWRv
d1Jvb3QoJCgnZGVzdCcpLmZpcnN0Q2hpbGQpLmxhc3RDaGlsZDsKICAgICBzaG91bGRCZUZhbHNl
KCdpbnRlcm5hbHMuc2hhZG93UHNldWRvSWQobGFzdEluQ2xvbmVkU2hhZG93KSA9PSAiLXdlYmtp
dC12YWxpZGF0aW9uLWJ1YmJsZSInKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92YWxpZGF0aW9uLW1lc3NhZ2UtaW4tcmVsYXRpdmUt
Ym9keS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmFsaWRhdGlv
bi1tZXNzYWdlLWluLXJlbGF0aXZlLWJvZHkuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy92YWxpZGF0aW9uLW1lc3NhZ2UtaW4tcmVsYXRpdmUtYm9keS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHZhciBob3N0ID0gJCgnaG9zdCcp
OwogdmFyIGhvc3RSZWN0OwogdmFyIGJ1YmJsZVJlY3Q7CiAkKCdzdWJtaXQnKS5jbGljaygpOwot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiAgICAgc2V0VGltZW91dChjaGVjaywgMCk7CiB9IGVsc2UgewogICAgIGRlYnVnKCdTdWJt
aXQgdGhlIGZvcm0sIGFuZCBjaGVjayBpZiB0aGUgdmFsaWRhdGlvbiBidWJibGUgaXMgb24gdGhl
IHRleHQgZmllbGQuJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24t
bWVzc2FnZS1vbi1jaGVja2JveC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdmFsaWRhdGlvbi1tZXNzYWdlLW9uLWNoZWNrYm94Lmh0bWwJKHJldmlzaW9uIDEyMDkw
MykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmFsaWRhdGlvbi1tZXNzYWdlLW9uLWNoZWNr
Ym94Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQCB2YXIgaG9zdCA9ICQo
J2hvc3QnKTsKIHZhciBob3N0UmVjdDsKIHZhciBidWJibGVSZWN0OwogJCgnc3VibWl0JykuY2xp
Y2soKTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgewogICAgIHNldFRpbWVvdXQoY2hlY2ssIDApOwogfSBlbHNlIHsKLSAgICBkZWJ1
ZygnVGhlIHRlc3QgcmVxdWlyZXMgbGF5b3V0VGVzdENvbnRyb2xsZXIuJyk7CisgICAgZGVidWco
J1RoZSB0ZXN0IHJlcXVpcmVzIHRlc3RSdW5uZXIuJyk7CiB9CiAKIHZhciBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmFsaWRhdGlvbi1tZXNzYWdl
LW9uLWxpc3Rib3guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zh
bGlkYXRpb24tbWVzc2FnZS1vbi1saXN0Ym94Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdmFsaWRhdGlvbi1tZXNzYWdlLW9uLWxpc3Rib3guaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBAIHZhciBob3N0ID0gJCgnaG9zdCcpOwog
dmFyIGhvc3RSZWN0OwogdmFyIGJ1YmJsZVJlY3Q7CiAkKCdzdWJtaXQnKS5jbGljaygpOwotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgc2V0VGltZW91dChjaGVjaywgMCk7CiB9IGVsc2UgewotICAgIGRlYnVnKCdUaGUgdGVz
dCByZXF1aXJlcyBsYXlvdXRUZXN0Q29udHJvbGxlci4nKTsKKyAgICBkZWJ1ZygnVGhlIHRlc3Qg
cmVxdWlyZXMgdGVzdFJ1bm5lci4nKTsKIH0KIAogdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92YWxpZGF0aW9uLW1lc3NhZ2Utb24tbWVudWxp
c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24t
bWVzc2FnZS1vbi1tZW51bGlzdC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2FnZS1vbi1tZW51bGlzdC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgdmFyIGhvc3RSZWN0OwogdmFyIGJ1YmJsZVJlY3Q7
CiBob3N0LnNldEN1c3RvbVZhbGlkaXR5KCdUZXN0aW5nIGEgbG9uZyB2YWxpZGF0aW9uIG1lc3Nh
Z2UgaW4gb3JkZXIgdG8gY2hlY2sgd2hpdGUtc3BhY2U6cHJlIGluIHRoZSBVQSBzdHlsZXNoZWV0
IGRvZXMgbm90IGFmZmVjdCB0byB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlIGFwcGVhcmFuY2UuJyk7
CiAkKCdzdWJtaXQnKS5jbGljaygpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgc2V0VGltZW91dChjaGVjaywgMCk7CiB9
IGVsc2UgewotICAgIGRlYnVnKCdUaGUgdGVzdCByZXF1aXJlcyBsYXlvdXRUZXN0Q29udHJvbGxl
ci4nKTsKKyAgICBkZWJ1ZygnVGhlIHRlc3QgcmVxdWlyZXMgdGVzdFJ1bm5lci4nKTsKIH0KIAog
dmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92
YWxpZGF0aW9uLW1lc3NhZ2Utb24tcmFkaW8uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2FnZS1vbi1yYWRpby5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2FnZS1vbi1y
YWRpby5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTAgQEAgdmFyIGhvc3QgPSAk
KCdob3N0Jyk7CiB2YXIgaG9zdFJlY3Q7CiB2YXIgYnViYmxlUmVjdDsKICQoJ3N1Ym1pdCcpLmNs
aWNrKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICBzZXRUaW1lb3V0KGNoZWNrLCAwKTsKIH0gZWxzZSB7Ci0gICAgZGVi
dWcoJ1RoZSB0ZXN0IHJlcXVpcmVzIGxheW91dFRlc3RDb250cm9sbGVyLicpOworICAgIGRlYnVn
KCdUaGUgdGVzdCByZXF1aXJlcyB0ZXN0UnVubmVyLicpOwogfQogCiB2YXIganNUZXN0SXNBc3lu
YyA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVzc2Fn
ZS1vbi1yYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmFs
aWRhdGlvbi1tZXNzYWdlLW9uLXJhbmdlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdmFsaWRhdGlvbi1tZXNzYWdlLW9uLXJhbmdlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEwICsyOCwxMCBAQCB2YXIgaG9zdFJlY3Q7CiB2YXIgYnViYmxlUmVj
dDsKIGhvc3Quc2V0Q3VzdG9tVmFsaWRpdHkoJ0ludmFsaWQgVmFsdWUnKTsKICQoJ3N1Ym1pdCcp
LmNsaWNrKCk7Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKICAgICBzZXRUaW1lb3V0KGNoZWNrLCAwKTsKIH0gZWxzZSB7Ci0gICAg
ZGVidWcoJ1RoZSB0ZXN0IHJlcXVpcmVzIGxheW91dFRlc3RDb250cm9sbGVyLicpOworICAgIGRl
YnVnKCdUaGUgdGVzdCByZXF1aXJlcyB0ZXN0UnVubmVyLicpOwogfQogCiB2YXIganNUZXN0SXNB
c3luYyA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVz
c2FnZS1vbi10ZXh0YXJlYS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdmFsaWRhdGlvbi1tZXNzYWdlLW9uLXRleHRhcmVhLmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmFsaWRhdGlvbi1tZXNzYWdlLW9uLXRleHRhcmVh
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQCB2YXIgaG9zdCA9ICQoJ2hv
c3QnKTsKIHZhciBob3N0UmVjdDsKIHZhciBidWJibGVSZWN0OwogJCgnc3VibWl0JykuY2xpY2so
KTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgewogICAgIHNldFRpbWVvdXQoY2hlY2ssIDApOwogfSBlbHNlIHsKLSAgICBkZWJ1Zygn
VGhlIHRlc3QgcmVxdWlyZXMgbGF5b3V0VGVzdENvbnRyb2xsZXIuJyk7CisgICAgZGVidWcoJ1Ro
ZSB0ZXN0IHJlcXVpcmVzIHRlc3RSdW5uZXIuJyk7CiB9CiAKIHZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmFyLW5hbWUtY29uZmxpY3QtaW4t
Zm9ybS1ldmVudC1oYW5kbGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy92YXItbmFtZS1jb25mbGljdC1pbi1mb3JtLWV2ZW50LWhhbmRsZXIuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92YXItbmFtZS1jb25mbGljdC1p
bi1mb3JtLWV2ZW50LWhhbmRsZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOCBA
QCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgaXRlbXMgb2YgZm9ybS4KIDxkaXYgaWQ9J3NvdXJjZVZp
ZXdEaXYnPlRoaXMgdGVzdDogRkFJTEVEPC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB2
YXIgeD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMF07CiB4Lm9wdGlv
bnNbMl0uc2VsZWN0ZWQ9dHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMveHNzLWF1
ZGl0b3ItZG9lc250LWNyYXNoLW9uLXBvc3Qtc3VibWl0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy94c3MtYXVkaXRvci1kb2VzbnQtY3Jhc2gtb24tcG9zdC1zdWJt
aXQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy94c3Mt
YXVkaXRvci1kb2VzbnQtY3Jhc2gtb24tcG9zdC1zdWJtaXQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNSwxMCArNSwxMCBAQAogICAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT09ICcjc3VibWl0dGVkJykgewotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKQotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0WFNTQXVkaXRvckVuYWJs
ZWQodHJ1ZSkKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZm9ybScpOwpAQCAtMTYsOCArMTYsOCBAQAogICAgICAgICAgICAgZm9ybS5zdWJtaXQo
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ05vIGFzc2VydGlv
bnMgcmFpc2VkLicpOwotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWNyYXNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1jcmFz
aC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxk
c2V0L2ZpZWxkc2V0LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8
aHRtbD4KIFRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLgogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiBmdW5jdGlvbiBvbmxvYWRIYW5kbGVyKCkKIHsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZmlsZS9kaXNhYmxpbmctZmlsZS1idXN5LWxvb3AuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZGlzYWJsaW5nLWZpbGUtYnVzeS1sb29w
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9k
aXNhYmxpbmctZmlsZS1idXN5LWxvb3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDgg
QEAKIDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iZmlsZVVwbG9hZCI+CiA8ZGl2IGlkPWNvbnNvbGU+
PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZmlsZVVwbG9hZCcpLmRpc2FibGVkID0gdHJ1ZTsKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJykuaW5uZXJUZXh0ID0gJ1BBU1MgaWYgdGhpcyB0ZXh0IGlzIHZpc2libGUuJzsKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2ZpbGUtaW5wdXQtY2hh
bmdlLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxl
L2ZpbGUtaW5wdXQtY2hhbmdlLWV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9maWxlLWlucHV0LWNoYW5nZS1ldmVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBAIHZhciBjaGFuZ2VEaXNwYXRjaGVkOwogCiBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgY29uZGl0aW9uIHRoYXQgdHJpZ2dlcnMgYSAnY2hhbmdl
JyBldmVudCBvbiBmaWxlIGlucHV0IGZvcm1zLiIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB2YXIgc2luZ2xlRmls
ZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpbmdsZUZpbGUiKTsKICAgICB2YXIg
bXVsdGlwbGVGaWxlc0lucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlRmls
ZXMiKTsKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2ZpbGUtaW5wdXQtaGl0
LXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZmls
ZS1pbnB1dC1oaXQtdGVzdC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1dC1oaXQtdGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC04LDggKzgsOCBAQCBUbyBtYW51YWxseSB0ZXN0IHRoaXMsIGNsaWNrIG9uIHRoZSBibGFjCiA8
L2Rpdj4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2lu
ZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTgw
LCA1MCk7CiAgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMjAwKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmlsZS9maWxlLWlucHV0LXByZXNzZWQtc3RhdGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1dC1wcmVzc2VkLXN0
YXRlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmls
ZS9maWxlLWlucHV0LXByZXNzZWQtc3RhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsy
LDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOyAvLyBE
dW1wIHBpeGVsIHRlc3QgcmVzdWx0LgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsgLy8gRHVtcCBwaXhlbCB0ZXN0IHJlc3VsdC4KIDwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUv
ZmlsZS1pbnB1dC1yZXNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvZmlsZS9maWxlLWlucHV0LXJlc2V0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9maWxlLWlucHV0LXJlc2V0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE1LDcgKzE1LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgY2hvb3NlIGEg
ZmlsZQogSWYgdGhlIGxhYmVsIG5leHQgdG8gdGhlIGZpbGUgY2hvb3NlciBidXR0b24gY2hhbmdl
cyB0byAiTm8gZmlsZSBjaG9zZW4iLCB0aGUgdGVzdCBwYXNzZXMuCiA8L3A+CiA8c2NyaXB0Pgot
aWYgKGxheW91dFRlc3RDb250cm9sbGVyICYmIGV2ZW50U2VuZGVyKSB7CitpZiAodGVzdFJ1bm5l
ciAmJiBldmVudFNlbmRlcikgewogICAgIHZhciBmaWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImZpbGUiKTsKICAgICB2YXIgcmVzZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
ZXQiKTsKICAgICBkcmFnRmlsZXNPbnRvRWxlbWVudChmaWxlLCBbImZvby50eHQiXSk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZ2V0LWZpbGUtdXBsb2FkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2dldC1maWxlLXVwbG9hZC5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvZ2V0LWZp
bGUtdXBsb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDggQEAgZnVuY3Rpb24g
c3RhcnRPclZlcmlmeSgpCiAgICAgICAgICAgICBsb2coJ1BBU1M6ICcgKyBxdWVyeSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGxvZygnRkFJTDogJyArIHF1ZXJ5KTsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBT
dGFydCB0aGUgdGVzdAogICAgICAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWydn
ZXQtZmlsZS11cGxvYWQuaHRtbCddKTsKQEAgLTM0LDcgKzM0LDcgQEAgZnVuY3Rpb24gc3RhcnRP
clZlcmlmeSgpCiB9CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgICAgd2luZG93Lm9ubG9hZCA9IHN0YXJ0T3JWZXJpZnk7CiB9CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLWRpcmVjdG9yeS11cGxv
YWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQt
ZmlsZS1kaXJlY3RvcnktdXBsb2FkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLWRpcmVjdG9yeS11cGxvYWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNTIsOCArNTIsOCBAQCBmdW5jdGlvbiBvbklucHV0RmlsZUNoYW5nZShj
dXJyZW50RmlsZUxpCiAgICAgICAgICAgICBsb2coIlBBU1M6IG5hbWUgaXMgIiArIGZpbGVzW2ld
Lm5hbWUgKyAiOyBwYXRoIGlzICIgKyBmaWxlc1tpXS53ZWJraXRSZWxhdGl2ZVBhdGgpOwogICAg
IH0KIAotICAgaWYgKGxhc3RUZXN0ICYmIGxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICBpZiAobGFzdFRlc3QgJiYgdGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICBlbHNlCiAgICAg
ICAgIGxvZygiIik7CiB9CkBAIC02OCw5ICs2OCw5IEBAIGZ1bmN0aW9uIGRvVGVzdChmaWxlTGlz
dCwgbGFzdCkKICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CiB9CiAKLWlmIChsYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAodGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogCiBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1lbnRyaWVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtZW50cmllcy5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1l
bnRyaWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgdmFyIGV4cGVjdGVk
RmlsZUF0dHJpYnV0ZXMgPSB7CiB2YXIgZHJvcHBlZEVudHJpZXMsIHZlcmlmeWluZ0VudHJ5LCBy
ZXR1cm5lZE1ldGFkYXRhLCByZXR1cm5lZEVudHJpZXM7CiAKIHZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICBkb1Rlc3QoMCk7CiB9CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLWxhYmVsLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtbGFiZWwuaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2lucHV0
LWZpbGUtbGFiZWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogPHA+VGhp
cyB0ZXN0cyB0aGUgbGFiZWwgb2YgYSBmaWxlIGNob29zZXIgYnV0dG9uLjwvcD4KIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHZhciBmaWxlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3NpbmdsZV9maWxlJyk7CiAgICAgdmFyIGJ1dHRvbiA9IGludGVybmFs
cy5zaGFkb3dSb290KGZpbGUpLmZpcnN0Q2hpbGQ7CiAgICAgdmFyIGxhYmVsID0gYnV0dG9uLmdl
dEF0dHJpYnV0ZSgndmFsdWUnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9p
bnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2VzdHVyZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLW5vdC1vcGVuLXdpdGhvdXQtZ2Vz
dHVyZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zp
bGUvaW5wdXQtZmlsZS1ub3Qtb3Blbi13aXRob3V0LWdlc3R1cmUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMiw5ICsyLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGNvbnN0IElOSVRJQUw9IDA7CiBjb25zdCBPUEVO
X0ZJTEVfV0lUSE9VVF9HRVNUVVJFID0gMTsKQEAgLTM4LDEyICszOCwxMiBAQCBmdW5jdGlvbiBv
cGVuRmlsZURpYWxvZ1dpdGhvdXRVc2VyR2VzdHVyCiAgICAgICAgIGNsaWNrRmlyZWQgPSB0cnVl
OwogICAgICAgICB0ZXN0U3RhZ2UgPSBPUEVOX0ZJTEVfV0lUSE9VVF9HRVNUVVJFOwogICAgICAg
ICAvLyBXYWl0cyBmb3Igb3BlbmluZyB0aGUgZmlsZSBkaWFsb2cgYW5kIGNoZWNrcyB3aGV0aGVy
IHRoZSBjbGljayBldmVudCBjYW4gc3RpbGwgYmUgcmVjZWl2ZWQgYnkgZG9jdW1lbnQuCi0gICAg
ICAgIHNldFRpbWVvdXQoImNoZWNrUmVzdWx0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7IH0pIiwgNTAwKTsKKyAgICAgICAgc2V0VGltZW91dCgiY2hlY2tS
ZXN1bHQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyB9KSIsIDUwMCk7CiAg
ICAgfSwgMSk7CiB9CiAKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKLSAgICBpZiAoIXdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAg
ICByZXR1cm47CiAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1
bmN0aW9uKCkgeyB3aW5kb3cuY2xpY2tSZWNlaXZlZCA9IHRydWUgfSwgdHJ1ZSk7CiAgICAgc2V0
VGltZW91dChvcGVuRmlsZURpYWxvZ1dpdGhvdXRVc2VyR2VzdHVyZSwgMSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1yZS1yZW5kZXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS1yZS1yZW5kZXIu
aHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL2lu
cHV0LWZpbGUtcmUtcmVuZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEyICsyMywxMiBA
QCBmdW5jdGlvbiBzdGFydFRlc3QoKQogICAgIC8vIEF0dGFjaCBhIHJlbmRlcmVyIGFnYWluLgog
ICAgIGlucHV0LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJzsKIAotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0KIAogaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgIHdpbmRvdy5vbmxvYWQgPSBzdGFy
dFRlc3Q7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvaW5wdXQtZmlsZS13cml0ZS1maWxlcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLXdyaXRl
LWZpbGVzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZmlsZS9pbnB1dC1maWxlLXdyaXRlLWZpbGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDggQEAgZnVuY3Rpb24gb25JbnB1dEZpbGVDaGFuZ2UoKQogCiAgICAgZG9TdHJpbmdUZXN0
KCk7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gaGFuZGxl
RHJhZ092ZXIoZSkgewpAQCAtNzEsOSArNzEsOSBAQCBmdW5jdGlvbiBkb1N0cmluZ1Rlc3QoKQog
ICAgICAgICBsb2coIkZBSUw6IHdyaXRpbmcgZW1wdHkgc3RyaW5nIHRvIHZhbHVlIGRpZCBub3Qg
Y2xlYXIgZmlsZXMiKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWxlL3JlY292ZXItZmlsZS1pbnB1dC1pbi11bnBvc3RlZC1mb3JtLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWxlL3JlY292ZXItZmlsZS1pbnB1dC1p
bi11bnBvc3RlZC1mb3JtLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmlsZS9yZWNvdmVyLWZpbGUtaW5wdXQtaW4tdW5wb3N0ZWQtZm9ybS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgdGhl
IHN0YXRlIG9mIGEgZmkKIC8vIC0gQ2hlY2sgdGhlIGZvcm0gZGF0YS4KIAogZnVuY3Rpb24gdGVz
dCgpIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGRvY3VtZW50LmxvY2F0
aW9uLnNlYXJjaCA9PSAiIiAmJiB3aW5kb3cubmFtZSA9PSAiIikgewogICAgICAgICAvLyBTdGFy
dCBvZiB0aGUgdGVzdC4gU2V0IHRoZSB2YWx1ZXMgdG8gdGhlIGlucHV0IGVsZW1lbnRzLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vYWR2YW5jZWQtZ2V0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vYWR2YW5jZWQtZ2V0Lmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2FkdmFu
Y2VkLWdldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogICAgICAgICA8dGl0
bGU+YWN0aW9uPSJtYWlsdG8iIEdFVCBtZXRob2Q8L3RpdGxlPgogICAgICAgICA8c2NyaXB0Pgog
ICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsKLSAgICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKKyAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpWzBdLnN1Ym1pdCgpOwog
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL21haWx0by9hZHZhbmNlZC1wdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL21haWx0by9hZHZhbmNlZC1wdXQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vYWR2YW5jZWQtcHV0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTQsOSArNCw5IEBACiAgICAgICAgIDx0aXRsZT5hY3Rpb249Im1haWx0byIgUFVU
IG1ldGhvZDwvdGl0bGU+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICBmdW5jdGlvbiB0
ZXN0KCkgewotICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgp
OworICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJmb3JtIilbMF0uc3VibWl0KCk7CiAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2Zvcm1lbmN0eXBl
LWF0dHJpYnV0ZS1idXR0b24taHRtbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvbWFpbHRvL2Zvcm1lbmN0eXBlLWF0dHJpYnV0ZS1idXR0b24taHRtbC5odG1sCShy
ZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9mb3JtZW5j
dHlwZS1hdHRyaWJ1dGUtYnV0dG9uLWh0bWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSAr
MTMsOSBAQCBMaW5lIDIKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdEZvclBvbGlj
eURlbGVnYXRlKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxl
Z2F0ZSgpOwogICAgIH0KICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0IikuY2xp
Y2soKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2Zvcm1lbmN0eXBl
LWF0dHJpYnV0ZS1pbnB1dC1odG1sLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9tYWlsdG8vZm9ybWVuY3R5cGUtYXR0cmlidXRlLWlucHV0LWh0bWwuaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vZm9ybWVuY3R5
cGUtYXR0cmlidXRlLWlucHV0LWh0bWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSArMTMs
OSBAQCBMaW5lIDIKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdEZvclBvbGljeURl
bGVnYXRlKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0
ZSgpOwogICAgIH0KICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0IikuY2xpY2so
KTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2dldC1tdWx0aXBsZS1p
dGVtcy10ZXh0LXBsYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9tYWlsdG8vZ2V0LW11bHRpcGxlLWl0ZW1zLXRleHQtcGxhaW4uaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vZ2V0LW11bHRpcGxlLWl0ZW1z
LXRleHQtcGxhaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw5ICs4LDkgQEAgTGluZSAyCiA8
L2Zvcm0+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKKyAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiZm9ybSIpWzBdLnN1Ym1pdCgpOwogICB9CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL21haWx0by9nZXQtbXVsdGlwbGUtaXRlbXMteC13d3ctZm9ybS11cmxl
bmNvZGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8v
Z2V0LW11bHRpcGxlLWl0ZW1zLXgtd3d3LWZvcm0tdXJsZW5jb2RlZC5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9nZXQtbXVsdGlwbGUtaXRl
bXMteC13d3ctZm9ybS11cmxlbmNvZGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOSArNiw5
IEBAIEZpZWxkIDI6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxMCIgbWEKIDwvZm9ybT4KIDxz
Y3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOworICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJmb3JtIilbMF0uc3VibWl0KCk7CiAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvbWFpbHRvL2dldC1tdWx0aXBsZS1pdGVtcy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2dldC1tdWx0aXBsZS1pdGVtcy5odG1sCShyZXZpc2lv
biAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9nZXQtbXVsdGlwbGUt
aXRlbXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAgRmllbGQgMjogPGlucHV0
IHR5cGU9InRleHQiIHNpemU9IjEwIiBtYQogPGRpdj5FeHBlY3RlZCByZXN1bHRzIHdoZW4gY2xp
Y2tpbmcgIlNlbmQiIGJ1dHRvbjogIEEgbmV3IG1haWwgbWVzc2FnZSBpcyBjcmVhdGVkIHdpdGgg
YW4gZW1wdHkgYm9keS48L2Rpdj4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xpY3lEZWxl
Z2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOwogICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF0uc3VibWl0KCk7CiAgIH0KIH0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2dldC1ub24tYXNjaWktYWx3YXlz
LXV0Zi04Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8v
Z2V0LW5vbi1hc2NpaS1hbHdheXMtdXRmLTguaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vZ2V0LW5vbi1hc2NpaS1hbHdheXMtdXRmLTguaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAKIDwvZm9ybT4KIDxzY3JpcHQ+CiBmdW5j
dGlvbiB0ZXN0KCkgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xp
Y3lEZWxlZ2F0ZSgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilb
MF0uc3VibWl0KCk7CiAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRv
L2dldC1ub24tYXNjaWktdGV4dC1wbGFpbi1sYXRpbi0xLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vZ2V0LW5vbi1hc2NpaS10ZXh0LXBsYWluLWxhdGlu
LTEuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWls
dG8vZ2V0LW5vbi1hc2NpaS10ZXh0LXBsYWluLWxhdGluLTEuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNyw5ICs3LDkgQEAKIDwvZm9ybT4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOwogICAg
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF0uc3VibWl0KCk7CiAgIH0K
IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2dldC1ub24tYXNjaWktdGV4
dC1wbGFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRv
L2dldC1ub24tYXNjaWktdGV4dC1wbGFpbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9nZXQtbm9uLWFzY2lpLXRleHQtcGxhaW4uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAKIDwvZm9ybT4KIDxzY3JpcHQ+CiBmdW5jdGlv
biB0ZXN0KCkgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF0u
c3VibWl0KCk7CiAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2dl
dC1ub24tYXNjaWkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21h
aWx0by9nZXQtbm9uLWFzY2lpLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvbWFpbHRvL2dldC1ub24tYXNjaWkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Nyw5ICs3LDkgQEAKIDwvZm9ybT4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xpY3lEZWxl
Z2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOwogICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF0uc3VibWl0KCk7CiAgIH0KIH0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL2dldC1vdmVyd3JpdGUtcXVlcnku
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9nZXQtb3Zl
cndyaXRlLXF1ZXJ5Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvbWFpbHRvL2dldC1vdmVyd3JpdGUtcXVlcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Niw5ICs2LDkgQEAKIDxkaXY+RXhwZWN0ZWQgcmVzdWx0cyB3aGVuIGNsaWNraW5nICJTZW5kIiBi
dXR0b246ICBBIG5ldyBtYWlsIG1lc3NhZ2UgaXMgY3JlYXRlZCB3aXRoIGFuIGVtcHR5IGJvZHks
IGFuZCB0d28gYWRkcmVzc2Vlcy48L2Rpdj4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewot
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xp
Y3lEZWxlZ2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF0uc3VibWl0KCk7CiAg
IH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3QtYXBwZW5kLXF1
ZXJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vcG9z
dC1hcHBlbmQtcXVlcnkuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9tYWlsdG8vcG9zdC1hcHBlbmQtcXVlcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Niw5ICs2LDkgQEAKIDxkaXY+RXhwZWN0ZWQgcmVzdWx0cyB3aGVuIGNsaWNraW5nICJTZW5kIiBi
dXR0b246ICBBIG5ldyBtYWlsIG1lc3NhZ2UgaXMgY3JlYXRlZCB3aXRoIGFuIGVtcHR5IGJvZHks
IGFuZCB0d28gYWRkcmVzc2Vlcy48L2Rpdj4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewot
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xp
Y3lEZWxlZ2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF0uc3VibWl0KCk7CiAg
IH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3QtbXVsdGlwbGUt
aXRlbXMtbXVsdGlwYXJ0LWZvcm0tZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3QtbXVsdGlwbGUtaXRlbXMtbXVsdGlwYXJ0LWZvcm0tZGF0
YS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0
by9wb3N0LW11bHRpcGxlLWl0ZW1zLW11bHRpcGFydC1mb3JtLWRhdGEuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOCw5ICs4LDkgQEAgTGluZSAyCiA8L2Zvcm0+CiA8c2NyaXB0PgogZnVuY3Rpb24g
dGVzdCgpIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0Rm9yUG9saWN5RGVs
ZWdhdGUoKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpWzBdLnN1
Ym1pdCgpOwogICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9wb3N0
LW11bHRpcGxlLWl0ZW1zLXRleHQtcGxhaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL21haWx0by9wb3N0LW11bHRpcGxlLWl0ZW1zLXRleHQtcGxhaW4uaHRtbAko
cmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vcG9zdC1t
dWx0aXBsZS1pdGVtcy10ZXh0LXBsYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOSArOCw5
IEBAIExpbmUgMgogPC9mb3JtPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdEZvclBvbGljeURlbGVn
YXRlKCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKVswXS5zdWJtaXQoKTsKICAgfQogfQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vcG9zdC1tdWx0aXBsZS1pdGVtcy14
LXd3dy1mb3JtLXVybGVuY29kZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL21haWx0by9wb3N0LW11bHRpcGxlLWl0ZW1zLXgtd3d3LWZvcm0tdXJsZW5jb2RlZC5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9w
b3N0LW11bHRpcGxlLWl0ZW1zLXgtd3d3LWZvcm0tdXJsZW5jb2RlZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC04LDkgKzgsOSBAQCBMaW5lIDIKIDwvZm9ybT4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0
ZXN0KCkgewotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxl
Z2F0ZSgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF0uc3Vi
bWl0KCk7CiAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3Qt
bXVsdGlwbGUtaXRlbXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L21haWx0by9wb3N0LW11bHRpcGxlLWl0ZW1zLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3QtbXVsdGlwbGUtaXRlbXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNyw5ICs3LDkgQEAgRmllbGQgMjogPGlucHV0IHR5cGU9InRleHQiIHNp
emU9IjEwIiBtYQogPGRpdj5FeHBlY3RlZCByZXN1bHRzIHdoZW4gY2xpY2tpbmcgIlNlbmQiIGJ1
dHRvbjogIEEgbmV3IG1haWwgbWVzc2FnZSBpcyBjcmVhdGVkIHdpdGggYSBib2R5IG9mICJmaWVs
ZDE9dmFsdWUgMSZmaWVsZDI9dmFsdWUgMiIuPC9kaXY+CiA8c2NyaXB0PgogZnVuY3Rpb24gdGVz
dCgpIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
Rm9yUG9saWN5RGVsZWdhdGUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0Rm9yUG9saWN5RGVsZWdh
dGUoKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZm9ybSIpWzBdLnN1Ym1p
dCgpOwogICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9wb3N0LXRl
eHQtcGxhaW4td2l0aC1hY2NlcHQtY2hhcnNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3QtdGV4dC1wbGFpbi13aXRoLWFjY2VwdC1jaGFyc2V0
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRv
L3Bvc3QtdGV4dC1wbGFpbi13aXRoLWFjY2VwdC1jaGFyc2V0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTExLDkgKzExLDkgQEAKIDwvZm9ybT4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewot
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRGb3JQb2xp
Y3lEZWxlZ2F0ZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSgpOwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIilbMF0uc3VibWl0KCk7CiAg
IH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3QtdGV4dC1wbGFp
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3Qt
dGV4dC1wbGFpbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL21haWx0by9wb3N0LXRleHQtcGxhaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSAr
MTEsOSBAQAogPC9mb3JtPgogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdEZvclBvbGljeURlbGVnYXRl
KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImZvcm0iKVswXS5zdWJtaXQoKTsKICAgfQogfQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvaW5wdXQtbnVtYmVyLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvaW5wdXQtbnVtYmVy
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
bnVtYmVyL2lucHV0LW51bWJlci1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMs
OCBAQAogICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAgICAgdmFyIGlucHV0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKICAgICAgICAgICAgICAgICB2YXIg
eCA9IGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZzZXRXaWR0aCAtIDg7CiAgICAgICAgICAg
ICAgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQgLSA3OwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvaW5wdXQtbnVtYmVyLXNwaW5idXR0
b24tY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJl
ci9pbnB1dC1udW1iZXItc3BpbmJ1dHRvbi1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9pbnB1dC1udW1iZXItc3BpbmJ1dHRvbi1j
cmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQCBpbnB1dDo6LXdlYmtpdC1p
bm5lci1zcGluLWJ1dHRvbiB7IGRpc3BsCiA8Ym9keT4KIDxpbnB1dCB0eXBlPSJudW1iZXIiIGlk
PSJpbiI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaW4nKTsKIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VF
dmVudCIpOwogZXZ0LmluaXRNb3VzZUV2ZW50KCJjbGljayIsIHRydWUsIHRydWUsIHdpbmRvdywg
MTAsIDEwLCAxMCwgMTApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvbnVt
YmVyLWlucHV0LWNoYW5nZWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9udW1iZXIvbnVtYmVyLWlucHV0LWNoYW5nZWV2ZW50Lmh0bWwJKHJldmlzaW9uIDEy
MDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVyL251bWJlci1pbnB1dC1jaGFu
Z2VldmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogdmFyIG51bWJlck9mQ2hhbmdlRXZlbnRzRmlyZWQgPSAwOwogdmFy
IHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1idXR0b24tZXZlbnRzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1idXR0b24tZXZlbnRzLmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVyL3NwaW4t
YnV0dG9uLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw3IEBAIG51bTEu
b25jaGFuZ2UgPSBmdW5jdGlvbiAoKSB7IGxvZygib25jaGEKIG51bTEub25pbnB1dCA9IGZ1bmN0
aW9uICgpIHsgbG9nKCJvbmlucHV0KCIgKyBudW0xLnZhbHVlICsgIikiKTsgfQogCiBmdW5jdGlv
biB0ZXN0SXQoKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgLy8gQ2xpY2sgc3BpbiBVcCBidXR0b24K
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygKQEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rpb24g
dGVzdEl0KCkgewogICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKIH0KIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgIHRlc3RJ
dCgpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9z
cGluLWJ1dHRvbi1nZXRzLWRpc2FibGVkLW9yLXJlYWRvbmx5Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1v
ci1yZWFkb25seS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL251bWJlci9zcGluLWJ1dHRvbi1nZXRzLWRpc2FibGVkLW9yLXJlYWRvbmx5Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAgdmFyIGlucHV0OwogdmFyIGRlbGF5Owogd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdp
bmRvdy5ldmVudFNlbmRlcikgewogICAgIHRlc3RJbnB1dHMgPSBbZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlYWRvbmx5TnVtYmVyIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNhYmxl
ZE51bWJlciIpXTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICBuZXh0SW5w
dXRUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWJ1dHRv
bi1zdGF0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbnVtYmVy
L3NwaW4tYnV0dG9uLXN0YXRlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvbnVtYmVyL3NwaW4tYnV0dG9uLXN0YXRlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTE1LDcgKzE1LDcgQEAgdmFyIGxvZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
cwogZnVuY3Rpb24gbG9nKG1zZykgeyBsb2dzLmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7IH0K
IAogZnVuY3Rpb24gdGVzdEl0KCkgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciBvdXRlciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlciIpOwogCkBAIC00MCw3ICs0MCw3IEBAIGZ1bmN0
aW9uIHRlc3RJdCgpIHsKICAgICBsb2coImV4cGVjdCAxLCBhY3R1YWw9IiArIG51bTIudmFsdWUp
OwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICB0ZXN0SXQoKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9zcGluLWluLW11bHRpLWNvbHVtbi5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL251bWJlci9z
cGluLWluLW11bHRpLWNvbHVtbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMiArODMsMTIg
QEAgZnVuY3Rpb24gaW5zdGFsbE1vdXNlVHJhY2tlcigpIHsKIAogZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyKSB7CiAgICAgICAgIGluc3RhbGxNb3VzZVRyYWNrZXIoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGZvciAodmFyIGZvcm1JbmRleCA9
IDA7IGZvcm1JbmRleCA8IG51bUZvcm1zOyBmb3JtSW5kZXgrKykgewogICAgICAgICBmb3IgKHZh
ciBjb2xJbmRleCA9IDA7IGNvbEluZGV4IDwgbnVtQ29sczsgY29sSW5kZXgrKykgewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9pbmRldGVybWluYXRlLXJhZGlvLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9pbmRldGVybWluYXRlLXJh
ZGlvLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFk
aW8vaW5kZXRlcm1pbmF0ZS1yYWRpby5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4
IEBACiAgICAgPGRpdiBpZD0idGVzdHJlc3VsdCIgc3R5bGU9ImNvbG9yOiBibHVlIj5SdW5uaW5n
PC9kaXY+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5jdGlvbiBteXRlc3QoKQogICAgIHsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vaW5wdXQtcmFkaW8tY2hlY2tlZC10YWIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhZGlvL2lucHV0LXJhZGlv
LWNoZWNrZWQtdGFiLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcmFkaW8vaW5wdXQtcmFkaW8tY2hlY2tlZC10YWIuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMiw4ICsyLDggQEAKIDxoZWFkPgogICAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvbScpLmNoZWNrZWQgPSBmYWxzZTsKICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlM
VVJFJzsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vaW50ZXJhY3RpdmUtdmFs
aWRhdGlvbi1yZXF1aXJlZC1yYWRpby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmFkaW8vaW50ZXJhY3RpdmUtdmFsaWRhdGlvbi1yZXF1aXJlZC1yYWRpby5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhZGlvL2ludGVy
YWN0aXZlLXZhbGlkYXRpb24tcmVxdWlyZWQtcmFkaW8uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjEsOCArMjEsOCBAQCBmdW5jdGlvbiBzdGFydE9yVmVyaWZ5KCkgewogICAgICAgICB0ZXN0UGFz
c2VkKCdUaGUgZm9ybSBzaG91bGQgYmUgc3VibWl0dGVkLicpOwogICAgICAgICBzaG91bGRCZVRy
dWUoJ2xvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJ0ZXJtcz1vbiIpICE9IC0xJyk7CiAgICAgICAg
IGRlYnVnKCdURVNUIENPTVBMRVRFJyk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpMScpLmNoZWNrZWQgPSB0cnVlOwogICAgICAgICAvLyBIVE1MRm9ybUVsZW1lbnQ6OnN1
Ym1pdCgpIHNraXBzIHZhbGlkYXRpb24uIFVzZSB0aGUgc3VibWl0IGJ1dHRvbi4KQEAgLTMxLDgg
KzMxLDggQEAgZnVuY3Rpb24gc3RhcnRPclZlcmlmeSgpIHsKICAgICB9CiB9CiAKLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwogd2luZG93Lm9ubG9hZCA9IHN0YXJ0T3JWZXJpZnk7CiA8L3NjcmlwdD4KIDwv
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vcmFkaW8tYnV0dG9uLW5v
LWNoYW5nZS1ldmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmFkaW8vcmFkaW8tYnV0dG9uLW5vLWNoYW5nZS1ldmVudC5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhZGlvL3JhZGlvLWJ1dHRvbi1uby1jaGFuZ2Ut
ZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxodG1sPgogPGhlYWQ+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIGZ1bmN0aW9uIGxvYWQoKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIjEiKS5pbm5lclRleHQgPSAiSWYgeW91IHNlZSB0aGlzIHBhcmFncmFwaCBhbmQgdGhl
IG9uZSBiZWxvdyBhbmQgYm90aCBhZ3JlZSwgdGhlIHRlc3QgaGFzIHN1Y2NlZWRlZC4iOwogfQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9yYWRpby1jaGVjay1jbGljay1hbmQt
ZHJhZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vcmFk
aW8tY2hlY2stY2xpY2stYW5kLWRyYWcuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9yYWRpby1jaGVjay1jbGljay1hbmQtZHJhZy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC04LDEzICs4LDEzIEBACiAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VVcCgpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVy
KSB7CiAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCd0aGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVu
IGJ5IER1bXBSZW5kZXJUcmVlLicpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgdmFyIGNoZWNrYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NoZWNrYm94Jyk7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHZhciByYWRpbyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyYWRpbycpOyAgICAgICAgICAgICAgICAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vcmFkaW8tZ3JvdXAta2V5Ym9hcmQtY2hhbmdl
LWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9y
YWRpby1ncm91cC1rZXlib2FyZC1jaGFuZ2UtZXZlbnQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9yYWRpby1ncm91cC1rZXlib2FyZC1jaGFu
Z2UtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsOCBAQCBmdW5jdGlvbiBh
c3NlcnROb3RDaGVja2VkKHZhbHVlKQogICAgICAgICBmYWlsKHZhbHVlICsgJyBzaG91bGQgbm90
IGJlIGNoZWNrZWQnKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKICAgICBnZXRSYWRpbygnYScpLmZvY3VzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3JhZGlvL3JhZGlvLW5lc3RlZC1sYWJlbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3JhZGlvL3JhZGlvLW5lc3RlZC1sYWJlbHMuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9yYWRpby1uZXN0ZWQt
bGFiZWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTEgQEAKIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiBmdW5jdGlvbiBjaGVja0J1
dHRvbigpIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAKICAgICB2YXIgcmFkaW9Gb3Vy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvdXIiKTsKQEAgLTE5LDcgKzE5LDcgQEAgZnVu
Y3Rpb24gY2hlY2tCdXR0b24oKSB7CiAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKTsKICAgICBpZiAocmFkaW9Gb3VyLmNoZWNrZWQpCiAgICAgICAgIHJl
c3VsdC5pbm5lckhUTUwgPSAiVGVzdCBTdWNjZWVkZWQhIjsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3Nj
cmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9yYWRpby1uby10aGVt
ZS1wYWRkaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRp
by9yYWRpby1uby10aGVtZS1wYWRkaW5nLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vcmFkaW8tbm8tdGhlbWUtcGFkZGluZy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3QoKQogewot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHZhciByYWRpbyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyYWRpbyIpOwogICAgIHZhciBwYWRkaW5nID0gZ2V0Q29tcHV0ZWRTdHls
ZShyYWRpbywgIiIpLmdldFByb3BlcnR5VmFsdWUoInBhZGRpbmctbGVmdCIpOwogICAgIGlmIChw
YWRkaW5nID09ICIwcHgiKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9yYWRp
b19jaGVja2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRp
by9yYWRpb19jaGVja2VkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmFkaW8vcmFkaW9fY2hlY2tlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4
ICsyNCw4IEBACiAgICAgPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogCiB2YXIgaTEsIGkyLCBpMywgaTQsIGk1LCBpNiwgaTcsIGk4LCBpOSwgaTEwOwog
aTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW4xJykuY2hlY2tlZDsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vcmFkaW9fY2hlY2tlZF9keW5hbWljLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9yYWRpb19jaGVja2VkX2R5bmFt
aWMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRp
by9yYWRpb19jaGVja2VkX2R5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEs
OCBAQCBUZXN0IDQ6IFRyYW5zZmVyIGZyb20gJmx0O2Zvcm0mZ3Q7IHRvICZsCiA8ZGl2IGlkPSJy
ZXN1bHQ0Ij5UZXN0IDQgRmFpbGVkPC9kaXY+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
dmFyIHJhZGlvMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyYWRpbzEiKTsKIHZhciByYWRp
bzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmFkaW8yIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3JhZGlvL3JhZGlvX2NoZWNrZWRfbmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vcmFkaW9fY2hlY2tlZF9uYW1lLmh0bWwJKHJl
dmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vcmFkaW9fY2hl
Y2tlZF9uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiAgICAgPGhlYWQ+
CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIHZhciByMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyMScpOwogICAgICAgICAgICAgdmVyaWZ5Q2hlY2tlZFN0YXRlKHIxLCB0cnVlKTsKQEAgLTIw
LDcgKzIwLDcgQEAKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBjaGVj
ayB3aXRoIHRoZSBzcGFjZWJhcgogICAgICAgICAgICAgcjIuZm9jdXMoKTsKLSAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAn
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZlcmlmeUNoZWNrZWRTdGF0ZShyMiwgdHJ1
ZSk7CkBAIC0yOCw3ICsyOCw3IEBACiAgICAgICAgICAgICB2YXIgcjMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncjMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gY2hlY2sgd2l0aCB0aGUgbW91c2UKLSAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHIzLm9mZnNldExlZnQgKyA3LCByMy5vZmZzZXRUb3AgKyA3KTsKICAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhZGlvL3JlbW92ZS1yYWRp
by1idXR0b24tYXNzZXJ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9yYWRpby9yZW1vdmUtcmFkaW8tYnV0dG9uLWFzc2VydC5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhZGlvL3JlbW92ZS1yYWRpby1idXR0b24tYXNz
ZXJ0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8cD5UaGlzIHRlc3RzIHRo
ZSBjb2RlIHBhdGggZm9yIGRlc3RydWN0aW9uIG9mIGEgcmFkaW8gYnV0dG9uIHdoZW4gaXQncyBj
aGVja2VkLCB3aGVuIHRoZSBmb3JtIG91dGxpdmVzIHRoZSByYWRpbyBidXR0b24sIGJ1dCB3aGVy
ZSB0aGUgcmFkaW8gYnV0dG9uIGlzIG5ldmVyIGV4cGxpY2l0bHkgcmVtb3ZlZCBmcm9tIHRoZSBm
b3JtLjwvcD4KIDxkaXYgaWQ9ImNvbnRhaW5lciI+PGZvcm0gaWQ9ImZvcm0iPjxpbnB1dCB0eXBl
PSJyYWRpbyIgbmFtZT0iYnV0dG9uIiBjaGVja2VkPjwvZm9ybT48L2Rpdj4KIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm0iKTsK
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKS5yZW1vdmVDaGlsZChmb3JtKTsK
IGZvcm0uaW5uZXJIVE1MPSIiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYWRpby9z
dGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9yYWRpby9zdGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLmh0bWwJKHJldmlzaW9u
IDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFkaW8vc3RhdGUtcmVzdG9yZS1y
YWRpby1ncm91cC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CiAgICAgdmFyIHN0YXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vt
cHR5T25GaXJzdFZpc2l0Jyk7CiAgICAgaWYgKCFzdGF0ZS52YWx1ZSkgewogICAgICAgICAvLyBG
aXJzdCB2aXNpdC4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CiAgICAgICAgIHN0YXRlLnZhbHVlID0gJ3Zpc2l0ZWQnOwogCiAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDEnKS5jaGVja2VkID0gdHJ1ZTsKQEAgLTMzLDggKzMz
LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAgICAgLy8gU2Vjb25kIHZpc2l0LgogICAg
ICAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dDEiKS5jaGVj
a2VkJyk7CiAgICAgICAgIHNob3VsZEJlRmFsc2UoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJp
bnB1dDIiKS5jaGVja2VkJyk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9yYW5nZS9yYW5nZS1pbnB1dC1keW5hbWljLW9uaW5wdXQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3JhbmdlLWlucHV0LWR5bmFtaWMtb25pbnB1dC5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3Jh
bmdlLWlucHV0LWR5bmFtaWMtb25pbnB1dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgs
OCBAQCBmdW5jdGlvbiBsb2cobXNnKSB7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXQogICAgIGlucHV0LnZhbHVlID0gMjAwOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItZGVsZXRlLXdoaWxlLWRyYWdnaW5n
LXRodW1iLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9z
bGlkZXItZGVsZXRlLXdoaWxlLWRyYWdnaW5nLXRodW1iLmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWRlbGV0ZS13aGlsZS1kcmFn
Z2luZy10aHVtYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw3IEBACiAgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VVcCgpOwogCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBmdW5jdGlvbiBkZWxldGVT
bGlkZXIoKQpAQCAtMzIsMTMgKzMyLDEzIEBACiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGRyYWcoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RS
dW5uZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgIHZh
ciBzbGlkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xpZGVyJyk7CiAKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogCiAgICAgICAgICAgICAgICAgLy8gZHJhZyBzbGlkZXIsIGxlYXZlIHRo
ZSBtb3VzZSBkb3duCiAgICAgICAgICAgICAgICAgbG9nKCJkcmFnZ2luZyBzbGlkZXIiKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWhpdC10ZXN0aW5nLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaGl0LXRl
c3RpbmcuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
YW5nZS9zbGlkZXItaGl0LXRlc3RpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDgg
QEAKIC8vIEZvcmNlIGEgbGF5b3V0IHNvIHRoZSBzbGlkZXIgc3RhcnRzIHdpdGggdGhlIGRlZmF1
bHQgd2lkdGguCiBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CiAKLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IH0KIAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewpAQCAtMTksNyArMTksNyBAQCB3aW5k
b3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAKIGZ1bmN0aW9uIGNoYW5nZUFuZENoZWNrUmFuZ2VW
YWx1ZSgpCiB7Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYg
KCF3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ2xpY2sgb24g
dGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHNsaWRlci4gIFRoaXMgc2hvdWxkIGNhdXNlIHRoZSB0aHVt
YgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItaW4tbXVsdGktY29s
dW1uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlk
ZXItaW4tbXVsdGktY29sdW1uLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWluLW11bHRpLWNvbHVtbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC03MSwxMCArNzEsMTAgQEAgZnVuY3Rpb24gdGVzdEl0KGZvcm1JbmRleCwgY29sSW5k
ZXgsIG9mcwogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiAKICAgICBmb3IgKHZhciBmb3JtSW5kZXggPSAwOyBmb3JtSW5kZXgg
PCBudW1Gb3JtczsgZm9ybUluZGV4KyspIHsKICAgICAgICAgZm9yICh2YXIgY29sSW5kZXggPSAw
OyBjb2xJbmRleCA8IG51bUNvbHM7IGNvbEluZGV4KyspIHsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW1vdXNlLWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW1vdXNlLWV2ZW50cy5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1tb3Vz
ZS1ldmVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDggQEAKICAgICAgICAgICAg
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciBzbGlk
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xpZGVyJyk7Ci0gICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzbGlk
ZXIub2Zmc2V0TGVmdCArIDcsIHNsaWRlci5vZmZzZXRUb3AgKyA3KTsKICAgICAgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CiAgICAgICAgICAgICAgICAgICAgIGxvZyhz
bGlkZXIudmFsdWUpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1v
bmNoYW5nZS1ldmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmFuZ2Uvc2xpZGVyLW9uY2hhbmdlLWV2ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW9uY2hhbmdlLWV2ZW50Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB2YXIgc2xpZGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3NsaWRlcicpOwotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
ICAgICAgICAgICAgLy8gc2xpZGVyIGRyYWcKICAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc2xpZGVyLm9mZnNldExlZnQgKyA3LCBzbGlkZXIub2Zmc2V0VG9wICsg
Nyk7CiAgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItdHJhbnNmb3JtZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci10cmFuc2Zvcm1l
ZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jhbmdl
L3NsaWRlci10cmFuc2Zvcm1lZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBA
CiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hh
cnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rp
b24gZGlzcGF0Y2hFdmVudChldmVudFR5cGUsIGNsaWVudFgsIGNsaWVudFkpCiAgICAgewpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItem9vbWVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItem9vbWVkLmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVy
LXpvb21lZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw4ICsxNSw4IEBACiAgICAgfQogICA8
L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgZnVuY3Rpb24gZGlzcGF0Y2hF
dmVudChldmVudFR5cGUsIGNsaWVudFgsIGNsaWVudFkpCiAgICAgewpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9yYW5nZS90aHVtYnNsaWRlci1jcmFzaC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmFuZ2UvdGh1bWJzbGlkZXItY3Jhc2guaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yYW5nZS90aHVtYnNsaWRl
ci1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBAQAogPGJvZHk+CiBQQVNT
IElmIHRoaXMgdGVzdCBkb2VzIG5vdCBjcmFzaC4gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIwNDUKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvZm9y
bS1hbmQtZnJhbWUtaW50ZXJhY3Rpb24tcmV0YWlucy12YWx1ZXMtbWFpbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2Zvcm0tYW5kLWZyYW1lLWlu
dGVyYWN0aW9uLXJldGFpbnMtdmFsdWVzLW1haW4uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvZm9ybS1hbmQtZnJhbWUtaW50ZXJhY3Rp
b24tcmV0YWlucy12YWx1ZXMtbWFpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDEwICsyLDEw
IEBACiA8aHRtbD4NCiA8aGVhZD4NCiAgIDxzY3JpcHQ+DQotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7DQotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7DQotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOw0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAgICAg
IHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgIHdpbmRvdy50ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOw0KKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOw0KICAgICB9DQogDQogICBmdW5jdGlvbiBwZXJmb3JtVGVzdCgpIHsN
CkBAIC0xMyw4ICsxMyw4IEBACiAgICAgICB3aW5kb3cubmFtZSA9ICIiOw0KICAgICAgIGlmKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0IikudmFsdWUgPT0gIkNvcnJlY3QgVmFsdWUiKQ0K
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQ
QVNTIjsNCi0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCisgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpDQorICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
DQogICAgIH0gZWxzZSB7DQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQiKS52
YWx1ZSA9ICJPbGQgVmFsdWUiOw0KICAgICAgIHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24gPSAi
Zm9ybS1hbmQtZnJhbWUtaW50ZXJhY3Rpb24tcmV0YWlucy12YWx1ZXMtc3VibWl0Lmh0bWwiOw0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VhcmNoL3NlYXJjaC1zaGFraW5nLXRleHQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlYXJjaC9zZWFyY2gt
c2hha2luZy10ZXh0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VhcmNoL3NlYXJjaC1zaGFraW5nLXRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTMsMTEgKzEzLDExIEBACiBmdW5jdGlvbiBzdGFydFRlc3QoKSB7CiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3RGaWVsZCcpLm9mZnNldFRvcDsKICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdEZpZWxkJykuc3R5bGUud2lkdGggPSAnMjAwcHgnOwotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIDwvc2NyaXB0PgogPC9i
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QvbGlzdGJveC1pbi1tdWx0
aS1jb2x1bW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVj
dC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC03NSwxMCArNzUsMTAgQEAgZnVuY3Rpb24gdGVzdEl0KGZvcm1JbmRl
eCwgY29sSW5kZXgsIG9mcwogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAoIXdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmb3IgKHZhciBmb3JtSW5kZXggPSAwOyBm
b3JtSW5kZXggPCBudW1Gb3JtczsgZm9ybUluZGV4KyspIHsKICAgICAgICAgZm9yICh2YXIgY29s
SW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7IGNvbEluZGV4KyspIHsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0L21lbnVsaXN0LXBvcHVwLWNyYXNoLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QvbWVudWxpc3QtcG9wdXAtY3Jh
c2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxl
Y3QvbWVudWxpc3QtcG9wdXAtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw4ICs3LDgg
QEAKIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHAgaWQ9ImRlYnVnIj5QQVNTIGlmIHRoZSB0
ZXN0IGRpZG4ndCBjcmFzaC48L3A+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCiAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwog
ICAgIHBhcmVudC5pbm5lckhUTUwgPSAnPHNlbGVjdCBpZD0ic2wxIj4nCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlzdC10eXBlLWFoZWFkLWZpbmQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC9tZW51bGlzdC10eXBlLWFo
ZWFkLWZpbmQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zZWxlY3QvbWVudWxpc3QtdHlwZS1haGVhZC1maW5kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTE1LDEwICsxNSwxMCBAQCBmdW5jdGlvbiB0ZXN0SXQoY2gsIGV4cGVjdGVkKQogCiBmdW5jdGlv
biB0ZXN0KCkKIHsKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBp
ZiAoIXdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAg
ICAgdGVzdEl0KCJjIiwgImNoZXJyeSIpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NlbGVjdC9vcHRncm91cC1jbGlja2luZy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0L29wdGdyb3VwLWNsaWNraW5nLmh0bWwJKHJl
dmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0L29wdGdyb3Vw
LWNsaWNraW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEyICs0OCwxMiBAQCB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGlmICghd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgbmVl
ZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuIik7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IG5lZWRzIHRlc3RSdW5uZXIuIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBkZWJ1ZygiXG5DbGljayBlbmFi
bGVkIG9wdGlvbiIpOwogICAgICQoImxpc3Rib3giKS5zZWxlY3RlZEluZGV4ID0gMjsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEvdGV4dGFyZWEtcGxhY2Vob2xkZXItcGFp
bnQtb3JkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRh
cmVhL3RleHRhcmVhLXBsYWNlaG9sZGVyLXBhaW50LW9yZGVyLmh0bWwJKHJldmlzaW9uIDEyMDkw
MykKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEvdGV4dGFyZWEtcGxhY2Vob2xk
ZXItcGFpbnQtb3JkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxib2R5
PgogPHNjcmlwdD4KIC8vIFdlIGRvbid0IGNhcmUgYSByZW5kZXIgdHJlZSBvZiB0aGlzIHRlc3Qu
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQodHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KHRydWUpOwogPC9zY3JpcHQ+CiA8c3R5bGU+CiB0ZXh0YXJlYSB7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9hZG9wdC1mcm9tLWNyZWF0ZWQtZG9jdW1lbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9hZG9wdC1mcm9tLWNy
ZWF0ZWQtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvYWRvcHQtZnJvbS1jcmVhdGVkLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNyArMSw3IEBACiA8Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogYWxlcnQo
MSk7CiB2YXIgZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJ2h0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbCcsIG51bGwpOyAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2Fkb3B0LWlmcmFtZS1pbnRvLWl0c2VsZi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Fkb3B0LWlmcmFtZS1pbnRvLWl0c2VsZi5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9hZG9wdC1p
ZnJhbWUtaW50by1pdHNlbGYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gdGVzdCgpIHsKICAgICB0cnkgewpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvYXNzZXJ0LW9uLWluc2VydGVkSW50b0RvY3VtZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvYXNzZXJ0LW9uLWlu
c2VydGVkSW50b0RvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2Fzc2VydC1vbi1pbnNlcnRlZEludG9Eb2N1bWVudC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGJvZHk+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
IHZhciBzdWJ0cmVlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiB2YXIgc3R5bGVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2NhY2hlZC1mcmFtZS1jb3VudGVyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvY2FjaGVkLWZyYW1lLWNvdW50ZXIuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvY2FjaGVkLWZyYW1lLWNvdW50
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxib2R5IG9ubG9hZD0ic2V0
VGltZW91dCgndGVzdCgpJywgNTAwKSI+CiA8cD5UZXN0IHRoYXQgZnJhbWUgY291bnQgbGltaXQg
aXMgcmVzZXQgb24gbmF2aWdhdGlvbnMuPC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQpAQCAtMTYsOCArMTYsOCBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgd2luZG93LmZyYW1lc1sxMDBdLmRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5pbm5lckhUTUw7CiAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICAgZG9j
dW1lbnQud3JpdGUoIkZBSUw6ICIgKyBleCArICI8cD4iKTsKLSAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMz
LDggKzMzLDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgd2hpbGUgKGlmciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXSkKICAgICAgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChpZnIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3Nj
cmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvY29udGVudC1vcGFjaXR5LTIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9jb250ZW50LW9wYWNp
dHktMi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9j
b250ZW50LW9wYWNpdHktMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogICAg
IDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IAogICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpCiAgICAgICAgICAgICB7CkBAIC0x
NCw4ICsxNCw4IEBACiAgICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoInJlbCIsICJz
dHlsZXNoZWV0Iik7CiAgICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoImhyZWYiLCAi
ZGF0YTp0ZXh0L2NzcywvKiBUaGlzIGxvYWRzIGFzeW5jaHJvbm91c2x5ICovIik7CiAgICAgICAg
ICAgICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGxpbmsp
OwotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfSwgMTAwKTsKICAgICAgICAgfQog
ICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvY29udGVudFdpbmRv
d19GcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2NvbnRl
bnRXaW5kb3dfRnJhbWUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvY29udGVudFdpbmRvd19GcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkg
KzIsOSBAQAogPGhlYWQ+CiAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gcHV0VGV4dCgpIHsKLSAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwogICAgICAgfQogICAgICAgdmFyIHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidF9mcmFtZSIpOwogICAgICAgdmFyIGIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYl9mcmFtZSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
Y29udGVudFdpbmRvd19pRnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9jb250ZW50V2luZG93X2lGcmFtZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9jb250ZW50V2luZG93X2lGcmFtZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHB1
dFRleHQoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKICAgICAgICAgfQogICAgICAgICB2YXIgdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
eV9pZnJhbWUiKS5jb250ZW50V2luZG93OwogICAgICAgICB2YXIgZCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJteV9kaXYiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2NyYXNo
LWZyYW1lc2V0LUNTUy1jb250ZW50LXByb3BlcnR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvY3Jhc2gtZnJhbWVzZXQtQ1NTLWNvbnRlbnQtcHJvcGVydHkuaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvY3Jhc2gtZnJh
bWVzZXQtQ1NTLWNvbnRlbnQtcHJvcGVydHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSAr
NCwxNSBAQAogPHNjcmlwdD4KIGZ1bmN0aW9uIHJ1blRlc3QoKQogewotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiAgICAgdmFyIGZyYW1lc2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImZyYW1lc2V0Iik7CiAgICAgdmFyIG1vdXNlQ2xpY2sgPSBkb2N1bWVudC5jcmVhdGVFdmVu
dCgiTW91c2VFdmVudCIpOwogICAgIG1vdXNlQ2xpY2suaW5pdEV2ZW50KCJjbGljayIsIHRydWUs
IHRydWUpOwogICAgIGZyYW1lc2V0LmRpc3BhdGNoRXZlbnQobW91c2VDbGljayk7CiAKLSAgICBp
ZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICghd2luZG93LnRlc3RS
dW5uZXIpIHsKICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uLCB3aGVuIHJ1bm5pbmcgdGhpcyB0
ZXN0IGJ5IGhhbmQgaW4gcmVsZWFzZSBidWlsZHMgeW91IG11c3QgbWFudWFsbHkKICAgICAgICAg
Ly8gY2xpY2sgb24gdGhlIG5vdC1mb3VuZCBpbWFnZSBwbGFjZWhvbGRlciB0byBjYXVzZSBhIGNy
YXNoLiBIZW5jZSwgd2UgZG9uJ3QgcmVwbGFjZQogICAgICAgICAvLyB0aGUgPGZyYW1lc2V0PiBh
bmQgcHJpbnQgYSBQQVNTIG1lc3NhZ2UuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9j
cmFzaC1yZW1vdmVkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2NyYXNoLXJlbW92ZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2NyYXNoLXJlbW92ZWQtaWZyYW1lLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDggKzM2LDggQEAKICAgICB9CiAKICAgICBmdW5jdGlvbiB0ZXN0Q3Jhc2go
KSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAg
ICAgIHRlc3RDcmFzaDEoKTsKICAgICAgICAgdGVzdENyYXNoMigpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvY3Jvc3Mtc2l0ZS10aGlzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvY3Jvc3Mtc2l0ZS10aGlzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Nyb3NzLXNpdGUtdGhpcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAvLyBUaGUg
J3RoaXMnIHZhbHVlIHByb3ZpZGVkIHRvIHRoaXMgbWV0aG9kLCBhbmQgcHJvdmlkZWQgYnkgdGhp
cyBtZXRob2QgdG8gJ2JhcicsIHNob3VsZAogLy8gYm90aCBiZSB0aGUgY29udGFpbmluZyB3aW5k
b3cgb2JqZWN0LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvY3NzLXN0eWxlLWRlY2xh
cmF0aW9uLWlzb2xhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2Nzcy1zdHlsZS1kZWNsYXJhdGlvbi1pc29sYXRpb24uaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvY3NzLXN0eWxlLWRlY2xhcmF0aW9uLWlzb2xh
dGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogPGRpdiBpZD0icmVzdWx0
Ij48L2Rpdj4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBDU1NTdHlsZURlY2xhcmF0aW9u
LnByb3RvdHlwZS5mb28gPSAiZm9vIjsKIHZhciB3aW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaWZyJykuY29udGVudFdpbmRvdzsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Rl
dGFjaGVkLWZyYW1lLXByb3BlcnR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtcHJvcGVydHkuaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZGV0YWNoZWQtZnJhbWUtcHJvcGVydHkuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxwPlRlc3QgdGhhdCBwcm9wZXJ0aWVzIGlu
IGEgZGV0YWNoZWQgc3ViZnJhbWUgYmVjb21lIHVuYXZhaWxhYmxlIGltbWVkaWF0ZWx5LjwvcD4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogb25sb2FkID0gZnVuY3Rpb24oKQogewpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZG9jdW1lbnQtd3JpdGUtaW4taWZyYW1lLW9ubG9hZC0y
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZG9jdW1lbnQtd3Jp
dGUtaW4taWZyYW1lLW9ubG9hZC0yLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2RvY3VtZW50LXdyaXRlLWluLWlmcmFtZS1vbmxvYWQtMi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9z
Y3JpcHQ+CiBGQUlMCiA8aWZyYW1lIG9ubG9hZD0iZG9jdW1lbnQuY2xvc2UoKTsgZG9jdW1lbnQu
d3JpdGUoJzxwPlBBU1MgKDEgb2YgMik8cD5QQVNTICgyIG9mIDIpJyk7Ij48L2lmcmFtZT4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2RvY3VtZW50LXdyaXRlLWluLWlmcmFtZS1vbmxv
YWQtMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2RvY3VtZW50
LXdyaXRlLWluLWlmcmFtZS1vbmxvYWQtMy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9kb2N1bWVudC13cml0ZS1pbi1pZnJhbWUtb25sb2FkLTMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IDwvc2NyaXB0PgogRkFJTAogPGlmcmFtZSBvbmxvYWQ9ImRvY3VtZW50LndyaXRlKCc8cD5QQVNT
ICgxIG9mIDIpPHA+UEFTUyAoMiBvZiAyKScpOyI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9kb2N1bWVudC13cml0ZS1pbi1pZnJhbWUtb25sb2FkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZG9jdW1lbnQtd3JpdGUtaW4taWZyYW1l
LW9ubG9hZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9kb2N1bWVudC13cml0ZS1pbi1pZnJhbWUtb25sb2FkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9lbXB0eS1mcmFtZS1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2VtcHR5LWZyYW1lLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9u
IDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2VtcHR5LWZyYW1lLWRvY3VtZW50
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9Indp
bmRvdy5mcmFtZXNbMF0uZG9jdW1lbnQiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
Zm9jdXMtY29udHJvbGxlci1jcmFzaC1jaGFuZ2UtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mb2N1cy1jb250cm9sbGVyLWNyYXNoLWNoYW5nZS1ldmVu
dC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mb2N1
cy1jb250cm9sbGVyLWNyYXNoLWNoYW5nZS1ldmVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01
LDE2ICs1LDE2IEBACiAgICAgPGlmcmFtZT48L2lmcmFtZT4NCiA8L2Rpdj4NCiA8c2NyaXB0Pg0K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsNCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOw0KLQlsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7DQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7DQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOw0KKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsNCiB9DQogDQogYS5hZGRFdmVudExp
c3RlbmVyKCJjaGFuZ2UiLCBmdW5jdGlvbigpIHsgDQogICAgIGIuaW5uZXJIVE1MID0gIlBBU1Mi
Ow0KIA0KLQlpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KLQkgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KKwlpZiAod2luZG93LnRlc3RSdW5uZXIpDQorCSAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiB9KTsNCiANCiBhLmFkZEV2ZW50TGlzdGVuZXIo
ImtleXVwIiwgZnVuY3Rpb24oKSB7DQpAQCAtMjYsNyArMjYsNyBAQCBhLmFkZEV2ZW50TGlzdGVu
ZXIoImtleXVwIiwgZnVuY3Rpb24oKSB7CiBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsNCiBhLmZv
Y3VzKCk7DQogDQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCitpZiAod2luZG93
LnRlc3RSdW5uZXIpDQogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsNCiA8L3NjcmlwdD4N
CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZnJhbWUtYmFzZS11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9mcmFtZS1iYXNlLXVybC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1iYXNlLXVybC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiA8dGl0bGU+VGVzdCBmb3IgMTMzNjQ8L3RpdGxlPgog
PHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiA8L3Njcmlw
dD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWNyYXNoLXdp
dGgtcGFnZS1jYWNoZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2ZyYW1lLWNyYXNoLXdpdGgtcGFnZS1jYWNoZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1jcmFzaC13aXRoLXBhZ2UtY2FjaGUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxzY3JpcHQ+CiB3aW5kb3cuZmluaXNoID0g
ZnVuY3Rpb24oKQogewotICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogd2luZG93LmxvZyA9IGZ1bmN0aW9u
KG1lc3NhZ2UpIHsKQEAgLTE2LDExICsxNiwxMSBAQCB3aW5kb3cuZmFpbHVyZSA9IGZ1bmN0aW9u
KG1lc3NhZ2UpIHsKIH0KIAogZnVuY3Rpb24gdGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2Fj
aGVQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICAgICAg
ICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZl
cmVuY2VLZXkiLCAxKTsKICAgICB9CiAgICAgbG9nKCJvcGVuIHBhZ2UtMSIpOwogICAgIHdpbmRv
dy5vcGVuKCJyZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sIik7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9mcmFtZS1kZWFkLXJlZ2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWRlYWQtcmVnaW9uLmh0bWwJKHJldmlzaW9uIDEyMDkw
MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWRlYWQtcmVnaW9uLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgICAgPGhlYWQ+CiAgICAgICAgIDx0aXRsZT5G
cmFtZXNldCBEZWFkIFJlZ2lvbiBUZXN0PC90aXRsZT4KICAgICAgICAgPHNjcmlwdD4KLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGZyYW1lc2V0IGNvbHM9IjE1MCwq
Ij4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWRlZXAtbmVzdGVkLXJlc2l6
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWRlZXAt
bmVzdGVkLXJlc2l6ZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9mcmFtZS1kZWVwLW5lc3RlZC1yZXNpemUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMSArMSwxMSBAQAogPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQ+Ci0gICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogICAgICAgICAgICAgZnVuY3Rpb24gbG9nKGZyYW1lLCBzdWNjZXNzLCBpc1dpZHRoLCBzaXpl
KSB7Ci0gICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAgICAgYWxl
cnQoZnJhbWUubmFtZSArICcgcmVzaXplZCBjb3JyZWN0bHkgPSAnICsgKHN1Y2Nlc3MgPyAndHJ1
ZScgOiAnZmFsc2UnKSk7CiAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ZnJhbWUuZG9jdW1lbnQuY2xvc2UoKTsKQEAgLTIxLDEyICsyMSwxMiBAQAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1Byb2dyZXNzKCkgewotICAgICAgICAgICAg
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGlm
ICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrU3VjY2Vzcygp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBpbml0KCkgewotICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgICAgICAgICAgLy9Nb3Zl
IHRoZSBPbmUvKiB2ZXJ0aWNhbCByZXNpemVyIHRlbiBwaXhlbHMgd2VzdC4uLgogICAgICAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg5MCwgNDAwKTsKICAgICAgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9mcmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1kaXNwbGF5LW5vbmUtZm9jdXMuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtZGlzcGxheS1ub25l
LWZvY3VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiA8L3NjcmlwdD4KIFRoaXMgdGVzdHMgdGhhdCB0cnlpbmcgdG8gZm9jdXMgYSBm
cmFtZSB0aGF0IGlzIGRpc3BsYXk6bm9uZSB3aWxsIG5vdCBjcmFzaC48YnI+CiA8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL2lmcmFtZS1mb2N1cy5odG1sIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+PC9p
ZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1lbGVtZW50LW5hbWUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1lbGVtZW50
LW5hbWUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZnJhbWUtZWxlbWVudC1uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTUgQEAK
IDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIGZyYW1lc0xvYWRlZCgp
CiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtaW5oZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1l
c2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtaW5o
ZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1lc2V0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWluaGVyaXQtbm9yZXNpemUtZnJvbS1mcmFtZXNl
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPGhlYWQ+CiA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2ZyYW1lLXByb2dyYW1tYXRpYy1yZXNpemUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OwogfQogCiB3aW5kb3cub25sb2FkID0gcnVuVGVzdHM7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9mcmFtZS1qcy11cmwtY2xpZW50V2lkdGguaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1qcy11cmwtY2xpZW50V2lkdGguaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtanMtdXJsLWNsaWVu
dFdpZHRoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICAKIGZ1bmN0aW9uIGxvZyhzKQogewotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICBh
bGVydChzKTsKICAgICBlbHNlCiAgICAgICAgIGxvZ2dlci5kb2N1bWVudC53cml0ZSgnPHA+JyAr
IHMgKyAnPC9wPicpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtbGltaXQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1saW1pdC5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1s
aW1pdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBACiAJfQogCQogCWZ1bmN0
aW9uIHJ1blRlc3QoKSB7Ci0JCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JCQls
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisJCWlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKwkJCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCQkJCiAJCS8vIEFkZCAxNTAgZnJhbWVz
LiAKIAkJYWRkRnJhbWVzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1u
YW1lLXJlc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJh
bWUtbmFtZS1yZXNldC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9mcmFtZS1uYW1lLXJlc2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4
IEBACiA8aGVhZD4KICAgICAgICAgPHRpdGxlPkJ1ZyA3NDIyPC90aXRsZT4KICAgICAgICAgPHNj
cmlwdD4KLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiAg
ICAgICAgIDxmcmFtZXNldCBjb2xzPSI0MDAsKiIgcm93cz0iKiIgaWQ9Im1haW5GcmFtZXNldCI+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1wcm9ncmFtbWF0aWMtbm9yZXNp
emUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1wcm9n
cmFtbWF0aWMtbm9yZXNpemUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZnJhbWUtcHJvZ3JhbW1hdGljLW5vcmVzaXplLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOSArMyw5IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnJhbWUt
cHJvZ3JhbW1hdGljLXJlc2l6ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiB9CiAKIHdpbmRvdy5vbmxv
YWQgPSBydW5UZXN0czsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXNldC1z
YW1lLWxvY2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZnJhbWUtc2V0LXNhbWUtbG9jYXRpb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtc2V0LXNhbWUtbG9jYXRpb24uaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNCw4ICs0LDggQEAKIDxoZWFkPgogPHNjcmlwdD4KICAgICAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIGZ1bmN0aW9uIHJpZ2h0RnJhbWVMb2FkZWQo
KSB7CiAgICAgICAgIHJpZ2h0RnJhbWVMb2FkQ291bnQrKzsKQEAgLTEzLDE1ICsxMywxNSBAQAog
ICAgICAgICAgICAgLy8gQ29uc29sZSBpcyBzZXQgYnkgcnVuVGVzdAogICAgICAgICAgICAgY29u
c29sZS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9ICJTVUNDRVNTIjsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAgICAgLy8gUHV0IHRoZSB0ZXN0
IHJlc3VsdCBpbiB0aGUgbWFpbiBkb2N1bWVudCBzbyB3ZSBjYW4gZHVtcCBhcyB0ZXh0CiAgICAg
ICAgICAgICAgICAgdmFyIHRleHQgPSBjb25zb2xlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LmlubmVySFRNTDsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5vcGVuKCk7CiAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQud3JpdGUodGV4dCk7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Y2xvc2UoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUt
c2V0LXNhbWUtc3JjLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZnJhbWUtc2V0LXNhbWUtc3JjLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2ZyYW1lLXNldC1zYW1lLXNyYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00
LDggKzQsOCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogCiAgICAgZnVuY3Rpb24gcmlnaHRGcmFtZUxvYWRlZCgpIHsKICAgICAg
ICAgcmlnaHRGcmFtZUxvYWRDb3VudCsrOwpAQCAtMTMsMTUgKzEzLDE1IEBACiAgICAgICAgICAg
ICAvLyBDb25zb2xlIGlzIHNldCBieSBydW5UZXN0CiAgICAgICAgICAgICBjb25zb2xlLmZpcnN0
Q2hpbGQubm9kZVZhbHVlID0gIlNVQ0NFU1MiOwogCi0gICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKICAgICAgICAgICAgICAgICAvLyBQdXQgdGhlIHRlc3QgcmVzdWx0IGluIHRoZSBtYWluIGRv
Y3VtZW50IHNvIHdlIGNhbiBkdW1wIGFzIHRleHQKICAgICAgICAgICAgICAgICB2YXIgdGV4dCA9
IGNvbnNvbGUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MOwogICAgICAg
ICAgICAgICAgIGRvY3VtZW50Lm9wZW4oKTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC53cml0
ZSh0ZXh0KTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5jbG9zZSgpOwogCi0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2ZyYW1lLXNyYy1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1zcmMtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDEy
MDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXNyYy1hdHRyaWJ1dGUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxoZWFkPg0KIDxzY3JpcHQ+DQogDQot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7DQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOw0KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsNCisgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsN
CiB9DQogDQogZnVuY3Rpb24gd3JpdGUocykNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9mcmFtZS11bmxvYWQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9mcmFtZS11bmxvYWQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtdW5sb2FkLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIsMTUgKzIsMTUgQEAKIDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gZG9uZSgpCiB7CiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiUEFTUyIpKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1h
ZnRlci1yZW1vdmFsLW9mLW5vcmVzaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1yZW1v
dmFsLW9mLW5vcmVzaXplLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVtb3Zh
bC1vZi1ub3Jlc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPGhlYWQ+
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZyYW1lLXByb2dyYW1tYXRpYy1yZXNpemUuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOwogfQogCiB3aW5kb3cub25sb2FkID0gcnVuVGVzdHM7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFm
dGVyLXNldHRpbmctbm9SZXNpemUtdG8tZmFsc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVy
LXNldHRpbmctbm9SZXNpemUtdG8tZmFsc2UuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1h
ZnRlci1zZXR0aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMs
OSArMyw5IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnJhbWUtcHJvZ3JhbW1h
dGljLXJlc2l6ZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiB9CiAKIHdpbmRvdy5vbmxvYWQgPSBydW5U
ZXN0czsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lRWxlbWVudC13aWR0aGhl
aWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lRWxl
bWVudC13aWR0aGhlaWdodC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9mcmFtZUVsZW1lbnQtd2lkdGhoZWlnaHQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNywxNCArNywxNCBAQAogICA8ZnJhbWUgbmFtZT0iZnJhbWUxIiBzcmM9ImphdmFzY3JpcHQ6
CiAgICAgZnVuY3Rpb24gbG9nKHMpCiAgICAgewotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgYWxlcnQo
cyk7CiAgICAgICBlbHNlCiAgICAgICAgIHRvcC5mcmFtZTEuZG9jdW1lbnQud3JpdGUoJzxwPicg
KyBzICsgJzwvcD4nKTsKICAgICB9CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAg
ICAKICAgICB0b3AuZnJhbWUxLmRvY3VtZW50LndyaXRlKCc8cD5UZXN0IGZvciB0aGUgcHJlc2Vu
Y2Ugb2YgZnJhbWVFbGVtZW50LndpZHRoIGFuZCBmcmFtZUVsZW1lbnQuaGVpZ2h0IDxhIGhyZWY9
XCdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQwMlwnPihidWcgNjQw
Mik8L2E+PC9wPicpOwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWVz
LXdpdGgtZnJhbWVib3JkZXItemVyby1jYW4tYmUtcmVzaXplZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lcy13aXRoLWZyYW1lYm9yZGVyLXplcm8tY2Fu
LWJlLXJlc2l6ZWQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvZnJhbWVzLXdpdGgtZnJhbWVib3JkZXItemVyby1jYW4tYmUtcmVzaXplZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogICAgIDxoZWFkPg0KICAgICAgICAgPHNjcmlw
dD4NCiAgICAgICAgICAgICBmdW5jdGlvbiBsb2coZnJhbWUsIHN1Y2Nlc3MsIGlzV2lkdGgsIHNp
emUpIHsNCi0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ew0KKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCiAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIikuY29udGVudERvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoKHN1Y2Nlc3MgPyAiUEFTUzogIiA6ICJGQUlMOiAiKSArIGZyYW1lLm5hbWUgKyAi
IHJlc2l6ZWQgY29ycmVjdGx5XG4iKSk7DQogICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAg
ICAgICAgICAgICAgICAgICBmcmFtZS5kb2N1bWVudC5jbG9zZSgpOw0KQEAgLTE5LDE1ICsxOSwx
NSBAQAogICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrUHJvZ3Jl
c3MoKSB7DQotICAgICAgICAgICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7DQorICAgICAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsNCiAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrU3VjY2VzcygpOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgfQ0KIA0KICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsNCi0gICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KLSAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7DQorICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAgICAgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOw0KIA0KICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRlc2NyaXB0aW9uIikuaW5uZXJUZXh0ID0gIlxuVGhpcyB0ZXN0cyB0aGF0IGZyYW1lcyB3
aXRoIGZyYW1lYm9yZGVyPTAgY2FuIGJlIHJlc2l6ZWQuIFNlZSBXZWJLaXQgQnVnIDIzNzUwLiBP
biBzdWNjZXNzLCB0d28gJ1BBU1MnIG1lc3NhZ2VzIHdpbGwgYmUgc2hvd24gYmVsb3cuIjsNCiAN
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZXNldC1zdHlsZS1yZWNhbGMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZXNldC1zdHlsZS1y
ZWNhbGMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZnJhbWVzZXQtc3R5bGUtcmVjYWxjLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTQgKzMsMTQg
QEAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5vZmZzZXRUb3A7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkucm93cyA9ICIyMDAsKiI7Ci0gICAgICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgfQogICAgIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaG92ZXItdGltZXItY3Jhc2guaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9ob3Zlci10aW1lci1jcmFzaC5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9ob3Zlci10aW1lci1jcmFz
aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgZnVuY3Rpb24gZmluaXNoKCkKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBjcmFzaF9zdGVwMigpCkBAIC0xNyw5
ICsxNyw5IEBACiAKICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICAg
ICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKICAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh0YXJnZXQub2Zmc2V0TGVmdCArIHRh
cmdldC5vZmZzZXRXaWR0aCAvIDIsIHRhcmdldC5vZmZzZXRUb3AgKyB0YXJnZXQub2Zmc2V0SGVp
Z2h0IC8gMik7CiAgICAgICAgICAgICAgICAgc2V0VGltZW91dChjcmFzaF9zdGVwMiwgMTAwKTsK
QEAgLTM4LDYgKzM4LDYgQEAKICAgICA8cD4KICAgICAgICAgTm8gY3Jhc2ggbWVhbnMgU1VDQ0VT
Uy4KICAgICA8L3A+Ci0gICAgPGlmcmFtZSBvbm1vdXNlb3Zlcj0iaWYgKCF3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHNldFRpbWVvdXQoY3Jhc2hfc3RlcDIsIDEwMDApIiBpZD0idGFyZ2V0
IiBzcmM9ImRhdGE6dGV4dC9odG1sLDxib2R5IGJnY29sb3I9J3llbGxvdyc+PC9ib2R5PiIgc3R5
bGU9ImJvcmRlcjogc29saWQgYmxhY2siPjwvaWZyYW1lPgorICAgIDxpZnJhbWUgb25tb3VzZW92
ZXI9ImlmICghd2luZG93LnRlc3RSdW5uZXIpIHNldFRpbWVvdXQoY3Jhc2hfc3RlcDIsIDEwMDAp
IiBpZD0idGFyZ2V0IiBzcmM9ImRhdGE6dGV4dC9odG1sLDxib2R5IGJnY29sb3I9J3llbGxvdyc+
PC9ib2R5PiIgc3R5bGU9ImJvcmRlcjogc29saWQgYmxhY2siPjwvaWZyYW1lPgogPC9ib2R5Pgog
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLWFjY2Vzcy1zY3Jl
ZW4tb2YtZGVsZXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2lmcmFtZS1hY2Nlc3Mtc2NyZWVuLW9mLWRlbGV0ZWQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLWFjY2Vzcy1zY3JlZW4tb2YtZGVsZXRl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw4ICsxNCw4IEBACiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcnVuVGVzdHMoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgICAgICAgICAgCiAgICAgICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RoZWZyYW1lJyk7CiAgICAgICAgIHZhciBzID0gZi5jb250ZW50V2luZG93LnNjcmVl
bjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1kaXNwbGF5LW5vbmUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtZGlzcGxheS1u
b25lLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lm
cmFtZS1kaXNwbGF5LW5vbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKICAg
ICA8aGVhZD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVGcmFtZScpOwog
ICAgICAgICAgICAgICAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLWRv
dWJsZS1hdHRhY2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9p
ZnJhbWUtZG91YmxlLWF0dGFjaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9pZnJhbWUtZG91YmxlLWF0dGFjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC03LDggKzcsOCBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIGZpcnN0LCBt
YWtlIHN1cmUgdGhlIHRhcmdldCBuZWVkcyBzdHlsZSByZWNhbGMKICAgICAgICAgICAgIHRhcmdl
dC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAid2hpdGUiOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvaWZyYW1lLWRvdWJsZS1zY2FsZS1jb250ZW50cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1kb3VibGUtc2NhbGUtY29udGVudHMuaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLWRv
dWJsZS1zY2FsZS1jb250ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBA
CiAgICAgPHNjcmlwdD4KICAgICAgIHdpbmRvdy5lbmFibGVQaXhlbFRlc3RpbmcgPSB0cnVlOwog
Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiAgICAgICAvLyBMYXlv
dXQgZm9yIHRoZSBpZnJhbWUgd2lsbCBiZSBzY2FsZWQgZG93biB0byBhIHF1YXJ0ZXIuCiAgICAg
ICAvLyBJdCBhcHBlYXJzIHRoaXMgYnVnIHdpbGwgb25seSBtYW5pZmVzdCBpdHNlbGYgaWYgbGF5
b3V0IGZvciB0aGUKQEAgLTMyLDggKzMyLDggQEAKICAgICAgICAgICAvLyBhcHBlYXIgdG8gYmUg
cmVjYWxjdWxhdGVkIGFmdGVyIHRoaXMKICAgICAgICAgICBzY2FsZVBhZ2UoMS4wKTsKICAgICAg
ICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOwotICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtanMtdXJsLWNsaWVudFdpZHRoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLWpzLXVybC1jbGll
bnRXaWR0aC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9pZnJhbWUtanMtdXJsLWNsaWVudFdpZHRoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiBmdW5jdGlvbiBsb2cocykKIHsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1uYW1lLWFuZC1pZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1uYW1lLWFuZC1pZC5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUt
bmFtZS1hbmQtaWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAgZnVuY3Rpb24g
cHJpbnQobWVzc2FnZSkgewogfQogCiBmdW5jdGlvbiB0ZXN0KCkgewotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBwcmludCgiZnJhbWVzWzBdLm5hbWUgKHNob3Vs
ZCBiZSBmcmFtZTBfbmFtZSk6ICIgKyBmcmFtZXNbMF0ubmFtZSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9pZnJhbWUtbm8tc3JjLWxvY2FsLW9yaWdpbi1hbGxvdy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1uby1zcmMtbG9jYWwtb3Jp
Z2luLWFsbG93Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2lmcmFtZS1uby1zcmMtbG9jYWwtb3JpZ2luLWFsbG93Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOSArMiw5IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiB9CiAKIHZhciBpZnJhbWVIYXNMb2FkZWRGaXJzdFBhZ2UgPSBmYWxzZTsK
QEAgLTE5LDggKzE5LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaW5uZXJGcmFtZS5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0aGVGcmFtZScpLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5uZXJGcmFt
ZScpLmNvbnRlbnREb2N1bWVudC5ib2R5LmlubmVySFRNTCIsICInUEFTU1xcbiciKTsKICAgICAg
ICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgfQogICAgIGZyYW1lRG9jLmJvZHkuYXBwZW5kQ2hpbGQoaW5u
ZXJGcmFtZSk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtbm8tc3Jj
LXNldC1sb2NhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2lmcmFtZS1uby1zcmMtc2V0LWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1uby1zcmMtc2V0LWxvY2F0aW9uLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBpZnJhbWVIYXNMb2FkZWRGaXJzdFBh
Z2UgPSBmYWxzZTsKQEAgLTIyLDggKzIyLDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAKICAgICAg
ICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKIAotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtb25sb2FkLXJlbW92ZS1zZWxmLW5vLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLW9ubG9hZC1yZW1v
dmUtc2VsZi1uby1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9pZnJhbWUtb25sb2FkLXJlbW92ZS1zZWxmLW5vLWNyYXNoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8aHRtbD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lmcmFtZS1vbmxvYWQtcmVtb3ZlLXNlbGYt
bm8tY3Jhc2guanMiPjwvc2NyaXB0PgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9pZnJhbWUtb3B0aW9uLWNyYXNoLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2lmcmFtZS1vcHRpb24tY3Jhc2gueGh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1vcHRpb24tY3Jhc2gueGh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICB2YXIgZnJhbWUgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07CiAgICAgdmFyIGJvZHkg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpOwpAQCAtMTQsOCArMTQsOCBAQCBmdW5j
dGlvbiB0ZXN0KCkKIAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiSWYgbm8gY3Jhc2ggd2hpbGUgcGFpbnRp
bmcsIHRoZSB0ZXN0IHBhc3NlZCAocmVxdWlyZXMgcGl4ZWwgdGVzdCBtb2RlKS4iKSk7CiAKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcGx1Z2luLWxvYWQtcmVtb3ZlLWRvY3VtZW50LWNyYXNo
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXBsdWdp
bi1sb2FkLXJlbW92ZS1kb2N1bWVudC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcGx1Z2luLWxvYWQtcmVtb3ZlLWRvY3VtZW50
LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTggKzEsMTggQEAKIDxodG1sPg0KIDxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4NCiA8c2NyaXB0Pg0KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQ0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQogICAgIHsNCi0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOw0KKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQogICAgIH0N
CiAgICAgDQogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQ0KICAgICB7DQogICAgICAgICBkb2N1bWVu
dC5ib2R5LmlubmVySFRNTCA9ICdQQVNTJzsNCiAgICAgICAgIA0KLSAgICAgICAgaWYgKGxheW91
dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsNCisgICAgICAgIGlmICh0ZXN0UnVubmVyKQ0KKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOw0KICAgICB9DQogPC9zY3JpcHQ+DQogPGlmcmFtZSBzcmM9ImRhdGE6
YXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSxmb28iPjwvaWZyYW1lPg0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZW1vdmUtYWZ0ZXItaWQtY2hhbmdlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlbW92ZS1h
ZnRlci1pZC1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvaWZyYW1lLXJlbW92ZS1hZnRlci1pZC1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTAsOCArMTAsOCBAQCBmdW5jdGlvbiBsb2cocykKICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMp
KTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaWZyYW1lIik7CiBpZnJhbWUuc2V0QXR0cmlidXRlKCJpZCIsICJpZnJhbWUyIiwgMCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctdW5pcXVl
LW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUt
cmVwYXJlbnRpbmctdW5pcXVlLW5hbWUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLXVuaXF1ZS1uYW1lLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwogfQogCiBm
dW5jdGlvbiBydW5UZXN0KCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1z
Y2FsZS1hcHBsaWVkLXR3aWNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvaWZyYW1lLXNjYWxlLWFwcGxpZWQtdHdpY2UuaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXNjYWxlLWFwcGxpZWQtdHdpY2UuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKICAgICA8aWZyYW1lIGlkPSJ0YXJnZXQi
IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjogbm9uZTsiPjwvaWZy
YW1lPgogPC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAg
IHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CiAgICAgZG9j
dW1lbnQuYm9keS5vZmZzZXRUb3A7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmlubmVyVGV4dCA9IHRhcmdldC5jb250ZW50RG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCA+
IDEwMCA/ICJGQUlMIiA6ICJQQVNTIjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lm
cmFtZS1zY3JvbGwtcGFnZS11cC1kb3duLmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXNjcm9sbC1wYWdlLXVwLWRvd24uaHRtbC1kaXNh
YmxlZAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1l
LXNjcm9sbC1wYWdlLXVwLWRvd24uaHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMywx
MSArMywxMSBAQAogPHNjcmlwdD4NCiBmdW5jdGlvbiB0ZXN0KCkgDQogew0KLSAgICBpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikN
CiAgICAgICAgIHJldHVybjsNCiANCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQog
DQogICAgIC8vIDFzdCB0ZXN0OiBpZnJhbWVzIHNjcm9sbGVkIHRvIHRvcCwgdG9wIGxldmVsIGRv
Y3VtZW50IHNjcm9sbGVkIHRvIGJvdHRvbQ0KICAgICAvLyBwYWdldXAgaW4gaW5uZXJtb3N0IGlm
cmFtZSBzaG91bGQgc2Nyb2xsIHRvcCBsZXZlbCBkb2N1bWVudCB1cA0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1zY3JvbGxpbmctYXR0cmlidXRlLW92ZXJmbG93c2Nyb2xs
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXNjcm9s
bGluZy1hdHRyaWJ1dGUtb3ZlcmZsb3dzY3JvbGwuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXNjcm9sbGluZy1hdHRyaWJ1dGUtb3ZlcmZs
b3dzY3JvbGwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQAogICAgICAgICAg
ICAgIlBBU1NFRCIgOiAKICAgICAgICAgICAgICJGQUlMRUQ6ICIgKyByZXBvcnRNaXNtYXRjaCgi
ZnJhbWUxIikgKyAiOyAiICsgcmVwb3J0TWlzbWF0Y2goImZyYW1lMiIpOwogCi0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KICAgICAKIDwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXNldC1pbm5lci1odG1sLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXNldC1pbm5l
ci1odG1sLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2lmcmFtZS1zZXQtaW5uZXItaHRtbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBA
QAogPGh0bWw+CiA8c2NyaXB0PgogZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOwogICAgIH0KICAgICAKICAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b250YWluZXInKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1zZXQtc2Ft
ZS1sb2NhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lm
cmFtZS1zZXQtc2FtZS1sb2NhdGlvbi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtc2V0LXNhbWUtbG9jYXRpb24uaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImFuSUZyYW1lIikuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmID0gInJlc291cmNlcy9w
dXJwbGUuaHRtbCI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gIlNVQ0NFU1MiOwot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0x
OCw5ICsxOCw5IEBACiA8L2hlYWQ+CiA8Ym9keT4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICA8
L3NjcmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXNldC1zYW1l
LXNyYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1z
ZXQtc2FtZS1zcmMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvaWZyYW1lLXNldC1zYW1lLXNyYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsx
MCw3IEBACiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYW5JRnJhbWUiKS5z
cmMgPSAicmVzb3VyY2VzL3B1cnBsZS5odG1sIjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuZmlyc3RDaGlsZC5ub2RlVmFs
dWUgPSAiU1VDQ0VTUyI7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfQog
ICAgIH0KICAgICAKQEAgLTE4LDkgKzE4LDkgQEAKIDwvaGVhZD4KIDxib2R5PgogICA8c2NyaXB0
PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKICAgICB9CiAgIDwvc2NyaXB0PgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9pZnJhbWUtdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvaWZyYW1lLXRhcmdldC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9pZnJhbWUtdGFyZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4
IEBACiA8aGVhZD4KICAgICA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewotICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgIAog
ICAgICAgICB2YXIgbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVmb3JtJyk7CiAgICAg
ICAgIGwuc3VibWl0KCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS13aW5k
b3ctZm9jdXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJh
bWUtd2luZG93LWZvY3VzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2lmcmFtZS13aW5kb3ctZm9jdXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4
ICsxLDggQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0PgotICAgICAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIG1vdmVGb2N1cygpIHsKICAgICAgICAgICAgICAgICB2YXIgaWZy
bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJydGUiKTsKQEAgLTE0LDcgKzE0LDcgQEAKICAg
ICAgICAgICAgICAgICBpZnJtLmNvbnRlbnREb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9uIjsKICAg
ICAgICAgICAgICAgICBpZnJtLmNvbnRlbnRXaW5kb3cuZm9jdXMoKTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1QnKTsKICAgICAgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bignRScpOwogICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCdTJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pbmxpbmUtb2JqZWN0LWlu
c2lkZS1mcmFtZXNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2lubGluZS1vYmplY3QtaW5zaWRlLWZyYW1lc2V0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysr
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lubGluZS1vYmplY3QtaW5zaWRlLWZyYW1lc2V0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
ICAgICAKICAgICBkY29udC5hcHBlbmRDaGlsZChlKTsKICAgICAKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5
KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmRpc3Bs
YXkoKTsKIH0KIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9qYXZh
c2NyaXB0LXVybC1hcy1mcmFtZXNyYy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2phdmFzY3JpcHQtdXJsLWFzLWZyYW1lc3JjLWNyYXNoLmh0bWwJKHJl
dmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2phdmFzY3JpcHQtdXJs
LWFzLWZyYW1lc3JjLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8
c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0Ij4NCiAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjMwDQogDQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgew0KLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7DQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KIH0N
CiANCiBmdW5jdGlvbiBtYWtlRnJhbWVDb250ZW50cygpIHsNCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9qYXZhc2NyaXB0LXVybC1mb3ItZGVsZXRlZC1mcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2phdmFzY3JpcHQtdXJsLWZvci1kZWxldGVk
LWZyYW1lLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2phdmFzY3JpcHQtdXJsLWZvci1kZWxldGVkLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiA8Ym9keT4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGlmciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogaWZyLnNldEF0dHJpYnV0ZSgnc3Jj
JywgJ2phdmFzY3JpcHQ6cGFyZW50LmJvb20oKSwgIjxkaXY+Q3Jhc2g/PC9kaXY+IicpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvbGF5b3V0LWFmdGVyLWRlc3RydWN0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvbGF5b3V0LWFmdGVyLWRlc3Ry
dWN0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2xheW91dC1hZnRlci1kZXN0cnVjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDE1ICs0
LDE1IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGlmICghd2luZG93LnNlc3Npb25TdG9yYWdl
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIH0KIAogICAgIGlmIChzZXNzaW9uU3Rv
cmFnZS50ZXN0Q29tcGxldGVkKSB7CiAgICAgICAgIGRlbGV0ZSBzZXNzaW9uU3RvcmFnZS50ZXN0
Q29tcGxldGVkOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBzZXNzaW9uU3RvcmFnZS50ZXN0Q29tcGxldGVkID0gdHJ1
ZTsKICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKHRydWUpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvbG9jYXRpb24tcHV0LWFmdGVyLXJlbW92YWwuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9sb2NhdGlvbi1wdXQtYWZ0ZXItcmVtb3Zh
bC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9sb2Nh
dGlvbi1wdXQtYWZ0ZXItcmVtb3ZhbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBA
QCBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xCiA8cD5JZiB0aGUgdGVz
dCBwYXNzZXMsIHlvdSdsbCBzZWUgYSBQQVNTIG1lc3NhZ2UgYmVsb3cuPC9wPgogCiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIAogPGlmcmFtZSBzcmM9InJlc291cmNlcy9sb2Nh
dGlvbi1wdXQtYWZ0ZXItcmVtb3ZhbC1mcmFtZS5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL2xvY2F0aW9uLXJlZGlyZWN0LXVzZXItZ2VzdHVyZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2xvY2F0aW9uLXJlZGlyZWN0LXVz
ZXItZ2VzdHVyZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9sb2NhdGlvbi1yZWRpcmVjdC11c2VyLWdlc3R1cmUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMiwxMyArMiwxMyBAQAogPGhlYWQ+CiA8c2NyaXB0PiAgICAgIAogICAgIGZ1bmN0aW9uIHJ1
blRlc3RzKCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNr
cygpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wVXNlckdlc3R1cmVJbkZy
YW1lTG9hZENhbGxiYWNrcygpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBzZXRUaW1lb3V0KCJsb2NhdGlvbi5ocmVmPSdkYXRh
OnRleHQvaHRtbCw8c2NyaXB0PmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTwvIiAr
ICJzY3JpcHQ+JyIsIDEwMDApOworICAgICAgICBzZXRUaW1lb3V0KCJsb2NhdGlvbi5ocmVmPSdk
YXRhOnRleHQvaHRtbCw8c2NyaXB0PnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpPC8iICsgInNjcmlw
dD4nIiwgMTAwMCk7CiAgICAgfQogICAgIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvbG90cy1vZi1pZnJhbWVzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvbG90cy1vZi1pZnJhbWVzLmh0bWwJKHJldmlzaW9uIDEyMDkw
MykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2xvdHMtb2YtaWZyYW1lcy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgogICB2YXIgbWF4TnVtYmVyT2ZGcmFtZXMgPSAxMDAwOwogCi0gIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
ICAgZnVuY3Rpb24gY3JlYXRlSUZyYW1lcygpIHsKICAgICB2YXIgc3RyID0gIjxkaXYgaWQ9XCJz
dGF0dXNcIj48L2Rpdj4iOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvbG90cy1vZi1v
YmplY3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvbG90cy1v
Zi1vYmplY3RzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2xvdHMtb2Ytb2JqZWN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAog
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICB2YXIgbWF4TnVtYmVyT2ZGcmFtZXMg
PSAxMDAwOwogCi0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgdmFyIGNyZWF0ZWRPYmplY3RzID0gMDsK
ICAgZnVuY3Rpb24gY291bnQoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9tZXRh
LXJlZnJlc2gtdXNlci1nZXN0dXJlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvbWV0YS1yZWZyZXNoLXVzZXItZ2VzdHVyZS5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9tZXRhLXJlZnJlc2gtdXNlci1nZXN0dXJlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1l
cXVpdj0icmVmcmVzaCIgY29udGVudD0iMjsuL3Jlc291cmNlcy9tZXRhLXJlZnJlc2gtdGFyZ2V0
Lmh0bWwiPgogPHNjcmlwdD4gICAgICAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL25lZ2F0aXZlLXJlbWFpbmluZy1sZW5ndGgtY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9uZWdhdGl2ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNo
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL25lZ2F0
aXZlLXJlbWFpbmluZy1sZW5ndGgtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsy
LDggQEAKIDxoZWFkPgogICAgIDx0aXRsZT48L3RpdGxlPgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8ZnJhbWVzZXQgY29scz0iNiwqIj4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL29ubG9hZC1yZW1vdmUtaWZyYW1lLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvb25sb2FkLXJlbW92ZS1pZnJh
bWUtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvb25sb2FkLXJlbW92ZS1pZnJhbWUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEs
OCArMTEsOCBAQCBkb2N1bWVudC4KIDxkaXYgaWQ9ImRpdiI+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKIAogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdicpLmlubmVySFRNTCA9
ICc8aWZyYW1lIHNyYz0iYWJvdXQ6YmxhbmsiIG9ubG9hZD0idGhpcy5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKHRoaXMpIj48L2lmcmFtZT4nOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZW1vdmFsLWJlZm9yZS1hdHRhY2gtY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZW1vdmFsLWJlZm9yZS1hdHRhY2gtY3Jhc2guaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVtb3ZhbC1i
ZWZvcmUtYXR0YWNoLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiAK
ICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgICAgICAgICB2
YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAg
ICBzY3JpcHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQocGFyZW50KTsiKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZW1vdmUtZnJhbWUtd2l0aC1zY3JvbGxiYXJzLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVtb3ZlLWZyYW1lLXdpdGgtc2Nyb2xsYmFycy1jcmFz
aC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZW1v
dmUtZnJhbWUtd2l0aC1zY3JvbGxiYXJzLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2
LDEwICsxNiwxMCBAQCBmdW5jdGlvbiBkZXN0cm95SWZyYW1lKCkKIHsKICAgICBpZnJhbWUucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChpZnJhbWUpOwogICAgIGxvZygiUEFTUzogWW91dCBkaWRuJ3Qg
Y3Jhc2guIik7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBpZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7
IHNldFRpbWVvdXQoZGVzdHJveUlmcmFtZSwgMCk7IH0KLWxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLWxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK3Rlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwordGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiA8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3JlcGFpbnQtZGlzcGxheS1ub25lLWNy
YXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVwYWludC1k
aXNwbGF5LW5vbmUtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVwYWludC1kaXNwbGF5LW5vbmUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw3ICsxLDcgQEAKIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHRl
c3QoKQpAQCAtMTEsOCArMTEsOCBAQAogICAgICAgICB0LnN0eWxlLmRpc3BsYXk9J25vbmUnOwog
ICAgICAgICB0LnNyYz0nYWJvdXQ6YmxhbmsnOwogICAgICAgICB0LmNvbnRlbnREb2N1bWVudC5i
b2R5Lm9mZnNldFRvcDsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgICAgICB9CiAgICAgfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWFib3V0LWJsYW5rLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hYm91dC1ibGFuay5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWFib3V0LWJsYW5rLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBA
CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7
IAogICAgIGlmIChzZWxmLmNvbnRhaW5pbmdfZnJhbWUuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BsdWdpbicpLmRlc3Ryb3lTdHJlYW0pCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy5o
dG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCAr
Miw4IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
IHZhciBmYWlsZWQgPSBmYWxzZTsKIHZhciBmcmFtZXMgPSAwOyAgICAgICAgIC8qIG51bWJlciBv
ZiBhbGxvd2VkIGZyYW1lcyB0aGF0IGNhbGxlZCBiYWNrICovCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWNsb3NlLXRvcC1ub2Nsb3NlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1jbG9zZS10
b3Atbm9jbG9zZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zYW5kYm94ZWQtaWZyYW1lLWNsb3NlLXRvcC1ub2Nsb3NlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzEsMTEgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5X
aW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29t
cGxldGUodHJ1ZSk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTE5LDggKzE5LDggQEAgZnVu
Y3Rpb24gc3RhcnQoKSB7CiB9CiAKIGZ1bmN0aW9uIGRvbmUoKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CiB9CiAKIC8vIEluIExheW91dFRlc3RzIG1vZGUgd2UgY2FuIHN0YXJ0IGF1
dG9tYWdpY2FsbHkuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLWNsb3NlLXRvcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtY2xvc2UtdG9wLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtY2xvc2UtdG9wLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTEgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0Pgot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUo
dHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNl
dENhbk9wZW5XaW5kb3dzKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRv
d3NXaGVuQ29tcGxldGUodHJ1ZSk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTIzLDggKzIz
LDggQEAgZnVuY3Rpb24gZG9uZSgpIHsKICAgICAvLyBXZSBlbmQgdGhlIHRlc3QgYXN5bmNocm9u
b3VzbHkgYmVjYXVlcyB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZAogICAgIC8vIGZyb20g
YSBzdHJhbmdlIGNhbGxzdGFjay4KICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7
Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIDAp
OwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZv
cm1zLWR5bmFtaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm1zLWR5bmFtaWMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1keW5hbWljLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cudGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogfQogCiB2YXIgc3VibWlzc2lvbkNvdW50ID0gMDsKQEAgLTE3LDggKzE3LDggQEAgZnVu
Y3Rpb24gYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQogICAgIGlmIChzdWJtaXNzaW9uQ291bnQgPT0g
MikgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdF9zdGF0dXMiKS5pbm5l
ckhUTUwgPSAoZGlzYWxsb3dlZFN1Ym1pc3Npb24gPyAiRkFJTCIgOiAiUEFTUyIpOwogCi0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LWZvcm1zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTIsOSArMiw5IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiB2YXIgc3VibWlz
c2lvbkNvdW50ICAgICAgPSAwOwpAQCAtMTcsOCArMTcsOCBAQCBmdW5jdGlvbiBhbGxvd2VkRm9y
bVN1Ym1pdHRlZCgpCiAgICAgaWYgKHN1Ym1pc3Npb25Db3VudCA9PSAxMCkgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdF9zdGF0dXMiKS5pbm5lckhUTUwgPSAoZGlzYWxs
b3dlZFN1Ym1pc3Npb24gPyAiRkFJTCIgOiAiUEFTUyIpOwogICAgICAgCi0gICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfQogfQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWhpc3Rvcnkt
ZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1oaXN0b3J5LWRlbmllZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWhpc3RvcnktZGVuaWVkLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHdpbmRvdy51bmxvYWQg
PSBmdW5jdGlvbigpIHsKQEAgLTE3LDggKzE3LDggQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkgewogICAgIC8vIHdhaXQgZm9yIGEgYml0LgogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CiAgICAgICAgIGFsZXJ0KCJQQVNTIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgIH0sIDIwKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLWFsbG93ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5h
dmlnYXRpb24tYWxsb3dlZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tYWxsb3dlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDkgKzMsOSBAQAogPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogZnVuY3Rp
b24gY2hpbGRGcmFtZVdhc05hdmlnYXRlZCgpCkBAIC0yNyw4ICsyNyw4IEBAIGZ1bmN0aW9uIHNh
bmRib3hXYXNOYXZpZ2F0ZWQoKQogICAgIHNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnc2FuZGJveGVkRnJhbWVJZCcpLnNhbmRib3giLCAiJ2FsbG93LXNjcmlwdHMgYWxsb3ctc2Ft
ZS1vcmlnaW4nIik7CiAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKIAotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB3
aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPGhlYWQ+CiA8c2NyaXB0PgogCi1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIAogdmFyIG5hdmlnYXRlZEZyYW1lcyA9IDA7CkBAIC0yMCw4ICsyMCw4IEBAIGZ1bmN0aW9u
IGNoZWNrUmVzdWx0cygpCiAgICAgZWxzZQogICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9
ICdGQUlMOiBmcmFtZXMgbm90IG5hdmlnYXRlZCBwcm9wZXJseSc7CiAKLSAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgd2lu
ZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogCiBmdW5jdGlvbiBjb3VudEZyYW1lKCkK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10YXJnZXRsaW5rLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
c2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRhcmdldGxpbmsuaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXRhcmdldGxpbmsuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxoZWFk
PgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB3aW5kb3cudGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHZhciBuYXZpZ2F0ZWRGcmFtZXMgPSAwOwpAQCAt
MjAsOCArMjAsOCBAQCBmdW5jdGlvbiBjaGVja1Jlc3VsdHMoKQogICAgIGVsc2UKICAgICAgICAg
dGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZnJhbWVzIG5vdCBuYXZpZ2F0ZWQgcHJvcGVy
bHknOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAog
ZnVuY3Rpb24gY291bnRGcmFtZSgpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLWJ5LWNvbnN0YW50LW5hbWUyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXRvcC1ieS1jb25zdGFudC1uYW1lMi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLWJ5LWNv
bnN0YW50LW5hbWUyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4K
IDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9
CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnktY29uc3RhbnQtbmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi10b3AtYnktY29uc3RhbnQtbmFtZS5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLWJ5LWNvbnN0
YW50LW5hbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIDwv
c2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1uYW1lLWRlbmllZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3At
YnktbmFtZS1kZW5pZWQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1uYW1lLWRlbmllZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIHdpbmRvdy5uYW1lID0gInRhcmdldCIKIDwvc2NyaXB0PgogPC9o
ZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXRvcC1ieS1uYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1uYW1lLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi10b3AtYnktbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBA
QAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogfQogd2luZG93Lm5hbWUgPSAidGFyZ2V0IjsKIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1kZW5p
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5hdmlnYXRpb24tdG9wLWRlbmllZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLWRl
bmllZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9w
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXRvcC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi13
aW5kb3dvcGVuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXdpbmRvd29wZW4uaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9u
LXdpbmRvd29wZW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwxMCArMiwxMCBAQAogPGhlYWQ+
CiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2lu
ZG93cyh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5u
ZXIuc2V0Q2FuT3BlbldpbmRvd3ModHJ1ZSk7CiB9CiAKIHZhciB0ZXN0U3RhdHVzICAgICAgID0g
IkZBSUw6IG5vdCBjb21wbGV0ZWQiOwpAQCAtMjAsOCArMjAsOCBAQCBmdW5jdGlvbiB1cGRhdGVT
dGF0dXMobG9hZGVkLCBkb25lKQogCiAgICAgaWYgKG1haW5XaW5kb3dMb2FkZWQgJiYgdGVzdENv
bXBsZXRlZCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFN0YXR1cyIp
LmlubmVySFRNTCA9IHRlc3RTdGF0dXM7Ci0gICAgICAgIGlmICh0ZXN0Q29tcGxldGVkICYmIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHRlc3RDb21wbGV0ZWQgJiYgd2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbm9zY3Jp
cHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQt
aWZyYW1lLW5vc2NyaXB0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbm9zY3JpcHQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMiw5ICsyLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVh
ZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGFyc2lu
Zy1zcGFjZS1jaGFyYWN0ZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1wYXJzaW5nLXNwYWNlLWNoYXJhY3RlcnMuaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1wYXJzaW5nLXNwYWNlLWNoYXJhY3RlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsOCAr
MTcsOCBAQCBmdW5jdGlvbiBuZXh0KCkgewogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3RDaGFyYWN0ZXIocG9z
c2libGVEZWxpbWl0ZXIsIG1lc3NhZ2UpIHsKQEAgLTMwLDkgKzMwLDkgQEAgZnVuY3Rpb24gdGVz
dENoYXJhY3Rlcihwb3NzaWJsZURlbGltaXRlcgogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaWZyYW1lKTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0K
IAogbmV4dCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1wbHVnaW5zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2Fu
ZGJveGVkLWlmcmFtZS1wbHVnaW5zLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+IAotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyAK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7IAog
IAogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyAKICAgICBzaG91bGRCZVRydWUoIihzZWxm
LmFwcGxldEZyYW1lMS5kb2N1bWVudFsnYXBwJ10uaW5pdCkgIT0gdW5kZWZpbmVkIik7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXNjcmlwdGluZy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
c2NyaXB0aW5nLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtc2NyaXB0aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIs
OCArMiw4IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
IHZhciBkaXNhbGxvd2VkRXhlY3V0ZWQgPSAwOwogdmFyIGFsbG93ZWRFeGVjdXRlZCA9IDA7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LXN0b3JhZ2UuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSAr
Myw5IEBACiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpOwogfQogCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7IApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2V0LXVubG9hZGVkLWZyYW1lLWxvY2F0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2V0LXVubG9hZGVkLWZyYW1l
LWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NldC11bmxvYWRlZC1mcmFtZS1sb2NhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDggKzEsOCBAQAogPGh0bWw+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIDwvc2NyaXB0PgogPGZyYW1lc2V0IGNvbHM9IjUwJSwgKiI+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zdWJmcmFtZS1sb2FkLWNyYXNoLW1haW4uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zdWJmcmFtZS1sb2FkLWNyYXNoLW1h
aW4uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3Vi
ZnJhbWUtbG9hZC1jcmFzaC1tYWluLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzEsMTcg
QEAKIDxodG1sPgogPG9iamVjdCBkYXRhPSJyZXNvdXJjZXMvc3ViZnJhbWUtbG9hZC1jcmFzaC5z
dmciIGlkPSJyb290IiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9vYmplY3Q+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
CiAgICAgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JykuY29udGVudERvY3Vt
ZW50OwogICAgIHJvb3QuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeyBkb2N1
bWVudC5vcGVuKCk7IGRvY3VtZW50LndyaXRlKCJQQVNTIik7IGRvY3VtZW50LmNsb3NlKCk7IH0s
IDEpOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIHJvb3QuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3QnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUn
KSk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAgCisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyAg
ICAgIAogICAgIH0sIDApOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zdWJmcmFtZS1sb2FkLWpzLXVybC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3N1YmZyYW1lLWxvYWQtanMtdXJsLWNyYXNoLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3N1YmZyYW1lLWxvYWQtanMt
dXJsLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiA8ZGl2PlRlc3Qg
cGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLjwvZGl2PgotPHNjcmlwdD5pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7PC9z
Y3JpcHQ+Cis8c2NyaXB0PmlmICh3aW5kb3cudGVzdFJ1bm5lcikgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7PC9zY3JpcHQ+CiA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3N1YmZyYW1lLWxvYWQtanMt
dXJsLWNyYXNoLWlmcmFtZS5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Rha2UtZm9jdXMtZnJvbS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy90YWtlLWZvY3VzLWZyb20taWZyYW1lLmh0bWwJKHJldmlzaW9uIDEy
MDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Rha2UtZm9jdXMtZnJvbS1pZnJhbWUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxpZnJhbWUgc3JjPSJkYXRhOnRl
eHQvaHRtbCw8Ym9keT48aW5wdXQ+PHNjcmlwdD5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnaW5wdXQnKVswXS5mb2N1cygpPC9zY3JpcHQ+PC9ib2R5PiIgaGVpZ2h0PTQwIHdpZHRoPTIw
MD48L2lmcmFtZT4KIDxwPlRoaXMgZmllbGQgc2hvdWxkIGxvb2sgYW5kIGFjdCBmb2N1c2VkLiBU
cnkgdG8gdHlwZSBpbnRvIGl0OiA8aW5wdXQ+PC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKQEAgLTI1LDggKzI1LDggQEAgZnVuY3Rpb24gdGVz
dDIoKQogICAgICAgICAgICAgaW5wdXQudmFsdWUgPSAiUEFTUyI7CiAgICAgfQogCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CiAKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvdHJhbnNwYXJlbnQtc2Nyb2xsYmFyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvdHJhbnNwYXJlbnQtc2Nyb2xsYmFyLmh0bWwJKHJldmlzaW9u
IDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3RyYW5zcGFyZW50LXNjcm9sbGJh
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxNyArMjAsMTcgQEAgYm9keSB7CiA8c2NyaXB0
PgogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7CiAgICAgfQog
CiAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmJv
ZHkuc2Nyb2xsVG9wID0gMjAwMDsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOwotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZGlzcGxheSgpOwor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KICAgICB9LCAw
KTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3VybC1zZWxlY3RlZC1jcmFzaC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3VybC1zZWxlY3RlZC1j
cmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy91
cmwtc2VsZWN0ZWQtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxi
b2R5PgogVGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBjcmFzaCAobWF5IHJlcXVpcmUgbGliZ21h
bGxvYyBhbmQgcmVwZWF0aW5nKSBhbmQgdGhpcyBsaW5lIGdldHMgZXJhc2VkLgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiB2YXIgaXRlcmF0aW9uc0xl
ZnQgPSAyOwogZnVuY3Rpb24gdGVzdCgpCkBAIC0xNCw4ICsxNCw4IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBmcmFtZXNbMF0uaGlzdG9yeS5nbygwKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBkb2N1bWVudC5ib2R5LnRleHRDb250ZW50ID0gZnJhbWVzWzBdLmRvY3VtZW50LmJvZHkudGV4
dENvbnRlbnQ7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvdmlld3Nv
dXJjZS1lbXB0eS1hdHRyaWJ1dGUtdmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy92aWV3c291cmNlLWVtcHR5LWF0dHJpYnV0ZS12YWx1ZS5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy92aWV3c291cmNlLWVtcHR5
LWF0dHJpYnV0ZS12YWx1ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0
bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKICAgICB9CiA8L3Njcmlw
dD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3ZpZXdzb3VyY2UtbGlu
ZWJyZWFrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvdmlld3Nv
dXJjZS1saW5lYnJlYWsuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvdmlld3NvdXJjZS1saW5lYnJlYWsuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5
ICsxLDkgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAg
ICAgfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy92
aWV3c291cmNlLWxpbmstb24taHJlZi12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3ZpZXdzb3VyY2UtbGluay1vbi1ocmVmLXZhbHVlLmh0bWwJKHJldmlz
aW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3ZpZXdzb3VyY2UtbGluay1v
bi1ocmVmLXZhbHVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8IS0tIFRo
aXMgdGVzdHMgdGhhdCBhIGJhc2UgZWxlbWVudCBpcyByZXNwZWN0ZWQgaW4gcmVuZGVyaW5nIGFu
Y2hvcnMgb24gdmlld3NvdXJjZSBwYWdlLiAtLT4KIDxoZWFkPgogPHNjcmlwdD4KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gY2hlY2tGcmFtZShpZCkgewpAQCAtNDIsMTIgKzQyLDEyIEBACiAg
ICAgICAgIGlmIChjaGVja0ZyYW1lKCJsb3dlciIpICYmIGNoZWNrRnJhbWUoInVwcGVyIikpIHsK
ICAgICAgICAgICAgIHJlc3VsdFRleHQgPSAiUEFTUyI7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKICAgICAgICAgICAgIGRvY3VtZW50Lm9wZW4oKTsKICAgICAgICAgICAgIGRvY3Vt
ZW50LndyaXRlKHJlc3VsdFRleHQpOwogICAgICAgICAgICAgZG9jdW1lbnQuY2xvc2UoKTsKIAot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSByZXN1bHRU
ZXh0OwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy92aWV3c291cmNl
LXBsYWluLXRleHQtdGFncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3ZpZXdzb3VyY2UtcGxhaW4tdGV4dC10YWdzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysr
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3ZpZXdzb3VyY2UtcGxhaW4tdGV4dC10YWdzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZm91bmQodGV4dCwgcmVnZXhTdHJpbmcpCkBAIC0z
MiwxMSArMzIsMTEgQEAKICAgICAgICAgcmVzdWx0VGV4dCArPSB0ZXN0U2VjdGlvbihyZXN1bHQs
ICd4bXAnKTsKICAgICAgICAgcmVzdWx0VGV4dCArPSB0ZXN0U2VjdGlvbihyZXN1bHQsICd0ZXh0
YXJlYScpOwogCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICBkb2N1bWVudC5vcGVu
KCk7CiAgICAgICAgICAgICBkb2N1bWVudC53cml0ZShyZXN1bHRUZXh0KTsKICAgICAgICAgICAg
IGRvY3VtZW50LmNsb3NlKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50
ZXh0Q29udGVudCA9IHJlc3VsdFRleHQ7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3ZpZXdzb3VyY2UtdW5maW5pc2hlZC10YWdzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvdmlld3NvdXJjZS11bmZpbmlzaGVkLXRhZ3MuaHRtbAko
cmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvdmlld3NvdXJjZS11
bmZpbmlzaGVkLXRhZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIDxodG1s
PgogPGhlYWQ+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAKICAgICB2YXIgcmVzdWx0cyA9IHt9OwpA
QCAtMTgsMTMgKzE4LDEzIEBACiAgICAgICAgICAgICB2YXIgcmVzdWx0VGV4dCA9ICJGQUlMIjsK
IAogICAgICAgICByZXN1bHRzW3RhZ10gPSByZXN1bHRUZXh0OwotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyICYmIHJlc3VsdHNbInNjcmlwdCJdICYmIHJlc3VsdHNbInRl
eHRhcmVhIl0pIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHJlc3VsdHNbInNj
cmlwdCJdICYmIHJlc3VsdHNbInRleHRhcmVhIl0pIHsKICAgICAgICAgICAgIGRvY3VtZW50Lm9w
ZW4oKTsKICAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJzY3JpcHQ6ICIgKyByZXN1bHRzWyJz
Y3JpcHQiXSArICI8YnI+Iik7CiAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgidGV4dGFyZWE6
ICIgKyByZXN1bHRzWyJ0ZXh0YXJlYSJdICsgIjxicj4iKTsKICAgICAgICAgICAgIGRvY3VtZW50
LmNsb3NlKCk7CiAKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFnICsgIl9yZXN1bHQiKS50
ZXh0Q29udGVudCA9IHJlc3VsdFRleHQ7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2ZsYXR0ZW5pbmcvY3Jhc2gtc3ZnLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9jcmFzaC1zdmctZG9jdW1lbnQu
aHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRl
bmluZy9jcmFzaC1zdmctZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkg
QEAKIDxib2R5PgogPHNjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1
ZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRy
dWUpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvZnJhbWVzZXQtZmxhdHRlbmluZy1h
ZHZhbmNlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0
ZW5pbmcvZnJhbWVzZXQtZmxhdHRlbmluZy1hZHZhbmNlZC5odG1sCShyZXZpc2lvbiAxMjA5MDMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2ZyYW1lc2V0LWZsYXR0ZW5p
bmctYWR2YW5jZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJs
ZWQodHJ1ZSk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOwogICAgICAg
ICAgICAgLy8gRm9yY2Ugc3luY2hyb25vdXMgbGF5b3V0LgogICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2ZsYXR0ZW5pbmcvZnJhbWVzZXQtZmxhdHRlbmluZy1ncmlkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9mcmFtZXNldC1mbGF0dGVuaW5n
LWdyaWQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZmxhdHRlbmluZy9mcmFtZXNldC1mbGF0dGVuaW5nLWdyaWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMyw4ICszLDggQEAKICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RnJhbWVGbGF0dGVu
aW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOwogICAgICAg
ICAvLyBGb3JjZSBzeW5jaHJvbm91cyBsYXlvdXQuCiAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0SGVpZ2h0OwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5p
bmcvZnJhbWVzZXQtZmxhdHRlbmluZy1zaW1wbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2ZyYW1lc2V0LWZsYXR0ZW5pbmctc2ltcGxlLmh0
bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5p
bmcvZnJhbWVzZXQtZmxhdHRlbmluZy1zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
NiArMSwxNiBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEZyYW1lRmxhdHRlbmlu
Z0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgewogICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgICAgICAgIH0sIDApOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2ZyYW1lc2V0LWZsYXR0ZW5p
bmctc3ViZnJhbWUtcmVzaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvZmxhdHRlbmluZy9mcmFtZXNldC1mbGF0dGVuaW5nLXN1YmZyYW1lLXJlc2l6ZS5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5n
L2ZyYW1lc2V0LWZsYXR0ZW5pbmctc3ViZnJhbWUtcmVzaXplLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOSArMSw5IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVl
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0RnJhbWVGbGF0
dGVuaW5nRW5hYmxlZCh0cnVlKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3Qo
KQpAQCAtMTgsOSArMTgsOSBAQAogICAgICAgICAgICAgICAgIGRpdi5zdHlsZS53aWR0aD0nMzAw
JzsKICAgICAgICAgICAgICAgICBkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yPSdibHVlJzsKIAot
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICAgICAgZnJhbWVzWzBdLmRv
Y3VtZW50LmJvZHkub2Zmc2V0VG9wOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9mcmFtZXNldC1mbGF0dGVuaW5nLXN1YmZyYW1l
c2V0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5p
bmcvZnJhbWVzZXQtZmxhdHRlbmluZy1zdWJmcmFtZXNldHMuaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9mcmFtZXNldC1mbGF0dGVu
aW5nLXN1YmZyYW1lc2V0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMsOCBAQAogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RnJhbWVGbGF0dGVuaW5n
RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CiAg
ICAgICAgICAgICAvLyBGb3JjZSBzeW5jaHJvbm91cyBsYXlvdXQuCiAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5p
bmctY3Jhc2guaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwICsxLDEwIEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOwogICAg
ICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkBAIC0xNywxMCArMTcsMTAgQEAKICAgICA8
c2NyaXB0PgogICAgICAgICBmdW5jdGlvbiB0ZXN0MigpewogICAgICAgICAgICAgdmFyIGkgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdLmNsaWVudFdpZHRoOyAKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKICAgICAgICAgfQog
ICAgIDwvc2NyaXB0PgogICAgIDxib2R5IG9ucmVzaXplPSd0ZXN0MigpOyc+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLWhl
aWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5p
bmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtaGVpZ2h0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmct
Zml4ZWQtaGVpZ2h0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFi
bGVkKHRydWUpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKICAgICAg
ICAgICAgIC8vIEZvcmNlIHN5bmNocm9ub3VzIGxheW91dC4KICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkub2Zmc2V0SGVpZ2h0OwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLWFuZC1oZWlnaHQt
bm8tc2Nyb2xsaW5nLXdpdGgtanMtZm9yY2VkLWxheW91dC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQt
d2lkdGgtYW5kLWhlaWdodC1uby1zY3JvbGxpbmctd2l0aC1qcy1mb3JjZWQtbGF5b3V0Lmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcv
aWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhlaWdodC1uby1zY3JvbGxpbmctd2l0
aC1qcy1mb3JjZWQtbGF5b3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBACiAK
ICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0
cnVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhlZC13
aWR0aC1hbmQtaGVpZ2h0LW5vLXNjcm9sbGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgt
YW5kLWhlaWdodC1uby1zY3JvbGxpbmcuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhlZC13aWR0
aC1hbmQtaGVpZ2h0LW5vLXNjcm9sbGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDggKzMs
OCBAQAogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RnJhbWVG
bGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
dHJ1ZSk7CiAgICAgICAgICAgICAvLyBGb3JjZSBzeW5jaHJvbm91cyBsYXlvdXQuCiAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKICAgICAgICAgfQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhlZC13aWR0
aC1hbmQtaGVpZ2h0LXplcm8tc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhl
aWdodC16ZXJvLXNpemUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhlZC13aWR0aC1hbmQtaGVp
Z2h0LXplcm8tc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogCiAgICAg
ICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEZvcmNlIHN5bmNocm9ub3VzIGxheW91
dC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0
ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhlaWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgt
YW5kLWhlaWdodC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLWFuZC1oZWlnaHQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxNiBAQAogPGh0bWw+CiA8aGVhZD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewogICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0sIDApOwog
ICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9m
bGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1m
aXhlZC13aWR0aC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0RnJh
bWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKICAgICAgICAgICAgIC8vIEZvcmNlIHN5bmNocm9u
b3VzIGxheW91dC4KICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OwogICAg
ICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1m
bGF0dGVuaW5nLW5lc3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctbmVzdGVkLmh0bWwJKHJldmlzaW9uIDEy
MDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0
ZW5pbmctbmVzdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBACiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFi
bGVkKHRydWUpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKICAgICAg
ICAgICAgIC8vIEZvcmNlIHN5bmNocm9ub3VzIGxheW91dC4KICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkub2Zmc2V0SGVpZ2h0OwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLW9mZnNjcmVlbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5p
bmctb2Zmc2NyZWVuLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctb2Zmc2NyZWVuLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0RnJh
bWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKICAgICAgICAgICAgIC8vIEZvcmNlIHN5bmNocm9u
b3VzIGxheW91dC4KICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OwogICAg
ICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1m
bGF0dGVuaW5nLW91dC1vZi12aWV3LWFuZC1zY3JvbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLW91dC1vZi12
aWV3LWFuZC1zY3JvbGwuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1vdXQtb2Ytdmlldy1hbmQtc2Ny
b2xsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcgKzEsMTcgQEAKIDxodG1sPgogPGhlYWQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOwogICAgICAgICB9
CiAKICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgc2Nyb2xsVG8oMTIwMCwgMCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgfQogICAgIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUt
ZmxhdHRlbmluZy1vdXQtb2Ytdmlldy1zY3JvbGwtYW5kLXJlbGF5b3V0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmlu
Zy1vdXQtb2Ytdmlldy1zY3JvbGwtYW5kLXJlbGF5b3V0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmct
b3V0LW9mLXZpZXctc2Nyb2xsLWFuZC1yZWxheW91dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDkgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEZyYW1lRmxhdHRlbmlu
Z0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKQEAg
LTExLDggKzExLDggQEAKICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICAgc2Nyb2xsVG8oMTIwMCwgMCk7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5vZmZzZXRXaWR0aDsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0sIDAp
OwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLW91dC1vZi12aWV3Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmlu
Zy1vdXQtb2Ytdmlldy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLW91dC1vZi12aWV3Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsOCArMyw4IEBACiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgogICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKICAgICAgICAgICAgIC8vIEZvcmNlIHN5bmNo
cm9ub3VzIGxheW91dC4KICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0Owog
ICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFt
ZS1mbGF0dGVuaW5nLXNlbGVjdGlvbi1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctc2VsZWN0aW9uLWNy
YXNoLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Zs
YXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctc2VsZWN0aW9uLWNyYXNoLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTIsOSArMiw5IEBACiA8aGVhZD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
dHJ1ZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEZvcmNlIHN5bmNocm9ub3Vz
IGxheW91dC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1l
LWZsYXR0ZW5pbmctc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1zaW1wbGUuaHRtbAkocmV2aXNpb24g
MTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxh
dHRlbmluZy1zaW1wbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEZyYW1lRmxhdHRlbmluZ0Vu
YWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOwogICAg
ICAgICAgICAgLy8gRm9yY2Ugc3luY2hyb25vdXMgbGF5b3V0LgogICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLXRpbnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS10aW55Lmh0bWwJKHJldmlzaW9uIDEy
MDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLXRpbnku
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlv
bigiVGVzdCB0aGF0IGZyYW1lIGZsYXR0ZW5pbmcgaXMgbm90IHVzZWQgZm9yIHRpbnkgZnJhbWVz
LiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJUIG9yIHVzZXIgYWdlbnQgd2l0aCBmbGF0dGVuaW5nIGVu
YWJsZWQuIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh0cnVlKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
dHJ1ZSk7CiAKIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGZyYW1lTmFtZSwgZXhwZWN0ZWRXaWR0aCwg
ZXhwZWN0ZWRIZWlnaHQpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvZmFpbC1hbmQtbm90aWZ5LWRvbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvZmFpbC1hbmQtbm90aWZ5LWRvbmUuaHRtbAkocmV2aXNpb24g
MTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2ZhaWwtYW5kLW5v
dGlmeS1kb25lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBGQUlMCiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9mcmFtZS1kZWFkLXJlZ2lvbi1sZWZ0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2ZyYW1lLWRlYWQtcmVnaW9uLWxlZnQu
aHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL2ZyYW1lLWRlYWQtcmVnaW9uLWxlZnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsNyAr
MTQsNyBAQAogCiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgewotICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewogICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oWCwgWSk7CiAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9mcmFtZS1u
YXZpZ2F0aW9uLWNoaWxkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2ZyYW1lLW5hdmlnYXRpb24tY2hpbGQuaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2ZyYW1lLW5hdmlnYXRpb24t
Y2hpbGQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBAQAogPHA+VGhpcyB0ZXN0
cyB0aGF0IG5hdmlnYXRpbmcgdG8gdHdvIHBhZ2VzIGluIGEgc3ViZnJhbWUsIGFuZCB0aGVuIGdv
aW5nIGJhY2sgZG9lcyBub3QgY2F1c2UgYW4gYXNzZXJ0aW9uLjwvcD4KIDxwPlNVQ0NFU1MgLSBE
aWRuJ3QgYXNzZXJ0ITwvcD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCdkYXRhOnRleHQvaHRt
bCx0ZXN0MScsICd0YXJnZXQnKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgn
ZGF0YTp0ZXh0L2h0bWwsdGVzdDInLCAndGFyZ2V0JykKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5xdWV1ZUxvYWQoJ2RhdGE6dGV4dC9odG1sLHRlc3QxJywgJ3RhcmdldCcpCisg
ICAgdGVzdFJ1bm5lci5xdWV1ZUxvYWQoJ2RhdGE6dGV4dC9odG1sLHRlc3QyJywgJ3RhcmdldCcp
CisgICAgdGVzdFJ1bm5lci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOwogfSBlbHNlCiAgICAgZG9j
dW1lbnQud3JpdGUoJ1RoaXMgdGVzdCBtdXN0IGJlIHJ1biBieSBEdW1wUmVuZGVyVHJlZSEnKQog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1l
LWZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL2lmcmFtZS1mb2N1cy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLWZvY3VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsNyArNCw3IEBACiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICB3aW5kb3cuZm9jdXMoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5xdWV1ZVJlbG9hZCgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
cXVldWVSZWxvYWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9o
ZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2xvY2F0aW9uLWNo
YW5nZS1mcmFtZS0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL2xvY2F0aW9uLWNoYW5nZS1mcmFtZS0xLmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9sb2NhdGlvbi1jaGFuZ2UtZnJh
bWUtMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPHA+VGhlIGZyYW1lIG9u
IHRoZSByaWdodCBzaG91bGQgPGk+bm90PC9pPiBzYXkgJ2hlbGxvIHdvcmxkJy48L3A+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiBwYXJlbnQuZnJhbWVzWzFdLmxv
Y2F0aW9uPSdsb2NhdGlvbi1jaGFuZ2UtZnJhbWUtMi5odG1sJwogPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbG9jYXRpb24tY2hhbmdlLWZyYW1lLTIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbG9j
YXRpb24tY2hhbmdlLWZyYW1lLTIuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2xvY2F0aW9uLWNoYW5nZS1mcmFtZS0yLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8cD5TVUNDRVNTPC9wPgogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewogICBhbGVydCgiU1VDQ0VTUyIpOwotICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbWV0YS1yZWZyZXNoLXRhcmdldC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9tZXRhLXJlZnJl
c2gtdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9tZXRhLXJlZnJlc2gtdGFyZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOCArMSw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmIChsYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAodGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIDwvc2NyaXB0PgogPC9oZWFk
PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL25vLWZp
bGUtYWNjZXNzLWZyYW1lLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvbm8tZmlsZS1hY2Nlc3MtZnJhbWUtMS5odG1sCShyZXZpc2lvbiAxMjA5
MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm8tZmlsZS1hY2Nlc3Mt
ZnJhbWUtMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDExIEBACiA8aHRtbD4KIDxo
ZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGZhbHNlKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoZmFsc2UpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zy
b21GaWxlVVJMcyhmYWxzZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHMoZmFsc2UpOwogfQogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIHBh
cmVudC5mcmFtZXNbMV0ubG9jYXRpb249J25vLWZpbGUtYWNjZXNzLWZyYW1lLTIuaHRtbCc7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvbm8tZmlsZS1hY2Nlc3MtZnJh
bWUtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9uby1maWxlLWFjY2Vzcy1mcmFtZS0yLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9uby1maWxlLWFjY2Vzcy1mcmFtZS0yLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8cD5TVUNDRVNTPC9wPgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgewogICAgIGFsZXJ0KCJTVUNDRVNTIik7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvcGFzcy1hbmQtbm90aWZ5LWRv
bmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
cGFzcy1hbmQtbm90aWZ5LWRvbmUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3Bhc3MtYW5kLW5vdGlmeS1kb25lLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBQQVNTCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxs
b3dlZC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAKIGZ1bmN0aW9uIGRlYnVnKG1zZykKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9zZXQtc3JjLXRvLWphdmFzY3JpcHQtdXJsLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3NldC1zcmMtdG8tamF2YXNj
cmlwdC11cmwuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL3NldC1zcmMtdG8tamF2YXNjcmlwdC11cmwuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNiw4ICs2LDggQEAgRkFJTAogICAgICAgICByZXR1cm4gInRlc3QiOwogICAgIH0KIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgcGFyZW50LmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwYXJlbnQiKS5zZXRBdHRyaWJ1dGUoInNyYyIsICJqYXZhc2NyaXB0OiByZXR1
cm5TdHJpbmdWYWx1ZSgpIik7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zZXQtc3JjLXRvLWphdmFzY3JpcHQtdXJsLnhodG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zZXQtc3JjLXRvLWphdmFzY3Jp
cHQtdXJsLnhodG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvc2V0LXNyYy10by1qYXZhc2NyaXB0LXVybC54aHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNiw4ICs2LDggQEAgRkFJTAogICAgICAgICByZXR1cm4gInRlc3QiOwogICAgIH0KIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgcGFyZW50LmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwYXJlbnQiKS5zZXRBdHRyaWJ1dGUoInNyYyIsICJqYXZhc2NyaXB0OiByZXR1
cm5TdHJpbmdWYWx1ZSgpIik7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zZXQtdW5sb2FkZWQtZnJhbWUtbG9jYXRpb24tMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zZXQtdW5sb2FkZWQtZnJh
bWUtbG9jYXRpb24tMi5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvc2V0LXVubG9hZGVkLWZyYW1lLWxvY2F0aW9uLTIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIDxoMz5QQVNTRUQ6IENvbnRlbnQgbG9hZGVkPC9o
Mz4KIDxzY3JpcHQ+CiBhbGVydCgnUEFTUycpOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiA8L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9z
dWJmcmFtZS1iYXNlLXVybC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3Jlc291cmNlcy9zdWJmcmFtZS1iYXNlLXVybC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc3ViZnJhbWUtYmFzZS11cmwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAgZG9jdW1lbnQuY2xvc2UoKTsKIGlmICgv
XC9yZXNvdXJjZXNcL2Zvb2Jhci5odG1sJC8udGVzdChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYSIpWzBdLmhyZWYpKQogICAgIHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdFJlc3VsdCIpLmlubmVySFRNTCA9ICJTVUNDRVNTIgogICAgIAotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiA8
L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1sZXNz
L3NlYW1sZXNzLWZvcm0tZ2V0LW5hbWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3MtZm9ybS1nZXQtbmFtZWQuaHRtbAkocmV2aXNp
b24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3Mt
Zm9ybS1nZXQtbmFtZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNCBAQAogPCFE
T0NUWVBFIGh0bWw+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihldnQpIHsKICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImZyYW1lc1swXS5kb2N1bWVudC5ib2R5LnRleHRDb250ZW50IiwgIkRPTkVc
biIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9LCBmYWxzZSk7CiA8L3Njcmlw
dD4KIDxpZnJhbWUgc3JjZG9jPSIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1s
ZXNzL3NlYW1sZXNzLWZvcm0tZ2V0LW92ZXJyaWRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3MtZm9ybS1nZXQtb3ZlcnJpZGUuaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mv
c2VhbWxlc3MtZm9ybS1nZXQtb3ZlcnJpZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCAr
MSwxNCBAQAogPCFET0NUWVBFIGh0bWw+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
IAogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihldnQpIHsKICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZyYW1lc1swXS5mcmFtZXNbMF0uZG9jdW1lbnQuYm9k
eS50ZXh0Q29udGVudCIsICJET05FXG4iKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogfSwgZmFsc2UpOwogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyY2RvYz0iCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy1mb3JtLWdldC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1sZXNzL3NlYW1sZXNzLWZvcm0tZ2V0
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1s
ZXNzL3NlYW1sZXNzLWZvcm0tZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQg
QEAKIDwhRE9DVFlQRSBodG1sPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXZ0KSB7CiAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJmcmFtZXNbMF0uZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudCIs
ICJET05FXG4iKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfSwgZmFsc2UpOwog
PC9zY3JpcHQ+CiA8aWZyYW1lIHNyY2RvYz0iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zZWFtbGVzcy9zZWFtbGVzcy1mb3JtLXBvc3QtbmFtZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy1mb3JtLXBvc3QtbmFtZWQu
aHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxl
c3Mvc2VhbWxlc3MtZm9ybS1wb3N0LW5hbWVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQg
KzEsMTQgQEAKIDwhRE9DVFlQRSBodG1sPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXZ0KSB7CiAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmcmFtZXNbMF0uZG9jdW1lbnQuYm9keS50ZXh0Q29u
dGVudCIsICJET05FXG4iKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfSwgZmFs
c2UpOwogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyY2RvYz0iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy1mb3JtLXBvc3Qtb3ZlcnJpZGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy1mb3JtLXBv
c3Qtb3ZlcnJpZGUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3MtZm9ybS1wb3N0LW92ZXJyaWRlLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTQgKzEsMTQgQEAKIDwhRE9DVFlQRSBodG1sPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVu
Y3Rpb24oZXZ0KSB7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmcmFtZXNbMF0uZnJhbWVz
WzBdLmRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQiLCAiRE9ORVxuIik7CiAKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKIH0sIGZhbHNlKTsKIDwvc2NyaXB0PgogPGlmcmFtZSBzcmNkb2M9
IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3MtZm9ybS1w
b3N0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mv
c2VhbWxlc3MtZm9ybS1wb3N0Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NlYW1sZXNzL3NlYW1sZXNzLWZvcm0tcG9zdC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE0ICsxLDE0IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOwogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0
aW9uKGV2dCkgewogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZnJhbWVzWzBdLmRvY3VtZW50
LmJvZHkudGV4dENvbnRlbnQiLCAiRE9ORVxuIik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKIH0sIGZhbHNlKTsKIDwvc2NyaXB0PgogPGlmcmFtZSBzcmNkb2M9IgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3MtaHlwZXJsaW5rLW5hbWVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxl
c3MtaHlwZXJsaW5rLW5hbWVkLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NlYW1sZXNzL3NlYW1sZXNzLWh5cGVybGluay1uYW1lZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE0IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwogCiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScs
IGZ1bmN0aW9uKGV2dCkgewogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZnJhbWVzWzBdLmRv
Y3VtZW50LmJvZHkudGV4dENvbnRlbnQiLCAiRE9ORVxuIik7CiAKLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKIH0sIGZhbHNlKTsKIDwvc2NyaXB0PgogPGlmcmFtZSBzcmNkb2M9IgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3MtaHlwZXJsaW5rLW92
ZXJyaWRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxl
c3Mvc2VhbWxlc3MtaHlwZXJsaW5rLW92ZXJyaWRlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysr
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1sZXNzL3NlYW1sZXNzLWh5cGVybGluay1vdmVy
cmlkZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE0IEBACiA8IURPQ1RZUEUgaHRt
bD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uKGV2dCkgewogICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZnJhbWVzWzBdLmZyYW1lc1swXS5kb2N1bWVudC5ib2R5LnRleHRDb250ZW50IiwgIkRPTkVc
biIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9LCBmYWxzZSk7CiA8L3Njcmlw
dD4KIDxpZnJhbWUgc3JjZG9jPSIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1s
ZXNzL3NlYW1sZXNzLWh5cGVybGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3NlYW1sZXNzL3NlYW1sZXNzLWh5cGVybGluay5odG1sCShyZXZpc2lvbiAxMjA5
MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy1oeXBlcmxp
bmsuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNCBAQAogPCFET0NUWVBFIGh0bWw+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihldnQpIHsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImZyYW1lc1swXS5kb2N1bWVudC5ib2R5LnRleHRDb250ZW50IiwgIkRPTkVcbiIpOwogCi0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9LCBmYWxzZSk7CiA8L3NjcmlwdD4KIDxpZnJhbWUg
c3JjZG9jPSIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1sZXNzL3NlYW1sZXNz
LXdpbmRvdy1sb2NhdGlvbi1ocmVmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3Mtd2luZG93LWxvY2F0aW9uLWhyZWYuaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxl
c3Mtd2luZG93LWxvY2F0aW9uLWhyZWYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwx
NCBAQAogPCFET0NUWVBFIGh0bWw+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAog
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihldnQpIHsKICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImZyYW1lc1swXS5kb2N1bWVudC5ib2R5LnRleHRDb250ZW50
IiwgIkRPTkVcbiIpOwogCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9LCBmYWxzZSk7
CiA8L3NjcmlwdD4KIDxpZnJhbWUgc3JjZG9jPSIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL3NlYW1sZXNzL3NlYW1sZXNzLXdpbmRvdy1sb2NhdGlvbi1yZXBsYWNlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3Mtd2luZG93
LWxvY2F0aW9uLXJlcGxhY2UuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3Mtd2luZG93LWxvY2F0aW9uLXJlcGxhY2UuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNCBAQAogPCFET0NUWVBFIGh0bWw+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21l
c3NhZ2UnLCBmdW5jdGlvbihldnQpIHsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZyYW1l
c1swXS5mcmFtZXNbMF0uZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudCIsICJET05FXG4iKTsKIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfSwgZmFsc2UpOwogPC9zY3JpcHQ+CiA8aWZy
YW1lIHNyY2RvYz0iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFt
bGVzcy13aW5kb3ctbG9jYXRpb24tc2FuZGJveC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NlYW1sZXNzL3NlYW1sZXNzLXdpbmRvdy1sb2NhdGlvbi1zYW5kYm94
Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1s
ZXNzL3NlYW1sZXNzLXdpbmRvdy1sb2NhdGlvbi1zYW5kYm94Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOCArMSw4IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKIDwvc2NyaXB0PgogVGhpcyB0ZXN0IHNob3VsZCBub3Qg
Y2F1c2UgYW55IG5hdmlnYXRpb24uCiA8aWZyYW1lIHNyY2RvYz0iCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy13aW5kb3ctbG9jYXRpb24uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy13aW5k
b3ctbG9jYXRpb24uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3Mtd2luZG93LWxvY2F0aW9uLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTQgKzEsMTQgQEAKIDwhRE9DVFlQRSBodG1sPgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rp
b24oZXZ0KSB7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmcmFtZXNbMF0uZG9jdW1lbnQu
Ym9keS50ZXh0Q29udGVudCIsICJET05FXG4iKTsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfSwgZmFsc2UpOwogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyY2RvYz0iCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy13aW5kb3ctb3Blbi1vdmVycmlk
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1sZXNzL3Nl
YW1sZXNzLXdpbmRvdy1vcGVuLW92ZXJyaWRlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NlYW1sZXNzL3NlYW1sZXNzLXdpbmRvdy1vcGVuLW92ZXJy
aWRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQgQEAKIDwhRE9DVFlQRSBodG1s
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXZ0KSB7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJmcmFtZXNbMF0uZnJhbWVzWzBdLmRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQiLCAiRE9ORVxu
Iik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0sIGZhbHNlKTsKIDwvc2NyaXB0
PgogPGlmcmFtZSBzcmNkb2M9IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2VhbWxl
c3Mvc2VhbWxlc3Mtd2luZG93LW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy13aW5kb3ctb3Blbi5odG1sCShyZXZpc2lvbiAx
MjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zZWFtbGVzcy9zZWFtbGVzcy13aW5k
b3ctb3Blbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE0IEBACiA8IURPQ1RZUEUg
aHRtbD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uKGV2dCkgewogICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZnJhbWVzWzBdLmRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQiLCAiRE9ORVxuIik7CiAK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0sIGZhbHNlKTsKIDwvc2NyaXB0PgogPGlm
cmFtZSBzcmNkb2M9IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9h
ZGluZy1hLXNyY2RvYy1kb2N1bWVudC1sb2Fkcy1pdC1hZ2Fpbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9yZWxvYWRpbmctYS1zcmNkb2MtZG9jdW1l
bnQtbG9hZHMtaXQtYWdhaW4uaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc3JjZG9jL3JlbG9hZGluZy1hLXNyY2RvYy1kb2N1bWVudC1sb2Fkcy1pdC1h
Z2Fpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIHdpbmRvdy5pZnJhbWVMb2FkQ291
bnQgPSAwOwpAQCAtMTYsOCArMTYsOCBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAg
IGFsZXJ0KCdGcmFtZSBoYXMgbG9hZGVkICcgKyB0b3AuaWZyYW1lTG9hZENvdW50ICsgJyB0aW1l
KHMpLicpOwogICBpZiAodG9wLmlmcmFtZUxvYWRDb3VudCA9PSAyKSB7CiAgICAgYWxlcnQoJ1BB
U1MnKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgfSBlbHNlIGlmICh0b3AuaWZy
YW1lTG9hZENvdW50ID4gMikKICAgICBhbGVydCgnRkFJTCEhJyk7CiAgIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGlu
Zy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0
aW5nLXNyYy1kb2VzLW5vdGhpbmcuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NldHRpbmctc3JjLWRvZXMtbm90aGluZy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwogfQogPC9zY3JpcHQ+CiA8cD5UaGlzIHRl
c3QgZW5zdXJlcyB0aGF0IHNldHRpbmcgdGhlIHNyYyBhdHRyaWJ1dGUgZG9lcyBub3QgY2F1c2Ug
dGhlIGRvY3VtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc2V0dGlu
Zy1zcmNkb2MtcmVsb2Fkcy1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0aW5nLXNyY2RvYy1yZWxvYWRzLWRvY3VtZW50Lmh0bWwJ
KHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zZXR0
aW5nLXNyY2RvYy1yZWxvYWRzLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMg
KzEsMTMgQEAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwog
fQogCiBmdW5jdGlvbiBwYXNzKCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS50ZXh0Q29udGVudCA9ICdQQVNTJzsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
IH0KIDwvc2NyaXB0PgogPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBzZXR0aW5nIHRoZSBzcmNk
b2MgYXR0cmlidXRlIGlmcmFtZSBjYXVzZXMgdGhlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1kb20uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy1kb20uaHRtbAkocmV2
aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1i
ZWF0cy1zcmMtZG9tLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8Ym9keT4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogdmFyIGlmcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKIGlmcm0uc3JjZG9jID0gIlBBU1MiOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1iZWF0cy1zcmMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJlYXRzLXNyYy5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLWJl
YXRzLXNyYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPHNjcmlw
dD5hbGVydCgvRkFJTC8pOzwvc2NyaXB0PiIgc3JjZG9jPSJQQVNTIj48L2lmcmFtZT4KIFRoaXMg
dGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBhbGVydCBGQUlMLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tYmUtaW4tcXVya3MtbW9kZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2FuLWJlLWlu
LXF1cmtzLW1vZGUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tYmUtaW4tcXVya3MtbW9kZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiBO
b3JtYWxseSBzcmNkb2MgZG9jdW1lbnRzIGRlZmF1bHQgdG8gc3RhbmRhcmRzIG1vZGUsIGJ1dCB0
aGV5IGNhbiBlbmQgdXAgaW4KIHF1aXJrcyBtb2RlIHdpdGggYSBzdWZmaWNpZW50bHkgbnV0dHkg
RG9jVHlwZS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtY2Fu
LW5hdmlnYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3Jj
ZG9jL3NyY2RvYy1jYW4tbmF2aWdhdGUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1jYW4tbmF2aWdhdGUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIDwv
c2NyaXB0PgogPGlmcmFtZSBzcmNkb2M9IkZBSUwKIDxzY3JpcHQ+Ci13aW5kb3cubG9jYXRpb24g
PSAnZGF0YTp0ZXh0L2h0bWwsUEFTUzxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOzxcL3NjcmlwdD4nOzwvc2Ny
aXB0PiI+PC9pZnJhbWU+Cit3aW5kb3cubG9jYXRpb24gPSAnZGF0YTp0ZXh0L2h0bWwsUEFTUzxz
Y3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTs8XC9z
Y3JpcHQ+Jzs8L3NjcmlwdD4iPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc3JjZG9jL3NyY2RvYy1kZWZhdWx0cy10by1zdGFuZGFyZHMtbW9kZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NyY2RvYy9zcmNkb2MtZGVmYXVsdHMtdG8t
c3RhbmRhcmRzLW1vZGUuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1kZWZhdWx0cy10by1zdGFuZGFyZHMtbW9kZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9z
Y3JpcHQ+CiBFdmVuIHRocm91Z2ggdGhlIHNyY2RvYyBiZWxvdyBkb2Vzbid0IGhhdmUgYSBEb2NU
eXBlLCBpdCBzaG91bGQgc3RpbGwgYmUgaW4KIHN0YW5kYXJkcyBtb2RlLgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250ZW50Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9jL3NyY2RvYy1sb2Fkcy1jb250
ZW50Lmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Ny
Y2RvYy9zcmNkb2MtbG9hZHMtY29udGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NyBAQAogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1l
c0FzVGV4dCgpOwogfQogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyY2RvYz0iUEFTUyI+PC9pZnJhbWU+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLXVybHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zcmNkb2Mvc3JjZG9jLXVybHMu
aHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc3JjZG9j
L3NyY2RvYy11cmxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIEEgc3JjZG9jIGRvY3VtZW50IHNob3VsZCBpbmhl
cml0IGl0cyBkb2N1bWVudC5iYXNlVVJJIGZyb20gaXRzIHBhcmVudCAoYnV0IG5vdAogaXRzIGRv
Y3VtZW50LlVSSSkuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jcmFzaC1vbi0x
cHgtYm9yZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMv
Y3Jhc2gtb24tMXB4LWJvcmRlci5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2dyYWRpZW50cy9jcmFzaC1vbi0xcHgtYm9yZGVyLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTYsOCArNiw4IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2dyYWRpZW50cy9jcmFzaC1vbi1kZWdlbmVyYXRlLWdyYWRpZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY3Jhc2gtb24tZGVnZW5lcmF0ZS1ncmFkaWVu
dC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9j
cmFzaC1vbi1kZWdlbmVyYXRlLWdyYWRpZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY3Jh
c2gtb24tcmVtb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY3Jhc2gtb24tcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZ3JhZGllbnRzL2NyYXNoLW9uLXJlbW92ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04
LDggKzgsOCBAQAogPGRpdiBpZD0idGFyZ2V0IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtp
dC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZWQpLCB0byh0
cmFuc3BhcmVudCkpIj4KIDwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXQiKS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiYmFja2dyb3VuZC1pbWFn
ZSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY3Jhc2gtb24tdHIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jcmFzaC1vbi10ci5odG1s
CShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jcmFzaC1v
bi10ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQAogfQogPC9zdHlsZT4KIDxz
Y3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9oZWFkPgogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLWNvbG9yLXN0b3AtdW5pdHMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLWNvbG9yLXN0b3AtdW5pdHMuaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY3NzMy1j
b2xvci1zdG9wLXVuaXRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDkgQEAKICAg
ICB9CiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0
PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgdmFyIGR1bXBQaXhlbHMgPSB0cnVlOwotICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dChkdW1wUGl4ZWxzKTsKKyAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dChkdW1wUGl4ZWxzKTsKICAgICB9CiAgIDwvc2NyaXB0PgogPC9o
ZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY3NzMy1jb2xvci1zdG9wcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NzczMtY29sb3It
c3RvcHMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY3NzMy1jb2xvci1zdG9wcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02MCw5ICs2MCw5IEBA
CiAgICAgfQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hh
cnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgIHZhciBkdW1wUGl4ZWxzID0gdHJ1ZTsK
LSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoZHVtcFBpeGVscyk7CisgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoZHVtcFBpeGVscyk7CiAgICAgfQogICA8L3NjcmlwdD4K
IDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NzczMtbGluZWFyLWFu
Z2xlLWdyYWRpZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZ3JhZGll
bnRzL2NzczMtbGluZWFyLWFuZ2xlLWdyYWRpZW50cy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLWxpbmVhci1hbmdsZS1ncmFkaWVudHMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTgsOSArNTgsOSBAQAogICAgIH0KICAgPC9zdHlsZT4K
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CiAgICAgICB2YXIgZHVtcFBpeGVscyA9IHRydWU7Ci0gICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KGR1bXBQaXhlbHMpOworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KGR1bXBQaXhlbHMpOwogICAgIH0KICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLWxpbmVhci1yaWdodC1hbmdsZS1ncmFkaWVudHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLWxpbmVh
ci1yaWdodC1hbmdsZS1ncmFkaWVudHMuaHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ncmFkaWVudHMvY3NzMy1saW5lYXItcmlnaHQtYW5nbGUtZ3JhZGllbnRzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDkgQEAKICAgICB9CiA8L3N0eWxlPiAKIDxz
Y3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICB2YXIgZHVtcFBpeGVscyA9IHRydWU7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoZHVtcFBpeGVscyk7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dChkdW1wUGl4ZWxzKTsKICAgICB9CiA8L3NjcmlwdD4KIDwv
aGVhZD4gCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLXJhZGlhbC1ncmFk
aWVudC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRz
L2NzczMtcmFkaWFsLWdyYWRpZW50LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExh
eW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NzczMtcmFkaWFsLWdyYWRpZW50LWNyYXNoLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICB3aW5kb3cudGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ncmFkaWVudHMvY3NzMy1yYWRpYWwtZ3JhZGllbnRzMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NzczMtcmFkaWFsLWdyYWRpZW50czIu
aHRtbAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY3Nz
My1yYWRpYWwtZ3JhZGllbnRzMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBA
CiAKICAgPC9zdHlsZT4KICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9
InV0Zi04Ij4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICB2YXIgZHVtcFBpeGVscyA9IHRydWU7Ci0gICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KGR1bXBQaXhlbHMpOworICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KGR1bXBQaXhlbHMpOwogICAgIH0KICAgPC9zY3JpcHQ+CiA8L2hl
YWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLXJhZGlhbC1ncmFkaWVu
dHMzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY3NzMy1y
YWRpYWwtZ3JhZGllbnRzMy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2dyYWRpZW50cy9jc3MzLXJhZGlhbC1ncmFkaWVudHMzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDkgKzI0LDkgQEAKIAogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgIHZhciBkdW1wUGl4
ZWxzID0gdHJ1ZTsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoZHVtcFBp
eGVscyk7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoZHVtcFBpeGVscyk7CiAgICAgfQog
ICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2Nz
czMtcmFkaWFsLWdyYWRpZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Z3JhZGllbnRzL2NzczMtcmFkaWFsLWdyYWRpZW50cy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLXJhZGlhbC1ncmFkaWVudHMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNTksOSArNTksOSBAQAogCiAgIDwvc3R5bGU+CiAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
ICAgdmFyIGR1bXBQaXhlbHMgPSB0cnVlOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dChkdW1wUGl4ZWxzKTsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dChkdW1wUGl4
ZWxzKTsKICAgICB9CiAgIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9ncmFkaWVudHMvY3NzMy1yZXBlYXRpbmctZW5kLWZpbGwuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLXJlcGVhdGluZy1lbmQtZmlsbC5odG1sCShy
ZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLXJlcGVh
dGluZy1lbmQtZmlsbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw5ICsxNCw5IEBACiAgICAg
fQogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0i
dXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgIHZhciBkdW1wUGl4ZWxzID0gdHJ1ZTsKLSAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoZHVtcFBpeGVscyk7CisgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoZHVtcFBpeGVscyk7CiAgICAgfQogICA8L3NjcmlwdD4KIDwvaGVh
ZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NzczMtcmVwZWF0aW5nLWxpbmVh
ci1ncmFkaWVudHMyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY3NzMy1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50czIuaHRtbAkocmV2aXNpb24gMTIwOTAz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY3NzMy1yZXBlYXRpbmctbGluZWFyLWdy
YWRpZW50czIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTgsOSArMTgsOSBAQAogICAgIH0KICAg
PC9zdHlsZT4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICB2YXIgZHVtcFBpeGVscyA9
IHRydWU7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KGR1bXBQaXhlbHMp
OworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KGR1bXBQaXhlbHMpOwogICAgIH0KICAgPC9z
Y3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLXJl
cGVhdGluZy1saW5lYXItZ3JhZGllbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ncmFkaWVudHMvY3NzMy1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50cy5odG1sCShyZXZp
c2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jc3MzLXJlcGVhdGlu
Zy1saW5lYXItZ3JhZGllbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU5LDkgKzU5LDkgQEAK
IAogICA8L3N0eWxlPgogICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0i
dXRmLTgiPgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgIHZhciBkdW1wUGl4ZWxzID0gdHJ1ZTsKLSAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoZHVtcFBpeGVscyk7CisgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoZHVtcFBpeGVscyk7CiAgICAgfQogICA8L3NjcmlwdD4KIDwvaGVh
ZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NzczMtcmVwZWF0aW5nLXJhZGlh
bC1ncmFkaWVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50
cy9jc3MzLXJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnRzLmh0bWwJKHJldmlzaW9uIDEyMDkwMykK
KysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NzczMtcmVwZWF0aW5nLXJhZGlhbC1ncmFk
aWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTksOSArNTksOSBAQAogCiAgIDwvc3R5bGU+
CiAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewogICAgICAgdmFyIGR1bXBQaXhlbHMgPSB0cnVlOwotICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dChkdW1wUGl4ZWxzKTsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dChkdW1wUGl4ZWxzKTsKICAgICB9CiAgIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvZ3JhZGllbnQtYWZ0ZXItdHJhbnNwYXJlbnQtYm9yZGVy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvZ3JhZGllbnQt
YWZ0ZXItdHJhbnNwYXJlbnQtYm9yZGVyLmh0bWwJKHJldmlzaW9uIDEyMDkwMykKKysrIExheW91
dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2dyYWRpZW50LWFmdGVyLXRyYW5zcGFyZW50LWJvcmRlci5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsxOSw4IEBACiB9CiA8L3N0eWxlPgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiA8L3NjcmlwdD4KIDwvaGVhZD48Ym9keT4KIDxwPlRl
c3QgZm9yIEJ1ZyA1MTI0MDogUEFTUyBpZiB0aGUgc2Vjb25kIGJveCBpcyBwYWludGVkIGFzIGFu
IG9wYXF1ZSBibHVlLXRvLWdyZWVuIHNxdWFyZS48L3A+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2dyYWRpZW50cy9ncmFkaWVudC1vbi1wc2V1ZG9lbGVtZW50LWNyYXNoLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvZ3JhZGllbnQtb24tcHNldWRvZWxlbWVu
dC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRp
ZW50cy9ncmFkaWVudC1vbi1wc2V1ZG9lbGVtZW50LWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTcsOCArNyw4IEBAIGJvZHk6Zmlyc3QtbGluZSB7CiB9CiA8L3N0eWxlPgogPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL3NlYXJjaC1wb3B1cC1jcmFzaGVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9zZWFyY2gtcG9wdXAt
Y3Jhc2hlci5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL3NlYXJjaC1wb3B1cC1jcmFzaGVyLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTMsOCArMyw4IEBACiA8c2NyaXB0Pgogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkK
IHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIGlmICh3aW5kb3cubG9jYXRp
b24uaHJlZi5pbmRleE9mKCdmb3JtU3VibWl0dGVkJykgIT0gLTEpCiAgICAgICAgIHJldHVybjsK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL21lbnVsaXN0LXR5cGVh
aGVhZC1maW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zh
c3QvZm9ybXMvbWVudWxpc3QtdHlwZWFoZWFkLWZpbmQuaHRtbAkocmV2aXNpb24gMTIwOTAzKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvbWVudWxpc3QtdHlwZWFoZWFk
LWZpbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQCBmdW5jdGlvbiB0ZXN0
VHlwZUFoZWFkRmluZChrZXlzLCBleHBlY3RlCiAgICAgcmVzdWx0LmlubmVySFRNTCArPSAid2Fz
ICIgKyBtZW51bGlzdC52YWx1ZTsKIH0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHRlc3RUeXBlQWhlYWRG
aW5kKFsnYSddLCAiQXBwbGUiKTsKIHRlc3RUeXBlQWhlYWRGaW5kKFsnYyddLCAiQ2Fycm90Iik7
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mcmFtZXMvc2Nyb2xsaW5nLWlm
cmFtZS1vdXQtb2Ytdmlld3BvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9mcmFtZXMvc2Nyb2xsaW5nLWlmcmFtZS1vdXQtb2Ytdmlld3BvcnQuaHRt
bAkocmV2aXNpb24gMTIwOTAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZnJh
bWVzL3Njcm9sbGluZy1pZnJhbWUtb3V0LW9mLXZpZXdwb3J0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTksMTQgKzksMTQgQEAgZnVuY3Rpb24gc2Nyb2xsRnJhbWUoKQogICAgIHZhciBpZCA9IHNl
dEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICBpZiAobG9jYXRpb24gPiAyNjApIHsKICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaWQpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKS5j
b250ZW50V2luZG93LnNjcm9sbFRvKDAsIGxvY2F0aW9uKTsKICAgICAgICAgbG9jYXRpb24gKz0g
NTsKICAgICB9LCAxMDApOwogfQotbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwordGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiA8L3NjcmlwdD4KIDxib2R5IG9ubG9hZD0i
c2Nyb2xsRnJhbWUoKTsiPgogPGlmcmFtZSBpZD0iZnJhbWUiIHN0eWxlPSJwb3NpdGlvbjphYnNv
bHV0ZTsgdG9wOjQwMHB4OyBsZWZ0OiAwcHg7IHdpZHRoOjUwMDsgaGVpZ2h0OjIwMDsiIHNyYz0i
cmVzb3VyY2VzL3Njcm9sbGluZy1pZnJhbWUtb3V0LW9mLXZpZXdwb3J0LWludGVyaW9yLmh0bWwi
Lz4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2F0dHJpYnV0ZWQt
c3RyaW5ncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2Zvcm1zL2F0dHJpYnV0ZWQtc3RyaW5ncy5odG1sCShyZXZpc2lvbiAxMjA5MDMpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9hdHRyaWJ1dGVkLXN0cmluZ3MuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTgsMTEgKzE4LDExIEBAIGJvZHkgeyBtYXJnaW46IDA7IHBhZGRp
bmc6IDAgfQogICAgICAgICBjb25zb2xlX21lc3NhZ2VzLmFwcGVuZENoaWxkKGl0ZW0pOwogICAg
IH0KICAgICAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIAogICAgICAgICB0cnkgewogCi0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0IikuZm9jdXMoKTsKIAogICAgICAgICAgICAgdmFyIHN1YnN0ciA9
IHRleHRJbnB1dENvbnRyb2xsZXIuYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSgwLCAyKTsK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2Nyb2xs
YmFyLWhpdC10ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvbGlzdGJveC1zY3JvbGxiYXItaGl0LXRlc3QuaHRtbAkocmV2aXNpb24gMTIw
OTAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvbGlzdGJveC1zY3Jv
bGxiYXItaGl0LXRlc3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQAogICAg
IAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgfQogICAgICAgCiAg
ICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikgewpAQCAtNzQsOCArNzQsOCBAQAogICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgbW91c2VEb3duT25TZWxlY3QoJ3NlbGVj
dDEnLCAwLCAwKTsKICAgICAgICAgbW91c2VEb3duT25TZWxlY3QoJ3NlbGVjdDInLCA1MCwgNTAp
OwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgfSwgMCk7
CiAgICAgfQogICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2Zvcm1zL3NjcmlwdC10ZXN0cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0
cy9mb2N1cy1vcHRpb24tY29udHJvbC1vbi1wYWdlLmpzCShyZXZpc2lvbiAxMjA5MDMpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvZm9jdXMtb3B0
aW9uLWNvbnRyb2wtb24tcGFnZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgdmFy
IHJlc3VsdDsKIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKICAgICBkZWJ1ZygiUHJlc3NpbmcgdGFi
IDQgdGltZXM6Iik7CiAgICAgbW9kaWZpZXJzID0gdW5kZWZpbmVkOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmZvY3VzV2ViVmlldyhydW5LZXlQcmVzc2VzKTsKKyAgICB0ZXN0UnVubmVyLmZv
Y3VzV2ViVmlldyhydW5LZXlQcmVzc2VzKTsKIH0KIAogZnVuY3Rpb24gcnVuS2V5UHJlc3Nlcygp
IHsKQEAgLTIxLDI5ICsyMSwyOSBAQCBmdW5jdGlvbiBydW5LZXlQcmVzc2VzKCkgewogICAgICAg
ICAgICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICciIC8xOmZvY3VzZWQgdGV4dCBmaWVsZCAvMjogLzM6
Zm9jdXNlZCB0ZXh0IGZpZWxkIC80OiInKTsKICAgICAgICAgICAgIGRlYnVnKCJQcmVzc2luZyBz
aGlmdC10YWIgNCB0aW1lczoiKTsKICAgICAgICAgICAgIG1vZGlmaWVycyA9IFsic2hpZnRLZXki
XTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmZvY3VzV2ViVmlldyhydW5LZXlQ
cmVzc2VzKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNz
ZXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgIHNo
b3VsZEJlKCdyZXN1bHQnLCAnIiAvMTpmb2N1c2VkIHRleHQgZmllbGQgLzI6IC8zOmZvY3VzZWQg
dGV4dCBmaWVsZCAvNDoiJyk7CiAgICAgICAgICAgICBkZWJ1ZygiUHJlc3Npbmcgb3B0aW9uLXRh
YiA0IHRpbWVzOiIpOwogICAgICAgICAgICAgbW9kaWZpZXJzID0gWyJhbHRLZXkiXTsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmZvY3VzV2ViVmlldyhydW5LZXlQcmVzc2VzKTsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgIHNob3VsZEJlKCdy
ZXN1bHQnLCAnIiAvMTpmb2N1c2VkIGZpcnN0IGJ1dHRvbiAvMjpmb2N1c2VkIHRleHQgZmllbGQg
LzM6Zm9jdXNlZCBzZWNvbmQgYnV0dG9uIC80OiInKTsKICAgICAgICAgICAgIGRlYnVnKCJQcmVz
c2luZyBzaGlmdC1vcHRpb24tdGFiIDQgdGltZXM6Iik7CiAgICAgICAgICAgICBtb2RpZmllcnMg
PSBbInNoaWZ0S2V5IiwgImFsdEtleSJdOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZm9jdXNXZWJWaWV3KHJ1bktleVByZXNzZXMpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5m
b2N1c1dlYlZpZXcocnVuS2V5UHJlc3Nlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSA0OgogICAgICAgICAgICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICciIC8xOmZvY3VzZWQgc2Vj
b25kIGJ1dHRvbiAvMjpmb2N1c2VkIHRleHQgZmllbGQgLzM6Zm9jdXNlZCBmaXJzdCBidXR0b24g
LzQ6IicpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucmVtb3ZlQ2hyb21lSW5w
dXRGaWVsZChub3RpZnlEb25lKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZChub3RpZnlEb25lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAog
ZnVuY3Rpb24gbm90aWZ5RG9uZSgpIHsKLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0sIDApOworICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKIH0KIAogZnVuY3Rpb24g
bG9nKHZhbCkgewpAQCAtNTEsOSArNTEsOSBAQCBmdW5jdGlvbiBsb2codmFsKSB7CiB9CiAKIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIgJiYgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRk
Q2hyb21lSW5wdXRGaWVsZCkgeworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5ldmVu
dFNlbmRlciAmJiB0ZXN0UnVubmVyLmFkZENocm9tZUlucHV0RmllbGQpIHsKICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkQ2hyb21l
SW5wdXRGaWVsZChzdGFydFRlc3QpOworICAgIHRlc3RSdW5uZXIuYWRkQ2hyb21lSW5wdXRGaWVs
ZChzdGFydFRlc3QpOwogfSBlbHNlCiAgICAgZmluaXNoSlNUZXN0KCk7CiAK
</data>
<flag name="review"
          id="156862"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>