<?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>169648</bug_id>
          
          <creation_ts>2017-03-14 17:21:49 -0700</creation_ts>
          <short_desc>Make server tests return a promise instead of manually calling done</short_desc>
          <delta_ts>2017-03-14 20:19:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Perf Dashboard</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1287900</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-14 17:21:49 -0700</bug_when>
    <thetext>Right now, some old mocha tests in server-tests are manually calling done.
Return a promise instead since the latest mocha.js supports that,
and manually calling done turned out be error prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287903</commentid>
    <comment_count>1</comment_count>
      <attachid>304449</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-14 17:26:37 -0700</bug_when>
    <thetext>Created attachment 304449
Cleanup the tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287950</commentid>
    <comment_count>2</comment_count>
      <attachid>304465</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-14 19:38:58 -0700</bug_when>
    <thetext>Created attachment 304465
Cleaned up some more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287951</commentid>
    <comment_count>3</comment_count>
      <attachid>304465</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-14 19:48:08 -0700</bug_when>
    <thetext>Comment on attachment 304465
Cleaned up some more

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287954</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-14 20:18:57 -0700</bug_when>
    <thetext>Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287955</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-14 20:19:05 -0700</bug_when>
    <thetext>Committed r213969: &lt;http://trac.webkit.org/changeset/213969&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304449</attachid>
            <date>2017-03-14 17:26:37 -0700</date>
            <delta_ts>2017-03-14 19:38:53 -0700</delta_ts>
            <desc>Cleanup the tests</desc>
            <filename>bug-169648-20170314172637.patch</filename>
            <type>text/plain</type>
            <size>183646</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzOTY1KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDE3LTAzLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1ha2Ugc2VydmVyIHRlc3RzIHJldHVybiBhIHByb21pc2UgaW5zdGVhZCBvZiBt
YW51YWxseSBjYWxsaW5nIGRvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgdGhlIGV4aXN0aW5nIHNlcnZlciB0ZXN0cyBhbHdheXMgcmV1dHJu
IGEgcHJvbWlzZSBpbnN0ZWFkIG9mIG1hbnVhbGx5IGNhbGxpbmcgImRvbmUiIGNhbGxiYWNrLgor
ICAgICAgICBUaGUgcHJvbWlzZSB0ZXN0cyBhcmUgYSBsb3QgbW9yZSBzdGFibGUgYW5kIGxlc3Mg
ZXJyb3IgcHJvbmUuCisKKyAgICAgICAgQWxzbyB1c2UgYXJyb3cgZnVuY3Rpb25zIGV2ZXJ5d2hl
cmUgYW5kIHVzZSBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0IGluIG1vcmUgdGVzdHMgaW5z
dGVhZCBvZiBtYW51YWxseQorICAgICAgICBjb25uZWN0aW5nIHRvIGRhdGFiYXNlIGluIGV2ZXJ5
IHRlc3QuCisKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvYWRtaW4tcGxhdGZvcm1zLXRlc3RzLmpz
OgorICAgICAgICAqIHNlcnZlci10ZXN0cy9hZG1pbi1yZXByb2Nlc3MtcmVwb3J0LXRlc3RzLmpz
OgorICAgICAgICAqIHNlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6Cisg
ICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1tYW5pZmVzdC5qczoKKyAgICAgICAgKiBzZXJ2ZXIt
dGVzdHMvYXBpLW1lYXN1cmVtZW50LXNldC10ZXN0cy5qczoKKyAgICAgICAgKC5wb3N0UmVwb3J0
cyk6IERlbGV0ZWQuIE5vdCB1c2VkIGluIGFueSB0ZXN0LgorICAgICAgICAqIHNlcnZlci10ZXN0
cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL2Fw
aS1yZXBvcnQtdGVzdHMuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS11cGRhdGUtdHJp
Z2dlcmFibGUuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwYXRl
LXJ1bi1zdGF0dXMuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRy
aWdnZXJhYmxlLXRlc3RzLmpzOgorCiAyMDE3LTAzLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbmFtZSBSb290U2V0IHRvIENvbW1pdFNldApJbmRleDog
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hZG1pbi1wbGF0Zm9ybXMtdGVz
dHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9hZG1pbi1wbGF0Zm9ybXMtdGVzdHMuanMJKHJldmlzaW9uIDIxMzk2NSkKKysrIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYWRtaW4tcGxhdGZvcm1zLXRlc3RzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC00MCwzNyArNDAsMzYgQEAgZGVzY3JpYmUoIi9hZG1pbi9wbGF0Zm9y
bXMiLCBmdW5jdGlvbiAoKQogICAgICAgICAgICAgfV07CiAgICAgfSAKIAotICAgIGl0KCJzaG91
bGQgZGVsZXRlIHRoZSBwbGF0Zm9ybSB0aGF0IGdvdCBtZXJnZWQgaW50byBhbm90aGVyIG9uZSIs
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBkZWxldGUgdGhlIHBsYXRmb3JtIHRo
YXQgZ290IG1lcmdlZCBpbnRvIGFub3RoZXIgb25lIiwgKCkgPT4gewogICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgbGV0IG9sZFBsYXRmb3JtczsgICAg
ICAgIAotICAgICAgICBzdWJtaXRSZXBvcnQocmVwb3J0c0ZvckRpZmZlcmVudFBsYXRmb3Jtcygp
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgbGV0IG9sZFBsYXRmb3JtczsKKyAgICAgICAg
cmV0dXJuIHN1Ym1pdFJlcG9ydChyZXBvcnRzRm9yRGlmZmVyZW50UGxhdGZvcm1zKCkpLnRoZW4o
KCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgncGxhdGZvcm1zJywgJ25h
bWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocGxhdGZvcm1zKSB7CisgICAgICAgIH0p
LnRoZW4oKHBsYXRmb3JtcykgPT4gewogICAgICAgICAgICAgb2xkUGxhdGZvcm1zID0gcGxhdGZv
cm1zOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9sZFBsYXRmb3Jtcy5sZW5ndGgsIDMpOwog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9sZFBsYXRmb3Jtc1swXVsnbmFtZSddLCAnTWF2ZXJp
Y2tzJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwob2xkUGxhdGZvcm1zWzFdWyduYW1lJ10s
ICdNb3VudGFpbiBMaW9uJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwob2xkUGxhdGZvcm1z
WzJdWyduYW1lJ10sICdUcnVuayBNb3VudGFpbiBMaW9uJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RGb3JtVXJsZW5jb2RlZERhdGEoJy9hZG1pbi9wbGF0
Zm9ybXMucGhwJywKICAgICAgICAgICAgICAgICB7J2FjdGlvbic6ICdtZXJnZScsICdpZCc6IG9s
ZFBsYXRmb3Jtc1sxXVsnaWQnXSwgJ2Rlc3RpbmF0aW9uJzogb2xkUGxhdGZvcm1zWzJdWydpZCdd
fSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ3BsYXRmb3JtcycpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChuZXdQbGF0Zm9ybXMpIHsKKyAgICAgICAgfSkudGhlbigobmV3
UGxhdGZvcm1zKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwobmV3UGxhdGZvcm1zLmxl
bmd0aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG5ld1BsYXRmb3Jtc1swXSwg
b2xkUGxhdGZvcm1zWzBdKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwobmV3UGxhdGZv
cm1zWzFdLCBvbGRQbGF0Zm9ybXNbMl0pOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9
KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIG1v
dmUgdGVzdCBydW5zIGZyb20gdGhlIG1lcmdlZCBwbGF0Zm9ybSB0byB0aGUgZGVzdGluYXRpb24g
cGxhdGZvcm0iLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCJzaG91bGQgbW92ZSB0ZXN0IHJ1
bnMgZnJvbSB0aGUgbWVyZ2VkIHBsYXRmb3JtIHRvIHRoZSBkZXN0aW5hdGlvbiBwbGF0Zm9ybSIs
ICgpID0+IHsKICAgICAgICAgbGV0IG9sZFRlc3RSdW5zOwogICAgICAgICBjb25zdCBxdWVyeUZv
clJ1bnMgPSAnU0VMRUNUICogRlJPTSB0ZXN0X3J1bnMsIHRlc3RfY29uZmlndXJhdGlvbnMsIHBs
YXRmb3JtcyBXSEVSRSBydW5fY29uZmlnID0gY29uZmlnX2lkIEFORCBjb25maWdfcGxhdGZvcm0g
PSBwbGF0Zm9ybV9pZCBPUkRFUiBieSBydW5fbWVhbl9jYWNoZSc7CiAgICAgICAgIGNvbnN0IGRi
ID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICBzdWJtaXRSZXBvcnQocmVwb3J0c0Zv
ckRpZmZlcmVudFBsYXRmb3JtcygpKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJu
IHN1Ym1pdFJlcG9ydChyZXBvcnRzRm9yRGlmZmVyZW50UGxhdGZvcm1zKCkpLnRoZW4oKCkgPT4g
ewogICAgICAgICAgICAgcmV0dXJuIGRiLnF1ZXJ5KHF1ZXJ5Rm9yUnVucyk7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsK
ICAgICAgICAgICAgIG9sZFRlc3RSdW5zID0gcmVzdWx0LnJvd3M7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwob2xkVGVzdFJ1bnMubGVuZ3RoLCA0KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChvbGRUZXN0UnVuc1swXVsncGxhdGZvcm1fbmFtZSddLCAnTWF2ZXJpY2tzJyk7CkBAIC04MSwx
MiArODAsMTIgQEAgZGVzY3JpYmUoIi9hZG1pbi9wbGF0Zm9ybXMiLCBmdW5jdGlvbiAoKQogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG9sZFRlc3RSdW5zWzJdWydydW5fc3VtX2NhY2hlJ10sIDE4
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvbGRUZXN0UnVuc1szXVsncGxhdGZvcm1fbmFt
ZSddLCAnVHJ1bmsgTW91bnRhaW4gTGlvbicpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9s
ZFRlc3RSdW5zWzNdWydydW5fc3VtX2NhY2hlJ10sIDI0KTsKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEZvcm1VcmxlbmNvZGVkRGF0YSgnL2FkbWluL3BsYXRm
b3Jtcy5waHAnLAogICAgICAgICAgICAgICAgIHsnYWN0aW9uJzogJ21lcmdlJywgJ2lkJzogb2xk
VGVzdFJ1bnNbMV1bJ3BsYXRmb3JtX2lkJ10sICdkZXN0aW5hdGlvbic6IG9sZFRlc3RSdW5zWzNd
WydwbGF0Zm9ybV9pZCddfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBkYi5xdWVyeShxdWVyeUZvclJ1
bnMpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhl
bigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBjb25zdCBuZXdUZXN0UnVucyA9IHJlc3VsdC5y
b3dzOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG5ld1Rlc3RSdW5zLmxlbmd0aCwgNCk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwobmV3VGVzdFJ1bnNbMF1bJ3J1bl9pZCddLCBvbGRUZXN0
UnVuc1swXVsncnVuX2lkJ10pOwpAQCAtMTAyLDIwICsxMDEsMjAgQEAgZGVzY3JpYmUoIi9hZG1p
bi9wbGF0Zm9ybXMiLCBmdW5jdGlvbiAoKQogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG5ld1Rl
c3RSdW5zWzNdWydwbGF0Zm9ybV9uYW1lJ10sICdUcnVuayBNb3VudGFpbiBMaW9uJyk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwobmV3VGVzdFJ1bnNbM11bJ3J1bl9zdW1fY2FjaGUnXSwgMjQp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG5ld1Rlc3RSdW5zWzFdWydydW5fY29uZmlnJ10s
IG5ld1Rlc3RSdW5zWzNdWydydW5fY29uZmlnJ10pOwotICAgICAgICAgICAgZG9uZSgpOwotICAg
ICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hv
dWxkIG1vdmUgdGVzdCBjb25maWd1cmF0aW9ucyBmcm9tIHRoZSBtZXJnZWQgcGxhdGZvcm0gdG8g
dGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hv
dWxkIG1vdmUgdGVzdCBjb25maWd1cmF0aW9ucyBmcm9tIHRoZSBtZXJnZWQgcGxhdGZvcm0gdG8g
dGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIiwgKCkgPT4gewogICAgICAgICBsZXQgb2xkQ29uZmln
czsKICAgICAgICAgY29uc3QgcmVwb3J0cyA9IHJlcG9ydHNGb3JEaWZmZXJlbnRQbGF0Zm9ybXMo
KTsKICAgICAgICAgcmVwb3J0c1swXVsndGVzdHMnXSA9IHsidGVzdCI6IHsgIm1ldHJpY3MiOiB7
IkZyYW1lUmF0ZSI6IHsgImJhc2VsaW5lIjogW1sxLCAxLCAxXSwgWzEsIDEsIDFdXSB9IH0gfSB9
OwogICAgICAgICBjb25zdCBxdWVyeUZvckNvbmZpZyA9ICdTRUxFQ1QgKiBmcm9tIHRlc3RfY29u
ZmlndXJhdGlvbnMsIHBsYXRmb3JtcywgdGVzdF9tZXRyaWNzJwogICAgICAgICAgICAgKyAnIHdo
ZXJlIGNvbmZpZ19wbGF0Zm9ybSA9IHBsYXRmb3JtX2lkIGFuZCBjb25maWdfbWV0cmljID0gbWV0
cmljX2lkIGFuZCBwbGF0Zm9ybV9uYW1lIGluICgkMSwgJDIpIG9yZGVyIGJ5IGNvbmZpZ19pZCc7
CiAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICBzdWJt
aXRSZXBvcnQocmVwb3J0cykudGhlbihmdW5jdGlvbiAoKSB7CisKKyAgICAgICAgcmV0dXJuIHN1
Ym1pdFJlcG9ydChyZXBvcnRzKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBkYi5x
dWVyeShxdWVyeUZvckNvbmZpZywgW3JlcG9ydHNbMF1bJ3BsYXRmb3JtJ10sIHJlcG9ydHNbMl1b
J3BsYXRmb3JtJ11dKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAg
ICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgb2xkQ29uZmlncyA9IHJlc3Vs
dC5yb3dzOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9sZENvbmZpZ3MubGVuZ3RoLCAyKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvbGRDb25maWdzWzBdWydwbGF0Zm9ybV9uYW1lJ10s
IHJlcG9ydHNbMF1bJ3BsYXRmb3JtJ10pOwpAQCAtMTI0LDEyICsxMjMsMTIgQEAgZGVzY3JpYmUo
Ii9hZG1pbi9wbGF0Zm9ybXMiLCBmdW5jdGlvbiAoKQogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KG9sZENvbmZpZ3NbMV1bJ3BsYXRmb3JtX25hbWUnXSwgcmVwb3J0c1syXVsncGxhdGZvcm0nXSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwob2xkQ29uZmlnc1sxXVsnbWV0cmljX25hbWUnXSwg
J0ZyYW1lUmF0ZScpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9sZENvbmZpZ3NbMV1bJ2Nv
bmZpZ190eXBlJ10sICdjdXJyZW50Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLnBvc3RGb3JtVXJsZW5jb2RlZERhdGEoJy9hZG1pbi9wbGF0Zm9ybXMucGhwJywK
ICAgICAgICAgICAgICAgICB7J2FjdGlvbic6ICdtZXJnZScsICdpZCc6IG9sZENvbmZpZ3NbMF1b
J3BsYXRmb3JtX2lkJ10sICdkZXN0aW5hdGlvbic6IG9sZENvbmZpZ3NbMV1bJ3BsYXRmb3JtX2lk
J119KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgcmV0dXJuIGRiLnF1ZXJ5KHF1ZXJ5Rm9yQ29uZmlnLCBbcmVwb3J0
c1swXVsncGxhdGZvcm0nXSwgcmVwb3J0c1syXVsncGxhdGZvcm0nXV0pOwotICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAg
ICAgICAgICAgICBjb25zdCBuZXdDb25maWdzID0gcmVzdWx0LnJvd3M7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwobmV3Q29uZmlncy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKG5ld0NvbmZpZ3NbMF1bJ3BsYXRmb3JtX25hbWUnXSwgcmVwb3J0c1syXVsncGxhdGZvcm0n
XSk7CkBAIC0xMzgsOCArMTM3LDcgQEAgZGVzY3JpYmUoIi9hZG1pbi9wbGF0Zm9ybXMiLCBmdW5j
dGlvbiAoKQogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG5ld0NvbmZpZ3NbMV1bJ3BsYXRmb3Jt
X25hbWUnXSwgcmVwb3J0c1syXVsncGxhdGZvcm0nXSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwobmV3Q29uZmlnc1sxXVsnbWV0cmljX25hbWUnXSwgJ0ZyYW1lUmF0ZScpOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG5ld0NvbmZpZ3NbMV1bJ2NvbmZpZ190eXBlJ10sICdjdXJyZW50Jyk7
Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9
KTsKICAgICB9KTsKIAogfSk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL2FkbWluLXJlcHJvY2Vzcy1yZXBvcnQtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hZG1pbi1yZXByb2Nlc3MtcmVwb3J0
LXRlc3RzLmpzCShyZXZpc2lvbiAyMTM5NjUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
c2VydmVyLXRlc3RzL2FkbWluLXJlcHJvY2Vzcy1yZXBvcnQtdGVzdHMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDM0ICs0MywzMyBAQCBkZXNjcmliZSgiL2FkbWluL3JlcHJvY2Vzcy1yZXBvcnQi
LCBmdW5jCiAgICAgICAgICAgICB9CiAgICAgICAgIH1dOwogCi0gICAgaXQoInNob3VsZCBzdGls
bCBjcmVhdGUgbmV3IHJlcG9zaXRvcnkgd2hlbiByZXBvc2l0b3J5IG93bmVyc2hpcHMgYXJlIGRp
ZmZlcmVudCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBzdGlsbCBjcmVhdGUg
bmV3IHJlcG9zaXRvcnkgd2hlbiByZXBvc2l0b3J5IG93bmVyc2hpcHMgYXJlIGRpZmZlcmVudCIs
ICgpID0+IHsKICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAg
ICBhZGRCdWlsZGVyRm9yUmVwb3J0KHNpbXBsZVJlcG9ydFdpdGhSZXZpc2lvbnNbMF0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChzaW1wbGVS
ZXBvcnRXaXRoUmV2aXNpb25zWzBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBk
Yi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHsnbmFtZSc6ICdXZWJLaXQnLCAnb3duZXInOiAxfSk7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBp
L3JlcG9ydC8nLCBzaW1wbGVSZXBvcnRXaXRoUmV2aXNpb25zKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAg
ICAgICAgcmV0dXJuIGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFtZSc6ICdXZWJL
aXQnfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcG9zaXRvcmllcykgeworICAgICAg
ICB9KS50aGVuKChyZXBvc2l0b3JpZXMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXBvc2l0b3JpZXMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgIGNvbnN0IHdlYmtpdFJlcHNpdG9y
eUlkID0gcmVwb3NpdG9yaWVzWzBdLm93bmVyID09IDEgPyByZXBvc2l0b3JpZXNbMV0uaWQgOiBy
ZXBvc2l0b3JpZXNbMF0uaWQ7CiAgICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0Um93cygnY29t
bWl0cycsIHsncmV2aXNpb24nOiAnMjEzMjE0JywgJ3JlcG9zaXRvcnknOiB3ZWJraXRSZXBzaXRv
cnlJZH0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSku
dGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQocmVzdWx0Lmxlbmd0aCwgMSk7
Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9
KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgYWRkIGJ1aWxkIiwgZnVuY3Rpb24gKGRvbmUp
IHsKKyAgICBpdCgic2hvdWxkIGFkZCBidWlsZCIsICgpID0+IHsKICAgICAgICAgbGV0IGRiID0g
VGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICBsZXQgcmVwb3J0SWQ7Ci0gICAgICAgIGFk
ZEJ1aWxkZXJGb3JSZXBvcnQoc2ltcGxlUmVwb3J0WzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQoc2ltcGxlUmVwb3J0WzBdKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09O
KCcvYXBpL3JlcG9ydC8nLCBzaW1wbGVSZXBvcnQpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9u
IChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdEFsbCgnYnVpbGRzJyksIGRiLnNlbGVjdEFsbCgn
cmVwb3J0cycpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAg
ICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGJ1aWxkcyA9IHJlc3Vs
dFswXTsKICAgICAgICAgICAgIGNvbnN0IHJlcG9ydHMgPSByZXN1bHRbMV07CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoYnVpbGRzLmxlbmd0aCwgMSk7CkBAIC03OSwzNyArNzgsMzYgQEAgZGVz
Y3JpYmUoIi9hZG1pbi9yZXByb2Nlc3MtcmVwb3J0IiwgZnVuYwogICAgICAgICAgICAgcmVwb3J0
SWQgPSByZXBvcnRzWzBdWydpZCddOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9ydHNb
MF1bJ2J1aWxkX251bWJlciddLCAxOTg2KTsKICAgICAgICAgICAgIHJldHVybiBkYi5xdWVyeSgn
VVBEQVRFIHJlcG9ydHMgU0VUIHJlcG9ydF9idWlsZCA9IE5VTEw7IERFTEVURSBGUk9NIGJ1aWxk
cycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCdidWlsZHMnKTsKLSAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoYnVpbGRzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1aWxkcykgPT4g
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkcy5sZW5ndGgsIDApOwogICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMoYC9hZG1p
bi9yZXByb2Nlc3MtcmVwb3J0P3JlcG9ydD0ke3JlcG9ydElkfWApOwotICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1
cm4gZGIuc2VsZWN0QWxsKCdidWlsZHMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoYnVp
bGRzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1aWxkcykgPT4gewogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGJ1aWxkcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
c1swXVsnbnVtYmVyJ10sIDE5ODYpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5j
YXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIG5vdCBk
dXBsaWNhdGUgdGhlIHJlcHJvY2Vzc2VkIHJlcG9ydCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
aXQoInNob3VsZCBub3QgZHVwbGljYXRlIHRoZSByZXByb2Nlc3NlZCByZXBvcnQiLCAoKSA9PiB7
CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgbGV0IG9y
aWdpbmFsUmVwcm90OwotICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KHNpbXBsZVJlcG9ydFsw
XSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0
KHNpbXBsZVJlcG9ydFswXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgc2ltcGxlUmVwb3J0KTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigo
cmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVz
J10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgncmVwb3J0cycpOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXBvcnRzKSB7CisgICAgICAgIH0pLnRoZW4oKHJl
cG9ydHMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvcnRzLmxlbmd0aCwgMSk7
CiAgICAgICAgICAgICBvcmlnaW5hbFJlcHJvdCA9IHJlcG9ydHNbMF07CiAgICAgICAgICAgICBy
ZXR1cm4gZGIucXVlcnkoJ1VQREFURSByZXBvcnRzIFNFVCByZXBvcnRfYnVpbGQgPSBOVUxMOyBE
RUxFVEUgRlJPTSBidWlsZHMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMoYC9hZG1pbi9yZXByb2Nlc3MtcmVwb3J0P3JlcG9ydD0k
e29yaWdpbmFsUmVwcm90WydpZCddfWApOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxs
KCdyZXBvcnRzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcG9ydHMpIHsKKyAgICAg
ICAgfSkudGhlbigocmVwb3J0cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9y
dHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0IG5ld1BvcnQgPSByZXBvcnRzWzBdOwog
ICAgICAgICAgICAgb3JpZ2luYWxSZXByb3RbJ2NvbW1pdHRlZF9hdCddID0gbnVsbDsKQEAgLTEx
OCw3ICsxMTYsNiBAQCBkZXNjcmliZSgiL2FkbWluL3JlcHJvY2Vzcy1yZXBvcnQiLCBmdW5jCiAg
ICAgICAgICAgICBvcmlnaW5hbFJlcHJvdFsnYnVpbGQnXSA9IG51bGw7CiAgICAgICAgICAgICBu
ZXdQb3J0WydidWlsZCddID0gbnVsbDsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3Jp
Z2luYWxSZXByb3QsIG5ld1BvcnQpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5j
YXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9KTsKSW5kZXg6IFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1
aWxkLXJlcXVlc3RzLXRlc3RzLmpzCShyZXZpc2lvbiAyMTM5NjUpCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtNCw0NCArNCwzOSBAQCBsZXQgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0
Jyk7CiAKIGxldCBNb2NrRGF0YSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL21vY2stZGF0YS5qcycp
OwogbGV0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycp
OworY29uc3QgY29ubmVjdFRvRGF0YWJhc2VJbkV2ZXJ5VGVzdCA9IHJlcXVpcmUoJy4vcmVzb3Vy
Y2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykuY29ubmVjdFRvRGF0YWJhc2VJbkV2ZXJ5VGVzdDsK
IAogZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAgICAgdGhp
cy50aW1lb3V0KDEwMDApOwogICAgIFRlc3RTZXJ2ZXIuaW5qZWN0KCk7CisgICAgY29ubmVjdFRv
RGF0YWJhc2VJbkV2ZXJ5VGVzdCgpOwogCi0gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Cisg
ICAgYmVmb3JlRWFjaCgoKSA9PiB7CiAgICAgICAgIE1vY2tEYXRhLnJlc2V0VjNNb2RlbHMoKTsK
ICAgICB9KTsKIAotICAgIGl0KCdzaG91bGQgcmV0dXJuICJUcmlnZ2VyYWJsZU5vdEZvdW5kIiB3
aGVuIHRoZSBkYXRhYmFzZSBpcyBlbXB0eScsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9idWlsZC1yZXF1ZXN0cy9idWlsZC13
ZWJraXQnKS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgaXQoJ3Nob3VsZCByZXR1cm4g
IlRyaWdnZXJhYmxlTm90Rm91bmQiIHdoZW4gdGhlIGRhdGFiYXNlIGlzIGVtcHR5JywgKCkgPT4g
eworICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL2J1
aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb250ZW50WydzdGF0dXMnXSwgJ1RyaWdnZXJhYmxlTm90Rm91bmQn
KTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAg
IH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgbGlzdCB3aGVu
IHRoZXJlIGFyZSBubyBidWlsZCByZXF1ZXN0cycsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAg
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgnYnVpbGRfdHJpZ2dl
cmFibGVzJywge25hbWU6ICdidWlsZC13ZWJraXQnfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGxpc3Qgd2hlbiB0aGVyZSBh
cmUgbm8gYnVpbGQgcmVxdWVzdHMnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBUZXN0U2VydmVy
LmRhdGFiYXNlKCkuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7bmFtZTogJ2J1aWxkLXdl
YmtpdCd9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLmdldEpTT04oJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jyk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAgICAgICAgfSkudGhlbigoY29udGVu
dCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAnT0sn
KTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
LCBbXSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMn
XSwgW10pOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRzJ10s
IFtdKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCku
c29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1
cyddKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVpbGQgcmVxdWV0cyBh
c3NvY2lhdGVkIHdpdGggYSBnaXZlbiB0cmlnZ2VyYWJsZSB3aXRoIGFwcHJvcHJpYXRlIGNvbW1p
dHMgYW5kIGNvbW1pdFNldHMnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBsZXQgZGIgPSBU
ZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYik7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgcmV0dXJuIGJ1aWxkIHJl
cXVldHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHByb3ByaWF0
ZSBjb21taXRzIGFuZCBjb21taXRTZXRzJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0Rh
dGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcv
YXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwotICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uIChjb250ZW50KSB7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCkuc29ydCgpLCBbJ2J1aWxk
UmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1cyddKTsKIAogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5ndGgsIDIpOwpAQCAt
ODksMTcgKzg0LDEzIEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24K
ICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNd
LmNvbW1pdFNldCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsn
YnVpbGRSZXF1ZXN0cyddWzNdLnN0YXR1cywgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnRlc3QsICcyMDAnKTsKLSAg
ICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwog
ICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCBzdXBwb3J0IHVzZUxlZ2FjeUlkUmVzb2x1dGlvbiBv
cHRpb24nLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYik7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgc3VwcG9ydCB1c2VMZWdhY3lJZFJlc29sdXRp
b24gb3B0aW9uJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEo
VGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJlcXVl
c3RzL2J1aWxkLXdlYmtpdD91c2VMZWdhY3lJZFJlc29sdXRpb249dHJ1ZScpOwotICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+
IHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCkuc29y
dCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1cydd
KTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5n
dGgsIDIpOwpAQCAtMTQ3LDE5ICsxMzgsMTUgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVz
dHMnLCBmdW5jdGlvbgogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bM10uY29tbWl0U2V0LCA0MDIpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uc3RhdHVzLCAncGVuZGluZycpOwogICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10udGVz
dCwgWydzb21lIHRlc3QnXSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNo
KGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCdzaG91bGQgYmUgZmV0Y2hh
YmxlIGJ5IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKGRvbmUp
IHsKLSAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICBkYi5j
b25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEu
YWRkTW9ja0RhdGEoZGIpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgn
c2hvdWxkIGJlIGZldGNoYWJsZSBieSBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZScs
ICgpID0+IHsKKyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0
Y2goKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxl
KCdidWlsZC13ZWJraXQnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoYnVpbGRSZXF1ZXN0
cykgeworICAgICAgICB9KS50aGVuKChidWlsZFJlcXVlc3RzKSA9PiB7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDQpOwogCiAgICAgICAgICAgICBsZXQg
dGVzdCA9IFRlc3QuZmluZEJ5SWQoMjAwKTsKQEAgLTI0MSw0OCArMjI4LDM1IEBAIGRlc2NyaWJl
KCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24KICAgICAgICAgICAgIGxldCBzZWNvbmRX
ZWJLaXRDb21taXQgPSBzZWNvbmRDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXQp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlY29uZFdlYktpdENvbW1pdC5yZXZpc2lvbigp
LCAnMTkyNzM2Jyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoK3NlY29uZFdlYktpdENvbW1p
dC50aW1lKCksIDE0NDgyMjUzMjU2NTApOwotCi0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAg
IH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCdzaG91bGQg
bm90IGluY2x1ZGUgYSBidWlsZCByZXF1ZXN0IGlmIGFsbCByZXF1ZXN0cyBpbiB0aGUgc2FtZSBn
cm91cCBoYWQgYmVlbiBjb21wbGV0ZWQnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBsZXQg
ZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwg
Wydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnXSk7Ci0g
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgbm90IGluY2x1ZGUg
YSBidWlsZCByZXF1ZXN0IGlmIGFsbCByZXF1ZXN0cyBpbiB0aGUgc2FtZSBncm91cCBoYWQgYmVl
biBjb21wbGV0ZWQnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0
YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21w
bGV0ZWQnLCAnY29tcGxldGVkJ10pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIE1h
bmlmZXN0LmZldGNoKCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JU
cmlnZ2VyYWJsZSgnYnVpbGQtd2Via2l0Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGJ1
aWxkUmVxdWVzdHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVpbGRSZXF1ZXN0cykgPT4gewogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCAwKTsKLSAgICAgICAg
ICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0p
OwogCi0gICAgaXQoJ3Nob3VsZCBub3QgaW5jbHVkZSBhIGJ1aWxkIHJlcXVlc3QgaWYgYWxsIHJl
cXVlc3RzIGluIHRoZSBzYW1lIGdyb3VwIGhhZCBiZWVuIGZhaWxlZCBvciBjYW5jbGVkJywgZnVu
Y3Rpb24gKGRvbmUpIHsKLSAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwot
ICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1
cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnZmFpbGVkJywgJ2ZhaWxlZCcsICdjYW5jZWxl
ZCcsICdjYW5jZWxlZCddKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQo
J3Nob3VsZCBub3QgaW5jbHVkZSBhIGJ1aWxkIHJlcXVlc3QgaWYgYWxsIHJlcXVlc3RzIGluIHRo
ZSBzYW1lIGdyb3VwIGhhZCBiZWVuIGZhaWxlZCBvciBjYW5jbGVkJywgKCkgPT4geworICAgICAg
ICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpLCBbJ2Zh
aWxlZCcsICdmYWlsZWQnLCAnY2FuY2VsZWQnLCAnY2FuY2VsZWQnXSkudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIEJ1
aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKCdidWlsZC13ZWJraXQnKTsKLSAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoYnVpbGRSZXF1ZXN0cykgeworICAgICAgICB9KS50aGVuKChidWls
ZFJlcXVlc3RzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0cy5s
ZW5ndGgsIDApOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsK
KyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIGluY2x1ZGUgYWxsIGJ1aWxk
IHJlcXVlc3RzIG9mIGEgdGVzdCBncm91cCBpZiBvbmUgb2YgdGhlIHJlcWV1c3RzIGluIHRoZSBn
cm91cCBoYWQgbm90IGJlZW4gZmluaXNoZWQnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBs
ZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKS50aGVu
KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShk
YiwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ3NjaGVkdWxlZCcsICdwZW5kaW5nJ10pOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgnc2hvdWxkIGluY2x1ZGUgYWxs
IGJ1aWxkIHJlcXVlc3RzIG9mIGEgdGVzdCBncm91cCBpZiBvbmUgb2YgdGhlIHJlcWV1c3RzIGlu
IHRoZSBncm91cCBoYWQgbm90IGJlZW4gZmluaXNoZWQnLCAoKSA9PiB7CisgICAgICAgIHJldHVy
biBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29tcGxldGVk
JywgJ2NvbXBsZXRlZCcsICdzY2hlZHVsZWQnLCAncGVuZGluZyddKS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gQnVp
bGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoJ2J1aWxkLXdlYmtpdCcpOwotICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChidWlsZFJlcXVlc3RzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1aWxk
UmVxdWVzdHMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzLmxl
bmd0aCwgNCk7CiAgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1swXS5oYXNGaW5p
c2hlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzBdLmhhc1N0YXJ0
ZWQoKSk7CkBAIC0yOTYsMTkgKzI3MCwxNSBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0
cycsIGZ1bmN0aW9uCiAgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbM10uaGFz
RmluaXNoZWQoKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbM10uaGFz
U3RhcnRlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzNdLmlzUGVu
ZGluZygpKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7Cisg
ICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGFsbCBidWlsZCBy
ZXF1ZXN0cyBvZiBhIHRlc3QgZ3JvdXAgaWYgb25lIG9mIHRoZSByZXFldXN0cyBpbiB0aGUgZ3Jv
dXAgaXMgc3RpbGwgcnVubmluZycsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGxldCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2Nv
bXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ3J1bm5pbmcnXSk7Ci0gICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhbGwgYnVpbGQg
cmVxdWVzdHMgb2YgYSB0ZXN0IGdyb3VwIGlmIG9uZSBvZiB0aGUgcmVxZXVzdHMgaW4gdGhlIGdy
b3VwIGlzIHN0aWxsIHJ1bm5pbmcnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5h
ZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29tcGxldGVkJywgJ2NvbXBsZXRl
ZCcsICdjb21wbGV0ZWQnLCAncnVubmluZyddKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJl
dHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZl
dGNoRm9yVHJpZ2dlcmFibGUoJ2J1aWxkLXdlYmtpdCcpOwotICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uIChidWlsZFJlcXVlc3RzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1aWxkUmVxdWVzdHMpID0+
IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgNCk7CiAg
ICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1swXS5oYXNGaW5pc2hlZCgpKTsKICAg
ICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzBdLmhhc1N0YXJ0ZWQoKSk7CkBAIC0z
MjIsMTkgKzI5MiwxNiBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9u
CiAgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbM10uaGFzRmluaXNoZWQoKSk7
CiAgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1szXS5oYXNTdGFydGVkKCkpOwog
ICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzNdLmlzUGVuZGluZygpKTsKLSAg
ICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwog
ICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCBvcmRlciBidWlsZCByZXF1ZXN0cyBiYXNlZCBvbiB0
ZXN0IGdyb3VwIGNyZWF0aW9uIHRpbWUgYW5kIG9yZGVyJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAg
ICBpdCgnc2hvdWxkIG9yZGVyIGJ1aWxkIHJlcXVlc3RzIGJhc2VkIG9uIHRlc3QgZ3JvdXAgY3Jl
YXRpb24gdGltZSBhbmQgb3JkZXInLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiks
IE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKV0pOwotICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRN
b2NrRGF0YShkYiksIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKV0pLnRoZW4o
KCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZSgnYnVpbGQtd2Via2l0Jyk7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGJ1aWxkUmVxdWVzdHMpIHsKKyAgICAgICAgfSku
dGhlbigoYnVpbGRSZXF1ZXN0cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
UmVxdWVzdHMubGVuZ3RoLCA4KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3RzWzBdLmlkKCksIDcwMCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0
c1swXS50ZXN0R3JvdXBJZCgpLCA2MDApOwpAQCAtMzYxLDE5ICszMjgsMTYgQEAgZGVzY3JpYmUo
Jy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbgogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGJ1aWxkUmVxdWVzdHNbN10uaWQoKSwgNzEzKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChi
dWlsZFJlcXVlc3RzWzddLnRlc3RHcm91cElkKCksIDYwMSk7CiAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1s3XS5vcmRlcigpLCAzKTsKLSAgICAgICAgICAgIGRv
bmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0g
ICAgaXQoJ3Nob3VsZCBwbGFjZSBidWlsZCByZXF1ZXN0cyBjcmVhdGVkIGJ5IHVzZXIgYmVmb3Jl
IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBvbmVzJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgn
c2hvdWxkIHBsYWNlIGJ1aWxkIHJlcXVlc3RzIGNyZWF0ZWQgYnkgdXNlciBiZWZvcmUgYXV0b21h
dGljYWxseSBjcmVhdGVkIG9uZXMnLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiks
IE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiLCBudWxsLCAncm5pd2EnKV0pOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxs
KFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiksIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdy
b3VwKGRiLCBudWxsLCAncm5pd2EnKV0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJu
IE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hG
b3JUcmlnZ2VyYWJsZSgnYnVpbGQtd2Via2l0Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KGJ1aWxkUmVxdWVzdHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVpbGRSZXF1ZXN0cykgPT4gewog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCA4KTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLmlkKCksIDcxMCk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1swXS50ZXN0R3JvdXBJZCgpLCA2MDEpOwpA
QCAtNDAwLDcgKzM2NCw2IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rp
b24KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzddLmlkKCksIDcwMyk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1s3XS50ZXN0R3JvdXBJZCgp
LCA2MDApOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNbN10u
b3JkZXIoKSwgMyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUp
OworICAgICAgICB9KTsKICAgICB9KTsKIH0pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanMJKHJldmlzaW9uIDIx
Mzk2NSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLW1hbmlm
ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC02LDE5ICs2LDIxIEBAIHJlcXVpcmUoJy4uL3Rvb2xz
L2pzL3YzLW1vZGVscy5qcycpOwogCiBjb25zdCBNb2NrRGF0YSA9IHJlcXVpcmUoJy4vcmVzb3Vy
Y2VzL21vY2stZGF0YS5qcycpOwogY29uc3QgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3Vy
Y2VzL3Rlc3Qtc2VydmVyLmpzJyk7Citjb25zdCBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0
ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5jb25uZWN0VG9E
YXRhYmFzZUluRXZlcnlUZXN0OwogCiBkZXNjcmliZSgnL2FwaS9tYW5pZmVzdCcsIGZ1bmN0aW9u
ICgpIHsKICAgICB0aGlzLnRpbWVvdXQoMTAwMCk7CiAgICAgVGVzdFNlcnZlci5pbmplY3QoKTsK
KyAgICBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0KCk7CiAKLSAgICBiZWZvcmVFYWNoKGZ1
bmN0aW9uICgpIHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKICAgICAgICAgTW9ja0RhdGEucmVz
ZXRWM01vZGVscygpOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBnZW5lcmF0ZSBhbiBlbXB0
eSBtYW5pZmVzdCB3aGVuIGRhdGFiYXNlIGlzIGVtcHR5IiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAg
ICAgICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL21hbmlmZXN0JykudGhl
bihmdW5jdGlvbiAobWFuaWZlc3QpIHsKKyAgICBpdCgic2hvdWxkIGdlbmVyYXRlIGFuIGVtcHR5
IG1hbmlmZXN0IHdoZW4gZGF0YWJhc2UgaXMgZW1wdHkiLCAoKSA9PiB7CisgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvbWFuaWZlc3QnKS50aGVuKCht
YW5pZmVzdCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChPYmplY3Qua2V5cyht
YW5pZmVzdCkuc29ydCgpLCBbJ2FsbCcsICdidWdUcmFja2VycycsICdidWlsZGVycycsICdkYXNo
Ym9hcmQnLCAnZGFzaGJvYXJkcycsCi0gICAgICAgICAgICAgICAgJ2VsYXBzZWRUaW1lJywgJ21l
dHJpY3MnLCAncmVwb3NpdG9yaWVzJywgJ3NpdGVUaXRsZScsICdzdGF0dXMnLCAnc3VtbWFyeVBh
Z2VzJywgJ3Rlc3RzJywgJ3RyaWdnZXJhYmxlcyddKTsKKyAgICAgICAgICAgICAgICAnZWxhcHNl
ZFRpbWUnLCAnZmlsZVVwbG9hZFNpemVMaW1pdCcsICdtZXRyaWNzJywgJ3JlcG9zaXRvcmllcycs
ICdzaXRlVGl0bGUnLCAnc3RhdHVzJywgJ3N1bW1hcnlQYWdlcycsICd0ZXN0cycsICd0cmlnZ2Vy
YWJsZXMnXSk7CiAKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0eXBlb2YobWFuaWZlc3QuZWxh
cHNlZFRpbWUpLCAnbnVtYmVyJyk7CiAgICAgICAgICAgICBkZWxldGUgbWFuaWZlc3QuZWxhcHNl
ZFRpbWU7CkBAIC0zNSwyMCArMzcsMTkgQEAgZGVzY3JpYmUoJy9hcGkvbWFuaWZlc3QnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgdGVzdHM6IHt9LAogICAgICAgICAgICAgICAgIHRy
aWdnZXJhYmxlczoge30sCiAgICAgICAgICAgICAgICAgc3VtbWFyeVBhZ2VzOiBbXSwKKyAgICAg
ICAgICAgICAgICBmaWxlVXBsb2FkU2l6ZUxpbWl0OiAwLAogICAgICAgICAgICAgICAgIHN0YXR1
czogJ09LJwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0p
LmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGNvbnN0IGJ1Z3ppbGxh
RGF0YSA9IHtpZDogMSwgbmFtZTogJ0J1Z3ppbGxhJywgYnVnX3VybDogJ2h0dHBzOi8vd2Via2l0
Lm9yZy9iLyRudW1iZXInLCBuZXdfYnVnX3VybDogJ2h0dHBzOi8vYnVncy53ZWJraXQub3JnLyd9
OwogICAgIGNvbnN0IHJhZGFyRGF0YSA9IHtpZDogMiwgbmFtZTogJ1JhZGFyJ307CiAKLSAgICBp
dCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggYnVnIHRyYWNrZXJzIHdpdGhvdXQgcmVw
b3NpdG9yaWVzIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgVGVzdFNlcnZlci5kYXRhYmFz
ZSgpLmNvbm5lY3QoKTsKLSAgICAgICAgVGVzdFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgnYnVn
X3RyYWNrZXJzJywgYnVnemlsbGFEYXRhKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hv
dWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggYnVnIHRyYWNrZXJzIHdpdGhvdXQgcmVwb3NpdG9y
aWVzIiwgKCkgPT4geworICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLmluc2Vy
dCgnYnVnX3RyYWNrZXJzJywgYnVnemlsbGFEYXRhKS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvbWFuaWZlc3QnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVudCkgeworICAgICAgICB9KS50aGVuKChj
b250ZW50KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQuYnVnVHJh
Y2tlcnMsIHsxOiB7bmFtZTogJ0J1Z3ppbGxhJywgYnVnVXJsOiAnaHR0cHM6Ly93ZWJraXQub3Jn
L2IvJG51bWJlcicsCiAgICAgICAgICAgICAgICAgbmV3QnVnVXJsOiAnaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvJywgcmVwb3NpdG9yaWVzOiBudWxsfX0pOwogCkBAIC01OCwxNSArNTksMTIgQEAg
ZGVzY3JpYmUoJy9hcGkvbWFuaWZlc3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwodHJhY2tlci5uYW1lKCksICdCdWd6aWxsYScpOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHRyYWNrZXIuYnVnVXJsKDEyMyksICdodHRwczovL3dlYmtpdC5vcmcvYi8xMjMnKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0cmFja2VyLm5ld0J1Z1VybCgpLCAnaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvJyk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0
Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBnZW5lcmF0
ZSBtYW5pZmVzdCB3aXRoIGJ1ZyB0cmFja2VycyBhbmQgcmVwb3NpdG9yaWVzIiwgZnVuY3Rpb24g
KGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggYnVnIHRyYWNr
ZXJzIGFuZCByZXBvc2l0b3JpZXMiLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpOwotICAgICAgICBQcm9taXNlLmFs
bChbCisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQo
J2J1Z190cmFja2VycycsIGJ1Z3ppbGxhRGF0YSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1
Z190cmFja2VycycsIHJhZGFyRGF0YSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9zaXRv
cmllcycsIHtpZDogMTEsIG5hbWU6ICdXZWJLaXQnLCB1cmw6ICdodHRwczovL3RyYWMud2Via2l0
Lm9yZy8kMSd9KSwKQEAgLTc1LDkgKzczLDkgQEAgZGVzY3JpYmUoJy9hcGkvbWFuaWZlc3QnLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyYWNrZXJfcmVwb3NpdG9yaWVz
Jywge3RyYWNrZXI6IGJ1Z3ppbGxhRGF0YS5pZCwgcmVwb3NpdG9yeTogMTF9KSwKICAgICAgICAg
ICAgIGRiLmluc2VydCgndHJhY2tlcl9yZXBvc2l0b3JpZXMnLCB7dHJhY2tlcjogcmFkYXJEYXRh
LmlkLCByZXBvc2l0b3J5OiA5fSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyYWNrZXJfcmVw
b3NpdG9yaWVzJywge3RyYWNrZXI6IHJhZGFyRGF0YS5pZCwgcmVwb3NpdG9yeTogMjJ9KSwKLSAg
ICAgICAgXSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIF0pLnRoZW4oKCkgPT4gewogICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9tYW5p
ZmVzdCcpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgICAgIH0p
LnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAgICAgIGxldCBtYW5pZmVzdCA9IE1hbmlmZXN0
Ll9kaWRGZXRjaE1hbmlmZXN0KGNvbnRlbnQpOwogCiAgICAgICAgICAgICBsZXQgd2Via2l0ID0g
UmVwb3NpdG9yeS5maW5kQnlJZCgxMSk7CkBAIC0xMDQsMjEgKzEwMiwxOCBAQCBkZXNjcmliZSgn
L2FwaS9tYW5pZmVzdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydCh0cmFja2Vy
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0cmFja2VyLm5hbWUoKSwgJ1JhZGFyJyk7CiAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFJlcG9zaXRvcnkuc29ydEJ5TmFtZSh0cmFja2Vy
LnJlcG9zaXRvcmllcygpKSwgW29zeCwgaW9zXSk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsKLSAg
ICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNo
b3VsZCBnZW5lcmF0ZSBtYW5pZmVzdCB3aXRoIGJ1aWxkZXJzIiwgZnVuY3Rpb24gKGRvbmUpIHsK
KyAgICBpdCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggYnVpbGRlcnMiLCAoKSA9PiB7
CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29u
bmVjdCgpOwotICAgICAgICBQcm9taXNlLmFsbChbCisgICAgICAgIHJldHVybiBQcm9taXNlLmFs
bChbCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkZXJzJywge2lkOiAxLCBuYW1lOiAnU29t
ZUJ1aWxkZXInLCBwYXNzd29yZF9oYXNoOiAnYScsCiAgICAgICAgICAgICAgICAgYnVpbGRfdXJs
OiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzLyRidWlsZGVyTmFtZS9idWlsZC8k
YnVpbGROdW1iZXInfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkZXJzJywge2lkOiAy
LCBuYW1lOiAnU29tZU90aGVyQnVpbGRlcicsIHBhc3N3b3JkX2hhc2g6ICdiJ30pCi0gICAgICAg
IF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICBdKS50aGVuKCgpID0+IHsKICAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvbWFuaWZlc3Qn
KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVudCkgeworICAgICAgICB9KS50aGVu
KChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQuYnVp
bGRlcnMsIHsKICAgICAgICAgICAgICAgICAnMSc6IHtuYW1lOiAnU29tZUJ1aWxkZXInLCBidWls
ZFVybDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy8kYnVpbGRlck5hbWUvYnVp
bGQvJGJ1aWxkTnVtYmVyJ30sCiAgICAgICAgICAgICAgICAgJzInOiB7bmFtZTogJ1NvbWVPdGhl
ckJ1aWxkZXInLCBidWlsZFVybDogbnVsbH0KQEAgLTEzNSwxNSArMTMwLDEyIEBAIGRlc2NyaWJl
KCcvYXBpL21hbmlmZXN0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0KGJ1aWxk
ZXIpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXIubmFtZSgpLCAnU29tZU90aGVy
QnVpbGRlcicpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXIudXJsRm9yQnVpbGQo
MTIzKSwgbnVsbCk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9u
ZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBnZW5lcmF0ZSBtYW5p
ZmVzdCB3aXRoIHRlc3RzLCBtZXRyaWNzLCBhbmQgcGxhdGZvcm1zIiwgZnVuY3Rpb24gKGRvbmUp
IHsKKyAgICBpdCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggdGVzdHMsIG1ldHJpY3Ms
IGFuZCBwbGF0Zm9ybXMiLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpOwotICAgICAgICBQcm9taXNlLmFsbChbCisg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3Rz
Jywge2lkOiAxLCBuYW1lOiAnU29tZVRlc3QnfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rl
c3RzJywge2lkOiAyLCBuYW1lOiAnU29tZU90aGVyVGVzdCd9KSwKICAgICAgICAgICAgIGRiLmlu
c2VydCgndGVzdHMnLCB7aWQ6IDMsIG5hbWU6ICdDaGlsZFRlc3QnLCBwYXJlbnQ6IDF9KSwKQEAg
LTE2Myw5ICsxNTUsOSBAQCBkZXNjcmliZSgnL2FwaS9tYW5pZmVzdCcsIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtpZDogMTA1LCBt
ZXRyaWM6IDksIHBsYXRmb3JtOiA0NiwgdHlwZTogJ2N1cnJlbnQnfSksCiAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNiwgbWV0cmljOiA1LCBwbGF0
Zm9ybTogMjMsIHR5cGU6ICdjdXJyZW50J30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0
X2NvbmZpZ3VyYXRpb25zJywge2lkOiAxMDcsIG1ldHJpYzogNSwgcGxhdGZvcm06IDIzLCB0eXBl
OiAnYmFzZWxpbmUnfSksCi0gICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICBd
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LmdldEpTT04oJy9hcGkvbWFuaWZlc3QnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29u
dGVudCkgeworICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKGNvbnRlbnQudGVzdHMsIHsKICAgICAgICAgICAgICAgICAiMSI6IHsibmFt
ZSI6ICJTb21lVGVzdCIsICJwYXJlbnRJZCI6IG51bGwsICJ1cmwiOiBudWxsfSwKICAgICAgICAg
ICAgICAgICAiMiI6IHsibmFtZSI6ICJTb21lT3RoZXJUZXN0IiwgInBhcmVudElkIjogbnVsbCwg
InVybCI6IG51bGx9LApAQCAtMjcxLDE1ICsyNjMsMTIgQEAgZGVzY3JpYmUoJy9hcGkvbWFuaWZl
c3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRl
c3QubWV0cmljcygpLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRD
aGlsZFRlc3QubWV0cmljcygpWzBdLmxhYmVsKCksICdUaW1lJyk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygpWzBdLmZ1bGxOYW1lKCksICdTb21lVGVz
dCBcdTIyMEIgQ2hpbGRUZXN0IFx1MjIwQiBHcmFuZENoaWxkIDogVGltZScpOwotCi0gICAgICAg
ICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9
KTsKIAotICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0aCB0cmlnZ2VyYWJsZXMi
LCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0
aCB0cmlnZ2VyYWJsZXMiLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpOwotICAgICAgICBQcm9taXNlLmFsbChbCisg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9z
aXRvcmllcycsIHtpZDogMTEsIG5hbWU6ICdXZWJLaXQnLCB1cmw6ICdodHRwczovL3RyYWMud2Vi
a2l0Lm9yZy8kMSd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywge2lk
OiA5LCBuYW1lOiAnT1MgWCd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVz
Jywge2lkOiAxMDEsIG5hbWU6ICdXZWJLaXQnLCBvd25lcjogOSwgdXJsOiAnaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvJDEnfSksCkBAIC0zMDUsOSArMjk0LDkgQEAgZGVzY3JpYmUoJy9hcGkvbWFu
aWZlc3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyaWdnZXJhYmxl
X2NvbmZpZ3VyYXRpb25zJywge3RyaWdnZXJhYmxlOiAyMDAsIHRlc3Q6IDIsIHBsYXRmb3JtOiA0
Nn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucycs
IHt0cmlnZ2VyYWJsZTogMjAxLCB0ZXN0OiAxLCBwbGF0Zm9ybTogMjN9KSwKICAgICAgICAgICAg
IGRiLmluc2VydCgndHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCB7dHJpZ2dlcmFibGU6IDIw
MSwgdGVzdDogMiwgcGxhdGZvcm06IDIzfSksCi0gICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5m
ZXRjaCgpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICBsZXQgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZCgxMSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0Lm5hbWUoKSwgJ1dlYktpdCcpOwogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdC51cmxGb3JSZXZpc2lvbigxMjMpLCAnaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvMTIzJyk7CkBAIC0zNTEsOSArMzQwLDcgQEAgZGVzY3JpYmUoJy9h
cGkvbWFuaWZlc3QnLCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChU
cmlnZ2VyYWJsZS5maW5kQnlUZXN0Q29uZmlndXJhdGlvbihzb21lT3RoZXJUZXN0LCBpb3M5aXBo
b25lNXMpLCBpb3NUcmlnZ2VyYWJsZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoVHJpZ2dl
cmFibGUuZmluZEJ5VGVzdENvbmZpZ3VyYXRpb24oY2hpbGRUZXN0LCBpb3M5aXBob25lNXMpLCBp
b3NUcmlnZ2VyYWJsZSk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2go
ZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiB9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLW1lYXN1cmVtZW50LXNldC10ZXN0cy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1tZWFz
dXJlbWVudC1zZXQtdGVzdHMuanMJKHJldmlzaW9uIDIxMzk2NSkKKysrIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLW1lYXN1cmVtZW50LXNldC10ZXN0cy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMTM1LDY1ICsxMzUsNjEgQEAgZGVzY3JpYmUoIi9hcGkvbWVhc3VyZW1l
bnQtc2V0IiwgZnVuY3RpbwogICAgICAgICAgICAgfSwKICAgICAgICAgfX1dOwogCi0gICAgaXQo
InNob3VsZCByZWplY3Qgd2hlbiBwbGF0Zm9ybSBJRCBpcyBtaXNzaW5nIiwgZnVuY3Rpb24gKGRv
bmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoQnVpbGRUaW1lWzBd
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIHJlamVjdCB3aGVuIHBsYXRmb3Jt
IElEIGlzIG1pc3NpbmciLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVw
b3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9y
dFdpdGhCdWlsZFRpbWUpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gcXVlcnlQbGF0
Zm9ybUFuZE1ldHJpYygnTW91bnRhaW4gTGlvbicsICdUaW1lJyk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oYC9hcGkvbWVhc3Vy
ZW1lbnQtc2V0Lz9tZXRyaWM9JHtyZXN1bHQubWV0cmljSWR9YCk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnQW1iaWd1b3VzUmVx
dWVzdCcpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIHJlamVjdCB3aGVuIG1ldHJpYyBJ
RCBpcyBtaXNzaW5nIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJl
cG9ydChyZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgi
c2hvdWxkIHJlamVjdCB3aGVuIG1ldHJpYyBJRCBpcyBtaXNzaW5nIiwgKCkgPT4geworICAgICAg
ICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoQnVpbGRUaW1lKTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAg
ICAgICAgICAgcmV0dXJuIHF1ZXJ5UGxhdGZvcm1BbmRNZXRyaWMoJ01vdW50YWluIExpb24nLCAn
VGltZScpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSku
dGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5nZXRKU09OKGAvYXBpL21lYXN1cmVtZW50LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxh
dGZvcm1JZH1gKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAg
ICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdBbWJpZ3VvdXNSZXF1ZXN0Jyk7Ci0gICAgICAgICAgICBkb25lKCk7
Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0
KCJzaG91bGQgcmVqZWN0IGFuIGludmFsaWQgcGxhdGZvcm0gbmFtZSIsIGZ1bmN0aW9uIChkb25l
KSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCByZWplY3QgYW4gaW52YWxpZCBwbGF0
Zm9ybSBuYW1lIiwgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChy
ZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRo
QnVpbGRUaW1lKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAg
ICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UGxhdGZvcm1B
bmRNZXRyaWMoJ01vdW50YWluIExpb24nLCAnVGltZScpOwotICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKGAvYXBpL21lYXN1cmVtZW50
LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxhdGZvcm1JZH1hJm1ldHJpYz0ke3Jlc3VsdC5tZXRy
aWNJZH1gKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAg
fSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25z
ZVsnc3RhdHVzJ10sICdJbnZhbGlkUGxhdGZvcm0nKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAg
ICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNo
b3VsZCByZWplY3QgYW4gaW52YWxpZCBtZXRyaWMgbmFtZSIsIGZ1bmN0aW9uIChkb25lKSB7Ci0g
ICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCByZWplY3QgYW4gaW52YWxpZCBtZXRyaWMgbmFt
ZSIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0
aEJ1aWxkVGltZVswXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aEJ1aWxkVGlt
ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0
YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIHJldHVybiBxdWVyeVBsYXRmb3JtQW5kTWV0cmlj
KCdNb3VudGFpbiBMaW9uJywgJ1RpbWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVz
dWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTihgL2FwaS9tZWFzdXJlbWVudC1zZXQvP3Bs
YXRmb3JtPSR7cmVzdWx0LnBsYXRmb3JtSWR9Jm1ldHJpYz0ke3Jlc3VsdC5tZXRyaWNJZH1iYCk7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1
cyddLCAnSW52YWxpZE1ldHJpYycpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5j
YXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGJlIGFi
bGUgdG8gcmV0dXJuIGFuIGVtcHR5IHJlcG9ydCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQo
InNob3VsZCByZXR1cm4gNDA0IHdoZW4gdGhlIHJlcG9ydCBpcyBlbXB0eSIsICgpID0+IHsKICAg
ICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIFByb21pc2Uu
YWxsKFsKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgIGRiLmluc2Vy
dCgndGVzdHMnLCB7aWQ6IDEsIG5hbWU6ICdTb21lVGVzdCd9KSwKICAgICAgICAgICAgIGRiLmlu
c2VydCgndGVzdHMnLCB7aWQ6IDIsIG5hbWU6ICdTb21lT3RoZXJUZXN0J30pLAogICAgICAgICAg
ICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogMywgbmFtZTogJ0NoaWxkVGVzdCcsIHBhcmVudDog
MX0pLApAQCAtMjEzLDI1ICsyMDksMjQgQEAgZGVzY3JpYmUoIi9hcGkvbWVhc3VyZW1lbnQtc2V0
IiwgZnVuY3RpbwogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywg
e2lkOiAxMDUsIG1ldHJpYzogOSwgcGxhdGZvcm06IDQ2LCB0eXBlOiAnY3VycmVudCd9KSwKICAg
ICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtpZDogMTA2LCBtZXRy
aWM6IDUsIHBsYXRmb3JtOiAyMywgdHlwZTogJ2N1cnJlbnQnfSksCiAgICAgICAgICAgICBkYi5p
bnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNywgbWV0cmljOiA1LCBwbGF0Zm9y
bTogMjMsIHR5cGU6ICdiYXNlbGluZSd9KSwKLSAgICAgICAgXSkudGhlbihmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0
YXR1cyhgL2FwaS9tZWFzdXJlbWVudC1zZXQvP3BsYXRmb3JtPTQ2Jm1ldHJpYz01YCkudGhlbihm
dW5jdGlvbiAocmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2Uuc3RhdHVzQ29kZSwgNDA0KTsKLSAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikgewor
ICAgICAgICBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKGAvYXBpL21lYXN1cmVtZW50LXNldC8/cGxhdGZv
cm09NDYmbWV0cmljPTVgKS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgICAgIGFz
c2VydChmYWxzZSk7CisgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoZXJyb3IsIDQwNCk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwogICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9
KTsKIAotICAgIGl0KCJzaG91bGQgYmUgYWJsZSB0byByZXRyaWV2ZSBhIHJlcG9ydGVkIHZhbHVl
IiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRX
aXRoQnVpbGRUaW1lWzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIGJlIGFi
bGUgdG8gcmV0cmlldmUgYSByZXBvcnRlZCB2YWx1ZSIsICgpID0+IHsKKyAgICAgICAgcmV0dXJu
IGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2Fw
aS9yZXBvcnQvJywgcmVwb3J0V2l0aEJ1aWxkVGltZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAg
IHJldHVybiBxdWVyeVBsYXRmb3JtQW5kTWV0cmljKCdNb3VudGFpbiBMaW9uJywgJ1RpbWUnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJl
c3VsdCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0
SlNPTldpdGhTdGF0dXMoYC9hcGkvbWVhc3VyZW1lbnQtc2V0Lz9wbGF0Zm9ybT0ke3Jlc3VsdC5w
bGF0Zm9ybUlkfSZtZXRyaWM9JHtyZXN1bHQubWV0cmljSWR9YCk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAg
ICAgICAgICAgICBjb25zdCBidWlsZFRpbWUgPSArKG5ldyBEYXRlKHJlcG9ydFdpdGhCdWlsZFRp
bWVbMF1bJ2J1aWxkVGltZSddKSk7CiAKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2Jq
ZWN0LmtleXMocmVzcG9uc2UpLnNvcnQoKSwKQEAgLTI0OCw3ICsyNDMsNyBAQCBkZXNjcmliZSgi
L2FwaS9tZWFzdXJlbWVudC1zZXQiLCBmdW5jdGlvCiAKICAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoT2JqZWN0LmtleXMocmVzcG9uc2VbJ2NvbmZpZ3VyYXRpb25zJ10pLCBbJ2N1cnJlbnQn
XSk7CiAKLSAgICAgICAgICAgIHZhciBjdXJyZW50Um93cyA9IHJlc3BvbnNlWydjb25maWd1cmF0
aW9ucyddWydjdXJyZW50J107CisgICAgICAgICAgICBjb25zdCBjdXJyZW50Um93cyA9IHJlc3Bv
bnNlWydjb25maWd1cmF0aW9ucyddWydjdXJyZW50J107CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY3VycmVudFJvd3MubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjdXJy
ZW50Um93c1swXS5sZW5ndGgsIHJlc3BvbnNlWydmb3JtYXRNYXAnXS5sZW5ndGgpOwogICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChmb3JtYXQocmVzcG9uc2VbJ2Zvcm1hdE1hcCddLCBjdXJy
ZW50Um93c1swXSksIHsKQEAgLTI2MSwxNyArMjU2LDE2IEBAIGRlc2NyaWJlKCIvYXBpL21lYXN1
cmVtZW50LXNldCIsIGZ1bmN0aW8KICAgICAgICAgICAgICAgICBjb21taXRUaW1lOiBidWlsZFRp
bWUsCiAgICAgICAgICAgICAgICAgYnVpbGRUaW1lOiBidWlsZFRpbWUsCiAgICAgICAgICAgICAg
ICAgYnVpbGROdW1iZXI6ICcxMjMnfSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0p
LmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgcmV0
dXJuIHJldHVybiB0aGUgcmlnaHQgSURzIGZvciBtZWFzdXJlbWVudCwgYnVpbGQsIGFuZCBidWls
ZGVyIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChyZXBv
cnRXaXRoQnVpbGRUaW1lWzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIHJl
dHVybiByZXR1cm4gdGhlIHJpZ2h0IElEcyBmb3IgbWVhc3VyZW1lbnQsIGJ1aWxkLCBhbmQgYnVp
bGRlciIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0
V2l0aEJ1aWxkVGltZVswXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aEJ1aWxk
VGltZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0p
LnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Vb
J3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIHJldHVybiBxdWVyeVBsYXRmb3JtQW5kTWV0
cmljKCdNb3VudGFpbiBMaW9uJywgJ1RpbWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29u
c3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoWwogICAgICAgICAgICAgICAgIGRiLnNlbGVjdEFsbCgndGVzdF9ydW5zJyksCkBAIC0y
NzksNyArMjczLDcgQEAgZGVzY3JpYmUoIi9hcGkvbWVhc3VyZW1lbnQtc2V0IiwgZnVuY3Rpbwog
ICAgICAgICAgICAgICAgIGRiLnNlbGVjdEFsbCgnYnVpbGRlcnMnKSwKICAgICAgICAgICAgICAg
ICBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKGAvYXBpL21lYXN1cmVt
ZW50LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxhdGZvcm1JZH0mbWV0cmljPSR7cmVzdWx0Lm1l
dHJpY0lkfWApLAogICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJl
c3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0
IHJ1bnMgPSByZXN1bHRbMF07CiAgICAgICAgICAgICBjb25zdCBidWlsZHMgPSByZXN1bHRbMV07
CiAgICAgICAgICAgICBjb25zdCBidWlsZGVycyA9IHJlc3VsdFsyXTsKQEAgLTI5OSwyMyArMjkz
LDggQEAgZGVzY3JpYmUoIi9hcGkvbWVhc3VyZW1lbnQtc2V0IiwgZnVuY3RpbwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKG1lYXN1cmVtZW50W3Jlc3BvbnNlWydmb3JtYXRNYXAnXS5pbmRleE9m
KCdpZCcpXSwgbWVhc3VyZW1lbnRJZCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwobWVhc3Vy
ZW1lbnRbcmVzcG9uc2VbJ2Zvcm1hdE1hcCddLmluZGV4T2YoJ2J1aWxkJyldLCBidWlsZElkKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChtZWFzdXJlbWVudFtyZXNwb25zZVsnZm9ybWF0TWFw
J10uaW5kZXhPZignYnVpbGRlcicpXSwgYnVpbGRlcklkKTsKLQotICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICB9KS5jYXRjaChkb25lKTsKLSAgICB9KTsKLQotICAgIGZ1bmN0aW9uIHBvc3RS
ZXBvcnRzKHJlcG9ydHMsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWYgKCFyZXBvcnRzLmxl
bmd0aCkKLSAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwotCi0gICAgICAgIHBvc3RKU09O
KCcvYXBpL3JlcG9ydC8nLCByZXBvcnRzWzBdLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKLSAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDApOwotICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9uc2VUZXh0KVsnc3RhdHVz
J10sICdPSycpOwotCi0gICAgICAgICAgICBwb3N0UmVwb3J0cyhyZXBvcnRzLnNsaWNlKDEpLCBj
YWxsYmFjayk7CiAgICAgICAgIH0pOwotICAgIH0KKyAgICB9KTsKIAogICAgIGZ1bmN0aW9uIHF1
ZXJ5UGxhdGZvcm1BbmRNZXRyaWNXaXRoUmVwb3NpdG9yeShwbGF0Zm9ybU5hbWUsIG1ldHJpY05h
bWUsIHJlcG9zaXRvcnlOYW1lKQogICAgIHsKQEAgLTMyNCwyNCArMzAzLDIyIEBAIGRlc2NyaWJl
KCIvYXBpL21lYXN1cmVtZW50LXNldCIsIGZ1bmN0aW8KICAgICAgICAgICAgIGRiLnNlbGVjdEZp
cnN0Um93KCdwbGF0Zm9ybXMnLCB7bmFtZTogcGxhdGZvcm1OYW1lfSksCiAgICAgICAgICAgICBk
Yi5zZWxlY3RGaXJzdFJvdygndGVzdF9tZXRyaWNzJywge25hbWU6IG1ldHJpY05hbWV9KSwKICAg
ICAgICAgICAgIGRiLnNlbGVjdEZpcnN0Um93KCdyZXBvc2l0b3JpZXMnLCB7bmFtZTogcmVwb3Np
dG9yeU5hbWV9KSwKLSAgICAgICAgXSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAg
ICAgICByZXR1cm4ge3BsYXRmb3JtSWQ6IHJlc3VsdFswXVsnaWQnXSwgbWV0cmljSWQ6IHJlc3Vs
dFsxXVsnaWQnXSwgcmVwb3NpdG9yeUlkOiByZXN1bHRbMl1bJ2lkJ119OwotICAgICAgICB9KTsK
KyAgICAgICAgXSkudGhlbigocmVzdWx0KSA9PiAoe3BsYXRmb3JtSWQ6IHJlc3VsdFswXVsnaWQn
XSwgbWV0cmljSWQ6IHJlc3VsdFsxXVsnaWQnXSwgcmVwb3NpdG9yeUlkOiByZXN1bHRbMl1bJ2lk
J119KSk7CiAgICAgfQogCi0gICAgaXQoInNob3VsZCBvcmRlciByZXN1bHRzIGJ5IGNvbW1pdCB0
aW1lIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIG9yZGVyIHJlc3VsdHMgYnkg
Y29tbWl0IHRpbWUiLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCk7CiAgICAgICAgIGxldCByZXBvc2l0b3J5SWQ7Ci0gICAgICAgIGFkZEJ1aWxk
ZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0p
LnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTignL2FwaS9y
ZXBvcnQvJywgcmVwb3J0V2l0aEJ1aWxkVGltZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUu
cG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBxdWVyeVBsYXRmb3JtQW5kTWV0cmljV2l0aFJlcG9zaXRvcnkoJ01vdW50YWluIExp
b24nLCAnVGltZScsICdXZWJLaXQnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0
KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgcmVwb3NpdG9y
eUlkID0gcmVzdWx0LnJlcG9zaXRvcnlJZDsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0
SlNPTldpdGhTdGF0dXMoYC9hcGkvbWVhc3VyZW1lbnQtc2V0Lz9wbGF0Zm9ybT0ke3Jlc3VsdC5w
bGF0Zm9ybUlkfSZtZXRyaWM9JHtyZXN1bHQubWV0cmljSWR9YCk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAg
ICAgICAgICAgICBjb25zdCBjdXJyZW50Um93cyA9IHJlc3BvbnNlWydjb25maWd1cmF0aW9ucydd
WydjdXJyZW50J107CiAgICAgICAgICAgICBjb25zdCBidWlsZFRpbWUgPSArKG5ldyBEYXRlKHJl
cG9ydFdpdGhCdWlsZFRpbWVbMF1bJ2J1aWxkVGltZSddKSk7CiAgICAgICAgICAgICBjb25zdCBy
ZXZpc2lvblRpbWUgPSArKG5ldyBEYXRlKHJlcG9ydFdpdGhSZXZpc2lvblswXVsncmV2aXNpb25z
J11bJ1dlYktpdCddWyd0aW1lc3RhbXAnXSkpOwpAQCAtMzY4LDE0ICszNDUsMTMgQEAgZGVzY3Jp
YmUoIi9hcGkvbWVhc3VyZW1lbnQtc2V0IiwgZnVuY3RpbwogICAgICAgICAgICAgICAgIGNvbW1p
dFRpbWU6IGJ1aWxkVGltZSwKICAgICAgICAgICAgICAgICBidWlsZFRpbWU6IGJ1aWxkVGltZSwK
ICAgICAgICAgICAgICAgICBidWlsZE51bWJlcjogJzEyMycgfSk7Ci0gICAgICAgICAgICBkb25l
KCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAg
IGl0KCJzaG91bGQgb3JkZXIgcmVzdWx0cyBieSBidWlsZCB0aW1lIHdoZW4gY29tbWl0IHRpbWVz
IGFyZSBtaXNzaW5nIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIG9yZGVyIHJl
c3VsdHMgYnkgYnVpbGQgdGltZSB3aGVuIGNvbW1pdCB0aW1lcyBhcmUgbWlzc2luZyIsICgpID0+
IHsKICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKICAgICAg
ICAgbGV0IHJlcG9zaXRvcnlJZDsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRX
aXRoQnVpbGRUaW1lWzBdKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJG
b3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCiAgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7
J2lkJzogMSwgJ25hbWUnOiAnbWFjT1MnfSksCkBAIC0zOTYsNyArMzcyLDcgQEAgZGVzY3JpYmUo
Ii9hcGkvbWVhc3VyZW1lbnQtc2V0IiwgZnVuY3RpbwogICAgICAgICAgICAgICAgICJwbGF0Zm9y
bSI6ICJTaWVycmEiLAogICAgICAgICAgICAgICAgICJ0ZXN0cyI6IHsgIlRlc3QiOiB7Im1ldHJp
Y3MiOiB7IlRpbWUiOiB7ICJiYXNlbGluZSI6IFsxLCAyLCAzLCA0LCA1XSB9IH0gfSB9LAogICAg
ICAgICAgICAgfV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSku
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OKCcvYXBpL3Jl
cG9ydC8nLCBbewogICAgICAgICAgICAgICAgICJidWlsZE51bWJlciI6ICIxMDAyIiwKICAgICAg
ICAgICAgICAgICAiYnVpbGRUaW1lIjogJzIwMTctMDEtMTkgMTk6NDY6MzcnLApAQCAtNDEwLDEx
ICszODYsMTEgQEAgZGVzY3JpYmUoIi9hcGkvbWVhc3VyZW1lbnQtc2V0IiwgZnVuY3RpbwogICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJTaWVycmEiLAogICAgICAgICAgICAgICAgICJ0ZXN0
cyI6IHsgIlRlc3QiOiB7Im1ldHJpY3MiOiB7IlRpbWUiOiB7ICJiYXNlbGluZSI6IFs1LCA2LCA3
LCA4LCA5XSB9IH0gfSB9LAogICAgICAgICAgICAgfV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gcXVl
cnlQbGF0Zm9ybUFuZE1ldHJpY1dpdGhSZXBvc2l0b3J5KCdTaWVycmEnLCAnVGltZScsICdtYWNP
UycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhl
bigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT05XaXRoU3Rh
dHVzKGAvYXBpL21lYXN1cmVtZW50LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxhdGZvcm1JZH0m
bWV0cmljPSR7cmVzdWx0Lm1ldHJpY0lkfWApOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChy
ZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAg
Y29uc3QgY3VycmVudFJvd3MgPSByZXNwb25zZVsnY29uZmlndXJhdGlvbnMnXVsnYmFzZWxpbmUn
XTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjdXJyZW50Um93cy5sZW5ndGgsIDIpOwogICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChmb3JtYXQocmVzcG9uc2VbJ2Zvcm1hdE1hcCddLCBj
dXJyZW50Um93c1swXSksIHsKQEAgLTQzNywxMDUgKzQxMyw5NyBAQCBkZXNjcmliZSgiL2FwaS9t
ZWFzdXJlbWVudC1zZXQiLCBmdW5jdGlvCiAgICAgICAgICAgICAgICAgY29tbWl0VGltZTogK0Rh
dGUuVVRDKDIwMTcsIDAsIDE5LCAxOSwgNDYsIDM3KSwKICAgICAgICAgICAgICAgICBidWlsZFRp
bWU6ICtEYXRlLlVUQygyMDE3LCAwLCAxOSwgMTksIDQ2LCAzNyksCiAgICAgICAgICAgICAgICAg
YnVpbGROdW1iZXI6ICcxMDAyJyB9KTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSku
Y2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgZnVuY3Rpb24gYnVpbGRO
dW1iZXJzKHBhcnNlZFJlc3VsdCwgY29uZmlnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNl
ZFJlc3VsdFsnY29uZmlndXJhdGlvbnMnXVtjb25maWddLm1hcChmdW5jdGlvbiAocm93KSB7Ci0g
ICAgICAgICAgICByZXR1cm4gZm9ybWF0KHBhcnNlZFJlc3VsdFsnZm9ybWF0TWFwJ10sIHJvdylb
J2J1aWxkTnVtYmVyJ107Ci0gICAgICAgIH0pOworICAgICAgICByZXR1cm4gcGFyc2VkUmVzdWx0
Wydjb25maWd1cmF0aW9ucyddW2NvbmZpZ10ubWFwKChyb3cpID0+IGZvcm1hdChwYXJzZWRSZXN1
bHRbJ2Zvcm1hdE1hcCddLCByb3cpWydidWlsZE51bWJlciddKTsKICAgICB9CiAKLSAgICBpdCgi
c2hvdWxkIGluY2x1ZGUgb25lIGRhdGEgcG9pbnQgYWZ0ZXIgdGhlIGN1cnJlbnQgdGltZSByYW5n
ZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBpbmNsdWRlIG9uZSBkYXRhIHBv
aW50IGFmdGVyIHRoZSBjdXJyZW50IHRpbWUgcmFuZ2UiLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0
IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JS
ZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
IHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4o
KCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTignL2FwaS9yZXBvcnQv
JywgcmVwb3J0V2l0aEFuY2VudFJldmlzaW9uKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5w
b3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aE5ld1JldmlzaW9uKTsKLSAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgcmV0dXJuIHF1ZXJ5UGxhdGZvcm1BbmRNZXRyaWMoJ01vdW50YWluIExpb24nLCAnVGltZScp
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigo
cmVzdWx0KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT05XaXRoU3RhdHVz
KGAvYXBpL21lYXN1cmVtZW50LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxhdGZvcm1JZH0mbWV0
cmljPSR7cmVzdWx0Lm1ldHJpY0lkfWApOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNw
b25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ2NsdXN0ZXJDb3VudCddLCAyLCAnc2hvdWxkIGhhdmUgdHdvIGNsdXN0
ZXJzJyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGJ1aWxkTnVtYmVycyhyZXNwb25z
ZSwgJ2N1cnJlbnQnKSwKICAgICAgICAgICAgICAgICBbcmVwb3J0V2l0aEFuY2VudFJldmlzaW9u
WzBdWydidWlsZE51bWJlciddLCByZXBvcnRXaXRoTmV3UmV2aXNpb25bMF1bJ2J1aWxkTnVtYmVy
J11dKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBhbHdheXMgaW5jbHVkZSBvbmUgb2xk
IGRhdGEgcG9pbnQgYmVmb3JlIHRoZSBjdXJyZW50IHRpbWUgcmFuZ2UiLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgIGl0KCJzaG91bGQgYWx3YXlzIGluY2x1ZGUgb25lIG9sZCBkYXRhIHBvaW50IGJl
Zm9yZSB0aGUgY3VycmVudCB0aW1lIHJhbmdlIiwgKCkgPT4gewogICAgICAgICBjb25zdCByZW1v
dGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwotICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0
KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1
cm4gYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJl
cG9ydFdpdGhCdWlsZFRpbWUpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OKCcv
YXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoQW5jZW50UmV2aXNpb24pOwotICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1
cm4gcXVlcnlQbGF0Zm9ybUFuZE1ldHJpYygnTW91bnRhaW4gTGlvbicsICdUaW1lJyk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTldpdGhTdGF0dXMoYC9hcGkv
bWVhc3VyZW1lbnQtc2V0Lz9wbGF0Zm9ybT0ke3Jlc3VsdC5wbGF0Zm9ybUlkfSZtZXRyaWM9JHty
ZXN1bHQubWV0cmljSWR9YCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7
CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ2NsdXN0ZXJDb3VudCddLCAyLCAnc2hvdWxkIGhhdmUgdHdvIGNsdXN0ZXJz
Jyk7CiAgICAgICAgICAgICBsZXQgY3VycmVudFJvd3MgPSByZXNwb25zZVsnY29uZmlndXJhdGlv
bnMnXVsnY3VycmVudCddOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGN1cnJlbnRSb3dzLmxl
bmd0aCwgMiwgJ3Nob3VsZCBjb250YWluIHR3byBkYXRhIHBvaW50cycpOwogICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChidWlsZE51bWJlcnMocmVzcG9uc2UsICdjdXJyZW50JyksIFtyZXBv
cnRXaXRoQW5jZW50UmV2aXNpb25bMF1bJ2J1aWxkTnVtYmVyJ10sIHJlcG9ydFdpdGhCdWlsZFRp
bWVbMF1bJ2J1aWxkTnVtYmVyJ11dKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSku
Y2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBjcmVh
dGUgY2FjaGVkIHJlc3VsdHMiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCJzaG91bGQgY3Jl
YXRlIGNhY2hlZCByZXN1bHRzIiwgKCkgPT4gewogICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpOwogICAgICAgICBsZXQgY2FjaGVQcmVmaXg7Ci0gICAgICAgIGFk
ZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRp
bWVbMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTign
L2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aEFuY2VudFJldmlzaW9uKTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0
dXJuIHJlbW90ZS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aFJldmlzaW9uKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0
V2l0aE5ld1JldmlzaW9uKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
IH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UGxhdGZvcm1BbmRNZXRy
aWMoJ01vdW50YWluIExpb24nLCAnVGltZScpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChy
ZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBjYWNo
ZVByZWZpeCA9ICcvZGF0YS9tZWFzdXJlbWVudC1zZXQtJyArIHJlc3VsdC5wbGF0Zm9ybUlkICsg
Jy0nICsgcmVzdWx0Lm1ldHJpY0lkOwogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09O
V2l0aFN0YXR1cyhgL2FwaS9tZWFzdXJlbWVudC1zZXQvP3BsYXRmb3JtPSR7cmVzdWx0LnBsYXRm
b3JtSWR9Jm1ldHJpYz0ke3Jlc3VsdC5tZXRyaWNJZH1gKTsKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAobmV3UmVzdWx0KSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT05XaXRo
U3RhdHVzKGAke2NhY2hlUHJlZml4fS5qc29uYCkudGhlbihmdW5jdGlvbiAoY2FjaGVkUmVzdWx0
KSB7CisgICAgICAgIH0pLnRoZW4oKG5ld1Jlc3VsdCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IHJlbW90ZS5nZXRKU09OV2l0aFN0YXR1cyhgJHtjYWNoZVByZWZpeH0uanNvbmApLnRoZW4oKGNh
Y2hlZFJlc3VsdCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwobmV3UmVz
dWx0LCBjYWNoZWRSZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNP
TldpdGhTdGF0dXMoYCR7Y2FjaGVQcmVmaXh9LSR7Y2FjaGVkUmVzdWx0WydzdGFydFRpbWUnXX0u
anNvbmApOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAob2xkUmVzdWx0KSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIG9sZEJ1aWxkTnVtYmVycyA9IGJ1aWxkTnVtYmVycyhvbGRSZXN1bHQs
ICdjdXJyZW50Jyk7Ci0gICAgICAgICAgICAgICAgdmFyIG5ld0J1aWxkTnVtYmVycyA9IGJ1aWxk
TnVtYmVycyhuZXdSZXN1bHQsICdjdXJyZW50Jyk7CisgICAgICAgICAgICB9KS50aGVuKChvbGRS
ZXN1bHQpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBvbGRCdWlsZE51bWJlcnMgPSBidWls
ZE51bWJlcnMob2xkUmVzdWx0LCAnY3VycmVudCcpOworICAgICAgICAgICAgICAgIGNvbnN0IG5l
d0J1aWxkTnVtYmVycyA9IGJ1aWxkTnVtYmVycyhuZXdSZXN1bHQsICdjdXJyZW50Jyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0KG9sZEJ1aWxkTnVtYmVycy5sZW5ndGggPj0gMiwgJ1RoZSBvbGQg
Y2x1c3RlciBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gZGF0YSBwb2ludHMnKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQobmV3QnVpbGROdW1iZXJzLmxlbmd0aCA+PSAyLCAnVGhlIG5ldyBj
bHVzdGVyIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBkYXRhIHBvaW50cycpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob2xkQnVpbGROdW1iZXJzLnNsaWNlKG9sZEJ1aWxk
TnVtYmVycy5sZW5ndGggLSAyKSwgbmV3QnVpbGROdW1iZXJzLnNsaWNlKDAsIDIpLAogICAgICAg
ICAgICAgICAgICAgICAnVHdvIGNvbnNlcWN1dGl2ZSBjbHVzdGVycyBzaG91bGQgc2hhcmUgdHdv
IGRhdGEgcG9pbnRzJyk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0
KCJzaG91bGQgdXNlIGxhc3RNb2RpZmllZCB0aW1lc3RhbXAgaWRlbnRpY2FsIHRvIHRoYXQgaW4g
dGhlIG1hbmlmZXN0IGZpbGUiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCJzaG91bGQgdXNl
IGxhc3RNb2RpZmllZCB0aW1lc3RhbXAgaWRlbnRpY2FsIHRvIHRoYXQgaW4gdGhlIG1hbmlmZXN0
IGZpbGUiLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCk7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVsw
XSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0
KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJu
IHJlbW90ZS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aFJldmlzaW9uKTsKLSAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAg
ICAgICAgICAgcmV0dXJuIHF1ZXJ5UGxhdGZvcm1BbmRNZXRyaWMoJ01vdW50YWluIExpb24nLCAn
VGltZScpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSku
dGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT05XaXRo
U3RhdHVzKGAvYXBpL21lYXN1cmVtZW50LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxhdGZvcm1J
ZH0mbWV0cmljPSR7cmVzdWx0Lm1ldHJpY0lkfWApOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9u
IChwcmltYXJ5Q2x1c3RlcikgewotICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OV2l0
aFN0YXR1cygnL2FwaS9tYW5pZmVzdCcpLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAgICAg
ICAgfSkudGhlbigocHJpbWFyeUNsdXN0ZXIpID0+IHsKKyAgICAgICAgICAgIHJldHVybiByZW1v
dGUuZ2V0SlNPTldpdGhTdGF0dXMoJy9hcGkvbWFuaWZlc3QnKS50aGVuKChjb250ZW50KSA9PiB7
CiAgICAgICAgICAgICAgICAgY29uc3QgbWFuaWZlc3QgPSBNYW5pZmVzdC5fZGlkRmV0Y2hNYW5p
ZmVzdChjb250ZW50KTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IHBsYXRmb3JtID0gUGxhdGZv
cm0uZmluZEJ5TmFtZSgnTW91bnRhaW4gTGlvbicpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNZXRyaWMuYWxsKCkubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBtZXRy
aWMgPSBNZXRyaWMuYWxsKClbMF07CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBsYXRm
b3JtLmxhc3RNb2RpZmllZChtZXRyaWMpLCBwcmltYXJ5Q2x1c3RlclsnbGFzdE1vZGlmaWVkJ10p
OwotCi0gICAgICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0p
LmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAogfSk7CkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1yZXBvcnQtY29tbWl0cy10ZXN0cy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS1yZXBvcnQtY29tbWl0cy10ZXN0cy5qcwkocmV2aXNpb24gMjEzOTY1KQorKysgV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDU0ICs3OCw0OSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQt
Y29tbWl0cy8iLCBmdW5jdGlvCiAgICAgICAgIF0KICAgICB9CiAKLSAgICBpdCgic2hvdWxkIHJl
amVjdCBlcnJvciB3aGVuIHNsYXZlIG5hbWUgaXMgbWlzc2luZyIsIGZ1bmN0aW9uIChkb25lKSB7
Ci0gICAgICAgIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNv
bW1pdHMvJywge30pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgaXQoInNob3VsZCBy
ZWplY3QgZXJyb3Igd2hlbiBzbGF2ZSBuYW1lIGlzIG1pc3NpbmciLCAoKSA9PiB7CisgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC1jb21t
aXRzLycsIHt9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlWydzdGF0dXMnXSwgJ01pc3NpbmdTbGF2ZU5hbWUnKTsKLSAgICAgICAgICAgIGRv
bmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0g
ICAgaXQoInNob3VsZCByZWplY3Qgd2hlbiB0aGVyZSBhcmUgbm8gc2xhdmVzIiwgZnVuY3Rpb24g
KGRvbmUpIHsKLSAgICAgICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9y
ZXBvcnQtY29tbWl0cy8nLCBlbXB0eVJlcG9ydCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsK
KyAgICBpdCgic2hvdWxkIHJlamVjdCB3aGVuIHRoZXJlIGFyZSBubyBzbGF2ZXMiLCAoKSA9PiB7
CisgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3Jl
cG9ydC1jb21taXRzLycsIGVtcHR5UmVwb3J0KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1NsYXZlTm90Rm91bmQnKTsK
ICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdjb21t
aXRzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJvd3MpIHsKKyAgICAgICAgfSkudGhl
bigocm93cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3MubGVuZ3RoLCAwKTsK
LSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0p
OwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBhY2NlcHQgYW4gZW1wdHkgcmVwb3J0IiwgZnVu
Y3Rpb24gKGRvbmUpIHsKLSAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoZW1wdHlSZXBvcnQpLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgYWNjZXB0IGFuIGVtcHR5IHJlcG9ydCIs
ICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KGVtcHR5UmVwb3J0KS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBv
c3RKU09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIGVtcHR5UmVwb3J0KTsKLSAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+
IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwot
ICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7
CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGFkZCBhIG1pc3NpbmcgcmVwb3NpdG9yeSIsIGZ1
bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgp
OwotICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIGFkZCBhIG1pc3NpbmcgcmVwb3NpdG9yeSIsICgpID0+
IHsKKyAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXQpLnRo
ZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9z
dEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvbkNvbW1pdCk7Ci0gICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNl
KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0sn
KTsKLSAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ3JlcG9zaXRvcmllcycpOwotICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyb3dzKSB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgncmVwb3NpdG9yaWVzJyk7CisgICAgICAgIH0pLnRo
ZW4oKHJvd3MpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzLmxlbmd0aCwgMSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXVsnbmFtZSddLCBzdWJ2ZXJzaW9uQ29t
bWl0LmNvbW1pdHNbMF1bJ3JlcG9zaXRvcnknXSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAg
ICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91
bGQgc3RvcmUgYSBjb21taXQgZnJvbSBhIHZhbGlkIHNsYXZlIiwgZnVuY3Rpb24gKGRvbmUpIHsK
LSAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFkZFNs
YXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXQpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0
KCJzaG91bGQgc3RvcmUgYSBjb21taXQgZnJvbSBhIHZhbGlkIHNsYXZlIiwgKCkgPT4geworICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdCkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTign
L2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0KTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAg
ICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdEFsbCgnY29tbWl0cycpLCBkYi5zZWxlY3RBbGwo
J2NvbW1pdHRlcnMnKV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAg
ICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBsZXQgY29tbWl0cyA9IHJl
c3VsdFswXTsKICAgICAgICAgICAgIGxldCBjb21taXR0ZXJzID0gcmVzdWx0WzFdOwogICAgICAg
ICAgICAgbGV0IHJlcG9ydGVkRGF0YSA9IHN1YnZlcnNpb25Db21taXQuY29tbWl0c1swXTsKQEAg
LTEzOCwzMSArMTMzLDI4IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1bmN0
aW8KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzBdWydjb21taXR0ZXInXSwgY29t
bWl0dGVyc1swXVsnaWQnXSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0dGVyc1sw
XVsnbmFtZSddLCByZXBvcnRlZERhdGFbJ2F1dGhvciddWyduYW1lJ10pOwogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdHRlcnNbMF1bJ2FjY291bnQnXSwgcmVwb3J0ZWREYXRhWydhdXRo
b3InXVsnYWNjb3VudCddKTsKLQotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRj
aChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIHJlamVjdCBh
biBpbnZhbGlkIHJldmlzaW9uIG51bWJlciIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFk
ZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXQpLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
IGl0KCJzaG91bGQgcmVqZWN0IGFuIGludmFsaWQgcmV2aXNpb24gbnVtYmVyIiwgKCkgPT4gewor
ICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdCkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNP
TignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uSW52YWxpZENvbW1pdCk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
SW52YWxpZFJldmlzaW9uJyk7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFz
ZSgpLnNlbGVjdEFsbCgnY29tbWl0cycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyb3dz
KSB7CisgICAgICAgIH0pLnRoZW4oKHJvd3MpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyb3dzLmxlbmd0aCwgMCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNo
KGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgc3RvcmUgdHdv
IGNvbW1pdHMgZnJvbSBhIHZhbGlkIHNsYXZlIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAg
Y29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFkZFNsYXZlRm9yUmVw
b3J0KHN1YnZlcnNpb25Ud29Db21taXRzKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hv
dWxkIHN0b3JlIHR3byBjb21taXRzIGZyb20gYSB2YWxpZCBzbGF2ZSIsICgpID0+IHsKKyAgICAg
ICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Ud29Db21taXRzKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09O
KCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Ud29Db21taXRzKTsKLSAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2Up
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycp
OworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdEFsbCgnY29tbWl0cycpLCBkYi5zZWxl
Y3RBbGwoJ2NvbW1pdHRlcnMnKV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQp
IHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBjb25zdCBjb21t
aXRzID0gcmVzdWx0WzBdOwogICAgICAgICAgICAgY29uc3QgY29tbWl0dGVycyA9IHJlc3VsdFsx
XTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzLmxlbmd0aCwgMik7CkBAIC0xODUs
MzggKzE3NywzNCBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0cy8iLCBmdW5jdGlvCiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1sxXVsncHJldmlvdXNfY29tbWl0J10sIGNv
bW1pdHNbMF1bJ2lkJ10pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHRlcnNbMV1b
J25hbWUnXSwgcmVwb3J0ZWREYXRhWydhdXRob3InXVsnbmFtZSddKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXR0ZXJzWzFdWydhY2NvdW50J10sIHJlcG9ydGVkRGF0YVsnYXV0aG9y
J11bJ2FjY291bnQnXSk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2go
ZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBmYWlsIGlmIHBy
ZXZpb3VzIGNvbW1pdCBpcyBpbnZhbGlkIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgY29u
c3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0
KHN1YnZlcnNpb25JbnZhbGlkUHJldmlvdXNDb21taXQpLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
IGl0KCJzaG91bGQgZmFpbCBpZiBwcmV2aW91cyBjb21taXQgaXMgaW52YWxpZCIsICgpID0+IHsK
KyAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25JbnZhbGlkUHJldmlv
dXNDb21taXQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvbkludmFs
aWRQcmV2aW91c0NvbW1pdCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7
CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnRmFpbGVkVG9GaW5kUHJldmlvdXNDb21taXQnKTsKLSAg
ICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ2NvbW1pdHMnKTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRh
YmFzZSgpLnNlbGVjdEFsbCgnY29tbWl0cycpOworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+
IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGVuZ3RoLCAwKTsKLSAgICAgICAg
ICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0p
OwogCi0gICAgaXQoInNob3VsZCB1cGRhdGUgYW4gZXhpc3RpbmcgY29tbWl0IGlmIHRoZXJlIGlz
IG9uZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCB1cGRhdGUgYW4gZXhpc3Rp
bmcgY29tbWl0IGlmIHRoZXJlIGlzIG9uZSIsICgpID0+IHsKICAgICAgICAgY29uc3QgZGIgPSBU
ZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgIGNvbnN0IHJlcG9ydGVkRGF0YSA9IHN1YnZl
cnNpb25Db21taXQuY29tbWl0c1swXTsKLSAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVy
c2lvbkNvbW1pdCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUZv
clJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMn
LCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAogICAgICAgICAgICAgICAgIGRiLmluc2Vy
dCgnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6IHJlcG9ydGVkRGF0YVsn
cmV2aXNpb24nXSwgJ3RpbWUnOiByZXBvcnRlZERhdGFbJ3RpbWUnXX0pCiAgICAgICAgICAgICBd
KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4g
ewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9h
cGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvbkNvbW1pdCk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCdjb21taXRzJyksIGRiLnNl
bGVjdEFsbCgnY29tbWl0dGVycycpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3Vs
dCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNv
bW1pdHMgPSByZXN1bHRbMF07CiAgICAgICAgICAgICBjb25zdCBjb21taXR0ZXJzID0gcmVzdWx0
WzFdOwogCkBAIC0yMjYsMjcgKzIxNCwyNSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0
cy8iLCBmdW5jdGlvCiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1swXVsnY29tbWl0
dGVyJ10sIGNvbW1pdHRlcnNbMF1bJ2lkJ10pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bW1pdHRlcnNbMF1bJ25hbWUnXSwgcmVwb3J0ZWREYXRhWydhdXRob3InXVsnbmFtZSddKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXR0ZXJzWzBdWydhY2NvdW50J10sIHJlcG9ydGVk
RGF0YVsnYXV0aG9yJ11bJ2FjY291bnQnXSk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3Vs
ZCBub3QgdXBkYXRlIGFuIHVucmVsYXRlZCBjb21taXQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAg
IGl0KCJzaG91bGQgbm90IHVwZGF0ZSBhbiB1bnJlbGF0ZWQgY29tbWl0IiwgKCkgPT4gewogICAg
ICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgY29uc3QgZmly
c3REYXRhID0gc3VidmVyc2lvblR3b0NvbW1pdHMuY29tbWl0c1swXTsKICAgICAgICAgY29uc3Qg
c2Vjb25kRGF0YSA9IHN1YnZlcnNpb25Ud29Db21taXRzLmNvbW1pdHNbMV07Ci0gICAgICAgIGFk
ZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXQpLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdCkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAgICAgIGRi
Lmluc2VydCgncmVwb3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KSwKICAg
ICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J2lkJzogMiwgJ3JlcG9zaXRvcnkn
OiAxLCAncmV2aXNpb24nOiBmaXJzdERhdGFbJ3JldmlzaW9uJ10sICd0aW1lJzogZmlyc3REYXRh
Wyd0aW1lJ119KSwKICAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7J2lkJzog
MywgJ3JlcG9zaXRvcnknOiAxLCAncmV2aXNpb24nOiBzZWNvbmREYXRhWydyZXZpc2lvbiddLCAn
dGltZSc6IHNlY29uZERhdGFbJ3RpbWUnXX0pCiAgICAgICAgICAgICBdKTsKLSAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1p
dHMvJywgc3VidmVyc2lvbkNvbW1pdCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3Bv
bnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCdjb21taXRzJyksIGRiLnNlbGVjdEFsbCgnY29tbWl0
dGVycycpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9
KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdHMgPSByZXN1bHRb
MF07CiAgICAgICAgICAgICBjb25zdCBjb21taXR0ZXJzID0gcmVzdWx0WzFdOwogCkBAIC0yNjEs
MzAgKzI0NywyNyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0cy8iLCBmdW5jdGlvCiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1sxXVsnaWQnXSwgMyk7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0c1sxXVsnbWVzc2FnZSddLCBudWxsKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXRzWzFdWydjb21taXR0ZXInXSwgbnVsbCk7Ci0KLSAgICAgICAg
ICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0p
OwogCi0gICAgaXQoInNob3VsZCB1cGRhdGUgYW4gZXhpc3RpbmcgY29tbWl0dGVyIGlmIHRoZXJl
IGlzIG9uZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCB1cGRhdGUgYW4gZXhp
c3RpbmcgY29tbWl0dGVyIGlmIHRoZXJlIGlzIG9uZSIsICgpID0+IHsKICAgICAgICAgY29uc3Qg
ZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgIGNvbnN0IGF1dGhvciA9IHN1YnZl
cnNpb25Db21taXQuY29tbWl0c1swXVsnYXV0aG9yJ107Ci0gICAgICAgIGFkZFNsYXZlRm9yUmVw
b3J0KHN1YnZlcnNpb25Db21taXQpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4g
YWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdCkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAgICAgIGRiLmluc2VydCgncmVw
b3NpdG9yaWVzJywgeydpZCc6IDEsICduYW1lJzogJ1dlYktpdCd9KSwKICAgICAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2NvbW1pdHRlcnMnLCB7J3JlcG9zaXRvcnknOiAxLCAnYWNjb3VudCc6IGF1
dGhvclsnYWNjb3VudCddfSksCiAgICAgICAgICAgICBdKTsKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3Vi
dmVyc2lvbkNvbW1pdCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7Cisg
ICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RB
bGwoJ2NvbW1pdHRlcnMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29tbWl0dGVycykg
eworICAgICAgICB9KS50aGVuKChjb21taXR0ZXJzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29tbWl0dGVycy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bW1pdHRlcnNbMF1bJ25hbWUnXSwgYXV0aG9yWyduYW1lJ10pOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdHRlcnNbMF1bJ2FjY291bnQnXSwgYXV0aG9yWydhY2NvdW50J10pOwotICAg
ICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAg
ICAgfSk7CiAKICAgICBjb25zdCBzYW1lUmVwb3NpdG9yeU5hbWVJblN1YkNvbW1pdEFuZE1ham9y
Q29tbWl0ID0gewpAQCAtMzE3LDIyICszMDAsMjAgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0LWNv
bW1pdHMvIiwgZnVuY3RpbwogICAgICAgICBdCiAgICAgfQogCi0gICAgaXQoInNob3VsZCBkaXN0
aW5ndWlzaCBiZXR3ZWVuIHJlcG9zaXRvcmllcyB3aXRoIHRoZSBhc21lIG5hbWUgYnV0IHdpdGgg
YSBkaWZmZXJlbnQgb3duZXIuIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgY29uc3QgZGIg
PSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KHNhbWVS
ZXBvc2l0b3J5TmFtZUluU3ViQ29tbWl0QW5kTWFqb3JDb21taXQpLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgIGl0KCJzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiByZXBvc2l0b3JpZXMgd2l0aCB0
aGUgYXNtZSBuYW1lIGJ1dCB3aXRoIGEgZGlmZmVyZW50IG93bmVyLiIsICgpID0+IHsKKyAgICAg
ICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHNhbWVSZXBvc2l0b3J5TmFtZUluU3ViQ29tbWl0
QW5kTWFqb3JDb21taXQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc2FtZVJlcG9z
aXRvcnlOYW1lSW5TdWJDb21taXRBbmRNYWpvckNvbW1pdCk7Ci0gICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAg
ICAgIHJldHVybiBkYi5zZWxlY3RSb3dzKCdyZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAnV2ViS2l0
J30pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0Um93cygncmVwb3NpdG9yaWVzJywgeydu
YW1lJzogJ1dlYktpdCd9KTsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Lmxlbmd0aCwgMik7CiAgICAgICAgICAgICBsZXQgb3NX
ZWJLaXQgPSByZXN1bHRbMF07CiAgICAgICAgICAgICBsZXQgd2Via2l0UmVwb3NpdG9yeSA9IHJl
c3VsdFsxXTsKICAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChvc1dlYktpdC5pZCwgd2Via2l0
UmVwb3NpdG9yeS5pZCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3NXZWJLaXQubmFtZSwg
d2Via2l0UmVwb3NpdG9yeS5uYW1lKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3ZWJraXRS
ZXBvc2l0b3J5Lm93bmVyLCBudWxsKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkK
KyAgICAgICAgfSk7CiAgICAgfSk7CiAKICAgICBjb25zdCBzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0
aFN1YmNvbW1pdHMgPSB7CkBAIC0zNTksMTEgKzM0MCwxMSBAQCBkZXNjcmliZSgiL2FwaS9yZXBv
cnQtY29tbWl0cy8iLCBmdW5jdGlvCiAgICAgICAgIF0KICAgICB9CiAKLSAgICBpdCgic2hvdWxk
IGFjY2VwdCBpbnNlcnRpbmcgb25lIGNvbW1pdCB3aXRoIHNvbWUgc3ViIGNvbW1pdHMiLCBmdW5j
dGlvbiAoZG9uZSkgeworICAgIGl0KCJzaG91bGQgYWNjZXB0IGluc2VydGluZyBvbmUgY29tbWl0
IHdpdGggc29tZSBzdWIgY29tbWl0cyIsICgpID0+IHsKICAgICAgICAgY29uc3QgZGIgPSBUZXN0
U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNp
b25Db21taXRXaXRoU3ViY29tbWl0cykudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVy
biBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0aFN1YmNvbW1pdHMpLnRo
ZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9z
dEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3lzdGVtVmVyc2lvbkNvbW1pdFdpdGhTdWJj
b21taXRzKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAg
fSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25z
ZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtkYi5z
ZWxlY3RSb3dzKCdjb21taXRzJywgeydyZXZpc2lvbic6ICdTaWVycmExNkQzMid9KSwKICAgICAg
ICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdjb21taXRzJywgeydtZXNzYWdlJzogJ1dlYktpdCBD
b21taXQnfSksCkBAIC0zNzEsNyArMzUyLDcgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0LWNvbW1p
dHMvIiwgZnVuY3RpbwogICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmll
cycsIHsnbmFtZSc6ICdPU1gnfSksCiAgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygncmVw
b3NpdG9yaWVzJywgeyduYW1lJzogIldlYktpdCJ9KSwKICAgICAgICAgICAgICAgICBkYi5zZWxl
Y3RSb3dzKCdyZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAnSmF2YVNjcmlwdENvcmUnfSldKQotICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0
KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Lmxlbmd0aCwgNik7CiAKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbMF0ubGVuZ3RoLCAxKTsKQEAgLTQwOCw3ICsz
ODksNyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0cy8iLCBmdW5jdGlvCiAgICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdFJvd3MoJ2NvbW1pdF9vd25lcnNoaXBz
Jywgeydvd25lcic6IG9zeENvbW1pdC5pZCwgJ293bmVkJzogd2Via2l0Q29tbWl0LmlkfSwgeydz
b3J0QnknOiAnb3duZXInfSksCiAgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygnY29tbWl0
X293bmVyc2hpcHMnLCB7J293bmVyJzogb3N4Q29tbWl0LmlkLCAnb3duZWQnOiBqc2NDb21taXQu
aWR9LCB7J3NvcnRCeSc6ICdvd25lcid9KSwKICAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dz
KCdjb21taXRzJywgeydyZXBvc2l0b3J5Jzogd2Via2l0UmVwb3NpdG9yeS5pZH0pXSk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQp
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGVuZ3RoLCAzKTsKIAogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFswXS5sZW5ndGgsIDEpOwpAQCAtNDIwLDggKzQw
MSw3IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1bmN0aW8KICAgICAgICAg
ICAgIGFzc2VydC5ub3RFcXVhbChvd25lckNvbW1pdEZvckpTQ0NvbW1pdCwgbnVsbCk7CiAKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbMl0ubGVuZ3RoLCAxKTsKLSAgICAgICAgICAg
IGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pCiAK
ICAgICBjb25zdCBtdWx0aXBsZVN5c3RlbVZlcnNpb25Db21taXRzV2l0aFN1YmNvbW1pdHMgPSB7
CkBAIC00NjUsMTEgKzQ0NSwxMSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0cy8iLCBm
dW5jdGlvCiAgICAgICAgIF0KICAgICB9OwogCi0gICAgaXQoInNob3VsZCBhY2NlcHQgaW5zZXJ0
aW5nIG11bHRpcGxlIGNvbW1pdHMgd2l0aCBtdWx0aXBsZSBzdWItY29tbWl0cyIsIGZ1bmN0aW9u
IChkb25lKSB7CisgICAgaXQoInNob3VsZCBhY2NlcHQgaW5zZXJ0aW5nIG11bHRpcGxlIGNvbW1p
dHMgd2l0aCBtdWx0aXBsZSBzdWItY29tbWl0cyIsICgpID0+IHsKICAgICAgICAgY29uc3QgZGIg
PSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KG11bHRp
cGxlU3lzdGVtVmVyc2lvbkNvbW1pdHNXaXRoU3ViY29tbWl0cykudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChtdWx0aXBsZVN5c3RlbVZlcnNpb25D
b21taXRzV2l0aFN1YmNvbW1pdHMpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgbXVs
dGlwbGVTeXN0ZW1WZXJzaW9uQ29tbWl0c1dpdGhTdWJjb21taXRzKTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtkYi5zZWxlY3RSb3dzKCdjb21taXRzJywgeydy
ZXZpc2lvbic6ICdTaWVycmExNkQzMid9KSwKICAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dz
KCdjb21taXRzJywgeydyZXZpc2lvbic6ICdTaWVycmExNkM2Nyd9KSwKQEAgLTQ3OSw3ICs0NTks
NyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0cy8iLCBmdW5jdGlvCiAgICAgICAgICAg
ICAgICAgZGIuc2VsZWN0Um93cygncmVwb3NpdG9yaWVzJywgeyduYW1lJzogJ09TWCd9KSwKICAg
ICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdyZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAiV2Vi
S2l0In0pLAogICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsn
bmFtZSc6ICdKYXZhU2NyaXB0Q29yZSd9KV0pCi0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJl
c3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXN1bHQubGVuZ3RoLCA4KTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3VsdFswXS5sZW5ndGgsIDEpOwpAQCAtNTI5LDcgKzUwOSw3IEBAIGRlc2NyaWJlKCIvYXBpL3Jl
cG9ydC1jb21taXRzLyIsIGZ1bmN0aW8KICAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdj
b21taXRfb3duZXJzaGlwcycsIHsnb3duZXInOiBvc3hDb21taXQwLmlkLCAnb3duZWQnOiBqc2ND
b21taXQwLmlkfSwgeydzb3J0QnknOiAnb3duZXInfSksCiAgICAgICAgICAgICAgICAgZGIuc2Vs
ZWN0Um93cygnY29tbWl0X293bmVyc2hpcHMnLCB7J293bmVyJzogb3N4Q29tbWl0MS5pZCwgJ293
bmVkJzoganNjQ29tbWl0MS5pZH0sIHsnc29ydEJ5JzogJ293bmVyJ30pLAogICAgICAgICAgICAg
ICAgIGRiLnNlbGVjdFJvd3MoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiB3ZWJraXRSZXBvc2l0
b3J5LmlkfSldKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAg
IH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdC5s
ZW5ndGgsIDUpOwogCiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WzBdLmxlbmd0aCwg
MSk7CkBAIC01NDksOSArNTI5LDcgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0LWNvbW1pdHMvIiwg
ZnVuY3RpbwogICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG93bmVyQ29tbWl0Rm9ySlNDQ29t
bWl0MSwgbnVsbCk7CiAKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbNF0ubGVuZ3Ro
LCAxKTsKLQotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAg
ICAgICAgfSk7CiAgICAgfSk7CiAKICAgICBjb25zdCBzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0aEVt
cHR5U3ViY29tbWl0cyA9IHsKQEAgLTU2OCwxNCArNTQ2LDE0IEBAIGRlc2NyaWJlKCIvYXBpL3Jl
cG9ydC1jb21taXRzLyIsIGZ1bmN0aW8KICAgICAgICAgXQogICAgIH0KIAotICAgIGl0KCJzaG91
bGQgYWNjZXB0IGluc2VydGluZyBvbmUgY29tbWl0IHdpdGggbm8gc3ViIGNvbW1pdHMiLCBmdW5j
dGlvbiAoZG9uZSkgewotICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
LSAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdFdpdGhFbXB0eVN1
YmNvbW1pdHMpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgYWNjZXB0IGluc2Vy
dGluZyBvbmUgY29tbWl0IHdpdGggbm8gc3ViIGNvbW1pdHMiLCAoKSA9PiB7CisgICAgICAgIHJl
dHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0aEVtcHR5U3ViY29t
bWl0cykudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0
V2l0aEVtcHR5U3ViY29tbWl0cyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNl
KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgIGNvbnN0IGRiID0g
VGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtk
Yi5zZWxlY3RBbGwoJ2NvbW1pdHMnKSwgZGIuc2VsZWN0QWxsKCdyZXBvc2l0b3JpZXMnKSwgZGIu
c2VsZWN0QWxsKCdjb21taXRfb3duZXJzaGlwcycsICdvd25lcicpXSk7Ci0gICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAg
ICAgICAgICAgIGxldCBjb21taXRzID0gcmVzdWx0WzBdOwogICAgICAgICAgICAgbGV0IHJlcG9z
aXRvcmllcyA9IHJlc3VsdFsxXTsKICAgICAgICAgICAgIGxldCBjb21taXRfb3duZXJzaGlwcyA9
IHJlc3VsdFsyXTsKQEAgLTU4NCw4ICs1NjIsNyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29t
bWl0cy8iLCBmdW5jdGlvCiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0c1swXS5yZXBv
c2l0b3J5LCByZXBvc2l0b3JpZXNbMF0uaWQpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cG9zaXRvcmllc1swXS5uYW1lLCAnT1NYJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29t
bWl0X293bmVyc2hpcHMubGVuZ3RoLCAwKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAg
fSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgY29uc3Qgc3lzdGVt
VmVyc2lvbkNvbW1pdEFuZFN1YmNvbW1pdFdpdGhUaW1lc3RhbXAgPSB7CkBAIC02MDgsMTMgKzU4
NSwxMSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29tbWl0cy8iLCBmdW5jdGlvCiAgICAgICAg
IF0KICAgICB9CiAKLSAgICBpdCgic2hvdWxkIHJlamVjdCBpbnNlcnRpbmcgb25lIGNvbW1pdCB3
aXRoIHN1YiBjb21taXRzIHRoYXQgY29udGFpbnMgdGltZXN0YW1wIiwgZnVuY3Rpb24gKGRvbmUp
IHsKLSAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFk
ZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21taXRBbmRTdWJjb21taXRXaXRoVGltZXN0
YW1wKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIHJlamVjdCBpbnNlcnRpbmcg
b25lIGNvbW1pdCB3aXRoIHN1YiBjb21taXRzIHRoYXQgY29udGFpbnMgdGltZXN0YW1wIiwgKCkg
PT4geworICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1p
dEFuZFN1YmNvbW1pdFdpdGhUaW1lc3RhbXApLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMv
Jywgc3lzdGVtVmVyc2lvbkNvbW1pdEFuZFN1YmNvbW1pdFdpdGhUaW1lc3RhbXApOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1N1
YkNvbW1pdFNob3VsZE5vdENvbnRhaW5UaW1lc3RhbXAnKTsKLSAgICAgICAgICAgIGRvbmUoKTsK
LSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfSk7CkluZGV4
OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1yZXBvcnQtdGVzdHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9h
cGktcmVwb3J0LXRlc3RzLmpzCShyZXZpc2lvbiAyMTM5NjUpCisrKyBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1yZXBvcnQtdGVzdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDM2ICs1NiwzMyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgIH07CiAgICAgfQogCi0gICAgaXQoInNob3VsZCByZWplY3QgZXJyb3Igd2hlbiBi
dWlsZGVyIG5hbWUgaXMgbWlzc2luZyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFt7ImJ1aWxkVGltZSI6
ICIyMDEzLTAyLTI4VDEwOjEyOjAzLjM4ODMwNCJ9XSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2Up
IHsKKyAgICBpdCgic2hvdWxkIHJlamVjdCBlcnJvciB3aGVuIGJ1aWxkZXIgbmFtZSBpcyBtaXNz
aW5nIiwgKCkgPT4geworICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0
SlNPTignL2FwaS9yZXBvcnQvJywgW3siYnVpbGRUaW1lIjogIjIwMTMtMDItMjhUMTA6MTI6MDMu
Mzg4MzA0In1dKS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlWydzdGF0dXMnXSwgJ01pc3NpbmdCdWlsZGVyTmFtZScpOwotICAgICAgICAgICAg
ZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAK
LSAgICBpdCgic2hvdWxkIHJlamVjdCBlcnJvciB3aGVuIGJ1aWxkIHRpbWUgaXMgbWlzc2luZyIs
IGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBv
cnQoKSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCByZWplY3QgZXJyb3Igd2hl
biBidWlsZCB0aW1lIGlzIG1pc3NpbmciLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRCdWls
ZGVyRm9yUmVwb3J0KGVtcHR5UmVwb3J0KCkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0
dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFt7ImJ1
aWxkZXJOYW1lIjogInNvbWVCdWlsZGVyIiwgImJ1aWxkZXJQYXNzd29yZCI6ICJzb21lUGFzc3dv
cmQifV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9
KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ01pc3NpbmdCdWlsZFRpbWUnKTsKLSAgICAgICAgICAgIGRvbmUoKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIHJlamVjdCB3aGVuIHRoZXJlIGFy
ZSBubyBidWlsZGVycyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtlbXB0eVJlcG9ydCgpXSkudGhlbihm
dW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICBpdCgic2hvdWxkIHJlamVjdCB3aGVuIHRoZXJlIGFy
ZSBubyBidWlsZGVycyIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtlbXB0eVJlcG9ydCgpXSkudGhlbigocmVz
cG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdCdWlsZGVyTm90Rm91bmQnKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
ZmFpbHVyZVN0b3JlZCddLCBmYWxzZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3Byb2Nlc3NlZFJ1bnMnXSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5k
YXRhYmFzZSgpLnNlbGVjdEFsbCgncmVwb3J0cycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9u
IChyZXBvcnRzKSB7CisgICAgICAgIH0pLnRoZW4oKHJlcG9ydHMpID0+IHsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXBvcnRzLmxlbmd0aCwgMCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0g
ICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJz
aG91bGQgcmVqZWN0IGEgcmVwb3J0IHdpdGhvdXQgYSBidWlsZGVyIHBhc3N3b3JkIiwgZnVuY3Rp
b24gKGRvbmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChlbXB0eVJlcG9ydCgpKS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIHJlamVjdCBhIHJlcG9ydCB3aXRob3V0
IGEgYnVpbGRlciBwYXNzd29yZCIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJG
b3JSZXBvcnQoZW1wdHlSZXBvcnQoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICB2YXIgcmVw
b3J0ID0gW3sKICAgICAgICAgICAgICAgICAiYnVpbGROdW1iZXIiOiAiMTIzIiwKICAgICAgICAg
ICAgICAgICAiYnVpbGRUaW1lIjogIjIwMTMtMDItMjhUMTA6MTI6MDMuMzg4MzA0IiwKQEAgLTkz
LDI2ICs5MCwyNSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICAgICAgInRlc3RzIjoge30sCiAgICAgICAgICAgICAgICAgInJldmlzaW9ucyI6IHt9
fV07CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTign
L2FwaS9yZXBvcnQvJywgcmVwb3J0KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9u
c2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdCdWlsZGVyTm90Rm91bmQnKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnZmFpbHVyZVN0b3JlZCddLCBmYWxzZSk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3Byb2Nlc3NlZFJ1bnMnXSwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgncmVwb3J0cycp
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXBvcnRzKSB7CisgICAgICAgIH0pLnRoZW4o
KHJlcG9ydHMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvcnRzLmxlbmd0aCwg
MCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAg
ICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgc3RvcmUgYSByZXBvcnQgZnJvbSBhIHZh
bGlkIGJ1aWxkZXIiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBhZGRCdWlsZGVyRm9yUmVw
b3J0KGVtcHR5UmVwb3J0KCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgc3Rv
cmUgYSByZXBvcnQgZnJvbSBhIHZhbGlkIGJ1aWxkZXIiLCAoKSA9PiB7CisgICAgICAgIHJldHVy
biBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5UmVwb3J0KCkpLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0
LycsIFtlbXB0eVJlcG9ydCgpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNl
KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXNwb25zZVsnZmFpbHVyZVN0b3JlZCddLCBmYWxzZSk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3Byb2Nlc3NlZFJ1bnMnXSwgMSk7CiAgICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgncmVwb3J0cycpOwotICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXBvcnRzKSB7CisgICAgICAgIH0pLnRoZW4oKHJlcG9ydHMpID0+IHsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvcnRzLmxlbmd0aCwgMSk7CiAgICAgICAgICAg
ICBjb25zdCBzdWJtaXR0ZWRDb250ZW50ID0gZW1wdHlSZXBvcnQoKTsKICAgICAgICAgICAgIGNv
bnN0IHN0b3JlZENvbnRlbnQgPSBKU09OLnBhcnNlKHJlcG9ydHNbMF1bJ2NvbnRlbnQnXSk7CkBA
IC0xMjEsMjQgKzExNywyMiBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICBkZWxldGUgc3VibWl0dGVkQ29udGVudFsndGVzdHMnXTsKICAgICAgICAg
ICAgIGRlbGV0ZSBzdG9yZWRDb250ZW50Wyd0ZXN0cyddOwogICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChzdG9yZWRDb250ZW50LCBzdWJtaXR0ZWRDb250ZW50KTsKLQotICAgICAgICAgICAg
ZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAK
LSAgICBpdCgic2hvdWxkIHRyZWF0IHRoZSBzbGF2ZSBwYXNzd29yZCBhcyB0aGUgYnVpbGRlciBw
YXNzd29yZCBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzbGF2ZSIsIGZ1bmN0aW9uIChkb25lKSB7
CisgICAgaXQoInNob3VsZCB0cmVhdCB0aGUgc2xhdmUgcGFzc3dvcmQgYXMgdGhlIGJ1aWxkZXIg
cGFzc3dvcmQgaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc2xhdmUiLCAoKSA9PiB7CiAgICAgICAg
IGxldCByZXBvcnQgPSBlbXB0eVJlcG9ydCgpOwogICAgICAgICByZXBvcnRbJ3NsYXZlUGFzc3dv
cmQnXSA9IHJlcG9ydFsnYnVpbGRlclBhc3N3b3JkJ107CiAgICAgICAgIGRlbGV0ZSByZXBvcnRb
J2J1aWxkZXJQYXNzd29yZCddOwogCi0gICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KHJlcG9ydCku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChyZXBv
cnQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtyZXBvcnRdKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydmYWlsdXJlU3RvcmVkJ10sIGZhbHNlKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsncHJvY2Vzc2VkUnVucyddLCAxKTsKICAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdyZXBvcnRz
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcG9ydHMpIHsKKyAgICAgICAgfSkudGhl
bigocmVwb3J0cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9ydHMubGVuZ3Ro
LCAxKTsKICAgICAgICAgICAgIGNvbnN0IHN0b3JlZENvbnRlbnQgPSBKU09OLnBhcnNlKHJlcG9y
dHNbMF1bJ2NvbnRlbnQnXSk7CiAKQEAgLTE0NiwyMCArMTQwLDE4IEBAIGRlc2NyaWJlKCIvYXBp
L3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGRlbGV0ZSByZXBvcnRbJ3Rlc3Rz
J107CiAgICAgICAgICAgICBkZWxldGUgc3RvcmVkQ29udGVudFsndGVzdHMnXTsKICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoc3RvcmVkQ29udGVudCwgcmVwb3J0KTsKLQotICAgICAgICAg
ICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7
CiAKLSAgICBpdCgic2hvdWxkIHN0b3JlIGEgcmVwb3J0IGZyb20gYSB2YWxpZCBzbGF2ZSIsIGZ1
bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KGVtcHR5U2xhdmVSZXBv
cnQoKSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBzdG9yZSBhIHJlcG9ydCBm
cm9tIGEgdmFsaWQgc2xhdmUiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJl
cG9ydChlbXB0eVNsYXZlUmVwb3J0KCkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtlbXB0eVNs
YXZlUmVwb3J0KCldKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3Bv
bnNlWydmYWlsdXJlU3RvcmVkJ10sIGZhbHNlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsncHJvY2Vzc2VkUnVucyddLCAxKTsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdyZXBvcnRzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKHJlcG9ydHMpIHsKKyAgICAgICAgfSkudGhlbigocmVwb3J0cykgPT4gewogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9ydHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIGNvbnN0
IHN1Ym1pdHRlZENvbnRlbnQgPSBlbXB0eVNsYXZlUmVwb3J0KCk7CiAgICAgICAgICAgICBjb25z
dCBzdG9yZWRDb250ZW50ID0gSlNPTi5wYXJzZShyZXBvcnRzWzBdWydjb250ZW50J10pOwpAQCAt
MTY4LDg4ICsxNjAsODEgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgZGVsZXRlIHN1Ym1pdHRlZENvbnRlbnRbJ3Rlc3RzJ107CiAgICAgICAgICAg
ICBkZWxldGUgc3RvcmVkQ29udGVudFsndGVzdHMnXTsKICAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoc3RvcmVkQ29udGVudCwgc3VibWl0dGVkQ29udGVudCk7Ci0KLSAgICAgICAgICAgIGRv
bmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0g
ICAgaXQoInNob3VsZCBzdG9yZSB0aGUgYnVpbGRlciBuYW1lIGJ1dCBub3QgdGhlIGJ1aWxkZXIg
cGFzc3dvcmQiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0
KGVtcHR5UmVwb3J0KCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgc3RvcmUg
dGhlIGJ1aWxkZXIgbmFtZSBidXQgbm90IHRoZSBidWlsZGVyIHBhc3N3b3JkIiwgKCkgPT4gewor
ICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChlbXB0eVJlcG9ydCgpKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09O
KCcvYXBpL3JlcG9ydC8nLCBbZW1wdHlSZXBvcnQoKV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ3JlcG9ydHMnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVwb3J0cykgeworICAgICAgICB9KS50aGVuKChy
ZXBvcnRzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3J0cy5sZW5ndGgsIDEp
OwogICAgICAgICAgICAgY29uc3Qgc3RvcmVkQ29udGVudCA9IEpTT04ucGFyc2UocmVwb3J0c1sw
XVsnY29udGVudCddKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzdG9yZWRDb250ZW50Wydi
dWlsZGVyTmFtZSddLCBlbXB0eVJlcG9ydCgpWydidWlsZGVyTmFtZSddKTsKICAgICAgICAgICAg
IGFzc2VydCghKCdidWlsZGVyUGFzc3dvcmQnIGluIHN0b3JlZENvbnRlbnQpKTsKLSAgICAgICAg
ICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0p
OwogCi0gICAgaXQoInNob3VsZCBhZGQgYSBzbGF2ZSBpZiB0aGVyZSBpc24ndCBvbmUgYW5kIHRo
ZSByZXBvcnQgd2FzIGF1dGhlbnRpY2F0ZWQgYnkgYSBidWlsZGVyIiwgZnVuY3Rpb24gKGRvbmUp
IHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChlbXB0eVJlcG9ydCgpKS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIGFkZCBhIHNsYXZlIGlmIHRoZXJlIGlzbid0IG9uZSBh
bmQgdGhlIHJlcG9ydCB3YXMgYXV0aGVudGljYXRlZCBieSBhIGJ1aWxkZXIiLCAoKSA9PiB7Cisg
ICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5UmVwb3J0KCkpLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04o
Jy9hcGkvcmVwb3J0LycsIFtlbXB0eVJlcG9ydCgpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgnYnVpbGRfc2xhdmVz
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHNsYXZlcykgeworICAgICAgICB9KS50aGVu
KChzbGF2ZXMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzbGF2ZXMubGVuZ3RoLCAx
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzbGF2ZXNbMF1bJ25hbWUnXSwgZW1wdHlSZXBv
cnQoKVsnc2xhdmVOYW1lJ10pOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRj
aChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGFkZCBhIGJ1
aWxkZXIgaWYgdGhlcmUgaXNuJ3Qgb25lIGFuZCB0aGUgcmVwb3J0IHdhcyBhdXRoZW50aWNhdGVk
IGJ5IGEgc2xhdmUiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBhZGRTbGF2ZUZvclJlcG9y
dChlbXB0eVNsYXZlUmVwb3J0KCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQg
YWRkIGEgYnVpbGRlciBpZiB0aGVyZSBpc24ndCBvbmUgYW5kIHRoZSByZXBvcnQgd2FzIGF1dGhl
bnRpY2F0ZWQgYnkgYSBzbGF2ZSIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9y
UmVwb3J0KGVtcHR5U2xhdmVSZXBvcnQoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW2VtcHR5
U2xhdmVSZXBvcnQoKV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ2J1aWxkZXJzJyk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKGJ1aWxkZXJzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1aWxkZXJzKSA9PiB7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRlcnMubGVuZ3RoLCAxKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChidWlsZGVyc1swXVsnbmFtZSddLCBlbXB0eVJlcG9ydCgpWydidWlsZGVy
TmFtZSddKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7Cisg
ICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBhZGQgYSBidWlsZCIsIGZ1bmN0
aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBhZGQgYSBidWlsZCIsICgpID0+IHsK
KyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNP
TignL2FwaS9yZXBvcnQvJywgW2VtcHR5UmVwb3J0KCldKTsKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ2J1aWxkcycpOwotICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChidWlsZHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVpbGRzKSA9PiB7CiAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnVpbGRzWzBdWydudW1iZXInXSwgMTIzKTsKLSAg
ICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwog
ICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBhZGQgdGhlIHBsYXRmb3JtIiwgZnVuY3Rpb24gKGRv
bmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChlbXB0eVJlcG9ydCgpKS50aGVuKGZ1
bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIGFkZCB0aGUgcGxhdGZvcm0iLCAoKSA9PiB7Cisg
ICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5UmVwb3J0KCkpLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04o
Jy9hcGkvcmVwb3J0LycsIFtlbXB0eVJlcG9ydCgpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdwbGF0Zm9ybXMnKTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocGxhdGZvcm1zKSB7CisgICAgICAgIH0pLnRoZW4oKHBsYXRmb3JtcykgPT4g
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBsYXRmb3Jtcy5sZW5ndGgsIDEpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHBsYXRmb3Jtc1swXVsnbmFtZSddLCAnTW91bnRhaW4gTGlvbicp
OwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAg
fSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGFkZCByZXBvc2l0b3JpZXMgYW5kIGJ1aWxk
IHJldmlzaW9ucyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBv
cnQoZW1wdHlSZXBvcnQoKSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBhZGQg
cmVwb3NpdG9yaWVzIGFuZCBidWlsZCByZXZpc2lvbnMiLCAoKSA9PiB7CisgICAgICAgIHJldHVy
biBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5UmVwb3J0KCkpLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0
LycsIFtlbXB0eVJlcG9ydCgpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNl
KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFs
bChbCiAgICAgICAgICAgICAgICAgZGIuc2VsZWN0QWxsKCdyZXBvc2l0b3JpZXMnKSwKICAgICAg
ICAgICAgICAgICBkYi5zZWxlY3RBbGwoJ2NvbW1pdHMnKSwKICAgICAgICAgICAgICAgICBkYi5z
ZWxlY3RBbGwoJ2J1aWxkX2NvbW1pdHMnLCAnYnVpbGRfY29tbWl0JyksCiAgICAgICAgICAgICBd
KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4o
KHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yaWVzID0gcmVzdWx0WzBd
OwogICAgICAgICAgICAgY29uc3QgY29tbWl0cyA9IHJlc3VsdFsxXTsKICAgICAgICAgICAgIGNv
bnN0IGJ1aWxkQ29tbWl0c1JlbGF0aW9ucyA9IHJlc3VsdFsyXTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXBvc2l0b3JpZXMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwocmVwb3NpdG9yaWVzLm1hcChmdW5jdGlvbiAocm93KSB7IHJldHVybiByb3dbJ25hbWUn
XTsgfSkuc29ydCgpLCBbJ09TIFgnLCAnV2ViS2l0J10pOworICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChyZXBvc2l0b3JpZXMubWFwKChyb3cpID0+IHsgcmV0dXJuIHJvd1snbmFtZSddOyB9
KS5zb3J0KCksIFsnT1MgWCcsICdXZWJLaXQnXSk7CiAKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChjb21taXRzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRDb21t
aXRzUmVsYXRpb25zLmxlbmd0aCwgMik7CkBAIC0yNjksNTggKzI1NCw1NSBAQCBkZXNjcmliZSgi
L2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVw
b3NpdG9yeU5hbWVUb1JldmlzaW9uUm93WydXZWJLaXQnXVsncmV2aXNpb24nXSwgJzE0MTk3Nycp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlOYW1lVG9SZXZpc2lvblJvd1sn
V2ViS2l0J11bJ3RpbWUnXS50b1N0cmluZygpLAogICAgICAgICAgICAgICAgIG5ldyBEYXRlKCcy
MDEzLTAyLTA2IDA4OjU1OjIwLjknKS50b1N0cmluZygpKTsKLSAgICAgICAgICAgIGRvbmUoKTsK
LSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQo
InNob3VsZCBub3QgY3JlYXRlIGEgZHVwbGljYXRlIGJ1aWxkIGZvciB0aGUgc2FtZSBidWlsZCBu
dW1iZXIgaWYgYnVpbGQgdGltZXMgYXJlIGNsb3NlIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAg
ICAgbGV0IGZpcnN0UmVwb3J0ID0gZW1wdHlSZXBvcnQoKTsKKyAgICBpdCgic2hvdWxkIG5vdCBj
cmVhdGUgYSBkdXBsaWNhdGUgYnVpbGQgZm9yIHRoZSBzYW1lIGJ1aWxkIG51bWJlciBpZiBidWls
ZCB0aW1lcyBhcmUgY2xvc2UiLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGZpcnN0UmVwb3J0ID0g
ZW1wdHlSZXBvcnQoKTsKICAgICAgICAgZmlyc3RSZXBvcnRbJ2J1aWxkVGltZSddID0gJzIwMTMt
MDItMjhUMTA6MTI6MDQnOwotICAgICAgICBsZXQgc2Vjb25kUmVwb3J0ID0gZW1wdHlSZXBvcnQo
KTsKKyAgICAgICAgY29uc3Qgc2Vjb25kUmVwb3J0ID0gZW1wdHlSZXBvcnQoKTsKICAgICAgICAg
c2Vjb25kUmVwb3J0WydidWlsZFRpbWUnXSA9ICcyMDEzLTAyLTI4VDEwOjIyOjAzJzsKIAotICAg
ICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5UmVwb3J0KCkpLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChlbXB0eVJlcG9ydCgpKS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC8nLCBbZmlyc3RSZXBvcnRdKTsKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ2J1aWxkcycpOwotICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChidWlsZHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVpbGRz
KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRzLmxlbmd0aCwgMSk7CiAgICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBv
cnQvJywgW3NlY29uZFJlcG9ydF0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25z
ZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgnYnVpbGRzJyk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKGJ1aWxkcykgeworICAgICAgICB9KS50aGVuKChidWlsZHMpID0+IHsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChidWlsZHMubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgIGRvbmUo
KTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAg
aXQoInNob3VsZCBjcmVhdGUgZGlzdGluY3QgYnVpbGRzIGZvciB0aGUgc2FtZSBidWlsZCBudW1i
ZXIgaWYgYnVpbGQgdGltZXMgYXJlIGZhciBhcGFydCIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAg
ICAgIGxldCBmaXJzdFJlcG9ydCA9IGVtcHR5UmVwb3J0KCk7CisgICAgaXQoInNob3VsZCBjcmVh
dGUgZGlzdGluY3QgYnVpbGRzIGZvciB0aGUgc2FtZSBidWlsZCBudW1iZXIgaWYgYnVpbGQgdGlt
ZXMgYXJlIGZhciBhcGFydCIsICgpID0+IHsKKyAgICAgICAgY29uc3QgZmlyc3RSZXBvcnQgPSBl
bXB0eVJlcG9ydCgpOwogICAgICAgICBmaXJzdFJlcG9ydFsnYnVpbGRUaW1lJ10gPSAnMjAxMy0w
Mi0yOFQxMDoxMjowMyc7Ci0gICAgICAgIGxldCBzZWNvbmRSZXBvcnQgPSBlbXB0eVJlcG9ydCgp
OworICAgICAgICBjb25zdCBzZWNvbmRSZXBvcnQgPSBlbXB0eVJlcG9ydCgpOwogICAgICAgICBz
ZWNvbmRSZXBvcnRbJ2J1aWxkVGltZSddID0gJzIwMTQtMDEtMjBUMjI6MjM6MzQnOwogCi0gICAg
ICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5UmVwb3J0KCkpLnRoZW4o
KCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpT
T04oJy9hcGkvcmVwb3J0LycsIFtmaXJzdFJlcG9ydF0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgnYnVpbGRzJyk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKGJ1aWxkcykgeworICAgICAgICB9KS50aGVuKChidWlsZHMp
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZHMubGVuZ3RoLCAxKTsKICAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9y
dC8nLCBbc2Vjb25kUmVwb3J0XSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNl
KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdidWlsZHMnKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAoYnVpbGRzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1aWxkcykgPT4gewogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkcy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBp
dCgic2hvdWxkIHJlamVjdCBhIHJlcG9ydCB3aXRoIG1pc21hdGNoaW5nIHJldmlzaW9uIGluZm8i
LCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBsZXQgZmlyc3RSZXBvcnQgPSBlbXB0eVJlcG9y
dCgpOworICAgIGl0KCJzaG91bGQgcmVqZWN0IGEgcmVwb3J0IHdpdGggbWlzbWF0Y2hpbmcgcmV2
aXNpb24gaW5mbyIsICgpID0+IHsKKyAgICAgICAgY29uc3QgZmlyc3RSZXBvcnQgPSBlbXB0eVJl
cG9ydCgpOwogICAgICAgICBmaXJzdFJlcG9ydFsncmV2aXNpb25zJ10gPSB7CiAgICAgICAgICAg
ICAiV2ViS2l0IjogewogICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxNDE5NzciLApAQCAt
MzI4LDcgKzMxMCw3IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBsZXQgc2Vjb25kUmVwb3J0ID0gZW1w
dHlSZXBvcnQoKTsKKyAgICAgICAgY29uc3Qgc2Vjb25kUmVwb3J0ID0gZW1wdHlSZXBvcnQoKTsK
ICAgICAgICAgc2Vjb25kUmVwb3J0WydyZXZpc2lvbnMnXSA9IHsKICAgICAgICAgICAgICJXZWJL
aXQiOiB7CiAgICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjE1MDAwMCIsCkBAIC0zMzYsMjIg
KzMxOCwyMSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChmaXJzdFJl
cG9ydCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVw
b3J0KGZpcnN0UmVwb3J0KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbZmlyc3RSZXBvcnRdKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigo
cmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVz
J10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxl
Y3RBbGwoJ2J1aWxkcycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChidWlsZHMpIHsKKyAg
ICAgICAgfSkudGhlbigoYnVpbGRzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVp
bGRzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW3NlY29uZFJlcG9ydF0pOwotICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4g
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ01pc21hdGNo
aW5nQ29tbWl0UmV2aXNpb24nKTsKICAgICAgICAgICAgIGFzc2VydChKU09OLnN0cmluZ2lmeShy
ZXNwb25zZSkuaW5kZXhPZignMTQxOTc3JykgPj0gMCk7CiAgICAgICAgICAgICBhc3NlcnQoSlNP
Ti5zdHJpbmdpZnkocmVzcG9uc2UpLmluZGV4T2YoJzE1MDAwMCcpID49IDApOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydmYWlsdXJlU3RvcmVkJ10sIHRydWUpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydwcm9jZXNzZWRSdW5zJ10sIDApOwotICAgICAg
ICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CiAKICAgICBjb25zdCByZXBvcnRXaXRoVHdvTGV2ZWxzT2ZBZ2dyZWdhdGlvbnMgPSB7CkBA
IC00MDAsMTUgKzM4MSwxNSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7
CiAKICAgICBmdW5jdGlvbiByZXBvcnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhy
ZXBvcnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnQp
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChy
ZXBvcnQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAg
ICAgIGRiLmluc2VydCgnYWdncmVnYXRvcnMnLCB7bmFtZTogJ0FyaXRobWV0aWMnfSksCiAgICAg
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdhZ2dyZWdhdG9ycycsIHtuYW1lOiAnR2VvbWV0cmljJ30p
LAogICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbcmVwb3J0XSk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnZmFpbHVyZVN0b3JlZCddLCBmYWxzZSk7CiAg
ICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7CkBAIC00MTksMzQgKzQwMCwzMSBAQCBkZXNjcmli
ZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHF1ZXJ5QW5kRmV0Y2hBbGwo
J1NFTEVDVCAqIEZST00gdGVzdF9ydW5zIFdIRVJFIHJ1bl9jb25maWcgSU4nCiAgICAgICAgICAg
ICArICcoU0VMRUNUIGNvbmZpZ19pZCBGUk9NIHRlc3RfY29uZmlndXJhdGlvbnMsIHRlc3RfbWV0
cmljcywgdGVzdHMgV0hFUkUgY29uZmlnX21ldHJpYyA9IG1ldHJpY19pZCBBTkQgbWV0cmljX3Rl
c3QgPSB0ZXN0X2lkIEFORCcKICAgICAgICAgICAgICsgJ3Rlc3RfbmFtZSA9ICQxIEFORCBtZXRy
aWNfbmFtZSA9ICQyKScsCi0gICAgICAgICAgICBbJ0FyaXRobWV0aWMnLCAndmFsdWVzLnJlZHVj
ZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7IH0pIC8gdmFsdWVzLmxlbmd0aCddLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBbJ0FyaXRobWV0aWMnLCAndmFsdWVzLnJlZHVjZShm
dW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7IH0pIC8gdmFsdWVzLmxlbmd0aCddLCAoKSA9
PiB7CiAgICAgICAgICAgICBxdWVyeUFuZEZldGNoQWxsKCdJTlNFUlQgSU5UTyBhZ2dyZWdhdG9y
cyAoYWdncmVnYXRvcl9uYW1lLCBhZ2dyZWdhdG9yX2RlZmluaXRpb24pIHZhbHVlcyAoJDEsICQy
KScsCiAgICAgICAgICAgICAgICAgWydHZW9tZXRyaWMnLCAnTWF0aC5wb3codmFsdWVzLnJlZHVj
ZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAqIGI7IH0pLCAxIC8gdmFsdWVzLmxlbmd0aCkn
XSwgY2FsbGJhY2spOwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBpdCgic2hvdWxkIGFjY2Vw
dCBhIHJlcG9ydCB3aXRoIGFnZ3JlZ2F0b3JzIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAg
cmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFR3b0xldmVs
c09mQWdncmVnYXRpb25zKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGRvbmUoKTsK
LSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgaXQoInNob3VsZCBhY2NlcHQgYSByZXBvcnQg
d2l0aCBhZ2dyZWdhdG9ycyIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIHJlcG9ydEFmdGVyQWRk
aW5nQnVpbGRlckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydFdpdGhUd29MZXZlbHNPZkFnZ3JlZ2F0aW9u
cyk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGFkZCB0ZXN0cyIsIGZ1bmN0aW9uIChkb25l
KSB7Ci0gICAgICAgIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFnZ3JlZ2F0b3JzKHJlcG9y
dFdpdGhUd29MZXZlbHNPZkFnZ3JlZ2F0aW9ucykudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQo
InNob3VsZCBhZGQgdGVzdHMiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiByZXBvcnRBZnRlckFk
ZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRXaXRoVHdvTGV2ZWxzT2ZBZ2dyZWdhdGlv
bnMpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KS5zZWxlY3RBbGwoJ3Rlc3RzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHRlc3RzKSB7
Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHRlc3RzLm1hcChmdW5jdGlvbiAocm93KSB7
IHJldHVybiByb3dbJ25hbWUnXTsgfSkuc29ydCgpLAorICAgICAgICB9KS50aGVuKCh0ZXN0cykg
PT4geworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh0ZXN0cy5tYXAoKHJvdykgPT4geyBy
ZXR1cm4gcm93WyduYW1lJ107IH0pLnNvcnQoKSwKICAgICAgICAgICAgICAgICBbJ0NTUycsICdE
T00nLCAnRHVtbXlCZW5jaG1hcmsnLCAnRHVtbXlQYWdlTG9hZGluZycsICdNb2RpZnlOb2Rlcycs
ICdUcmF2ZXJzZU5vZGVzJywgJ2FwcGxlLmNvbScsICd3ZWJraXQub3JnJ10pOwotICAgICAgICAg
ICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7
CiAKLSAgICBpdCgic2hvdWxkIGFkZCBtZXRyaWNzIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAg
ICAgcmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFR3b0xl
dmVsc09mQWdncmVnYXRpb25zKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIGFk
ZCBtZXRyaWNzIiwgKCkgPT4geworICAgICAgICByZXR1cm4gcmVwb3J0QWZ0ZXJBZGRpbmdCdWls
ZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFR3b0xldmVsc09mQWdncmVnYXRpb25zKS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkucXVlcnko
J1NFTEVDVCAqIEZST00gdGVzdHMsIHRlc3RfbWV0cmljcyBMRUZUIEpPSU4gYWdncmVnYXRvcnMg
T04gbWV0cmljX2FnZ3JlZ2F0b3IgPSBhZ2dyZWdhdG9yX2lkIFdIRVJFIG1ldHJpY190ZXN0ID0g
dGVzdF9pZCcpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAg
ICAgIGxldCB0ZXN0TmFtZVRvTWV0cmljcyA9IHt9OwotICAgICAgICAgICAgcmVzdWx0LnJvd3Mu
Zm9yRWFjaChmdW5jdGlvbiAocm93KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewor
ICAgICAgICAgICAgY29uc3QgdGVzdE5hbWVUb01ldHJpY3MgPSB7fTsKKyAgICAgICAgICAgIHJl
c3VsdC5yb3dzLmZvckVhY2goKHJvdykgPT4gewogICAgICAgICAgICAgICAgIGlmICghKHJvd1sn
dGVzdF9uYW1lJ10gaW4gdGVzdE5hbWVUb01ldHJpY3MpKQogICAgICAgICAgICAgICAgICAgICB0
ZXN0TmFtZVRvTWV0cmljc1tyb3dbJ3Rlc3RfbmFtZSddXSA9IG5ldyBBcnJheTsKICAgICAgICAg
ICAgICAgICB0ZXN0TmFtZVRvTWV0cmljc1tyb3dbJ3Rlc3RfbmFtZSddXS5wdXNoKFtyb3dbJ21l
dHJpY19uYW1lJ10sIHJvd1snYWdncmVnYXRvcl9uYW1lJ11dKTsKQEAgLTQ1OSwxNSArNDM3LDE0
IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwodGVzdE5hbWVUb01ldHJpY3NbJ1RyYXZlcnNlTm9kZXMnXSwgW1snVGlt
ZScsIG51bGxdXSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHRlc3ROYW1lVG9NZXRy
aWNzWydhcHBsZS5jb20nXSwgW1snVGltZScsIG51bGxdXSk7CiAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHRlc3ROYW1lVG9NZXRyaWNzWyd3ZWJraXQub3JnJ10sIFtbJ1RpbWUnLCBudWxs
XV0pOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAg
ICAgfSk7CiAgICAgfSk7CiAKICAgICBmdW5jdGlvbiBmZXRjaFRlc3RDb25maWcodGVzdE5hbWUs
IG1ldHJpY05hbWUpCiAgICAgewogICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgp
LnF1ZXJ5KGBTRUxFQ1QgKiBGUk9NIHRlc3RzLCB0ZXN0X21ldHJpY3MsIHRlc3RfY29uZmlndXJh
dGlvbnMKICAgICAgICAgICAgIFdIRVJFIHRlc3RfaWQgPSBtZXRyaWNfdGVzdCBBTkQgbWV0cmlj
X2lkID0gY29uZmlnX21ldHJpYwotICAgICAgICAgICAgQU5EIHRlc3RfbmFtZSA9ICQxIEFORCBt
ZXRyaWNfbmFtZSA9ICQyYCwgW3Rlc3ROYW1lLCBtZXRyaWNOYW1lXSkudGhlbihmdW5jdGlvbiAo
cmVzdWx0KSB7CisgICAgICAgICAgICBBTkQgdGVzdF9uYW1lID0gJDEgQU5EIG1ldHJpY19uYW1l
ID0gJDJgLCBbdGVzdE5hbWUsIG1ldHJpY05hbWVdKS50aGVuKChyZXN1bHQpID0+IHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0LnJvd3MubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJvd3NbMF07CiAgICAgICAgICAgICB9KTsKQEAgLTQ3Niwx
OSArNDUzLDE5IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICBm
dW5jdGlvbiBmZXRjaFRlc3RSdW5JdGVyYXRpb25zRm9yTWV0cmljKHRlc3ROYW1lLCBtZXRyaWNO
YW1lKQogICAgIHsKICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0g
ICAgICAgIHJldHVybiBmZXRjaFRlc3RDb25maWcodGVzdE5hbWUsIG1ldHJpY05hbWUpLnRoZW4o
ZnVuY3Rpb24gKGNvbmZpZykgeworICAgICAgICByZXR1cm4gZmV0Y2hUZXN0Q29uZmlnKHRlc3RO
YW1lLCBtZXRyaWNOYW1lKS50aGVuKChjb25maWcpID0+IHsKICAgICAgICAgICAgIHJldHVybiBk
Yi5zZWxlY3RGaXJzdFJvdygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnWydjb25maWdfaWQn
XX0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChydW4pIHsKLSAgICAgICAgICAgIHJldHVy
biBkYi5zZWxlY3RSb3dzKCdydW5faXRlcmF0aW9ucycsIHtydW46IHJ1blsnaWQnXX0sIHtzb3J0
Qnk6ICdvcmRlcid9KS50aGVuKGZ1bmN0aW9uIChpdGVyYXRpb25zKSB7CisgICAgICAgIH0pLnRo
ZW4oKHJ1bikgPT4geworICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdFJvd3MoJ3J1bl9pdGVy
YXRpb25zJywge3J1bjogcnVuWydpZCddfSwge3NvcnRCeTogJ29yZGVyJ30pLnRoZW4oKGl0ZXJh
dGlvbnMpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4ge3J1bjogcnVuLCBpdGVyYXRpb25z
OiBpdGVyYXRpb25zfTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICBpdCgic2hvdWxkIHN0b3JlIHJ1biB2YWx1ZXMiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAg
ICByZXBvcnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRXaXRoVHdvTGV2
ZWxzT2ZBZ2dyZWdhdGlvbnMpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgc3Rv
cmUgcnVuIHZhbHVlcyIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIHJlcG9ydEFmdGVyQWRkaW5n
QnVpbGRlckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydFdpdGhUd29MZXZlbHNPZkFnZ3JlZ2F0aW9ucyku
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gZmV0Y2hUZXN0UnVuSXRlcmF0aW9uc0Zv
ck1ldHJpYygnYXBwbGUuY29tJywgJ1RpbWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29u
c3QgcnVuID0gcmVzdWx0LnJ1bjsKICAgICAgICAgICAgIGNvbnN0IHJ1bklkID0gcnVuWydpZCdd
OwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHQuaXRlcmF0aW9ucywgWwpAQCAt
NDk2LDEyICs0NzMsMTIgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgIHtydW46IHJ1bklkLCBvcmRlcjogMSwgZ3JvdXA6IG51bGwsIHZhbHVl
OiA1MTAsIHJlbGF0aXZlX3RpbWU6IG51bGx9LAogICAgICAgICAgICAgICAgIHtydW46IHJ1bklk
LCBvcmRlcjogMiwgZ3JvdXA6IG51bGwsIHZhbHVlOiA1MjAsIHJlbGF0aXZlX3RpbWU6IG51bGx9
LAogICAgICAgICAgICAgICAgIHtydW46IHJ1bklkLCBvcmRlcjogMywgZ3JvdXA6IG51bGwsIHZh
bHVlOiA1MzAsIHJlbGF0aXZlX3RpbWU6IG51bGx9XSk7Ci0gICAgICAgICAgICB2YXIgc3VtID0g
NTAwICsgNTEwICsgNTIwICsgNTMwOworICAgICAgICAgICAgY29uc3Qgc3VtID0gNTAwICsgNTEw
ICsgNTIwICsgNTMwOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsnbWVhbl9jYWNoZSdd
LCBzdW0gLyByZXN1bHQuaXRlcmF0aW9ucy5sZW5ndGgpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJ1blsnc3VtX2NhY2hlJ10sIHN1bSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVu
WydzcXVhcmVfc3VtX2NhY2hlJ10sIDUwMCAqIDUwMCArIDUxMCAqIDUxMCArIDUyMCAqIDUyMCAr
IDUzMCAqIDUzMCk7CiAgICAgICAgICAgICByZXR1cm4gZmV0Y2hUZXN0UnVuSXRlcmF0aW9uc0Zv
ck1ldHJpYygnQ1NTJywgJ1RpbWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0
KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29uc3QgcnVu
ID0gcmVzdWx0LnJ1bjsKICAgICAgICAgICAgIGNvbnN0IHJ1bklkID0gcnVuWydpZCddOwogICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXN1bHQuaXRlcmF0aW9ucywgWwpAQCAtNTI5LDE0
ICs1MDYsMTMgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsnbWVhbl9jYWNoZSddLCBzdW0gLyByZXN1bHQuaXRlcmF0
aW9ucy5sZW5ndGgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsnc3VtX2NhY2hlJ10s
IHN1bSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydzcXVhcmVfc3VtX2NhY2hlJ10s
IHNxdWFyZVN1bSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUp
OworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgc3RvcmUgYWdncmVnYXRl
ZCBydW4gdmFsdWVzIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgcmVwb3J0QWZ0ZXJBZGRp
bmdCdWlsZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFR3b0xldmVsc09mQWdncmVnYXRpb25z
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIHN0b3JlIGFnZ3JlZ2F0ZWQgcnVu
IHZhbHVlcyIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRl
ckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydFdpdGhUd29MZXZlbHNPZkFnZ3JlZ2F0aW9ucykudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gZmV0Y2hUZXN0UnVuSXRlcmF0aW9uc0Zvck1ldHJp
YygnRHVtbXlQYWdlTG9hZGluZycsICdUaW1lJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNv
bnN0IHJ1biA9IHJlc3VsdC5ydW47CiAgICAgICAgICAgICBjb25zdCBydW5JZCA9IHJlc3VsdC5y
dW5bJ2lkJ107CiAgICAgICAgICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsoNTAwICsgMTAw
KSAvIDIsICg1MTAgKyAxMTApIC8gMiwgKDUyMCArIDEyMCkgLyAyLCAoNTMwICsgMTMwKSAvIDJd
OwpAQCAtNTQ5LDE0ICs1MjUsMTMgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVuY3Rpb24g
KCkgewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsnbWVhbl9jYWNoZSddLCBzdW0gLyBy
ZXN1bHQuaXRlcmF0aW9ucy5sZW5ndGgpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsn
c3VtX2NhY2hlJ10sIHN1bSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydzcXVhcmVf
c3VtX2NhY2hlJ10sIGV4cGVjdGVkVmFsdWVzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCB2YWx1ZSkg
eyByZXR1cm4gc3VtICsgdmFsdWUgKiB2YWx1ZTsgfSwgMCkpOwotICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBp
dCgic2hvdWxkIGJlIGFibGUgdG8gY29tcHV0ZSB0aGUgYWdncmVnYXRpb24gb2YgYWdncmVnYXRl
ZCB2YWx1ZXMiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICByZXBvcnRBZnRlckFkZGluZ0J1
aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRXaXRoVHdvTGV2ZWxzT2ZBZ2dyZWdhdGlvbnMpLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgYmUgYWJsZSB0byBjb21wdXRlIHRoZSBh
Z2dyZWdhdGlvbiBvZiBhZ2dyZWdhdGVkIHZhbHVlcyIsICgpID0+IHsKKyAgICAgICAgcmV0dXJu
IHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydFdpdGhUd29MZXZl
bHNPZkFnZ3JlZ2F0aW9ucykudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gZmV0Y2hU
ZXN0UnVuSXRlcmF0aW9uc0Zvck1ldHJpYygnRHVtbXlCZW5jaG1hcmsnLCAnVGltZScpOwotICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0
KSA9PiB7CiAgICAgICAgICAgICBjb25zdCBydW4gPSByZXN1bHQucnVuOwogICAgICAgICAgICAg
Y29uc3QgcnVuSWQgPSBydW5bJ2lkJ107CiAgICAgICAgICAgICBjb25zdCBleHBlY3RlZEl0ZXJh
dGlvbnMgPSBbXTsKQEAgLTU3NCw4ICs1NDksNyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQiLCBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydtZWFuX2NhY2hlJ10s
IHN1bSAvIHJlc3VsdC5pdGVyYXRpb25zLmxlbmd0aCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocnVuWydzdW1fY2FjaGUnXSwgc3VtKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5b
J3NxdWFyZV9zdW1fY2FjaGUnXSwgc3F1YXJlU3VtKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAg
ICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgZnVuY3Rp
b24gcmVwb3J0V2l0aFNhbWVTdWJ0ZXN0TmFtZSgpCkBAIC02MTEsMjggKzU4NSwyNSBAQCBkZXNj
cmliZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH07CiAgICAgfQogCi0g
ICAgaXQoInNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHJlcG9ydCB3aXRoIHNhbWUgc3VidGVzdCBu
YW1lIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgcmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVy
QW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFNhbWVTdWJ0ZXN0TmFtZSgpKS50aGVuKGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAg
aXQoInNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHJlcG9ydCB3aXRoIHNhbWUgc3VidGVzdCBuYW1l
IiwgKCkgPT4geworICAgICAgICByZXR1cm4gcmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVyQW5kQWdn
cmVnYXRvcnMocmVwb3J0V2l0aFNhbWVTdWJ0ZXN0TmFtZSgpKTsKICAgICB9KTsKIAotICAgIGl0
KCJzaG91bGQgYmUgYWJsZSB0byByZXVzZSB0aGUgc2FtZSB0ZXN0IHJvd3MiLCBmdW5jdGlvbiAo
ZG9uZSkgewotICAgICAgICByZXBvcnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhy
ZXBvcnRXaXRoU2FtZVN1YnRlc3ROYW1lKCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJz
aG91bGQgYmUgYWJsZSB0byByZXVzZSB0aGUgc2FtZSB0ZXN0IHJvd3MiLCAoKSA9PiB7CisgICAg
ICAgIHJldHVybiByZXBvcnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRX
aXRoU2FtZVN1YnRlc3ROYW1lKCkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ3Rlc3RzJyk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHRlc3RzKSB7CisgICAgICAgIH0pLnRoZW4oKHRlc3RzKSA9PiB7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwodGVzdHMubGVuZ3RoLCA2KTsKICAgICAgICAgICAgIGxldCBuZXdS
ZXBvcnQgPSByZXBvcnRXaXRoU2FtZVN1YnRlc3ROYW1lKCk7CiAgICAgICAgICAgICBuZXdSZXBv
cnQuYnVpbGROdW1iZXIgPSAiMTI1IjsKICAgICAgICAgICAgIG5ld1JlcG9ydC5idWlsZFRpbWUg
PSAiMjAxMy0wMi0yOFQxMjoxNzoyNC4xIjsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbbmV3UmVwb3J0XSk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
T0snKTsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxs
KCd0ZXN0cycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICh0ZXN0cykgeworICAgICAgICB9
KS50aGVuKCh0ZXN0cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RzLmxlbmd0
aCwgNik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICB9KTsKICAgICB9KTsKIAogICAgIGNvbnN0IHJlcG9ydFdpdGhTYW1lU2luZ2xlVmFsdWUg
PSB7CkBAIC02NTUsMjQgKzYyNiwyMyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICB9LAogICAgICAgICB9fTsKIAotICAgIGl0KCJzaG91bGQgYmUg
YWJsZSB0byBhZGQgYSByZXBvcnQgd2l0aCBzaW5nbGUgdmFsdWUgcmVzdWx0cyIsIGZ1bmN0aW9u
IChkb25lKSB7Ci0gICAgICAgIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFnZ3JlZ2F0b3Jz
KHJlcG9ydFdpdGhTYW1lU2luZ2xlVmFsdWUpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJz
aG91bGQgYmUgYWJsZSB0byBhZGQgYSByZXBvcnQgd2l0aCBzaW5nbGUgdmFsdWUgcmVzdWx0cyIs
ICgpID0+IHsKKyAgICAgICAgcmV0dXJuIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFnZ3Jl
Z2F0b3JzKHJlcG9ydFdpdGhTYW1lU2luZ2xlVmFsdWUpLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgcmV0dXJuIGZldGNoVGVzdFJ1bkl0ZXJhdGlvbnNGb3JNZXRyaWMoJ3Rlc3QxJywgJ0NvbWJp
bmVkJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHJ1biA9IHJlc3VsdC5ydW47CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydpdGVyYXRpb25fY291bnRfY2FjaGUnXSwgMSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydtZWFuX2NhY2hlJ10sIDMpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsnc3VtX2NhY2hlJ10sIDMpOwogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJ1blsnc3F1YXJlX3N1bV9jYWNoZSddLCA5KTsKICAgICAgICAgICAgIHJldHVy
biBmZXRjaFRlc3RSdW5JdGVyYXRpb25zRm9yTWV0cmljKCdzdWl0ZScsICdDb21iaW5lZCcpOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVz
dWx0KSA9PiB7CiAgICAgICAgICAgICBjb25zdCBydW4gPSByZXN1bHQucnVuOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJ1blsnaXRlcmF0aW9uX2NvdW50X2NhY2hlJ10sIDEpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsnbWVhbl9jYWNoZSddLCA1KTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChydW5bJ3N1bV9jYWNoZSddLCA1KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChydW5bJ3NxdWFyZV9zdW1fY2FjaGUnXSwgMjUpOwotICAgICAgICAgICAgZG9uZSgpOwotICAg
ICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKICAgICBjb25zdCBy
ZXBvcnRXaXRoU2FtZVZhbHVlUGFpcnMgPSB7CkBAIC02ODgsMTAgKzY1OCwxMCBAQCBkZXNjcmli
ZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICB9LAogICAgICAgICB9
OwogCi0gICAgaXQoInNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHJlcG9ydCB3aXRoIChyZWxhdGl2
ZSB0aW1lLCB2YWx1ZSkgcGFpcnMiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICByZXBvcnRB
ZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRXaXRoU2FtZVZhbHVlUGFpcnMp
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgYmUgYWJsZSB0byBhZGQgYSByZXBv
cnQgd2l0aCAocmVsYXRpdmUgdGltZSwgdmFsdWUpIHBhaXJzIiwgKCkgPT4geworICAgICAgICBy
ZXR1cm4gcmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFNh
bWVWYWx1ZVBhaXJzKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBmZXRjaFRlc3RS
dW5JdGVyYXRpb25zRm9yTWV0cmljKCd0ZXN0JywgJ0ZyYW1lUmF0ZScpOwotICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAg
ICAgICAgICAgICBjb25zdCBydW4gPSByZXN1bHQucnVuOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJ1blsnaXRlcmF0aW9uX2NvdW50X2NhY2hlJ10sIDMpOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJ1blsnbWVhbl9jYWNoZSddLCA0KTsKQEAgLTcwMyw4ICs2NzMsNyBAQCBkZXNjcmli
ZSgiL2FwaS9yZXBvcnQiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAge3J1bjogcnVu
SWQsIG9yZGVyOiAwLCBncm91cDogbnVsbCwgdmFsdWU6IDQsIHJlbGF0aXZlX3RpbWU6IDB9LAog
ICAgICAgICAgICAgICAgIHtydW46IHJ1bklkLCBvcmRlcjogMSwgZ3JvdXA6IG51bGwsIHZhbHVl
OiA1LCByZWxhdGl2ZV90aW1lOiAxMDB9LAogICAgICAgICAgICAgICAgIHtydW46IHJ1bklkLCBv
cmRlcjogMiwgZ3JvdXA6IG51bGwsIHZhbHVlOiAzLCByZWxhdGl2ZV90aW1lOiAyMDV9XSk7Ci0g
ICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsK
ICAgICB9KTsKIAogICAgIGNvbnN0IHJlcG9ydHNVcGRhdGluZ0RpZmZlcmVudFRlc3RzID0gWwpA
QCAtNzM0LDQwICs3MDMsMzggQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVuY3Rpb24gKCkg
ewogICAgICAgICB9LAogICAgIF07CiAKLSAgICBpdCgic2hvdWxkIHVwZGF0ZSB0aGUgbGFzdCBt
b2RpZmllZCBkYXRlIG9mIHRlc3QgY29uZmlndXJhdGlvbnMgd2l0aCBuZXcgcnVucyIsIGZ1bmN0
aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0c1VwZGF0aW5n
RGlmZmVyZW50VGVzdHNbMF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgdXBk
YXRlIHRoZSBsYXN0IG1vZGlmaWVkIGRhdGUgb2YgdGVzdCBjb25maWd1cmF0aW9ucyB3aXRoIG5l
dyBydW5zIiwgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChyZXBv
cnRzVXBkYXRpbmdEaWZmZXJlbnRUZXN0c1swXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW3Jl
cG9ydHNVcGRhdGluZ0RpZmZlcmVudFRlc3RzWzBdXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAg
IHJldHVybiBmZXRjaFRlc3RDb25maWcoJ3Rlc3QxJywgJ1RpbWUnKTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAob3JpZ2luYWxDb25maWcpIHsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbcmVwb3J0c1VwZGF0aW5n
RGlmZmVyZW50VGVzdHNbMl1dKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigo
b3JpZ2luYWxDb25maWcpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbcmVwb3J0c1VwZGF0aW5nRGlmZmVyZW50
VGVzdHNbMl1dKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hUZXN0
Q29uZmlnKCd0ZXN0MScsICdUaW1lJyk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChj
b25maWcpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKGNvbmZpZykgPT4gewogICAgICAgICAgICAg
ICAgIGFzc2VydChvcmlnaW5hbENvbmZpZ1snY29uZmlnX3J1bnNfbGFzdF9tb2RpZmllZCddIGlu
c3RhbmNlb2YgRGF0ZSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvbmZpZ1snY29uZmlnX3J1
bnNfbGFzdF9tb2RpZmllZCddIGluc3RhbmNlb2YgRGF0ZSk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0KCtvcmlnaW5hbENvbmZpZ1snY29uZmlnX3J1bnNfbGFzdF9tb2RpZmllZCddIDwgK2NvbmZp
Z1snY29uZmlnX3J1bnNfbGFzdF9tb2RpZmllZCddKTsKLSAgICAgICAgICAgICAgICBkb25lKCk7
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwog
ICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBub3QgdXBkYXRlIHRoZSBsYXN0IG1vZGlmaWVkIGRh
dGUgb2YgdW5yZWxhdGVkIHRlc3QgY29uZmlndXJhdGlvbnMiLCBmdW5jdGlvbiAoZG9uZSkgewot
ICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydHNVcGRhdGluZ0RpZmZlcmVudFRlc3Rz
WzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIG5vdCB1cGRhdGUgdGhlIGxh
c3QgbW9kaWZpZWQgZGF0ZSBvZiB1bnJlbGF0ZWQgdGVzdCBjb25maWd1cmF0aW9ucyIsICgpID0+
IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0c1VwZGF0aW5nRGlm
ZmVyZW50VGVzdHNbMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtyZXBvcnRzVXBkYXRpbmdE
aWZmZXJlbnRUZXN0c1swXV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkg
eworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gZmV0Y2hU
ZXN0Q29uZmlnKCd0ZXN0MScsICdUaW1lJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKG9y
aWdpbmFsQ29uZmlnKSB7Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW3JlcG9ydHNVcGRhdGluZ0RpZmZlcmVudFRlc3Rz
WzFdXSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigob3JpZ2lu
YWxDb25maWcpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbcmVwb3J0c1VwZGF0aW5nRGlmZmVyZW50VGVzdHNb
MV1dKS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaFRl
c3RDb25maWcoJ3Rlc3QxJywgJ1RpbWUnKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KGNvbmZpZykgeworICAgICAgICAgICAgfSkudGhlbigoY29uZmlnKSA9PiB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0KG9yaWdpbmFsQ29uZmlnWydjb25maWdfcnVuc19sYXN0X21vZGlmaWVkJ10g
aW5zdGFuY2VvZiBEYXRlKTsKICAgICAgICAgICAgICAgICBhc3NlcnQoY29uZmlnWydjb25maWdf
cnVuc19sYXN0X21vZGlmaWVkJ10gaW5zdGFuY2VvZiBEYXRlKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoK29yaWdpbmFsQ29uZmlnWydjb25maWdfcnVuc19sYXN0X21vZGlmaWVkJ10s
ICtjb25maWdbJ2NvbmZpZ19ydW5zX2xhc3RfbW9kaWZpZWQnXSk7Ci0gICAgICAgICAgICAgICAg
ZG9uZSgpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAg
ICB9KTsKICAgICB9KTsKIH0pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9hcGktdXBkYXRlLXRyaWdnZXJhYmxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwZGF0ZS10cmlnZ2VyYWJsZS5qcwko
cmV2aXNpb24gMjEzOTY1KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9hcGktdXBkYXRlLXRyaWdnZXJhYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4NSArMzAs
NzggQEAgZGVzY3JpYmUoJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIGZ1bgogICAgICAgICBd
LAogICAgIH07CiAKLSAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHNsYXZlIG5hbWUgaXMgbWlz
c2luZycsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
cG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHt9KS50aGVuKGZ1bmN0aW9uIChy
ZXNwb25zZSkgeworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gc2xhdmUgbmFtZSBpcyBtaXNz
aW5nJywgKCkgPT4geworICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0
SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywge30pLnRoZW4oKHJlc3BvbnNlKSA9PiB7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnTWlzc2luZ1Ns
YXZlTmFtZScpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsK
KyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHRoZXJl
IGFyZSBubyBzbGF2ZXMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCdzaG91bGQgcmVqZWN0
IHdoZW4gdGhlcmUgYXJlIG5vIHNsYXZlcycsICgpID0+IHsKICAgICAgICAgY29uc3QgdXBkYXRl
ID0ge3NsYXZlTmFtZTogZW1wdHlVcGRhdGUuc2xhdmVOYW1lLCBzbGF2ZVBhc3N3b3JkOiBlbXB0
eVVwZGF0ZS5zbGF2ZVBhc3N3b3JkfTsKLSAgICAgICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5w
b3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlKS50aGVuKGZ1bmN0aW9u
IChyZXNwb25zZSkgeworICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0
SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlKS50aGVuKChyZXNwb25zZSkg
PT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1NsYXZl
Tm90Rm91bmQnKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7
CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiB0aGUg
c2xhdmUgcGFzc3dvcmQgZG9lc25cJ3QgbWF0Y2gnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAg
ICBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gdGhlIHNsYXZlIHBhc3N3b3JkIGRv
ZXNuXCd0IG1hdGNoJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0Rh
dGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biBhZGRTbGF2ZUZvclJlcG9ydChlbXB0eVVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHJlcG9y
dCA9IHtzbGF2ZU5hbWU6IGVtcHR5VXBkYXRlLnNsYXZlTmFtZSwgc2xhdmVQYXNzd29yZDogJ2Jh
ZFBhc3N3b3JkJ307CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5w
b3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgZW1wdHlVcGRhdGUpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09L
Jyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAg
ICB9KTsKICAgICB9KTsKIAotICAgIGl0KCdzaG91bGQgYWNjZXB0IGFuIGVtcHR5IHJlcG9ydCcs
IGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoJ3Nob3VsZCBhY2NlcHQg
YW4gZW1wdHkgcmVwb3J0JywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9j
a0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJl
dHVybiBhZGRTbGF2ZUZvclJlcG9ydChlbXB0eVVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8n
LCBlbXB0eVVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7Cisg
ICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAg
fSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ2RlbGV0ZSBl
eGlzdGluZyBjb25maWd1cmF0aW9ucyB3aGVuIGFjY2VwdGluZyBhbiBlbXB0eSByZXBvcnQnLCBm
dW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCdkZWxldGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMg
d2hlbiBhY2NlcHRpbmcgYW4gZW1wdHkgcmVwb3J0JywgKCkgPT4gewogICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEo
ZGIpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0Rh
dGEoZGIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAg
ICAgICAgICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChlbXB0eVVwZGF0ZSksCiAgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucycsCiAgICAgICAgICAg
ICAgICAgICAgIHsndHJpZ2dlcmFibGUnOiAxIC8qIGJ1aWxkLXdlYmtpdCAqLywgJ3Rlc3QnOiBN
b2NrRGF0YS5zb21lVGVzdElkKCksICdwbGF0Zm9ybSc6IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlk
KCl9KQogICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBlbXB0eVVwZGF0ZSk7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1
cyddLCAnT0snKTsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxl
X2NvbmZpZ3VyYXRpb25zJywgJ3Rlc3QnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocm93
cykgeworICAgICAgICB9KS50aGVuKChyb3dzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocm93cy5sZW5ndGgsIDApOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRj
aChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIGFkZCBjb25m
aWd1cmF0aW9ucyBpbiB0aGUgdXBkYXRlJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgnc2hv
dWxkIGFkZCBjb25maWd1cmF0aW9ucyBpbiB0aGUgdXBkYXRlJywgKCkgPT4gewogICAgICAgICBj
b25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgTW9ja0RhdGEuYWRkTW9j
a0RhdGEoZGIpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRk
TW9ja0RhdGEoZGIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9y
UmVwb3J0KHNtYWxsVXBkYXRlKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHNtYWxsVXBkYXRlKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigo
cmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVz
J10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVf
Y29uZmlndXJhdGlvbnMnLCAndGVzdCcpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyb3dz
KSB7CisgICAgICAgIH0pLnRoZW4oKHJvd3MpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyb3dzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1swXVsndGVz
dCddLCBzbWFsbFVwZGF0ZS5jb25maWd1cmF0aW9uc1swXVsndGVzdCddKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyb3dzWzBdWydwbGF0Zm9ybSddLCBzbWFsbFVwZGF0ZS5jb25maWd1cmF0
aW9uc1swXVsncGxhdGZvcm0nXSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNh
dGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCdzaG91bGQgcmVqZWN0
IHdoZW4gYSBjb25maWd1cmF0aW9uIGlzIG1hbGZvcm1lZCcsIGZ1bmN0aW9uIChkb25lKSB7Ci0g
ICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICBNb2NrRGF0
YS5hZGRNb2NrRGF0YShkYikudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoJ3Nob3VsZCByZWpl
Y3Qgd2hlbiBhIGNvbmZpZ3VyYXRpb24gaXMgbWFsZm9ybWVkJywgKCkgPT4geworICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzbWFsbFVwZGF0ZSk7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZSA9IHsKICAgICAgICAgICAgICAgICAnc2xhdmVOYW1l
JzogJ3NvbWVTbGF2ZScsCiAgICAgICAgICAgICAgICAgJ3NsYXZlUGFzc3dvcmQnOiAnc29tZVBh
c3N3b3JkJywKQEAgLTExNiwxMCArMTA5LDkgQEAgZGVzY3JpYmUoJy9hcGkvdXBkYXRlLXRyaWdn
ZXJhYmxlLycsIGZ1bgogICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6IFt7fV0sCiAg
ICAgICAgICAgICB9OwogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
cG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHVwZGF0ZSk7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxp
ZENvbmZpZ3VyYXRpb25FbnRyeScpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5j
YXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKIH0pOwpJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGF0ZS1ydW4tc3Rh
dHVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktdXBhdGUtcnVuLXN0YXR1cy5qcwkocmV2aXNpb24gMjEzOTY1KQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11
cGF0ZS1ydW4tc3RhdHVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMDAgKzM1LDk1IEBAIGRl
c2NyaWJlKCIvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXJ1bi1zdGEKICAgICAgICAgICAgIH0sCiAg
ICAgICAgIH19XTsKIAotICAgIGl0KCJzaG91bGQgYmUgYWJsZSB0byBtYXJrIGEgcnVuIGFzIGFu
IG91dGxpZXIiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCJzaG91bGQgYmUgYWJsZSB0byBt
YXJrIGEgcnVuIGFzIGFuIG91dGxpZXIiLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICBsZXQgaWQ7Ci0gICAgICAgIGFkZEJ1aWxkZXJG
b3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOwotICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAg
ICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCd0ZXN0X3J1bnMnKTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAocnVuUm93cykgeworICAgICAgICB9KS50aGVuKChydW5Sb3dzKSA9PiB7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJ1blJvd3NbMF1bJ21lYW5fY2FjaGUnXSwgMTEpOwogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJ1blJvd3NbMF1bJ2l0ZXJhdGlvbl9jb3VudF9jYWNoZSddLCAxKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChydW5Sb3dzWzBdWydtYXJrZWRfb3V0bGllciddLCBmYWxz
ZSk7CiAgICAgICAgICAgICBpZCA9IHJ1blJvd3NbMF1bJ2lkJ107CiAgICAgICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5yZXF1ZXN0Q1NSRlRva2VuKCk7Ci0gICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRhdGUtcnVuLXN0YXR1cycsIHsncnVuJzogaWQs
ICdtYXJrZWRPdXRsaWVyJzogdHJ1ZSwgJ3Rva2VuJzogUHJpdmlsZWdlZEFQSS5fdG9rZW59KTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgndGVzdF9ydW5zJyk7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJ1blJvd3MpIHsKKyAgICAgICAgfSkudGhlbigocnVuUm93cykgPT4g
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3MubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChydW5Sb3dzWzBdWydtZWFuX2NhY2hlJ10sIDExKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChydW5Sb3dzWzBdWydpdGVyYXRpb25fY291bnRfY2FjaGUnXSwgMSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93c1swXVsnbWFya2VkX291dGxpZXInXSwg
dHJ1ZSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgcmVqZWN0IHdoZW4gdGhlIHRva2Vu
IGlzIG5vdCBzZXQgaW4gY29va2llIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxk
IHJlamVjdCB3aGVuIHRoZSB0b2tlbiBpcyBub3Qgc2V0IGluIGNvb2tpZSIsICgpID0+IHsKICAg
ICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFkZEJ1aWxk
ZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBv
c3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOwotICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4g
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAg
ICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCd0ZXN0X3J1bnMnKTsKLSAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAocnVuUm93cykgeworICAgICAgICB9KS50aGVuKChydW5Sb3dzKSA9PiB7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93cy5sZW5ndGgsIDEpOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3NbMF1bJ21hcmtlZF9vdXRsaWVyJ10sIGZhbHNlKTsKICAg
ICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnJlcXVlc3RDU1JGVG9rZW4oKTsKLSAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgUmVtb3RlQVBJLmNsZWFyQ29va2llcygpOwogICAgICAgICAgICAgcmV0dXJuIFJlbW90
ZUFQSS5wb3N0SlNPTldpdGhTdGF0dXMoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtcnVuLXN0YXR1
cycsIHt0b2tlbjogUHJpdmlsZWdlZEFQSS5fdG9rZW59KTsKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0KGZh
bHNlLCAnUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCBzaG91bGQgcmVqZWN0Jyk7Ci0gICAgICAg
IH0sIGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9LCAocmVzcG9uc2UpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkVG9rZW4n
KTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAg
IH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCByZWplY3Qgd2hlbiB0aGUgdG9rZW4gaW4g
dGhlIHJlcXVlc3QgY29udGVudCBpcyBiYWQiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBj
b25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgYWRkQnVpbGRlckZvclJl
cG9ydChyZXBvcnRXaXRoUmV2aXNpb25bMF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJz
aG91bGQgcmVqZWN0IHdoZW4gdGhlIHRva2VuIGluIHRoZSByZXF1ZXN0IGNvbnRlbnQgaXMgYmFk
IiwgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRo
UmV2aXNpb25bMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1
cyddLCAnT0snKTsKLSAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ3Rlc3RfcnVucycp
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChydW5Sb3dzKSB7CisgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgndGVzdF9ydW5zJyk7CisgICAgICAg
IH0pLnRoZW4oKHJ1blJvd3MpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5Sb3dz
Lmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93c1swXVsnbWFya2Vk
X291dGxpZXInXSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkucmVx
dWVzdENTUkZUb2tlbigpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
fSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gUmVtb3RlQVBJLnBvc3RKU09OV2l0
aFN0YXR1cygnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS1ydW4tc3RhdHVzJywge3Rva2VuOiAnYmFk
J30pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
IHNob3VsZCByZWplY3QnKTsKLSAgICAgICAgfSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAg
ICAgIH0sIChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ0ludmFsaWRUb2tlbicpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAg
ICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxk
IGJlIGFibGUgdG8gdW5tYXJrIGEgcnVuIGFzIGFuIG91dGxpZXIiLCBmdW5jdGlvbiAoZG9uZSkg
eworICAgIGl0KCJzaG91bGQgYmUgYWJsZSB0byB1bm1hcmsgYSBydW4gYXMgYW4gb3V0bGllciIs
ICgpID0+IHsKICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAg
ICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJl
dmlzaW9uWzBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMn
XSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCd0ZXN0X3J1bnMnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocnVuUm93cykgeworICAgICAgICB9KS50aGVuKChy
dW5Sb3dzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93cy5sZW5ndGgsIDEp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3NbMF1bJ21hcmtlZF9vdXRsaWVyJ10s
IGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1
cGRhdGUtcnVuLXN0YXR1cycsIHsncnVuJzogcnVuUm93c1swXVsnaWQnXSwgJ21hcmtlZE91dGxp
ZXInOiB0cnVlfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ3Rlc3RfcnVucycp
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChydW5Sb3dzKSB7CisgICAgICAgIH0pLnRoZW4o
KHJ1blJvd3MpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5Sb3dzLmxlbmd0aCwg
MSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93c1swXVsnbWFya2VkX291dGxpZXIn
XSwgdHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
dXBkYXRlLXJ1bi1zdGF0dXMnLCB7J3J1bic6IHJ1blJvd3NbMF1bJ2lkJ10sICdtYXJrZWRPdXRs
aWVyJzogZmFsc2V9KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0p
LnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgndGVzdF9ydW5z
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJ1blJvd3MpIHsKKyAgICAgICAgfSkudGhl
bigocnVuUm93cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3MubGVuZ3Ro
LCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5Sb3dzWzBdWydtYXJrZWRfb3V0bGll
ciddLCBmYWxzZSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUp
OworICAgICAgICB9KTsKICAgICB9KTsKIH0pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLWJ1
aWxkYm90LXRyaWdnZXJhYmxlLXRlc3RzLmpzCShyZXZpc2lvbiAyMTM5NjUpCisrKyBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdnZXJhYmxl
LXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyOSArMjEsMjcgQEAgY2xhc3MgTW9ja0xv
Z2dlciB7CiBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uICgpIHsKICAg
ICB0aGlzLnRpbWVvdXQoMTAwMCk7CiAgICAgVGVzdFNlcnZlci5pbmplY3QoKTsKKyAgICBjb25u
ZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0KCk7CiAKLSAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgp
IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKICAgICAgICAgTW9ja0RhdGEucmVzZXRWM01vZGVs
cygpOwogICAgICAgICBNb2NrUmVtb3RlQVBJLnJlc2V0KCdodHRwOi8vYnVpbGQud2Via2l0Lm9y
ZycpOwogICAgIH0pOwogCi0gICAgZGVzY3JpYmUoJ3N5bmNPbmNlJywgZnVuY3Rpb24gKCkgewot
ICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIHRoZSBuZXh0IGJ1aWxkIHJlcXVlc3Qgd2hlbiB0
aGVyZSBhcmUgbm8gcGVuZGluZyBidWlsZHMnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAg
ICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAgICAgbGV0IHN5bmNQ
cm9taXNlOwotICAgICAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewotICAg
ICAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQn
LCAncnVubmluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSk7Ci0gICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgnc3luY09uY2UnLCAoKSA9PiB7CisgICAgICAg
IGl0KCdzaG91bGQgc2NoZWR1bGUgdGhlIG5leHQgYnVpbGQgcmVxdWVzdCB3aGVuIHRoZXJlIGFy
ZSBubyBwZW5kaW5nIGJ1aWxkcycsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgbGV0IHN5bmNQcm9taXNlOworICAgICAg
ICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdydW5u
aW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmND
b25maWdXaXRoU2luZ2xlQnVpbGRlcigpOwotICAgICAgICAgICAgICAgIGxldCBsb2dnZXIgPSBu
ZXcgTW9ja0xvZ2dlcjsKLSAgICAgICAgICAgICAgICBsZXQgc2xhdmVJbmZvID0ge25hbWU6ICdz
eW5jLXNsYXZlJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgICAgIGxldCB0
cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOworICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0Rh
dGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgICAgICBjb25zdCBz
bGF2ZUluZm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Cisg
ICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJs
ZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5m
bywgbG9nZ2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCk7Ci0gICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgs
IDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAwKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ3J1bm5pbmcnKTsKQEAgLTUz
LDEwNyArNTEsOTkgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVy
bCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKICAgICAg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoW10pOwogICAgICAg
ICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1l
dGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/
c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMV0ucmVzb2x2ZSh7Wy0xXTogTW9ja0RhdGEucnVubmluZ0J1aWxkKCksIFstMl06IE1v
Y2tEYXRhLmZpbmlzaGVkQnVpbGQoKX0pOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVt
b3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ1BPU1QnKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsICcvYnVp
bGRlcnMvc29tZS1idWlsZGVyLTEvZm9yY2UnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0uZGF0YSwgeyd3ayc6ICcxOTE2MjInLCAn
b3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnNzAyJ30pOwogICAgICAg
ICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSgnT0snKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5t
ZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1szXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5n
QnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNv
bHZlKFtNb2NrRGF0YS5wZW5kaW5nQnVpbGQoKV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1v
Y2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnR0VUJyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0udXJsLCAn
L2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0y
Jyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5yZXNvbHZlKHtb
LTFdOiBNb2NrRGF0YS5ydW5uaW5nQnVpbGQoKSwgWy0yXTogTW9ja0RhdGEuZmluaXNoZWRCdWls
ZCgpfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNlOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0Rh
dGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKS50cmlnZ2VyYWJsZU5hbWUp
OwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgp
Lmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAncnVubmluZycp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAy
KS5zdGF0dXMoKSwgJ3NjaGVkdWxlZCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKLSAgICAgICAg
ICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAg
IH0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIG5vdCBzY2hlZHVsZSB0aGUg
bmV4dCBidWlsZCByZXF1ZXN0IHdoZW4gdGhlcmUgaXMgYSBwZW5kaW5nIGJ1aWxkJywgZnVuY3Rp
b24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgdGhlIG5leHQgYnVpbGQgcmVxdWVzdCB3
aGVuIHRoZXJlIGlzIGEgcGVuZGluZyBidWlsZCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICAgICAgbGV0IHN5bmNQcm9taXNl
OwotICAgICAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAncnVu
bmluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydj
b21wbGV0ZWQnLCAncnVubmluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgICAgIGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2lu
Z2xlQnVpbGRlcigpOwogICAgICAgICAgICAgICAgIGxldCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dl
cjsKICAgICAgICAgICAgICAgICBsZXQgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZlJywg
cGFzc3dvcmQ6ICdwYXNzd29yZCd9OwogICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9
IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwg
TW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOwogICAgICAgICAgICAgICAgIHN5bmNQ
cm9taXNlID0gdHJpZ2dlcmFibGUuc3luY09uY2UoKTsKLSAgICAgICAgICAgICAgICBzeW5jUHJv
bWlzZS5jYXRjaChkb25lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53
YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVy
cy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKFtNb2NrRGF0YS5wZW5kaW5nQnVpbGQoKV0pOwog
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzFdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1
aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7Wy0xXTogTW9ja0RhdGEucnVubmluZ0J1aWxkKCksIFst
Ml06IE1vY2tEYXRhLmZpbmlzaGVkQnVpbGQoKX0pOwogICAgICAgICAgICAgICAgIHJldHVybiBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwg
Jy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKICAgICAgICAg
ICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoW01vY2tEYXRhLnBlbmRp
bmdCdWlsZCgpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsICcvanNvbi9idWlsZGVycy9zb21l
LWJ1aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAg
ICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoe1stMV06IE1vY2tEYXRhLnJ1bm5p
bmdCdWlsZCgpLCBbLTJdOiBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkKCl9KTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3luY1Byb21pc2U7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdjb21wbGV0ZWQn
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
MSkuc3RhdHVzKCksICdydW5uaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1cygpLCAncGVuZGluZycpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwg
J3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9y
VHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIo
KS50cmlnZ2VyYWJsZU5hbWUpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0
YXR1cygpLCAncnVubmluZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ3NjaGVkdWxlZCcpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3Bl
bmRpbmcnKTsKLSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChk
b25lKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxk
IHNjaGVkdWxlIHRoZSBidWlsZCByZXF1ZXN0IG9uIGEgYnVpbGRlciB3aXRob3V0IGEgcGVuZGlu
ZyBidWlsZCBpZiBpdFwncyB0aGUgZmlyc3QgcmVxdWVzdCBpbiB0aGUgZ3JvdXAnLCBmdW5jdGlv
biAoZG9uZSkgewotICAgICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwor
ICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIHRoZSBidWlsZCByZXF1ZXN0IG9uIGEgYnVpbGRl
ciB3aXRob3V0IGEgcGVuZGluZyBidWlsZCBpZiBpdFwncyB0aGUgZmlyc3QgcmVxdWVzdCBpbiB0
aGUgZ3JvdXAnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKICAgICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIGRiLmNv
bm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTW9ja0Rh
dGEuYWRkTW9ja0RhdGEoZGIsIFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVu
ZGluZyddKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ3BlbmRpbmcnLCAncGVuZGluZycsICdw
ZW5kaW5nJywgJ3BlbmRpbmcnXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgICAgICBsZXQgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0
aFR3b0J1aWxkZXJzKCk7Ci0gICAgICAgICAgICAgICAgbGV0IGxvZ2dlciA9IG5ldyBNb2NrTG9n
Z2VyOwotICAgICAgICAgICAgICAgIGxldCBzbGF2ZUluZm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUn
LCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICAgICAgbGV0IHRyaWdnZXJhYmxl
ID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVz
dFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBsb2dn
ZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgICAgICBjb25zdCBzbGF2ZUluZm8gPSB7
bmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICAg
ICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5mbywgbG9nZ2VyKTsK
ICAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCk7Ci0g
ICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRo
b2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVp
bGRzJyk7CkBAIC0xNjIsNyArMTUyLDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUn
LCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9wZW5kaW5n
QnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNv
bHZlKFtdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgJy9qc29uL2J1aWxkZXJz
L3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwpAQCAtMTcxLDE0
ICsxNjEsMTQgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwg
Jy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9idWlsZHMvP3NlbGVjdD0tMSZzZWxl
Y3Q9LTInKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29s
dmUoe30pOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1
ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0p
LnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzLmxlbmd0aCwgNSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnUE9TVCcpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwgJy9idWlsZGVycy9zb21l
JTIwYnVpbGRlciUyMDIvZm9yY2UnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0uZGF0YSwgeyd3ayc6ICcxOTE2MjInLCAnb3MnOiAn
MTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnNzAwJ30pOwogICAgICAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2ZSgnT0snKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDcp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVd
Lm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzVdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRp
bmdCdWlsZHMnKTsKQEAgLTE4Nyw3ICsxNzcsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2Vy
YWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbNl0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL3Bl
bmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZd
LnJlc29sdmUoW01vY2tEYXRhLnBlbmRpbmdCdWlsZCh7YnVpbGRlcjogJ3NvbWUgYnVpbGRlciAy
JywgYnVpbGRSZXF1ZXN0SWQ6IDcwMH0pXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tS
ZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA5KTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS5tZXRob2QsICdHRVQnKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS51
cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxl
Y3Q9LTInKTsKQEAgLTE5Niw3ICsxODYsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJs
ZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbOF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL2J1aWxk
cy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbOF0ucmVzb2x2ZSh7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9t
aXNlOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFs
bCgpLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgbnVsbCk7
CkBAIC0yMDcsNyArMTk3LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5j
dGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksIG51bGwpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5t
b2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOwotICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0
aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJ
ZCg3MDApLnN0YXR1cygpLCAnc2NoZWR1bGVkJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyLycpOwpAQCAtMjE3LDI2ICsy
MDcsMjIgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXNV
cmwoKSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgbnVsbCk7Ci0g
ICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1
bGUgYSBidWlsZCByZXF1ZXN0IG9uIGEgZGlmZmVyZW50IGJ1aWxkZXIgdGhhbiB0aGUgb25lIHRo
ZSBmaXJzdCBidWlsZCByZXF1ZXN0IGlzIHBlbmRpbmcnLCBmdW5jdGlvbiAoZG9uZSkgewotICAg
ICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBpdCgnc2hv
dWxkIG5vdCBzY2hlZHVsZSBhIGJ1aWxkIHJlcXVlc3Qgb24gYSBkaWZmZXJlbnQgYnVpbGRlciB0
aGFuIHRoZSBvbmUgdGhlIGZpcnN0IGJ1aWxkIHJlcXVlc3QgaXMgcGVuZGluZycsICgpID0+IHsK
KyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICAg
ICAgbGV0IHN5bmNQcm9taXNlOwotICAgICAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwg
WydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pOwotICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRk
TW9ja0RhdGEoZGIsIFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZydd
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOwogICAgICAgICAgICAgICAgIGxldCBsb2dnZXIgPSBu
ZXcgTW9ja0xvZ2dlcjsKICAgICAgICAgICAgICAgICBsZXQgc2xhdmVJbmZvID0ge25hbWU6ICdz
eW5jLXNsYXZlJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwogICAgICAgICAgICAgICAgIGxldCB0
cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOwogICAgICAgICAg
ICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuc3luY09uY2UoKTsKLSAgICAgICAgICAg
ICAgICBzeW5jUHJvbWlzZS5jYXRjaChkb25lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
LnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKQEAg
LTI0NSw3ICsyMzEsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9u
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0u
dXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL3BlbmRpbmdCdWlsZHMnKTsK
ICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoW10pOwog
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWls
ZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CkBAIC0yNTQsNyArMjQwLDcgQEAg
ZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgJy9qc29uL2J1aWxk
ZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAg
ICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29sdmUoe30pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAg
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4g
ewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxl
bmd0aCwgNik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbNF0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVy
LTEvcGVuZGluZ0J1aWxkcycpOwpAQCAtMjYzLDcgKzI0OSw3IEBAIGRlc2NyaWJlKCdCdWlsZGJv
dFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRl
ciUyMDIvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbNV0ucmVzb2x2ZShbXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA4KTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS5tZXRob2QsICdHRVQnKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS51cmwsICcv
anNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTIn
KTsKQEAgLTI3Miw3ICsyNTgsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1
bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbN10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL2J1aWxkcy8/c2Vs
ZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbN10ucmVzb2x2ZSh7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNlOwot
ICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxl
bmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MDApLnN0YXR1cygpLCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgbnVsbCk7CkBAIC0y
ODMsNyArMjY5LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5z
dGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksIG51bGwpOwogICAgICAgICAgICAgICAg
IHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVz
dFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5hbWUpOwotICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDAp
LnN0YXR1cygpLCAnc2NoZWR1bGVkJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtp
dC5vcmcvYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvJyk7CkBAIC0yOTMsMjYgKzI3OSwyMiBAQCBk
ZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1VybCgpLCBudWxs
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
Mykuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCBudWxsKTsKLSAgICAgICAgICAg
ICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0aGUgc3RhdHVzIG9m
IGEgcGVuZGluZyBidWlsZCBhbmQgc2NoZWR1bGUgYSBuZXcgYnVpbGQgaWYgdGhlIHBlbmRpbmcg
YnVpbGQgaGFkIHN0YXJ0ZWQgcnVubmluZycsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgICAg
ICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGl0KCdzaG91bGQgdXBk
YXRlIHRoZSBzdGF0dXMgb2YgYSBwZW5kaW5nIGJ1aWxkIGFuZCBzY2hlZHVsZSBhIG5ldyBidWls
ZCBpZiB0aGUgcGVuZGluZyBidWlsZCBoYWQgc3RhcnRlZCBydW5uaW5nJywgKCkgPT4geworICAg
ICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBs
ZXQgc3luY1Byb21pc2U7Ci0gICAgICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ3Bl
bmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSk7Ci0gICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2Nr
RGF0YShkYiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pLnRo
ZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNvbmZp
ZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOwotICAgICAg
ICAgICAgICAgIGxldCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKLSAgICAgICAgICAgICAgICBs
ZXQgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZlJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9
OwotICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJh
YmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJ
bmZvLCBsb2dnZXIpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxk
ZXJzKCk7CisgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7Cisg
ICAgICAgICAgICAgICAgY29uc3Qgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZlJywgcGFz
c3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0g
bmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBN
b2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CiAgICAgICAgICAgICAgICAgc3luY1By
b21pc2UgPSB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOwotICAgICAgICAgICAgICAgIHN5bmNQcm9t
aXNlLmNhdGNoKGRvbmUpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCAnL2pzb24v
YnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOwpAQCAtMzIxLDcgKzMwMyw3
IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNvbi9i
dWlsZGVycy9zb21lJTIwYnVpbGRlciUyMDIvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZShbXSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5t
ZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1syXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMv
P3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKQEAgLTMzMCwxNCArMzEyLDE0IEBAIGRlc2NyaWJlKCdC
dWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lJTIw
YnVpbGRlciUyMDIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAg
ICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHt9KTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDUpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1l
dGhvZCwgJ1BPU1QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1s0XS51cmwsICcvYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvZm9yY2UnKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0u
ZGF0YSwgeyd3ayc6ICcxOTE2MjInLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVl
c3QtaWQnOiAnNzAyJ30pOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
NF0ucmVzb2x2ZSgnT0snKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53
YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnVybCwgJy9qc29u
L2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKQEAgLTM0Niw3ICszMjgs
NyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0udXJsLCAnL2pzb24v
YnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL3BlbmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAg
ICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLnJlc29sdmUoW10pOwogICAgICAgICAgICAg
ICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgOSk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10u
bWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbN10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRz
Lz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CkBAIC0zNTUsNyArMzM3LDcgQEAgZGVzY3JpYmUoJ0J1
aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzhdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBi
dWlsZGVyJTIwMi9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAg
ICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzhdLnJlc29sdmUoe30pOwogICAgICAgICAgICAgICAg
IHJldHVybiBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3Rh
dHVzVXJsKCksIG51bGwpOwpAQCAtMzY2LDcgKzM0OCw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRy
aWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCBu
dWxsKTsKICAgICAgICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dl
cmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dl
cmFibGVOYW1lKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8x
MjMnKTsKQEAgLTM3Niw1MCArMzU4LDQ2IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxl
JywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcwMikuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVy
cy9zb21lLWJ1aWxkZXItMS8nKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCBu
dWxsKTsKLSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25l
KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHVw
ZGF0ZSB0aGUgc3RhdHVzIG9mIGEgc2NoZWR1bGVkIGJ1aWxkIGlmIHRoZSBwZW5kaW5nIGJ1aWxk
IGhhZCBzdGFydGVkIHJ1bm5pbmcnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgbGV0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0
aGUgc3RhdHVzIG9mIGEgc2NoZWR1bGVkIGJ1aWxkIGlmIHRoZSBwZW5kaW5nIGJ1aWxkIGhhZCBz
dGFydGVkIHJ1bm5pbmcnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAg
IGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
TW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnc2NoZWR1bGVkJywgJ3BlbmRpbmcnLCAncGVuZGlu
ZycsICdwZW5kaW5nJ10pOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnc2NoZWR1bGVkJywgJ3Bl
bmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
ICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQg
Y29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsK
ICAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAg
ICAgICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFz
c3dvcmQnfTsKICAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RU
cmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEks
IHNsYXZlSW5mbywgbG9nZ2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdn
ZXJhYmxlLnN5bmNPbmNlKCk7Ci0gICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9u
ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21l
LWJ1aWxkZXItMS9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXS5yZXNvbHZlKFtNb2NrRGF0YS5wZW5kaW5nQnVpbGQoe2J1aWxkUmVxdWVz
dElkOiA3MDB9KV0pOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRG
b3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJsLCAnL2pzb24vYnVp
bGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CiAgICAg
ICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKHt9KTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5n
dGgsIDMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzJdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0x
L3BlbmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLnJlc29sdmUoW10pOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCAnL2pzb24v
YnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CiAg
ICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHtbLTFdOiBN
b2NrRGF0YS5ydW5uaW5nQnVpbGQoe2J1aWxkUmVxdWVzdElkOiA3MDB9KX0pOwogICAgICAgICAg
ICAgICAgIHJldHVybiBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ3NjaGVkdWxl
ZCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQo
NzAwKS5zdGF0dXNVcmwoKSwgbnVsbCk7CkBAIC00MzAsNyArNDA4LDcgQEAgZGVzY3JpYmUoJ0J1
aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVz
VXJsKCksIG51bGwpOwogICAgICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hG
b3JUcmlnZ2VyYWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMo
KS50cmlnZ2VyYWJsZU5hbWUpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAncnVubmluZycpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0
dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0x
L2J1aWxkcy8xMjQnKTsKQEAgLTQ0MCwyOSArNDE4LDI1IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRy
aWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzVXJsKCksIG51bGwpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRp
bmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMykuc3RhdHVzVXJsKCksIG51bGwpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0g
ICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCByZXF1ZXN0IG9uIGEgYnVpbGRlciB3
aXRob3V0IHBlbmRpbmcgYnVpbGRzIGlmIHRoZSByZXF1ZXN0IGJlbG9uZ3MgdG8gYSBuZXcgdGVz
dCBncm91cCcsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgICAgICBsZXQgZGIgPSBUZXN0U2Vy
dmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCByZXF1
ZXN0IG9uIGEgYnVpbGRlciB3aXRob3V0IHBlbmRpbmcgYnVpbGRzIGlmIHRoZSByZXF1ZXN0IGJl
bG9uZ3MgdG8gYSBuZXcgdGVzdCBncm91cCcsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRi
ID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICAgICAgbGV0IHN5bmNQcm9taXNlOwot
ICAgICAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFk
ZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGlu
ZyddKSwKLSAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3Jv
dXAoZGIsIFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKQotICAg
ICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFk
ZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGlu
ZyddKSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rlc3RHcm91cChk
YiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pCisgICAgICAg
ICAgICBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0
Y2goKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAg
IGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMo
KTsKLSAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7Ci0gICAgICAg
ICAgICAgICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAn
cGFzc3dvcmQnfTsKLSAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRi
b3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVB
UEksIHNsYXZlSW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dp
dGhUd29CdWlsZGVycygpOworICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2Nr
TG9nZ2VyOworICAgICAgICAgICAgICAgIGNvbnN0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1z
bGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAgICAgICBjb25zdCB0cmln
Z2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1v
dGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOwogICAgICAgICAgICAg
ICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuc3luY09uY2UoKTsKLSAgICAgICAgICAgICAg
ICBzeW5jUHJvbWlzZS5jYXRjaChkb25lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVy
bCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKQEAgLTQ3
MSw3ICs0NDUsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0udXJs
LCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL3BlbmRpbmdCdWlsZHMnKTsKICAg
ICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoW10pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAg
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4g
ewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxl
bmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVy
LTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CkBAIC00ODAsMTQgKzQ1NCwxNCBAQCBk
ZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCAnL2pzb24vYnVpbGRl
cnMvc29tZSUyMGJ1aWxkZXIlMjAyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAg
ICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7fSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVu
Z3RoLCA1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s0XS5tZXRob2QsICdQT1NUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbNF0udXJsLCAnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIw
Mi9mb3JjZScpOwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1s0XS5kYXRhLCB7J3drJzogJzE5MTYyMicsICdvcyc6ICcxMC4xMSAxNUEyODQn
LCAnYnVpbGQtcmVxdWVzdC1pZCc6ICc3MTAnfSk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1s0XS5yZXNvbHZlKCdPSycpOwogICAgICAgICAgICAgICAgIHJldHVybiBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNyk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ubWV0aG9kLCAnR0VU
Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
NV0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOwpA
QCAtNDk2LDcgKzQ3MCw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rp
b24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2
XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlciUyMDIvcGVuZGluZ0J1aWxkcycp
OwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0ucmVzb2x2ZShbTW9j
a0RhdGEucGVuZGluZ0J1aWxkKHtidWlsZGVyOiAnc29tZSBidWlsZGVyIDInLCBidWlsZFJlcXVl
c3RJZDogNzEwfSldKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLnVybCwgJy9qc29uL2J1
aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwpAQCAt
NTA1LDcgKzQ3OSw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24K
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s4XS51
cmwsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlciUyMDIvYnVpbGRzLz9zZWxlY3Q9LTEm
c2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s4XS5y
ZXNvbHZlKHt9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
MCkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksIG51bGwpOwpAQCAtNTI0LDcg
KzQ5OCw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVz
KCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MTMpLnN0YXR1c1VybCgpLCBudWxsKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5j
Q29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKLSAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0
dXMoKSwgJ2NvbXBsZXRlZCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3Jn
L2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8xMjMnKTsKQEAgLTU0MiwyOSArNTE2LDI1
IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMikuc3RhdHVzVXJsKCks
IG51bGwpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzVXJsKCksIG51bGwpOwotICAgICAg
ICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWls
ZCByZXF1ZXN0IG9uIHRoZSBzYW1lIHNjaGVkdWxlciB0aGUgZmlyc3QgcmVxdWVzdCBoYWQgcmFu
JywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKKyAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1aWxkIHJlcXVlc3Qgb24g
dGhlIHNhbWUgc2NoZWR1bGVyIHRoZSBmaXJzdCByZXF1ZXN0IGhhZCByYW4nLCAoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAg
IGxldCBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAg
ICAgICAgICBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydydW5uaW5nJywgJ3BlbmRpbmcnLCAn
cGVuZGluZycsICdwZW5kaW5nJ10pLAotICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRB
bm90aGVyTW9ja1Rlc3RHcm91cChkYiwgWydydW5uaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycs
ICdwZW5kaW5nJ10pCi0gICAgICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAg
ICAgICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsncnVubmluZycsICdwZW5kaW5nJywgJ3Bl
bmRpbmcnLCAncGVuZGluZyddKSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVy
TW9ja1Rlc3RHcm91cChkYiwgWydydW5uaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5k
aW5nJ10pCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1
cm4gTWFuaWZlc3QuZmV0Y2goKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdX
aXRoVHdvQnVpbGRlcnMoKTsKLSAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tM
b2dnZXI7Ci0gICAgICAgICAgICAgICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2
ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKLSAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFi
bGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIH0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tU
ZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOworICAgICAgICAgICAgICAgIGNvbnN0IGxv
Z2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgICAgIGNvbnN0IHNsYXZlSW5mbyA9
IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAgICAg
ICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywg
VGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIp
OwogICAgICAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuc3luY09uY2UoKTsK
LSAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZS5jYXRjaChkb25lKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1l
dGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzBdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdC
dWlsZHMnKTsKQEAgLTU3Myw3ICs1NDMsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJs
ZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMV0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL3BlbmRp
bmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJl
c29sdmUoW10pOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JS
ZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCAnL2pzb24vYnVpbGRl
cnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CkBAIC01ODIs
NyArNTUyLDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwg
Jy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9idWlsZHMvP3NlbGVjdD0tMSZzZWxl
Y3Q9LTInKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJlc29s
dmUoe1stMV06IE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCh7YnVpbGRlcjogJ3NvbWUgYnVpbGRlciAy
JywgYnVpbGRSZXF1ZXN0SWQ6IDcwMH0pfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tS
ZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA2KTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5tZXRob2QsICdQT1NUJyk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0u
dXJsLCAnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9mb3JjZScpOwpAQCAtNTkzLDcgKzU2
Myw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0uZGF0YSwg
eyd3ayc6ICcxOTI3MzYnLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQn
OiAnNzExJ30pOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0ucmVz
b2x2ZSgnT0snKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDgpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLnVybCwgJy9qc29uL2J1aWxk
ZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKQEAgLTYwMiw3ICs1NzIsNyBAQCBk
ZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10udXJsLCAnL2pzb24vYnVpbGRl
cnMvc29tZSUyMGJ1aWxkZXIlMjAyL3BlbmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLnJlc29sdmUoW01vY2tEYXRhLnBlbmRpbmdCdWlsZCh7
YnVpbGRlcjogJ3NvbWUgYnVpbGRlciAyJyxidWlsZFJlcXVlc3RJZDogNzAxfSldKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5n
dGgsIDEwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s4XS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1s4XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXIt
MS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKQEAgLTYxMSw3ICs1ODEsNyBAQCBkZXNj
cmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOV0udXJsLCAnL2pzb24vYnVpbGRlcnMv
c29tZSUyMGJ1aWxkZXIlMjAyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAg
ICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOV0ucmVzb2x2ZSh7Wy0xXTogTW9ja0Rh
dGEucnVubmluZ0J1aWxkKHtidWlsZGVyOiAnc29tZSBidWlsZGVyIDInLCBidWlsZFJlcXVlc3RJ
ZDogNzAwfSl9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
MCkuc3RhdHVzKCksICdydW5uaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCBudWxsKTsKQEAgLTYzMCw3ICs2
MDAsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygp
LCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzEzKS5zdGF0dXNVcmwoKSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0Nv
bmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7Ci0gICAgICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVz
KCksICdydW5uaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVp
bGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL2J1aWxkcy8xMjQnKTsKQEAgLTY0OCw1MyArNjE4LDQ5
IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMikuc3RhdHVzVXJsKCks
IG51bGwpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzVXJsKCksIG51bGwpOwotICAgICAg
ICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBmcm9tIG11
bHRpcGxlIHRlc3QgZ3JvdXBzIHJ1bm5pbmcgc2ltdWx0ZW5vdXNseScsIGZ1bmN0aW9uIChkb25l
KSB7Ci0gICAgICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAg
IGl0KCdzaG91bGQgcmVjb3ZlciBmcm9tIG11bHRpcGxlIHRlc3QgZ3JvdXBzIHJ1bm5pbmcgc2lt
dWx0ZW5vdXNseScsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOwogICAgICAgICAgICAgbGV0IHN5bmNQcm9taXNlOwotICAgICAgICAgICAgZGIu
Y29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLmFsbChbCi0gICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBb
J2NvbXBsZXRlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKSwKLSAgICAgICAg
ICAgICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIsIFsnY29tcGxl
dGVkJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pCi0gICAgICAgICAgICAgICAg
XSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIs
IFsnY29tcGxldGVkJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pLAorICAgICAg
ICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiLCBbJ2NvbXBsZXRl
ZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKQorICAgICAgICAgICAgXSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAg
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBsZXQgY29uZmln
ID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKLSAgICAg
ICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7Ci0gICAgICAgICAgICAgICAg
bGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQn
fTsKLSAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2Vy
YWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZl
SW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVC
dWlsZGVyKCk7CisgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7
CisgICAgICAgICAgICAgICAgY29uc3Qgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZlJywg
cGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxl
ID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CiAgICAgICAgICAgICAgICAgc3lu
Y1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOwotICAgICAgICAgICAgICAgIHN5bmNQ
cm9taXNlLmNhdGNoKGRvbmUpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJ
LndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCAnL2pz
b24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1
aWxkKHtidWlsZFJlcXVlc3RJZDogNzExfSldKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9j
a1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFd
LnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNl
bGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVz
b2x2ZSh7Wy0xXTogTW9ja0RhdGEucnVubmluZ0J1aWxkKHtidWlsZFJlcXVlc3RJZDogNzAwfSks
IFstMl06IE1vY2tEYXRhLmZpbmlzaGVkQnVpbGQoe2J1aWxkUmVxdWVzdElkOiA3MTB9KX0pOwog
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgMyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWls
ZGVyLTEvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMl0ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1aWxkKHtidWlsZFJlcXVlc3RJZDog
NzAxfSldKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgJy9qc29uL2J1aWxkZXJz
L3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7Wy0xXTogTW9ja0RhdGEu
cnVubmluZ0J1aWxkKHtidWlsZFJlcXVlc3RJZDogNzAwfSksIFstMl06IE1vY2tEYXRhLmZpbmlz
aGVkQnVpbGQoe2J1aWxkUmVxdWVzdElkOiA3MTB9KX0pOwogICAgICAgICAgICAgICAgIHJldHVy
biBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNV
cmwoKSwgbnVsbCk7CkBAIC03MTMsNyArNjc5LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dl
cmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzVXJsKCksIG51bGwp
OwogICAgICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJs
ZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJs
ZU5hbWUpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmFsbCgpLmxlbmd0aCwgOCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCAn
aHR0cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLzEy
NCcpOwpAQCAtNzMxLDU5ICs2OTcsNTMgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUn
LCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmlu
ZEJ5SWQoNzEyKS5zdGF0dXNVcmwoKSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEzKS5zdGF0
dXNVcmwoKSwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSku
Y2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQo
J3Nob3VsZCByZWNvdmVyIGZyb20gbWlzc2luZyBmYWlsZWQgYnVpbGQgcmVxdWVzdCcsIGZ1bmN0
aW9uIChkb25lKSB7Ci0gICAgICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7
CisgICAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBmcm9tIG1pc3NpbmcgZmFpbGVkIGJ1aWxkIHJl
cXVlc3QnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJh
c2UoKTsKICAgICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIGRiLmNvbm5l
Y3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5h
bGwoWwotICAgICAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydmYWls
ZWQnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSksCi0gICAgICAgICAgICAgICAg
XSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVy
biBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydmYWlsZWQnLCAncGVuZGluZycsICdwZW5kaW5n
JywgJ3BlbmRpbmcnXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlm
ZXN0LmZldGNoKCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgICAgICBsZXQgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmds
ZUJ1aWxkZXIoKTsKLSAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7
Ci0gICAgICAgICAgICAgICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBh
c3N3b3JkOiAncGFzc3dvcmQnfTsKLSAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBu
ZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1v
Y2tSZW1vdGVBUEksIHNsYXZlSW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CisgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2Vy
ID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAgICAgICAgICAgY29uc3Qgc2xhdmVJbmZvID0ge25h
bWU6ICdzeW5jLXNsYXZlJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgICAg
IGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CiAg
ICAgICAgICAgICAgICAgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOwotICAg
ICAgICAgICAgICAgIHN5bmNQcm9taXNlLmNhdGNoKGRvbmUpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9k
LCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxk
cycpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZShb
XSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3Qo
KTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNvbi9idWlsZGVycy9zb21l
LWJ1aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAg
ICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoe30pOwogICAgICAgICAgICAgICAg
IHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0
aG9kLCAnUE9TVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzJdLnVybCwgJy9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9mb3JjZScpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5k
YXRhLCB7J3drJzogJzE5MjczNicsICdvcyc6ICcxMC4xMSAxNUEyODQnLCAnYnVpbGQtcmVxdWVz
dC1pZCc6ICc3MDEnfSk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sy
XS5yZXNvbHZlKCdPSycpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndh
aXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCAnL2pzb24v
YnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAgICAgICAg
IE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1aWxk
KHtidWlsZFJlcXVlc3RJZDogNzAxfSldKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDUpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1ldGhvZCwgJ0dFVCcpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVy
bCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVj
dD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2
ZSh7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNlOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0
YXR1cygpLCAnZmFpbGVkJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVx
dWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCBudWxsKTsKQEAgLTc5NCw3ICs3NTQsNyBA
QCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAncGVu
ZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAzKS5zdGF0dXNVcmwoKSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEJ1aWxk
UmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dp
dGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdm
YWlsZWQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMCkuc3RhdHVzVXJsKCksIG51bGwpOwpAQCAtODA0LDExMyArNzY0LDEwMiBAQCBkZXNj
cmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1VybCgpLCBudWxsKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMyku
c3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCBudWxsKTsKLSAgICAgICAgICAgICAg
ICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0aGUgc3RhdHVzIG9mIGEg
c3VwcG9zZWRseSBzY2hlZHVsZWQgYnVpbGQgdGhhdCB3ZW50IG1pc3NpbmcnLCBmdW5jdGlvbiAo
ZG9uZSkgewotICAgICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAg
ICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0aGUgc3RhdHVzIG9mIGEgc3VwcG9zZWRseSBzY2hlZHVs
ZWQgYnVpbGQgdGhhdCB3ZW50IG1pc3NpbmcnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsK
LSAgICAgICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnc2NoZWR1bGVkJywgJ3BlbmRp
bmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnc2No
ZWR1bGVkJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IE1vY2tEYXRh
Lm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7Ci0gICAgICAgICAgICAgICAg
bGV0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOwotICAgICAgICAgICAgICAgIGxldCBzbGF2ZUlu
Zm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAg
ICAgICAgICAgbGV0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmln
LCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dl
cik7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBj
b25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAg
ICAgICAgIGNvbnN0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAn
cGFzc3dvcmQnfTsKKyAgICAgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWls
ZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90
ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOwogICAgICAgICAgICAgICAgIHN5bmNQcm9taXNlID0g
dHJpZ2dlcmFibGUuc3luY09uY2UoKTsKLSAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZS5jYXRj
aChkb25lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgJy9qc29uL2J1aWxkZXJz
L3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoW10pOwogICAgICAgICAgICAgICAgIHJldHVybiBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VU
Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MV0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEm
c2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5y
ZXNvbHZlKHt9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwgJy9qc29uL2J1aWxk
ZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoW10pOwogICAgICAgICAgICAgICAgIHJldHVy
biBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAn
R0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbM10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9
LTEmc2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sz
XS5yZXNvbHZlKHt9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7Ci0gICAg
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4g
ewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3Ro
LCA0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMCkuc3RhdHVzKCksICdzY2hlZHVsZWQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1
cygpLCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVl
c3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RT
eW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKLSAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5z
dGF0dXMoKSwgJ2ZhaWxlZCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdwZW5k
aW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJ
ZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAg
ICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
Ci0gICAgICAgIGl0KCdzaG91bGQgc2NoZWR1bGUgYSBidWlsZCByZXF1ZXN0IG9mIGFuIHVzZXIg
Y3JlYXRlZCB0ZXN0IGdyb3VwIGJlZm9yZSBvbmVzIGNyZWF0ZWQgYnkgYXV0b21hdGljIGNoYW5n
ZSBkZXRlY3Rpb24nLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgbGV0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQg
cmVxdWVzdCBvZiBhbiB1c2VyIGNyZWF0ZWQgdGVzdCBncm91cCBiZWZvcmUgb25lcyBjcmVhdGVk
IGJ5IGF1dG9tYXRpYyBjaGFuZ2UgZGV0ZWN0aW9uJywgKCkgPT4geworICAgICAgICAgICAgY29u
c3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBsZXQgc3luY1Byb21p
c2U7Ci0gICAgICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICAgICAgTW9ja0Rh
dGEuYWRkTW9ja0RhdGEoZGIsIFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVu
ZGluZyddKSwKLSAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0
R3JvdXAoZGIsIFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddLCAn
cm5pd2EnKSwKLSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAg
ICBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGlu
ZycsICdwZW5kaW5nJ10pLAorICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3RoZXJNb2Nr
VGVzdEdyb3VwKGRiLCBbJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcn
XSwgJ3JuaXdhJyksCisgICAgICAgICAgICBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmND
b25maWdXaXRoU2luZ2xlQnVpbGRlcigpOwotICAgICAgICAgICAgICAgIGxldCBsb2dnZXIgPSBu
ZXcgTW9ja0xvZ2dlcjsKLSAgICAgICAgICAgICAgICBsZXQgc2xhdmVJbmZvID0ge25hbWU6ICdz
eW5jLXNsYXZlJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgICAgIGxldCB0
cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOworICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0Rh
dGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgICAgICBjb25zdCBz
bGF2ZUluZm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Cisg
ICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJs
ZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5m
bywgbG9nZ2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxlLnN5
bmNPbmNlKCk7Ci0gICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAg
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVu
Z3RoLCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXIt
MS9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1swXS5yZXNvbHZlKFtdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53
YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgJy9qc29u
L2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwog
ICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7fSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMu
bGVuZ3RoLCAzKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1syXS5tZXRob2QsICdQT1NUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCAnL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0x
L2ZvcmNlJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzJdLmRhdGEsIHsnd2snOiAnMTkxNjIyJywgJ29zJzogJzEwLjExIDE1QTI4NCcs
ICdidWlsZC1yZXF1ZXN0LWlkJzogJzcxMCd9KTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoJ09LJyk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwot
ICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7
CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgndXBkYXRlVHJpZ2dlcmFibGVzJywgZnVuY3Rpb24g
KCkgewotICAgICAgICBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0KCk7Ci0KLSAgICAgICAg
aXQoJ3Nob3VsZCB1cGRhdGUgYXZhaWxhYmxlIHRyaWdnZXJhYmxlcycsIGZ1bmN0aW9uIChkb25l
KSB7Ci0gICAgICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAg
ICAgICBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYikudGhlbigoKSA9PiB7CisgICAgZGVzY3JpYmUo
J3VwZGF0ZVRyaWdnZXJhYmxlcycsICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCB1cGRhdGUg
YXZhaWxhYmxlIHRyaWdnZXJhYmxlcycsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0g
VGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1v
Y2tEYXRhKGRiKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3Qu
ZmV0Y2goKTsKICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIHJl
dHVybiBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywgJ3Rlc3QnKTsK
QEAgLTk0OSw5ICs4OTgsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0
aW9uCiAgICAgICAgICAgICAgICAgbGV0IHBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5SWQoTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKSk7CiAgICAgICAgICAgICAgICAgbGV0IHRyaWdnZXJhYmxl
ID0gVHJpZ2dlcmFibGUuZmluZEJ5VGVzdENvbmZpZ3VyYXRpb24odGVzdCwgcGxhdGZvcm0pOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0cmlnZ2VyYWJsZS5uYW1lKCksICdidWlsZC13
ZWJraXQnKTsKLQotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNo
KGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304465</attachid>
            <date>2017-03-14 19:38:58 -0700</date>
            <delta_ts>2017-03-14 19:48:08 -0700</delta_ts>
            <desc>Cleaned up some more</desc>
            <filename>bug-169648-20170314193857.patch</filename>
            <type>text/plain</type>
            <size>190993</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzOTY1KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDE3LTAzLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1ha2Ugc2VydmVyIHRlc3RzIHJldHVybiBhIHByb21pc2UgaW5zdGVhZCBvZiBt
YW51YWxseSBjYWxsaW5nIGRvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgdGhlIGV4aXN0aW5nIHNlcnZlciB0ZXN0cyBhbHdheXMgcmV1dHJu
IGEgcHJvbWlzZSBpbnN0ZWFkIG9mIG1hbnVhbGx5IGNhbGxpbmcgImRvbmUiIGNhbGxiYWNrLgor
ICAgICAgICBUaGUgcHJvbWlzZSB0ZXN0cyBhcmUgYSBsb3QgbW9yZSBzdGFibGUgYW5kIGxlc3Mg
ZXJyb3IgcHJvbmUuCisKKyAgICAgICAgQWxzbyB1c2UgYXJyb3cgZnVuY3Rpb25zIGV2ZXJ5d2hl
cmUgYW5kIHVzZSBwcmVwYXJlU2VydmVyVGVzdCwgcmVuYW1lZCBmcm9tIGNvbm5lY3RUb0RhdGFi
YXNlSW5FdmVyeVRlc3QsCisgICAgICAgIGluIG1vcmUgdGVzdHMgaW5zdGVhZCBvZiBtYW51YWxs
eSBjb25uZWN0aW5nIHRvIGRhdGFiYXNlIGluIGV2ZXJ5IHRlc3QsIGFuZCByZXNldCB2MyBtb2Rl
bHMuCisKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvYWRtaW4tcGxhdGZvcm1zLXRlc3RzLmpzOgor
ICAgICAgICAqIHNlcnZlci10ZXN0cy9hZG1pbi1yZXByb2Nlc3MtcmVwb3J0LXRlc3RzLmpzOgor
ICAgICAgICAqIHNlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanM6CisgICAg
ICAgICogc2VydmVyLXRlc3RzL2FwaS1tYW5pZmVzdC5qczoKKyAgICAgICAgKiBzZXJ2ZXItdGVz
dHMvYXBpLW1lYXN1cmVtZW50LXNldC10ZXN0cy5qczoKKyAgICAgICAgKC5wb3N0UmVwb3J0cyk6
IERlbGV0ZWQuIE5vdCB1c2VkIGluIGFueSB0ZXN0LgorICAgICAgICAqIHNlcnZlci10ZXN0cy9h
cGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1y
ZXBvcnQtdGVzdHMuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS11cGRhdGUtdHJpZ2dl
cmFibGUuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwYXRlLXJ1
bi1zdGF0dXMuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9jb21tb24tb3Bl
cmF0aW9ucy5qczoKKyAgICAgICAgKHByZXBhcmVTZXJ2ZXJUZXN0KTogUmVuYW1lZCBmcm9tIGNv
bm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3QuIEluY3JlYXNlIHRoZSB0aW1lb3V0IGFuZCByZXNl
dCB2MyBtb2RlbHMuCisgICAgICAgICogc2VydmVyLXRlc3RzL3Rvb2xzLWJ1aWxkYm90LXRyaWdn
ZXJhYmxlLXRlc3RzLmpzOgorCiAyMDE3LTAzLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbmFtZSBSb290U2V0IHRvIENvbW1pdFNldApJbmRleDogV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hZG1pbi1wbGF0Zm9ybXMtdGVzdHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9h
ZG1pbi1wbGF0Zm9ybXMtdGVzdHMuanMJKHJldmlzaW9uIDIxMzk2NSkKKysrIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYWRtaW4tcGxhdGZvcm1zLXRlc3RzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDEzICszLDExIEBACiBjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3Nl
cnQnKTsKIAogY29uc3QgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3Rlc3Qtc2Vy
dmVyLmpzJyk7Ci1jb25zdCBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0ID0gcmVxdWlyZSgn
Li9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5jb25uZWN0VG9EYXRhYmFzZUluRXZl
cnlUZXN0OworY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9j
b21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwogY29uc3Qgc3VibWl0UmVw
b3J0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5zdWJtaXRS
ZXBvcnQ7CiAKIGRlc2NyaWJlKCIvYWRtaW4vcGxhdGZvcm1zIiwgZnVuY3Rpb24gKCkgewotICAg
IHRoaXMudGltZW91dCgxMDAwKTsKLSAgICBUZXN0U2VydmVyLmluamVjdCgpOwotICAgIGNvbm5l
Y3RUb0RhdGFiYXNlSW5FdmVyeVRlc3QoKTsKKyAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzKTsK
IAogICAgIGZ1bmN0aW9uIHJlcG9ydHNGb3JEaWZmZXJlbnRQbGF0Zm9ybXMoKQogICAgIHsKQEAg
LTQwLDM3ICszOCwzNiBAQCBkZXNjcmliZSgiL2FkbWluL3BsYXRmb3JtcyIsIGZ1bmN0aW9uICgp
CiAgICAgICAgICAgICB9XTsKICAgICB9IAogCi0gICAgaXQoInNob3VsZCBkZWxldGUgdGhlIHBs
YXRmb3JtIHRoYXQgZ290IG1lcmdlZCBpbnRvIGFub3RoZXIgb25lIiwgZnVuY3Rpb24gKGRvbmUp
IHsKKyAgICBpdCgic2hvdWxkIGRlbGV0ZSB0aGUgcGxhdGZvcm0gdGhhdCBnb3QgbWVyZ2VkIGlu
dG8gYW5vdGhlciBvbmUiLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5k
YXRhYmFzZSgpOwotICAgICAgICBsZXQgb2xkUGxhdGZvcm1zOyAgICAgICAgCi0gICAgICAgIHN1
Ym1pdFJlcG9ydChyZXBvcnRzRm9yRGlmZmVyZW50UGxhdGZvcm1zKCkpLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICBsZXQgb2xkUGxhdGZvcm1zOworICAgICAgICByZXR1cm4gc3VibWl0UmVw
b3J0KHJlcG9ydHNGb3JEaWZmZXJlbnRQbGF0Zm9ybXMoKSkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCdwbGF0Zm9ybXMnLCAnbmFtZScpOwotICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChwbGF0Zm9ybXMpIHsKKyAgICAgICAgfSkudGhlbigocGxhdGZvcm1z
KSA9PiB7CiAgICAgICAgICAgICBvbGRQbGF0Zm9ybXMgPSBwbGF0Zm9ybXM7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwob2xkUGxhdGZvcm1zLmxlbmd0aCwgMyk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwob2xkUGxhdGZvcm1zWzBdWyduYW1lJ10sICdNYXZlcmlja3MnKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChvbGRQbGF0Zm9ybXNbMV1bJ25hbWUnXSwgJ01vdW50YWluIExpb24n
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvbGRQbGF0Zm9ybXNbMl1bJ25hbWUnXSwgJ1Ry
dW5rIE1vdW50YWluIExpb24nKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkucG9zdEZvcm1VcmxlbmNvZGVkRGF0YSgnL2FkbWluL3BsYXRmb3Jtcy5waHAnLAogICAg
ICAgICAgICAgICAgIHsnYWN0aW9uJzogJ21lcmdlJywgJ2lkJzogb2xkUGxhdGZvcm1zWzFdWydp
ZCddLCAnZGVzdGluYXRpb24nOiBvbGRQbGF0Zm9ybXNbMl1bJ2lkJ119KTsKLSAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
cmV0dXJuIGRiLnNlbGVjdEFsbCgncGxhdGZvcm1zJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKG5ld1BsYXRmb3JtcykgeworICAgICAgICB9KS50aGVuKChuZXdQbGF0Zm9ybXMpID0+IHsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChuZXdQbGF0Zm9ybXMubGVuZ3RoLCAyKTsKICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwobmV3UGxhdGZvcm1zWzBdLCBvbGRQbGF0Zm9ybXNbMF0p
OwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChuZXdQbGF0Zm9ybXNbMV0sIG9sZFBsYXRm
b3Jtc1syXSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOwor
ICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgbW92ZSB0ZXN0IHJ1bnMgZnJv
bSB0aGUgbWVyZ2VkIHBsYXRmb3JtIHRvIHRoZSBkZXN0aW5hdGlvbiBwbGF0Zm9ybSIsIGZ1bmN0
aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBtb3ZlIHRlc3QgcnVucyBmcm9tIHRoZSBtZXJn
ZWQgcGxhdGZvcm0gdG8gdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIiwgKCkgPT4gewogICAgICAg
ICBsZXQgb2xkVGVzdFJ1bnM7CiAgICAgICAgIGNvbnN0IHF1ZXJ5Rm9yUnVucyA9ICdTRUxFQ1Qg
KiBGUk9NIHRlc3RfcnVucywgdGVzdF9jb25maWd1cmF0aW9ucywgcGxhdGZvcm1zIFdIRVJFIHJ1
bl9jb25maWcgPSBjb25maWdfaWQgQU5EIGNvbmZpZ19wbGF0Zm9ybSA9IHBsYXRmb3JtX2lkIE9S
REVSIGJ5IHJ1bl9tZWFuX2NhY2hlJzsKICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7Ci0gICAgICAgIHN1Ym1pdFJlcG9ydChyZXBvcnRzRm9yRGlmZmVyZW50UGxhdGZv
cm1zKCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gc3VibWl0UmVwb3J0KHJl
cG9ydHNGb3JEaWZmZXJlbnRQbGF0Zm9ybXMoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gZGIucXVlcnkocXVlcnlGb3JSdW5zKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgb2xk
VGVzdFJ1bnMgPSByZXN1bHQucm93czsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvbGRUZXN0
UnVucy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9sZFRlc3RSdW5zWzBd
WydwbGF0Zm9ybV9uYW1lJ10sICdNYXZlcmlja3MnKTsKQEAgLTgxLDEyICs3OCwxMiBAQCBkZXNj
cmliZSgiL2FkbWluL3BsYXRmb3JtcyIsIGZ1bmN0aW9uICgpCiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwob2xkVGVzdFJ1bnNbMl1bJ3J1bl9zdW1fY2FjaGUnXSwgMTgpOwogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKG9sZFRlc3RSdW5zWzNdWydwbGF0Zm9ybV9uYW1lJ10sICdUcnVuayBNb3Vu
dGFpbiBMaW9uJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwob2xkVGVzdFJ1bnNbM11bJ3J1
bl9zdW1fY2FjaGUnXSwgMjQpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0Rm9ybVVybGVuY29kZWREYXRhKCcvYWRtaW4vcGxhdGZvcm1zLnBocCcsCiAgICAg
ICAgICAgICAgICAgeydhY3Rpb24nOiAnbWVyZ2UnLCAnaWQnOiBvbGRUZXN0UnVuc1sxXVsncGxh
dGZvcm1faWQnXSwgJ2Rlc3RpbmF0aW9uJzogb2xkVGVzdFJ1bnNbM11bJ3BsYXRmb3JtX2lkJ119
KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4g
ewogICAgICAgICAgICAgcmV0dXJuIGRiLnF1ZXJ5KHF1ZXJ5Rm9yUnVucyk7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsK
ICAgICAgICAgICAgIGNvbnN0IG5ld1Rlc3RSdW5zID0gcmVzdWx0LnJvd3M7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwobmV3VGVzdFJ1bnMubGVuZ3RoLCA0KTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChuZXdUZXN0UnVuc1swXVsncnVuX2lkJ10sIG9sZFRlc3RSdW5zWzBdWydydW5faWQn
XSk7CkBAIC0xMDIsMjAgKzk5LDIwIEBAIGRlc2NyaWJlKCIvYWRtaW4vcGxhdGZvcm1zIiwgZnVu
Y3Rpb24gKCkKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChuZXdUZXN0UnVuc1szXVsncGxhdGZv
cm1fbmFtZSddLCAnVHJ1bmsgTW91bnRhaW4gTGlvbicpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKG5ld1Rlc3RSdW5zWzNdWydydW5fc3VtX2NhY2hlJ10sIDI0KTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChuZXdUZXN0UnVuc1sxXVsncnVuX2NvbmZpZyddLCBuZXdUZXN0UnVuc1szXVsn
cnVuX2NvbmZpZyddKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9u
ZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBtb3ZlIHRlc3QgY29u
ZmlndXJhdGlvbnMgZnJvbSB0aGUgbWVyZ2VkIHBsYXRmb3JtIHRvIHRoZSBkZXN0aW5hdGlvbiBw
bGF0Zm9ybSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBtb3ZlIHRlc3QgY29u
ZmlndXJhdGlvbnMgZnJvbSB0aGUgbWVyZ2VkIHBsYXRmb3JtIHRvIHRoZSBkZXN0aW5hdGlvbiBw
bGF0Zm9ybSIsICgpID0+IHsKICAgICAgICAgbGV0IG9sZENvbmZpZ3M7CiAgICAgICAgIGNvbnN0
IHJlcG9ydHMgPSByZXBvcnRzRm9yRGlmZmVyZW50UGxhdGZvcm1zKCk7CiAgICAgICAgIHJlcG9y
dHNbMF1bJ3Rlc3RzJ10gPSB7InRlc3QiOiB7ICJtZXRyaWNzIjogeyJGcmFtZVJhdGUiOiB7ICJi
YXNlbGluZSI6IFtbMSwgMSwgMV0sIFsxLCAxLCAxXV0gfSB9IH0gfTsKICAgICAgICAgY29uc3Qg
cXVlcnlGb3JDb25maWcgPSAnU0VMRUNUICogZnJvbSB0ZXN0X2NvbmZpZ3VyYXRpb25zLCBwbGF0
Zm9ybXMsIHRlc3RfbWV0cmljcycKICAgICAgICAgICAgICsgJyB3aGVyZSBjb25maWdfcGxhdGZv
cm0gPSBwbGF0Zm9ybV9pZCBhbmQgY29uZmlnX21ldHJpYyA9IG1ldHJpY19pZCBhbmQgcGxhdGZv
cm1fbmFtZSBpbiAoJDEsICQyKSBvcmRlciBieSBjb25maWdfaWQnOwogICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgc3VibWl0UmVwb3J0KHJlcG9ydHMp
LnRoZW4oZnVuY3Rpb24gKCkgeworCisgICAgICAgIHJldHVybiBzdWJtaXRSZXBvcnQocmVwb3J0
cykudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gZGIucXVlcnkocXVlcnlGb3JDb25m
aWcsIFtyZXBvcnRzWzBdWydwbGF0Zm9ybSddLCByZXBvcnRzWzJdWydwbGF0Zm9ybSddXSk7Ci0g
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1
bHQpID0+IHsKICAgICAgICAgICAgIG9sZENvbmZpZ3MgPSByZXN1bHQucm93czsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChvbGRDb25maWdzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwob2xkQ29uZmlnc1swXVsncGxhdGZvcm1fbmFtZSddLCByZXBvcnRzWzBdWydwbGF0
Zm9ybSddKTsKQEAgLTEyNCwxMiArMTIxLDEyIEBAIGRlc2NyaWJlKCIvYWRtaW4vcGxhdGZvcm1z
IiwgZnVuY3Rpb24gKCkKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvbGRDb25maWdzWzFdWydw
bGF0Zm9ybV9uYW1lJ10sIHJlcG9ydHNbMl1bJ3BsYXRmb3JtJ10pOwogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKG9sZENvbmZpZ3NbMV1bJ21ldHJpY19uYW1lJ10sICdGcmFtZVJhdGUnKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChvbGRDb25maWdzWzFdWydjb25maWdfdHlwZSddLCAnY3Vy
cmVudCcpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0Rm9y
bVVybGVuY29kZWREYXRhKCcvYWRtaW4vcGxhdGZvcm1zLnBocCcsCiAgICAgICAgICAgICAgICAg
eydhY3Rpb24nOiAnbWVyZ2UnLCAnaWQnOiBvbGRDb25maWdzWzBdWydwbGF0Zm9ybV9pZCddLCAn
ZGVzdGluYXRpb24nOiBvbGRDb25maWdzWzFdWydwbGF0Zm9ybV9pZCddfSk7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBkYi5xdWVyeShxdWVyeUZvckNvbmZpZywgW3JlcG9ydHNbMF1bJ3BsYXRmb3JtJ10s
IHJlcG9ydHNbMl1bJ3BsYXRmb3JtJ11dKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVz
dWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29uc3Qg
bmV3Q29uZmlncyA9IHJlc3VsdC5yb3dzOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG5ld0Nv
bmZpZ3MubGVuZ3RoLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChuZXdDb25maWdzWzBd
WydwbGF0Zm9ybV9uYW1lJ10sIHJlcG9ydHNbMl1bJ3BsYXRmb3JtJ10pOwpAQCAtMTM4LDggKzEz
NSw3IEBAIGRlc2NyaWJlKCIvYWRtaW4vcGxhdGZvcm1zIiwgZnVuY3Rpb24gKCkKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChuZXdDb25maWdzWzFdWydwbGF0Zm9ybV9uYW1lJ10sIHJlcG9ydHNb
Ml1bJ3BsYXRmb3JtJ10pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG5ld0NvbmZpZ3NbMV1b
J21ldHJpY19uYW1lJ10sICdGcmFtZVJhdGUnKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChu
ZXdDb25maWdzWzFdWydjb25maWdfdHlwZSddLCAnY3VycmVudCcpOwotICAgICAgICAgICAgZG9u
ZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKIH0p
OwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hZG1pbi1yZXBy
b2Nlc3MtcmVwb3J0LXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9zZXJ2ZXItdGVzdHMvYWRtaW4tcmVwcm9jZXNzLXJlcG9ydC10ZXN0cy5qcwkocmV2aXNp
b24gMjEzOTY1KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hZG1p
bi1yZXByb2Nlc3MtcmVwb3J0LXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDEyICs0LDEw
IEBAIGNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOwogCiBjb25zdCBUZXN0U2VydmVy
ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKIGNvbnN0IGFkZEJ1aWxk
ZXJGb3JSZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycp
LmFkZEJ1aWxkZXJGb3JSZXBvcnQ7Ci1jb25zdCBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0
ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5jb25uZWN0VG9E
YXRhYmFzZUluRXZlcnlUZXN0OworY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwogCiBk
ZXNjcmliZSgiL2FkbWluL3JlcHJvY2Vzcy1yZXBvcnQiLCBmdW5jdGlvbiAoKSB7Ci0gICAgdGhp
cy50aW1lb3V0KDEwMDApOwotICAgIFRlc3RTZXJ2ZXIuaW5qZWN0KCk7Ci0gICAgY29ubmVjdFRv
RGF0YWJhc2VJbkV2ZXJ5VGVzdCgpOworICAgIHByZXBhcmVTZXJ2ZXJUZXN0KHRoaXMpOwogCiAg
ICAgY29uc3Qgc2ltcGxlUmVwb3J0ID0gW3sKICAgICAgICAgImJ1aWxkTnVtYmVyIjogIjE5ODYi
LApAQCAtNDMsMzQgKzQxLDMzIEBAIGRlc2NyaWJlKCIvYWRtaW4vcmVwcm9jZXNzLXJlcG9ydCIs
IGZ1bmMKICAgICAgICAgICAgIH0KICAgICAgICAgfV07CiAKLSAgICBpdCgic2hvdWxkIHN0aWxs
IGNyZWF0ZSBuZXcgcmVwb3NpdG9yeSB3aGVuIHJlcG9zaXRvcnkgb3duZXJzaGlwcyBhcmUgZGlm
ZmVyZW50IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIHN0aWxsIGNyZWF0ZSBu
ZXcgcmVwb3NpdG9yeSB3aGVuIHJlcG9zaXRvcnkgb3duZXJzaGlwcyBhcmUgZGlmZmVyZW50Iiwg
KCkgPT4gewogICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAg
IGFkZEJ1aWxkZXJGb3JSZXBvcnQoc2ltcGxlUmVwb3J0V2l0aFJldmlzaW9uc1swXSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHNpbXBsZVJl
cG9ydFdpdGhSZXZpc2lvbnNbMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIGRi
Lmluc2VydCgncmVwb3NpdG9yaWVzJywgeyduYW1lJzogJ1dlYktpdCcsICdvd25lcic6IDF9KTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkv
cmVwb3J0LycsIHNpbXBsZVJlcG9ydFdpdGhSZXZpc2lvbnMpOwotICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAg
ICAgICByZXR1cm4gZGIuc2VsZWN0Um93cygncmVwb3NpdG9yaWVzJywgeyduYW1lJzogJ1dlYktp
dCd9KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVwb3NpdG9yaWVzKSB7CisgICAgICAg
IH0pLnRoZW4oKHJlcG9zaXRvcmllcykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cG9zaXRvcmllcy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgY29uc3Qgd2Via2l0UmVwc2l0b3J5
SWQgPSByZXBvc2l0b3JpZXNbMF0ub3duZXIgPT0gMSA/IHJlcG9zaXRvcmllc1sxXS5pZCA6IHJl
cG9zaXRvcmllc1swXS5pZDsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RSb3dzKCdjb21t
aXRzJywgeydyZXZpc2lvbic6ICcyMTMyMTQnLCAncmVwb3NpdG9yeSc6IHdlYmtpdFJlcHNpdG9y
eUlkfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGFzc2VydChyZXN1bHQubGVuZ3RoLCAxKTsK
LSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0p
OwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBhZGQgYnVpbGQiLCBmdW5jdGlvbiAoZG9uZSkg
eworICAgIGl0KCJzaG91bGQgYWRkIGJ1aWxkIiwgKCkgPT4gewogICAgICAgICBsZXQgZGIgPSBU
ZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgIGxldCByZXBvcnRJZDsKLSAgICAgICAgYWRk
QnVpbGRlckZvclJlcG9ydChzaW1wbGVSZXBvcnRbMF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChzaW1wbGVSZXBvcnRbMF0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04o
Jy9hcGkvcmVwb3J0LycsIHNpbXBsZVJlcG9ydCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCdidWlsZHMnKSwgZGIuc2VsZWN0QWxsKCdy
ZXBvcnRzJyldKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAg
IH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29uc3QgYnVpbGRzID0gcmVzdWx0
WzBdOwogICAgICAgICAgICAgY29uc3QgcmVwb3J0cyA9IHJlc3VsdFsxXTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChidWlsZHMubGVuZ3RoLCAxKTsKQEAgLTc5LDM3ICs3NiwzNiBAQCBkZXNj
cmliZSgiL2FkbWluL3JlcHJvY2Vzcy1yZXBvcnQiLCBmdW5jCiAgICAgICAgICAgICByZXBvcnRJ
ZCA9IHJlcG9ydHNbMF1bJ2lkJ107CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3J0c1sw
XVsnYnVpbGRfbnVtYmVyJ10sIDE5ODYpOwogICAgICAgICAgICAgcmV0dXJuIGRiLnF1ZXJ5KCdV
UERBVEUgcmVwb3J0cyBTRVQgcmVwb3J0X2J1aWxkID0gTlVMTDsgREVMRVRFIEZST00gYnVpbGRz
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ2J1aWxkcycpOwotICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChidWlsZHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVpbGRzKSA9PiB7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRzLmxlbmd0aCwgMCk7CiAgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cyhgL2FkbWlu
L3JlcHJvY2Vzcy1yZXBvcnQ/cmVwb3J0PSR7cmVwb3J0SWR9YCk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biBkYi5zZWxlY3RBbGwoJ2J1aWxkcycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChidWls
ZHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVpbGRzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoYnVpbGRzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRz
WzBdWydudW1iZXInXSwgMTk4Nik7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNh
dGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgbm90IGR1
cGxpY2F0ZSB0aGUgcmVwcm9jZXNzZWQgcmVwb3J0IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBp
dCgic2hvdWxkIG5vdCBkdXBsaWNhdGUgdGhlIHJlcHJvY2Vzc2VkIHJlcG9ydCIsICgpID0+IHsK
ICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICBsZXQgb3Jp
Z2luYWxSZXByb3Q7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQoc2ltcGxlUmVwb3J0WzBd
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQo
c2ltcGxlUmVwb3J0WzBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBzaW1wbGVSZXBvcnQpOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMn
XSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCdyZXBvcnRzJyk7Ci0g
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcG9ydHMpIHsKKyAgICAgICAgfSkudGhlbigocmVw
b3J0cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9ydHMubGVuZ3RoLCAxKTsK
ICAgICAgICAgICAgIG9yaWdpbmFsUmVwcm90ID0gcmVwb3J0c1swXTsKICAgICAgICAgICAgIHJl
dHVybiBkYi5xdWVyeSgnVVBEQVRFIHJlcG9ydHMgU0VUIHJlcG9ydF9idWlsZCA9IE5VTEw7IERF
TEVURSBGUk9NIGJ1aWxkcycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5nZXRKU09OV2l0aFN0YXR1cyhgL2FkbWluL3JlcHJvY2Vzcy1yZXBvcnQ/cmVwb3J0PSR7
b3JpZ2luYWxSZXByb3RbJ2lkJ119YCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwo
J3JlcG9ydHMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVwb3J0cykgeworICAgICAg
ICB9KS50aGVuKChyZXBvcnRzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3J0
cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgbmV3UG9ydCA9IHJlcG9ydHNbMF07CiAg
ICAgICAgICAgICBvcmlnaW5hbFJlcHJvdFsnY29tbWl0dGVkX2F0J10gPSBudWxsOwpAQCAtMTE4
LDcgKzExNCw2IEBAIGRlc2NyaWJlKCIvYWRtaW4vcmVwcm9jZXNzLXJlcG9ydCIsIGZ1bmMKICAg
ICAgICAgICAgIG9yaWdpbmFsUmVwcm90WydidWlsZCddID0gbnVsbDsKICAgICAgICAgICAgIG5l
d1BvcnRbJ2J1aWxkJ10gPSBudWxsOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvcmln
aW5hbFJlcHJvdCwgbmV3UG9ydCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNh
dGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIH0pOwpJbmRleDogV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVp
bGQtcmVxdWVzdHMtdGVzdHMuanMJKHJldmlzaW9uIDIxMzk2NSkKKysrIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDQ0ICs0LDMzIEBAIGxldCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQn
KTsKIAogbGV0IE1vY2tEYXRhID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1kYXRhLmpzJyk7
CiBsZXQgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzJyk7
Citjb25zdCBwcmVwYXJlU2VydmVyVGVzdCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1v
cGVyYXRpb25zLmpzJykucHJlcGFyZVNlcnZlclRlc3Q7CiAKIGRlc2NyaWJlKCcvYXBpL2J1aWxk
LXJlcXVlc3RzJywgZnVuY3Rpb24gKCkgewotICAgIHRoaXMudGltZW91dCgxMDAwKTsKLSAgICBU
ZXN0U2VydmVyLmluamVjdCgpOworICAgIHByZXBhcmVTZXJ2ZXJUZXN0KHRoaXMpOwogCi0gICAg
YmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIE1vY2tEYXRhLnJlc2V0VjNNb2RlbHMo
KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgcmV0dXJuICJUcmlnZ2VyYWJsZU5vdEZvdW5k
IiB3aGVuIHRoZSBkYXRhYmFzZSBpcyBlbXB0eScsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAg
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2FwaS9idWlsZC1yZXF1ZXN0cy9idWls
ZC13ZWJraXQnKS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgaXQoJ3Nob3VsZCByZXR1
cm4gIlRyaWdnZXJhYmxlTm90Rm91bmQiIHdoZW4gdGhlIGRhdGFiYXNlIGlzIGVtcHR5JywgKCkg
PT4geworICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBp
L2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50WydzdGF0dXMnXSwgJ1RyaWdnZXJhYmxlTm90Rm91
bmQnKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgbGlzdCB3
aGVuIHRoZXJlIGFyZSBubyBidWlsZCByZXF1ZXN0cycsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAg
ICAgIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLmluc2VydCgnYnVpbGRfdHJp
Z2dlcmFibGVzJywge25hbWU6ICdidWlsZC13ZWJraXQnfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGxpc3Qgd2hlbiB0aGVy
ZSBhcmUgbm8gYnVpbGQgcmVxdWVzdHMnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLmRhdGFiYXNlKCkuaW5zZXJ0KCdidWlsZF90cmlnZ2VyYWJsZXMnLCB7bmFtZTogJ2J1aWxk
LXdlYmtpdCd9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLmdldEpTT04oJy9hcGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0Jyk7Ci0g
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAgICAgICAgfSkudGhlbigoY29u
dGVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAn
T0snKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0
cyddLCBbXSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNl
dHMnXSwgW10pOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRz
J10sIFtdKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVu
dCkuc29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0
YXR1cyddKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7Cisg
ICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCByZXR1cm4gYnVpbGQgcmVxdWV0
cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiB0cmlnZ2VyYWJsZSB3aXRoIGFwcHJvcHJpYXRlIGNv
bW1pdHMgYW5kIGNvbW1pdFNldHMnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBsZXQgZGIg
PSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYik7Ci0g
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgcmV0dXJuIGJ1aWxk
IHJlcXVldHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHByb3By
aWF0ZSBjb21taXRzIGFuZCBjb21taXRTZXRzJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9j
a0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVz
KCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwotICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChjb250ZW50KSB7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCkuc29ydCgpLCBbJ2J1
aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1cyddKTsKIAogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5ndGgsIDIpOwpA
QCAtODksMTcgKzc4LDEzIEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rp
b24KICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzNdLmNvbW1pdFNldCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzNdLnN0YXR1cywgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnRlc3QsICcyMDAnKTsK
LSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0p
OwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCBzdXBwb3J0IHVzZUxlZ2FjeUlkUmVzb2x1dGlv
biBvcHRpb24nLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYik7Ci0gICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgc3VwcG9ydCB1c2VMZWdhY3lJZFJlc29s
dXRpb24gb3B0aW9uJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0Rh
dGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL2J1aWxkLXJl
cXVlc3RzL2J1aWxkLXdlYmtpdD91c2VMZWdhY3lJZFJlc29sdXRpb249dHJ1ZScpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQp
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCku
c29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1
cyddKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5s
ZW5ndGgsIDIpOwpAQCAtMTQ3LDE5ICsxMzIsMTUgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVx
dWVzdHMnLCBmdW5jdGlvbgogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydi
dWlsZFJlcXVlc3RzJ11bM10uY29tbWl0U2V0LCA0MDIpOwogICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uc3RhdHVzLCAncGVuZGluZycpOwog
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10u
dGVzdCwgWydzb21lIHRlc3QnXSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNh
dGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCdzaG91bGQgYmUgZmV0
Y2hhYmxlIGJ5IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKGRv
bmUpIHsKLSAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICBk
Yi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gTW9ja0Rh
dGEuYWRkTW9ja0RhdGEoZGIpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBp
dCgnc2hvdWxkIGJlIGZldGNoYWJsZSBieSBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJs
ZScsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3Qu
ZmV0Y2goKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4o
KCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJh
YmxlKCdidWlsZC13ZWJraXQnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoYnVpbGRSZXF1
ZXN0cykgeworICAgICAgICB9KS50aGVuKChidWlsZFJlcXVlc3RzKSA9PiB7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0cy5sZW5ndGgsIDQpOwogCiAgICAgICAgICAgICBs
ZXQgdGVzdCA9IFRlc3QuZmluZEJ5SWQoMjAwKTsKQEAgLTI0MSw0OCArMjIyLDM1IEBAIGRlc2Ny
aWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24KICAgICAgICAgICAgIGxldCBzZWNv
bmRXZWJLaXRDb21taXQgPSBzZWNvbmRDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJr
aXQpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlY29uZFdlYktpdENvbW1pdC5yZXZpc2lv
bigpLCAnMTkyNzM2Jyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoK3NlY29uZFdlYktpdENv
bW1pdC50aW1lKCksIDE0NDgyMjUzMjU2NTApOwotCi0gICAgICAgICAgICBkb25lKCk7Ci0gICAg
ICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCdzaG91
bGQgbm90IGluY2x1ZGUgYSBidWlsZCByZXF1ZXN0IGlmIGFsbCByZXF1ZXN0cyBpbiB0aGUgc2Ft
ZSBncm91cCBoYWQgYmVlbiBjb21wbGV0ZWQnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBs
ZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKS50aGVu
KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShk
YiwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnXSk7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgbm90IGluY2x1
ZGUgYSBidWlsZCByZXF1ZXN0IGlmIGFsbCByZXF1ZXN0cyBpbiB0aGUgc2FtZSBncm91cCBoYWQg
YmVlbiBjb21wbGV0ZWQnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2Nr
RGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29tcGxldGVkJywgJ2NvbXBsZXRlZCcsICdj
b21wbGV0ZWQnLCAnY29tcGxldGVkJ10pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJu
IE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hG
b3JUcmlnZ2VyYWJsZSgnYnVpbGQtd2Via2l0Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KGJ1aWxkUmVxdWVzdHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVpbGRSZXF1ZXN0cykgPT4gewog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCAwKTsKLSAgICAg
ICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAg
IH0pOwogCi0gICAgaXQoJ3Nob3VsZCBub3QgaW5jbHVkZSBhIGJ1aWxkIHJlcXVlc3QgaWYgYWxs
IHJlcXVlc3RzIGluIHRoZSBzYW1lIGdyb3VwIGhhZCBiZWVuIGZhaWxlZCBvciBjYW5jbGVkJywg
ZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgp
OwotICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnZmFpbGVkJywgJ2ZhaWxlZCcsICdjYW5j
ZWxlZCcsICdjYW5jZWxlZCddKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
aXQoJ3Nob3VsZCBub3QgaW5jbHVkZSBhIGJ1aWxkIHJlcXVlc3QgaWYgYWxsIHJlcXVlc3RzIGlu
IHRoZSBzYW1lIGdyb3VwIGhhZCBiZWVuIGZhaWxlZCBvciBjYW5jbGVkJywgKCkgPT4geworICAg
ICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpLCBb
J2ZhaWxlZCcsICdmYWlsZWQnLCAnY2FuY2VsZWQnLCAnY2FuY2VsZWQnXSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJu
IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKCdidWlsZC13ZWJraXQnKTsKLSAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoYnVpbGRSZXF1ZXN0cykgeworICAgICAgICB9KS50aGVuKChi
dWlsZFJlcXVlc3RzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0
cy5sZW5ndGgsIDApOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25l
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIGluY2x1ZGUgYWxsIGJ1
aWxkIHJlcXVlc3RzIG9mIGEgdGVzdCBncm91cCBpZiBvbmUgb2YgdGhlIHJlcWV1c3RzIGluIHRo
ZSBncm91cCBoYWQgbm90IGJlZW4gZmluaXNoZWQnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAg
ICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKS50
aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0
YShkYiwgWydjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ3NjaGVkdWxlZCcsICdwZW5kaW5nJ10p
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgnc2hvdWxkIGluY2x1ZGUg
YWxsIGJ1aWxkIHJlcXVlc3RzIG9mIGEgdGVzdCBncm91cCBpZiBvbmUgb2YgdGhlIHJlcWV1c3Rz
IGluIHRoZSBncm91cCBoYWQgbm90IGJlZW4gZmluaXNoZWQnLCAoKSA9PiB7CisgICAgICAgIHJl
dHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29tcGxl
dGVkJywgJ2NvbXBsZXRlZCcsICdzY2hlZHVsZWQnLCAncGVuZGluZyddKS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4g
QnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoJ2J1aWxkLXdlYmtpdCcpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChidWlsZFJlcXVlc3RzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1
aWxkUmVxdWVzdHMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3Rz
Lmxlbmd0aCwgNCk7CiAgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1swXS5oYXNG
aW5pc2hlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzBdLmhhc1N0
YXJ0ZWQoKSk7CkBAIC0yOTYsMTkgKzI2NCwxNSBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1
ZXN0cycsIGZ1bmN0aW9uCiAgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbM10u
aGFzRmluaXNoZWQoKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbM10u
aGFzU3RhcnRlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzNdLmlz
UGVuZGluZygpKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7
CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGFsbCBidWls
ZCByZXF1ZXN0cyBvZiBhIHRlc3QgZ3JvdXAgaWYgb25lIG9mIHRoZSByZXFldXN0cyBpbiB0aGUg
Z3JvdXAgaXMgc3RpbGwgcnVubmluZycsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGxldCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBb
J2NvbXBsZXRlZCcsICdjb21wbGV0ZWQnLCAnY29tcGxldGVkJywgJ3J1bm5pbmcnXSk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhbGwgYnVp
bGQgcmVxdWVzdHMgb2YgYSB0ZXN0IGdyb3VwIGlmIG9uZSBvZiB0aGUgcmVxZXVzdHMgaW4gdGhl
IGdyb3VwIGlzIHN0aWxsIHJ1bm5pbmcnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBNb2NrRGF0
YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCksIFsnY29tcGxldGVkJywgJ2NvbXBs
ZXRlZCcsICdjb21wbGV0ZWQnLCAncnVubmluZyddKS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0
LmZldGNoRm9yVHJpZ2dlcmFibGUoJ2J1aWxkLXdlYmtpdCcpOwotICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChidWlsZFJlcXVlc3RzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1aWxkUmVxdWVzdHMp
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzLmxlbmd0aCwgNCk7
CiAgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1swXS5oYXNGaW5pc2hlZCgpKTsK
ICAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzBdLmhhc1N0YXJ0ZWQoKSk7CkBA
IC0zMjIsMTkgKzI4NiwxNiBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0
aW9uCiAgICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbM10uaGFzRmluaXNoZWQo
KSk7CiAgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1szXS5oYXNTdGFydGVkKCkp
OwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzNdLmlzUGVuZGluZygpKTsK
LSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0p
OwogICAgIH0pOwogCi0gICAgaXQoJ3Nob3VsZCBvcmRlciBidWlsZCByZXF1ZXN0cyBiYXNlZCBv
biB0ZXN0IGdyb3VwIGNyZWF0aW9uIHRpbWUgYW5kIG9yZGVyJywgZnVuY3Rpb24gKGRvbmUpIHsK
KyAgICBpdCgnc2hvdWxkIG9yZGVyIGJ1aWxkIHJlcXVlc3RzIGJhc2VkIG9uIHRlc3QgZ3JvdXAg
Y3JlYXRpb24gdGltZSBhbmQgb3JkZXInLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShk
YiksIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKV0pOwotICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtNb2NrRGF0YS5h
ZGRNb2NrRGF0YShkYiksIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiKV0pLnRo
ZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAg
ICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZSgnYnVpbGQtd2Via2l0
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGJ1aWxkUmVxdWVzdHMpIHsKKyAgICAgICAg
fSkudGhlbigoYnVpbGRSZXF1ZXN0cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1
aWxkUmVxdWVzdHMubGVuZ3RoLCA4KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJl
cXVlc3RzWzBdLmlkKCksIDcwMCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1
ZXN0c1swXS50ZXN0R3JvdXBJZCgpLCA2MDApOwpAQCAtMzYxLDE5ICszMjIsMTYgQEAgZGVzY3Jp
YmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbgogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGJ1aWxkUmVxdWVzdHNbN10uaWQoKSwgNzEzKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChidWlsZFJlcXVlc3RzWzddLnRlc3RHcm91cElkKCksIDYwMSk7CiAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoYnVpbGRSZXF1ZXN0c1s3XS5vcmRlcigpLCAzKTsKLSAgICAgICAgICAg
IGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwog
Ci0gICAgaXQoJ3Nob3VsZCBwbGFjZSBidWlsZCByZXF1ZXN0cyBjcmVhdGVkIGJ5IHVzZXIgYmVm
b3JlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBvbmVzJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBp
dCgnc2hvdWxkIHBsYWNlIGJ1aWxkIHJlcXVlc3RzIGNyZWF0ZWQgYnkgdXNlciBiZWZvcmUgYXV0
b21hdGljYWxseSBjcmVhdGVkIG9uZXMnLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShk
YiksIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiLCBudWxsLCAncm5pd2EnKV0p
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFtNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiksIE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVz
dEdyb3VwKGRiLCBudWxsLCAncm5pd2EnKV0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0
dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0
Y2hGb3JUcmlnZ2VyYWJsZSgnYnVpbGQtd2Via2l0Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKGJ1aWxkUmVxdWVzdHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVpbGRSZXF1ZXN0cykgPT4g
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHMubGVuZ3RoLCA4KTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzBdLmlkKCksIDcxMCk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1swXS50ZXN0R3JvdXBJZCgpLCA2MDEp
OwpAQCAtNDAwLDcgKzM1OCw2IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVu
Y3Rpb24KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzddLmlkKCksIDcw
Myk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1s3XS50ZXN0R3JvdXBJ
ZCgpLCA2MDApOwogICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ1aWxkUmVxdWVzdHNb
N10ub3JkZXIoKSwgMyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRv
bmUpOworICAgICAgICB9KTsKICAgICB9KTsKIH0pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9hcGktY29tbWl0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21taXRzLmpzCShyZXZpc2lvbiAy
MTM5NjUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1jb21t
aXRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDExICs0LDEwIEBAIGNvbnN0IGFzc2VydCA9IHJl
cXVpcmUoJ2Fzc2VydCcpOwogCiBjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJj
ZXMvdGVzdC1zZXJ2ZXIuanMnKTsKIGNvbnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVxdWlyZSgn
Li9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9ydDsKLWNv
bnN0IGNvbm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9j
b21tb24tb3BlcmF0aW9ucy5qcycpLmNvbm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3Q7Citjb25z
dCBwcmVwYXJlU2VydmVyVGVzdCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRp
b25zLmpzJykucHJlcGFyZVNlcnZlclRlc3Q7CiAKLWRlc2NyaWJlKCIvYXBpL2NvbW1pdHMvIiwg
KCkgPT4gewotICAgIFRlc3RTZXJ2ZXIuaW5qZWN0KCk7Ci0gICAgY29ubmVjdFRvRGF0YWJhc2VJ
bkV2ZXJ5VGVzdCgpOworZGVzY3JpYmUoIi9hcGkvY29tbWl0cy8iLCBmdW5jdGlvbiAoKSB7Cisg
ICAgcHJlcGFyZVNlcnZlclRlc3QodGhpcyk7CiAKICAgICBjb25zdCBzdWJ2ZXJzaW9uQ29tbWl0
cyA9IHsKICAgICAgICAgInNsYXZlTmFtZSI6ICJzb21lU2xhdmUiLApJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanMJ
KHJldmlzaW9uIDIxMzk2NSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvYXBpLW1hbmlmZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC02LDE5ICs2LDE1IEBAIHJlcXVp
cmUoJy4uL3Rvb2xzL2pzL3YzLW1vZGVscy5qcycpOwogCiBjb25zdCBNb2NrRGF0YSA9IHJlcXVp
cmUoJy4vcmVzb3VyY2VzL21vY2stZGF0YS5qcycpOwogY29uc3QgVGVzdFNlcnZlciA9IHJlcXVp
cmUoJy4vcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzJyk7Citjb25zdCBwcmVwYXJlU2VydmVyVGVz
dCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykucHJlcGFyZVNl
cnZlclRlc3Q7CiAKIGRlc2NyaWJlKCcvYXBpL21hbmlmZXN0JywgZnVuY3Rpb24gKCkgewotICAg
IHRoaXMudGltZW91dCgxMDAwKTsKLSAgICBUZXN0U2VydmVyLmluamVjdCgpOworICAgIHByZXBh
cmVTZXJ2ZXJUZXN0KHRoaXMpOwogCi0gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgIE1vY2tEYXRhLnJlc2V0VjNNb2RlbHMoKTsKLSAgICB9KTsKLQotICAgIGl0KCJzaG91bGQg
Z2VuZXJhdGUgYW4gZW1wdHkgbWFuaWZlc3Qgd2hlbiBkYXRhYmFzZSBpcyBlbXB0eSIsIGZ1bmN0
aW9uIChkb25lKSB7Ci0gICAgICAgIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTignL2Fw
aS9tYW5pZmVzdCcpLnRoZW4oZnVuY3Rpb24gKG1hbmlmZXN0KSB7CisgICAgaXQoInNob3VsZCBn
ZW5lcmF0ZSBhbiBlbXB0eSBtYW5pZmVzdCB3aGVuIGRhdGFiYXNlIGlzIGVtcHR5IiwgKCkgPT4g
eworICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL21h
bmlmZXN0JykudGhlbigobWFuaWZlc3QpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoT2JqZWN0LmtleXMobWFuaWZlc3QpLnNvcnQoKSwgWydhbGwnLCAnYnVnVHJhY2tlcnMnLCAn
YnVpbGRlcnMnLCAnZGFzaGJvYXJkJywgJ2Rhc2hib2FyZHMnLAotICAgICAgICAgICAgICAgICdl
bGFwc2VkVGltZScsICdtZXRyaWNzJywgJ3JlcG9zaXRvcmllcycsICdzaXRlVGl0bGUnLCAnc3Rh
dHVzJywgJ3N1bW1hcnlQYWdlcycsICd0ZXN0cycsICd0cmlnZ2VyYWJsZXMnXSk7CisgICAgICAg
ICAgICAgICAgJ2VsYXBzZWRUaW1lJywgJ2ZpbGVVcGxvYWRTaXplTGltaXQnLCAnbWV0cmljcycs
ICdyZXBvc2l0b3JpZXMnLCAnc2l0ZVRpdGxlJywgJ3N0YXR1cycsICdzdW1tYXJ5UGFnZXMnLCAn
dGVzdHMnLCAndHJpZ2dlcmFibGVzJ10pOwogCiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHlw
ZW9mKG1hbmlmZXN0LmVsYXBzZWRUaW1lKSwgJ251bWJlcicpOwogICAgICAgICAgICAgZGVsZXRl
IG1hbmlmZXN0LmVsYXBzZWRUaW1lOwpAQCAtMzUsMjAgKzMxLDE5IEBAIGRlc2NyaWJlKCcvYXBp
L21hbmlmZXN0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIHRlc3RzOiB7fSwKICAg
ICAgICAgICAgICAgICB0cmlnZ2VyYWJsZXM6IHt9LAogICAgICAgICAgICAgICAgIHN1bW1hcnlQ
YWdlczogW10sCisgICAgICAgICAgICAgICAgZmlsZVVwbG9hZFNpemVMaW1pdDogMCwKICAgICAg
ICAgICAgICAgICBzdGF0dXM6ICdPSycKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgZG9u
ZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKICAg
ICBjb25zdCBidWd6aWxsYURhdGEgPSB7aWQ6IDEsIG5hbWU6ICdCdWd6aWxsYScsIGJ1Z191cmw6
ICdodHRwczovL3dlYmtpdC5vcmcvYi8kbnVtYmVyJywgbmV3X2J1Z191cmw6ICdodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy8nfTsKICAgICBjb25zdCByYWRhckRhdGEgPSB7aWQ6IDIsIG5hbWU6ICdS
YWRhcid9OwogCi0gICAgaXQoInNob3VsZCBnZW5lcmF0ZSBtYW5pZmVzdCB3aXRoIGJ1ZyB0cmFj
a2VycyB3aXRob3V0IHJlcG9zaXRvcmllcyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKS5jb25uZWN0KCk7Ci0gICAgICAgIFRlc3RTZXJ2ZXIuZGF0YWJh
c2UoKS5pbnNlcnQoJ2J1Z190cmFja2VycycsIGJ1Z3ppbGxhRGF0YSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgaXQoInNob3VsZCBnZW5lcmF0ZSBtYW5pZmVzdCB3aXRoIGJ1ZyB0cmFja2VycyB3
aXRob3V0IHJlcG9zaXRvcmllcyIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKS5pbnNlcnQoJ2J1Z190cmFja2VycycsIGJ1Z3ppbGxhRGF0YSkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcv
YXBpL21hbmlmZXN0Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAg
ICAgICAgfSkudGhlbigoY29udGVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChjb250ZW50LmJ1Z1RyYWNrZXJzLCB7MToge25hbWU6ICdCdWd6aWxsYScsIGJ1Z1VybDogJ2h0
dHBzOi8vd2Via2l0Lm9yZy9iLyRudW1iZXInLAogICAgICAgICAgICAgICAgIG5ld0J1Z1VybDog
J2h0dHBzOi8vYnVncy53ZWJraXQub3JnLycsIHJlcG9zaXRvcmllczogbnVsbH19KTsKIApAQCAt
NTgsMTUgKzUzLDEyIEBAIGRlc2NyaWJlKCcvYXBpL21hbmlmZXN0JywgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRyYWNrZXIubmFtZSgpLCAnQnVnemlsbGEnKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbCh0cmFja2VyLmJ1Z1VybCgxMjMpLCAnaHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTIzJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHJhY2tlci5uZXdCdWdV
cmwoKSwgJ2h0dHBzOi8vYnVncy53ZWJraXQub3JnLycpOwotCi0gICAgICAgICAgICBkb25lKCk7
Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0
KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0aCBidWcgdHJhY2tlcnMgYW5kIHJlcG9zaXRv
cmllcyIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBnZW5lcmF0ZSBtYW5pZmVz
dCB3aXRoIGJ1ZyB0cmFja2VycyBhbmQgcmVwb3NpdG9yaWVzIiwgKCkgPT4gewogICAgICAgICBs
ZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGRiLmNvbm5lY3QoKTsKLSAg
ICAgICAgUHJvbWlzZS5hbGwoWworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwogICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdidWdfdHJhY2tlcnMnLCBidWd6aWxsYURhdGEpLAogICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdidWdfdHJhY2tlcnMnLCByYWRhckRhdGEpLAogICAgICAgICAgICAgZGIu
aW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDExLCBuYW1lOiAnV2ViS2l0JywgdXJsOiAnaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvJDEnfSksCkBAIC03NSw5ICs2Nyw5IEBAIGRlc2NyaWJlKCcv
YXBpL21hbmlmZXN0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmFj
a2VyX3JlcG9zaXRvcmllcycsIHt0cmFja2VyOiBidWd6aWxsYURhdGEuaWQsIHJlcG9zaXRvcnk6
IDExfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyYWNrZXJfcmVwb3NpdG9yaWVzJywge3Ry
YWNrZXI6IHJhZGFyRGF0YS5pZCwgcmVwb3NpdG9yeTogOX0pLAogICAgICAgICAgICAgZGIuaW5z
ZXJ0KCd0cmFja2VyX3JlcG9zaXRvcmllcycsIHt0cmFja2VyOiByYWRhckRhdGEuaWQsIHJlcG9z
aXRvcnk6IDIyfSksCi0gICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICBdKS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdl
dEpTT04oJy9hcGkvbWFuaWZlc3QnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVu
dCkgeworICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICBsZXQgbWFu
aWZlc3QgPSBNYW5pZmVzdC5fZGlkRmV0Y2hNYW5pZmVzdChjb250ZW50KTsKIAogICAgICAgICAg
ICAgbGV0IHdlYmtpdCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoMTEpOwpAQCAtMTA0LDIxICs5Niwx
OCBAQCBkZXNjcmliZSgnL2FwaS9tYW5pZmVzdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
IGFzc2VydCh0cmFja2VyKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0cmFja2VyLm5hbWUo
KSwgJ1JhZGFyJyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFJlcG9zaXRvcnkuc29y
dEJ5TmFtZSh0cmFja2VyLnJlcG9zaXRvcmllcygpKSwgW29zeCwgaW9zXSk7Ci0KLSAgICAgICAg
ICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0p
OwogCi0gICAgaXQoInNob3VsZCBnZW5lcmF0ZSBtYW5pZmVzdCB3aXRoIGJ1aWxkZXJzIiwgZnVu
Y3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggYnVp
bGRlcnMiLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
LSAgICAgICAgZGIuY29ubmVjdCgpOwotICAgICAgICBQcm9taXNlLmFsbChbCisgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkZXJzJywge2lk
OiAxLCBuYW1lOiAnU29tZUJ1aWxkZXInLCBwYXNzd29yZF9oYXNoOiAnYScsCiAgICAgICAgICAg
ICAgICAgYnVpbGRfdXJsOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzLyRidWls
ZGVyTmFtZS9idWlsZC8kYnVpbGROdW1iZXInfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1
aWxkZXJzJywge2lkOiAyLCBuYW1lOiAnU29tZU90aGVyQnVpbGRlcicsIHBhc3N3b3JkX2hhc2g6
ICdiJ30pCi0gICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICBdKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04o
Jy9hcGkvbWFuaWZlc3QnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVudCkgewor
ICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKGNvbnRlbnQuYnVpbGRlcnMsIHsKICAgICAgICAgICAgICAgICAnMSc6IHtuYW1lOiAnU29t
ZUJ1aWxkZXInLCBidWlsZFVybDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy8k
YnVpbGRlck5hbWUvYnVpbGQvJGJ1aWxkTnVtYmVyJ30sCiAgICAgICAgICAgICAgICAgJzInOiB7
bmFtZTogJ1NvbWVPdGhlckJ1aWxkZXInLCBidWlsZFVybDogbnVsbH0KQEAgLTEzNSwxNSArMTI0
LDEyIEBAIGRlc2NyaWJlKCcvYXBpL21hbmlmZXN0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgYXNzZXJ0KGJ1aWxkZXIpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXIubmFt
ZSgpLCAnU29tZU90aGVyQnVpbGRlcicpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxk
ZXIudXJsRm9yQnVpbGQoMTIzKSwgbnVsbCk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3Vs
ZCBnZW5lcmF0ZSBtYW5pZmVzdCB3aXRoIHRlc3RzLCBtZXRyaWNzLCBhbmQgcGxhdGZvcm1zIiwg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGgg
dGVzdHMsIG1ldHJpY3MsIGFuZCBwbGF0Zm9ybXMiLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpOwotICAgICAgICBQ
cm9taXNlLmFsbChbCisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU29tZVRlc3QnfSksCiAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAyLCBuYW1lOiAnU29tZU90aGVyVGVzdCd9KSwKICAg
ICAgICAgICAgIGRiLmluc2VydCgndGVzdHMnLCB7aWQ6IDMsIG5hbWU6ICdDaGlsZFRlc3QnLCBw
YXJlbnQ6IDF9KSwKQEAgLTE2Myw5ICsxNDksOSBAQCBkZXNjcmliZSgnL2FwaS9tYW5pZmVzdCcs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9u
cycsIHtpZDogMTA1LCBtZXRyaWM6IDksIHBsYXRmb3JtOiA0NiwgdHlwZTogJ2N1cnJlbnQnfSks
CiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNiwg
bWV0cmljOiA1LCBwbGF0Zm9ybTogMjMsIHR5cGU6ICdjdXJyZW50J30pLAogICAgICAgICAgICAg
ZGIuaW5zZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge2lkOiAxMDcsIG1ldHJpYzogNSwgcGxh
dGZvcm06IDIzLCB0eXBlOiAnYmFzZWxpbmUnfSksCi0gICAgICAgIF0pLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvbWFuaWZlc3QnKTsKLSAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAoY29udGVudCkgeworICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CiAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQudGVzdHMsIHsKICAgICAgICAgICAg
ICAgICAiMSI6IHsibmFtZSI6ICJTb21lVGVzdCIsICJwYXJlbnRJZCI6IG51bGwsICJ1cmwiOiBu
dWxsfSwKICAgICAgICAgICAgICAgICAiMiI6IHsibmFtZSI6ICJTb21lT3RoZXJUZXN0IiwgInBh
cmVudElkIjogbnVsbCwgInVybCI6IG51bGx9LApAQCAtMjcxLDE1ICsyNTcsMTIgQEAgZGVzY3Jp
YmUoJy9hcGkvbWFuaWZlc3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygpLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygpWzBdLmxhYmVsKCksICdUaW1lJyk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3JhbmRDaGlsZFRlc3QubWV0cmljcygpWzBdLmZ1bGxO
YW1lKCksICdTb21lVGVzdCBcdTIyMEIgQ2hpbGRUZXN0IFx1MjIwQiBHcmFuZENoaWxkIDogVGlt
ZScpOwotCi0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0
aCB0cmlnZ2VyYWJsZXMiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCJzaG91bGQgZ2VuZXJh
dGUgbWFuaWZlc3Qgd2l0aCB0cmlnZ2VyYWJsZXMiLCAoKSA9PiB7CiAgICAgICAgIGxldCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgZGIuY29ubmVjdCgpOwotICAgICAgICBQ
cm9taXNlLmFsbChbCisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogMTEsIG5hbWU6ICdXZWJLaXQnLCB1cmw6ICdo
dHRwczovL3RyYWMud2Via2l0Lm9yZy8kMSd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgncmVw
b3NpdG9yaWVzJywge2lkOiA5LCBuYW1lOiAnT1MgWCd9KSwKICAgICAgICAgICAgIGRiLmluc2Vy
dCgncmVwb3NpdG9yaWVzJywge2lkOiAxMDEsIG5hbWU6ICdXZWJLaXQnLCBvd25lcjogOSwgdXJs
OiAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvJDEnfSksCkBAIC0zMDUsOSArMjg4LDkgQEAgZGVz
Y3JpYmUoJy9hcGkvbWFuaWZlc3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywge3RyaWdnZXJhYmxlOiAyMDAsIHRlc3Q6
IDIsIHBsYXRmb3JtOiA0Nn0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9j
b25maWd1cmF0aW9ucycsIHt0cmlnZ2VyYWJsZTogMjAxLCB0ZXN0OiAxLCBwbGF0Zm9ybTogMjN9
KSwKICAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCB7
dHJpZ2dlcmFibGU6IDIwMSwgdGVzdDogMiwgcGxhdGZvcm06IDIzfSksCi0gICAgICAgIF0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJl
dHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBsZXQgd2Via2l0ID0gUmVwb3NpdG9y
eS5maW5kQnlJZCgxMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0Lm5hbWUoKSwg
J1dlYktpdCcpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdC51cmxGb3JSZXZpc2lv
bigxMjMpLCAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvMTIzJyk7CkBAIC0zNTEsOSArMzM0LDcg
QEAgZGVzY3JpYmUoJy9hcGkvbWFuaWZlc3QnLCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChUcmlnZ2VyYWJsZS5maW5kQnlUZXN0Q29uZmlndXJhdGlvbihzb21lT3Ro
ZXJUZXN0LCBpb3M5aXBob25lNXMpLCBpb3NUcmlnZ2VyYWJsZSk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoVHJpZ2dlcmFibGUuZmluZEJ5VGVzdENvbmZpZ3VyYXRpb24oY2hpbGRUZXN0LCBp
b3M5aXBob25lNXMpLCBpb3NUcmlnZ2VyYWJsZSk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsKLSAg
ICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiB9KTsKSW5kZXg6
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLW1lYXN1cmVtZW50LXNl
dC10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL2FwaS1tZWFzdXJlbWVudC1zZXQtdGVzdHMuanMJKHJldmlzaW9uIDIxMzk2NSkKKysr
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLW1lYXN1cmVtZW50LXNl
dC10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNywxNiArNywxMCBAQCByZXF1aXJlKCcuLi90
b29scy9qcy92My1tb2RlbHMuanMnKTsKIGNvbnN0IE1vY2tEYXRhID0gcmVxdWlyZSgnLi9yZXNv
dXJjZXMvbW9jay1kYXRhLmpzJyk7CiBjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNv
dXJjZXMvdGVzdC1zZXJ2ZXIuanMnKTsKIGNvbnN0IGFkZEJ1aWxkZXJGb3JSZXBvcnQgPSByZXF1
aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmFkZEJ1aWxkZXJGb3JSZXBv
cnQ7Ci1jb25zdCBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0ID0gcmVxdWlyZSgnLi9yZXNv
dXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5jb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0
OworY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24t
b3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwogCiBkZXNjcmliZSgiL2FwaS9tZWFz
dXJlbWVudC1zZXQiLCBmdW5jdGlvbiAoKSB7Ci0gICAgdGhpcy50aW1lb3V0KDEwMDApOwotICAg
IFRlc3RTZXJ2ZXIuaW5qZWN0KCk7Ci0gICAgY29ubmVjdFRvRGF0YWJhc2VJbkV2ZXJ5VGVzdCgp
OwotCi0gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIE1vY2tEYXRhLnJlc2V0
VjNNb2RlbHMoKTsKLSAgICB9KTsKKyAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzKTsKIAogICAg
IGZ1bmN0aW9uIHF1ZXJ5UGxhdGZvcm1BbmRNZXRyaWMocGxhdGZvcm1OYW1lLCBtZXRyaWNOYW1l
KQogICAgIHsKQEAgLTEzNSw2NSArMTI5LDYxIEBAIGRlc2NyaWJlKCIvYXBpL21lYXN1cmVtZW50
LXNldCIsIGZ1bmN0aW8KICAgICAgICAgICAgIH0sCiAgICAgICAgIH19XTsKIAotICAgIGl0KCJz
aG91bGQgcmVqZWN0IHdoZW4gcGxhdGZvcm0gSUQgaXMgbWlzc2luZyIsIGZ1bmN0aW9uIChkb25l
KSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCByZWplY3Qgd2hlbiBwbGF0Zm9ybSBJ
RCBpcyBtaXNzaW5nIiwgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9y
dChyZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRX
aXRoQnVpbGRUaW1lKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UGxhdGZv
cm1BbmRNZXRyaWMoJ01vdW50YWluIExpb24nLCAnVGltZScpOwotICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKGAvYXBpL21lYXN1cmVt
ZW50LXNldC8/bWV0cmljPSR7cmVzdWx0Lm1ldHJpY0lkfWApOwotICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0FtYmlndW91c1JlcXVl
c3QnKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCByZWplY3Qgd2hlbiBtZXRyaWMgSUQg
aXMgbWlzc2luZyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBv
cnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNo
b3VsZCByZWplY3Qgd2hlbiBtZXRyaWMgSUQgaXMgbWlzc2luZyIsICgpID0+IHsKKyAgICAgICAg
cmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNP
TignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aEJ1aWxkVGltZSk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAg
ICAgICAgIHJldHVybiBxdWVyeVBsYXRmb3JtQW5kTWV0cmljKCdNb3VudGFpbiBMaW9uJywgJ1Rp
bWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkuZ2V0SlNPTihgL2FwaS9tZWFzdXJlbWVudC1zZXQvP3BsYXRmb3JtPSR7cmVzdWx0LnBsYXRm
b3JtSWR9YCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAg
IH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3N0YXR1cyddLCAnQW1iaWd1b3VzUmVxdWVzdCcpOwotICAgICAgICAgICAgZG9uZSgpOwot
ICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgi
c2hvdWxkIHJlamVjdCBhbiBpbnZhbGlkIHBsYXRmb3JtIG5hbWUiLCBmdW5jdGlvbiAoZG9uZSkg
ewotICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgcmVqZWN0IGFuIGludmFsaWQgcGxhdGZv
cm0gbmFtZSIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVw
b3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aEJ1
aWxkVGltZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAg
IH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIHJldHVybiBxdWVyeVBsYXRmb3JtQW5k
TWV0cmljKCdNb3VudGFpbiBMaW9uJywgJ1RpbWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlv
biAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTihgL2FwaS9tZWFzdXJlbWVudC1z
ZXQvP3BsYXRmb3JtPSR7cmVzdWx0LnBsYXRmb3JtSWR9YSZtZXRyaWM9JHtyZXN1bHQubWV0cmlj
SWR9YCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0p
LnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Vb
J3N0YXR1cyddLCAnSW52YWxpZFBsYXRmb3JtJyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAg
ICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91
bGQgcmVqZWN0IGFuIGludmFsaWQgbWV0cmljIG5hbWUiLCBmdW5jdGlvbiAoZG9uZSkgewotICAg
ICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgcmVqZWN0IGFuIGludmFsaWQgbWV0cmljIG5hbWUi
LCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhC
dWlsZFRpbWVbMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhCdWlsZFRpbWUp
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVu
KChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0
dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gcXVlcnlQbGF0Zm9ybUFuZE1ldHJpYygn
TW91bnRhaW4gTGlvbicsICdUaW1lJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3Vs
dCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oYC9hcGkvbWVhc3VyZW1lbnQtc2V0Lz9wbGF0
Zm9ybT0ke3Jlc3VsdC5wbGF0Zm9ybUlkfSZtZXRyaWM9JHtyZXN1bHQubWV0cmljSWR9YmApOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMn
XSwgJ0ludmFsaWRNZXRyaWMnKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0
Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBiZSBhYmxl
IHRvIHJldHVybiBhbiBlbXB0eSByZXBvcnQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCJz
aG91bGQgcmV0dXJuIDQwNCB3aGVuIHRoZSByZXBvcnQgaXMgZW1wdHkiLCAoKSA9PiB7CiAgICAg
ICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICBQcm9taXNlLmFs
bChbCisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICBkYi5pbnNlcnQo
J3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU29tZVRlc3QnfSksCiAgICAgICAgICAgICBkYi5pbnNl
cnQoJ3Rlc3RzJywge2lkOiAyLCBuYW1lOiAnU29tZU90aGVyVGVzdCd9KSwKICAgICAgICAgICAg
IGRiLmluc2VydCgndGVzdHMnLCB7aWQ6IDMsIG5hbWU6ICdDaGlsZFRlc3QnLCBwYXJlbnQ6IDF9
KSwKQEAgLTIxMywyNSArMjAzLDI0IEBAIGRlc2NyaWJlKCIvYXBpL21lYXN1cmVtZW50LXNldCIs
IGZ1bmN0aW8KICAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtp
ZDogMTA1LCBtZXRyaWM6IDksIHBsYXRmb3JtOiA0NiwgdHlwZTogJ2N1cnJlbnQnfSksCiAgICAg
ICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNiwgbWV0cmlj
OiA1LCBwbGF0Zm9ybTogMjMsIHR5cGU6ICdjdXJyZW50J30pLAogICAgICAgICAgICAgZGIuaW5z
ZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge2lkOiAxMDcsIG1ldHJpYzogNSwgcGxhdGZvcm06
IDIzLCB0eXBlOiAnYmFzZWxpbmUnfSksCi0gICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTldpdGhTdGF0
dXMoYC9hcGkvbWVhc3VyZW1lbnQtc2V0Lz9wbGF0Zm9ybT00NiZtZXRyaWM9NWApLnRoZW4oZnVu
Y3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
LnN0YXR1c0NvZGUsIDQwNCk7Ci0gICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHsKKyAg
ICAgICAgXSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cyhgL2FwaS9tZWFzdXJlbWVudC1zZXQvP3BsYXRmb3Jt
PTQ2Jm1ldHJpYz01YCkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQoZmFsc2UpOworICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGVycm9yLCA0MDQpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7
CiAKLSAgICBpdCgic2hvdWxkIGJlIGFibGUgdG8gcmV0cmlldmUgYSByZXBvcnRlZCB2YWx1ZSIs
IGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0
aEJ1aWxkVGltZVswXSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBiZSBhYmxl
IHRvIHJldHJpZXZlIGEgcmVwb3J0ZWQgdmFsdWUiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBh
ZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkv
cmVwb3J0LycsIHJlcG9ydFdpdGhCdWlsZFRpbWUpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9u
IChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICBy
ZXR1cm4gcXVlcnlQbGF0Zm9ybUFuZE1ldHJpYygnTW91bnRhaW4gTGlvbicsICdUaW1lJyk7Ci0g
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1
bHQpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpT
T05XaXRoU3RhdHVzKGAvYXBpL21lYXN1cmVtZW50LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxh
dGZvcm1JZH0mbWV0cmljPSR7cmVzdWx0Lm1ldHJpY0lkfWApOwotICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAg
ICAgICAgICAgY29uc3QgYnVpbGRUaW1lID0gKyhuZXcgRGF0ZShyZXBvcnRXaXRoQnVpbGRUaW1l
WzBdWydidWlsZFRpbWUnXSkpOwogCiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVj
dC5rZXlzKHJlc3BvbnNlKS5zb3J0KCksCkBAIC0yNDgsNyArMjM3LDcgQEAgZGVzY3JpYmUoIi9h
cGkvbWVhc3VyZW1lbnQtc2V0IiwgZnVuY3RpbwogCiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKE9iamVjdC5rZXlzKHJlc3BvbnNlWydjb25maWd1cmF0aW9ucyddKSwgWydjdXJyZW50J10p
OwogCi0gICAgICAgICAgICB2YXIgY3VycmVudFJvd3MgPSByZXNwb25zZVsnY29uZmlndXJhdGlv
bnMnXVsnY3VycmVudCddOworICAgICAgICAgICAgY29uc3QgY3VycmVudFJvd3MgPSByZXNwb25z
ZVsnY29uZmlndXJhdGlvbnMnXVsnY3VycmVudCddOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGN1cnJlbnRSb3dzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY3VycmVu
dFJvd3NbMF0ubGVuZ3RoLCByZXNwb25zZVsnZm9ybWF0TWFwJ10ubGVuZ3RoKTsKICAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoZm9ybWF0KHJlc3BvbnNlWydmb3JtYXRNYXAnXSwgY3VycmVu
dFJvd3NbMF0pLCB7CkBAIC0yNjEsMTcgKzI1MCwxNiBAQCBkZXNjcmliZSgiL2FwaS9tZWFzdXJl
bWVudC1zZXQiLCBmdW5jdGlvCiAgICAgICAgICAgICAgICAgY29tbWl0VGltZTogYnVpbGRUaW1l
LAogICAgICAgICAgICAgICAgIGJ1aWxkVGltZTogYnVpbGRUaW1lLAogICAgICAgICAgICAgICAg
IGJ1aWxkTnVtYmVyOiAnMTIzJ30pOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5j
YXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIHJldHVy
biByZXR1cm4gdGhlIHJpZ2h0IElEcyBmb3IgbWVhc3VyZW1lbnQsIGJ1aWxkLCBhbmQgYnVpbGRl
ciIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0
V2l0aEJ1aWxkVGltZVswXSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCByZXR1
cm4gcmV0dXJuIHRoZSByaWdodCBJRHMgZm9yIG1lYXN1cmVtZW50LCBidWlsZCwgYW5kIGJ1aWxk
ZXIiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdp
dGhCdWlsZFRpbWVbMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhCdWlsZFRp
bWUpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50
aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydz
dGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gcXVlcnlQbGF0Zm9ybUFuZE1ldHJp
YygnTW91bnRhaW4gTGlvbicsICdUaW1lJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJl
c3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICAgICAgcmV0dXJuIFByb21pc2Uu
YWxsKFsKICAgICAgICAgICAgICAgICBkYi5zZWxlY3RBbGwoJ3Rlc3RfcnVucycpLApAQCAtMjc5
LDcgKzI2Nyw3IEBAIGRlc2NyaWJlKCIvYXBpL21lYXN1cmVtZW50LXNldCIsIGZ1bmN0aW8KICAg
ICAgICAgICAgICAgICBkYi5zZWxlY3RBbGwoJ2J1aWxkZXJzJyksCiAgICAgICAgICAgICAgICAg
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cyhgL2FwaS9tZWFzdXJlbWVu
dC1zZXQvP3BsYXRmb3JtPSR7cmVzdWx0LnBsYXRmb3JtSWR9Jm1ldHJpYz0ke3Jlc3VsdC5tZXRy
aWNJZH1gKSwKICAgICAgICAgICAgIF0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1
bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBjb25zdCBy
dW5zID0gcmVzdWx0WzBdOwogICAgICAgICAgICAgY29uc3QgYnVpbGRzID0gcmVzdWx0WzFdOwog
ICAgICAgICAgICAgY29uc3QgYnVpbGRlcnMgPSByZXN1bHRbMl07CkBAIC0yOTksMjMgKzI4Nyw4
IEBAIGRlc2NyaWJlKCIvYXBpL21lYXN1cmVtZW50LXNldCIsIGZ1bmN0aW8KICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChtZWFzdXJlbWVudFtyZXNwb25zZVsnZm9ybWF0TWFwJ10uaW5kZXhPZign
aWQnKV0sIG1lYXN1cmVtZW50SWQpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG1lYXN1cmVt
ZW50W3Jlc3BvbnNlWydmb3JtYXRNYXAnXS5pbmRleE9mKCdidWlsZCcpXSwgYnVpbGRJZCk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwobWVhc3VyZW1lbnRbcmVzcG9uc2VbJ2Zvcm1hdE1hcCdd
LmluZGV4T2YoJ2J1aWxkZXInKV0sIGJ1aWxkZXJJZCk7Ci0KLSAgICAgICAgICAgIGRvbmUoKTsK
LSAgICAgICAgfSkuY2F0Y2goZG9uZSk7Ci0gICAgfSk7Ci0KLSAgICBmdW5jdGlvbiBwb3N0UmVw
b3J0cyhyZXBvcnRzLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGlmICghcmVwb3J0cy5sZW5n
dGgpCi0gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKLQotICAgICAgICBwb3N0SlNPTign
L2FwaS9yZXBvcnQvJywgcmVwb3J0c1swXSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMjAwKTsKLSAgICAgICAgICAg
IGFzc2VydC5lcXVhbChKU09OLnBhcnNlKHJlc3BvbnNlLnJlc3BvbnNlVGV4dClbJ3N0YXR1cydd
LCAnT0snKTsKLQotICAgICAgICAgICAgcG9zdFJlcG9ydHMocmVwb3J0cy5zbGljZSgxKSwgY2Fs
bGJhY2spOwogICAgICAgICB9KTsKLSAgICB9CisgICAgfSk7CiAKICAgICBmdW5jdGlvbiBxdWVy
eVBsYXRmb3JtQW5kTWV0cmljV2l0aFJlcG9zaXRvcnkocGxhdGZvcm1OYW1lLCBtZXRyaWNOYW1l
LCByZXBvc2l0b3J5TmFtZSkKICAgICB7CkBAIC0zMjQsMjQgKzI5NywyMiBAQCBkZXNjcmliZSgi
L2FwaS9tZWFzdXJlbWVudC1zZXQiLCBmdW5jdGlvCiAgICAgICAgICAgICBkYi5zZWxlY3RGaXJz
dFJvdygncGxhdGZvcm1zJywge25hbWU6IHBsYXRmb3JtTmFtZX0pLAogICAgICAgICAgICAgZGIu
c2VsZWN0Rmlyc3RSb3coJ3Rlc3RfbWV0cmljcycsIHtuYW1lOiBtZXRyaWNOYW1lfSksCiAgICAg
ICAgICAgICBkYi5zZWxlY3RGaXJzdFJvdygncmVwb3NpdG9yaWVzJywge25hbWU6IHJlcG9zaXRv
cnlOYW1lfSksCi0gICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAg
ICAgcmV0dXJuIHtwbGF0Zm9ybUlkOiByZXN1bHRbMF1bJ2lkJ10sIG1ldHJpY0lkOiByZXN1bHRb
MV1bJ2lkJ10sIHJlcG9zaXRvcnlJZDogcmVzdWx0WzJdWydpZCddfTsKLSAgICAgICAgfSk7Cisg
ICAgICAgIF0pLnRoZW4oKHJlc3VsdCkgPT4gKHtwbGF0Zm9ybUlkOiByZXN1bHRbMF1bJ2lkJ10s
IG1ldHJpY0lkOiByZXN1bHRbMV1bJ2lkJ10sIHJlcG9zaXRvcnlJZDogcmVzdWx0WzJdWydpZCdd
fSkpOwogICAgIH0KIAotICAgIGl0KCJzaG91bGQgb3JkZXIgcmVzdWx0cyBieSBjb21taXQgdGlt
ZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBvcmRlciByZXN1bHRzIGJ5IGNv
bW1pdCB0aW1lIiwgKCkgPT4gewogICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpOwogICAgICAgICBsZXQgcmVwb3NpdG9yeUlkOwotICAgICAgICBhZGRCdWlsZGVy
Rm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT04oJy9hcGkvcmVw
b3J0LycsIHJlcG9ydFdpdGhCdWlsZFRpbWUpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBv
c3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOwotICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gcXVlcnlQbGF0Zm9ybUFuZE1ldHJpY1dpdGhSZXBvc2l0b3J5KCdNb3VudGFpbiBMaW9u
JywgJ1RpbWUnLCAnV2ViS2l0Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkg
eworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIHJlcG9zaXRvcnlJ
ZCA9IHJlc3VsdC5yZXBvc2l0b3J5SWQ7CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpT
T05XaXRoU3RhdHVzKGAvYXBpL21lYXN1cmVtZW50LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxh
dGZvcm1JZH0mbWV0cmljPSR7cmVzdWx0Lm1ldHJpY0lkfWApOwotICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAg
ICAgICAgICAgY29uc3QgY3VycmVudFJvd3MgPSByZXNwb25zZVsnY29uZmlndXJhdGlvbnMnXVsn
Y3VycmVudCddOwogICAgICAgICAgICAgY29uc3QgYnVpbGRUaW1lID0gKyhuZXcgRGF0ZShyZXBv
cnRXaXRoQnVpbGRUaW1lWzBdWydidWlsZFRpbWUnXSkpOwogICAgICAgICAgICAgY29uc3QgcmV2
aXNpb25UaW1lID0gKyhuZXcgRGF0ZShyZXBvcnRXaXRoUmV2aXNpb25bMF1bJ3JldmlzaW9ucydd
WydXZWJLaXQnXVsndGltZXN0YW1wJ10pKTsKQEAgLTM2OCwxNCArMzM5LDEzIEBAIGRlc2NyaWJl
KCIvYXBpL21lYXN1cmVtZW50LXNldCIsIGZ1bmN0aW8KICAgICAgICAgICAgICAgICBjb21taXRU
aW1lOiBidWlsZFRpbWUsCiAgICAgICAgICAgICAgICAgYnVpbGRUaW1lOiBidWlsZFRpbWUsCiAg
ICAgICAgICAgICAgICAgYnVpbGROdW1iZXI6ICcxMjMnIH0pOwotICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBp
dCgic2hvdWxkIG9yZGVyIHJlc3VsdHMgYnkgYnVpbGQgdGltZSB3aGVuIGNvbW1pdCB0aW1lcyBh
cmUgbWlzc2luZyIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBvcmRlciByZXN1
bHRzIGJ5IGJ1aWxkIHRpbWUgd2hlbiBjb21taXQgdGltZXMgYXJlIG1pc3NpbmciLCAoKSA9PiB7
CiAgICAgICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7CiAgICAgICAg
IGxldCByZXBvc2l0b3J5SWQ7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0
aEJ1aWxkVGltZVswXSkudGhlbigoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9y
UmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
Y29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gUHJv
bWlzZS5hbGwoWwogICAgICAgICAgICAgICAgIGRiLmluc2VydCgncmVwb3NpdG9yaWVzJywgeydp
ZCc6IDEsICduYW1lJzogJ21hY09TJ30pLApAQCAtMzk2LDcgKzM2Niw3IEBAIGRlc2NyaWJlKCIv
YXBpL21lYXN1cmVtZW50LXNldCIsIGZ1bmN0aW8KICAgICAgICAgICAgICAgICAicGxhdGZvcm0i
OiAiU2llcnJhIiwKICAgICAgICAgICAgICAgICAidGVzdHMiOiB7ICJUZXN0IjogeyJtZXRyaWNz
IjogeyJUaW1lIjogeyAiYmFzZWxpbmUiOiBbMSwgMiwgMywgNCwgNV0gfSB9IH0gfSwKICAgICAg
ICAgICAgIH1dKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRo
ZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTignL2FwaS9yZXBv
cnQvJywgW3sKICAgICAgICAgICAgICAgICAiYnVpbGROdW1iZXIiOiAiMTAwMiIsCiAgICAgICAg
ICAgICAgICAgImJ1aWxkVGltZSI6ICcyMDE3LTAxLTE5IDE5OjQ2OjM3JywKQEAgLTQxMCwxMSAr
MzgwLDExIEBAIGRlc2NyaWJlKCIvYXBpL21lYXN1cmVtZW50LXNldCIsIGZ1bmN0aW8KICAgICAg
ICAgICAgICAgICAicGxhdGZvcm0iOiAiU2llcnJhIiwKICAgICAgICAgICAgICAgICAidGVzdHMi
OiB7ICJUZXN0IjogeyJtZXRyaWNzIjogeyJUaW1lIjogeyAiYmFzZWxpbmUiOiBbNSwgNiwgNywg
OCwgOV0gfSB9IH0gfSwKICAgICAgICAgICAgIH1dKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5
UGxhdGZvcm1BbmRNZXRyaWNXaXRoUmVwb3NpdG9yeSgnU2llcnJhJywgJ1RpbWUnLCAnbWFjT1Mn
KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4o
KHJlc3VsdCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OV2l0aFN0YXR1
cyhgL2FwaS9tZWFzdXJlbWVudC1zZXQvP3BsYXRmb3JtPSR7cmVzdWx0LnBsYXRmb3JtSWR9Jm1l
dHJpYz0ke3Jlc3VsdC5tZXRyaWNJZH1gKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVz
cG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGNv
bnN0IGN1cnJlbnRSb3dzID0gcmVzcG9uc2VbJ2NvbmZpZ3VyYXRpb25zJ11bJ2Jhc2VsaW5lJ107
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY3VycmVudFJvd3MubGVuZ3RoLCAyKTsKICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoZm9ybWF0KHJlc3BvbnNlWydmb3JtYXRNYXAnXSwgY3Vy
cmVudFJvd3NbMF0pLCB7CkBAIC00MzcsMTA1ICs0MDcsOTcgQEAgZGVzY3JpYmUoIi9hcGkvbWVh
c3VyZW1lbnQtc2V0IiwgZnVuY3RpbwogICAgICAgICAgICAgICAgIGNvbW1pdFRpbWU6ICtEYXRl
LlVUQygyMDE3LCAwLCAxOSwgMTksIDQ2LCAzNyksCiAgICAgICAgICAgICAgICAgYnVpbGRUaW1l
OiArRGF0ZS5VVEMoMjAxNywgMCwgMTksIDE5LCA0NiwgMzcpLAogICAgICAgICAgICAgICAgIGJ1
aWxkTnVtYmVyOiAnMTAwMicgfSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNh
dGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGZ1bmN0aW9uIGJ1aWxkTnVt
YmVycyhwYXJzZWRSZXN1bHQsIGNvbmZpZykKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJzZWRS
ZXN1bHRbJ2NvbmZpZ3VyYXRpb25zJ11bY29uZmlnXS5tYXAoZnVuY3Rpb24gKHJvdykgewotICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdChwYXJzZWRSZXN1bHRbJ2Zvcm1hdE1hcCddLCByb3cpWydi
dWlsZE51bWJlciddOwotICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlZFJlc3VsdFsn
Y29uZmlndXJhdGlvbnMnXVtjb25maWddLm1hcCgocm93KSA9PiBmb3JtYXQocGFyc2VkUmVzdWx0
Wydmb3JtYXRNYXAnXSwgcm93KVsnYnVpbGROdW1iZXInXSk7CiAgICAgfQogCi0gICAgaXQoInNo
b3VsZCBpbmNsdWRlIG9uZSBkYXRhIHBvaW50IGFmdGVyIHRoZSBjdXJyZW50IHRpbWUgcmFuZ2Ui
LCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCJzaG91bGQgaW5jbHVkZSBvbmUgZGF0YSBwb2lu
dCBhZnRlciB0aGUgY3VycmVudCB0aW1lIHJhbmdlIiwgKCkgPT4gewogICAgICAgICBjb25zdCBy
ZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQSSgpOwotICAgICAgICBhZGRCdWlsZGVyRm9yUmVw
b3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICBy
ZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT04oJy9hcGkvcmVwb3J0Lycs
IHJlcG9ydFdpdGhBbmNlbnRSZXZpc2lvbik7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9z
dEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhOZXdSZXZpc2lvbik7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBxdWVyeVBsYXRmb3JtQW5kTWV0cmljKCdNb3VudGFpbiBMaW9uJywgJ1RpbWUnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJl
c3VsdCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OV2l0aFN0YXR1cyhg
L2FwaS9tZWFzdXJlbWVudC1zZXQvP3BsYXRmb3JtPSR7cmVzdWx0LnBsYXRmb3JtSWR9Jm1ldHJp
Yz0ke3Jlc3VsdC5tZXRyaWNJZH1gKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9u
c2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydjbHVzdGVyQ291bnQnXSwgMiwgJ3Nob3VsZCBoYXZlIHR3byBjbHVzdGVy
cycpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChidWlsZE51bWJlcnMocmVzcG9uc2Us
ICdjdXJyZW50JyksCiAgICAgICAgICAgICAgICAgW3JlcG9ydFdpdGhBbmNlbnRSZXZpc2lvblsw
XVsnYnVpbGROdW1iZXInXSwgcmVwb3J0V2l0aE5ld1JldmlzaW9uWzBdWydidWlsZE51bWJlcidd
XSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAg
ICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgYWx3YXlzIGluY2x1ZGUgb25lIG9sZCBk
YXRhIHBvaW50IGJlZm9yZSB0aGUgY3VycmVudCB0aW1lIHJhbmdlIiwgZnVuY3Rpb24gKGRvbmUp
IHsKKyAgICBpdCgic2hvdWxkIGFsd2F5cyBpbmNsdWRlIG9uZSBvbGQgZGF0YSBwb2ludCBiZWZv
cmUgdGhlIGN1cnJlbnQgdGltZSByYW5nZSIsICgpID0+IHsKICAgICAgICAgY29uc3QgcmVtb3Rl
ID0gVGVzdFNlcnZlci5yZW1vdGVBUEkoKTsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChy
ZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJu
IGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0V2l0aEJ1aWxkVGltZVswXSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBv
cnRXaXRoQnVpbGRUaW1lKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
IH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5wb3N0SlNPTignL2Fw
aS9yZXBvcnQvJywgcmVwb3J0V2l0aEFuY2VudFJldmlzaW9uKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJu
IHF1ZXJ5UGxhdGZvcm1BbmRNZXRyaWMoJ01vdW50YWluIExpb24nLCAnVGltZScpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9
PiB7CiAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT05XaXRoU3RhdHVzKGAvYXBpL21l
YXN1cmVtZW50LXNldC8/cGxhdGZvcm09JHtyZXN1bHQucGxhdGZvcm1JZH0mbWV0cmljPSR7cmVz
dWx0Lm1ldHJpY0lkfWApOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlWydjbHVzdGVyQ291bnQnXSwgMiwgJ3Nob3VsZCBoYXZlIHR3byBjbHVzdGVycycp
OwogICAgICAgICAgICAgbGV0IGN1cnJlbnRSb3dzID0gcmVzcG9uc2VbJ2NvbmZpZ3VyYXRpb25z
J11bJ2N1cnJlbnQnXTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjdXJyZW50Um93cy5sZW5n
dGgsIDIsICdzaG91bGQgY29udGFpbiB0d28gZGF0YSBwb2ludHMnKTsKICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoYnVpbGROdW1iZXJzKHJlc3BvbnNlLCAnY3VycmVudCcpLCBbcmVwb3J0
V2l0aEFuY2VudFJldmlzaW9uWzBdWydidWlsZE51bWJlciddLCByZXBvcnRXaXRoQnVpbGRUaW1l
WzBdWydidWlsZE51bWJlciddXSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNh
dGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgY3JlYXRl
IGNhY2hlZCByZXN1bHRzIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIGNyZWF0
ZSBjYWNoZWQgcmVzdWx0cyIsICgpID0+IHsKICAgICAgICAgY29uc3QgcmVtb3RlID0gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKTsKICAgICAgICAgbGV0IGNhY2hlUHJlZml4OwotICAgICAgICBhZGRC
dWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0pLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoQnVpbGRUaW1l
WzBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT04oJy9h
cGkvcmVwb3J0LycsIHJlcG9ydFdpdGhBbmNlbnRSZXZpc2lvbik7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVy
biByZW1vdGUucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7Ci0g
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgIHJldHVybiByZW1vdGUucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdp
dGhOZXdSZXZpc2lvbik7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBxdWVyeVBsYXRmb3JtQW5kTWV0cmlj
KCdNb3VudGFpbiBMaW9uJywgJ1RpbWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVz
dWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY2FjaGVQ
cmVmaXggPSAnL2RhdGEvbWVhc3VyZW1lbnQtc2V0LScgKyByZXN1bHQucGxhdGZvcm1JZCArICct
JyArIHJlc3VsdC5tZXRyaWNJZDsKICAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTldp
dGhTdGF0dXMoYC9hcGkvbWVhc3VyZW1lbnQtc2V0Lz9wbGF0Zm9ybT0ke3Jlc3VsdC5wbGF0Zm9y
bUlkfSZtZXRyaWM9JHtyZXN1bHQubWV0cmljSWR9YCk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKG5ld1Jlc3VsdCkgewotICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OV2l0aFN0
YXR1cyhgJHtjYWNoZVByZWZpeH0uanNvbmApLnRoZW4oZnVuY3Rpb24gKGNhY2hlZFJlc3VsdCkg
eworICAgICAgICB9KS50aGVuKChuZXdSZXN1bHQpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBy
ZW1vdGUuZ2V0SlNPTldpdGhTdGF0dXMoYCR7Y2FjaGVQcmVmaXh9Lmpzb25gKS50aGVuKChjYWNo
ZWRSZXN1bHQpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG5ld1Jlc3Vs
dCwgY2FjaGVkUmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlLmdldEpTT05X
aXRoU3RhdHVzKGAke2NhY2hlUHJlZml4fS0ke2NhY2hlZFJlc3VsdFsnc3RhcnRUaW1lJ119Lmpz
b25gKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKG9sZFJlc3VsdCkgewotICAgICAg
ICAgICAgICAgIHZhciBvbGRCdWlsZE51bWJlcnMgPSBidWlsZE51bWJlcnMob2xkUmVzdWx0LCAn
Y3VycmVudCcpOwotICAgICAgICAgICAgICAgIHZhciBuZXdCdWlsZE51bWJlcnMgPSBidWlsZE51
bWJlcnMobmV3UmVzdWx0LCAnY3VycmVudCcpOworICAgICAgICAgICAgfSkudGhlbigob2xkUmVz
dWx0KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgb2xkQnVpbGROdW1iZXJzID0gYnVpbGRO
dW1iZXJzKG9sZFJlc3VsdCwgJ2N1cnJlbnQnKTsKKyAgICAgICAgICAgICAgICBjb25zdCBuZXdC
dWlsZE51bWJlcnMgPSBidWlsZE51bWJlcnMobmV3UmVzdWx0LCAnY3VycmVudCcpOwogICAgICAg
ICAgICAgICAgIGFzc2VydChvbGRCdWlsZE51bWJlcnMubGVuZ3RoID49IDIsICdUaGUgb2xkIGNs
dXN0ZXIgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIGRhdGEgcG9pbnRzJyk7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0KG5ld0J1aWxkTnVtYmVycy5sZW5ndGggPj0gMiwgJ1RoZSBuZXcgY2x1
c3RlciBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gZGF0YSBwb2ludHMnKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG9sZEJ1aWxkTnVtYmVycy5zbGljZShvbGRCdWlsZE51
bWJlcnMubGVuZ3RoIC0gMiksIG5ld0J1aWxkTnVtYmVycy5zbGljZSgwLCAyKSwKICAgICAgICAg
ICAgICAgICAgICAgJ1R3byBjb25zZXFjdXRpdmUgY2x1c3RlcnMgc2hvdWxkIHNoYXJlIHR3byBk
YXRhIHBvaW50cycpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgi
c2hvdWxkIHVzZSBsYXN0TW9kaWZpZWQgdGltZXN0YW1wIGlkZW50aWNhbCB0byB0aGF0IGluIHRo
ZSBtYW5pZmVzdCBmaWxlIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIHVzZSBs
YXN0TW9kaWZpZWQgdGltZXN0YW1wIGlkZW50aWNhbCB0byB0aGF0IGluIHRoZSBtYW5pZmVzdCBm
aWxlIiwgKCkgPT4gewogICAgICAgICBjb25zdCByZW1vdGUgPSBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpOwotICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhCdWlsZFRpbWVbMF0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChy
ZXBvcnRXaXRoQnVpbGRUaW1lWzBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBy
ZW1vdGUucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIHJlcG9ydFdpdGhSZXZpc2lvbik7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgIHJldHVybiBxdWVyeVBsYXRmb3JtQW5kTWV0cmljKCdNb3VudGFpbiBMaW9uJywgJ1Rp
bWUnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZS5nZXRKU09OV2l0aFN0
YXR1cyhgL2FwaS9tZWFzdXJlbWVudC1zZXQvP3BsYXRmb3JtPSR7cmVzdWx0LnBsYXRmb3JtSWR9
Jm1ldHJpYz0ke3Jlc3VsdC5tZXRyaWNJZH1gKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cHJpbWFyeUNsdXN0ZXIpIHsKLSAgICAgICAgICAgIHJldHVybiByZW1vdGUuZ2V0SlNPTldpdGhT
dGF0dXMoJy9hcGkvbWFuaWZlc3QnKS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgICAg
IH0pLnRoZW4oKHByaW1hcnlDbHVzdGVyKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gcmVtb3Rl
LmdldEpTT05XaXRoU3RhdHVzKCcvYXBpL21hbmlmZXN0JykudGhlbigoY29udGVudCkgPT4gewog
ICAgICAgICAgICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gTWFuaWZlc3QuX2RpZEZldGNoTWFuaWZl
c3QoY29udGVudCk7CiAKICAgICAgICAgICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IFBsYXRmb3Jt
LmZpbmRCeU5hbWUoJ01vdW50YWluIExpb24nKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTWV0cmljLmFsbCgpLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgY29uc3QgbWV0cmlj
ID0gTWV0cmljLmFsbCgpWzBdOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwbGF0Zm9y
bS5sYXN0TW9kaWZpZWQobWV0cmljKSwgcHJpbWFyeUNsdXN0ZXJbJ2xhc3RNb2RpZmllZCddKTsK
LQotICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICB9KS5j
YXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKIH0pOwpJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktcmVwb3J0LWNvbW1pdHMtdGVzdHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGkt
cmVwb3J0LWNvbW1pdHMtdGVzdHMuanMJKHJldmlzaW9uIDIxMzk2NSkKKysrIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXJlcG9ydC1jb21taXRzLXRlc3RzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC00LDEyICs0LDEwIEBAIGNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fz
c2VydCcpOwogCiBjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1z
ZXJ2ZXIuanMnKTsKIGNvbnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVxdWlyZSgnLi9yZXNvdXJj
ZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9ydDsKLWNvbnN0IGNvbm5l
Y3RUb0RhdGFiYXNlSW5FdmVyeVRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3Bl
cmF0aW9ucy5qcycpLmNvbm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3Q7Citjb25zdCBwcmVwYXJl
U2VydmVyVGVzdCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJyku
cHJlcGFyZVNlcnZlclRlc3Q7CiAKIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1
bmN0aW9uICgpIHsKLSAgICB0aGlzLnRpbWVvdXQoMTAwMCk7Ci0gICAgVGVzdFNlcnZlci5pbmpl
Y3QoKTsKLSAgICBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0KCk7CisgICAgcHJlcGFyZVNl
cnZlclRlc3QodGhpcyk7CiAKICAgICBjb25zdCBlbXB0eVJlcG9ydCA9IHsKICAgICAgICAgInNs
YXZlTmFtZSI6ICJzb21lU2xhdmUiLApAQCAtNzgsNTQgKzc2LDQ5IEBAIGRlc2NyaWJlKCIvYXBp
L3JlcG9ydC1jb21taXRzLyIsIGZ1bmN0aW8KICAgICAgICAgXQogICAgIH0KIAotICAgIGl0KCJz
aG91bGQgcmVqZWN0IGVycm9yIHdoZW4gc2xhdmUgbmFtZSBpcyBtaXNzaW5nIiwgZnVuY3Rpb24g
KGRvbmUpIHsKLSAgICAgICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9y
ZXBvcnQtY29tbWl0cy8nLCB7fSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICBpdCgi
c2hvdWxkIHJlamVjdCBlcnJvciB3aGVuIHNsYXZlIG5hbWUgaXMgbWlzc2luZyIsICgpID0+IHsK
KyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVw
b3J0LWNvbW1pdHMvJywge30pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnTWlzc2luZ1NsYXZlTmFtZScpOwotICAgICAg
ICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CiAKLSAgICBpdCgic2hvdWxkIHJlamVjdCB3aGVuIHRoZXJlIGFyZSBubyBzbGF2ZXMiLCBm
dW5jdGlvbiAoZG9uZSkgewotICAgICAgICBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09O
KCcvYXBpL3JlcG9ydC1jb21taXRzLycsIGVtcHR5UmVwb3J0KS50aGVuKGZ1bmN0aW9uIChyZXNw
b25zZSkgeworICAgIGl0KCJzaG91bGQgcmVqZWN0IHdoZW4gdGhlcmUgYXJlIG5vIHNsYXZlcyIs
ICgpID0+IHsKKyAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04o
Jy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgZW1wdHlSZXBvcnQpLnRoZW4oKHJlc3BvbnNlKSA9PiB7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnU2xhdmVOb3RG
b3VuZCcpOwogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RB
bGwoJ2NvbW1pdHMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocm93cykgeworICAgICAg
ICB9KS50aGVuKChyb3dzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93cy5sZW5n
dGgsIDApOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGFjY2VwdCBhbiBlbXB0eSByZXBv
cnQiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChlbXB0eVJl
cG9ydCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBhY2NlcHQgYW4gZW1wdHkg
cmVwb3J0IiwgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoZW1wdHlS
ZXBvcnQpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgZW1wdHlSZXBvcnQpOwotICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNw
b25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwg
J09LJyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgYWRkIGEgbWlzc2luZyByZXBvc2l0
b3J5IiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRh
dGFiYXNlKCk7Ci0gICAgICAgIGFkZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXQpLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgYWRkIGEgbWlzc2luZyByZXBvc2l0b3J5
IiwgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNv
bW1pdCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0KTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigo
cmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVz
J10sICdPSycpOwotICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgncmVwb3NpdG9yaWVz
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJvd3MpIHsKKyAgICAgICAgICAgIHJldHVy
biBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdyZXBvc2l0b3JpZXMnKTsKKyAgICAg
ICAgfSkudGhlbigocm93cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3MubGVu
Z3RoLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzBdWyduYW1lJ10sIHN1YnZl
cnNpb25Db21taXQuY29tbWl0c1swXVsncmVwb3NpdG9yeSddKTsKLSAgICAgICAgICAgIGRvbmUo
KTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAg
aXQoInNob3VsZCBzdG9yZSBhIGNvbW1pdCBmcm9tIGEgdmFsaWQgc2xhdmUiLCBmdW5jdGlvbiAo
ZG9uZSkgewotICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAg
ICAgYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdCkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgaXQoInNob3VsZCBzdG9yZSBhIGNvbW1pdCBmcm9tIGEgdmFsaWQgc2xhdmUiLCAoKSA9
PiB7CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0KS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBv
c3RKU09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25Db21taXQpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09L
Jyk7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCdjb21taXRzJyksIGRiLnNl
bGVjdEFsbCgnY29tbWl0dGVycycpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3Vs
dCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGxldCBjb21t
aXRzID0gcmVzdWx0WzBdOwogICAgICAgICAgICAgbGV0IGNvbW1pdHRlcnMgPSByZXN1bHRbMV07
CiAgICAgICAgICAgICBsZXQgcmVwb3J0ZWREYXRhID0gc3VidmVyc2lvbkNvbW1pdC5jb21taXRz
WzBdOwpAQCAtMTM4LDMxICsxMzEsMjggQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0LWNvbW1pdHMv
IiwgZnVuY3RpbwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMF1bJ2NvbW1pdHRl
ciddLCBjb21taXR0ZXJzWzBdWydpZCddKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21t
aXR0ZXJzWzBdWyduYW1lJ10sIHJlcG9ydGVkRGF0YVsnYXV0aG9yJ11bJ25hbWUnXSk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0dGVyc1swXVsnYWNjb3VudCddLCByZXBvcnRlZERh
dGFbJ2F1dGhvciddWydhY2NvdW50J10pOwotCi0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAg
IH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQg
cmVqZWN0IGFuIGludmFsaWQgcmV2aXNpb24gbnVtYmVyIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAg
ICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdCkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgaXQoInNob3VsZCByZWplY3QgYW4gaW52YWxpZCByZXZpc2lvbiBudW1iZXIiLCAo
KSA9PiB7CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LnBvc3RKU09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN1YnZlcnNpb25JbnZhbGlkQ29tbWl0
KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhl
bigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3Rh
dHVzJ10sICdJbnZhbGlkUmV2aXNpb24nKTsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVy
LmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdjb21taXRzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKHJvd3MpIHsKKyAgICAgICAgfSkudGhlbigocm93cykgPT4gewogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJvd3MubGVuZ3RoLCAwKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAg
fSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBz
dG9yZSB0d28gY29tbWl0cyBmcm9tIGEgdmFsaWQgc2xhdmUiLCBmdW5jdGlvbiAoZG9uZSkgewot
ICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgYWRkU2xh
dmVGb3JSZXBvcnQoc3VidmVyc2lvblR3b0NvbW1pdHMpLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
IGl0KCJzaG91bGQgc3RvcmUgdHdvIGNvbW1pdHMgZnJvbSBhIHZhbGlkIHNsYXZlIiwgKCkgPT4g
eworICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvblR3b0NvbW1pdHMp
LnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
cG9zdEpTT04oJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgc3VidmVyc2lvblR3b0NvbW1pdHMpOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMn
XSwgJ09LJyk7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
ICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCdjb21taXRzJyks
IGRiLnNlbGVjdEFsbCgnY29tbWl0dGVycycpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KHJlc3VsdCkgeworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNv
bnN0IGNvbW1pdHMgPSByZXN1bHRbMF07CiAgICAgICAgICAgICBjb25zdCBjb21taXR0ZXJzID0g
cmVzdWx0WzFdOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCAyKTsK
QEAgLTE4NSwzOCArMTc1LDM0IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1
bmN0aW8KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzFdWydwcmV2aW91c19jb21t
aXQnXSwgY29tbWl0c1swXVsnaWQnXSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0
dGVyc1sxXVsnbmFtZSddLCByZXBvcnRlZERhdGFbJ2F1dGhvciddWyduYW1lJ10pOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHRlcnNbMV1bJ2FjY291bnQnXSwgcmVwb3J0ZWREYXRh
WydhdXRob3InXVsnYWNjb3VudCddKTsKLQotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9
KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGZh
aWwgaWYgcHJldmlvdXMgY29tbWl0IGlzIGludmFsaWQiLCBmdW5jdGlvbiAoZG9uZSkgewotICAg
ICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgYWRkU2xhdmVG
b3JSZXBvcnQoc3VidmVyc2lvbkludmFsaWRQcmV2aW91c0NvbW1pdCkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgaXQoInNob3VsZCBmYWlsIGlmIHByZXZpb3VzIGNvbW1pdCBpcyBpbnZhbGlkIiwg
KCkgPT4geworICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkludmFs
aWRQcmV2aW91c0NvbW1pdCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNl
cnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJz
aW9uSW52YWxpZFByZXZpb3VzQ29tbWl0KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVz
cG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdGYWlsZWRUb0ZpbmRQcmV2aW91c0NvbW1p
dCcpOwotICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgnY29tbWl0cycpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdjb21taXRzJyk7CisgICAgICAgIH0pLnRoZW4oKHJl
c3VsdCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdC5sZW5ndGgsIDApOwot
ICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7
CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIHVwZGF0ZSBhbiBleGlzdGluZyBjb21taXQgaWYg
dGhlcmUgaXMgb25lIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIHVwZGF0ZSBh
biBleGlzdGluZyBjb21taXQgaWYgdGhlcmUgaXMgb25lIiwgKCkgPT4gewogICAgICAgICBjb25z
dCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgY29uc3QgcmVwb3J0ZWREYXRh
ID0gc3VidmVyc2lvbkNvbW1pdC5jb21taXRzWzBdOwotICAgICAgICBhZGRTbGF2ZUZvclJlcG9y
dChzdWJ2ZXJzaW9uQ29tbWl0KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFk
ZFNsYXZlRm9yUmVwb3J0KHN1YnZlcnNpb25Db21taXQpLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ3JlcG9z
aXRvcmllcycsIHsnaWQnOiAxLCAnbmFtZSc6ICdXZWJLaXQnfSksCiAgICAgICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdjb21taXRzJywgeydyZXBvc2l0b3J5JzogMSwgJ3JldmlzaW9uJzogcmVwb3J0
ZWREYXRhWydyZXZpc2lvbiddLCAndGltZSc6IHJlcG9ydGVkRGF0YVsndGltZSddfSkKICAgICAg
ICAgICAgIF0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0
SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0KTsKLSAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2Up
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycp
OwogICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtkYi5zZWxlY3RBbGwoJ2NvbW1pdHMn
KSwgZGIuc2VsZWN0QWxsKCdjb21taXR0ZXJzJyldKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlv
biAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAg
Y29uc3QgY29tbWl0cyA9IHJlc3VsdFswXTsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdHRlcnMg
PSByZXN1bHRbMV07CiAKQEAgLTIyNiwyNyArMjEyLDI1IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9y
dC1jb21taXRzLyIsIGZ1bmN0aW8KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzBd
Wydjb21taXR0ZXInXSwgY29tbWl0dGVyc1swXVsnaWQnXSk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29tbWl0dGVyc1swXVsnbmFtZSddLCByZXBvcnRlZERhdGFbJ2F1dGhvciddWyduYW1l
J10pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHRlcnNbMF1bJ2FjY291bnQnXSwg
cmVwb3J0ZWREYXRhWydhdXRob3InXVsnYWNjb3VudCddKTsKLQotICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBp
dCgic2hvdWxkIG5vdCB1cGRhdGUgYW4gdW5yZWxhdGVkIGNvbW1pdCIsIGZ1bmN0aW9uIChkb25l
KSB7CisgICAgaXQoInNob3VsZCBub3QgdXBkYXRlIGFuIHVucmVsYXRlZCBjb21taXQiLCAoKSA9
PiB7CiAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICBj
b25zdCBmaXJzdERhdGEgPSBzdWJ2ZXJzaW9uVHdvQ29tbWl0cy5jb21taXRzWzBdOwogICAgICAg
ICBjb25zdCBzZWNvbmREYXRhID0gc3VidmVyc2lvblR3b0NvbW1pdHMuY29tbWl0c1sxXTsKLSAg
ICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdCkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0KS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0
J30pLAogICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHsnaWQnOiAyLCAncmVw
b3NpdG9yeSc6IDEsICdyZXZpc2lvbic6IGZpcnN0RGF0YVsncmV2aXNpb24nXSwgJ3RpbWUnOiBm
aXJzdERhdGFbJ3RpbWUnXX0pLAogICAgICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycs
IHsnaWQnOiAzLCAncmVwb3NpdG9yeSc6IDEsICdyZXZpc2lvbic6IHNlY29uZERhdGFbJ3Jldmlz
aW9uJ10sICd0aW1lJzogc2Vjb25kRGF0YVsndGltZSddfSkKICAgICAgICAgICAgIF0pOwotICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBv
cnQtY29tbWl0cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlv
biAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKFtkYi5zZWxlY3RBbGwoJ2NvbW1pdHMnKSwgZGIuc2VsZWN0QWxs
KCdjb21taXR0ZXJzJyldKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7Cisg
ICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29uc3QgY29tbWl0cyA9
IHJlc3VsdFswXTsKICAgICAgICAgICAgIGNvbnN0IGNvbW1pdHRlcnMgPSByZXN1bHRbMV07CiAK
QEAgLTI2MSwzMCArMjQ1LDI3IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1
bmN0aW8KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzFdWydpZCddLCAzKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRzWzFdWydtZXNzYWdlJ10sIG51bGwpOwogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHNbMV1bJ2NvbW1pdHRlciddLCBudWxsKTsKLQot
ICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7
CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIHVwZGF0ZSBhbiBleGlzdGluZyBjb21taXR0ZXIg
aWYgdGhlcmUgaXMgb25lIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIHVwZGF0
ZSBhbiBleGlzdGluZyBjb21taXR0ZXIgaWYgdGhlcmUgaXMgb25lIiwgKCkgPT4gewogICAgICAg
ICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgY29uc3QgYXV0aG9y
ID0gc3VidmVyc2lvbkNvbW1pdC5jb21taXRzWzBdWydhdXRob3InXTsKLSAgICAgICAgYWRkU2xh
dmVGb3JSZXBvcnQoc3VidmVyc2lvbkNvbW1pdCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
IHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzdWJ2ZXJzaW9uQ29tbWl0KS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdyZXBvc2l0b3JpZXMnLCB7J2lkJzogMSwgJ25hbWUnOiAnV2ViS2l0J30pLAogICAgICAg
ICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0dGVycycsIHsncmVwb3NpdG9yeSc6IDEsICdhY2Nv
dW50JzogYXV0aG9yWydhY2NvdW50J119KSwKICAgICAgICAgICAgIF0pOwotICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0
cy8nLCBzdWJ2ZXJzaW9uQ29tbWl0KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9u
c2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIGRi
LnNlbGVjdEFsbCgnY29tbWl0dGVycycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb21t
aXR0ZXJzKSB7CisgICAgICAgIH0pLnRoZW4oKGNvbW1pdHRlcnMpID0+IHsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb21taXR0ZXJzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29tbWl0dGVyc1swXVsnbmFtZSddLCBhdXRob3JbJ25hbWUnXSk7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29tbWl0dGVyc1swXVsnYWNjb3VudCddLCBhdXRob3JbJ2FjY291bnQn
XSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAg
ICB9KTsKICAgICB9KTsKIAogICAgIGNvbnN0IHNhbWVSZXBvc2l0b3J5TmFtZUluU3ViQ29tbWl0
QW5kTWFqb3JDb21taXQgPSB7CkBAIC0zMTcsMjIgKzI5OCwyMCBAQCBkZXNjcmliZSgiL2FwaS9y
ZXBvcnQtY29tbWl0cy8iLCBmdW5jdGlvCiAgICAgICAgIF0KICAgICB9CiAKLSAgICBpdCgic2hv
dWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4gcmVwb3NpdG9yaWVzIHdpdGggdGhlIGFzbWUgbmFtZSBi
dXQgd2l0aCBhIGRpZmZlcmVudCBvd25lci4iLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBj
b25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgYWRkU2xhdmVGb3JSZXBv
cnQoc2FtZVJlcG9zaXRvcnlOYW1lSW5TdWJDb21taXRBbmRNYWpvckNvbW1pdCkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHJlcG9zaXRvcmll
cyB3aXRoIHRoZSBhc21lIG5hbWUgYnV0IHdpdGggYSBkaWZmZXJlbnQgb3duZXIuIiwgKCkgPT4g
eworICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc2FtZVJlcG9zaXRvcnlOYW1lSW5T
dWJDb21taXRBbmRNYWpvckNvbW1pdCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBz
YW1lUmVwb3NpdG9yeU5hbWVJblN1YkNvbW1pdEFuZE1ham9yQ29tbWl0KTsKLSAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+
IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwot
ICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFtZSc6
ICdXZWJLaXQnfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RSb3dzKCdyZXBvc2l0b3Jp
ZXMnLCB7J25hbWUnOiAnV2ViS2l0J30pOworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGVuZ3RoLCAyKTsKICAgICAgICAgICAg
IGxldCBvc1dlYktpdCA9IHJlc3VsdFswXTsKICAgICAgICAgICAgIGxldCB3ZWJraXRSZXBvc2l0
b3J5ID0gcmVzdWx0WzFdOwogICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG9zV2ViS2l0Lmlk
LCB3ZWJraXRSZXBvc2l0b3J5LmlkKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc1dlYktp
dC5uYW1lLCB3ZWJraXRSZXBvc2l0b3J5Lm5hbWUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHdlYmtpdFJlcG9zaXRvcnkub3duZXIsIG51bGwpOwotICAgICAgICAgICAgZG9uZSgpOwotICAg
ICAgICB9KQorICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGNvbnN0IHN5c3RlbVZlcnNpb25D
b21taXRXaXRoU3ViY29tbWl0cyA9IHsKQEAgLTM1OSwxMSArMzM4LDExIEBAIGRlc2NyaWJlKCIv
YXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1bmN0aW8KICAgICAgICAgXQogICAgIH0KIAotICAgIGl0
KCJzaG91bGQgYWNjZXB0IGluc2VydGluZyBvbmUgY29tbWl0IHdpdGggc29tZSBzdWIgY29tbWl0
cyIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNob3VsZCBhY2NlcHQgaW5zZXJ0aW5nIG9u
ZSBjb21taXQgd2l0aCBzb21lIHN1YiBjb21taXRzIiwgKCkgPT4gewogICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3lz
dGVtVmVyc2lvbkNvbW1pdFdpdGhTdWJjb21taXRzKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21taXRXaXRoU3ViY29t
bWl0cykudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0
V2l0aFN1YmNvbW1pdHMpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5h
bGwoW2RiLnNlbGVjdFJvd3MoJ2NvbW1pdHMnLCB7J3JldmlzaW9uJzogJ1NpZXJyYTE2RDMyJ30p
LAogICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ2NvbW1pdHMnLCB7J21lc3NhZ2UnOiAn
V2ViS2l0IENvbW1pdCd9KSwKQEAgLTM3MSw3ICszNTAsNyBAQCBkZXNjcmliZSgiL2FwaS9yZXBv
cnQtY29tbWl0cy8iLCBmdW5jdGlvCiAgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygncmVw
b3NpdG9yaWVzJywgeyduYW1lJzogJ09TWCd9KSwKICAgICAgICAgICAgICAgICBkYi5zZWxlY3RS
b3dzKCdyZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAiV2ViS2l0In0pLAogICAgICAgICAgICAgICAg
IGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFtZSc6ICdKYXZhU2NyaXB0Q29yZSd9
KV0pCi0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGVuZ3RoLCA2
KTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFswXS5sZW5ndGgsIDEpOwpAQCAt
NDA4LDcgKzM4Nyw3IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1bmN0aW8K
ICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0Um93cygnY29tbWl0X293
bmVyc2hpcHMnLCB7J293bmVyJzogb3N4Q29tbWl0LmlkLCAnb3duZWQnOiB3ZWJraXRDb21taXQu
aWR9LCB7J3NvcnRCeSc6ICdvd25lcid9KSwKICAgICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dz
KCdjb21taXRfb3duZXJzaGlwcycsIHsnb3duZXInOiBvc3hDb21taXQuaWQsICdvd25lZCc6IGpz
Y0NvbW1pdC5pZH0sIHsnc29ydEJ5JzogJ293bmVyJ30pLAogICAgICAgICAgICAgICAgIGRiLnNl
bGVjdFJvd3MoJ2NvbW1pdHMnLCB7J3JlcG9zaXRvcnknOiB3ZWJraXRSZXBvc2l0b3J5LmlkfSld
KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4o
KHJlc3VsdCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdC5sZW5ndGgsIDMp
OwogCiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WzBdLmxlbmd0aCwgMSk7CkBAIC00
MjAsOCArMzk5LDcgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0LWNvbW1pdHMvIiwgZnVuY3Rpbwog
ICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKG93bmVyQ29tbWl0Rm9ySlNDQ29tbWl0LCBudWxs
KTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFsyXS5sZW5ndGgsIDEpOwotICAg
ICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAg
ICAgfSkKIAogICAgIGNvbnN0IG11bHRpcGxlU3lzdGVtVmVyc2lvbkNvbW1pdHNXaXRoU3ViY29t
bWl0cyA9IHsKQEAgLTQ2NSwxMSArNDQzLDExIEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21t
aXRzLyIsIGZ1bmN0aW8KICAgICAgICAgXQogICAgIH07CiAKLSAgICBpdCgic2hvdWxkIGFjY2Vw
dCBpbnNlcnRpbmcgbXVsdGlwbGUgY29tbWl0cyB3aXRoIG11bHRpcGxlIHN1Yi1jb21taXRzIiwg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIGFjY2VwdCBpbnNlcnRpbmcgbXVsdGlw
bGUgY29tbWl0cyB3aXRoIG11bHRpcGxlIHN1Yi1jb21taXRzIiwgKCkgPT4gewogICAgICAgICBj
b25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgYWRkU2xhdmVGb3JSZXBv
cnQobXVsdGlwbGVTeXN0ZW1WZXJzaW9uQ29tbWl0c1dpdGhTdWJjb21taXRzKS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KG11bHRpcGxlU3lzdGVt
VmVyc2lvbkNvbW1pdHNXaXRoU3ViY29tbWl0cykudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQtY29tbWl0
cy8nLCBtdWx0aXBsZVN5c3RlbVZlcnNpb25Db21taXRzV2l0aFN1YmNvbW1pdHMpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09L
Jyk7CiAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdFJvd3MoJ2NvbW1p
dHMnLCB7J3JldmlzaW9uJzogJ1NpZXJyYTE2RDMyJ30pLAogICAgICAgICAgICAgICAgIGRiLnNl
bGVjdFJvd3MoJ2NvbW1pdHMnLCB7J3JldmlzaW9uJzogJ1NpZXJyYTE2QzY3J30pLApAQCAtNDc5
LDcgKzQ1Nyw3IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1bmN0aW8KICAg
ICAgICAgICAgICAgICBkYi5zZWxlY3RSb3dzKCdyZXBvc2l0b3JpZXMnLCB7J25hbWUnOiAnT1NY
J30pLAogICAgICAgICAgICAgICAgIGRiLnNlbGVjdFJvd3MoJ3JlcG9zaXRvcmllcycsIHsnbmFt
ZSc6ICJXZWJLaXQifSksCiAgICAgICAgICAgICAgICAgZGIuc2VsZWN0Um93cygncmVwb3NpdG9y
aWVzJywgeyduYW1lJzogJ0phdmFTY3JpcHRDb3JlJ30pXSkKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3VsdC5sZW5ndGgsIDgpOwogCiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzdWx0WzBdLmxlbmd0aCwgMSk7CkBAIC01MjksNyArNTA3LDcgQEAgZGVzY3JpYmUo
Ii9hcGkvcmVwb3J0LWNvbW1pdHMvIiwgZnVuY3RpbwogICAgICAgICAgICAgICAgIGRiLnNlbGVj
dFJvd3MoJ2NvbW1pdF9vd25lcnNoaXBzJywgeydvd25lcic6IG9zeENvbW1pdDAuaWQsICdvd25l
ZCc6IGpzY0NvbW1pdDAuaWR9LCB7J3NvcnRCeSc6ICdvd25lcid9KSwKICAgICAgICAgICAgICAg
ICBkYi5zZWxlY3RSb3dzKCdjb21taXRfb3duZXJzaGlwcycsIHsnb3duZXInOiBvc3hDb21taXQx
LmlkLCAnb3duZWQnOiBqc2NDb21taXQxLmlkfSwgeydzb3J0QnknOiAnb3duZXInfSksCiAgICAg
ICAgICAgICAgICAgZGIuc2VsZWN0Um93cygnY29tbWl0cycsIHsncmVwb3NpdG9yeSc6IHdlYmtp
dFJlcG9zaXRvcnkuaWR9KV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsK
KyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzdWx0Lmxlbmd0aCwgNSk7CiAKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbMF0u
bGVuZ3RoLCAxKTsKQEAgLTU0OSw5ICs1MjcsNyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQtY29t
bWl0cy8iLCBmdW5jdGlvCiAgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwob3duZXJDb21taXRG
b3JKU0NDb21taXQxLCBudWxsKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFs0
XS5sZW5ndGgsIDEpOwotCi0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRv
bmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGNvbnN0IHN5c3RlbVZlcnNpb25Db21t
aXRXaXRoRW1wdHlTdWJjb21taXRzID0gewpAQCAtNTY4LDE0ICs1NDQsMTQgQEAgZGVzY3JpYmUo
Ii9hcGkvcmVwb3J0LWNvbW1pdHMvIiwgZnVuY3RpbwogICAgICAgICBdCiAgICAgfQogCi0gICAg
aXQoInNob3VsZCBhY2NlcHQgaW5zZXJ0aW5nIG9uZSBjb21taXQgd2l0aCBubyBzdWIgY29tbWl0
cyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRh
YmFzZSgpOwotICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJzaW9uQ29tbWl0V2l0
aEVtcHR5U3ViY29tbWl0cykudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBhY2Nl
cHQgaW5zZXJ0aW5nIG9uZSBjb21taXQgd2l0aCBubyBzdWIgY29tbWl0cyIsICgpID0+IHsKKyAg
ICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHN5c3RlbVZlcnNpb25Db21taXRXaXRoRW1w
dHlTdWJjb21taXRzKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC1jb21taXRzLycsIHN5c3RlbVZlcnNp
b25Db21taXRXaXRoRW1wdHlTdWJjb21taXRzKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgY29u
c3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5hbGwoW2RiLnNlbGVjdEFsbCgnY29tbWl0cycpLCBkYi5zZWxlY3RBbGwoJ3JlcG9zaXRvcmll
cycpLCBkYi5zZWxlY3RBbGwoJ2NvbW1pdF9vd25lcnNoaXBzJywgJ293bmVyJyldKTsKLSAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkg
PT4gewogICAgICAgICAgICAgbGV0IGNvbW1pdHMgPSByZXN1bHRbMF07CiAgICAgICAgICAgICBs
ZXQgcmVwb3NpdG9yaWVzID0gcmVzdWx0WzFdOwogICAgICAgICAgICAgbGV0IGNvbW1pdF9vd25l
cnNoaXBzID0gcmVzdWx0WzJdOwpAQCAtNTg0LDggKzU2MCw3IEBAIGRlc2NyaWJlKCIvYXBpL3Jl
cG9ydC1jb21taXRzLyIsIGZ1bmN0aW8KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRz
WzBdLnJlcG9zaXRvcnksIHJlcG9zaXRvcmllc1swXS5pZCk7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVwb3NpdG9yaWVzWzBdLm5hbWUsICdPU1gnKTsKICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRfb3duZXJzaGlwcy5sZW5ndGgsIDApOwotICAgICAgICAgICAgZG9uZSgpOwot
ICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKICAgICBjb25z
dCBzeXN0ZW1WZXJzaW9uQ29tbWl0QW5kU3ViY29tbWl0V2l0aFRpbWVzdGFtcCA9IHsKQEAgLTYw
OCwxMyArNTgzLDExIEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydC1jb21taXRzLyIsIGZ1bmN0aW8K
ICAgICAgICAgXQogICAgIH0KIAotICAgIGl0KCJzaG91bGQgcmVqZWN0IGluc2VydGluZyBvbmUg
Y29tbWl0IHdpdGggc3ViIGNvbW1pdHMgdGhhdCBjb250YWlucyB0aW1lc3RhbXAiLCBmdW5jdGlv
biAoZG9uZSkgewotICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAg
ICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoc3lzdGVtVmVyc2lvbkNvbW1pdEFuZFN1YmNvbW1pdFdp
dGhUaW1lc3RhbXApLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgcmVqZWN0IGlu
c2VydGluZyBvbmUgY29tbWl0IHdpdGggc3ViIGNvbW1pdHMgdGhhdCBjb250YWlucyB0aW1lc3Rh
bXAiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzeXN0ZW1WZXJz
aW9uQ29tbWl0QW5kU3ViY29tbWl0V2l0aFRpbWVzdGFtcCkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQt
Y29tbWl0cy8nLCBzeXN0ZW1WZXJzaW9uQ29tbWl0QW5kU3ViY29tbWl0V2l0aFRpbWVzdGFtcCk7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4o
KHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1
cyddLCAnU3ViQ29tbWl0U2hvdWxkTm90Q29udGFpblRpbWVzdGFtcCcpOwotICAgICAgICAgICAg
ZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9
KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXJlcG9y
dC10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL2FwaS1yZXBvcnQtdGVzdHMuanMJKHJldmlzaW9uIDIxMzk2NSkKKysrIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXJlcG9ydC10ZXN0cy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtNSwxMiArNSwxMCBAQCBjb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQn
KTsKIGNvbnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5q
cycpOwogY29uc3QgYWRkQnVpbGRlckZvclJlcG9ydCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2Nv
bW1vbi1vcGVyYXRpb25zLmpzJykuYWRkQnVpbGRlckZvclJlcG9ydDsKIGNvbnN0IGFkZFNsYXZl
Rm9yUmVwb3J0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5h
ZGRTbGF2ZUZvclJlcG9ydDsKLWNvbnN0IGNvbm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3QgPSBy
ZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLmNvbm5lY3RUb0RhdGFi
YXNlSW5FdmVyeVRlc3Q7Citjb25zdCBwcmVwYXJlU2VydmVyVGVzdCA9IHJlcXVpcmUoJy4vcmVz
b3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykucHJlcGFyZVNlcnZlclRlc3Q7CiAKIGRlc2Ny
aWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLnRpbWVvdXQoMTAwMCk7
Ci0gICAgVGVzdFNlcnZlci5pbmplY3QoKTsKLSAgICBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlU
ZXN0KCk7CisgICAgcHJlcGFyZVNlcnZlclRlc3QodGhpcyk7CiAKICAgICBmdW5jdGlvbiBlbXB0
eVJlcG9ydCgpCiAgICAgewpAQCAtNTYsMzYgKzU0LDMzIEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9y
dCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfTsKICAgICB9CiAKLSAgICBpdCgic2hvdWxkIHJl
amVjdCBlcnJvciB3aGVuIGJ1aWxkZXIgbmFtZSBpcyBtaXNzaW5nIiwgZnVuY3Rpb24gKGRvbmUp
IHsKLSAgICAgICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQv
JywgW3siYnVpbGRUaW1lIjogIjIwMTMtMDItMjhUMTA6MTI6MDMuMzg4MzA0In1dKS50aGVuKGZ1
bmN0aW9uIChyZXNwb25zZSkgeworICAgIGl0KCJzaG91bGQgcmVqZWN0IGVycm9yIHdoZW4gYnVp
bGRlciBuYW1lIGlzIG1pc3NpbmciLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbeyJidWlsZFRpbWUiOiAiMjAx
My0wMi0yOFQxMDoxMjowMy4zODgzMDQifV0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnTWlzc2luZ0J1aWxkZXJOYW1l
Jyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAg
ICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgcmVqZWN0IGVycm9yIHdoZW4gYnVpbGQg
dGltZSBpcyBtaXNzaW5nIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZv
clJlcG9ydChlbXB0eVJlcG9ydCgpKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxk
IHJlamVjdCBlcnJvciB3aGVuIGJ1aWxkIHRpbWUgaXMgbWlzc2luZyIsICgpID0+IHsKKyAgICAg
ICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSkudGhlbigoKSA9PiB7
CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2Fw
aS9yZXBvcnQvJywgW3siYnVpbGRlck5hbWUiOiAic29tZUJ1aWxkZXIiLCAiYnVpbGRlclBhc3N3
b3JkIjogInNvbWVQYXNzd29yZCJ9XSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3Bv
bnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnTWlzc2luZ0J1aWxkVGltZScpOwotICAgICAg
ICAgICAgZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgcmVq
ZWN0IHdoZW4gdGhlcmUgYXJlIG5vIGJ1aWxkZXJzIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAg
ICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW2VtcHR5
UmVwb3J0KCldKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgIGl0KCJzaG91bGQgcmVq
ZWN0IHdoZW4gdGhlcmUgYXJlIG5vIGJ1aWxkZXJzIiwgKCkgPT4geworICAgICAgICByZXR1cm4g
VGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW2VtcHR5UmVw
b3J0KCldKS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3BvbnNlWydzdGF0dXMnXSwgJ0J1aWxkZXJOb3RGb3VuZCcpOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlWydmYWlsdXJlU3RvcmVkJ10sIGZhbHNlKTsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXNwb25zZVsncHJvY2Vzc2VkUnVucyddLCAwKTsKICAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdyZXBvcnRzJyk7Ci0gICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKHJlcG9ydHMpIHsKKyAgICAgICAgfSkudGhlbigocmVwb3J0cykg
PT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9ydHMubGVuZ3RoLCAwKTsKLSAgICAg
ICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAg
IH0pOwogCi0gICAgaXQoInNob3VsZCByZWplY3QgYSByZXBvcnQgd2l0aG91dCBhIGJ1aWxkZXIg
cGFzc3dvcmQiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0
KGVtcHR5UmVwb3J0KCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgcmVqZWN0
IGEgcmVwb3J0IHdpdGhvdXQgYSBidWlsZGVyIHBhc3N3b3JkIiwgKCkgPT4geworICAgICAgICBy
ZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChlbXB0eVJlcG9ydCgpKS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgIHZhciByZXBvcnQgPSBbewogICAgICAgICAgICAgICAgICJidWlsZE51bWJlciI6
ICIxMjMiLAogICAgICAgICAgICAgICAgICJidWlsZFRpbWUiOiAiMjAxMy0wMi0yOFQxMDoxMjow
My4zODgzMDQiLApAQCAtOTMsMjYgKzg4LDI1IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAidGVzdHMiOiB7fSwKICAgICAgICAgICAgICAg
ICAicmV2aXNpb25zIjoge319XTsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnQpOwotICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0J1aWxkZXJOb3RG
b3VuZCcpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydmYWlsdXJlU3RvcmVk
J10sIGZhbHNlKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsncHJvY2Vzc2Vk
UnVucyddLCAwKTsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2Vs
ZWN0QWxsKCdyZXBvcnRzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcG9ydHMpIHsK
KyAgICAgICAgfSkudGhlbigocmVwb3J0cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcG9ydHMubGVuZ3RoLCAwKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0
Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBzdG9yZSBh
IHJlcG9ydCBmcm9tIGEgdmFsaWQgYnVpbGRlciIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAg
IGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgaXQoInNob3VsZCBzdG9yZSBhIHJlcG9ydCBmcm9tIGEgdmFsaWQgYnVpbGRlciIsICgpID0+
IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0
SlNPTignL2FwaS9yZXBvcnQvJywgW2VtcHR5UmVwb3J0KCldKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydmYWlsdXJlU3RvcmVkJ10sIGZhbHNlKTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsncHJvY2Vzc2VkUnVucyddLCAxKTsKICAg
ICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdyZXBvcnRz
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcG9ydHMpIHsKKyAgICAgICAgfSkudGhl
bigocmVwb3J0cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9ydHMubGVuZ3Ro
LCAxKTsKICAgICAgICAgICAgIGNvbnN0IHN1Ym1pdHRlZENvbnRlbnQgPSBlbXB0eVJlcG9ydCgp
OwogICAgICAgICAgICAgY29uc3Qgc3RvcmVkQ29udGVudCA9IEpTT04ucGFyc2UocmVwb3J0c1sw
XVsnY29udGVudCddKTsKQEAgLTEyMSwyNCArMTE1LDIyIEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9y
dCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGRlbGV0ZSBzdWJtaXR0ZWRDb250ZW50Wyd0
ZXN0cyddOwogICAgICAgICAgICAgZGVsZXRlIHN0b3JlZENvbnRlbnRbJ3Rlc3RzJ107CiAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHN0b3JlZENvbnRlbnQsIHN1Ym1pdHRlZENvbnRlbnQp
OwotCi0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAg
ICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgdHJlYXQgdGhlIHNsYXZlIHBhc3N3b3Jk
IGFzIHRoZSBidWlsZGVyIHBhc3N3b3JkIGlmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHNsYXZlIiwg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIHRyZWF0IHRoZSBzbGF2ZSBwYXNzd29y
ZCBhcyB0aGUgYnVpbGRlciBwYXNzd29yZCBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzbGF2ZSIs
ICgpID0+IHsKICAgICAgICAgbGV0IHJlcG9ydCA9IGVtcHR5UmVwb3J0KCk7CiAgICAgICAgIHJl
cG9ydFsnc2xhdmVQYXNzd29yZCddID0gcmVwb3J0WydidWlsZGVyUGFzc3dvcmQnXTsKICAgICAg
ICAgZGVsZXRlIHJlcG9ydFsnYnVpbGRlclBhc3N3b3JkJ107CiAKLSAgICAgICAgYWRkU2xhdmVG
b3JSZXBvcnQocmVwb3J0KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFkZFNs
YXZlRm9yUmVwb3J0KHJlcG9ydCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW3JlcG9ydF0pOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMn
XSwgJ09LJyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ2ZhaWx1cmVTdG9y
ZWQnXSwgZmFsc2UpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydwcm9jZXNz
ZWRSdW5zJ10sIDEpOwogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5z
ZWxlY3RBbGwoJ3JlcG9ydHMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVwb3J0cykg
eworICAgICAgICB9KS50aGVuKChyZXBvcnRzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVwb3J0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3Qgc3RvcmVkQ29udGVudCA9
IEpTT04ucGFyc2UocmVwb3J0c1swXVsnY29udGVudCddKTsKIApAQCAtMTQ2LDIwICsxMzgsMTgg
QEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgZGVs
ZXRlIHJlcG9ydFsndGVzdHMnXTsKICAgICAgICAgICAgIGRlbGV0ZSBzdG9yZWRDb250ZW50Wyd0
ZXN0cyddOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzdG9yZWRDb250ZW50LCByZXBv
cnQpOwotCi0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgc3RvcmUgYSByZXBvcnQgZnJvbSBh
IHZhbGlkIHNsYXZlIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgYWRkU2xhdmVGb3JSZXBv
cnQoZW1wdHlTbGF2ZVJlcG9ydCgpKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxk
IHN0b3JlIGEgcmVwb3J0IGZyb20gYSB2YWxpZCBzbGF2ZSIsICgpID0+IHsKKyAgICAgICAgcmV0
dXJuIGFkZFNsYXZlRm9yUmVwb3J0KGVtcHR5U2xhdmVSZXBvcnQoKSkudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9y
ZXBvcnQvJywgW2VtcHR5U2xhdmVSZXBvcnQoKV0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9u
IChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ2ZhaWx1cmVTdG9yZWQnXSwgZmFsc2UpOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydwcm9jZXNzZWRSdW5zJ10sIDEpOwogICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ3JlcG9ydHMnKTsKLSAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVwb3J0cykgeworICAgICAgICB9KS50aGVuKChyZXBv
cnRzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3J0cy5sZW5ndGgsIDEpOwog
ICAgICAgICAgICAgY29uc3Qgc3VibWl0dGVkQ29udGVudCA9IGVtcHR5U2xhdmVSZXBvcnQoKTsK
ICAgICAgICAgICAgIGNvbnN0IHN0b3JlZENvbnRlbnQgPSBKU09OLnBhcnNlKHJlcG9ydHNbMF1b
J2NvbnRlbnQnXSk7CkBAIC0xNjgsODggKzE1OCw4MSBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQi
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBkZWxldGUgc3VibWl0dGVkQ29udGVudFsndGVz
dHMnXTsKICAgICAgICAgICAgIGRlbGV0ZSBzdG9yZWRDb250ZW50Wyd0ZXN0cyddOwogICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzdG9yZWRDb250ZW50LCBzdWJtaXR0ZWRDb250ZW50KTsK
LQotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAg
fSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIHN0b3JlIHRoZSBidWlsZGVyIG5hbWUgYnV0
IG5vdCB0aGUgYnVpbGRlciBwYXNzd29yZCIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFk
ZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
aXQoInNob3VsZCBzdG9yZSB0aGUgYnVpbGRlciBuYW1lIGJ1dCBub3QgdGhlIGJ1aWxkZXIgcGFz
c3dvcmQiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5
UmVwb3J0KCkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtlbXB0eVJlcG9ydCgpXSk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVj
dEFsbCgncmVwb3J0cycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXBvcnRzKSB7Cisg
ICAgICAgIH0pLnRoZW4oKHJlcG9ydHMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXBvcnRzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICBjb25zdCBzdG9yZWRDb250ZW50ID0gSlNP
Ti5wYXJzZShyZXBvcnRzWzBdWydjb250ZW50J10pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHN0b3JlZENvbnRlbnRbJ2J1aWxkZXJOYW1lJ10sIGVtcHR5UmVwb3J0KClbJ2J1aWxkZXJOYW1l
J10pOwogICAgICAgICAgICAgYXNzZXJ0KCEoJ2J1aWxkZXJQYXNzd29yZCcgaW4gc3RvcmVkQ29u
dGVudCkpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGFkZCBhIHNsYXZlIGlmIHRoZXJl
IGlzbid0IG9uZSBhbmQgdGhlIHJlcG9ydCB3YXMgYXV0aGVudGljYXRlZCBieSBhIGJ1aWxkZXIi
LCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5UmVw
b3J0KCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgYWRkIGEgc2xhdmUgaWYg
dGhlcmUgaXNuJ3Qgb25lIGFuZCB0aGUgcmVwb3J0IHdhcyBhdXRoZW50aWNhdGVkIGJ5IGEgYnVp
bGRlciIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlS
ZXBvcnQoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW2VtcHR5UmVwb3J0KCldKTsKLSAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9u
c2UpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0
QWxsKCdidWlsZF9zbGF2ZXMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoc2xhdmVzKSB7
CisgICAgICAgIH0pLnRoZW4oKHNsYXZlcykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHNsYXZlcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNsYXZlc1swXVsn
bmFtZSddLCBlbXB0eVJlcG9ydCgpWydzbGF2ZU5hbWUnXSk7Ci0gICAgICAgICAgICBkb25lKCk7
Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0
KCJzaG91bGQgYWRkIGEgYnVpbGRlciBpZiB0aGVyZSBpc24ndCBvbmUgYW5kIHRoZSByZXBvcnQg
d2FzIGF1dGhlbnRpY2F0ZWQgYnkgYSBzbGF2ZSIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAg
IGFkZFNsYXZlRm9yUmVwb3J0KGVtcHR5U2xhdmVSZXBvcnQoKSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgaXQoInNob3VsZCBhZGQgYSBidWlsZGVyIGlmIHRoZXJlIGlzbid0IG9uZSBhbmQgdGhl
IHJlcG9ydCB3YXMgYXV0aGVudGljYXRlZCBieSBhIHNsYXZlIiwgKCkgPT4geworICAgICAgICBy
ZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoZW1wdHlTbGF2ZVJlcG9ydCgpKS50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBp
L3JlcG9ydC8nLCBbZW1wdHlTbGF2ZVJlcG9ydCgpXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgnYnVpbGRlcnMnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoYnVpbGRlcnMpIHsKKyAgICAgICAgfSkudGhlbigo
YnVpbGRlcnMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZGVycy5sZW5ndGgs
IDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkZXJzWzBdWyduYW1lJ10sIGVtcHR5
UmVwb3J0KClbJ2J1aWxkZXJOYW1lJ10pOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9
KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGFk
ZCBhIGJ1aWxkIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9y
dChlbXB0eVJlcG9ydCgpKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIGFkZCBh
IGJ1aWxkIiwgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChlbXB0
eVJlcG9ydCgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbZW1wdHlSZXBvcnQoKV0pOwotICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgnYnVpbGRzJyk7
Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGJ1aWxkcykgeworICAgICAgICB9KS50aGVuKChi
dWlsZHMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChidWlsZHNbMF1bJ251
bWJlciddLCAxMjMpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25l
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGFkZCB0aGUgcGxhdGZv
cm0iLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KGVtcHR5
UmVwb3J0KCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgYWRkIHRoZSBwbGF0
Zm9ybSIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlS
ZXBvcnQoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW2VtcHR5UmVwb3J0KCldKTsKLSAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ3BsYXRmb3Jtcycp
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChwbGF0Zm9ybXMpIHsKKyAgICAgICAgfSkudGhl
bigocGxhdGZvcm1zKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocGxhdGZvcm1zLmxl
bmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocGxhdGZvcm1zWzBdWyduYW1lJ10s
ICdNb3VudGFpbiBMaW9uJyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNo
KGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgYWRkIHJlcG9z
aXRvcmllcyBhbmQgYnVpbGQgcmV2aXNpb25zIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAg
YWRkQnVpbGRlckZvclJlcG9ydChlbXB0eVJlcG9ydCgpKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICBpdCgic2hvdWxkIGFkZCByZXBvc2l0b3JpZXMgYW5kIGJ1aWxkIHJldmlzaW9ucyIsICgpID0+
IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSkudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0
SlNPTignL2FwaS9yZXBvcnQvJywgW2VtcHR5UmVwb3J0KCldKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAg
ICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgICAgICBkYi5zZWxlY3RBbGwoJ3JlcG9z
aXRvcmllcycpLAogICAgICAgICAgICAgICAgIGRiLnNlbGVjdEFsbCgnY29tbWl0cycpLAogICAg
ICAgICAgICAgICAgIGRiLnNlbGVjdEFsbCgnYnVpbGRfY29tbWl0cycsICdidWlsZF9jb21taXQn
KSwKICAgICAgICAgICAgIF0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsK
KyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBjb25zdCByZXBvc2l0
b3JpZXMgPSByZXN1bHRbMF07CiAgICAgICAgICAgICBjb25zdCBjb21taXRzID0gcmVzdWx0WzFd
OwogICAgICAgICAgICAgY29uc3QgYnVpbGRDb21taXRzUmVsYXRpb25zID0gcmVzdWx0WzJdOwog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcmllcy5sZW5ndGgsIDIpOwotICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXBvc2l0b3JpZXMubWFwKGZ1bmN0aW9uIChyb3cpIHsg
cmV0dXJuIHJvd1snbmFtZSddOyB9KS5zb3J0KCksIFsnT1MgWCcsICdXZWJLaXQnXSk7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcG9zaXRvcmllcy5tYXAoKHJvdykgPT4geyByZXR1
cm4gcm93WyduYW1lJ107IH0pLnNvcnQoKSwgWydPUyBYJywgJ1dlYktpdCddKTsKIAogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChidWlsZENvbW1pdHNSZWxhdGlvbnMubGVuZ3RoLCAyKTsKQEAgLTI2OSw1OCArMjUy
LDU1IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXBvc2l0b3J5TmFtZVRvUmV2aXNpb25Sb3dbJ1dlYktpdCddWydyZXZp
c2lvbiddLCAnMTQxOTc3Jyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeU5h
bWVUb1JldmlzaW9uUm93WydXZWJLaXQnXVsndGltZSddLnRvU3RyaW5nKCksCiAgICAgICAgICAg
ICAgICAgbmV3IERhdGUoJzIwMTMtMDItMDYgMDg6NTU6MjAuOScpLnRvU3RyaW5nKCkpOwotICAg
ICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAg
ICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIG5vdCBjcmVhdGUgYSBkdXBsaWNhdGUgYnVpbGQgZm9y
IHRoZSBzYW1lIGJ1aWxkIG51bWJlciBpZiBidWlsZCB0aW1lcyBhcmUgY2xvc2UiLCBmdW5jdGlv
biAoZG9uZSkgewotICAgICAgICBsZXQgZmlyc3RSZXBvcnQgPSBlbXB0eVJlcG9ydCgpOworICAg
IGl0KCJzaG91bGQgbm90IGNyZWF0ZSBhIGR1cGxpY2F0ZSBidWlsZCBmb3IgdGhlIHNhbWUgYnVp
bGQgbnVtYmVyIGlmIGJ1aWxkIHRpbWVzIGFyZSBjbG9zZSIsICgpID0+IHsKKyAgICAgICAgY29u
c3QgZmlyc3RSZXBvcnQgPSBlbXB0eVJlcG9ydCgpOwogICAgICAgICBmaXJzdFJlcG9ydFsnYnVp
bGRUaW1lJ10gPSAnMjAxMy0wMi0yOFQxMDoxMjowNCc7Ci0gICAgICAgIGxldCBzZWNvbmRSZXBv
cnQgPSBlbXB0eVJlcG9ydCgpOworICAgICAgICBjb25zdCBzZWNvbmRSZXBvcnQgPSBlbXB0eVJl
cG9ydCgpOwogICAgICAgICBzZWNvbmRSZXBvcnRbJ2J1aWxkVGltZSddID0gJzIwMTMtMDItMjhU
MTA6MjI6MDMnOwogCi0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1wdHlSZXBvcnQoKSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KGVt
cHR5UmVwb3J0KCkpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtmaXJzdFJlcG9ydF0pOwotICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50aGVuKChyZXNw
b25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwg
J09LJyk7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFs
bCgnYnVpbGRzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGJ1aWxkcykgeworICAgICAg
ICB9KS50aGVuKChidWlsZHMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZHMu
bGVuZ3RoLCAxKTsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBv
c3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbc2Vjb25kUmVwb3J0XSk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxsKCdidWlsZHMnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoYnVpbGRzKSB7CisgICAgICAgIH0pLnRoZW4oKGJ1
aWxkcykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkcy5sZW5ndGgsIDEpOwot
ICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7
CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIGNyZWF0ZSBkaXN0aW5jdCBidWlsZHMgZm9yIHRo
ZSBzYW1lIGJ1aWxkIG51bWJlciBpZiBidWlsZCB0aW1lcyBhcmUgZmFyIGFwYXJ0IiwgZnVuY3Rp
b24gKGRvbmUpIHsKLSAgICAgICAgbGV0IGZpcnN0UmVwb3J0ID0gZW1wdHlSZXBvcnQoKTsKKyAg
ICBpdCgic2hvdWxkIGNyZWF0ZSBkaXN0aW5jdCBidWlsZHMgZm9yIHRoZSBzYW1lIGJ1aWxkIG51
bWJlciBpZiBidWlsZCB0aW1lcyBhcmUgZmFyIGFwYXJ0IiwgKCkgPT4geworICAgICAgICBjb25z
dCBmaXJzdFJlcG9ydCA9IGVtcHR5UmVwb3J0KCk7CiAgICAgICAgIGZpcnN0UmVwb3J0WydidWls
ZFRpbWUnXSA9ICcyMDEzLTAyLTI4VDEwOjEyOjAzJzsKLSAgICAgICAgbGV0IHNlY29uZFJlcG9y
dCA9IGVtcHR5UmVwb3J0KCk7CisgICAgICAgIGNvbnN0IHNlY29uZFJlcG9ydCA9IGVtcHR5UmVw
b3J0KCk7CiAgICAgICAgIHNlY29uZFJlcG9ydFsnYnVpbGRUaW1lJ10gPSAnMjAxNC0wMS0yMFQy
MjoyMzozNCc7CiAKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9ydChlbXB0eVJlcG9ydCgpKS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQoZW1w
dHlSZXBvcnQoKSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgW2ZpcnN0UmVwb3J0XSk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
T0snKTsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLmRhdGFiYXNlKCkuc2VsZWN0QWxs
KCdidWlsZHMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoYnVpbGRzKSB7CisgICAgICAg
IH0pLnRoZW4oKGJ1aWxkcykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkcy5s
ZW5ndGgsIDEpOwogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9z
dEpTT04oJy9hcGkvcmVwb3J0LycsIFtzZWNvbmRSZXBvcnRdKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ2J1aWxkcycpOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChidWlsZHMpIHsKKyAgICAgICAgfSkudGhlbigoYnVp
bGRzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRzLmxlbmd0aCwgMik7Ci0g
ICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsK
ICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgcmVqZWN0IGEgcmVwb3J0IHdpdGggbWlzbWF0Y2hp
bmcgcmV2aXNpb24gaW5mbyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGxldCBmaXJzdFJl
cG9ydCA9IGVtcHR5UmVwb3J0KCk7CisgICAgaXQoInNob3VsZCByZWplY3QgYSByZXBvcnQgd2l0
aCBtaXNtYXRjaGluZyByZXZpc2lvbiBpbmZvIiwgKCkgPT4geworICAgICAgICBjb25zdCBmaXJz
dFJlcG9ydCA9IGVtcHR5UmVwb3J0KCk7CiAgICAgICAgIGZpcnN0UmVwb3J0WydyZXZpc2lvbnMn
XSA9IHsKICAgICAgICAgICAgICJXZWJLaXQiOiB7CiAgICAgICAgICAgICAgICAgInJldmlzaW9u
IjogIjE0MTk3NyIsCkBAIC0zMjgsNyArMzA4LDcgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0Iiwg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGxldCBz
ZWNvbmRSZXBvcnQgPSBlbXB0eVJlcG9ydCgpOworICAgICAgICBjb25zdCBzZWNvbmRSZXBvcnQg
PSBlbXB0eVJlcG9ydCgpOwogICAgICAgICBzZWNvbmRSZXBvcnRbJ3JldmlzaW9ucyddID0gewog
ICAgICAgICAgICAgIldlYktpdCI6IHsKICAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTUw
MDAwIiwKQEAgLTMzNiwyMiArMzE2LDIxIEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAgICAgICBhZGRCdWlsZGVy
Rm9yUmVwb3J0KGZpcnN0UmVwb3J0KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJu
IGFkZEJ1aWxkZXJGb3JSZXBvcnQoZmlyc3RSZXBvcnQpLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0Lycs
IFtmaXJzdFJlcG9ydF0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewor
ICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgnYnVpbGRzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKGJ1aWxkcykgeworICAgICAgICB9KS50aGVuKChidWlsZHMpID0+IHsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChidWlsZHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbc2Vjb25kUmVwb3J0
XSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0
YXR1cyddLCAnTWlzbWF0Y2hpbmdDb21taXRSZXZpc2lvbicpOwogICAgICAgICAgICAgYXNzZXJ0
KEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlKS5pbmRleE9mKCcxNDE5NzcnKSA+PSAwKTsKICAgICAg
ICAgICAgIGFzc2VydChKU09OLnN0cmluZ2lmeShyZXNwb25zZSkuaW5kZXhPZignMTUwMDAwJykg
Pj0gMCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ2ZhaWx1cmVTdG9yZWQn
XSwgdHJ1ZSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3Byb2Nlc3NlZFJ1
bnMnXSwgMCk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOwor
ICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGNvbnN0IHJlcG9ydFdpdGhUd29MZXZlbHNPZkFn
Z3JlZ2F0aW9ucyA9IHsKQEAgLTQwMCwxNSArMzc5LDE1IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9y
dCIsIGZ1bmN0aW9uICgpIHsKIAogICAgIGZ1bmN0aW9uIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRl
ckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGRCdWlsZGVy
Rm9yUmVwb3J0KHJlcG9ydCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRC
dWlsZGVyRm9yUmVwb3J0KHJlcG9ydCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFs
bChbCiAgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCdhZ2dyZWdhdG9ycycsIHtuYW1lOiAnQXJp
dGhtZXRpYyd9KSwKICAgICAgICAgICAgICAgICBkYi5pbnNlcnQoJ2FnZ3JlZ2F0b3JzJywge25h
bWU6ICdHZW9tZXRyaWMnfSksCiAgICAgICAgICAgICBdKTsKLSAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRl
c3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtyZXBvcnRdKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigo
cmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVz
J10sICdPSycpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydmYWlsdXJlU3Rv
cmVkJ10sIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTsKQEAgLTQxOSwzNCAr
Mzk4LDMxIEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
cXVlcnlBbmRGZXRjaEFsbCgnU0VMRUNUICogRlJPTSB0ZXN0X3J1bnMgV0hFUkUgcnVuX2NvbmZp
ZyBJTicKICAgICAgICAgICAgICsgJyhTRUxFQ1QgY29uZmlnX2lkIEZST00gdGVzdF9jb25maWd1
cmF0aW9ucywgdGVzdF9tZXRyaWNzLCB0ZXN0cyBXSEVSRSBjb25maWdfbWV0cmljID0gbWV0cmlj
X2lkIEFORCBtZXRyaWNfdGVzdCA9IHRlc3RfaWQgQU5EJwogICAgICAgICAgICAgKyAndGVzdF9u
YW1lID0gJDEgQU5EIG1ldHJpY19uYW1lID0gJDIpJywKLSAgICAgICAgICAgIFsnQXJpdGhtZXRp
YycsICd2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhICsgYjsgfSkgLyB2
YWx1ZXMubGVuZ3RoJ10sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIFsnQXJpdGhtZXRpYycs
ICd2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhICsgYjsgfSkgLyB2YWx1
ZXMubGVuZ3RoJ10sICgpID0+IHsKICAgICAgICAgICAgIHF1ZXJ5QW5kRmV0Y2hBbGwoJ0lOU0VS
VCBJTlRPIGFnZ3JlZ2F0b3JzIChhZ2dyZWdhdG9yX25hbWUsIGFnZ3JlZ2F0b3JfZGVmaW5pdGlv
bikgdmFsdWVzICgkMSwgJDIpJywKICAgICAgICAgICAgICAgICBbJ0dlb21ldHJpYycsICdNYXRo
LnBvdyh2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhICogYjsgfSksIDEg
LyB2YWx1ZXMubGVuZ3RoKSddLCBjYWxsYmFjayk7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAg
IGl0KCJzaG91bGQgYWNjZXB0IGEgcmVwb3J0IHdpdGggYWdncmVnYXRvcnMiLCBmdW5jdGlvbiAo
ZG9uZSkgewotICAgICAgICByZXBvcnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhy
ZXBvcnRXaXRoVHdvTGV2ZWxzT2ZBZ2dyZWdhdGlvbnMpLnRoZW4oZnVuY3Rpb24gKCkgewotICAg
ICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICBpdCgic2hvdWxk
IGFjY2VwdCBhIHJlcG9ydCB3aXRoIGFnZ3JlZ2F0b3JzIiwgKCkgPT4geworICAgICAgICByZXR1
cm4gcmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFR3b0xl
dmVsc09mQWdncmVnYXRpb25zKTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgYWRkIHRlc3Rz
IiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgcmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVyQW5k
QWdncmVnYXRvcnMocmVwb3J0V2l0aFR3b0xldmVsc09mQWdncmVnYXRpb25zKS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICBpdCgic2hvdWxkIGFkZCB0ZXN0cyIsICgpID0+IHsKKyAgICAgICAgcmV0
dXJuIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydFdpdGhUd29M
ZXZlbHNPZkFnZ3JlZ2F0aW9ucykudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgndGVzdHMnKTsKLSAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAodGVzdHMpIHsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwodGVzdHMubWFw
KGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvd1snbmFtZSddOyB9KS5zb3J0KCksCisgICAgICAg
IH0pLnRoZW4oKHRlc3RzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHRlc3Rz
Lm1hcCgocm93KSA9PiB7IHJldHVybiByb3dbJ25hbWUnXTsgfSkuc29ydCgpLAogICAgICAgICAg
ICAgICAgIFsnQ1NTJywgJ0RPTScsICdEdW1teUJlbmNobWFyaycsICdEdW1teVBhZ2VMb2FkaW5n
JywgJ01vZGlmeU5vZGVzJywgJ1RyYXZlcnNlTm9kZXMnLCAnYXBwbGUuY29tJywgJ3dlYmtpdC5v
cmcnXSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgYWRkIG1ldHJpY3MiLCBmdW5jdGlv
biAoZG9uZSkgewotICAgICAgICByZXBvcnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9y
cyhyZXBvcnRXaXRoVHdvTGV2ZWxzT2ZBZ2dyZWdhdGlvbnMpLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgIGl0KCJzaG91bGQgYWRkIG1ldHJpY3MiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiByZXBv
cnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRXaXRoVHdvTGV2ZWxzT2ZB
Z2dyZWdhdGlvbnMpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKS5xdWVyeSgnU0VMRUNUICogRlJPTSB0ZXN0cywgdGVzdF9tZXRyaWNzIExFRlQg
Sk9JTiBhZ2dyZWdhdG9ycyBPTiBtZXRyaWNfYWdncmVnYXRvciA9IGFnZ3JlZ2F0b3JfaWQgV0hF
UkUgbWV0cmljX3Rlc3QgPSB0ZXN0X2lkJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJl
c3VsdCkgewotICAgICAgICAgICAgbGV0IHRlc3ROYW1lVG9NZXRyaWNzID0ge307Ci0gICAgICAg
ICAgICByZXN1bHQucm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHsKKyAgICAgICAgfSkudGhl
bigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICBjb25zdCB0ZXN0TmFtZVRvTWV0cmljcyA9IHt9
OworICAgICAgICAgICAgcmVzdWx0LnJvd3MuZm9yRWFjaCgocm93KSA9PiB7CiAgICAgICAgICAg
ICAgICAgaWYgKCEocm93Wyd0ZXN0X25hbWUnXSBpbiB0ZXN0TmFtZVRvTWV0cmljcykpCiAgICAg
ICAgICAgICAgICAgICAgIHRlc3ROYW1lVG9NZXRyaWNzW3Jvd1sndGVzdF9uYW1lJ11dID0gbmV3
IEFycmF5OwogICAgICAgICAgICAgICAgIHRlc3ROYW1lVG9NZXRyaWNzW3Jvd1sndGVzdF9uYW1l
J11dLnB1c2goW3Jvd1snbWV0cmljX25hbWUnXSwgcm93WydhZ2dyZWdhdG9yX25hbWUnXV0pOwpA
QCAtNDU5LDE1ICs0MzUsMTQgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh0ZXN0TmFtZVRvTWV0cmljc1snVHJhdmVy
c2VOb2RlcyddLCBbWydUaW1lJywgbnVsbF1dKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwodGVzdE5hbWVUb01ldHJpY3NbJ2FwcGxlLmNvbSddLCBbWydUaW1lJywgbnVsbF1dKTsKICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwodGVzdE5hbWVUb01ldHJpY3NbJ3dlYmtpdC5vcmcn
XSwgW1snVGltZScsIG51bGxdXSk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNh
dGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGZ1bmN0aW9uIGZldGNoVGVz
dENvbmZpZyh0ZXN0TmFtZSwgbWV0cmljTmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLmRhdGFiYXNlKCkucXVlcnkoYFNFTEVDVCAqIEZST00gdGVzdHMsIHRlc3RfbWV0cmlj
cywgdGVzdF9jb25maWd1cmF0aW9ucwogICAgICAgICAgICAgV0hFUkUgdGVzdF9pZCA9IG1ldHJp
Y190ZXN0IEFORCBtZXRyaWNfaWQgPSBjb25maWdfbWV0cmljCi0gICAgICAgICAgICBBTkQgdGVz
dF9uYW1lID0gJDEgQU5EIG1ldHJpY19uYW1lID0gJDJgLCBbdGVzdE5hbWUsIG1ldHJpY05hbWVd
KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgICAgIEFORCB0ZXN0X25hbWUgPSAk
MSBBTkQgbWV0cmljX25hbWUgPSAkMmAsIFt0ZXN0TmFtZSwgbWV0cmljTmFtZV0pLnRoZW4oKHJl
c3VsdCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQucm93cy5sZW5n
dGgsIDEpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucm93c1swXTsKICAgICAgICAg
ICAgIH0pOwpAQCAtNDc2LDE5ICs0NTEsMTkgQEAgZGVzY3JpYmUoIi9hcGkvcmVwb3J0IiwgZnVu
Y3Rpb24gKCkgewogICAgIGZ1bmN0aW9uIGZldGNoVGVzdFJ1bkl0ZXJhdGlvbnNGb3JNZXRyaWMo
dGVzdE5hbWUsIG1ldHJpY05hbWUpCiAgICAgewogICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgcmV0dXJuIGZldGNoVGVzdENvbmZpZyh0ZXN0TmFtZSwg
bWV0cmljTmFtZSkudGhlbihmdW5jdGlvbiAoY29uZmlnKSB7CisgICAgICAgIHJldHVybiBmZXRj
aFRlc3RDb25maWcodGVzdE5hbWUsIG1ldHJpY05hbWUpLnRoZW4oKGNvbmZpZykgPT4gewogICAg
ICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0X3J1bnMnLCB7Y29uZmlnOiBj
b25maWdbJ2NvbmZpZ19pZCddfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJ1bikgewot
ICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdFJvd3MoJ3J1bl9pdGVyYXRpb25zJywge3J1bjog
cnVuWydpZCddfSwge3NvcnRCeTogJ29yZGVyJ30pLnRoZW4oZnVuY3Rpb24gKGl0ZXJhdGlvbnMp
IHsKKyAgICAgICAgfSkudGhlbigocnVuKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gZGIuc2Vs
ZWN0Um93cygncnVuX2l0ZXJhdGlvbnMnLCB7cnVuOiBydW5bJ2lkJ119LCB7c29ydEJ5OiAnb3Jk
ZXInfSkudGhlbigoaXRlcmF0aW9ucykgPT4gewogICAgICAgICAgICAgICAgIHJldHVybiB7cnVu
OiBydW4sIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbnN9OwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwogICAgIH0KIAotICAgIGl0KCJzaG91bGQgc3RvcmUgcnVuIHZhbHVlcyIsIGZ1bmN0aW9u
IChkb25lKSB7Ci0gICAgICAgIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFnZ3JlZ2F0b3Jz
KHJlcG9ydFdpdGhUd29MZXZlbHNPZkFnZ3JlZ2F0aW9ucykudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgaXQoInNob3VsZCBzdG9yZSBydW4gdmFsdWVzIiwgKCkgPT4geworICAgICAgICByZXR1cm4g
cmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFR3b0xldmVs
c09mQWdncmVnYXRpb25zKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBmZXRjaFRl
c3RSdW5JdGVyYXRpb25zRm9yTWV0cmljKCdhcHBsZS5jb20nLCAnVGltZScpOwotICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7
CiAgICAgICAgICAgICBjb25zdCBydW4gPSByZXN1bHQucnVuOwogICAgICAgICAgICAgY29uc3Qg
cnVuSWQgPSBydW5bJ2lkJ107CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3VsdC5p
dGVyYXRpb25zLCBbCkBAIC00OTYsMTIgKzQ3MSwxMiBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQi
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAge3J1bjogcnVuSWQsIG9yZGVyOiAxLCBn
cm91cDogbnVsbCwgdmFsdWU6IDUxMCwgcmVsYXRpdmVfdGltZTogbnVsbH0sCiAgICAgICAgICAg
ICAgICAge3J1bjogcnVuSWQsIG9yZGVyOiAyLCBncm91cDogbnVsbCwgdmFsdWU6IDUyMCwgcmVs
YXRpdmVfdGltZTogbnVsbH0sCiAgICAgICAgICAgICAgICAge3J1bjogcnVuSWQsIG9yZGVyOiAz
LCBncm91cDogbnVsbCwgdmFsdWU6IDUzMCwgcmVsYXRpdmVfdGltZTogbnVsbH1dKTsKLSAgICAg
ICAgICAgIHZhciBzdW0gPSA1MDAgKyA1MTAgKyA1MjAgKyA1MzA7CisgICAgICAgICAgICBjb25z
dCBzdW0gPSA1MDAgKyA1MTAgKyA1MjAgKyA1MzA7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cnVuWydtZWFuX2NhY2hlJ10sIHN1bSAvIHJlc3VsdC5pdGVyYXRpb25zLmxlbmd0aCk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydzdW1fY2FjaGUnXSwgc3VtKTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChydW5bJ3NxdWFyZV9zdW1fY2FjaGUnXSwgNTAwICogNTAwICsgNTEwICog
NTEwICsgNTIwICogNTIwICsgNTMwICogNTMwKTsKICAgICAgICAgICAgIHJldHVybiBmZXRjaFRl
c3RSdW5JdGVyYXRpb25zRm9yTWV0cmljKCdDU1MnLCAnVGltZScpOwotICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uIChyZXN1bHQpIHsKKyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAgICAg
ICAgICAgICBjb25zdCBydW4gPSByZXN1bHQucnVuOwogICAgICAgICAgICAgY29uc3QgcnVuSWQg
PSBydW5bJ2lkJ107CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlc3VsdC5pdGVyYXRp
b25zLCBbCkBAIC01MjksMTQgKzUwNCwxMyBAQCBkZXNjcmliZSgiL2FwaS9yZXBvcnQiLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydtZWFuX2NhY2hlJ10sIHN1
bSAvIHJlc3VsdC5pdGVyYXRpb25zLmxlbmd0aCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cnVuWydzdW1fY2FjaGUnXSwgc3VtKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5bJ3Nx
dWFyZV9zdW1fY2FjaGUnXSwgc3F1YXJlU3VtKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNob3Vs
ZCBzdG9yZSBhZ2dyZWdhdGVkIHJ1biB2YWx1ZXMiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAg
ICByZXBvcnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRXaXRoVHdvTGV2
ZWxzT2ZBZ2dyZWdhdGlvbnMpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQgc3Rv
cmUgYWdncmVnYXRlZCBydW4gdmFsdWVzIiwgKCkgPT4geworICAgICAgICByZXR1cm4gcmVwb3J0
QWZ0ZXJBZGRpbmdCdWlsZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFR3b0xldmVsc09mQWdn
cmVnYXRpb25zKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBmZXRjaFRlc3RSdW5J
dGVyYXRpb25zRm9yTWV0cmljKCdEdW1teVBhZ2VMb2FkaW5nJywgJ1RpbWUnKTsKLSAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4g
ewogICAgICAgICAgICAgY29uc3QgcnVuID0gcmVzdWx0LnJ1bjsKICAgICAgICAgICAgIGNvbnN0
IHJ1bklkID0gcmVzdWx0LnJ1blsnaWQnXTsKICAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkVmFs
dWVzID0gWyg1MDAgKyAxMDApIC8gMiwgKDUxMCArIDExMCkgLyAyLCAoNTIwICsgMTIwKSAvIDIs
ICg1MzAgKyAxMzApIC8gMl07CkBAIC01NDksMTQgKzUyMywxMyBAQCBkZXNjcmliZSgiL2FwaS9y
ZXBvcnQiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydtZWFu
X2NhY2hlJ10sIHN1bSAvIHJlc3VsdC5pdGVyYXRpb25zLmxlbmd0aCk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocnVuWydzdW1fY2FjaGUnXSwgc3VtKTsKICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChydW5bJ3NxdWFyZV9zdW1fY2FjaGUnXSwgZXhwZWN0ZWRWYWx1ZXMucmVkdWNlKGZ1bmN0
aW9uIChzdW0sIHZhbHVlKSB7IHJldHVybiBzdW0gKyB2YWx1ZSAqIHZhbHVlOyB9LCAwKSk7Ci0g
ICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsK
ICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgYmUgYWJsZSB0byBjb21wdXRlIHRoZSBhZ2dyZWdh
dGlvbiBvZiBhZ2dyZWdhdGVkIHZhbHVlcyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIHJl
cG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydFdpdGhUd29MZXZlbHNP
ZkFnZ3JlZ2F0aW9ucykudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBiZSBhYmxl
IHRvIGNvbXB1dGUgdGhlIGFnZ3JlZ2F0aW9uIG9mIGFnZ3JlZ2F0ZWQgdmFsdWVzIiwgKCkgPT4g
eworICAgICAgICByZXR1cm4gcmVwb3J0QWZ0ZXJBZGRpbmdCdWlsZGVyQW5kQWdncmVnYXRvcnMo
cmVwb3J0V2l0aFR3b0xldmVsc09mQWdncmVnYXRpb25zKS50aGVuKCgpID0+IHsKICAgICAgICAg
ICAgIHJldHVybiBmZXRjaFRlc3RSdW5JdGVyYXRpb25zRm9yTWV0cmljKCdEdW1teUJlbmNobWFy
aycsICdUaW1lJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAg
ICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHJ1biA9IHJlc3VsdC5y
dW47CiAgICAgICAgICAgICBjb25zdCBydW5JZCA9IHJ1blsnaWQnXTsKICAgICAgICAgICAgIGNv
bnN0IGV4cGVjdGVkSXRlcmF0aW9ucyA9IFtdOwpAQCAtNTc0LDggKzU0Nyw3IEBAIGRlc2NyaWJl
KCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
dW5bJ21lYW5fY2FjaGUnXSwgc3VtIC8gcmVzdWx0Lml0ZXJhdGlvbnMubGVuZ3RoKTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChydW5bJ3N1bV9jYWNoZSddLCBzdW0pOwogICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJ1blsnc3F1YXJlX3N1bV9jYWNoZSddLCBzcXVhcmVTdW0pOwotICAgICAg
ICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CiAKICAgICBmdW5jdGlvbiByZXBvcnRXaXRoU2FtZVN1YnRlc3ROYW1lKCkKQEAgLTYxMSwy
OCArNTgzLDI1IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgfTsKICAgICB9CiAKLSAgICBpdCgic2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgcmVwb3J0IHdp
dGggc2FtZSBzdWJ0ZXN0IG5hbWUiLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICByZXBvcnRB
ZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRXaXRoU2FtZVN1YnRlc3ROYW1l
KCkpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5j
YXRjaChkb25lKTsKKyAgICBpdCgic2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgcmVwb3J0IHdpdGgg
c2FtZSBzdWJ0ZXN0IG5hbWUiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiByZXBvcnRBZnRlckFk
ZGluZ0J1aWxkZXJBbmRBZ2dyZWdhdG9ycyhyZXBvcnRXaXRoU2FtZVN1YnRlc3ROYW1lKCkpOwog
ICAgIH0pOwogCi0gICAgaXQoInNob3VsZCBiZSBhYmxlIHRvIHJldXNlIHRoZSBzYW1lIHRlc3Qg
cm93cyIsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRl
ckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydFdpdGhTYW1lU3VidGVzdE5hbWUoKSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgaXQoInNob3VsZCBiZSBhYmxlIHRvIHJldXNlIHRoZSBzYW1lIHRlc3Qgcm93
cyIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFn
Z3JlZ2F0b3JzKHJlcG9ydFdpdGhTYW1lU3VidGVzdE5hbWUoKSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5kYXRhYmFzZSgpLnNlbGVjdEFsbCgndGVzdHMnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAodGVzdHMpIHsKKyAgICAgICAgfSkudGhlbigodGVz
dHMpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0cy5sZW5ndGgsIDYpOwogICAg
ICAgICAgICAgbGV0IG5ld1JlcG9ydCA9IHJlcG9ydFdpdGhTYW1lU3VidGVzdE5hbWUoKTsKICAg
ICAgICAgICAgIG5ld1JlcG9ydC5idWlsZE51bWJlciA9ICIxMjUiOwogICAgICAgICAgICAgbmV3
UmVwb3J0LmJ1aWxkVGltZSA9ICIyMDEzLTAyLTI4VDEyOjE3OjI0LjEiOwogICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtu
ZXdSZXBvcnRdKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAg
ICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKS5zZWxlY3RBbGwoJ3Rlc3RzJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHRl
c3RzKSB7CisgICAgICAgIH0pLnRoZW4oKHRlc3RzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwodGVzdHMubGVuZ3RoLCA2KTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSku
Y2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgY29uc3QgcmVwb3J0V2l0
aFNhbWVTaW5nbGVWYWx1ZSA9IHsKQEAgLTY1NSwyNCArNjI0LDIzIEBAIGRlc2NyaWJlKCIvYXBp
L3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIH0sCiAgICAgICAgIH19OwogCi0g
ICAgaXQoInNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHJlcG9ydCB3aXRoIHNpbmdsZSB2YWx1ZSBy
ZXN1bHRzIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgcmVwb3J0QWZ0ZXJBZGRpbmdCdWls
ZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFNhbWVTaW5nbGVWYWx1ZSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgaXQoInNob3VsZCBiZSBhYmxlIHRvIGFkZCBhIHJlcG9ydCB3aXRoIHNpbmds
ZSB2YWx1ZSByZXN1bHRzIiwgKCkgPT4geworICAgICAgICByZXR1cm4gcmVwb3J0QWZ0ZXJBZGRp
bmdCdWlsZGVyQW5kQWdncmVnYXRvcnMocmVwb3J0V2l0aFNhbWVTaW5nbGVWYWx1ZSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gZmV0Y2hUZXN0UnVuSXRlcmF0aW9uc0Zvck1ldHJp
YygndGVzdDEnLCAnQ29tYmluZWQnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0
KSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgY29uc3QgcnVu
ID0gcmVzdWx0LnJ1bjsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5bJ2l0ZXJhdGlvbl9j
b3VudF9jYWNoZSddLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5bJ21lYW5fY2Fj
aGUnXSwgMyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydzdW1fY2FjaGUnXSwgMyk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydzcXVhcmVfc3VtX2NhY2hlJ10sIDkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZldGNoVGVzdFJ1bkl0ZXJhdGlvbnNGb3JNZXRyaWMoJ3N1aXRl
JywgJ0NvbWJpbmVkJyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAg
ICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHJ1biA9IHJlc3Vs
dC5ydW47CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydpdGVyYXRpb25fY291bnRfY2Fj
aGUnXSwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydtZWFuX2NhY2hlJ10sIDUp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsnc3VtX2NhY2hlJ10sIDUpOwogICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJ1blsnc3F1YXJlX3N1bV9jYWNoZSddLCAyNSk7Ci0gICAgICAg
ICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9
KTsKIAogICAgIGNvbnN0IHJlcG9ydFdpdGhTYW1lVmFsdWVQYWlycyA9IHsKQEAgLTY4OCwxMCAr
NjU2LDEwIEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIH0sCiAgICAgICAgIH07CiAKLSAgICBpdCgic2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgcmVw
b3J0IHdpdGggKHJlbGF0aXZlIHRpbWUsIHZhbHVlKSBwYWlycyIsIGZ1bmN0aW9uIChkb25lKSB7
Ci0gICAgICAgIHJlcG9ydEFmdGVyQWRkaW5nQnVpbGRlckFuZEFnZ3JlZ2F0b3JzKHJlcG9ydFdp
dGhTYW1lVmFsdWVQYWlycykudGhlbihmdW5jdGlvbiAoKSB7CisgICAgaXQoInNob3VsZCBiZSBh
YmxlIHRvIGFkZCBhIHJlcG9ydCB3aXRoIChyZWxhdGl2ZSB0aW1lLCB2YWx1ZSkgcGFpcnMiLCAo
KSA9PiB7CisgICAgICAgIHJldHVybiByZXBvcnRBZnRlckFkZGluZ0J1aWxkZXJBbmRBZ2dyZWdh
dG9ycyhyZXBvcnRXaXRoU2FtZVZhbHVlUGFpcnMpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAg
cmV0dXJuIGZldGNoVGVzdFJ1bkl0ZXJhdGlvbnNGb3JNZXRyaWMoJ3Rlc3QnLCAnRnJhbWVSYXRl
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHJ1biA9IHJlc3VsdC5ydW47CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydpdGVyYXRpb25fY291bnRfY2FjaGUnXSwgMyk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuWydtZWFuX2NhY2hlJ10sIDQpOwpAQCAtNzAzLDgg
KzY3MSw3IEBAIGRlc2NyaWJlKCIvYXBpL3JlcG9ydCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICB7cnVuOiBydW5JZCwgb3JkZXI6IDAsIGdyb3VwOiBudWxsLCB2YWx1ZTogNCwgcmVs
YXRpdmVfdGltZTogMH0sCiAgICAgICAgICAgICAgICAge3J1bjogcnVuSWQsIG9yZGVyOiAxLCBn
cm91cDogbnVsbCwgdmFsdWU6IDUsIHJlbGF0aXZlX3RpbWU6IDEwMH0sCiAgICAgICAgICAgICAg
ICAge3J1bjogcnVuSWQsIG9yZGVyOiAyLCBncm91cDogbnVsbCwgdmFsdWU6IDMsIHJlbGF0aXZl
X3RpbWU6IDIwNX1dKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9u
ZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgY29uc3QgcmVwb3J0c1VwZGF0aW5nRGlm
ZmVyZW50VGVzdHMgPSBbCkBAIC03MzQsNDAgKzcwMSwzOCBAQCBkZXNjcmliZSgiL2FwaS9yZXBv
cnQiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0sCiAgICAgXTsKIAotICAgIGl0KCJzaG91bGQg
dXBkYXRlIHRoZSBsYXN0IG1vZGlmaWVkIGRhdGUgb2YgdGVzdCBjb25maWd1cmF0aW9ucyB3aXRo
IG5ldyBydW5zIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgYWRkQnVpbGRlckZvclJlcG9y
dChyZXBvcnRzVXBkYXRpbmdEaWZmZXJlbnRUZXN0c1swXSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgaXQoInNob3VsZCB1cGRhdGUgdGhlIGxhc3QgbW9kaWZpZWQgZGF0ZSBvZiB0ZXN0IGNvbmZp
Z3VyYXRpb25zIHdpdGggbmV3IHJ1bnMiLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRCdWls
ZGVyRm9yUmVwb3J0KHJlcG9ydHNVcGRhdGluZ0RpZmZlcmVudFRlc3RzWzBdKS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcv
YXBpL3JlcG9ydC8nLCBbcmVwb3J0c1VwZGF0aW5nRGlmZmVyZW50VGVzdHNbMF1dKTsKLSAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9u
c2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdP
SycpOwogICAgICAgICAgICAgcmV0dXJuIGZldGNoVGVzdENvbmZpZygndGVzdDEnLCAnVGltZScp
OwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChvcmlnaW5hbENvbmZpZykgewotICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0Lycs
IFtyZXBvcnRzVXBkYXRpbmdEaWZmZXJlbnRUZXN0c1syXV0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICB9KS50aGVuKChvcmlnaW5hbENvbmZpZykgPT4geworICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtyZXBvcnRz
VXBkYXRpbmdEaWZmZXJlbnRUZXN0c1syXV0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAg
IHJldHVybiBmZXRjaFRlc3RDb25maWcoJ3Rlc3QxJywgJ1RpbWUnKTsKLSAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKGNvbmZpZykgeworICAgICAgICAgICAgfSkudGhlbigoY29uZmlnKSA9
PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KG9yaWdpbmFsQ29uZmlnWydjb25maWdfcnVuc19s
YXN0X21vZGlmaWVkJ10gaW5zdGFuY2VvZiBEYXRlKTsKICAgICAgICAgICAgICAgICBhc3NlcnQo
Y29uZmlnWydjb25maWdfcnVuc19sYXN0X21vZGlmaWVkJ10gaW5zdGFuY2VvZiBEYXRlKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQoK29yaWdpbmFsQ29uZmlnWydjb25maWdfcnVuc19sYXN0X21v
ZGlmaWVkJ10gPCArY29uZmlnWydjb25maWdfcnVuc19sYXN0X21vZGlmaWVkJ10pOwotICAgICAg
ICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICB9KS5jYXRjaChkb25l
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIG5vdCB1cGRhdGUgdGhl
IGxhc3QgbW9kaWZpZWQgZGF0ZSBvZiB1bnJlbGF0ZWQgdGVzdCBjb25maWd1cmF0aW9ucyIsIGZ1
bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0c1VwZGF0
aW5nRGlmZmVyZW50VGVzdHNbMF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCJzaG91bGQg
bm90IHVwZGF0ZSB0aGUgbGFzdCBtb2RpZmllZCBkYXRlIG9mIHVucmVsYXRlZCB0ZXN0IGNvbmZp
Z3VyYXRpb25zIiwgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkQnVpbGRlckZvclJlcG9ydChy
ZXBvcnRzVXBkYXRpbmdEaWZmZXJlbnRUZXN0c1swXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywg
W3JlcG9ydHNVcGRhdGluZ0RpZmZlcmVudFRlc3RzWzBdXSk7Ci0gICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAg
ICAgIHJldHVybiBmZXRjaFRlc3RDb25maWcoJ3Rlc3QxJywgJ1RpbWUnKTsKLSAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAob3JpZ2luYWxDb25maWcpIHsKLSAgICAgICAgICAgIHJldHVybiBUZXN0
U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBbcmVwb3J0c1VwZGF0
aW5nRGlmZmVyZW50VGVzdHNbMV1dKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAg
ICB9KS50aGVuKChvcmlnaW5hbENvbmZpZykgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvcmVwb3J0LycsIFtyZXBvcnRzVXBkYXRp
bmdEaWZmZXJlbnRUZXN0c1sxXV0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZldGNoVGVzdENvbmZpZygndGVzdDEnLCAnVGltZScpOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoY29uZmlnKSB7CisgICAgICAgICAgICB9KS50aGVuKChjb25maWcp
ID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQob3JpZ2luYWxDb25maWdbJ2NvbmZpZ19ydW5z
X2xhc3RfbW9kaWZpZWQnXSBpbnN0YW5jZW9mIERhdGUpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dChjb25maWdbJ2NvbmZpZ19ydW5zX2xhc3RfbW9kaWZpZWQnXSBpbnN0YW5jZW9mIERhdGUpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCgrb3JpZ2luYWxDb25maWdbJ2NvbmZpZ19ydW5z
X2xhc3RfbW9kaWZpZWQnXSwgK2NvbmZpZ1snY29uZmlnX3J1bnNfbGFzdF9tb2RpZmllZCddKTsK
LSAgICAgICAgICAgICAgICBkb25lKCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSkuY2F0
Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfSk7CkluZGV4OiBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS11cGRhdGUtdHJpZ2dlcmFibGUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBkYXRl
LXRyaWdnZXJhYmxlLmpzCShyZXZpc2lvbiAyMTM5NjUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL2FwaS11cGRhdGUtdHJpZ2dlcmFibGUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTcsMTIgKzcsMTAgQEAgcmVxdWlyZSgnLi4vdG9vbHMvanMvdjMtbW9kZWxzLmpzJyk7
CiBjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMn
KTsKIGNvbnN0IE1vY2tEYXRhID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1kYXRhLmpzJyk7
CiBjb25zdCBhZGRTbGF2ZUZvclJlcG9ydCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1v
cGVyYXRpb25zLmpzJykuYWRkU2xhdmVGb3JSZXBvcnQ7Ci1jb25zdCBjb25uZWN0VG9EYXRhYmFz
ZUluRXZlcnlUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMn
KS5jb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0OworY29uc3QgcHJlcGFyZVNlcnZlclRlc3Qg
PSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2
ZXJUZXN0OwogCiBkZXNjcmliZSgnL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgZnVuY3Rpb24g
KCkgewotICAgIHRoaXMudGltZW91dCgxMDAwKTsKLSAgICBUZXN0U2VydmVyLmluamVjdCgpOwot
ICAgIGNvbm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3QoKTsKKyAgICBwcmVwYXJlU2VydmVyVGVz
dCh0aGlzKTsKIAogICAgIGNvbnN0IGVtcHR5VXBkYXRlID0gewogICAgICAgICAnc2xhdmVOYW1l
JzogJ3NvbWVTbGF2ZScsCkBAIC0zMCw4NSArMjgsNzggQEAgZGVzY3JpYmUoJy9hcGkvdXBkYXRl
LXRyaWdnZXJhYmxlLycsIGZ1bgogICAgICAgICBdLAogICAgIH07CiAKLSAgICBpdCgnc2hvdWxk
IHJlamVjdCB3aGVuIHNsYXZlIG5hbWUgaXMgbWlzc2luZycsIGZ1bmN0aW9uIChkb25lKSB7Ci0g
ICAgICAgIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdn
ZXJhYmxlLycsIHt9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgIGl0KCdzaG91bGQg
cmVqZWN0IHdoZW4gc2xhdmUgbmFtZSBpcyBtaXNzaW5nJywgKCkgPT4geworICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFi
bGUvJywge30pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzcG9uc2VbJ3N0YXR1cyddLCAnTWlzc2luZ1NsYXZlTmFtZScpOwotICAgICAgICAgICAgZG9u
ZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAg
ICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHRoZXJlIGFyZSBubyBzbGF2ZXMnLCBmdW5jdGlvbiAo
ZG9uZSkgeworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gdGhlcmUgYXJlIG5vIHNsYXZlcycs
ICgpID0+IHsKICAgICAgICAgY29uc3QgdXBkYXRlID0ge3NsYXZlTmFtZTogZW1wdHlVcGRhdGUu
c2xhdmVOYW1lLCBzbGF2ZVBhc3N3b3JkOiBlbXB0eVVwZGF0ZS5zbGF2ZVBhc3N3b3JkfTsKLSAg
ICAgICAgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dl
cmFibGUvJywgdXBkYXRlKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFi
bGUvJywgdXBkYXRlKS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1NsYXZlTm90Rm91bmQnKTsKLSAgICAgICAgICAgIGRv
bmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0g
ICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiB0aGUgc2xhdmUgcGFzc3dvcmQgZG9lc25cJ3QgbWF0
Y2gnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0
U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgIGl0KCdzaG91bGQgcmVq
ZWN0IHdoZW4gdGhlIHNsYXZlIHBhc3N3b3JkIGRvZXNuXCd0IG1hdGNoJywgKCkgPT4geworICAg
ICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChlbXB0eVVw
ZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IHtzbGF2ZU5hbWU6IGVtcHR5VXBkYXRl
LnNsYXZlTmFtZSwgc2xhdmVQYXNzd29yZDogJ2JhZFBhc3N3b3JkJ307CiAgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dl
cmFibGUvJywgZW1wdHlVcGRhdGUpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25z
ZSkgeworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0g
ICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCdz
aG91bGQgYWNjZXB0IGFuIGVtcHR5IHJlcG9ydCcsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAg
IE1vY2tEYXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgaXQoJ3Nob3VsZCBhY2NlcHQgYW4gZW1wdHkgcmVwb3J0JywgKCkgPT4gewor
ICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgp
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChlbXB0
eVVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RK
U09OKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBlbXB0eVVwZGF0ZSk7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsK
LSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0p
OwogICAgIH0pOwogCi0gICAgaXQoJ2RlbGV0ZSBleGlzdGluZyBjb25maWd1cmF0aW9ucyB3aGVu
IGFjY2VwdGluZyBhbiBlbXB0eSByZXBvcnQnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCdk
ZWxldGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgd2hlbiBhY2NlcHRpbmcgYW4gZW1wdHkgcmVw
b3J0JywgKCkgPT4gewogICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
LSAgICAgICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIpLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIpLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAgICAgICAgICBhZGRTbGF2ZUZvclJl
cG9ydChlbXB0eVVwZGF0ZSksCiAgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJs
ZV9jb25maWd1cmF0aW9ucycsCiAgICAgICAgICAgICAgICAgICAgIHsndHJpZ2dlcmFibGUnOiAx
IC8qIGJ1aWxkLXdlYmtpdCAqLywgJ3Rlc3QnOiBNb2NrRGF0YS5zb21lVGVzdElkKCksICdwbGF0
Zm9ybSc6IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCl9KQogICAgICAgICAgICAgXSk7Ci0gICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0
ZS10cmlnZ2VyYWJsZS8nLCBlbXB0eVVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KHJlc3BvbnNlKSB7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIHJl
dHVybiBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywgJ3Rlc3QnKTsK
LSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocm93cykgeworICAgICAgICB9KS50aGVuKChyb3dz
KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93cy5sZW5ndGgsIDApOwotICAgICAg
ICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CiAKLSAgICBpdCgnc2hvdWxkIGFkZCBjb25maWd1cmF0aW9ucyBpbiB0aGUgdXBkYXRlJywg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgnc2hvdWxkIGFkZCBjb25maWd1cmF0aW9ucyBpbiB0
aGUgdXBkYXRlJywgKCkgPT4gewogICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJh
c2UoKTsKLSAgICAgICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIpLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIpLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHNtYWxsVXBkYXRlKTsKLSAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRl
LXRyaWdnZXJhYmxlLycsIHNtYWxsVXBkYXRlKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgcmV0
dXJuIGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCAndGVzdCcpOwot
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyb3dzKSB7CisgICAgICAgIH0pLnRoZW4oKHJvd3Mp
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzLmxlbmd0aCwgMSk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwocm93c1swXVsndGVzdCddLCBzbWFsbFVwZGF0ZS5jb25maWd1cmF0
aW9uc1swXVsndGVzdCddKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzBdWydwbGF0
Zm9ybSddLCBzbWFsbFVwZGF0ZS5jb25maWd1cmF0aW9uc1swXVsncGxhdGZvcm0nXSk7Ci0gICAg
ICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICB9KTsKICAg
ICB9KTsKIAotICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gYSBjb25maWd1cmF0aW9uIGlzIG1h
bGZvcm1lZCcsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZl
ci5kYXRhYmFzZSgpOwotICAgICAgICBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYikudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiBhIGNvbmZpZ3VyYXRpb24gaXMg
bWFsZm9ybWVkJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEo
VGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBh
ZGRTbGF2ZUZvclJlcG9ydChzbWFsbFVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZSA9
IHsKICAgICAgICAgICAgICAgICAnc2xhdmVOYW1lJzogJ3NvbWVTbGF2ZScsCiAgICAgICAgICAg
ICAgICAgJ3NsYXZlUGFzc3dvcmQnOiAnc29tZVBhc3N3b3JkJywKQEAgLTExNiwxMCArMTA3LDkg
QEAgZGVzY3JpYmUoJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIGZ1bgogICAgICAgICAgICAg
ICAgICdjb25maWd1cmF0aW9ucyc6IFt7fV0sCiAgICAgICAgICAgICB9OwogICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdn
ZXJhYmxlLycsIHVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7
CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZENvbmZpZ3VyYXRpb25FbnRyeScpOwotICAg
ICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgfSk7CiAg
ICAgfSk7CiAKIH0pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9wcml2aWxlZ2VkLWFwaS11cGF0ZS1ydW4tc3RhdHVzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBhdGUtcnVu
LXN0YXR1cy5qcwkocmV2aXNpb24gMjEzOTY1KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS11cGF0ZS1ydW4tc3RhdHVzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC02LDEyICs2LDEwIEBAIGNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcp
OwogCiBjb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIu
anMnKTsKIGNvbnN0IGFkZEJ1aWxkZXJGb3JSZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9j
b21tb24tb3BlcmF0aW9ucy5qcycpLmFkZEJ1aWxkZXJGb3JSZXBvcnQ7Ci1jb25zdCBjb25uZWN0
VG9EYXRhYmFzZUluRXZlcnlUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJh
dGlvbnMuanMnKS5jb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0OworY29uc3QgcHJlcGFyZVNl
cnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycpLnBy
ZXBhcmVTZXJ2ZXJUZXN0OwogCiBkZXNjcmliZSgiL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS1ydW4t
c3RhdHVzIiwgZnVuY3Rpb24gKCkgewotICAgIHRoaXMudGltZW91dCgxMDAwKTsKLSAgICBUZXN0
U2VydmVyLmluamVjdCgpOwotICAgIGNvbm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3QoKTsKKyAg
ICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzKTsKIAogICAgIGNvbnN0IHJlcG9ydFdpdGhSZXZpc2lv
biA9IFt7CiAgICAgICAgICJidWlsZE51bWJlciI6ICIxMjQiLApAQCAtMzUsMTAwICszMyw5NSBA
QCBkZXNjcmliZSgiL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS1ydW4tc3RhCiAgICAgICAgICAgICB9
LAogICAgICAgICB9fV07CiAKLSAgICBpdCgic2hvdWxkIGJlIGFibGUgdG8gbWFyayBhIHJ1biBh
cyBhbiBvdXRsaWVyIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgic2hvdWxkIGJlIGFibGUg
dG8gbWFyayBhIHJ1biBhcyBhbiBvdXRsaWVyIiwgKCkgPT4gewogICAgICAgICBjb25zdCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgbGV0IGlkOwotICAgICAgICBhZGRCdWls
ZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhSZXZpc2lvblswXSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhSZXZpc2lvblswXSku
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5w
b3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aFJldmlzaW9uKTsKLSAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+
IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwog
ICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgndGVzdF9ydW5zJyk7Ci0gICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKHJ1blJvd3MpIHsKKyAgICAgICAgfSkudGhlbigocnVuUm93cykgPT4g
ewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3MubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChydW5Sb3dzWzBdWydtZWFuX2NhY2hlJ10sIDExKTsKICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChydW5Sb3dzWzBdWydpdGVyYXRpb25fY291bnRfY2FjaGUnXSwgMSk7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93c1swXVsnbWFya2VkX291dGxpZXInXSwg
ZmFsc2UpOwogICAgICAgICAgICAgaWQgPSBydW5Sb3dzWzBdWydpZCddOwogICAgICAgICAgICAg
cmV0dXJuIFByaXZpbGVnZWRBUEkucmVxdWVzdENTUkZUb2tlbigpOwotICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgndXBkYXRlLXJ1bi1zdGF0dXMnLCB7J3J1bic6
IGlkLCAnbWFya2VkT3V0bGllcic6IHRydWUsICd0b2tlbic6IFByaXZpbGVnZWRBUEkuX3Rva2Vu
fSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ3Rlc3RfcnVucycpOwotICAgICAg
ICB9KS50aGVuKGZ1bmN0aW9uIChydW5Sb3dzKSB7CisgICAgICAgIH0pLnRoZW4oKHJ1blJvd3Mp
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5Sb3dzLmxlbmd0aCwgMSk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93c1swXVsnbWVhbl9jYWNoZSddLCAxMSk7CiAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93c1swXVsnaXRlcmF0aW9uX2NvdW50X2NhY2hlJ10s
IDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3NbMF1bJ21hcmtlZF9vdXRsaWVy
J10sIHRydWUpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChkb25lKTsK
KyAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBpdCgic2hvdWxkIHJlamVjdCB3aGVuIHRoZSB0
b2tlbiBpcyBub3Qgc2V0IGluIGNvb2tpZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgaXQoInNo
b3VsZCByZWplY3Qgd2hlbiB0aGUgdG9rZW4gaXMgbm90IHNldCBpbiBjb29raWUiLCAoKSA9PiB7
CiAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICBhZGRC
dWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhSZXZpc2lvblswXSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhSZXZpc2lvblsw
XSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEko
KS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aFJldmlzaW9uKTsKLSAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2Up
ID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycp
OwogICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgndGVzdF9ydW5zJyk7Ci0gICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKHJ1blJvd3MpIHsKKyAgICAgICAgfSkudGhlbigocnVuUm93cykg
PT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3MubGVuZ3RoLCAxKTsKICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChydW5Sb3dzWzBdWydtYXJrZWRfb3V0bGllciddLCBmYWxzZSk7
CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5yZXF1ZXN0Q1NSRlRva2VuKCk7Ci0g
ICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgIFJlbW90ZUFQSS5jbGVhckNvb2tpZXMoKTsKICAgICAgICAgICAgIHJldHVybiBS
ZW1vdGVBUEkucG9zdEpTT05XaXRoU3RhdHVzKCcvcHJpdmlsZWdlZC1hcGkvdXBkYXRlLXJ1bi1z
dGF0dXMnLCB7dG9rZW46IFByaXZpbGVnZWRBUEkuX3Rva2VufSk7Ci0gICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGFzc2Vy
dChmYWxzZSwgJ1ByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qgc2hvdWxkIHJlamVjdCcpOwotICAg
ICAgICB9LCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSwgKHJlc3BvbnNlKSA9PiB7
CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZFRv
a2VuJyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAg
ICAgICB9KTsKICAgICB9KTsKIAotICAgIGl0KCJzaG91bGQgcmVqZWN0IHdoZW4gdGhlIHRva2Vu
IGluIHRoZSByZXF1ZXN0IGNvbnRlbnQgaXMgYmFkIiwgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAg
ICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGFkZEJ1aWxkZXJG
b3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uWzBdKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICBp
dCgic2hvdWxkIHJlamVjdCB3aGVuIHRoZSB0b2tlbiBpbiB0aGUgcmVxdWVzdCBjb250ZW50IGlz
IGJhZCIsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZEJ1aWxkZXJGb3JSZXBvcnQocmVwb3J0
V2l0aFJldmlzaW9uWzBdKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNp
b24pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICB9KS50
aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydz
dGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCd0ZXN0X3J1
bnMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocnVuUm93cykgeworICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5zZWxlY3RBbGwoJ3Rlc3RfcnVucycpOworICAg
ICAgICB9KS50aGVuKChydW5Sb3dzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVu
Um93cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3NbMF1bJ21h
cmtlZF9vdXRsaWVyJ10sIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJ
LnJlcXVlc3RDU1JGVG9rZW4oKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUFQSS5wb3N0SlNP
TldpdGhTdGF0dXMoJy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtcnVuLXN0YXR1cycsIHt0b2tlbjog
J2JhZCd9KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgIH0pLnRoZW4o
KCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCBzaG91bGQgcmVqZWN0Jyk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uIChyZXNwb25zZSkgewor
ICAgICAgICB9LCAocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdJbnZhbGlkVG9rZW4nKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAg
ICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgaXQoInNo
b3VsZCBiZSBhYmxlIHRvIHVubWFyayBhIHJ1biBhcyBhbiBvdXRsaWVyIiwgZnVuY3Rpb24gKGRv
bmUpIHsKKyAgICBpdCgic2hvdWxkIGJlIGFibGUgdG8gdW5tYXJrIGEgcnVuIGFzIGFuIG91dGxp
ZXIiLCAoKSA9PiB7CiAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwot
ICAgICAgICBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdpdGhSZXZpc2lvblswXSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiBhZGRCdWlsZGVyRm9yUmVwb3J0KHJlcG9ydFdp
dGhSZXZpc2lvblswXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZl
ci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgcmVwb3J0V2l0aFJldmlzaW9u
KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgfSkudGhl
bigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3Rh
dHVzJ10sICdPSycpOwogICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFsbCgndGVzdF9ydW5z
Jyk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJ1blJvd3MpIHsKKyAgICAgICAgfSkudGhl
bigocnVuUm93cykgPT4gewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3MubGVuZ3Ro
LCAxKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5Sb3dzWzBdWydtYXJrZWRfb3V0bGll
ciddLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVz
dCgndXBkYXRlLXJ1bi1zdGF0dXMnLCB7J3J1bic6IHJ1blJvd3NbMF1bJ2lkJ10sICdtYXJrZWRP
dXRsaWVyJzogdHJ1ZX0pOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
fSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCd0ZXN0X3J1
bnMnKTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocnVuUm93cykgeworICAgICAgICB9KS50
aGVuKChydW5Sb3dzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93cy5sZW5n
dGgsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJ1blJvd3NbMF1bJ21hcmtlZF9vdXRs
aWVyJ10sIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ3VwZGF0ZS1ydW4tc3RhdHVzJywgeydydW4nOiBydW5Sb3dzWzBdWydpZCddLCAnbWFya2Vk
T3V0bGllcic6IGZhbHNlfSk7Ci0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ3Rlc3Rf
cnVucycpOwotICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChydW5Sb3dzKSB7CisgICAgICAgIH0p
LnRoZW4oKHJ1blJvd3MpID0+IHsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChydW5Sb3dzLmxl
bmd0aCwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocnVuUm93c1swXVsnbWFya2VkX291
dGxpZXInXSwgZmFsc2UpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9KS5jYXRjaChk
b25lKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9vbHMtYnVpbGRib3QtdHJpZ2dlcmFibGUtdGVzdHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29s
cy1idWlsZGJvdC10cmlnZ2VyYWJsZS10ZXN0cy5qcwkocmV2aXNpb24gMjEzOTY1KQorKysgV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy90b29scy1idWlsZGJvdC10cmlnZ2Vy
YWJsZS10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgY29uc3QgQnVpbGRi
b3RUcmlnZ2VyYWJsZSA9IHJlcXVpcmUoJy4uLwogY29uc3QgTW9ja0RhdGEgPSByZXF1aXJlKCcu
L3Jlc291cmNlcy9tb2NrLWRhdGEuanMnKTsKIGNvbnN0IE1vY2tSZW1vdGVBUEkgPSByZXF1aXJl
KCcuLi91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXJlbW90ZS1hcGkuanMnKS5Nb2NrUmVtb3Rl
QVBJOwogY29uc3QgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3Rlc3Qtc2VydmVy
LmpzJyk7Ci1jb25zdCBjb25uZWN0VG9EYXRhYmFzZUluRXZlcnlUZXN0ID0gcmVxdWlyZSgnLi9y
ZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5jb25uZWN0VG9EYXRhYmFzZUluRXZlcnlU
ZXN0OworY29uc3QgcHJlcGFyZVNlcnZlclRlc3QgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21t
b24tb3BlcmF0aW9ucy5qcycpLnByZXBhcmVTZXJ2ZXJUZXN0OwogCiBjbGFzcyBNb2NrTG9nZ2Vy
IHsKICAgICBjb25zdHJ1Y3RvcigpCkBAIC0xOSwzMSArMTksMjcgQEAgY2xhc3MgTW9ja0xvZ2dl
ciB7CiB9CiAKIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24gKCkgewot
ICAgIHRoaXMudGltZW91dCgxMDAwKTsKLSAgICBUZXN0U2VydmVyLmluamVjdCgpOworICAgIHBy
ZXBhcmVTZXJ2ZXJUZXN0KHRoaXMpOwogCiAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CiAg
ICAgICAgIE1vY2tEYXRhLnJlc2V0VjNNb2RlbHMoKTsKICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXNldCgnaHR0cDovL2J1aWxkLndlYmtpdC5vcmcnKTsKICAgICB9KTsKIAotICAgIGRlc2NyaWJl
KCdzeW5jT25jZScsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSB0
aGUgbmV4dCBidWlsZCByZXF1ZXN0IHdoZW4gdGhlcmUgYXJlIG5vIHBlbmRpbmcgYnVpbGRzJywg
ZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJh
c2UoKTsKLSAgICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIGRiLmNvbm5l
Y3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEu
YWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVkJywgJ3J1bm5pbmcnLCAncGVuZGluZycsICdwZW5k
aW5nJ10pOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUo
J3N5bmNPbmNlJywgKCkgPT4geworICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIHRoZSBuZXh0
IGJ1aWxkIHJlcXVlc3Qgd2hlbiB0aGVyZSBhcmUgbm8gcGVuZGluZyBidWlsZHMnLCAoKSA9PiB7
CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAg
ICAgIGxldCBzeW5jUHJvbWlzZTsKKyAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2Nr
RGF0YShkYiwgWydjb21wbGV0ZWQnLCAncnVubmluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSku
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBsZXQgY29u
ZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKLSAg
ICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7Ci0gICAgICAgICAgICAg
ICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dv
cmQnfTsKLSAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmln
Z2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNs
YXZlSW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5n
bGVCdWlsZGVyKCk7CisgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dn
ZXI7CisgICAgICAgICAgICAgICAgY29uc3Qgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZl
JywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJh
YmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CiAgICAgICAgICAgICAgICAg
c3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOwotICAgICAgICAgICAgICAgIHN5
bmNQcm9taXNlLmNhdGNoKGRvbmUpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSku
c3RhdHVzKCksICdydW5uaW5nJyk7CkBAIC01MywxMDcgKzQ5LDk5IEBAIGRlc2NyaWJlKCdCdWls
ZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxk
ZXItMS9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1swXS5yZXNvbHZlKFtdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQ
SS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNvbi9idWls
ZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoe1stMV06IE1vY2tE
YXRhLnJ1bm5pbmdCdWlsZCgpLCBbLTJdOiBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkKCl9KTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sy
XS5tZXRob2QsICdQT1NUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbMl0udXJsLCAnL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2ZvcmNlJyk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzJdLmRhdGEsIHsnd2snOiAnMTkxNjIyJywgJ29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1y
ZXF1ZXN0LWlkJzogJzcwMid9KTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzJdLnJlc29sdmUoJ09LJyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10udXJsLCAnL2pzb24vYnVp
bGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAgICAgICAgIE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZShbTW9ja0RhdGEucGVuZGluZ0J1aWxkKCld
KQogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7
Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4o
KCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzRdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0x
L2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1v
dGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2ZSh7Wy0xXTogTW9ja0RhdGEucnVubmluZ0J1aWxkKCks
IFstMl06IE1vY2tEYXRhLmZpbmlzaGVkQnVpbGQoKX0pOwogICAgICAgICAgICAgICAgIHJldHVy
biBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEJ1aWxkUmVxdWVz
dC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5n
bGVCdWlsZGVyKCkudHJpZ2dlcmFibGVOYW1lKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2NvbXBs
ZXRlZCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAxKS5zdGF0dXMoKSwgJ3J1bm5pbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCksICdzY2hlZHVsZWQnKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3Rh
dHVzKCksICdwZW5kaW5nJyk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAg
fSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAg
aXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgdGhlIG5leHQgYnVpbGQgcmVxdWVzdCB3aGVuIHRoZXJl
IGlzIGEgcGVuZGluZyBidWlsZCcsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAgICAgICBsZXQg
ZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVk
dWxlIHRoZSBuZXh0IGJ1aWxkIHJlcXVlc3Qgd2hlbiB0aGVyZSBpcyBhIHBlbmRpbmcgYnVpbGQn
LCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
ICAgICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIGRiLmNvbm5lY3QoKS50
aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9j
a0RhdGEoZGIsIFsnY29tcGxldGVkJywgJ3J1bm5pbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10p
OwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4g
TW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnY29tcGxldGVkJywgJ3J1bm5pbmcnLCAncGVuZGlu
ZycsICdwZW5kaW5nJ10pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIHJldHVybiBNYW5p
ZmVzdC5mZXRjaCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgY29uZmlnID0gTW9ja0Rh
dGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKICAgICAgICAgICAgICAg
ICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICAgICAgbGV0IHNsYXZl
SW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKICAgICAg
ICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25m
aWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5mbywgbG9n
Z2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxlLnN5bmNPbmNl
KCk7Ci0gICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9k
LCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxk
cycpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZShb
TW9ja0RhdGEucGVuZGluZ0J1aWxkKCldKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNv
bi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsK
ICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoe1stMV06
IE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCgpLCBbLTJdOiBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkKCl9
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgp
OwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1syXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXIt
MS9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0
c1syXS5yZXNvbHZlKFtNb2NrRGF0YS5wZW5kaW5nQnVpbGQoKV0pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ubWV0aG9kLCAnR0VU
Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
M10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEm
c2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5y
ZXNvbHZlKHtbLTFdOiBNb2NrRGF0YS5ydW5uaW5nQnVpbGQoKSwgWy0yXTogTW9ja0RhdGEuZmlu
aXNoZWRCdWlsZCgpfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNQcm9taXNlOwotICAg
ICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0
aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJ
ZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEpLnN0YXR1cygpLCAncnVubmluZycpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0
dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0
U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCkudHJpZ2dlcmFibGVOYW1lKTsKLSAgICAgICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAw
KS5zdGF0dXMoKSwgJ2NvbXBsZXRlZCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAxKS5zdGF0dXMoKSwgJ3J1bm5pbmcnKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzKCks
ICdzY2hlZHVsZWQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7Ci0gICAgICAgICAgICAgICAgZG9u
ZSgpOwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSB0aGUgYnVpbGQgcmVxdWVzdCBv
biBhIGJ1aWxkZXIgd2l0aG91dCBhIHBlbmRpbmcgYnVpbGQgaWYgaXRcJ3MgdGhlIGZpcnN0IHJl
cXVlc3QgaW4gdGhlIGdyb3VwJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgaXQoJ3Nob3VsZCBzY2hlZHVsZSB0
aGUgYnVpbGQgcmVxdWVzdCBvbiBhIGJ1aWxkZXIgd2l0aG91dCBhIHBlbmRpbmcgYnVpbGQgaWYg
aXRcJ3MgdGhlIGZpcnN0IHJlcXVlc3QgaW4gdGhlIGdyb3VwJywgKCkgPT4geworICAgICAgICAg
ICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBsZXQgc3lu
Y1Byb21pc2U7Ci0gICAgICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ3BlbmRpbmcn
LCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSk7Ci0gICAgICAgICAgICB9KS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShk
YiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IE1v
Y2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOwotICAgICAgICAgICAg
ICAgIGxldCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKLSAgICAgICAgICAgICAgICBsZXQgc2xh
dmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZlJywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OwotICAg
ICAgICAgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNv
bmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBs
b2dnZXIpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29u
c3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7
CisgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CisgICAgICAg
ICAgICAgICAgY29uc3Qgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZlJywgcGFzc3dvcmQ6
ICdwYXNzd29yZCd9OworICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJhYmxlID0gbmV3IEJ1
aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVt
b3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CiAgICAgICAgICAgICAgICAgc3luY1Byb21pc2Ug
PSB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOwotICAgICAgICAgICAgICAgIHN5bmNQcm9taXNlLmNh
dGNoKGRvbmUpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JS
ZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCAnL2pzb24vYnVpbGRl
cnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOwpAQCAtMTYyLDcgKzE1MCw3IEBAIGRl
c2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNvbi9idWlsZGVy
cy9zb21lJTIwYnVpbGRlciUyMDIvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAgICAgICAgIE1v
Y2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZShbXSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2Qs
ICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1syXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvP3NlbGVj
dD0tMSZzZWxlY3Q9LTInKTsKQEAgLTE3MSwxNCArMTU5LDE0IEBAIGRlc2NyaWJlKCdCdWlsZGJv
dFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRl
ciUyMDIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHt9KTsKICAgICAgICAgICAgICAgICByZXR1
cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDUpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1ldGhvZCwg
J1BPU1QnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1s0XS51cmwsICcvYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL2ZvcmNlJyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLmRh
dGEsIHsnd2snOiAnMTkxNjIyJywgJ29zJzogJzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0
LWlkJzogJzcwMCd9KTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRd
LnJlc29sdmUoJ09LJyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2Fp
dEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA3KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1XS51cmwsICcvanNvbi9i
dWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVpbGRzJyk7CkBAIC0xODcsNyArMTc1LDcg
QEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzZdLnVybCwgJy9qc29uL2J1
aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAg
ICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS5yZXNvbHZlKFtNb2NrRGF0YS5wZW5kaW5nQnVp
bGQoe2J1aWxkZXI6ICdzb21lIGJ1aWxkZXIgMicsIGJ1aWxkUmVxdWVzdElkOiA3MDB9KV0pOwog
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgOSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbN10ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbN10udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWls
ZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CkBAIC0xOTYsNyArMTg0LDcgQEAg
ZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzhdLnVybCwgJy9qc29uL2J1aWxk
ZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAg
ICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzhdLnJlc29sdmUoe30pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ3Bl
bmRpbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMCkuc3RhdHVzVXJsKCksIG51bGwpOwpAQCAtMjA3LDcgKzE5NSw3IEBAIGRlc2NyaWJl
KCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0
YXR1c1VybCgpLCBudWxsKTsKICAgICAgICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZl
dGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxk
ZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ3NjaGVkdWxlZCcp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAw
KS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUlMjBi
dWlsZGVyJTIwMi8nKTsKQEAgLTIxNywyNiArMjA1LDIyIEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRy
aWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMikuc3RhdHVzVXJsKCksIG51bGwpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRp
bmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlk
KDcwMykuc3RhdHVzVXJsKCksIG51bGwpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAg
ICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogCi0g
ICAgICAgIGl0KCdzaG91bGQgbm90IHNjaGVkdWxlIGEgYnVpbGQgcmVxdWVzdCBvbiBhIGRpZmZl
cmVudCBidWlsZGVyIHRoYW4gdGhlIG9uZSB0aGUgZmlyc3QgYnVpbGQgcmVxdWVzdCBpcyBwZW5k
aW5nJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKTsKKyAgICAgICAgaXQoJ3Nob3VsZCBub3Qgc2NoZWR1bGUgYSBidWlsZCByZXF1
ZXN0IG9uIGEgZGlmZmVyZW50IGJ1aWxkZXIgdGhhbiB0aGUgb25lIHRoZSBmaXJzdCBidWlsZCBy
ZXF1ZXN0IGlzIHBlbmRpbmcnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsKLSAgICAgICAg
ICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRp
bmcnLCAncGVuZGluZyddKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ3BlbmRpbmcnLCAncGVu
ZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGxldCBj
b25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKTsKICAg
ICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICAg
ICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dv
cmQnfTsKICAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmln
Z2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNs
YXZlSW5mbywgbG9nZ2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJh
YmxlLnN5bmNPbmNlKCk7Ci0gICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1
aWxkZXItMS9wZW5kaW5nQnVpbGRzJyk7CkBAIC0yNDUsNyArMjI5LDcgQEAgZGVzY3JpYmUoJ0J1
aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBi
dWlsZGVyJTIwMi9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1sxXS5yZXNvbHZlKFtdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVy
bCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVj
dD0tMicpOwpAQCAtMjU0LDcgKzIzOCw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxl
JywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1szXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlciUyMDIvYnVpbGRz
Lz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1szXS5yZXNvbHZlKHt9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDYpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLm1ldGhvZCwgJ0dFVCcpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwg
Jy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKQEAgLTI2Myw3
ICsyNDcsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNV0udXJsLCAn
L2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL3BlbmRpbmdCdWlsZHMnKTsKICAgICAg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnJlc29sdmUoW10pOwogICAgICAg
ICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0
aCwgOCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHNbNl0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tS
ZW1vdGVBUEkucmVxdWVzdHNbNl0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEv
YnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CkBAIC0yNzIsNyArMjU2LDcgQEAgZGVzY3Jp
YmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLnVybCwgJy9qc29uL2J1aWxkZXJzL3Nv
bWUlMjBidWlsZGVyJTIwMi9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAg
ICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLnJlc29sdmUoe30pOwogICAgICAgICAg
ICAgICAgIHJldHVybiBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ3BlbmRpbmcn
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
MCkuc3RhdHVzVXJsKCksIG51bGwpOwpAQCAtMjgzLDcgKzI2Nyw3IEBAIGRlc2NyaWJlKCdCdWls
ZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1Vy
bCgpLCBudWxsKTsKICAgICAgICAgICAgICAgICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9y
VHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCku
dHJpZ2dlcmFibGVOYW1lKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ3NjaGVkdWxlZCcpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0
dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0x
LycpOwpAQCAtMjkzLDI2ICsyNzcsMjIgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUn
LCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmlu
ZEJ5SWQoNzAyKS5zdGF0dXNVcmwoKSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0
dXNVcmwoKSwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSku
Y2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQo
J3Nob3VsZCB1cGRhdGUgdGhlIHN0YXR1cyBvZiBhIHBlbmRpbmcgYnVpbGQgYW5kIHNjaGVkdWxl
IGEgbmV3IGJ1aWxkIGlmIHRoZSBwZW5kaW5nIGJ1aWxkIGhhZCBzdGFydGVkIHJ1bm5pbmcnLCBm
dW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFz
ZSgpOworICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0aGUgc3RhdHVzIG9mIGEgcGVuZGluZyBi
dWlsZCBhbmQgc2NoZWR1bGUgYSBuZXcgYnVpbGQgaWYgdGhlIHBlbmRpbmcgYnVpbGQgaGFkIHN0
YXJ0ZWQgcnVubmluZycsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZl
ci5kYXRhYmFzZSgpOwogICAgICAgICAgICAgbGV0IHN5bmNQcm9taXNlOwotICAgICAgICAgICAg
ZGIuY29ubmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBN
b2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZycs
ICdwZW5kaW5nJ10pOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsncGVuZGluZycsICdwZW5kaW5n
JywgJ3BlbmRpbmcnLCAncGVuZGluZyddKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgICAgIGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25m
aWdXaXRoVHdvQnVpbGRlcnMoKTsKLSAgICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1v
Y2tMb2dnZXI7Ci0gICAgICAgICAgICAgICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1z
bGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKLSAgICAgICAgICAgICAgICBsZXQgdHJpZ2dl
cmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIH0p
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1v
Y2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpOworICAgICAgICAgICAgICAgIGNvbnN0
IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgICAgIGNvbnN0IHNsYXZlSW5m
byA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAgICAg
ICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZp
ZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dn
ZXIpOwogICAgICAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuc3luY09uY2Uo
KTsKLSAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZS5jYXRjaChkb25lKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
Lm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzBdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRp
bmdCdWlsZHMnKTsKQEAgLTMyMSw3ICszMDEsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2Vy
YWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVB
UEkucmVxdWVzdHNbMV0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL3Bl
bmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFd
LnJlc29sdmUoW10pOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRG
b3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnR0VUJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0udXJsLCAnL2pzb24vYnVp
bGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CkBAIC0z
MzAsMTQgKzMxMCwxNCBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9u
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10u
dXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1aWxkZXIlMjAyL2J1aWxkcy8/c2VsZWN0PS0x
JnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10u
cmVzb2x2ZSh7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCA1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS5tZXRob2QsICdQT1NUJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0udXJsLCAnL2J1aWxkZXJz
L3NvbWUtYnVpbGRlci0xL2ZvcmNlJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLmRhdGEsIHsnd2snOiAnMTkxNjIyJywgJ29zJzog
JzEwLjExIDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcwMid9KTsKICAgICAgICAgICAg
ICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoJ09LJyk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA3
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s1
XS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1s1XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5k
aW5nQnVpbGRzJyk7CkBAIC0zNDYsNyArMzI2LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dl
cmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzZdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9w
ZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2
XS5yZXNvbHZlKFtdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0
Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1Jl
bW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzddLnVybCwgJy9qc29uL2J1
aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwpAQCAt
MzU1LDcgKzMzNSw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24K
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s4XS51
cmwsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRlciUyMDIvYnVpbGRzLz9zZWxlY3Q9LTEm
c2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s4XS5y
ZXNvbHZlKHt9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcw
MCkuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1
aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCBudWxsKTsKQEAgLTM2Niw3ICsz
NDYsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygp
LCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0Nv
bmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdnZXJhYmxlTmFtZSk7Ci0gICAgICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVz
KCksICdmYWlsZWQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0
LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWls
ZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvMTIzJyk7CkBAIC0zNzYsNTAgKzM1Niw0NiBAQCBk
ZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1VybCgpLCAnaHR0
cDovL2J1aWxkLndlYmtpdC5vcmcvYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvJyk7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygp
LCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzAzKS5zdGF0dXNVcmwoKSwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgZG9uZSgp
OwotICAgICAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAg
fSk7CiAKLSAgICAgICAgaXQoJ3Nob3VsZCB1cGRhdGUgdGhlIHN0YXR1cyBvZiBhIHNjaGVkdWxl
ZCBidWlsZCBpZiB0aGUgcGVuZGluZyBidWlsZCBoYWQgc3RhcnRlZCBydW5uaW5nJywgZnVuY3Rp
b24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgaXQoJ3Nob3VsZCB1cGRhdGUgdGhlIHN0YXR1cyBvZiBhIHNjaGVkdWxlZCBidWls
ZCBpZiB0aGUgcGVuZGluZyBidWlsZCBoYWQgc3RhcnRlZCBydW5uaW5nJywgKCkgPT4geworICAg
ICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBs
ZXQgc3luY1Byb21pc2U7Ci0gICAgICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ3Nj
aGVkdWxlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKTsKLSAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1v
Y2tEYXRhKGRiLCBbJ3NjaGVkdWxlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZydd
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gTWFuaWZlc3QuZmV0Y2goKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3lu
Y0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7CiAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlciA9
IG5ldyBNb2NrTG9nZ2VyOwogICAgICAgICAgICAgICAgIGxldCBzbGF2ZUluZm8gPSB7bmFtZTog
J3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CiAgICAgICAgICAgICAgICAgbGV0
IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CiAgICAgICAg
ICAgICAgICAgc3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOwotICAgICAgICAg
ICAgICAgIHN5bmNQcm9taXNlLmNhdGNoKGRvbmUpOwogICAgICAgICAgICAgICAgIHJldHVybiBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VU
Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOwog
ICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZShbTW9ja0Rh
dGEucGVuZGluZ0J1aWxkKHtidWlsZFJlcXVlc3RJZDogNzAwfSldKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDIpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLm1l
dGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/
c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVx
dWVzdHNbMV0ucmVzb2x2ZSh7fSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAzKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRob2QsICdHRVQnKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsICcv
anNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAg
ICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKFtdKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNd
Lm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzNdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxk
cy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbM10ucmVzb2x2ZSh7Wy0xXTogTW9ja0RhdGEucnVubmluZ0J1aWxkKHtidWlsZFJl
cXVlc3RJZDogNzAwfSl9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVu
Z3RoLCA0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRC
eUlkKDcwMCkuc3RhdHVzKCksICdzY2hlZHVsZWQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksIG51bGwpOwpAQCAt
NDMwLDcgKzQwNiw3IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24K
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMyku
c3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCBudWxsKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gQnVpbGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rl
c3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKLSAgICAgICAg
ICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAw
KS5zdGF0dXMoKSwgJ3J1bm5pbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksICdodHRwOi8vYnVpbGQud2Via2l0
Lm9yZy9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvMTI0Jyk7CkBAIC00NDAsMjkgKzQx
NiwyNSBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDIpLnN0YXR1c1Vy
bCgpLCBudWxsKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZp
bmRCeUlkKDcwMykuc3RhdHVzKCksICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1c1VybCgpLCBudWxsKTsKLSAg
ICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAg
ICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEg
YnVpbGQgcmVxdWVzdCBvbiBhIGJ1aWxkZXIgd2l0aG91dCBwZW5kaW5nIGJ1aWxkcyBpZiB0aGUg
cmVxdWVzdCBiZWxvbmdzIHRvIGEgbmV3IHRlc3QgZ3JvdXAnLCBmdW5jdGlvbiAoZG9uZSkgewot
ICAgICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBpdCgn
c2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQgcmVxdWVzdCBvbiBhIGJ1aWxkZXIgd2l0aG91dCBwZW5k
aW5nIGJ1aWxkcyBpZiB0aGUgcmVxdWVzdCBiZWxvbmdzIHRvIGEgbmV3IHRlc3QgZ3JvdXAnLCAo
KSA9PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAg
ICAgICAgICAgIGxldCBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIGRiLmNvbm5lY3QoKS50aGVu
KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAg
ICAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAn
cGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSksCi0gICAgICAgICAgICAgICAgICAgIE1v
Y2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiLCBbJ3BlbmRpbmcnLCAncGVuZGluZycs
ICdwZW5kaW5nJywgJ3BlbmRpbmcnXSkKLSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsK
KyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAn
cGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSksCisgICAgICAgICAgICAgICAgTW9ja0Rh
dGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIsIFsncGVuZGluZycsICdwZW5kaW5nJywgJ3Bl
bmRpbmcnLCAncGVuZGluZyddKQorICAgICAgICAgICAgXSkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBsZXQgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rl
c3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7Ci0gICAgICAgICAgICAgICAgbGV0IGxvZ2dl
ciA9IG5ldyBNb2NrTG9nZ2VyOwotICAgICAgICAgICAgICAgIGxldCBzbGF2ZUluZm8gPSB7bmFt
ZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICAgICAg
bGV0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CisgICAg
ICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBN
b2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgICAgICBjb25z
dCBzbGF2ZUluZm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307
CisgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2Vy
YWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZl
SW5mbywgbG9nZ2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxl
LnN5bmNPbmNlKCk7Ci0gICAgICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMu
bGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxk
ZXItMS9wZW5kaW5nQnVpbGRzJyk7CkBAIC00NzEsNyArNDQzLDcgQEAgZGVzY3JpYmUoJ0J1aWxk
Ym90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWls
ZGVyJTIwMi9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1sxXS5yZXNvbHZlKFtdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90
ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVybCwg
Jy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0t
MicpOwpAQCAtNDgwLDE0ICs0NTIsMTQgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUn
LCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzNdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9idWlsZHMv
P3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzNdLnJlc29sdmUoe30pOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgNSk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ubWV0aG9kLCAnUE9TVCcpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwg
Jy9idWlsZGVycy9zb21lJTIwYnVpbGRlciUyMDIvZm9yY2UnKTsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0uZGF0YSwgeyd3ayc6ICcx
OTE2MjInLCAnb3MnOiAnMTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnNzEwJ30p
OwogICAgICAgICAgICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNF0ucmVzb2x2ZSgnT0sn
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgp
OwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0cy5sZW5ndGgsIDcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzVdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUt
YnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKQEAgLTQ5Niw3ICs0NjgsNyBAQCBkZXNjcmliZSgn
QnVpbGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbNl0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUy
MGJ1aWxkZXIlMjAyL3BlbmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzZdLnJlc29sdmUoW01vY2tEYXRhLnBlbmRpbmdCdWlsZCh7YnVpbGRlcjog
J3NvbWUgYnVpbGRlciAyJywgYnVpbGRSZXF1ZXN0SWQ6IDcxMH0pXSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0p
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA5KTsK
ICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS5t
ZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1s3XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMv
P3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKQEAgLTUwNSw3ICs0NzcsNyBAQCBkZXNjcmliZSgnQnVp
bGRib3RUcmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOF0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZSUyMGJ1
aWxkZXIlMjAyL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAg
IE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOF0ucmVzb2x2ZSh7fSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN5bmNQcm9taXNlOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnY29tcGxldGVkJyk7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0
YXR1c1VybCgpLCBudWxsKTsKQEAgLTUyNCw3ICs0OTYsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RU
cmlnZ2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MTMpLnN0YXR1cygpLCAncGVuZGluZycpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEzKS5zdGF0dXNVcmwoKSwg
bnVsbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRyaWdn
ZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpLnRyaWdn
ZXJhYmxlTmFtZSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdjb21wbGV0ZWQnKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJs
KCksICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWls
ZHMvMTIzJyk7CkBAIC01NDIsMjkgKzUxNCwyNSBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2Vy
YWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MTIpLnN0YXR1c1VybCgpLCBudWxsKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5kaW5nJyk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTMp
LnN0YXR1c1VybCgpLCBudWxsKTsKLSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAg
ICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAg
ICBpdCgnc2hvdWxkIHNjaGVkdWxlIGEgYnVpbGQgcmVxdWVzdCBvbiB0aGUgc2FtZSBzY2hlZHVs
ZXIgdGhlIGZpcnN0IHJlcXVlc3QgaGFkIHJhbicsIGZ1bmN0aW9uIChkb25lKSB7Ci0gICAgICAg
ICAgICBsZXQgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGl0KCdzaG91bGQg
c2NoZWR1bGUgYSBidWlsZCByZXF1ZXN0IG9uIHRoZSBzYW1lIHNjaGVkdWxlciB0aGUgZmlyc3Qg
cmVxdWVzdCBoYWQgcmFuJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2Vy
dmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBsZXQgc3luY1Byb21pc2U7Ci0gICAgICAgICAg
ICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEo
ZGIsIFsncnVubmluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKSwKLSAgICAg
ICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIsIFsncnVu
bmluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKQotICAgICAgICAgICAgICAg
IF0pOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRi
LCBbJ3J1bm5pbmcnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSksCisgICAgICAg
ICAgICAgICAgTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tUZXN0R3JvdXAoZGIsIFsncnVubmluZycs
ICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKQorICAgICAgICAgICAgXSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0gICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBsZXQgY29uZmlnID0g
TW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFR3b0J1aWxkZXJzKCk7Ci0gICAgICAgICAg
ICAgICAgbGV0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOwotICAgICAgICAgICAgICAgIGxldCBz
bGF2ZUluZm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0g
ICAgICAgICAgICAgICAgbGV0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUo
Y29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8s
IGxvZ2dlcik7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBj
b25zdCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMo
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAg
ICAgICAgICAgICBjb25zdCBzbGF2ZUluZm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29y
ZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlcmFibGUgPSBuZXcg
QnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tS
ZW1vdGVBUEksIHNsYXZlSW5mbywgbG9nZ2VyKTsKICAgICAgICAgICAgICAgICBzeW5jUHJvbWlz
ZSA9IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCk7Ci0gICAgICAgICAgICAgICAgc3luY1Byb21pc2Uu
Y2F0Y2goZG9uZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZv
clJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1v
dGVBUEkucmVxdWVzdHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS51cmwsICcvanNvbi9idWls
ZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVpbGRzJyk7CkBAIC01NzMsNyArNTQxLDcgQEAg
ZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxk
ZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9wZW5kaW5nQnVpbGRzJyk7CiAgICAgICAgICAgICAgICAg
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5yZXNvbHZlKFtdKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhl
bihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhv
ZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzJdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8/c2Vs
ZWN0PS0xJnNlbGVjdD0tMicpOwpAQCAtNTgyLDcgKzU1MCw3IEBAIGRlc2NyaWJlKCdCdWlsZGJv
dFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1szXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lJTIwYnVpbGRl
ciUyMDIvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9j
a1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5yZXNvbHZlKHtbLTFdOiBNb2NrRGF0YS5ydW5uaW5nQnVp
bGQoe2J1aWxkZXI6ICdzb21lIGJ1aWxkZXIgMicsIGJ1aWxkUmVxdWVzdElkOiA3MDB9KX0pOwog
ICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
Lmxlbmd0aCwgNik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEku
cmVxdWVzdHNbNF0ubWV0aG9kLCAnUE9TVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzRdLnVybCwgJy9idWlsZGVycy9zb21lJTIwYnVpbGRl
ciUyMDIvZm9yY2UnKTsKQEAgLTU5Myw3ICs1NjEsNyBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmln
Z2VyYWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzVdLmRhdGEsIHsnd2snOiAnMTkyNzM2JywgJ29zJzogJzEwLjEx
IDE1QTI4NCcsICdidWlsZC1yZXF1ZXN0LWlkJzogJzcxMSd9KTsKICAgICAgICAgICAgICAgICBN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzVdLnJlc29sdmUoJ09LJyk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA4KTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s2XS5tZXRo
b2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1s2XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVp
bGRzJyk7CkBAIC02MDIsNyArNTcwLDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUn
LCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJl
cXVlc3RzWzddLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9wZW5kaW5n
QnVpbGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s3XS5yZXNv
bHZlKFtNb2NrRGF0YS5wZW5kaW5nQnVpbGQoe2J1aWxkZXI6ICdzb21lIGJ1aWxkZXIgMicsYnVp
bGRSZXF1ZXN0SWQ6IDcwMX0pXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVB
UEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxMCk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOF0ubWV0aG9kLCAnR0VUJyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbOF0udXJsLCAn
L2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEmc2VsZWN0PS0y
Jyk7CkBAIC02MTEsNyArNTc5LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBm
dW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzldLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9idWlsZHMvP3Nl
bGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVl
c3RzWzldLnJlc29sdmUoe1stMV06IE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCh7YnVpbGRlcjogJ3Nv
bWUgYnVpbGRlciAyJywgYnVpbGRSZXF1ZXN0SWQ6IDcwMH0pfSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN5bmNQcm9taXNlOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAncnVubmluZycpOwogICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0
dXNVcmwoKSwgbnVsbCk7CkBAIC02MzAsNyArNTk4LDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJp
Z2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJl
cXVlc3QuZmluZEJ5SWQoNzEzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzVXJsKCksIG51
bGwpOwogICAgICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2Vy
YWJsZShNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2Vy
YWJsZU5hbWUpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1
ZXN0LmFsbCgpLmxlbmd0aCwgOCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAncnVubmluZycpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwg
J2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzL3NvbWUlMjBidWlsZGVyJTIwMi9idWls
ZHMvMTI0Jyk7CkBAIC02NDgsNTMgKzYxNiw0OSBAQCBkZXNjcmliZSgnQnVpbGRib3RUcmlnZ2Vy
YWJsZScsIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MTIpLnN0YXR1c1VybCgpLCBudWxsKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdwZW5kaW5nJyk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MTMp
LnN0YXR1c1VybCgpLCBudWxsKTsKLSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAg
ICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAg
ICBpdCgnc2hvdWxkIHJlY292ZXIgZnJvbSBtdWx0aXBsZSB0ZXN0IGdyb3VwcyBydW5uaW5nIHNp
bXVsdGVub3VzbHknLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgbGV0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBpdCgnc2hvdWxkIHJlY292ZXIgZnJvbSBtdWx0
aXBsZSB0ZXN0IGdyb3VwcyBydW5uaW5nIHNpbXVsdGVub3VzbHknLCAoKSA9PiB7CisgICAgICAg
ICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgICAgIGxldCBz
eW5jUHJvbWlzZTsKLSAgICAgICAgICAgIGRiLmNvbm5lY3QoKS50aGVuKGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgICAg
ICBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYiwgWydjb21wbGV0ZWQnLCAncGVuZGluZycsICdwZW5k
aW5nJywgJ3BlbmRpbmcnXSksCi0gICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZEFub3Ro
ZXJNb2NrVGVzdEdyb3VwKGRiLCBbJ2NvbXBsZXRlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAn
cGVuZGluZyddKQotICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ2NvbXBsZXRlZCcsICdwZW5kaW5nJywgJ3Bl
bmRpbmcnLCAncGVuZGluZyddKSwKKyAgICAgICAgICAgICAgICBNb2NrRGF0YS5hZGRBbm90aGVy
TW9ja1Rlc3RHcm91cChkYiwgWydjb21wbGV0ZWQnLCAncGVuZGluZycsICdwZW5kaW5nJywgJ3Bl
bmRpbmcnXSkKKyAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIHJl
dHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZp
Z1dpdGhTaW5nbGVCdWlsZGVyKCk7Ci0gICAgICAgICAgICAgICAgbGV0IGxvZ2dlciA9IG5ldyBN
b2NrTG9nZ2VyOwotICAgICAgICAgICAgICAgIGxldCBzbGF2ZUluZm8gPSB7bmFtZTogJ3N5bmMt
c2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAgICAgICAgICAgbGV0IHRyaWdn
ZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBNb2NrRGF0YS5t
b2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOworICAgICAgICAgICAgICAgIGNv
bnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAgICAgICAgIGNvbnN0IHNsYXZl
SW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dvcmQnfTsKKyAgICAg
ICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNv
bmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBs
b2dnZXIpOwogICAgICAgICAgICAgICAgIHN5bmNQcm9taXNlID0gdHJpZ2dlcmFibGUuc3luY09u
Y2UoKTsKLSAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZS5jYXRjaChkb25lKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAg
ICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgs
IDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzBdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3Bl
bmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBd
LnJlc29sdmUoW01vY2tEYXRhLnBlbmRpbmdCdWlsZCh7YnVpbGRSZXF1ZXN0SWQ6IDcxMX0pXSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVz
dHMubGVuZ3RoLCAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0c1sxXS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1
aWxkZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAgICBN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnJlc29sdmUoe1stMV06IE1vY2tEYXRhLnJ1bm5pbmdC
dWlsZCh7YnVpbGRSZXF1ZXN0SWQ6IDcwMH0pLCBbLTJdOiBNb2NrRGF0YS5maW5pc2hlZEJ1aWxk
KHtidWlsZFJlcXVlc3RJZDogNzEwfSl9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1Jl
bW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ0dFVCcpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVy
bCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKICAgICAg
ICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnJlc29sdmUoW01vY2tEYXRhLnBl
bmRpbmdCdWlsZCh7YnVpbGRSZXF1ZXN0SWQ6IDcwMX0pXSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCA0KTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1szXS5tZXRob2Qs
ICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1szXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWlsZHMvP3NlbGVj
dD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3Rz
WzNdLnJlc29sdmUoe1stMV06IE1vY2tEYXRhLnJ1bm5pbmdCdWlsZCh7YnVpbGRSZXF1ZXN0SWQ6
IDcwMH0pLCBbLTJdOiBNb2NrRGF0YS5maW5pc2hlZEJ1aWxkKHtidWlsZFJlcXVlc3RJZDogNzEw
fSl9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3luY1Byb21pc2U7Ci0gICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA4KTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3Rh
dHVzKCksICdjb21wbGV0ZWQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRS
ZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzVXJsKCksIG51bGwpOwpAQCAtNzEzLDcgKzY3Nyw3
IEBAIGRlc2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzKCksICdw
ZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5k
QnlJZCg3MTMpLnN0YXR1c1VybCgpLCBudWxsKTsKICAgICAgICAgICAgICAgICByZXR1cm4gQnVp
bGRSZXF1ZXN0LmZldGNoRm9yVHJpZ2dlcmFibGUoTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmln
V2l0aFR3b0J1aWxkZXJzKCkudHJpZ2dlcmFibGVOYW1lKTsKLSAgICAgICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5hbGwoKS5sZW5ndGgsIDgpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwg
J2NvbXBsZXRlZCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwoKSwgJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxk
ZXJzL3NvbWUtYnVpbGRlci0xL2J1aWxkcy8xMjQnKTsKQEAgLTczMSw1OSArNjk1LDUzIEBAIGRl
c2NyaWJlKCdCdWlsZGJvdFRyaWdnZXJhYmxlJywgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcxMikuc3RhdHVzVXJsKCksIG51bGwp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzEz
KS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVp
bGRSZXF1ZXN0LmZpbmRCeUlkKDcxMykuc3RhdHVzVXJsKCksIG51bGwpOwotICAgICAgICAgICAg
ICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOworICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgcmVjb3ZlciBmcm9tIG1pc3Npbmcg
ZmFpbGVkIGJ1aWxkIHJlcXVlc3QnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgbGV0
IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBpdCgnc2hvdWxkIHJlY292ZXIg
ZnJvbSBtaXNzaW5nIGZhaWxlZCBidWlsZCByZXF1ZXN0JywgKCkgPT4geworICAgICAgICAgICAg
Y29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAgICAgICAgICAgICBsZXQgc3luY1By
b21pc2U7Ci0gICAgICAgICAgICBkYi5jb25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgICAgICAgICAgTW9j
a0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsnZmFpbGVkJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdw
ZW5kaW5nJ10pLAotICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsn
ZmFpbGVkJywgJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIHJldHVybiBNYW5pZmVzdC5mZXRjaCgpOwotICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGNvbmZpZyA9IE1vY2tEYXRh
Lm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyKCk7Ci0gICAgICAgICAgICAgICAg
bGV0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOwotICAgICAgICAgICAgICAgIGxldCBzbGF2ZUlu
Zm8gPSB7bmFtZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307Ci0gICAgICAg
ICAgICAgICAgbGV0IHRyaWdnZXJhYmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmln
LCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dl
cik7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBj
b25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xlQnVpbGRlcigpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBNb2NrTG9nZ2VyOworICAgICAgICAg
ICAgICAgIGNvbnN0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAn
cGFzc3dvcmQnfTsKKyAgICAgICAgICAgICAgICBjb25zdCB0cmlnZ2VyYWJsZSA9IG5ldyBCdWls
ZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9ja1JlbW90
ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOwogICAgICAgICAgICAgICAgIHN5bmNQcm9taXNlID0g
dHJpZ2dlcmFibGUuc3luY09uY2UoKTsKLSAgICAgICAgICAgICAgICBzeW5jUHJvbWlzZS5jYXRj
aChkb25lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVx
dWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQ
SS5yZXF1ZXN0cy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzBdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzBdLnVybCwgJy9qc29uL2J1aWxkZXJz
L3NvbWUtYnVpbGRlci0xL3BlbmRpbmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzBdLnJlc29sdmUoW10pOwogICAgICAgICAgICAgICAgIHJldHVybiBN
b2NrUmVtb3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMik7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ubWV0aG9kLCAnR0VU
Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNb
MV0udXJsLCAnL2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvYnVpbGRzLz9zZWxlY3Q9LTEm
c2VsZWN0PS0yJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sxXS5y
ZXNvbHZlKHt9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9y
UmVxdWVzdCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChN
b2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLm1ldGhvZCwgJ1BPU1QnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS51cmwsICcvYnVpbGRlcnMv
c29tZS1idWlsZGVyLTEvZm9yY2UnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0uZGF0YSwgeyd3ayc6ICcxOTI3MzYnLCAnb3MnOiAn
MTAuMTEgMTVBMjg0JywgJ2J1aWxkLXJlcXVlc3QtaWQnOiAnNzAxJ30pOwogICAgICAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ucmVzb2x2ZSgnT0snKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgpOwotICAgICAgICAgICAg
fSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0cy5sZW5ndGgsIDQp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNd
Lm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzNdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUtYnVpbGRlci0xL3BlbmRp
bmdCdWlsZHMnKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnJl
c29sdmUoW01vY2tEYXRhLnBlbmRpbmdCdWlsZCh7YnVpbGRSZXF1ZXN0SWQ6IDcwMX0pXSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAg
ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMu
bGVuZ3RoLCA1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1s0XS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
TW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1s0XS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxk
ZXItMS9idWlsZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAgICBNb2Nr
UmVtb3RlQVBJLnJlcXVlc3RzWzRdLnJlc29sdmUoe30pOwogICAgICAgICAgICAgICAgIHJldHVy
biBzeW5jUHJvbWlzZTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxk
UmVxdWVzdC5hbGwoKS5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChC
dWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXMoKSwgJ2ZhaWxlZCcpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAwKS5zdGF0dXNVcmwo
KSwgbnVsbCk7CkBAIC03OTQsNyArNzUyLDcgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFi
bGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3Qu
ZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzVXJsKCksIG51bGwpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZmV0Y2hGb3JUcmlnZ2VyYWJsZShN
b2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoVHdvQnVpbGRlcnMoKS50cmlnZ2VyYWJsZU5h
bWUpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmFs
bCgpLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVz
dC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnZmFpbGVkJyk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1c1VybCgpLCBudWxsKTsK
QEAgLTgwNCwxMTMgKzc2MiwxMDIgQEAgZGVzY3JpYmUoJ0J1aWxkYm90VHJpZ2dlcmFibGUnLCBm
dW5jdGlvbgogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5
SWQoNzAyKS5zdGF0dXNVcmwoKSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDMpLnN0YXR1cygpLCAncGVuZGluZycpOwogICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXNV
cmwoKSwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSkuY2F0
Y2goZG9uZSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgaXQoJ3No
b3VsZCB1cGRhdGUgdGhlIHN0YXR1cyBvZiBhIHN1cHBvc2VkbHkgc2NoZWR1bGVkIGJ1aWxkIHRo
YXQgd2VudCBtaXNzaW5nJywgZnVuY3Rpb24gKGRvbmUpIHsKLSAgICAgICAgICAgIGxldCBkYiA9
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgaXQoJ3Nob3VsZCB1cGRhdGUgdGhlIHN0
YXR1cyBvZiBhIHN1cHBvc2VkbHkgc2NoZWR1bGVkIGJ1aWxkIHRoYXQgd2VudCBtaXNzaW5nJywg
KCkgPT4geworICAgICAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CiAg
ICAgICAgICAgICBsZXQgc3luY1Byb21pc2U7Ci0gICAgICAgICAgICBkYi5jb25uZWN0KCkudGhl
bihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tE
YXRhKGRiLCBbJ3NjaGVkdWxlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKTsK
LSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIE1v
Y2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ3NjaGVkdWxlZCcsICdwZW5kaW5nJywgJ3BlbmRpbmcn
LCAncGVuZGluZyddKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gTWFuaWZl
c3QuZmV0Y2goKTsKLSAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgICAgIGxldCBjb25maWcgPSBNb2NrRGF0YS5tb2NrVGVzdFN5bmNDb25maWdXaXRoU2luZ2xl
QnVpbGRlcigpOwotICAgICAgICAgICAgICAgIGxldCBsb2dnZXIgPSBuZXcgTW9ja0xvZ2dlcjsK
LSAgICAgICAgICAgICAgICBsZXQgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZlJywgcGFz
c3dvcmQ6ICdwYXNzd29yZCd9OwotICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9IG5l
dyBCdWlsZGJvdFRyaWdnZXJhYmxlKGNvbmZpZywgVGVzdFNlcnZlci5yZW1vdGVBUEkoKSwgTW9j
a1JlbW90ZUFQSSwgc2xhdmVJbmZvLCBsb2dnZXIpOworICAgICAgICAgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5j
Q29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBsb2dnZXIg
PSBuZXcgTW9ja0xvZ2dlcjsKKyAgICAgICAgICAgICAgICBjb25zdCBzbGF2ZUluZm8gPSB7bmFt
ZTogJ3N5bmMtc2xhdmUnLCBwYXNzd29yZDogJ3Bhc3N3b3JkJ307CisgICAgICAgICAgICAgICAg
Y29uc3QgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmlnZ2VyYWJsZShjb25maWcsIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNsYXZlSW5mbywgbG9nZ2VyKTsKICAg
ICAgICAgICAgICAgICBzeW5jUHJvbWlzZSA9IHRyaWdnZXJhYmxlLnN5bmNPbmNlKCk7Ci0gICAg
ICAgICAgICAgICAgc3luY1Byb21pc2UuY2F0Y2goZG9uZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAxKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5tZXRob2Qs
ICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0c1swXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVpbGRz
Jyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1swXS5yZXNvbHZlKFtd
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVzdCgp
OwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1
ZXN0cy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3Rl
QVBJLnJlcXVlc3RzWzFdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzFdLnVybCwgJy9qc29uL2J1aWxkZXJzL3NvbWUt
YnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAgICAg
IE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMV0ucmVzb2x2ZSh7fSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAzKTsKICAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5tZXRo
b2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0c1syXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9wZW5kaW5nQnVp
bGRzJyk7CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZl
KFtdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1JlbW90ZUFQSS53YWl0Rm9yUmVxdWVz
dCgpOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9KS50
aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5y
ZXF1ZXN0cy5sZW5ndGgsIDQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVt
b3RlQVBJLnJlcXVlc3RzWzNdLm1ldGhvZCwgJ0dFVCcpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzNdLnVybCwgJy9qc29uL2J1aWxkZXJzL3Nv
bWUtYnVpbGRlci0xL2J1aWxkcy8/c2VsZWN0PS0xJnNlbGVjdD0tMicpOwogICAgICAgICAgICAg
ICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbM10ucmVzb2x2ZSh7fSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN5bmNQcm9taXNlOwotICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoQnVpbGRSZXF1ZXN0LmFsbCgpLmxlbmd0aCwgNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDApLnN0YXR1cygpLCAnc2NoZWR1bGVkJyk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5maW5kQnlJZCg3MDEp
LnN0YXR1cygpLCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuZmluZEJ5SWQoNzAyKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMykuc3RhdHVzKCksICdw
ZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEJ1aWxkUmVxdWVzdC5mZXRjaEZvclRy
aWdnZXJhYmxlKE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhUd29CdWlsZGVycygpLnRy
aWdnZXJhYmxlTmFtZSk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChCdWls
ZFJlcXVlc3QuYWxsKCkubGVuZ3RoLCA0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
QnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMCkuc3RhdHVzKCksICdmYWlsZWQnKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoQnVpbGRSZXF1ZXN0LmZpbmRCeUlkKDcwMSkuc3RhdHVzKCks
ICdwZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKEJ1aWxkUmVxdWVzdC5m
aW5kQnlJZCg3MDIpLnN0YXR1cygpLCAncGVuZGluZycpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChCdWlsZFJlcXVlc3QuZmluZEJ5SWQoNzAzKS5zdGF0dXMoKSwgJ3BlbmRpbmcnKTsK
LSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnc2hvdWxkIHNjaGVkdWxl
IGEgYnVpbGQgcmVxdWVzdCBvZiBhbiB1c2VyIGNyZWF0ZWQgdGVzdCBncm91cCBiZWZvcmUgb25l
cyBjcmVhdGVkIGJ5IGF1dG9tYXRpYyBjaGFuZ2UgZGV0ZWN0aW9uJywgZnVuY3Rpb24gKGRvbmUp
IHsKLSAgICAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAg
aXQoJ3Nob3VsZCBzY2hlZHVsZSBhIGJ1aWxkIHJlcXVlc3Qgb2YgYW4gdXNlciBjcmVhdGVkIHRl
c3QgZ3JvdXAgYmVmb3JlIG9uZXMgY3JlYXRlZCBieSBhdXRvbWF0aWMgY2hhbmdlIGRldGVjdGlv
bicsICgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgp
OwogICAgICAgICAgICAgbGV0IHN5bmNQcm9taXNlOwotICAgICAgICAgICAgZGIuY29ubmVjdCgp
LnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
Ci0gICAgICAgICAgICAgICAgICAgIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiLCBbJ3BlbmRpbmcn
LCAncGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSksCi0gICAgICAgICAgICAgICAgICAg
IE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVzdEdyb3VwKGRiLCBbJ3BlbmRpbmcnLCAncGVuZGlu
ZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnXSwgJ3JuaXdhJyksCi0gICAgICAgICAgICAgICAgXSk7
Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIsIFsn
cGVuZGluZycsICdwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGluZyddKSwKKyAgICAgICAgICAg
ICAgICBNb2NrRGF0YS5hZGRBbm90aGVyTW9ja1Rlc3RHcm91cChkYiwgWydwZW5kaW5nJywgJ3Bl
bmRpbmcnLCAncGVuZGluZycsICdwZW5kaW5nJ10sICdybml3YScpLAorICAgICAgICAgICAgXSku
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7Ci0g
ICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBsZXQgY29u
ZmlnID0gTW9ja0RhdGEubW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXIoKTsKLSAg
ICAgICAgICAgICAgICBsZXQgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7Ci0gICAgICAgICAgICAg
ICAgbGV0IHNsYXZlSW5mbyA9IHtuYW1lOiAnc3luYy1zbGF2ZScsIHBhc3N3b3JkOiAncGFzc3dv
cmQnfTsKLSAgICAgICAgICAgICAgICBsZXQgdHJpZ2dlcmFibGUgPSBuZXcgQnVpbGRib3RUcmln
Z2VyYWJsZShjb25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIE1vY2tSZW1vdGVBUEksIHNs
YXZlSW5mbywgbG9nZ2VyKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgICAgIGNvbnN0IGNvbmZpZyA9IE1vY2tEYXRhLm1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5n
bGVCdWlsZGVyKCk7CisgICAgICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dn
ZXI7CisgICAgICAgICAgICAgICAgY29uc3Qgc2xhdmVJbmZvID0ge25hbWU6ICdzeW5jLXNsYXZl
JywgcGFzc3dvcmQ6ICdwYXNzd29yZCd9OworICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJh
YmxlID0gbmV3IEJ1aWxkYm90VHJpZ2dlcmFibGUoY29uZmlnLCBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLCBNb2NrUmVtb3RlQVBJLCBzbGF2ZUluZm8sIGxvZ2dlcik7CiAgICAgICAgICAgICAgICAg
c3luY1Byb21pc2UgPSB0cmlnZ2VyYWJsZS5zeW5jT25jZSgpOwotICAgICAgICAgICAgICAgIHN5
bmNQcm9taXNlLmNhdGNoKGRvbmUpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVtb3Rl
QVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMSk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ubWV0aG9kLCAnR0VUJyk7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0udXJsLCAn
L2pzb24vYnVpbGRlcnMvc29tZS1idWlsZGVyLTEvcGVuZGluZ0J1aWxkcycpOwogICAgICAgICAg
ICAgICAgIE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMF0ucmVzb2x2ZShbXSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIE1vY2tSZW1vdGVBUEkud2FpdEZvclJlcXVlc3QoKTsKLSAgICAgICAgICAg
IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHMubGVuZ3RoLCAy
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1sx
XS5tZXRob2QsICdHRVQnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1JlbW90
ZUFQSS5yZXF1ZXN0c1sxXS51cmwsICcvanNvbi9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9idWls
ZHMvP3NlbGVjdD0tMSZzZWxlY3Q9LTInKTsKICAgICAgICAgICAgICAgICBNb2NrUmVtb3RlQVBJ
LnJlcXVlc3RzWzFdLnJlc29sdmUoe30pOwogICAgICAgICAgICAgICAgIHJldHVybiBNb2NrUmVt
b3RlQVBJLndhaXRGb3JSZXF1ZXN0KCk7Ci0gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzLmxlbmd0aCwgMyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tSZW1vdGVBUEkucmVxdWVzdHNbMl0ubWV0aG9kLCAnUE9TVCcpOwog
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrUmVtb3RlQVBJLnJlcXVlc3RzWzJdLnVy
bCwgJy9idWlsZGVycy9zb21lLWJ1aWxkZXItMS9mb3JjZScpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5kYXRhLCB7J3drJzogJzE5
MTYyMicsICdvcyc6ICcxMC4xMSAxNUEyODQnLCAnYnVpbGQtcmVxdWVzdC1pZCc6ICc3MTAnfSk7
CiAgICAgICAgICAgICAgICAgTW9ja1JlbW90ZUFQSS5yZXF1ZXN0c1syXS5yZXNvbHZlKCdPSycp
OwotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0pLmNhdGNoKGRvbmUpOwor
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgZGVzY3JpYmUoJ3Vw
ZGF0ZVRyaWdnZXJhYmxlcycsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgY29ubmVjdFRvRGF0YWJh
c2VJbkV2ZXJ5VGVzdCgpOwotCi0gICAgICAgIGl0KCdzaG91bGQgdXBkYXRlIGF2YWlsYWJsZSB0
cmlnZ2VyYWJsZXMnLCBmdW5jdGlvbiAoZG9uZSkgewotICAgICAgICAgICAgbGV0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICAgICAgTW9ja0RhdGEuYWRkTW9ja0RhdGEoZGIp
LnRoZW4oKCkgPT4geworICAgIGRlc2NyaWJlKCd1cGRhdGVUcmlnZ2VyYWJsZXMnLCAoKSA9PiB7
CisgICAgICAgIGl0KCdzaG91bGQgdXBkYXRlIGF2YWlsYWJsZSB0cmlnZ2VyYWJsZXMnLCAoKSA9
PiB7CisgICAgICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAg
ICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYikudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIE1hbmlmZXN0LmZldGNoKCk7CiAgICAgICAgICAgICB9KS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJs
ZV9jb25maWd1cmF0aW9ucycsICd0ZXN0Jyk7CkBAIC05NDksOSArODk2LDcgQEAgZGVzY3JpYmUo
J0J1aWxkYm90VHJpZ2dlcmFibGUnLCBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGxldCBwbGF0
Zm9ybSA9IFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpOwogICAg
ICAgICAgICAgICAgIGxldCB0cmlnZ2VyYWJsZSA9IFRyaWdnZXJhYmxlLmZpbmRCeVRlc3RDb25m
aWd1cmF0aW9uKHRlc3QsIHBsYXRmb3JtKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
dHJpZ2dlcmFibGUubmFtZSgpLCAnYnVpbGQtd2Via2l0Jyk7Ci0KLSAgICAgICAgICAgICAgICBk
b25lKCk7Ci0gICAgICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICAgICAgICAgIH0pOwogICAg
ICAgICB9KTsKICAgICB9KTsKIApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvY29tbW9uLW9wZXJh
dGlvbnMuanMJKHJldmlzaW9uIDIxMzk2NSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9z
ZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xNyw5ICsxNywxNCBAQCBmdW5jdGlvbiBhZGRTbGF2ZUZvclJlcG9ydChyZXBvcnQpCiAg
ICAgfSk7CiB9CiAKLWZ1bmN0aW9uIGNvbm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3QoKQorZnVu
Y3Rpb24gcHJlcGFyZVNlcnZlclRlc3QodGVzdCkKIHsKKyAgICB0ZXN0LnRpbWVvdXQoMTAwMCk7
CisgICAgVGVzdFNlcnZlci5pbmplY3QoKTsKKwogICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkg
eworICAgICAgICBpZiAodHlwZW9mKE1vY2tEYXRhKSAhPSAndW5kZWZpbmVkJykKKyAgICAgICAg
ICAgIE1vY2tEYXRhLnJlc2V0VjNNb2RlbHMoKTsKICAgICAgICAgVGVzdFNlcnZlci5kYXRhYmFz
ZSgpLmNvbm5lY3Qoe2tlZXBBbGl2ZTogdHJ1ZX0pOwogICAgIH0pOwogCkBAIC00MSw2ICs0Niw2
IEBAIGZ1bmN0aW9uIHN1Ym1pdFJlcG9ydChyZXBvcnQpCiBpZiAodHlwZW9mIG1vZHVsZSAhPSAn
dW5kZWZpbmVkJykgewogICAgIG1vZHVsZS5leHBvcnRzLmFkZEJ1aWxkZXJGb3JSZXBvcnQgPSBh
ZGRCdWlsZGVyRm9yUmVwb3J0OwogICAgIG1vZHVsZS5leHBvcnRzLmFkZFNsYXZlRm9yUmVwb3J0
ID0gYWRkU2xhdmVGb3JSZXBvcnQ7Ci0gICAgbW9kdWxlLmV4cG9ydHMuY29ubmVjdFRvRGF0YWJh
c2VJbkV2ZXJ5VGVzdCA9IGNvbm5lY3RUb0RhdGFiYXNlSW5FdmVyeVRlc3Q7CisgICAgbW9kdWxl
LmV4cG9ydHMucHJlcGFyZVNlcnZlclRlc3QgPSBwcmVwYXJlU2VydmVyVGVzdDsKICAgICBtb2R1
bGUuZXhwb3J0cy5zdWJtaXRSZXBvcnQgPSBzdWJtaXRSZXBvcnQ7CiB9Cg==
</data>
<flag name="review"
          id="325993"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>