<?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>171905</bug_id>
          
          <creation_ts>2017-05-09 19:28:02 -0700</creation_ts>
          <short_desc>Rename server-tests/api-update-triggerable.js to server-tests/api-update-triggerable-tests.js</short_desc>
          <delta_ts>2017-05-10 19:26:32 -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>Other</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>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1306708</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-09 19:28:02 -0700</bug_when>
    <thetext>Just renaming the tests per convention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306709</commentid>
    <comment_count>1</comment_count>
      <attachid>309572</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-09 19:29:24 -0700</bug_when>
    <thetext>Created attachment 309572
Renames the file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307133</commentid>
    <comment_count>2</comment_count>
      <attachid>309572</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-10 19:26:31 -0700</bug_when>
    <thetext>Comment on attachment 309572
Renames the file

Clearing flags on attachment: 309572

Committed r216646: &lt;http://trac.webkit.org/changeset/216646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307134</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-10 19:26:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309572</attachid>
            <date>2017-05-09 19:29:24 -0700</date>
            <delta_ts>2017-05-10 19:26:31 -0700</delta_ts>
            <desc>Renames the file</desc>
            <filename>bug-171905-20170509192923.patch</filename>
            <type>text/plain</type>
            <size>50624</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NTU3CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0Mjk0ZjhiZTc5MjBhMzVmMzBmNGMzYmY0OGVlZTg1MTU5ODZiNDBhLi5lYmJlZTllODcy
NWQzNGQ2MjVhZTRiMjhhNDQxMTdmNzk3MjVkMjljIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wNS0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgc2VydmVyLXRlc3RzL2FwaS11cGRhdGUtdHJp
Z2dlcmFibGUuanMgdG8gc2VydmVyLXRlc3RzL2FwaS11cGRhdGUtdHJpZ2dlcmFibGUtdGVzdHMu
anMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTkw
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc2Vy
dmVyLXRlc3RzL2FwaS11cGRhdGUtdHJpZ2dlcmFibGUtdGVzdHMuanM6IFJlbmFtZWQgZnJvbSBz
ZXJ2ZXItdGVzdHMvYXBpLXVwZGF0ZS10cmlnZ2VyYWJsZS5qcy4KKwogMjAxNy0wNC0zMCAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgdGhlIHN1cHBvcnQg
Zm9yIHNjaGVkdWxpbmcgYSBBL0IgdGVzdGluZyB3aXRoIGEgcGF0Y2guCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS11cGRhdGUtdHJpZ2dlcmFi
bGUtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS11
cGRhdGUtdHJpZ2dlcmFibGUtdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI0NmYzZDljODM0MzIzOGFj
NTY1MjdjMjhlMzNhY2Y5YTBhMzVmZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwZGF0ZS10cmlnZ2VyYWJsZS10ZXN0cy5qcwpA
QCAtMCwwICsxLDQ3NCBAQAorJ3VzZSBzdHJpY3QnOworCitjb25zdCBhc3NlcnQgPSByZXF1aXJl
KCdhc3NlcnQnKTsKKworcmVxdWlyZSgnLi4vdG9vbHMvanMvdjMtbW9kZWxzLmpzJyk7CisKK2Nv
bnN0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOwor
Y29uc3QgTW9ja0RhdGEgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLWRhdGEuanMnKTsKK2Nv
bnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJh
dGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9ydDsKK2NvbnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0g
cmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5wcmVwYXJlU2VydmVy
VGVzdDsKKworZGVzY3JpYmUoJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIGZ1bmN0aW9uICgp
IHsKKyAgICBwcmVwYXJlU2VydmVyVGVzdCh0aGlzKTsKKworICAgIGNvbnN0IGVtcHR5VXBkYXRl
ID0geworICAgICAgICAnc2xhdmVOYW1lJzogJ3NvbWVTbGF2ZScsCisgICAgICAgICdzbGF2ZVBh
c3N3b3JkJzogJ3NvbWVQYXNzd29yZCcsCisgICAgICAgICd0cmlnZ2VyYWJsZSc6ICdidWlsZC13
ZWJraXQnLAorICAgICAgICAnY29uZmlndXJhdGlvbnMnOiBbXSwKKyAgICB9OworCisgICAgY29u
c3Qgc21hbGxVcGRhdGUgPSB7CisgICAgICAgICdzbGF2ZU5hbWUnOiAnc29tZVNsYXZlJywKKyAg
ICAgICAgJ3NsYXZlUGFzc3dvcmQnOiAnc29tZVBhc3N3b3JkJywKKyAgICAgICAgJ3RyaWdnZXJh
YmxlJzogJ2J1aWxkLXdlYmtpdCcsCisgICAgICAgICdjb25maWd1cmF0aW9ucyc6IFsKKyAgICAg
ICAgICAgIHt0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIHBsYXRmb3JtOiBNb2NrRGF0YS5z
b21lUGxhdGZvcm1JZCgpfQorICAgICAgICBdLAorICAgIH07CisKKyAgICBpdCgnc2hvdWxkIHJl
amVjdCB3aGVuIHNsYXZlIG5hbWUgaXMgbWlzc2luZycsICgpID0+IHsKKyAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxl
LycsIHt9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3BvbnNlWydzdGF0dXMnXSwgJ01pc3NpbmdTbGF2ZU5hbWUnKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHRoZXJlIGFyZSBubyBzbGF2ZXMnLCAo
KSA9PiB7CisgICAgICAgIGNvbnN0IHVwZGF0ZSA9IHtzbGF2ZU5hbWU6IGVtcHR5VXBkYXRlLnNs
YXZlTmFtZSwgc2xhdmVQYXNzd29yZDogZW1wdHlVcGRhdGUuc2xhdmVQYXNzd29yZH07CisgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10
cmlnZ2VyYWJsZS8nLCB1cGRhdGUpLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnU2xhdmVOb3RGb3VuZCcpOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gdGhlIHNsYXZlIHBh
c3N3b3JkIGRvZXNuXCd0IG1hdGNoJywgKCkgPT4geworICAgICAgICByZXR1cm4gTW9ja0RhdGEu
YWRkTW9ja0RhdGEoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChlbXB0eVVwZGF0ZSk7CisgICAgICAgIH0pLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgY29uc3QgcmVwb3J0ID0ge3NsYXZlTmFtZTogZW1wdHlV
cGRhdGUuc2xhdmVOYW1lLCBzbGF2ZVBhc3N3b3JkOiAnYmFkUGFzc3dvcmQnfTsKKyAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10
cmlnZ2VyYWJsZS8nLCBlbXB0eVVwZGF0ZSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGFjY2VwdCBhbiBlbXB0eSBy
ZXBvcnQnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0
U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIGFkZFNs
YXZlRm9yUmVwb3J0KGVtcHR5VXBkYXRlKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRh
dGUtdHJpZ2dlcmFibGUvJywgZW1wdHlVcGRhdGUpOworICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09L
Jyk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ2RlbGV0ZSBleGlzdGluZyBjb25m
aWd1cmF0aW9ucyB3aGVuIGFjY2VwdGluZyBhbiBlbXB0eSByZXBvcnQnLCAoKSA9PiB7CisgICAg
ICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICByZXR1cm4gTW9j
a0RhdGEuYWRkTW9ja0RhdGEoZGIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBhZGRTbGF2ZUZvclJlcG9ydChlbXB0eVVwZGF0
ZSksCisgICAgICAgICAgICAgICAgZGIuaW5zZXJ0KCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9u
cycsIHsndHJpZ2dlcmFibGUnOiAxMDAwIC8vIGJ1aWxkLXdlYmtpdAorICAgICAgICAgICAgICAg
ICAgICAsICd0ZXN0JzogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCAncGxhdGZvcm0nOiBNb2NrRGF0
YS5zb21lUGxhdGZvcm1JZCgpfSkKKyAgICAgICAgICAgIF0pOworICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09O
KCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBlbXB0eVVwZGF0ZSk7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0
YXR1cyddLCAnT0snKTsKKyAgICAgICAgICAgIHJldHVybiBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJh
YmxlX2NvbmZpZ3VyYXRpb25zJywgJ3Rlc3QnKTsKKyAgICAgICAgfSkudGhlbigocm93cykgPT4g
eworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3MubGVuZ3RoLCAwKTsKKyAgICAgICAgfSk7
CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGFkZCBjb25maWd1cmF0aW9ucyBpbiB0aGUgdXBk
YXRlJywgKCkgPT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsK
KyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChzbWFsbFVwZGF0ZSk7CisgICAgICAg
IH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJ
KCkucG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHNtYWxsVXBkYXRlKTsKKyAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgcmV0dXJuIGRiLnNlbGVjdEFs
bCgndHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCAndGVzdCcpOworICAgICAgICB9KS50aGVu
KChyb3dzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93cy5sZW5ndGgsIDEpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3NbMF1bJ3Rlc3QnXSwgc21hbGxVcGRhdGUuY29u
ZmlndXJhdGlvbnNbMF1bJ3Rlc3QnXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm93c1sw
XVsncGxhdGZvcm0nXSwgc21hbGxVcGRhdGUuY29uZmlndXJhdGlvbnNbMF1bJ3BsYXRmb3JtJ10p
OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gYSBj
b25maWd1cmF0aW9uIGlzIG1hbGZvcm1lZCcsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIE1vY2tE
YXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc21hbGxVcGRhdGUpOworICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHVwZGF0ZSA9IHsKKyAgICAgICAgICAg
ICAgICAnc2xhdmVOYW1lJzogJ3NvbWVTbGF2ZScsCisgICAgICAgICAgICAgICAgJ3NsYXZlUGFz
c3dvcmQnOiAnc29tZVBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAndHJpZ2dlcmFibGUnOiAn
YnVpbGQtd2Via2l0JywKKyAgICAgICAgICAgICAgICAnY29uZmlndXJhdGlvbnMnOiBbe31dLAor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCB1cGRhdGUpOworICAgICAgICB9
KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ0ludmFsaWRDb25maWd1cmF0aW9uRW50cnknKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKyAgICBmdW5jdGlvbiB1cGRhdGVXaXRoT1NYUmVwb3NpdG9yeUdyb3VwKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAnc2xhdmVOYW1lJzogJ3NvbWVTbGF2
ZScsCisgICAgICAgICAgICAnc2xhdmVQYXNzd29yZCc6ICdzb21lUGFzc3dvcmQnLAorICAgICAg
ICAgICAgJ3RyaWdnZXJhYmxlJzogJ2VtcHR5LXRyaWdnZXJhYmxlJywKKyAgICAgICAgICAgICdj
b25maWd1cmF0aW9ucyc6IFsKKyAgICAgICAgICAgICAgICB7dGVzdDogTW9ja0RhdGEuc29tZVRl
c3RJZCgpLCBwbGF0Zm9ybTogTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKX0KKyAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAncmVwb3NpdG9yeUdyb3Vwcyc6IFsKKyAgICAgICAgICAgICAgICB7
bmFtZTogJ3N5c3RlbS1vbmx5JywgcmVwb3NpdG9yaWVzOiBbCisgICAgICAgICAgICAgICAgICAg
IHtyZXBvc2l0b3J5OiBNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6
IGZhbHNlfSwKKyAgICAgICAgICAgICAgICBdfSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgfTsK
KyAgICB9CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHJlcG9zaXRvcnlHcm91cHMgaXMg
bm90IGFuIGFycmF5JywgKCkgPT4geworICAgICAgICBjb25zdCB1cGRhdGUgPSB1cGRhdGVXaXRo
T1NYUmVwb3NpdG9yeUdyb3VwKCk7CisgICAgICAgIHVwZGF0ZS5yZXBvc2l0b3J5R3JvdXBzID0g
MTsKKyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZEVtcHR5VHJpZ2dlcmFibGUoVGVzdFNlcnZl
ci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZv
clJlcG9ydCh1cGRhdGUpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2Vy
YWJsZS8nLCB1cGRhdGUpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0ludmFsaWRSZXBvc2l0b3J5
R3JvdXBzJyk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qg
d2hlbiB0aGUgbmFtZSBvZiBhIHJlcG9zaXRvcnkgZ3JvdXAgaXMgbm90IHNwZWNpZmllZCcsICgp
ID0+IHsKKyAgICAgICAgY29uc3QgdXBkYXRlID0gdXBkYXRlV2l0aE9TWFJlcG9zaXRvcnlHcm91
cCgpOworICAgICAgICBkZWxldGUgdXBkYXRlLnJlcG9zaXRvcnlHcm91cHNbMF0ubmFtZTsKKyAg
ICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZEVtcHR5VHJpZ2dlcmFibGUoVGVzdFNlcnZlci5kYXRh
YmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9y
dCh1cGRhdGUpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8n
LCB1cGRhdGUpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0ludmFsaWRSZXBvc2l0b3J5R3JvdXAn
KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHRo
ZSByZXBvc2l0b3J5IGxpc3QgaXMgbm90IHNwZWNpZmllZCBmb3IgYSByZXBvc2l0b3J5IGdyb3Vw
JywgKCkgPT4geworICAgICAgICBjb25zdCB1cGRhdGUgPSB1cGRhdGVXaXRoT1NYUmVwb3NpdG9y
eUdyb3VwKCk7CisgICAgICAgIGRlbGV0ZSB1cGRhdGUucmVwb3NpdG9yeUdyb3Vwc1swXS5yZXBv
c2l0b3JpZXM7CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxlKFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gYWRk
U2xhdmVGb3JSZXBvcnQodXBkYXRlKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUt
dHJpZ2dlcmFibGUvJywgdXBkYXRlKTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkUmVw
b3NpdG9yeUdyb3VwJyk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBy
ZWplY3Qgd2hlbiB0aGUgcmVwb3NpdG9yeSBsaXN0IG9mIGEgcmVwb3NpdG9yeSBncm91cCBpcyBu
b3QgYW4gYXJyYXknLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHVwZGF0ZSA9IHVwZGF0ZVdpdGhP
U1hSZXBvc2l0b3J5R3JvdXAoKTsKKyAgICAgICAgdXBkYXRlLnJlcG9zaXRvcnlHcm91cHNbMF0u
cmVwb3NpdG9yaWVzID0gJ2hpJzsKKyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZEVtcHR5VHJp
Z2dlcmFibGUoVGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydCh1cGRhdGUpOworICAgICAgICB9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcv
YXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCB1cGRhdGUpOworICAgICAgICB9KS50aGVuKChyZXNw
b25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwg
J0ludmFsaWRSZXBvc2l0b3J5R3JvdXAnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBp
dCgnc2hvdWxkIHJlamVjdCB3aGVuIGEgcmVwb3NpdG9yeSBncm91cCBjb250YWlucyBhIHJlcG9z
aXRvcnkgZGF0YSB0aGF0IGlzIG5vdCBhbiBhcnJheScsICgpID0+IHsKKyAgICAgICAgY29uc3Qg
dXBkYXRlID0gdXBkYXRlV2l0aE9TWFJlcG9zaXRvcnlHcm91cCgpOworICAgICAgICB1cGRhdGUu
cmVwb3NpdG9yeUdyb3Vwc1swXS5yZXBvc2l0b3JpZXNbMF0gPSA5OTk7CisgICAgICAgIHJldHVy
biBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxlKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQodXBkYXRlKTsK
KyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5y
ZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlKTsK
KyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkUmVwb3NpdG9yeURhdGEnKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIGEgcmVwb3NpdG9yeSBn
cm91cCBjb250YWlucyBhbiBpbnZhbGlkIHJlcG9zaXRvcnkgaWQnLCAoKSA9PiB7CisgICAgICAg
IGNvbnN0IHVwZGF0ZSA9IHVwZGF0ZVdpdGhPU1hSZXBvc2l0b3J5R3JvdXAoKTsKKyAgICAgICAg
dXBkYXRlLnJlcG9zaXRvcnlHcm91cHNbMF0ucmVwb3NpdG9yaWVzWzBdID0ge3JlcG9zaXRvcnk6
IDk5OX07CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxlKFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gYWRkU2xh
dmVGb3JSZXBvcnQodXBkYXRlKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJp
Z2dlcmFibGUvJywgdXBkYXRlKTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkUmVwb3Np
dG9yeScpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdo
ZW4gYSByZXBvc2l0b3J5IGdyb3VwIGNvbnRhaW5zIGEgZHVwbGljYXRlIHJlcG9zaXRvcnkgaWQn
LCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHVwZGF0ZSA9IHVwZGF0ZVdpdGhPU1hSZXBvc2l0b3J5
R3JvdXAoKTsKKyAgICAgICAgY29uc3QgZ3JvdXAgPSB1cGRhdGUucmVwb3NpdG9yeUdyb3Vwc1sw
XTsKKyAgICAgICAgZ3JvdXAucmVwb3NpdG9yaWVzLnB1c2goZ3JvdXAucmVwb3NpdG9yaWVzWzBd
KTsKKyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZEVtcHR5VHJpZ2dlcmFibGUoVGVzdFNlcnZl
ci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZv
clJlcG9ydCh1cGRhdGUpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2Vy
YWJsZS8nLCB1cGRhdGUpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0R1cGxpY2F0ZVJlcG9zaXRv
cnknKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIGFkZCBhIG5ldyBy
ZXBvc2l0b3J5IGdyb3VwIHdoZW4gdGhlcmUgYXJlIG5vbmUnLCAoKSA9PiB7CisgICAgICAgIGNv
bnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICByZXR1cm4gTW9ja0RhdGEu
YWRkRW1wdHlUcmlnZ2VyYWJsZShkYikudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4g
YWRkU2xhdmVGb3JSZXBvcnQodXBkYXRlV2l0aE9TWFJlcG9zaXRvcnlHcm91cCgpKTsKKyAgICAg
ICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlV2l0aE9TWFJl
cG9zaXRvcnlHcm91cCgpKTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFtkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX2NvbmZpZ3Vy
YXRpb25zJywgJ3Rlc3QnKSwgZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dy
b3VwcycpXSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4geworICAgICAgICAgICAgY29u
c3QgW2NvbmZpZ3VyYXRpb25zLCByZXBvc2l0b3J5R3JvdXBzXSA9IHJlc3VsdDsKKworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbmZpZ3VyYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoY29uZmlndXJhdGlvbnNbMF1bJ3Rlc3QnXSwgTW9ja0RhdGEuc29tZVRl
c3RJZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb25maWd1cmF0aW9uc1swXVsncGxh
dGZvcm0nXSwgTW9ja0RhdGEuc29tZVBsYXRmb3JtSWQoKSk7CisKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXVsnbmFtZSddLCAnc3lzdGVtLW9ubHknKTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzBdWyd0cmlnZ2VyYWJsZSddLCBN
b2NrRGF0YS5lbXB0eVRyaWdnZXJhZ2JsZUlkKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKKwor
ICAgIGl0KCdzaG91bGQgbm90IGFkZCBhIGR1cGxpY2F0ZSByZXBvc2l0b3J5IGdyb3VwIHdoZW4g
dGhlcmUgaXMgYSBncm91cCBvZiB0aGUgc2FtZSBuYW1lJywgKCkgPT4geworICAgICAgICBjb25z
dCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgbGV0IGluaXRpYWxSZXN1bHQ7
CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxlKGRiKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydCh1cGRhdGVXaXRoT1NY
UmVwb3NpdG9yeUdyb3VwKCkpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS91
cGRhdGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlV2l0aE9TWFJlcG9zaXRvcnlHcm91cCgpKTsKKyAg
ICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LmFsbChbZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9ucycsICd0ZXN0Jyks
IGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnKV0pOworICAgICAg
ICB9KS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgIGluaXRpYWxSZXN1bHQgPSByZXN1
bHQ7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTldp
dGhTdGF0dXMoJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHVwZGF0ZVdpdGhPU1hSZXBvc2l0
b3J5R3JvdXAoKSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UuYWxsKFtkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywg
J3Rlc3QnKSwgZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycpXSk7
CisgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4geworICAgICAgICAgICAgY29uc3QgW2luaXRp
YWxDb25maWd1cmF0aW9ucywgaW5pdGlhbFJlcG9zaXRvcnlHcm91cHNdID0gaW5pdGlhbFJlc3Vs
dDsKKyAgICAgICAgICAgIGNvbnN0IFtjb25maWd1cmF0aW9ucywgcmVwb3NpdG9yeUdyb3Vwc10g
PSByZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbmZpZ3VyYXRpb25zLCBp
bml0aWFsQ29uZmlndXJhdGlvbnMpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXBv
c2l0b3J5R3JvdXBzLCBpbml0aWFsUmVwb3NpdG9yeUdyb3Vwcyk7CisgICAgICAgIH0pCisgICAg
fSk7CisKKyAgICBpdCgnc2hvdWxkIG5vdCBhZGQgYSBkdXBsaWNhdGUgcmVwb3NpdG9yeSBncm91
cCB3aGVuIHRoZXJlIGlzIGEgZ3JvdXAgb2YgdGhlIHNhbWUgbmFtZScsICgpID0+IHsKKyAgICAg
ICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGxldCBpbml0aWFs
UmVzdWx0OworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkRW1wdHlUcmlnZ2VyYWJsZShkYiku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQodXBkYXRl
V2l0aE9TWFJlcG9zaXRvcnlHcm91cCgpKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTldpdGhTdGF0dXMo
Jy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHVwZGF0ZVdpdGhPU1hSZXBvc2l0b3J5R3JvdXAo
KSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5hbGwoW2RiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCAn
dGVzdCcpLCBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJyldKTsK
KyAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICBpbml0aWFsUmVzdWx0
ID0gcmVzdWx0OworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9z
dEpTT05XaXRoU3RhdHVzKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCB1cGRhdGVXaXRoT1NY
UmVwb3NpdG9yeUdyb3VwKCkpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0
aW9ucycsICd0ZXN0JyksIGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91
cHMnKV0pOworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IFtpbml0aWFsQ29uZmlndXJhdGlvbnMsIGluaXRpYWxSZXBvc2l0b3J5R3JvdXBzXSA9IGluaXRp
YWxSZXN1bHQ7CisgICAgICAgICAgICBjb25zdCBbY29uZmlndXJhdGlvbnMsIHJlcG9zaXRvcnlH
cm91cHNdID0gcmVzdWx0OworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb25maWd1cmF0
aW9ucywgaW5pdGlhbENvbmZpZ3VyYXRpb25zKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwocmVwb3NpdG9yeUdyb3VwcywgaW5pdGlhbFJlcG9zaXRvcnlHcm91cHMpOworICAgICAgICB9
KQorICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCB1cGRhdGUgdGhlIGRlc2NyaXB0aW9uIG9mIGEg
cmVwb3NpdG9yeSBncm91cCB3aGVuIHRoZSBuYW1lIG1hdGNoZXMnLCAoKSA9PiB7CisgICAgICAg
IGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBjb25zdCBpbml0aWFs
VXBkYXRlID0gdXBkYXRlV2l0aE9TWFJlcG9zaXRvcnlHcm91cCgpOworICAgICAgICBjb25zdCBz
ZWNvbmRVcGRhdGUgPSB1cGRhdGVXaXRoT1NYUmVwb3NpdG9yeUdyb3VwKCk7CisgICAgICAgIHNl
Y29uZFVwZGF0ZS5yZXBvc2l0b3J5R3JvdXBzWzBdLmRlc2NyaXB0aW9uID0gJ3RoaXMgZ3JvdXAg
aXMgYXdlc29tZSc7CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxl
KGRiKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChp
bml0aWFsVXBkYXRlKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvdXBkYXRl
LXRyaWdnZXJhYmxlLycsIGluaXRpYWxVcGRhdGUpOworICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycpKS50aGVu
KChyZXBvc2l0b3J5R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3Np
dG9yeUdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRv
cnlHcm91cHNbMF1bJ25hbWUnXSwgJ3N5c3RlbS1vbmx5Jyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXVsnZGVzY3JpcHRpb24nXSwgbnVsbCk7CisgICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTldpdGhTdGF0dXMoJy9h
cGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHNlY29uZFVwZGF0ZSk7CisgICAgICAgIH0pLnRoZW4o
KCkgPT4gZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycpKS50aGVu
KChyZXBvc2l0b3J5R3JvdXBzKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3Np
dG9yeUdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRv
cnlHcm91cHNbMF1bJ25hbWUnXSwgJ3N5c3RlbS1vbmx5Jyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXVsnZGVzY3JpcHRpb24nXSwgJ3RoaXMgZ3JvdXAgaXMg
YXdlc29tZScpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGZ1bmN0aW9uIHVwZGF0ZVdp
dGhNYWNXZWJLaXRSZXBvc2l0b3J5R3JvdXBzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAnc2xhdmVOYW1lJzogJ3NvbWVTbGF2ZScsCisgICAgICAgICAgICAnc2xhdmVQ
YXNzd29yZCc6ICdzb21lUGFzc3dvcmQnLAorICAgICAgICAgICAgJ3RyaWdnZXJhYmxlJzogJ2Vt
cHR5LXRyaWdnZXJhYmxlJywKKyAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6IFsKKyAgICAg
ICAgICAgICAgICB7dGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBwbGF0Zm9ybTogTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKX0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAncmVwb3Np
dG9yeUdyb3Vwcyc6IFsKKyAgICAgICAgICAgICAgICB7bmFtZTogJ3N5c3RlbS1vbmx5JywgcmVw
b3NpdG9yaWVzOiBbe3JlcG9zaXRvcnk6IE1vY2tEYXRhLm1hY29zUmVwb3NpdG9yeUlkKCl9XX0s
CisgICAgICAgICAgICAgICAge25hbWU6ICdzeXN0ZW0tYW5kLXdlYmtpdCcsIHJlcG9zaXRvcmll
czoKKyAgICAgICAgICAgICAgICAgICAgW3tyZXBvc2l0b3J5OiBNb2NrRGF0YS53ZWJraXRSZXBv
c2l0b3J5SWQoKX0sIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgpfV19
LAorICAgICAgICAgICAgXQorICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIG1hcFJl
cG9zaXRvcmllc0J5R3JvdXAocmVwb3NpdG9yaWVzKQorICAgIHsKKyAgICAgICAgY29uc3QgbWFw
ID0ge307CisgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJlcG9zaXRvcmllcykgeworICAgICAg
ICAgICAgY29uc3QgZ3JvdXBJZCA9IHJvd1snZ3JvdXAnXTsKKyAgICAgICAgICAgIGlmICghKGdy
b3VwSWQgaW4gbWFwKSkKKyAgICAgICAgICAgICAgICBtYXBbZ3JvdXBJZF0gPSBbXTsKKyAgICAg
ICAgICAgIG1hcFtncm91cElkXS5wdXNoKHJvd1sncmVwb3NpdG9yeSddKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gbWFwOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlZmV0Y2hNYW5pZmVz
dCgpCisgICAgeworICAgICAgICBNb2NrRGF0YS5yZXNldFYzTW9kZWxzKCk7CisgICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT04oJy9hcGkvbWFuaWZlc3QnKS50aGVu
KChjb250ZW50KSA9PiBNYW5pZmVzdC5fZGlkRmV0Y2hNYW5pZmVzdChjb250ZW50KSk7CisgICAg
fQorCisgICAgaXQoJ3Nob3VsZCB1cGRhdGUgdGhlIGFjY2VwdGFibGUgb2YgY3VzdG9tIHJvb3Rz
IGFuZCBwYXRjaGVzJywgKCkgPT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0
YWJhc2UoKTsKKyAgICAgICAgY29uc3QgaW5pdGlhbFVwZGF0ZSA9IHVwZGF0ZVdpdGhNYWNXZWJL
aXRSZXBvc2l0b3J5R3JvdXBzKCk7CisgICAgICAgIGNvbnN0IHNlY29uZFVwZGF0ZSA9IHVwZGF0
ZVdpdGhNYWNXZWJLaXRSZXBvc2l0b3J5R3JvdXBzKCk7CisgICAgICAgIHNlY29uZFVwZGF0ZS5y
ZXBvc2l0b3J5R3JvdXBzWzBdLmFjY2VwdHNSb290cyA9IHRydWU7CisgICAgICAgIHNlY29uZFVw
ZGF0ZS5yZXBvc2l0b3J5R3JvdXBzWzFdLnJlcG9zaXRvcmllc1swXS5hY2NlcHRzUGF0Y2ggPSB0
cnVlOworICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkRW1wdHlUcmlnZ2VyYWJsZShkYikudGhl
bigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoaW5pdGlhbFVw
ZGF0ZSk7CisgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RT
ZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3VwZGF0ZS10cmlnZ2Vy
YWJsZS8nLCBpbml0aWFsVXBkYXRlKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiByZWZldGNoTWFu
aWZlc3QoKSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZXBvc2l0b3J5R3JvdXBz
ID0gVHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAuc29ydEJ5TmFtZShUcmlnZ2VyYWJsZVJlcG9z
aXRvcnlHcm91cC5hbGwoKSk7CisgICAgICAgICAgICBjb25zdCB3ZWJraXQgPSBSZXBvc2l0b3J5
LmZpbmRUb3BMZXZlbEJ5TmFtZSgnV2ViS2l0Jyk7CisgICAgICAgICAgICBjb25zdCBtYWNvcyA9
IFJlcG9zaXRvcnkuZmluZFRvcExldmVsQnlOYW1lKCdtYWNPUycpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzBdLm5hbWUoKSwgJ3N5c3RlbS1hbmQtd2Via2l0Jyk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXS5kZXNjcmlwdGlv
bigpLCAnc3lzdGVtLWFuZC13ZWJraXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBv
c2l0b3J5R3JvdXBzWzBdLmFjY2VwdHNDdXN0b21Sb290cygpLCBmYWxzZSk7CisgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF0ucmVwb3NpdG9yaWVzKCksIFt3
ZWJraXQsIG1hY29zXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vw
c1swXS5hY2NlcHRzUGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIGZhbHNlKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzBdLmFjY2VwdHNQYXRjaEZvclJlcG9z
aXRvcnkobWFjb3MpLCBmYWxzZSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0
b3J5R3JvdXBzWzFdLm5hbWUoKSwgJ3N5c3RlbS1vbmx5Jyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1sxXS5kZXNjcmlwdGlvbigpLCAnc3lzdGVtLW9ubHknKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzFdLmFjY2VwdHNDdXN0
b21Sb290cygpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcG9zaXRv
cnlHcm91cHNbMV0ucmVwb3NpdG9yaWVzKCksIFttYWNvc10pOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMV0uYWNjZXB0c1BhdGNoRm9yUmVwb3NpdG9yeSh3ZWJr
aXQpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1sx
XS5hY2NlcHRzUGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgZmFsc2UpOworICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3Vw
ZGF0ZS10cmlnZ2VyYWJsZS8nLCBzZWNvbmRVcGRhdGUpOworICAgICAgICB9KS50aGVuKCgpID0+
IHJlZmV0Y2hNYW5pZmVzdCgpKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlcG9z
aXRvcnlHcm91cHMgPSBUcmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cC5zb3J0QnlOYW1lKFRyaWdn
ZXJhYmxlUmVwb3NpdG9yeUdyb3VwLmFsbCgpKTsKKyAgICAgICAgICAgIGNvbnN0IHdlYmtpdCA9
IFJlcG9zaXRvcnkuZmluZFRvcExldmVsQnlOYW1lKCdXZWJLaXQnKTsKKyAgICAgICAgICAgIGNv
bnN0IG1hY29zID0gUmVwb3NpdG9yeS5maW5kVG9wTGV2ZWxCeU5hbWUoJ21hY09TJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwcy5sZW5ndGgsIDIpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF0ubmFtZSgpLCAnc3lzdGVtLWFu
ZC13ZWJraXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzBd
LmRlc2NyaXB0aW9uKCksICdzeXN0ZW0tYW5kLXdlYmtpdCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF0uYWNjZXB0c0N1c3RvbVJvb3RzKCksIGZhbHNlKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXS5yZXBvc2l0
b3JpZXMoKSwgW3dlYmtpdCwgbWFjb3NdKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBv
c2l0b3J5R3JvdXBzWzBdLmFjY2VwdHNQYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgdHJ1ZSk7
CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXS5hY2NlcHRzUGF0
Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgZmFsc2UpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVwb3NpdG9yeUdyb3Vwc1sxXS5uYW1lKCksICdzeXN0ZW0tb25seScpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMV0uZGVzY3JpcHRpb24oKSwgJ3N5c3Rl
bS1vbmx5Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1sxXS5h
Y2NlcHRzQ3VzdG9tUm9vdHMoKSwgdHJ1ZSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KHJlcG9zaXRvcnlHcm91cHNbMV0ucmVwb3NpdG9yaWVzKCksIFttYWNvc10pOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMV0uYWNjZXB0c1BhdGNoRm9yUmVwb3Np
dG9yeSh3ZWJraXQpLCBmYWxzZSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9y
eUdyb3Vwc1sxXS5hY2NlcHRzUGF0Y2hGb3JSZXBvc2l0b3J5KG1hY29zKSwgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT05XaXRoU3RhdHVz
KCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBpbml0aWFsVXBkYXRlKTsKKyAgICAgICAgfSk7
CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlcGxhY2UgYSByZXBvc2l0b3J5IHdoZW4gdGhl
IHJlcG9zaXRvcnkgZ3JvdXAgbmFtZSBtYXRjaGVzJywgKCkgPT4geworICAgICAgICBjb25zdCBk
YiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgY29uc3QgaW5pdGlhbFVwZGF0ZSA9
IHVwZGF0ZVdpdGhNYWNXZWJLaXRSZXBvc2l0b3J5R3JvdXBzKCk7CisgICAgICAgIGNvbnN0IHNl
Y29uZFVwZGF0ZSA9IHVwZGF0ZVdpdGhNYWNXZWJLaXRSZXBvc2l0b3J5R3JvdXBzKCk7CisgICAg
ICAgIGxldCBpbml0aWFsR3JvdXBzOworICAgICAgICBzZWNvbmRVcGRhdGUucmVwb3NpdG9yeUdy
b3Vwc1sxXS5yZXBvc2l0b3JpZXNbMF0gPSB7cmVwb3NpdG9yeTogTW9ja0RhdGEuZ2l0V2Via2l0
UmVwb3NpdG9yeUlkKCl9CisgICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJh
YmxlKGRiKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9y
dChpbml0aWFsVXBkYXRlKTsKKyAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvdXBk
YXRlLXRyaWdnZXJhYmxlLycsIGluaXRpYWxVcGRhdGUpOworICAgICAgICB9KS50aGVuKChyZXNw
b25zZSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtkYi5zZWxlY3RBbGwo
J3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywgJ25hbWUnKSwgZGIuc2VsZWN0QWxsKCd0
cmlnZ2VyYWJsZV9yZXBvc2l0b3JpZXMnLCAncmVwb3NpdG9yeScpXSk7CisgICAgICAgIH0pLnRo
ZW4oKHJlc3VsdCkgPT4geworICAgICAgICAgICAgY29uc3QgW3JlcG9zaXRvcnlHcm91cHMsIHJl
cG9zaXRvcmllc10gPSByZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9y
eUdyb3Vwcy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlH
cm91cHNbMF1bJ25hbWUnXSwgJ3N5c3RlbS1hbmQtd2Via2l0Jyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXVsndHJpZ2dlcmFibGUnXSwgTW9ja0RhdGEuZW1w
dHlUcmlnZ2VyYWdibGVJZCgpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5
R3JvdXBzWzFdWyduYW1lJ10sICdzeXN0ZW0tb25seScpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlcG9zaXRvcnlHcm91cHNbMV1bJ3RyaWdnZXJhYmxlJ10sIE1vY2tEYXRhLmVtcHR5VHJp
Z2dlcmFnYmxlSWQoKSk7CisgICAgICAgICAgICBpbml0aWFsR3JvdXBzID0gcmVwb3NpdG9yeUdy
b3VwczsKKworICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yaWVzQnlHcm91cCA9IG1hcFJlcG9z
aXRvcmllc0J5R3JvdXAocmVwb3NpdG9yaWVzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChP
YmplY3Qua2V5cyhyZXBvc2l0b3JpZXNCeUdyb3VwKS5sZW5ndGgsIDIpOworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChyZXBvc2l0b3JpZXNCeUdyb3VwW3JlcG9zaXRvcnlHcm91cHNbMF1b
J2lkJ11dLCBbTW9ja0RhdGEubWFjb3NSZXBvc2l0b3J5SWQoKSwgTW9ja0RhdGEud2Via2l0UmVw
b3NpdG9yeUlkKCldKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVwb3NpdG9yaWVz
QnlHcm91cFtyZXBvc2l0b3J5R3JvdXBzWzFdWydpZCddXSwgW01vY2tEYXRhLm1hY29zUmVwb3Np
dG9yeUlkKCldKTsKKworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCku
cG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBzZWNvbmRVcGRh
dGUpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LmFsbChbZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsICduYW1l
JyksIGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywgJ3JlcG9zaXRvcnkn
KV0pOworICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IFty
ZXBvc2l0b3J5R3JvdXBzLCByZXBvc2l0b3JpZXNdID0gcmVzdWx0OworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXBvc2l0b3J5R3JvdXBzLCBpbml0aWFsR3JvdXBzKTsKKworICAgICAg
ICAgICAgY29uc3QgcmVwb3NpdG9yaWVzQnlHcm91cCA9IG1hcFJlcG9zaXRvcmllc0J5R3JvdXAo
cmVwb3NpdG9yaWVzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChPYmplY3Qua2V5cyhyZXBv
c2l0b3JpZXNCeUdyb3VwKS5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChyZXBvc2l0b3JpZXNCeUdyb3VwW2luaXRpYWxHcm91cHNbMF1bJ2lkJ11dLCBbTW9ja0RhdGEu
bWFjb3NSZXBvc2l0b3J5SWQoKSwgTW9ja0RhdGEuZ2l0V2Via2l0UmVwb3NpdG9yeUlkKCldKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVwb3NpdG9yaWVzQnlHcm91cFtpbml0aWFs
R3JvdXBzWzFdWydpZCddXSwgW01vY2tEYXRhLm1hY29zUmVwb3NpdG9yeUlkKCldKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlcGxhY2UgYSByZXBvc2l0b3J5IHdo
ZW4gdGhlIGxpc3Qgb2YgcmVwb3NpdG9yaWVzIG1hdGNoZXMnLCAoKSA9PiB7CisgICAgICAgIGNv
bnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBjb25zdCBpbml0aWFsVXBk
YXRlID0gdXBkYXRlV2l0aE1hY1dlYktpdFJlcG9zaXRvcnlHcm91cHMoKTsKKyAgICAgICAgY29u
c3Qgc2Vjb25kVXBkYXRlID0gdXBkYXRlV2l0aE1hY1dlYktpdFJlcG9zaXRvcnlHcm91cHMoKTsK
KyAgICAgICAgbGV0IGluaXRpYWxHcm91cHM7CisgICAgICAgIGxldCBpbml0aWFsUmVwb3NpdG9y
aWVzOworICAgICAgICBzZWNvbmRVcGRhdGUucmVwb3NpdG9yeUdyb3Vwc1swXS5uYW1lID0gJ21h
Yy1vbmx5JzsKKyAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZEVtcHR5VHJpZ2dlcmFibGUoZGIp
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KGluaXRp
YWxVcGRhdGUpOworICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS91cGRhdGUtdHJp
Z2dlcmFibGUvJywgaW5pdGlhbFVwZGF0ZSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdEFsbCgndHJpZ2dl
cmFibGVfcmVwb3NpdG9yeV9ncm91cHMnLCAnbmFtZScpLCBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJh
YmxlX3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5JyldKTsKKyAgICAgICAgfSkudGhlbigocmVz
dWx0KSA9PiB7CisgICAgICAgICAgICBjb25zdCBbcmVwb3NpdG9yeUdyb3VwcywgcmVwb3NpdG9y
aWVzXSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBz
Lmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1sw
XVsnbmFtZSddLCAnc3lzdGVtLWFuZC13ZWJraXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXBvc2l0b3J5R3JvdXBzWzBdWyd0cmlnZ2VyYWJsZSddLCBNb2NrRGF0YS5lbXB0eVRyaWdn
ZXJhZ2JsZUlkKCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNb
MV1bJ25hbWUnXSwgJ3N5c3RlbS1vbmx5Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVw
b3NpdG9yeUdyb3Vwc1sxXVsndHJpZ2dlcmFibGUnXSwgTW9ja0RhdGEuZW1wdHlUcmlnZ2VyYWdi
bGVJZCgpKTsKKyAgICAgICAgICAgIGluaXRpYWxHcm91cHMgPSByZXBvc2l0b3J5R3JvdXBzOwor
CisgICAgICAgICAgICBjb25zdCByZXBvc2l0b3JpZXNCeUdyb3VwID0gbWFwUmVwb3NpdG9yaWVz
QnlHcm91cChyZXBvc2l0b3JpZXMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE9iamVjdC5r
ZXlzKHJlcG9zaXRvcmllc0J5R3JvdXApLmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKHJlcG9zaXRvcmllc0J5R3JvdXBbcmVwb3NpdG9yeUdyb3Vwc1swXVsnaWQnXV0s
IFtNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgpLCBNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5
SWQoKV0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXBvc2l0b3JpZXNCeUdyb3Vw
W3JlcG9zaXRvcnlHcm91cHNbMV1bJ2lkJ11dLCBbTW9ja0RhdGEubWFjb3NSZXBvc2l0b3J5SWQo
KV0pOworICAgICAgICAgICAgaW5pdGlhbFJlcG9zaXRvcmllcyA9IHJlcG9zaXRvcmllczsKKwor
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT05XaXRoU3Rh
dHVzKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBzZWNvbmRVcGRhdGUpOworICAgICAgICB9
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0
QWxsKCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsICduYW1lJyksIGRiLnNlbGVjdEFs
bCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywgJ3JlcG9zaXRvcnknKV0pOworICAgICAgICB9
KS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IFtyZXBvc2l0b3J5R3JvdXBz
LCByZXBvc2l0b3JpZXNdID0gcmVzdWx0OworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVw
b3NpdG9yeUdyb3Vwcy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9z
aXRvcnlHcm91cHNbMF1bJ25hbWUnXSwgJ21hYy1vbmx5Jyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXVsndHJpZ2dlcmFibGUnXSwgaW5pdGlhbEdyb3Vwc1sx
XVsndHJpZ2dlcmFibGUnXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdy
b3Vwc1sxXVsnbmFtZSddLCAnc3lzdGVtLWFuZC13ZWJraXQnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzFdWyd0cmlnZ2VyYWJsZSddLCBpbml0aWFsR3JvdXBz
WzBdWyd0cmlnZ2VyYWJsZSddKTsKKworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXBv
c2l0b3JpZXMsIGluaXRpYWxSZXBvc2l0b3JpZXMpOworICAgICAgICB9KTsKKyAgICB9KTsKKwor
fSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2Fw
aS11cGRhdGUtdHJpZ2dlcmFibGUuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL2FwaS11cGRhdGUtdHJpZ2dlcmFibGUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJiNDZmM2Q5YzgzNDMyMzhhYzU2NTI3YzI4ZTMzYWNmOWEwYTM1ZmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9hcGktdXBkYXRlLXRyaWdnZXJhYmxlLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsNDc0ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotY29uc3QgYXNzZXJ0ID0gcmVx
dWlyZSgnYXNzZXJ0Jyk7Ci0KLXJlcXVpcmUoJy4uL3Rvb2xzL2pzL3YzLW1vZGVscy5qcycpOwot
Ci1jb25zdCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMn
KTsKLWNvbnN0IE1vY2tEYXRhID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvbW9jay1kYXRhLmpzJyk7
Ci1jb25zdCBhZGRTbGF2ZUZvclJlcG9ydCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1v
cGVyYXRpb25zLmpzJykuYWRkU2xhdmVGb3JSZXBvcnQ7Ci1jb25zdCBwcmVwYXJlU2VydmVyVGVz
dCA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL2NvbW1vbi1vcGVyYXRpb25zLmpzJykucHJlcGFyZVNl
cnZlclRlc3Q7Ci0KLWRlc2NyaWJlKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBmdW5jdGlv
biAoKSB7Ci0gICAgcHJlcGFyZVNlcnZlclRlc3QodGhpcyk7Ci0KLSAgICBjb25zdCBlbXB0eVVw
ZGF0ZSA9IHsKLSAgICAgICAgJ3NsYXZlTmFtZSc6ICdzb21lU2xhdmUnLAotICAgICAgICAnc2xh
dmVQYXNzd29yZCc6ICdzb21lUGFzc3dvcmQnLAotICAgICAgICAndHJpZ2dlcmFibGUnOiAnYnVp
bGQtd2Via2l0JywKLSAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogW10sCi0gICAgfTsKLQotICAg
IGNvbnN0IHNtYWxsVXBkYXRlID0gewotICAgICAgICAnc2xhdmVOYW1lJzogJ3NvbWVTbGF2ZScs
Ci0gICAgICAgICdzbGF2ZVBhc3N3b3JkJzogJ3NvbWVQYXNzd29yZCcsCi0gICAgICAgICd0cmln
Z2VyYWJsZSc6ICdidWlsZC13ZWJraXQnLAotICAgICAgICAnY29uZmlndXJhdGlvbnMnOiBbCi0g
ICAgICAgICAgICB7dGVzdDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBwbGF0Zm9ybTogTW9ja0Rh
dGEuc29tZVBsYXRmb3JtSWQoKX0KLSAgICAgICAgXSwKLSAgICB9OwotCi0gICAgaXQoJ3Nob3Vs
ZCByZWplY3Qgd2hlbiBzbGF2ZSBuYW1lIGlzIG1pc3NpbmcnLCAoKSA9PiB7Ci0gICAgICAgIHJl
dHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2Vy
YWJsZS8nLCB7fSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVh
bChyZXNwb25zZVsnc3RhdHVzJ10sICdNaXNzaW5nU2xhdmVOYW1lJyk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiB0aGVyZSBhcmUgbm8gc2xhdmVz
JywgKCkgPT4gewotICAgICAgICBjb25zdCB1cGRhdGUgPSB7c2xhdmVOYW1lOiBlbXB0eVVwZGF0
ZS5zbGF2ZU5hbWUsIHNsYXZlUGFzc3dvcmQ6IGVtcHR5VXBkYXRlLnNsYXZlUGFzc3dvcmR9Owot
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRh
dGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlKS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ1NsYXZlTm90Rm91bmQnKTsKLSAg
ICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHRoZSBzbGF2
ZSBwYXNzd29yZCBkb2VzblwndCBtYXRjaCcsICgpID0+IHsKLSAgICAgICAgcmV0dXJuIE1vY2tE
YXRhLmFkZE1vY2tEYXRhKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoZW1wdHlVcGRhdGUpOwotICAgICAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IHtzbGF2ZU5hbWU6IGVt
cHR5VXBkYXRlLnNsYXZlTmFtZSwgc2xhdmVQYXNzd29yZDogJ2JhZFBhc3N3b3JkJ307Ci0gICAg
ICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRh
dGUtdHJpZ2dlcmFibGUvJywgZW1wdHlVcGRhdGUpOwotICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09L
Jyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBhY2NlcHQgYW4gZW1w
dHkgcmVwb3J0JywgKCkgPT4gewotICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkTW9ja0RhdGEo
VGVzdFNlcnZlci5kYXRhYmFzZSgpKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBh
ZGRTbGF2ZUZvclJlcG9ydChlbXB0eVVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkv
dXBkYXRlLXRyaWdnZXJhYmxlLycsIGVtcHR5VXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigocmVz
cG9uc2UpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdPSycpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdkZWxldGUgZXhpc3Rpbmcg
Y29uZmlndXJhdGlvbnMgd2hlbiBhY2NlcHRpbmcgYW4gZW1wdHkgcmVwb3J0JywgKCkgPT4gewot
ICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgcmV0dXJu
IE1vY2tEYXRhLmFkZE1vY2tEYXRhKGRiKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICAgICAgYWRkU2xhdmVGb3JSZXBvcnQoZW1wdHlV
cGRhdGUpLAotICAgICAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfY29uZmlndXJh
dGlvbnMnLCB7J3RyaWdnZXJhYmxlJzogMTAwMCAvLyBidWlsZC13ZWJraXQKLSAgICAgICAgICAg
ICAgICAgICAgLCAndGVzdCc6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgJ3BsYXRmb3JtJzogTW9j
a0RhdGEuc29tZVBsYXRmb3JtSWQoKX0pCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgfSkudGhl
bigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0
SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgZW1wdHlVcGRhdGUpOwotICAgICAgICB9
KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ09LJyk7Ci0gICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCd0cmln
Z2VyYWJsZV9jb25maWd1cmF0aW9ucycsICd0ZXN0Jyk7Ci0gICAgICAgIH0pLnRoZW4oKHJvd3Mp
ID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzLmxlbmd0aCwgMCk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBhZGQgY29uZmlndXJhdGlvbnMgaW4gdGhl
IHVwZGF0ZScsICgpID0+IHsKLSAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNl
KCk7Ci0gICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRNb2NrRGF0YShkYikudGhlbigoKSA9PiB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQoc21hbGxVcGRhdGUpOwotICAg
ICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90
ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBzbWFsbFVwZGF0ZSk7
Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAgICAgICAgIHJldHVybiBkYi5zZWxl
Y3RBbGwoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25zJywgJ3Rlc3QnKTsKLSAgICAgICAgfSku
dGhlbigocm93cykgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvd3MubGVuZ3RoLCAx
KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb3dzWzBdWyd0ZXN0J10sIHNtYWxsVXBkYXRl
LmNvbmZpZ3VyYXRpb25zWzBdWyd0ZXN0J10pOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJv
d3NbMF1bJ3BsYXRmb3JtJ10sIHNtYWxsVXBkYXRlLmNvbmZpZ3VyYXRpb25zWzBdWydwbGF0Zm9y
bSddKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVu
IGEgY29uZmlndXJhdGlvbiBpcyBtYWxmb3JtZWQnLCAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBN
b2NrRGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHNtYWxsVXBkYXRlKTsKLSAgICAg
ICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCB1cGRhdGUgPSB7Ci0gICAgICAg
ICAgICAgICAgJ3NsYXZlTmFtZSc6ICdzb21lU2xhdmUnLAotICAgICAgICAgICAgICAgICdzbGF2
ZVBhc3N3b3JkJzogJ3NvbWVQYXNzd29yZCcsCi0gICAgICAgICAgICAgICAgJ3RyaWdnZXJhYmxl
JzogJ2J1aWxkLXdlYmtpdCcsCi0gICAgICAgICAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogW3t9
XSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlKTsKLSAgICAg
ICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdJbnZhbGlkQ29uZmlndXJhdGlvbkVudHJ5Jyk7Ci0gICAgICAgIH0p
OwotICAgIH0pOwotCi0gICAgZnVuY3Rpb24gdXBkYXRlV2l0aE9TWFJlcG9zaXRvcnlHcm91cCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgJ3NsYXZlTmFtZSc6ICdzb21l
U2xhdmUnLAotICAgICAgICAgICAgJ3NsYXZlUGFzc3dvcmQnOiAnc29tZVBhc3N3b3JkJywKLSAg
ICAgICAgICAgICd0cmlnZ2VyYWJsZSc6ICdlbXB0eS10cmlnZ2VyYWJsZScsCi0gICAgICAgICAg
ICAnY29uZmlndXJhdGlvbnMnOiBbCi0gICAgICAgICAgICAgICAge3Rlc3Q6IE1vY2tEYXRhLnNv
bWVUZXN0SWQoKSwgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCl9Ci0gICAgICAg
ICAgICBdLAotICAgICAgICAgICAgJ3JlcG9zaXRvcnlHcm91cHMnOiBbCi0gICAgICAgICAgICAg
ICAge25hbWU6ICdzeXN0ZW0tb25seScsIHJlcG9zaXRvcmllczogWwotICAgICAgICAgICAgICAg
ICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEubWFjb3NSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1Bh
dGNoOiBmYWxzZX0sCi0gICAgICAgICAgICAgICAgXX0sCi0gICAgICAgICAgICBdCi0gICAgICAg
IH07Ci0gICAgfQotCi0gICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiByZXBvc2l0b3J5R3JvdXBz
IGlzIG5vdCBhbiBhcnJheScsICgpID0+IHsKLSAgICAgICAgY29uc3QgdXBkYXRlID0gdXBkYXRl
V2l0aE9TWFJlcG9zaXRvcnlHcm91cCgpOwotICAgICAgICB1cGRhdGUucmVwb3NpdG9yeUdyb3Vw
cyA9IDE7Ci0gICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxlKFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xh
dmVGb3JSZXBvcnQodXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJp
Z2dlcmFibGUvJywgdXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkUmVwb3Np
dG9yeUdyb3VwcycpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgcmVq
ZWN0IHdoZW4gdGhlIG5hbWUgb2YgYSByZXBvc2l0b3J5IGdyb3VwIGlzIG5vdCBzcGVjaWZpZWQn
LCAoKSA9PiB7Ci0gICAgICAgIGNvbnN0IHVwZGF0ZSA9IHVwZGF0ZVdpdGhPU1hSZXBvc2l0b3J5
R3JvdXAoKTsKLSAgICAgICAgZGVsZXRlIHVwZGF0ZS5yZXBvc2l0b3J5R3JvdXBzWzBdLm5hbWU7
Ci0gICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxlKFRlc3RTZXJ2ZXIu
ZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JS
ZXBvcnQodXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJpZ2dlcmFi
bGUvJywgdXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkUmVwb3NpdG9yeUdy
b3VwJyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hl
biB0aGUgcmVwb3NpdG9yeSBsaXN0IGlzIG5vdCBzcGVjaWZpZWQgZm9yIGEgcmVwb3NpdG9yeSBn
cm91cCcsICgpID0+IHsKLSAgICAgICAgY29uc3QgdXBkYXRlID0gdXBkYXRlV2l0aE9TWFJlcG9z
aXRvcnlHcm91cCgpOwotICAgICAgICBkZWxldGUgdXBkYXRlLnJlcG9zaXRvcnlHcm91cHNbMF0u
cmVwb3NpdG9yaWVzOwotICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkRW1wdHlUcmlnZ2VyYWJs
ZShUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJu
IGFkZFNsYXZlRm9yUmVwb3J0KHVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBk
YXRlLXRyaWdnZXJhYmxlLycsIHVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9
PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxp
ZFJlcG9zaXRvcnlHcm91cCcpOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91
bGQgcmVqZWN0IHdoZW4gdGhlIHJlcG9zaXRvcnkgbGlzdCBvZiBhIHJlcG9zaXRvcnkgZ3JvdXAg
aXMgbm90IGFuIGFycmF5JywgKCkgPT4gewotICAgICAgICBjb25zdCB1cGRhdGUgPSB1cGRhdGVX
aXRoT1NYUmVwb3NpdG9yeUdyb3VwKCk7Ci0gICAgICAgIHVwZGF0ZS5yZXBvc2l0b3J5R3JvdXBz
WzBdLnJlcG9zaXRvcmllcyA9ICdoaSc7Ci0gICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0
eVRyaWdnZXJhYmxlKFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQodXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigo
KSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNP
TignL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigo
cmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVz
J10sICdJbnZhbGlkUmVwb3NpdG9yeUdyb3VwJyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0g
ICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiBhIHJlcG9zaXRvcnkgZ3JvdXAgY29udGFpbnMgYSBy
ZXBvc2l0b3J5IGRhdGEgdGhhdCBpcyBub3QgYW4gYXJyYXknLCAoKSA9PiB7Ci0gICAgICAgIGNv
bnN0IHVwZGF0ZSA9IHVwZGF0ZVdpdGhPU1hSZXBvc2l0b3J5R3JvdXAoKTsKLSAgICAgICAgdXBk
YXRlLnJlcG9zaXRvcnlHcm91cHNbMF0ucmVwb3NpdG9yaWVzWzBdID0gOTk5OwotICAgICAgICBy
ZXR1cm4gTW9ja0RhdGEuYWRkRW1wdHlUcmlnZ2VyYWJsZShUZXN0U2VydmVyLmRhdGFiYXNlKCkp
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHVwZGF0
ZSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHVwZGF0
ZSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZFJlcG9zaXRvcnlEYXRhJyk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiBhIHJlcG9zaXRv
cnkgZ3JvdXAgY29udGFpbnMgYW4gaW52YWxpZCByZXBvc2l0b3J5IGlkJywgKCkgPT4gewotICAg
ICAgICBjb25zdCB1cGRhdGUgPSB1cGRhdGVXaXRoT1NYUmVwb3NpdG9yeUdyb3VwKCk7Ci0gICAg
ICAgIHVwZGF0ZS5yZXBvc2l0b3J5R3JvdXBzWzBdLnJlcG9zaXRvcmllc1swXSA9IHtyZXBvc2l0
b3J5OiA5OTl9OwotICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkRW1wdHlUcmlnZ2VyYWJsZShU
ZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIGFk
ZFNsYXZlRm9yUmVwb3J0KHVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRl
LXRyaWdnZXJhYmxlLycsIHVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7
Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZFJl
cG9zaXRvcnknKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHJlamVj
dCB3aGVuIGEgcmVwb3NpdG9yeSBncm91cCBjb250YWlucyBhIGR1cGxpY2F0ZSByZXBvc2l0b3J5
IGlkJywgKCkgPT4gewotICAgICAgICBjb25zdCB1cGRhdGUgPSB1cGRhdGVXaXRoT1NYUmVwb3Np
dG9yeUdyb3VwKCk7Ci0gICAgICAgIGNvbnN0IGdyb3VwID0gdXBkYXRlLnJlcG9zaXRvcnlHcm91
cHNbMF07Ci0gICAgICAgIGdyb3VwLnJlcG9zaXRvcmllcy5wdXNoKGdyb3VwLnJlcG9zaXRvcmll
c1swXSk7Ci0gICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxlKFRlc3RT
ZXJ2ZXIuZGF0YWJhc2UoKSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xh
dmVGb3JSZXBvcnQodXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91cGRhdGUtdHJp
Z2dlcmFibGUvJywgdXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdEdXBsaWNhdGVSZXBv
c2l0b3J5Jyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBhZGQgYSBu
ZXcgcmVwb3NpdG9yeSBncm91cCB3aGVuIHRoZXJlIGFyZSBub25lJywgKCkgPT4gewotICAgICAg
ICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgcmV0dXJuIE1vY2tE
YXRhLmFkZEVtcHR5VHJpZ2dlcmFibGUoZGIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0
dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHVwZGF0ZVdpdGhPU1hSZXBvc2l0b3J5R3JvdXAoKSk7Ci0g
ICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHVwZGF0ZVdpdGhP
U1hSZXBvc2l0b3J5R3JvdXAoKSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0g
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnT0snKTsKLSAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9jb25m
aWd1cmF0aW9ucycsICd0ZXN0JyksIGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9y
eV9ncm91cHMnKV0pOwotICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAg
IGNvbnN0IFtjb25maWd1cmF0aW9ucywgcmVwb3NpdG9yeUdyb3Vwc10gPSByZXN1bHQ7Ci0KLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb25maWd1cmF0aW9ucy5sZW5ndGgsIDEpOwotICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbmZpZ3VyYXRpb25zWzBdWyd0ZXN0J10sIE1vY2tEYXRhLnNv
bWVUZXN0SWQoKSk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29uZmlndXJhdGlvbnNbMF1b
J3BsYXRmb3JtJ10sIE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCkpOwotCi0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwcy5sZW5ndGgsIDEpOwotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF1bJ25hbWUnXSwgJ3N5c3RlbS1vbmx5Jyk7Ci0g
ICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXVsndHJpZ2dlcmFibGUn
XSwgTW9ja0RhdGEuZW1wdHlUcmlnZ2VyYWdibGVJZCgpKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBhZGQgYSBkdXBsaWNhdGUgcmVwb3NpdG9yeSBncm91cCB3
aGVuIHRoZXJlIGlzIGEgZ3JvdXAgb2YgdGhlIHNhbWUgbmFtZScsICgpID0+IHsKLSAgICAgICAg
Y29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGxldCBpbml0aWFsUmVz
dWx0OwotICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkRW1wdHlUcmlnZ2VyYWJsZShkYikudGhl
bigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBvcnQodXBkYXRlV2l0
aE9TWFJlcG9zaXRvcnlHcm91cCgpKTsKLSAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTldpdGhTdGF0dXMoJy9h
cGkvdXBkYXRlLXRyaWdnZXJhYmxlLycsIHVwZGF0ZVdpdGhPU1hSZXBvc2l0b3J5R3JvdXAoKSk7
Ci0gICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gUHJv
bWlzZS5hbGwoW2RiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfY29uZmlndXJhdGlvbnMnLCAndGVz
dCcpLCBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJyldKTsKLSAg
ICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICBpbml0aWFsUmVzdWx0ID0g
cmVzdWx0OwotICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpT
T05XaXRoU3RhdHVzKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCB1cGRhdGVXaXRoT1NYUmVw
b3NpdG9yeUdyb3VwKCkpOwotICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9jb25maWd1cmF0aW9u
cycsICd0ZXN0JyksIGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMn
KV0pOwotICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IFtp
bml0aWFsQ29uZmlndXJhdGlvbnMsIGluaXRpYWxSZXBvc2l0b3J5R3JvdXBzXSA9IGluaXRpYWxS
ZXN1bHQ7Ci0gICAgICAgICAgICBjb25zdCBbY29uZmlndXJhdGlvbnMsIHJlcG9zaXRvcnlHcm91
cHNdID0gcmVzdWx0OwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb25maWd1cmF0aW9u
cywgaW5pdGlhbENvbmZpZ3VyYXRpb25zKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
cmVwb3NpdG9yeUdyb3VwcywgaW5pdGlhbFJlcG9zaXRvcnlHcm91cHMpOwotICAgICAgICB9KQot
ICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBub3QgYWRkIGEgZHVwbGljYXRlIHJlcG9zaXRvcnkg
Z3JvdXAgd2hlbiB0aGVyZSBpcyBhIGdyb3VwIG9mIHRoZSBzYW1lIG5hbWUnLCAoKSA9PiB7Ci0g
ICAgICAgIGNvbnN0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwotICAgICAgICBsZXQgaW5p
dGlhbFJlc3VsdDsKLSAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZEVtcHR5VHJpZ2dlcmFibGUo
ZGIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHVw
ZGF0ZVdpdGhPU1hSZXBvc2l0b3J5R3JvdXAoKSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT05XaXRoU3Rh
dHVzKCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCB1cGRhdGVXaXRoT1NYUmVwb3NpdG9yeUdy
b3VwKCkpOwotICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UuYWxsKFtkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX2NvbmZpZ3VyYXRpb25z
JywgJ3Rlc3QnKSwgZGIuc2VsZWN0QWxsKCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3Vwcycp
XSk7Ci0gICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewotICAgICAgICAgICAgaW5pdGlhbFJl
c3VsdCA9IHJlc3VsdDsKLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgdXBkYXRlV2l0
aE9TWFJlcG9zaXRvcnlHcm91cCgpKTsKLSAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfY29uZmln
dXJhdGlvbnMnLCAndGVzdCcpLCBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcnlf
Z3JvdXBzJyldKTsKLSAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICBj
b25zdCBbaW5pdGlhbENvbmZpZ3VyYXRpb25zLCBpbml0aWFsUmVwb3NpdG9yeUdyb3Vwc10gPSBp
bml0aWFsUmVzdWx0OwotICAgICAgICAgICAgY29uc3QgW2NvbmZpZ3VyYXRpb25zLCByZXBvc2l0
b3J5R3JvdXBzXSA9IHJlc3VsdDsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29uZmln
dXJhdGlvbnMsIGluaXRpYWxDb25maWd1cmF0aW9ucyk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKHJlcG9zaXRvcnlHcm91cHMsIGluaXRpYWxSZXBvc2l0b3J5R3JvdXBzKTsKLSAgICAg
ICAgfSkKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgdXBkYXRlIHRoZSBkZXNjcmlwdGlvbiBv
ZiBhIHJlcG9zaXRvcnkgZ3JvdXAgd2hlbiB0aGUgbmFtZSBtYXRjaGVzJywgKCkgPT4gewotICAg
ICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgY29uc3QgaW5p
dGlhbFVwZGF0ZSA9IHVwZGF0ZVdpdGhPU1hSZXBvc2l0b3J5R3JvdXAoKTsKLSAgICAgICAgY29u
c3Qgc2Vjb25kVXBkYXRlID0gdXBkYXRlV2l0aE9TWFJlcG9zaXRvcnlHcm91cCgpOwotICAgICAg
ICBzZWNvbmRVcGRhdGUucmVwb3NpdG9yeUdyb3Vwc1swXS5kZXNjcmlwdGlvbiA9ICd0aGlzIGdy
b3VwIGlzIGF3ZXNvbWUnOwotICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkRW1wdHlUcmlnZ2Vy
YWJsZShkYikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JSZXBv
cnQoaW5pdGlhbFVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAg
cmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBpL3Vw
ZGF0ZS10cmlnZ2VyYWJsZS8nLCBpbml0aWFsVXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigocmVz
cG9uc2UpID0+IGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnKSku
dGhlbigocmVwb3NpdG9yeUdyb3VwcykgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cG9zaXRvcnlHcm91cHMubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBv
c2l0b3J5R3JvdXBzWzBdWyduYW1lJ10sICdzeXN0ZW0tb25seScpOwotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF1bJ2Rlc2NyaXB0aW9uJ10sIG51bGwpOwotICAg
ICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT05XaXRoU3RhdHVz
KCcvYXBpL3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBzZWNvbmRVcGRhdGUpOwotICAgICAgICB9KS50
aGVuKCgpID0+IGRiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnKSku
dGhlbigocmVwb3NpdG9yeUdyb3VwcykgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
cG9zaXRvcnlHcm91cHMubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBv
c2l0b3J5R3JvdXBzWzBdWyduYW1lJ10sICdzeXN0ZW0tb25seScpOwotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF1bJ2Rlc2NyaXB0aW9uJ10sICd0aGlzIGdyb3Vw
IGlzIGF3ZXNvbWUnKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBmdW5jdGlvbiB1cGRh
dGVXaXRoTWFjV2ViS2l0UmVwb3NpdG9yeUdyb3VwcygpCi0gICAgewotICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgJ3NsYXZlTmFtZSc6ICdzb21lU2xhdmUnLAotICAgICAgICAgICAgJ3Ns
YXZlUGFzc3dvcmQnOiAnc29tZVBhc3N3b3JkJywKLSAgICAgICAgICAgICd0cmlnZ2VyYWJsZSc6
ICdlbXB0eS10cmlnZ2VyYWJsZScsCi0gICAgICAgICAgICAnY29uZmlndXJhdGlvbnMnOiBbCi0g
ICAgICAgICAgICAgICAge3Rlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgcGxhdGZvcm06IE1v
Y2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCl9Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ3Jl
cG9zaXRvcnlHcm91cHMnOiBbCi0gICAgICAgICAgICAgICAge25hbWU6ICdzeXN0ZW0tb25seScs
IHJlcG9zaXRvcmllczogW3tyZXBvc2l0b3J5OiBNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgp
fV19LAotICAgICAgICAgICAgICAgIHtuYW1lOiAnc3lzdGVtLWFuZC13ZWJraXQnLCByZXBvc2l0
b3JpZXM6Ci0gICAgICAgICAgICAgICAgICAgIFt7cmVwb3NpdG9yeTogTW9ja0RhdGEud2Via2l0
UmVwb3NpdG9yeUlkKCl9LCB7cmVwb3NpdG9yeTogTW9ja0RhdGEubWFjb3NSZXBvc2l0b3J5SWQo
KX1dfSwKLSAgICAgICAgICAgIF0KLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBt
YXBSZXBvc2l0b3JpZXNCeUdyb3VwKHJlcG9zaXRvcmllcykKLSAgICB7Ci0gICAgICAgIGNvbnN0
IG1hcCA9IHt9OwotICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZXBvc2l0b3JpZXMpIHsKLSAg
ICAgICAgICAgIGNvbnN0IGdyb3VwSWQgPSByb3dbJ2dyb3VwJ107Ci0gICAgICAgICAgICBpZiAo
IShncm91cElkIGluIG1hcCkpCi0gICAgICAgICAgICAgICAgbWFwW2dyb3VwSWRdID0gW107Ci0g
ICAgICAgICAgICBtYXBbZ3JvdXBJZF0ucHVzaChyb3dbJ3JlcG9zaXRvcnknXSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiByZWZldGNoTWFu
aWZlc3QoKQotICAgIHsKLSAgICAgICAgTW9ja0RhdGEucmVzZXRWM01vZGVscygpOwotICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OKCcvYXBpL21hbmlmZXN0Jyku
dGhlbigoY29udGVudCkgPT4gTWFuaWZlc3QuX2RpZEZldGNoTWFuaWZlc3QoY29udGVudCkpOwot
ICAgIH0KLQotICAgIGl0KCdzaG91bGQgdXBkYXRlIHRoZSBhY2NlcHRhYmxlIG9mIGN1c3RvbSBy
b290cyBhbmQgcGF0Y2hlcycsICgpID0+IHsKLSAgICAgICAgY29uc3QgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7Ci0gICAgICAgIGNvbnN0IGluaXRpYWxVcGRhdGUgPSB1cGRhdGVXaXRoTWFj
V2ViS2l0UmVwb3NpdG9yeUdyb3VwcygpOwotICAgICAgICBjb25zdCBzZWNvbmRVcGRhdGUgPSB1
cGRhdGVXaXRoTWFjV2ViS2l0UmVwb3NpdG9yeUdyb3VwcygpOwotICAgICAgICBzZWNvbmRVcGRh
dGUucmVwb3NpdG9yeUdyb3Vwc1swXS5hY2NlcHRzUm9vdHMgPSB0cnVlOwotICAgICAgICBzZWNv
bmRVcGRhdGUucmVwb3NpdG9yeUdyb3Vwc1sxXS5yZXBvc2l0b3JpZXNbMF0uYWNjZXB0c1BhdGNo
ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFkZEVtcHR5VHJpZ2dlcmFibGUoZGIp
LnRoZW4oKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KGluaXRp
YWxVcGRhdGUpOwotICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS91cGRhdGUtdHJp
Z2dlcmFibGUvJywgaW5pdGlhbFVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gcmVmZXRj
aE1hbmlmZXN0KCkpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yeUdy
b3VwcyA9IFRyaWdnZXJhYmxlUmVwb3NpdG9yeUdyb3VwLnNvcnRCeU5hbWUoVHJpZ2dlcmFibGVS
ZXBvc2l0b3J5R3JvdXAuYWxsKCkpOwotICAgICAgICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3Np
dG9yeS5maW5kVG9wTGV2ZWxCeU5hbWUoJ1dlYktpdCcpOwotICAgICAgICAgICAgY29uc3QgbWFj
b3MgPSBSZXBvc2l0b3J5LmZpbmRUb3BMZXZlbEJ5TmFtZSgnbWFjT1MnKTsKLSAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXS5uYW1lKCksICdzeXN0ZW0tYW5kLXdlYmtp
dCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF0uZGVzY3Jp
cHRpb24oKSwgJ3N5c3RlbS1hbmQtd2Via2l0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVwb3NpdG9yeUdyb3Vwc1swXS5hY2NlcHRzQ3VzdG9tUm9vdHMoKSwgZmFsc2UpOwotICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXBvc2l0b3J5R3JvdXBzWzBdLnJlcG9zaXRvcmllcygp
LCBbd2Via2l0LCBtYWNvc10pOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlH
cm91cHNbMF0uYWNjZXB0c1BhdGNoRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCBmYWxzZSk7Ci0gICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXS5hY2NlcHRzUGF0Y2hGb3JS
ZXBvc2l0b3J5KG1hY29zKSwgZmFsc2UpOwotCi0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVw
b3NpdG9yeUdyb3Vwc1sxXS5uYW1lKCksICdzeXN0ZW0tb25seScpOwotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMV0uZGVzY3JpcHRpb24oKSwgJ3N5c3RlbS1vbmx5
Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1sxXS5hY2NlcHRz
Q3VzdG9tUm9vdHMoKSwgZmFsc2UpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyZXBv
c2l0b3J5R3JvdXBzWzFdLnJlcG9zaXRvcmllcygpLCBbbWFjb3NdKTsKLSAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzFdLmFjY2VwdHNQYXRjaEZvclJlcG9zaXRvcnko
d2Via2l0KSwgZmFsc2UpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91
cHNbMV0uYWNjZXB0c1BhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKLSAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OV2l0aFN0YXR1cygnL2Fw
aS91cGRhdGUtdHJpZ2dlcmFibGUvJywgc2Vjb25kVXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigo
KSA9PiByZWZldGNoTWFuaWZlc3QoKSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBy
ZXBvc2l0b3J5R3JvdXBzID0gVHJpZ2dlcmFibGVSZXBvc2l0b3J5R3JvdXAuc29ydEJ5TmFtZShU
cmlnZ2VyYWJsZVJlcG9zaXRvcnlHcm91cC5hbGwoKSk7Ci0gICAgICAgICAgICBjb25zdCB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmZpbmRUb3BMZXZlbEJ5TmFtZSgnV2ViS2l0Jyk7Ci0gICAgICAgICAg
ICBjb25zdCBtYWNvcyA9IFJlcG9zaXRvcnkuZmluZFRvcExldmVsQnlOYW1lKCdtYWNPUycpOwot
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHMubGVuZ3RoLCAyKTsKLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzBdLm5hbWUoKSwgJ3N5c3Rl
bS1hbmQtd2Via2l0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vw
c1swXS5kZXNjcmlwdGlvbigpLCAnc3lzdGVtLWFuZC13ZWJraXQnKTsKLSAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzBdLmFjY2VwdHNDdXN0b21Sb290cygpLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF0ucmVw
b3NpdG9yaWVzKCksIFt3ZWJraXQsIG1hY29zXSk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVwb3NpdG9yeUdyb3Vwc1swXS5hY2NlcHRzUGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIHRy
dWUpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF0uYWNjZXB0
c1BhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsKLQotICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMV0ubmFtZSgpLCAnc3lzdGVtLW9ubHknKTsKLSAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzFdLmRlc2NyaXB0aW9uKCksICdz
eXN0ZW0tb25seScpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNb
MV0uYWNjZXB0c0N1c3RvbVJvb3RzKCksIHRydWUpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChyZXBvc2l0b3J5R3JvdXBzWzFdLnJlcG9zaXRvcmllcygpLCBbbWFjb3NdKTsKLSAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzFdLmFjY2VwdHNQYXRjaEZvclJl
cG9zaXRvcnkod2Via2l0KSwgZmFsc2UpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9z
aXRvcnlHcm91cHNbMV0uYWNjZXB0c1BhdGNoRm9yUmVwb3NpdG9yeShtYWNvcyksIGZhbHNlKTsK
LSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OV2l0aFN0
YXR1cygnL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgaW5pdGlhbFVwZGF0ZSk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCByZXBsYWNlIGEgcmVwb3NpdG9yeSB3aGVu
IHRoZSByZXBvc2l0b3J5IGdyb3VwIG5hbWUgbWF0Y2hlcycsICgpID0+IHsKLSAgICAgICAgY29u
c3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7Ci0gICAgICAgIGNvbnN0IGluaXRpYWxVcGRh
dGUgPSB1cGRhdGVXaXRoTWFjV2ViS2l0UmVwb3NpdG9yeUdyb3VwcygpOwotICAgICAgICBjb25z
dCBzZWNvbmRVcGRhdGUgPSB1cGRhdGVXaXRoTWFjV2ViS2l0UmVwb3NpdG9yeUdyb3VwcygpOwot
ICAgICAgICBsZXQgaW5pdGlhbEdyb3VwczsKLSAgICAgICAgc2Vjb25kVXBkYXRlLnJlcG9zaXRv
cnlHcm91cHNbMV0ucmVwb3NpdG9yaWVzWzBdID0ge3JlcG9zaXRvcnk6IE1vY2tEYXRhLmdpdFdl
YmtpdFJlcG9zaXRvcnlJZCgpfQotICAgICAgICByZXR1cm4gTW9ja0RhdGEuYWRkRW1wdHlUcmln
Z2VyYWJsZShkYikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gYWRkU2xhdmVGb3JS
ZXBvcnQoaW5pdGlhbFVwZGF0ZSk7Ci0gICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT05XaXRoU3RhdHVzKCcvYXBp
L3VwZGF0ZS10cmlnZ2VyYWJsZS8nLCBpbml0aWFsVXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigo
cmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbZGIuc2VsZWN0
QWxsKCd0cmlnZ2VyYWJsZV9yZXBvc2l0b3J5X2dyb3VwcycsICduYW1lJyksIGRiLnNlbGVjdEFs
bCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywgJ3JlcG9zaXRvcnknKV0pOwotICAgICAgICB9
KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IFtyZXBvc2l0b3J5R3JvdXBz
LCByZXBvc2l0b3JpZXNdID0gcmVzdWx0OwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9z
aXRvcnlHcm91cHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0
b3J5R3JvdXBzWzBdWyduYW1lJ10sICdzeXN0ZW0tYW5kLXdlYmtpdCcpOwotICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF1bJ3RyaWdnZXJhYmxlJ10sIE1vY2tEYXRh
LmVtcHR5VHJpZ2dlcmFnYmxlSWQoKSk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3Np
dG9yeUdyb3Vwc1sxXVsnbmFtZSddLCAnc3lzdGVtLW9ubHknKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXBvc2l0b3J5R3JvdXBzWzFdWyd0cmlnZ2VyYWJsZSddLCBNb2NrRGF0YS5lbXB0
eVRyaWdnZXJhZ2JsZUlkKCkpOwotICAgICAgICAgICAgaW5pdGlhbEdyb3VwcyA9IHJlcG9zaXRv
cnlHcm91cHM7Ci0KLSAgICAgICAgICAgIGNvbnN0IHJlcG9zaXRvcmllc0J5R3JvdXAgPSBtYXBS
ZXBvc2l0b3JpZXNCeUdyb3VwKHJlcG9zaXRvcmllcyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1
YWwoT2JqZWN0LmtleXMocmVwb3NpdG9yaWVzQnlHcm91cCkubGVuZ3RoLCAyKTsKLSAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwocmVwb3NpdG9yaWVzQnlHcm91cFtyZXBvc2l0b3J5R3JvdXBz
WzBdWydpZCddXSwgW01vY2tEYXRhLm1hY29zUmVwb3NpdG9yeUlkKCksIE1vY2tEYXRhLndlYmtp
dFJlcG9zaXRvcnlJZCgpXSk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcG9zaXRv
cmllc0J5R3JvdXBbcmVwb3NpdG9yeUdyb3Vwc1sxXVsnaWQnXV0sIFtNb2NrRGF0YS5tYWNvc1Jl
cG9zaXRvcnlJZCgpXSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLnBvc3RKU09OV2l0aFN0YXR1cygnL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgc2Vjb25k
VXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gUHJv
bWlzZS5hbGwoW2RiLnNlbGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnLCAn
bmFtZScpLCBkYi5zZWxlY3RBbGwoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsICdyZXBvc2l0
b3J5JyldKTsKLSAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICBjb25z
dCBbcmVwb3NpdG9yeUdyb3VwcywgcmVwb3NpdG9yaWVzXSA9IHJlc3VsdDsKLSAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwocmVwb3NpdG9yeUdyb3VwcywgaW5pdGlhbEdyb3Vwcyk7Ci0KLSAg
ICAgICAgICAgIGNvbnN0IHJlcG9zaXRvcmllc0J5R3JvdXAgPSBtYXBSZXBvc2l0b3JpZXNCeUdy
b3VwKHJlcG9zaXRvcmllcyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoT2JqZWN0LmtleXMo
cmVwb3NpdG9yaWVzQnlHcm91cCkubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwocmVwb3NpdG9yaWVzQnlHcm91cFtpbml0aWFsR3JvdXBzWzBdWydpZCddXSwgW01vY2tE
YXRhLm1hY29zUmVwb3NpdG9yeUlkKCksIE1vY2tEYXRhLmdpdFdlYmtpdFJlcG9zaXRvcnlJZCgp
XSk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJlcG9zaXRvcmllc0J5R3JvdXBbaW5p
dGlhbEdyb3Vwc1sxXVsnaWQnXV0sIFtNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgpXSk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCByZXBsYWNlIGEgcmVwb3NpdG9y
eSB3aGVuIHRoZSBsaXN0IG9mIHJlcG9zaXRvcmllcyBtYXRjaGVzJywgKCkgPT4gewotICAgICAg
ICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKLSAgICAgICAgY29uc3QgaW5pdGlh
bFVwZGF0ZSA9IHVwZGF0ZVdpdGhNYWNXZWJLaXRSZXBvc2l0b3J5R3JvdXBzKCk7Ci0gICAgICAg
IGNvbnN0IHNlY29uZFVwZGF0ZSA9IHVwZGF0ZVdpdGhNYWNXZWJLaXRSZXBvc2l0b3J5R3JvdXBz
KCk7Ci0gICAgICAgIGxldCBpbml0aWFsR3JvdXBzOwotICAgICAgICBsZXQgaW5pdGlhbFJlcG9z
aXRvcmllczsKLSAgICAgICAgc2Vjb25kVXBkYXRlLnJlcG9zaXRvcnlHcm91cHNbMF0ubmFtZSA9
ICdtYWMtb25seSc7Ci0gICAgICAgIHJldHVybiBNb2NrRGF0YS5hZGRFbXB0eVRyaWdnZXJhYmxl
KGRiKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBhZGRTbGF2ZUZvclJlcG9ydChp
bml0aWFsVXBkYXRlKTsKLSAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvdXBkYXRl
LXRyaWdnZXJhYmxlLycsIGluaXRpYWxVcGRhdGUpOwotICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtkYi5zZWxlY3RBbGwoJ3Ry
aWdnZXJhYmxlX3JlcG9zaXRvcnlfZ3JvdXBzJywgJ25hbWUnKSwgZGIuc2VsZWN0QWxsKCd0cmln
Z2VyYWJsZV9yZXBvc2l0b3JpZXMnLCAncmVwb3NpdG9yeScpXSk7Ci0gICAgICAgIH0pLnRoZW4o
KHJlc3VsdCkgPT4gewotICAgICAgICAgICAgY29uc3QgW3JlcG9zaXRvcnlHcm91cHMsIHJlcG9z
aXRvcmllc10gPSByZXN1bHQ7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVwb3NpdG9yeUdy
b3Vwcy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91
cHNbMF1bJ25hbWUnXSwgJ3N5c3RlbS1hbmQtd2Via2l0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1swXVsndHJpZ2dlcmFibGUnXSwgTW9ja0RhdGEuZW1wdHlU
cmlnZ2VyYWdibGVJZCgpKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXBvc2l0b3J5R3Jv
dXBzWzFdWyduYW1lJ10sICdzeXN0ZW0tb25seScpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcG9zaXRvcnlHcm91cHNbMV1bJ3RyaWdnZXJhYmxlJ10sIE1vY2tEYXRhLmVtcHR5VHJpZ2dl
cmFnYmxlSWQoKSk7Ci0gICAgICAgICAgICBpbml0aWFsR3JvdXBzID0gcmVwb3NpdG9yeUdyb3Vw
czsKLQotICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yaWVzQnlHcm91cCA9IG1hcFJlcG9zaXRv
cmllc0J5R3JvdXAocmVwb3NpdG9yaWVzKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChPYmpl
Y3Qua2V5cyhyZXBvc2l0b3JpZXNCeUdyb3VwKS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChyZXBvc2l0b3JpZXNCeUdyb3VwW3JlcG9zaXRvcnlHcm91cHNbMF1bJ2lk
J11dLCBbTW9ja0RhdGEubWFjb3NSZXBvc2l0b3J5SWQoKSwgTW9ja0RhdGEud2Via2l0UmVwb3Np
dG9yeUlkKCldKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwocmVwb3NpdG9yaWVzQnlH
cm91cFtyZXBvc2l0b3J5R3JvdXBzWzFdWydpZCddXSwgW01vY2tEYXRhLm1hY29zUmVwb3NpdG9y
eUlkKCldKTsKLSAgICAgICAgICAgIGluaXRpYWxSZXBvc2l0b3JpZXMgPSByZXBvc2l0b3JpZXM7
Ci0KLSAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OV2l0
aFN0YXR1cygnL2FwaS91cGRhdGUtdHJpZ2dlcmFibGUvJywgc2Vjb25kVXBkYXRlKTsKLSAgICAg
ICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2RiLnNl
bGVjdEFsbCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91cHMnLCAnbmFtZScpLCBkYi5zZWxl
Y3RBbGwoJ3RyaWdnZXJhYmxlX3JlcG9zaXRvcmllcycsICdyZXBvc2l0b3J5JyldKTsKLSAgICAg
ICAgfSkudGhlbigocmVzdWx0KSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBbcmVwb3NpdG9yeUdy
b3VwcywgcmVwb3NpdG9yaWVzXSA9IHJlc3VsdDsKLQotICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHJlcG9zaXRvcnlHcm91cHMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXBvc2l0b3J5R3JvdXBzWzBdWyduYW1lJ10sICdtYWMtb25seScpOwotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlcG9zaXRvcnlHcm91cHNbMF1bJ3RyaWdnZXJhYmxlJ10sIGluaXRpYWxHcm91
cHNbMV1bJ3RyaWdnZXJhYmxlJ10pOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcG9zaXRv
cnlHcm91cHNbMV1bJ25hbWUnXSwgJ3N5c3RlbS1hbmQtd2Via2l0Jyk7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVwb3NpdG9yeUdyb3Vwc1sxXVsndHJpZ2dlcmFibGUnXSwgaW5pdGlhbEdy
b3Vwc1swXVsndHJpZ2dlcmFibGUnXSk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
cmVwb3NpdG9yaWVzLCBpbml0aWFsUmVwb3NpdG9yaWVzKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
Ci0KLX0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>