<?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>171956</bug_id>
          
          <creation_ts>2017-05-10 17:14:11 -0700</creation_ts>
          <short_desc>Add API to upload a patched build for a custom A/B testing</short_desc>
          <delta_ts>2017-05-10 19:32:03 -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>InRadar</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>rniwa</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1307085</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-10 17:14:11 -0700</bug_when>
    <thetext>Add new API to upload the build product of a patch for a custom A/B testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307119</commentid>
    <comment_count>1</comment_count>
      <attachid>309672</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-10 18:34:19 -0700</bug_when>
    <thetext>Created attachment 309672
Adds /api/upload-root</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307131</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-10 19:10:20 -0700</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307135</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-10 19:29:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/32124610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307136</commentid>
    <comment_count>4</comment_count>
      <attachid>309672</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-10 19:32:02 -0700</bug_when>
    <thetext>Comment on attachment 309672
Adds /api/upload-root

Clearing flags on attachment: 309672

Committed r216647: &lt;http://trac.webkit.org/changeset/216647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307137</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-05-10 19:32:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309672</attachid>
            <date>2017-05-10 18:34:19 -0700</date>
            <delta_ts>2017-05-10 19:32:02 -0700</delta_ts>
            <desc>Adds /api/upload-root</desc>
            <filename>bug-171956-20170510183418.patch</filename>
            <type>text/plain</type>
            <size>61096</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjM4CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA0Mjk0ZjhiZTc5MjBhMzVmMzBmNGMzYmY0OGVlZTg1MTU5ODZiNDBhLi5kOWI0ODdkNGEy
ZGFjZTczMjMwZWIzYjcxNDJhNjFiZjQ5MTM1MGQzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxNy0wNS0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgQVBJIHRvIHVwbG9hZCBhIHBhdGNoZWQgYnVpbGQg
Zm9yIGEgY3VzdG9tIEEvQiB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzE5NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCAvYXBpL3VwbG9hZC1yb290IHRvIHVwbG9hZCBhIHJvb3Qg
ZmlsZSwgdGhlIGJ1aWxkIHByb2R1Y3Qgb2YgYSBwYXRjaCBhc3NvY2lhdGVkIHdpdGggYSBjb21t
aXQgc2V0LgorCisgICAgICAgIEV4dHJhY3RlZCBtb3JlIGZ1bmN0aW9ucyBvdXQgb2YgcHJpdmls
ZWdlZC1hcGkvdXBsb2FkLWZpbGUucGhwIHRvIHVwbG9hZGVkLWZpbGUtaGVscGVycy5waHAgdG8g
c2hhcmUgY29kZQorICAgICAgICB3aXRoIC9hcGkvdXBsb2FkLXJvb3QucGhwLgorCisgICAgICAg
ICogcHVibGljL2FwaS91cGxvYWQtcm9vdC5waHA6IEFkZGVkLgorICAgICAgICAobWFpbik6Cisg
ICAgICAgIChjb21wdXRlX2NvbW1pdF9zZXRfaXRlbXNfdG9fdXBkYXRlKTogRmluZCB0aGUgbGlz
dCBvZiBjb21taXQgc2V0IGl0ZW1zIHRvIGFzc29jaWF0ZSB0aGlzIHJvb3Qgd2l0aC4KKyAgICAg
ICAgQSByb290IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggbXVsdGlwbGUgcmVwb3NpdG9yaWVzIGFu
ZCB0aGVyZSBmb3JlIGNvbW1pdCBzZXQgaXRlbXM7IGUuZy4gaWYgYSBzb2Z0d2FyZQorICAgICAg
ICBpcyBidWlsdCBmcm9tIG11bHRpcGxlIHJlcG9zaXRvcmllcyBhbmQgdGhlcmUgaXMgYSBwYXRj
aCBhc3NvY2lhdGVkIHdpdGggb25lIG9mIHRoZW0sIHRoZSBidWlsdCBwcm9kdWN0CisgICAgICAg
IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGFsbCB0aG9zZSByZXBvc2l0b3JpZXMuCisKKyAgICAg
ICAgKiBwdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocDoKKyAgICAgICAg
KEJ1aWxkUmVxdWVzdHNGZXRjaGVyOjpmZXRjaF9jb21taXRzX2Zvcl9zZXRfaWZfbmVlZGVkKTog
SW5jbHVkZSB0aGUgcm9vdCBmaWxlIGlzIHRoZXJlIGlzIG9uZS4KKworICAgICAgICAqIHB1Ymxp
Yy9pbmNsdWRlL2pzb24taGVhZGVyLnBocDoKKyAgICAgICAgKHZhbGlkYXRlX2FyZ3VtZW50cyk6
IEFkZGVkIHRoZSBzdXBwb3J0IGZvciB2YWxpZGF0aW5nIGpzb24gc3RyaW5nLgorICAgICAgICAo
dmVyaWZ5X3NsYXZlKTogUmV0dXJuIHRoZSBzbGF2ZSBJRCBmb3VuZC4KKworICAgICAgICAqIHB1
YmxpYy9pbmNsdWRlL3VwbG9hZGVkLWZpbGUtaGVscGVycy5waHA6CisgICAgICAgICh2YWxpZGF0
ZV91cGxvYWRlZF9maWxlKTogRXh0cmFjdGVkIGZyb20gL3ByaXZpbGVnZWQtYXBpL3VwbG9hZC1m
aWxlIHRvIGJlIHNoYXJlZCB3aXRoIC9hcGkvdXBsb2FkLXJvb3QuCisgICAgICAgIChxdWVyeV90
b3RhbF9maWxlX3NpemUpOiBEaXR0by4KKyAgICAgICAgKGNyZWF0ZV91cGxvYWRlZF9maWxlX2Zy
b21fZm9ybV9kYXRhKTogRGl0dG8uCisgICAgICAgICh1cGxvYWRfZmlsZV9pbl90cmFuc2FjdGlv
bik6IERpdHRvLiBUYWtlcyBhIGxhbWJkYSB0byBkbyB0aGUgZXh0cmEgd29yayBpbnNpZGUgdGhl
IHRyYW5zYWN0aW9uLgorCisgICAgICAgICogcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwbG9hZC1m
aWxlLnBocDoKKyAgICAgICAgKG1haW4pOgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9i
dWlsZC1yZXF1ZXN0LmpzOgorICAgICAgICAoQnVpbGRSZXF1ZXN0LmNvbnN0cnVjdEJ1aWxkUmVx
dWVzdHNGcm9tRGF0YSk6IFJlc29sdmUgdGhlIHJvb3RGSWxlIG9mIGVhY2ggY29tbWl0IHNldCBp
dGVtLgorCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzOgorICAgICAg
ICAoQ29tbWl0U2V0KTogQWRkZWQgX3JlcG9zaXRvcnlUb1Jvb3RNYXAgYW5kIF9hbGxSb290Rmls
ZXMgYXMgaW5zdGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS51
cGRhdGVTaW5nbGV0b24pOiBBZGRlZC4gUHJldmlvdXNseSwgZWFjaCBjb21taXQgc2V0J3Mgc3Rh
dGVzIG5ldmVyIGNoYW5nZWQgYWZ0ZXIKKyAgICAgICAgaXRzIGNyZWF0aW9uLiBBZnRlciB0aGlz
IHBhdGNoLCBlYWNoIGl0ZW0gY2FuIGJlIG5ld2x5IGFzc29jaWF0ZWQgd2l0aCBhIHJvb3Qgc28g
d2UgbXVzdCB1cGRhdGUgaXRzCisgICAgICAgIF9yZXBvc2l0b3J5VG9Sb290TWFwIGFuZCBfYWxs
Um9vdEZpbGVzLiBGb3Igc2ltcGxpY2l0eSwgd2UgdXBkYXRlIGFsbCBzdGF0ZXMuCisgICAgICAg
IChDb21taXRTZXQucHJvdG90eXBlLl91cGRhdGVGcm9tT2JqZWN0KTogRXh0cmFjdGVkIGZyb20g
dGhlIGNvbnN0cnVjdG9yLgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5hbGxSb290Rmls
ZXMpOiBBZGRlZC4gSW5jbHVkZXMgY3VzdG9tIHJvb3RzIGFuZCByb290cyBjcmVhdGVkIGZvciBw
YXRjaGVzLgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5yb290Rm9yUmVwb3NpdG9yeSk6
IEFkZGVkLgorICAgICAgICAoQ29tbWl0U2V0LnByb3RvdHlwZS5lcXVhbHMpOiBGaXhlZCB0aGUg
YnVnIHRoYXQgd2Ugd2VyZSBjb21wYXJpbmcgX3JlcG9zaXRvcnlUb1BhdGNoTWFwIHRvCisgICAg
ICAgIF9yZXBvc2l0b3J5VG9Db21taXRNYXAsIGFuZCBhZGRlZCBhIGNoZWNrIGZvciBfcmVwb3Np
dG9yeVRvUm9vdE1hcC4KKworICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5q
czoKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUudGFzayk6IEFkZGVkLgorICAgICAgICAo
VGVzdEdyb3VwLmNyZWF0ZVdpdGhUYXNrKToKKyAgICAgICAgKFRlc3RHcm91cC5jcmVhdGVXaXRo
Q3VzdG9tQ29uZmlndXJhdGlvbik6CisgICAgICAgIChUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRj
aFRlc3RHcm91cHMpOgorICAgICAgICAoVGVzdEdyb3VwLl9mZXRjaFRlc3RHcm91cHNGb3JUYXNr
KTogRGVsZXRlZC4gTm93IGZldGNoRm9yVGFzayB0YWtlcyBhIGJvb2xlYW4gYXJndW1lbnQ6IGln
bm9yZUNhY2hlLgorICAgICAgICAoVGVzdEdyb3VwLmZpbmRBbGxCeVRhc2spOiBBZGRlZC4KKyAg
ICAgICAgKFRlc3RHcm91cC5mZXRjaEZvclRhc2spOiBSZW5hbWVkIGZyb20gZmV0Y2hCeVRhc2su
CisKKyAgICAgICAgKiBwdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzOgorICAg
ICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2ZldGNoUmVsYXRlZEluZm9Gb3JUYXNr
SWQpOgorCisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5q
czoKKworICAgICAgICAqIHNlcnZlci10ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanM6IEFk
ZGVkLiBBZGRlZCB0ZXN0cyBmb3IgL2FwaS91cGxvYWQtcm9vdC4KKyAgICAgICAgKG1ha2VSZXBv
cnQpOiBBZGRlZC4KKyAgICAgICAgKGFkZFNsYXZlQW5kQ3JlYXRlUm9vdEZpbGUpOiBBZGRlZC4K
KyAgICAgICAgKGNyZWF0ZVRlc3RHcm91cFdpaFBhdGNoKTogQWRkZWQuCisKKyAgICAgICAgKiBz
ZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanM6CisK
KyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5qczoKKyAgICAgICAg
KE1vY2tEYXRhLnNoYXJlZFJlcG9zaXRvcnlJZCk6IEFkZGVkLgorICAgICAgICAoTW9ja0RhdGEu
YWRkTW9ja0RhdGEpOiBBZGRlZCAiU2hhcmVkIiByZXBvc2l0b3J5IGFsb25nIHdpdGggY29tbWl0
cy4KKwogMjAxNy0wNC0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgdGhlIHN1cHBvcnQgZm9yIHNjaGVkdWxpbmcgYSBBL0IgdGVzdGluZyB3aXRoIGEg
cGF0Y2guCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS91
cGxvYWQtcm9vdC5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS91cGxv
YWQtcm9vdC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTczZTk1NjZjZDM4M2FiZGIyZDc2ZmU5ZWRlY2RiZDQy
YjY4M2Y1ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvYXBpL3VwbG9hZC1yb290LnBocApAQCAtMCwwICsxLDg3IEBACis8P3BocAorCityZXF1aXJl
X29uY2UoJy4uL2luY2x1ZGUvanNvbi1oZWFkZXIucGhwJyk7CityZXF1aXJlX29uY2UoJy4uL2lu
Y2x1ZGUvdXBsb2FkZWQtZmlsZS1oZWxwZXJzLnBocCcpOworCitmdW5jdGlvbiBtYWluKCkKK3sK
KyAgICAkaW5wdXRfZmlsZSA9IHZhbGlkYXRlX3VwbG9hZGVkX2ZpbGUoJ3Jvb3RGaWxlJyk7CisK
KyAgICAkZGIgPSBjb25uZWN0KCk7CisgICAgJHNsYXZlX2lkID0gdmVyaWZ5X3NsYXZlKCRkYiwg
JF9QT1NUKTsKKworICAgICRhcmd1bWVudHMgPSB2YWxpZGF0ZV9hcmd1bWVudHMoJF9QT1NULCBh
cnJheSgKKyAgICAgICAgJ2J1aWxkZXJOYW1lJyA9PiAnLy4rLycsCisgICAgICAgICdidWlsZE51
bWJlcicgPT4gJ2ludCcsCisgICAgICAgICdidWlsZFRpbWUnID0+ICcvXlxkezR9LVxkezJ9LVxk
ezJ9VFxkezJ9OlxkezJ9OlxkezJ9XC5cZCpaPyQvJywKKyAgICAgICAgJ2J1aWxkUmVxdWVzdCcg
PT4gJ2ludCcsCisgICAgICAgICdyZXBvc2l0b3J5TGlzdCcgPT4gJ2pzb24nLAorICAgICkpOwor
ICAgICRidWlsZF9yZXF1ZXN0X2lkID0gJGFyZ3VtZW50c1snYnVpbGRSZXF1ZXN0J107CisKKyAg
ICAkcmVxdWVzdF9yb3cgPSAkZGItPnNlbGVjdF9maXJzdF9yb3coJ2J1aWxkX3JlcXVlc3RzJywg
J3JlcXVlc3QnLCBhcnJheSgnaWQnID0+ICRidWlsZF9yZXF1ZXN0X2lkKSk7CisgICAgaWYgKCRy
ZXF1ZXN0X3Jvd1sncmVxdWVzdF90ZXN0J10gfHwgJHJlcXVlc3Rfcm93WydyZXF1ZXN0X29yZGVy
J10gPj0gMCkKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkQnVpbGRSZXF1ZXN0VHlw
ZScsIGFycmF5KCdidWlsZFJlcXVlc3QnID0+ICRidWlsZF9yZXF1ZXN0X2lkKSk7CisKKyAgICAk
dGVzdF9ncm91cCA9ICRkYi0+c2VsZWN0X2ZpcnN0X3JvdygnYW5hbHlzaXNfdGVzdF9ncm91cHMn
LCAndGVzdGdyb3VwJywgYXJyYXkoJ2lkJyA9PiAkcmVxdWVzdF9yb3dbJ3JlcXVlc3RfZ3JvdXAn
XSkpOworICAgIGFzc2VydCgkdGVzdF9ncm91cCk7CisKKyAgICAkYnVpbGRlcl9pZCA9ICRkYi0+
c2VsZWN0X29yX2luc2VydF9yb3coJ2J1aWxkZXJzJywgJ2J1aWxkZXInLCBhcnJheSgnbmFtZScg
PT4gJGFyZ3VtZW50c1snYnVpbGRlck5hbWUnXSkpOworICAgICRidWlsZF9pbmZvID0gYXJyYXko
J2J1aWxkZXInID0+ICRidWlsZGVyX2lkLCAnc2xhdmUnID0+ICRzbGF2ZV9pZCwgJ251bWJlcicg
PT4gJGFyZ3VtZW50c1snYnVpbGROdW1iZXInXSwgJ3RpbWUnID0+ICRhcmd1bWVudHNbJ2J1aWxk
VGltZSddKTsKKworICAgICRjb21taXRfc2V0X2lkID0gJHJlcXVlc3Rfcm93WydyZXF1ZXN0X2Nv
bW1pdF9zZXQnXTsKKyAgICAkY29tbWl0X3NldF9pdGVtc190b191cGRhdGUgPSBjb21wdXRlX2Nv
bW1pdF9zZXRfaXRlbXNfdG9fdXBkYXRlKCRkYiwgJGNvbW1pdF9zZXRfaWQsICRhcmd1bWVudHNb
J3JlcG9zaXRvcnlMaXN0J10pOworCisgICAgJHVwbG9hZGVkX2ZpbGUgPSB1cGxvYWRfZmlsZV9p
bl90cmFuc2FjdGlvbigkZGIsICRpbnB1dF9maWxlLCAkdGVzdF9ncm91cFsndGVzdGdyb3VwX2F1
dGhvciddLAorICAgICAgICBmdW5jdGlvbiAoJGRiLCAkZmlsZV9yb3cpIHVzZSAoJGJ1aWxkX3Jl
cXVlc3RfaWQsICRidWlsZF9pbmZvLCAkY29tbWl0X3NldF9pZCwgJGNvbW1pdF9zZXRfaXRlbXNf
dG9fdXBkYXRlKSB7CisgICAgICAgICAgICAkcm9vdF9maWxlX2lkID0gJGZpbGVfcm93WydmaWxl
X2lkJ107CisgICAgICAgICAgICAvLyBGSVhNRTogSW5zZXJ0IGEgYnVpbGQgcm93IGFuZCBhc3Nv
Y2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuCisgICAgICAgICAgICAkYnVpbGRfaWQgPSAkZGItPmlu
c2VydF9yb3coJ2J1aWxkcycsICdidWlsZCcsICRidWlsZF9pbmZvKTsKKyAgICAgICAgICAgIGlm
ICghJGJ1aWxkX2lkKQorICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgnc3RhdHVzJyA9PiAn
RmFpbGVkVG9DcmVhdGVCdWlsZCcsICdidWlsZCcgPT4gJGJ1aWxkX2luZm8pOworICAgICAgICAg
ICAgaWYgKCEkZGItPnVwZGF0ZV9yb3coJ2J1aWxkX3JlcXVlc3RzJywgJ3JlcXVlc3QnLCBhcnJh
eSgnaWQnID0+ICRidWlsZF9yZXF1ZXN0X2lkKSwgYXJyYXkoJ3N0YXR1cycgPT4gJ2NvbXBsZXRl
ZCcsICdidWlsZCcgPT4gJGJ1aWxkX2lkKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5
KCdzdGF0dXMnID0+ICdGYWlsZWRUb1VwZGF0ZUJ1aWxkUmVxdWVzdCcsICdidWlsZFJlcXVlc3Qn
ID0+ICRidWlsZF9yZXF1ZXN0X2lkKTsKKworICAgICAgICAgICAgZm9yZWFjaCAoJGNvbW1pdF9z
ZXRfaXRlbXNfdG9fdXBkYXRlIGFzICRjb21taXRfaWQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ISRkYi0+dXBkYXRlX3JvdygnY29tbWl0X3NldF9pdGVtcycsICdjb21taXRzZXQnLAorICAgICAg
ICAgICAgICAgICAgICBhcnJheSgnc2V0JyA9PiAkY29tbWl0X3NldF9pZCwgJ2NvbW1pdCcgPT4g
JGNvbW1pdF9pZCksCisgICAgICAgICAgICAgICAgICAgIGFycmF5KCdjb21taXQnID0+ICRjb21t
aXRfaWQsICdyb290X2ZpbGUnID0+ICRyb290X2ZpbGVfaWQpLCAnKicpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYXJyYXkoJ3N0YXR1cycgPT4gJ0ZhaWxlZFRvVXBkYXRlQ29tbWl0U2V0
JywgJ2NvbW1pdFNldCcgPT4gJGNvbW1pdF9zZXRfaWQsICdjb21taXQnID0+ICRjb21taXRfaWQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0pOwor
CisgICAgZXhpdF93aXRoX3N1Y2Nlc3MoYXJyYXkoJ3VwbG9hZGVkRmlsZScgPT4gJHVwbG9hZGVk
X2ZpbGUpKTsKK30KKworZnVuY3Rpb24gY29tcHV0ZV9jb21taXRfc2V0X2l0ZW1zX3RvX3VwZGF0
ZSgkZGIsICRjb21taXRfc2V0X2lkLCAkcmVwb3NpdG9yeV9uYW1lX2xpc3QpCit7CisgICAgaWYg
KCFpc19hcnJheSgkcmVwb3NpdG9yeV9uYW1lX2xpc3QpKQorICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ0ludmFsaWRSZXBvc2l0b3J5TGlzdCcsIGFycmF5KCdyZXBvc2l0b3J5TGlzdCcgPT4gJHJl
cG9zaXRvcnlfbmFtZV9saXN0KSk7CisKKyAgICAkY29tbWl0X3JlcG9zaXRvcnlfcm93c19pbl9z
ZXQgPSAkZGItPnF1ZXJ5X2FuZF9mZXRjaF9hbGwoJ1NFTEVDVCAqIEZST00gcmVwb3NpdG9yaWVz
LCBjb21taXRzLCBjb21taXRfc2V0X2l0ZW1zCisgICAgICAgIFdIRVJFIHJlcG9zaXRvcnlfaWQg
PSBjb21taXRfcmVwb3NpdG9yeSBBTkQgY29tbWl0X2lkID0gY29tbWl0c2V0X2NvbW1pdAorICAg
ICAgICAgICAgQU5EIGNvbW1pdHNldF9zZXQgPSAkMScsIGFycmF5KCRjb21taXRfc2V0X2lkKSk7
CisKKyAgICAkY29tbWl0X2J5X3JlcG9zaXRvcnlfbmFtZSA9IGFycmF5KCk7CisgICAgaWYgKCRj
b21taXRfcmVwb3NpdG9yeV9yb3dzX2luX3NldCkgeworICAgICAgICBmb3JlYWNoICgkY29tbWl0
X3JlcG9zaXRvcnlfcm93c19pbl9zZXQgYXMgJHJvdykKKyAgICAgICAgICAgICRjb21taXRfYnlf
cmVwb3NpdG9yeV9uYW1lWyRyb3dbJ3JlcG9zaXRvcnlfbmFtZSddXSA9ICRyb3dbJ2NvbW1pdHNl
dF9jb21taXQnXTsKKyAgICB9CisKKyAgICAkY29tbWl0X3NldF9pdGVtc190b191cGRhdGUgPSBh
cnJheSgpOworICAgIGZvcmVhY2ggKCRyZXBvc2l0b3J5X25hbWVfbGlzdCBhcyAkcmVwb3NpdG9y
eV9uYW1lKSB7CisgICAgICAgICRjb21taXRfaWQgPSBhcnJheV9nZXQoJGNvbW1pdF9ieV9yZXBv
c2l0b3J5X25hbWUsICRyZXBvc2l0b3J5X25hbWUpOworICAgICAgICBpZiAoISRjb21taXRfaWQp
CisgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBvc2l0b3J5JywgYXJyYXko
J3JlcG9zaXRvcnlOYW1lJyA9PiAkcmVwb3NpdG9yeV9uYW1lLCAnY29tbWl0U2V0JyA9PiAkY29t
bWl0X3NldF9pZCkpOworICAgICAgICBhcnJheV9wdXNoKCRjb21taXRfc2V0X2l0ZW1zX3RvX3Vw
ZGF0ZSwgJGNvbW1pdF9pZCk7CisgICAgfQorICAgIGlmICghJGNvbW1pdF9zZXRfaXRlbXNfdG9f
dXBkYXRlKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRSZXBvc2l0b3J5TGlzdCcs
IGFycmF5KCdyZXBvc2l0b3J5TGlzdCcgPT4gJHJlcG9zaXRvcnlfbGlzdCkpOworCisgICAgcmV0
dXJuICRjb21taXRfc2V0X2l0ZW1zX3RvX3VwZGF0ZTsKK30KKworbWFpbigpOworCis/PgpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJl
cXVlc3RzLWZldGNoZXIucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNs
dWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCmluZGV4IDk3MWNiZmQ4NTc1YTQ0MmRjYzJk
NDQ1MGIxNjI2NGU4NzE3NDY2YmMuLjc2YTk2ZDQwM2JkNTZkNTIzZGVjYzY5OTlkZGNkMzY4NzUx
YWYxMTkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVk
ZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAKQEAgLTExNyw3ICsx
MTcsMTIgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgJHBhdGNo
X2ZpbGVfaWQgPSAkcm93Wydjb21taXRzZXRfcGF0Y2hfZmlsZSddOwogICAgICAgICAgICAgaWYg
KCRwYXRjaF9maWxlX2lkKQogICAgICAgICAgICAgICAgICR0aGlzLT5hZGRfdXBsb2FkZWRfZmls
ZSgkcGF0Y2hfZmlsZV9pZCk7Ci0gICAgICAgICAgICBhcnJheV9wdXNoKCRyZXZpc2lvbl9pdGVt
cywgYXJyYXkoJ2NvbW1pdCcgPT4gJHJvd1snY29tbWl0X2lkJ10sICdwYXRjaCcgPT4gJHBhdGNo
X2ZpbGVfaWQpKTsKKworICAgICAgICAgICAgJHJvb3RfZmlsZV9pZCA9ICRyb3dbJ2NvbW1pdHNl
dF9yb290X2ZpbGUnXTsKKyAgICAgICAgICAgIGlmICgkcm9vdF9maWxlX2lkKQorICAgICAgICAg
ICAgICAgICR0aGlzLT5hZGRfdXBsb2FkZWRfZmlsZSgkcm9vdF9maWxlX2lkKTsKKworICAgICAg
ICAgICAgYXJyYXlfcHVzaCgkcmV2aXNpb25faXRlbXMsIGFycmF5KCdjb21taXQnID0+ICRyb3db
J2NvbW1pdF9pZCddLCAncGF0Y2gnID0+ICRwYXRjaF9maWxlX2lkLCAncm9vdEZpbGUnID0+ICRy
b290X2ZpbGVfaWQpKTsKIAogICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGNvbW1p
dF9pZCwgJHRoaXMtPmNvbW1pdHNfYnlfaWQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2pzb24t
aGVhZGVyLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9qc29u
LWhlYWRlci5waHAKaW5kZXggYzFjOGRjYTAzYzhlZThiNmFiYmExODJmMWIyNDk5MTFmYmJjYjc0
MC4uOTc5NWM2NTE4YzIzZjBjNGZiNzk4NDQ5OWY4NDM1M2U3MWU0NjBjZSAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2pzb24taGVhZGVyLnBocAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvanNvbi1oZWFkZXIu
cGhwCkBAIC03Miw2ICs3MiwxMCBAQCBmdW5jdGlvbiB2YWxpZGF0ZV9hcmd1bWVudHMoJGFycmF5
LCAkbGlzdF9vZl9hcmd1bWVudHMpIHsKICAgICAgICAgfSBlbHNlIGlmICgkcGF0dGVybiA9PSAn
aW50PycpIHsKICAgICAgICAgICAgIHJlcXVpcmVfZm9ybWF0KCRuYW1lLCAkdmFsdWUsICcvXlxk
KiQvJyk7CiAgICAgICAgICAgICAkdmFsdWUgPSAkdmFsdWUgPyBpbnR2YWwoJHZhbHVlKSA6IG51
bGw7CisgICAgICAgIH0gZWxzZSBpZiAoJHBhdHRlcm4gPT0gJ2pzb24nKSB7CisgICAgICAgICAg
ICAkdmFsdWUgPSBqc29uX2RlY29kZSgkdmFsdWUsIHRydWUpOworICAgICAgICAgICAgaWYgKCR2
YWx1ZSA9PT0gTlVMTCkKKyAgICAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWQn
IC4gY2FtZWxfY2FzZV93b3Jkc19zZXBhcmF0ZWRfYnlfdW5kZXJzY29yZSgkbmFtZSkpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlcXVpcmVfZm9ybWF0KCRuYW1lLCAkdmFsdWUsICRw
YXR0ZXJuKTsKICAgICAgICAgJHJlc3VsdFskbmFtZV0gPSAkdmFsdWU7CkBAIC0xNjAsNiArMTY0
LDggQEAgZnVuY3Rpb24gdmVyaWZ5X3NsYXZlKCRkYiwgJHBhcmFtcykgewogICAgICRtYXRjaGVk
X3NsYXZlID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdidWlsZF9zbGF2ZXMnLCAnc2xhdmUnLCAk
c2xhdmVfaW5mbyk7CiAgICAgaWYgKCEkbWF0Y2hlZF9zbGF2ZSkKICAgICAgICAgZXhpdF93aXRo
X2Vycm9yKCdTbGF2ZU5vdEZvdW5kJywgYXJyYXkoJ25hbWUnID0+ICRzbGF2ZV9pbmZvWyduYW1l
J10pKTsKKworICAgIHJldHVybiAkbWF0Y2hlZF9zbGF2ZVsnc2xhdmVfaWQnXTsKIH0KIAogZnVu
Y3Rpb24gZmluZF90cmlnZ2VyYWJsZV9mb3JfdGFzaygkZGIsICR0YXNrX2lkKSB7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvdXBsb2FkZWQtZmls
ZS1oZWxwZXJzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS91
cGxvYWRlZC1maWxlLWhlbHBlcnMucGhwCmluZGV4IDI0ZjRjYTU4MjQzYjU5OTM0ZTM5NzA4OGMw
Y2Y1NGZkNWRmMjAwZTguLjQ3YTdiYWM5MmFjZGNjMjA4OWY3NWRjMzQ5MjFmMjZhOGEyNWQ1ZGIg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS91cGxv
YWRlZC1maWxlLWhlbHBlcnMucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvaW5jbHVkZS91cGxvYWRlZC1maWxlLWhlbHBlcnMucGhwCkBAIC0xLDUgKzEsNyBAQAogPD9w
aHAKIAorZGVmaW5lKCdNRUdBQllURVMnLCAxMDI0ICogMTAyNCk7CisKIGZ1bmN0aW9uIGZvcm1h
dF91cGxvYWRlZF9maWxlKCRmaWxlX3JvdykKIHsKICAgICByZXR1cm4gYXJyYXkoCkBAIC0xNyw0
ICsxOSwxMDIgQEAgZnVuY3Rpb24gdXBsb2FkZWRfZmlsZV9wYXRoX2Zvcl9yb3coJGZpbGVfcm93
KQogICAgIHJldHVybiBjb25maWdfcGF0aCgndXBsb2FkRGlyZWN0b3J5JywgJGZpbGVfcm93Wydm
aWxlX2lkJ10gLiAkZmlsZV9yb3dbJ2ZpbGVfZXh0ZW5zaW9uJ10pOwogfQogCitmdW5jdGlvbiB2
YWxpZGF0ZV91cGxvYWRlZF9maWxlKCRmaWVsZF9uYW1lKQoreworICAgIGlmIChhcnJheV9nZXQo
JF9TRVJWRVIsICdDT05URU5UX0xFTkdUSCcpICYmIGVtcHR5KCRfUE9TVCkgJiYgZW1wdHkoJF9G
SUxFUykpCisgICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmlsZVNpemVMaW1pdEV4Y2VlZGVkJyk7
CisKKyAgICBpZiAoIWlzX2Rpcihjb25maWdfcGF0aCgndXBsb2FkRGlyZWN0b3J5JywgJycpKSkK
KyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdOb3RTdXBwb3J0ZWQnKTsKKworICAgICRpbnB1dF9m
aWxlID0gYXJyYXlfZ2V0KCRfRklMRVMsICRmaWVsZF9uYW1lKTsKKyAgICBpZiAoISRpbnB1dF9m
aWxlKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ05vRmlsZVNwZWNpZmllZCcpOworCisgICAg
aWYgKCRpbnB1dF9maWxlWydlcnJvciddID09IFVQTE9BRF9FUlJfSU5JX1NJWkUgfHwgJGlucHV0
X2ZpbGVbJ2Vycm9yJ10gPT0gVVBMT0FEX0VSUl9GT1JNX1NJWkUpCisgICAgICAgIGV4aXRfd2l0
aF9lcnJvcignRmlsZVNpemVMaW1pdEV4Y2VlZGVkJyk7CisKKyAgICBpZiAoJGlucHV0X2ZpbGVb
J2Vycm9yJ10gIT0gVVBMT0FEX0VSUl9PSykKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGYWls
ZWRUb1VwbG9hZEZpbGUnLCBhcnJheSgnbmFtZScgPT4gJGlucHV0X2ZpbGVbJ25hbWUnXSwgJ2Vy
cm9yJyA9PiAkaW5wdXRfZmlsZVsnZXJyb3InXSkpOworCisgICAgaWYgKGNvbmZpZygndXBsb2Fk
RmlsZUxpbWl0SW5NQicpICogTUVHQUJZVEVTIDwgJGlucHV0X2ZpbGVbJ3NpemUnXSkKKyAgICAg
ICAgZXhpdF93aXRoX2Vycm9yKCdGaWxlU2l6ZUxpbWl0RXhjZWVkZWQnKTsKKworICAgIHJldHVy
biAkaW5wdXRfZmlsZTsKK30KKworZnVuY3Rpb24gcXVlcnlfdG90YWxfZmlsZV9zaXplKCRkYiwg
JHVzZXIpCit7CisgICAgaWYgKCR1c2VyKQorICAgICAgICAkY291bnRfcmVzdWx0ID0gJGRiLT5x
dWVyeV9hbmRfZmV0Y2hfYWxsKCdTRUxFQ1Qgc3VtKGZpbGVfc2l6ZSkgYXMgInN1bSIgRlJPTSB1
cGxvYWRlZF9maWxlcyBXSEVSRSBmaWxlX2RlbGV0ZWRfYXQgSVMgTlVMTCBBTkQgZmlsZV9hdXRo
b3IgPSAkMScsIGFycmF5KCR1c2VyKSk7CisgICAgZWxzZQorICAgICAgICAkY291bnRfcmVzdWx0
ID0gJGRiLT5xdWVyeV9hbmRfZmV0Y2hfYWxsKCdTRUxFQ1Qgc3VtKGZpbGVfc2l6ZSkgYXMgInN1
bSIgRlJPTSB1cGxvYWRlZF9maWxlcyBXSEVSRSBmaWxlX2RlbGV0ZWRfYXQgSVMgTlVMTCBBTkQg
ZmlsZV9hdXRob3IgSVMgTlVMTCcpOworICAgIGlmICghJGNvdW50X3Jlc3VsdCkKKyAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgIHJldHVybiBpbnR2YWwoJGNvdW50X3Jlc3VsdFswXVsic3VtIl0p
OworfQorCitmdW5jdGlvbiBjcmVhdGVfdXBsb2FkZWRfZmlsZV9mcm9tX2Zvcm1fZGF0YSgkaW5w
dXRfZmlsZSkKK3sKKyAgICAkZmlsZV9zaGEyNTYgPSBoYXNoX2ZpbGUoJ3NoYTI1NicsICRpbnB1
dF9maWxlWyd0bXBfbmFtZSddKTsKKyAgICBpZiAoISRmaWxlX3NoYTI1NikKKyAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdGYWlsZWRUb0NvbXB1dGVTSEEyNTYnKTsKKworICAgICRtYXRjaGVzID0g
YXJyYXkoKTsKKyAgICAkZmlsZV9leHRlbnNpb24gPSBudWxsOworICAgIGlmIChwcmVnX21hdGNo
KCcvKFwuW2EtekEtWjAtOV17MSw1fSl7MSwyfSQvJywgJGlucHV0X2ZpbGVbJ25hbWUnXSwgJG1h
dGNoZXMpKSB7CisgICAgICAgICRmaWxlX2V4dGVuc2lvbiA9ICRtYXRjaGVzWzBdOworICAgICAg
ICBhc3NlcnQoc3RybGVuKCRmaWxlX2V4dGVuc2lvbikgPD0gMTYpOworICAgIH0KKworICAgIHJl
dHVybiBhcnJheSgKKyAgICAgICAgJ2F1dGhvcicgPT4gcmVtb3RlX3VzZXJfbmFtZSgpLAorICAg
ICAgICAnZmlsZW5hbWUnID0+ICRpbnB1dF9maWxlWyduYW1lJ10sCisgICAgICAgICdleHRlbnNp
b24nID0+ICRmaWxlX2V4dGVuc2lvbiwKKyAgICAgICAgJ21pbWUnID0+ICRpbnB1dF9maWxlWyd0
eXBlJ10sIC8vIFNhbml0aXplIE1JTUUgdHlwZXMuCisgICAgICAgICdzaXplJyA9PiAkaW5wdXRf
ZmlsZVsnc2l6ZSddLAorICAgICAgICAnc2hhMjU2JyA9PiAkZmlsZV9zaGEyNTYKKyAgICApOwor
fQorCitmdW5jdGlvbiB1cGxvYWRfZmlsZV9pbl90cmFuc2FjdGlvbigkZGIsICRpbnB1dF9maWxl
LCAkcmVtb3RlX3VzZXIsICRhZGRpdGlvbmFsX3dvcmsgPSBOVUxMKQoreworICAgIC8vIEZJWE1F
OiBDbGVhbnVwIG9sZCBmaWxlcy4KKworICAgIGlmIChjb25maWcoJ3VwbG9hZFVzZXJRdW90YUlu
TUInKSAqIE1FR0FCWVRFUyAtIHF1ZXJ5X3RvdGFsX2ZpbGVfc2l6ZSgkZGIsICRyZW1vdGVfdXNl
cikgPCAkaW5wdXRfZmlsZVsnc2l6ZSddKQorICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZpbGVT
aXplUXVvdGFFeGNlZWRlZCcpOworCisgICAgJHVwbG9hZGVkX2ZpbGUgPSBjcmVhdGVfdXBsb2Fk
ZWRfZmlsZV9mcm9tX2Zvcm1fZGF0YSgkaW5wdXRfZmlsZSk7CisKKyAgICAkZGItPmJlZ2luX3Ry
YW5zYWN0aW9uKCk7CisgICAgJGZpbGVfcm93ID0gJGRiLT5zZWxlY3Rfb3JfaW5zZXJ0X3Jvdygn
dXBsb2FkZWRfZmlsZXMnLCAnZmlsZScsCisgICAgICAgIGFycmF5KCdzaGEyNTYnID0+ICR1cGxv
YWRlZF9maWxlWydzaGEyNTYnXSwgJ2RlbGV0ZWRfYXQnID0+IG51bGwpLCAkdXBsb2FkZWRfZmls
ZSwgJyonKTsKKyAgICBpZiAoISRmaWxlX3JvdykKKyAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdG
YWlsZWRUb0luc2VydEZpbGVEYXRhJyk7CisKKyAgICAvLyBBIGNvbmN1cnJlbnQgc2Vzc2lvbiBt
YXkgaGF2ZSBpbnNlcnRlZCBhbm90aGVyIGZpbGUuCisgICAgaWYgKGNvbmZpZygndXBsb2FkVXNl
clF1b3RhSW5NQicpICogTUVHQUJZVEVTIDwgcXVlcnlfdG90YWxfZmlsZV9zaXplKCRkYiwgJHJl
bW90ZV91c2VyKSkgeworICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CisgICAg
ICAgIGV4aXRfd2l0aF9lcnJvcignRmlsZVNpemVRdW90YUV4Y2VlZGVkJyk7CisgICAgfQorCisg
ICAgaWYgKCRhZGRpdGlvbmFsX3dvcmspIHsKKyAgICAgICAgJGVycm9yID0gJGFkZGl0aW9uYWxf
d29yaygkZGIsICRmaWxlX3Jvdyk7CisgICAgICAgIGlmICgkZXJyb3IpIHsKKyAgICAgICAgICAg
ICRkYi0+cm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJv
cigkZXJyb3JbJ3N0YXR1cyddLCAkZXJyb3IpOworICAgICAgICB9CisgICAgfQorCisgICAgJG5l
d19wYXRoID0gdXBsb2FkZWRfZmlsZV9wYXRoX2Zvcl9yb3coJGZpbGVfcm93KTsKKyAgICBpZiAo
IW1vdmVfdXBsb2FkZWRfZmlsZSgkaW5wdXRfZmlsZVsndG1wX25hbWUnXSwgJG5ld19wYXRoKSkg
eworICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CisgICAgICAgIGV4aXRfd2l0
aF9lcnJvcignRmFpbGVkVG9Nb3ZlVXBsb2FkZWRGaWxlJyk7CisgICAgfQorCisgICAgJGRiLT5j
b21taXRfdHJhbnNhY3Rpb24oKTsKKworICAgIHJldHVybiBmb3JtYXRfdXBsb2FkZWRfZmlsZSgk
ZmlsZV9yb3cpOworfQorCiA/PgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGxvYWQtZmlsZS5waHAgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwbG9hZC1maWxlLnBocAppbmRleCBhZTFi
NjA3MDg3YjA3OWZhMzJjZDM0ZDUzYzcwYzA4YmM4MTMyZmMxLi41NTYyZGUyNDY0MDhkNzg5Nzdi
MWEwOWRmZGI2NjdmMmZlNjMwMzk1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwbG9hZC1maWxlLnBocAorKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwbG9hZC1maWxlLnBocApAQCAt
MSwxMDAgKzEsMjEgQEAKIDw/cGhwCiAKLWluaV9zZXQoJ3VwbG9hZF9tYXhfZmlsZXNpemUnLCAn
MTAyNU0nKTsKLWluaV9zZXQoJ3Bvc3RfbWF4X3NpemUnLCAnMTAyNU0nKTsKIHJlcXVpcmVfb25j
ZSgnLi4vaW5jbHVkZS9qc29uLWhlYWRlci5waHAnKTsKIHJlcXVpcmVfb25jZSgnLi4vaW5jbHVk
ZS91cGxvYWRlZC1maWxlLWhlbHBlcnMucGhwJyk7CiAKLWRlZmluZSgnTUVHQUJZVEVTJywgMTAy
NCAqIDEwMjQpOwotCiBmdW5jdGlvbiBtYWluKCkKIHsKLSAgICBpZiAoYXJyYXlfZ2V0KCRfU0VS
VkVSLCAnQ09OVEVOVF9MRU5HVEgnKSAmJiBlbXB0eSgkX1BPU1QpICYmIGVtcHR5KCRfRklMRVMp
KQotICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZpbGVTaXplTGltaXRFeGNlZWRlZCcpOworICAg
ICRpbnB1dF9maWxlID0gdmFsaWRhdGVfdXBsb2FkZWRfZmlsZSgnbmV3RmlsZScpOwogCiAgICAg
aWYgKCF2ZXJpZnlfdG9rZW4oYXJyYXlfZ2V0KCRfUE9TVCwgJ3Rva2VuJykpKQogICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRUb2tlbicpOwogCi0gICAgaWYgKCFpc19kaXIoY29uZmln
X3BhdGgoJ3VwbG9hZERpcmVjdG9yeScsICcnKSkpCi0gICAgICAgIGV4aXRfd2l0aF9lcnJvcign
Tm90U3VwcG9ydGVkJyk7Ci0KLSAgICAkaW5wdXRfZmlsZSA9IGFycmF5X2dldCgkX0ZJTEVTLCAn
bmV3RmlsZScpOwotICAgIGlmICghJGlucHV0X2ZpbGUpCi0gICAgICAgIGV4aXRfd2l0aF9lcnJv
cignTm9GaWxlU3BlY2lmaWVkJyk7Ci0KLSAgICBpZiAoJGlucHV0X2ZpbGVbJ2Vycm9yJ10gPT0g
VVBMT0FEX0VSUl9JTklfU0laRSB8fCAkaW5wdXRfZmlsZVsnZXJyb3InXSA9PSBVUExPQURfRVJS
X0ZPUk1fU0laRSkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGaWxlU2l6ZUxpbWl0RXhjZWVk
ZWQnKTsKLQotICAgIGlmICgkaW5wdXRfZmlsZVsnZXJyb3InXSAhPSBVUExPQURfRVJSX09LKQot
ICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvVXBsb2FkRmlsZScsIGFycmF5KCduYW1l
JyA9PiAkaW5wdXRfZmlsZVsnbmFtZSddLCAnZXJyb3InID0+ICRpbnB1dF9maWxlWydlcnJvcidd
KSk7Ci0KLSAgICBpZiAoY29uZmlnKCd1cGxvYWRGaWxlTGltaXRJbk1CJykgKiBNRUdBQllURVMg
PCAkaW5wdXRfZmlsZVsnc2l6ZSddKQotICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZpbGVTaXpl
TGltaXRFeGNlZWRlZCcpOwotCi0gICAgJHVwbG9hZGVkX2ZpbGUgPSBjcmVhdGVfdXBsb2FkZWRf
ZmlsZV9mcm9tX2Zvcm1fZGF0YSgkaW5wdXRfZmlsZSk7Ci0KICAgICAkY3VycmVudF91c2VyID0g
cmVtb3RlX3VzZXJfbmFtZSgpOwogICAgICRkYiA9IGNvbm5lY3QoKTsKIAotICAgIC8vIEZJWE1F
OiBDbGVhbnVwIG9sZCBmaWxlcy4KLQotICAgIGlmIChjb25maWcoJ3VwbG9hZFVzZXJRdW90YUlu
TUInKSAqIE1FR0FCWVRFUyAtIHF1ZXJ5X3RvdGFsX2ZpbGVfc2l6ZSgkZGIsICRjdXJyZW50X3Vz
ZXIpIDwgJGlucHV0X2ZpbGVbJ3NpemUnXSkKLSAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdGaWxl
U2l6ZVF1b3RhRXhjZWVkZWQnKTsKLQotICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rpb24oKTsKLSAg
ICAkZmlsZV9yb3cgPSAkZGItPnNlbGVjdF9vcl9pbnNlcnRfcm93KCd1cGxvYWRlZF9maWxlcycs
ICdmaWxlJywKLSAgICAgICAgYXJyYXkoJ3NoYTI1NicgPT4gJHVwbG9hZGVkX2ZpbGVbJ3NoYTI1
NiddLCAnZGVsZXRlZF9hdCcgPT4gbnVsbCksICR1cGxvYWRlZF9maWxlLCAnKicpOwotICAgIGlm
ICghJGZpbGVfcm93KQotICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ZhaWxlZFRvSW5zZXJ0Rmls
ZURhdGEnKTsKLQotICAgIC8vIEEgY29uY3VycmVudCBzZXNzaW9uIG1heSBoYXZlIGluc2VydGVk
IGFub3RoZXIgZmlsZS4KLSAgICBpZiAoY29uZmlnKCd1cGxvYWRVc2VyUXVvdGFJbk1CJykgKiBN
RUdBQllURVMgPCBxdWVyeV90b3RhbF9maWxlX3NpemUoJGRiLCAkY3VycmVudF91c2VyKSkgewot
ICAgICAgICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgIGV4aXRfd2l0aF9l
cnJvcignRmlsZVNpemVRdW90YUV4Y2VlZGVkJyk7Ci0gICAgfQotCi0gICAgJG5ld19wYXRoID0g
dXBsb2FkZWRfZmlsZV9wYXRoX2Zvcl9yb3coJGZpbGVfcm93KTsKLSAgICBpZiAoIW1vdmVfdXBs
b2FkZWRfZmlsZSgkaW5wdXRfZmlsZVsndG1wX25hbWUnXSwgJG5ld19wYXRoKSkgewotICAgICAg
ICAkZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgIGV4aXRfd2l0aF9lcnJvcign
RmFpbGVkVG9Nb3ZlVXBsb2FkZWRGaWxlJyk7Ci0gICAgfQotICAgICRkYi0+Y29tbWl0X3RyYW5z
YWN0aW9uKCk7Ci0KLSAgICBleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgndXBsb2FkZWRGaWxlJyA9
PiBmb3JtYXRfdXBsb2FkZWRfZmlsZSgkZmlsZV9yb3cpKSk7Ci19Ci0KLWZ1bmN0aW9uIHF1ZXJ5
X3RvdGFsX2ZpbGVfc2l6ZSgkZGIsICR1c2VyKQotewotICAgIGlmICgkdXNlcikKLSAgICAgICAg
JGNvdW50X3Jlc3VsdCA9ICRkYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUIHN1bShmaWxl
X3NpemUpIGFzICJzdW0iIEZST00gdXBsb2FkZWRfZmlsZXMgV0hFUkUgZmlsZV9kZWxldGVkX2F0
IElTIE5VTEwgQU5EIGZpbGVfYXV0aG9yID0gJDEnLCBhcnJheSgkdXNlcikpOwotICAgIGVsc2UK
LSAgICAgICAgJGNvdW50X3Jlc3VsdCA9ICRkYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNU
IHN1bShmaWxlX3NpemUpIGFzICJzdW0iIEZST00gdXBsb2FkZWRfZmlsZXMgV0hFUkUgZmlsZV9k
ZWxldGVkX2F0IElTIE5VTEwgQU5EIGZpbGVfYXV0aG9yIElTIE5VTEwnKTsKLSAgICBpZiAoISRj
b3VudF9yZXN1bHQpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICByZXR1cm4gaW50dmFsKCRj
b3VudF9yZXN1bHRbMF1bInN1bSJdKTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlX3VwbG9hZGVkX2Zp
bGVfZnJvbV9mb3JtX2RhdGEoJGlucHV0X2ZpbGUpCi17Ci0gICAgJGZpbGVfc2hhMjU2ID0gaGFz
aF9maWxlKCdzaGEyNTYnLCAkaW5wdXRfZmlsZVsndG1wX25hbWUnXSk7Ci0gICAgaWYgKCEkZmls
ZV9zaGEyNTYpCi0gICAgICAgIGV4aXRfd2l0aF9lcnJvcignRmFpbGVkVG9Db21wdXRlU0hBMjU2
Jyk7Ci0KLSAgICAkbWF0Y2hlcyA9IGFycmF5KCk7Ci0gICAgJGZpbGVfZXh0ZW5zaW9uID0gbnVs
bDsKLSAgICBpZiAocHJlZ19tYXRjaCgnLyhcLlthLXpBLVowLTldezEsNX0pezEsMn0kLycsICRp
bnB1dF9maWxlWyduYW1lJ10sICRtYXRjaGVzKSkgewotICAgICAgICAkZmlsZV9leHRlbnNpb24g
PSAkbWF0Y2hlc1swXTsKLSAgICAgICAgYXNzZXJ0KHN0cmxlbigkZmlsZV9leHRlbnNpb24pIDw9
IDE2KTsKLSAgICB9CisgICAgJHVwbG9hZGVkX2ZpbGUgPSB1cGxvYWRfZmlsZV9pbl90cmFuc2Fj
dGlvbigkZGIsICRpbnB1dF9maWxlLCAkY3VycmVudF91c2VyKTsKIAotICAgIHJldHVybiBhcnJh
eSgKLSAgICAgICAgJ2F1dGhvcicgPT4gcmVtb3RlX3VzZXJfbmFtZSgpLAotICAgICAgICAnZmls
ZW5hbWUnID0+ICRpbnB1dF9maWxlWyduYW1lJ10sCi0gICAgICAgICdleHRlbnNpb24nID0+ICRm
aWxlX2V4dGVuc2lvbiwKLSAgICAgICAgJ21pbWUnID0+ICRpbnB1dF9maWxlWyd0eXBlJ10sIC8v
IFNhbml0aXplIE1JTUUgdHlwZXMuCi0gICAgICAgICdzaXplJyA9PiAkaW5wdXRfZmlsZVsnc2l6
ZSddLAotICAgICAgICAnc2hhMjU2JyA9PiAkZmlsZV9zaGEyNTYKLSAgICApOworICAgIGV4aXRf
d2l0aF9zdWNjZXNzKGFycmF5KCd1cGxvYWRlZEZpbGUnID0+ICR1cGxvYWRlZF9maWxlKSk7CiB9
CiAKIG1haW4oKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCmluZGV4IDNjN2M5Y2FiN2ZjN2JlMTk2OTY2
Zjk4YTMzOTM2YzNmNmJmZGM4YzYuLjk3ZGFhYzA2Y2Q4OThkMTU2ZWJiODk4MWQ0NTY5ZjAyNWU1
NjU5YTcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9k
ZWxzL2J1aWxkLXJlcXVlc3QuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcwpAQCAtMTM1LDYgKzEzNSw3IEBAIGNsYXNzIEJ1
aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgICAgICBmb3IgKGNv
bnN0IGl0ZW0gb2YgcmF3RGF0YS5yZXZpc2lvbkl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgaXRl
bS5jb21taXQgPSBDb21taXRMb2cuZmluZEJ5SWQoaXRlbS5jb21taXQpOwogICAgICAgICAgICAg
ICAgIGl0ZW0ucGF0Y2ggPSBpdGVtLnBhdGNoID8gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGl0ZW0u
cGF0Y2gpIDogbnVsbDsKKyAgICAgICAgICAgICAgICBpdGVtLnJvb3RGaWxlID0gaXRlbS5yb290
RmlsZSA/IFVwbG9hZGVkRmlsZS5maW5kQnlJZChpdGVtLnJvb3RGaWxlKSA6IG51bGw7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByYXdEYXRhLmN1c3RvbVJvb3RzID0gcmF3RGF0YS5jdXN0
b21Sb290cy5tYXAoKGZpbGVJZCkgPT4gVXBsb2FkZWRGaWxlLmZpbmRCeUlkKGZpbGVJZCkpOwog
ICAgICAgICAgICAgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24ocmF3RGF0YS5pZCwg
cmF3RGF0YSk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L21vZGVscy9jb21taXQtc2V0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92
My9tb2RlbHMvY29tbWl0LXNldC5qcwppbmRleCAyY2Q1ODMyYjNiZmFkYWQ3OTAyNzE5N2ZhMjg0
ZDdkMjc2NThmZDVkLi5hMTI1ZjEwZjE5ODdiMTAxYWE4ZmY5OGY5M2MyNTdhOWIyYzViMGI3IDEw
MDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21t
aXQtc2V0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxz
L2NvbW1pdC1zZXQuanMKQEAgLTgsMjYgKzgsNDkgQEAgY2xhc3MgQ29tbWl0U2V0IGV4dGVuZHMg
RGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yaWVzID0gW107CiAgICAg
ICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMu
X3JlcG9zaXRvcnlUb1BhdGNoTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fcmVwb3NpdG9y
eVRvUm9vdE1hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2xhdGVzdENvbW1pdFRpbWUgPSBu
dWxsOwogICAgICAgICB0aGlzLl9jdXN0b21Sb290cyA9IFtdOworICAgICAgICB0aGlzLl9hbGxS
b290RmlsZXMgPSBbXTsKIAogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVy
bjsKIAorICAgICAgICB0aGlzLl91cGRhdGVGcm9tT2JqZWN0KG9iamVjdCk7CisgICAgfQorCisg
ICAgdXBkYXRlU2luZ2xldG9uKG9iamVjdCkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlcG9zaXRv
cnlUb0NvbW1pdE1hcC5jbGVhcigpOworICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9QYXRjaE1h
cC5jbGVhcigpOworICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmNsZWFyKCk7Cisg
ICAgICAgIHRoaXMuX3JlcG9zaXRvcmllcyA9IFtdOworICAgICAgICB0aGlzLl91cGRhdGVGcm9t
T2JqZWN0KG9iamVjdCk7CisgICAgfQorCisgICAgX3VwZGF0ZUZyb21PYmplY3Qob2JqZWN0KQor
ICAgIHsKKyAgICAgICAgY29uc3Qgcm9vdEZpbGVzID0gbmV3IFNldDsKICAgICAgICAgZm9yIChj
b25zdCBpdGVtIG9mIG9iamVjdC5yZXZpc2lvbkl0ZW1zKSB7CiAgICAgICAgICAgICBjb25zdCBj
b21taXQgPSBpdGVtLmNvbW1pdDsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdCBp
bnN0YW5jZW9mIENvbW1pdExvZyk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghaXRlbS5w
YXRjaCB8fCBpdGVtLnBhdGNoIGluc3RhbmNlb2YgVXBsb2FkZWRGaWxlKTsKKyAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCFpdGVtLnJvb3RGaWxlIHx8IGl0ZW0ucm9vdEZpbGUgaW5zdGFuY2Vv
ZiBVcGxvYWRlZEZpbGUpOwogICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IGNvbW1pdC5y
ZXBvc2l0b3J5KCk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXAuc2V0
KHJlcG9zaXRvcnksIGNvbW1pdCk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9QYXRj
aE1hcC5zZXQocmVwb3NpdG9yeSwgaXRlbS5wYXRjaCk7CisgICAgICAgICAgICB0aGlzLl9yZXBv
c2l0b3J5VG9Sb290TWFwLnNldChyZXBvc2l0b3J5LCBpdGVtLnJvb3RGaWxlKTsKKyAgICAgICAg
ICAgIGlmIChpdGVtLnJvb3RGaWxlKQorICAgICAgICAgICAgICAgIHJvb3RGaWxlcy5hZGQoaXRl
bS5yb290RmlsZSk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMucHVzaChjb21taXQu
cmVwb3NpdG9yeSgpKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9jdXN0b21Sb290cyA9IG9i
amVjdC5jdXN0b21Sb290czsKKyAgICAgICAgdGhpcy5fYWxsUm9vdEZpbGVzID0gQXJyYXkuZnJv
bShyb290RmlsZXMpLmNvbmNhdChvYmplY3QuY3VzdG9tUm9vdHMpOwogICAgIH0KIAogICAgIHJl
cG9zaXRvcmllcygpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcmllczsgfQogICAgIGN1c3RvbVJv
b3RzKCkgeyByZXR1cm4gdGhpcy5fY3VzdG9tUm9vdHM7IH0KKyAgICBhbGxSb290RmlsZXMoKSB7
IHJldHVybiB0aGlzLl9hbGxSb290RmlsZXM7IH0KICAgICBjb21taXRGb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcC5nZXQocmVwb3Np
dG9yeSk7IH0KIAogICAgIHJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KQpAQCAtMzcs
NiArNjAsNyBAQCBjbGFzcyBDb21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAg
IH0KIAogICAgIHBhdGNoRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9y
ZXBvc2l0b3J5VG9QYXRjaE1hcC5nZXQocmVwb3NpdG9yeSk7IH0KKyAgICByb290Rm9yUmVwb3Np
dG9yeShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmdldChy
ZXBvc2l0b3J5KTsgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBhIERhdGUg
b2JqZWN0LgogICAgIGxhdGVzdENvbW1pdFRpbWUoKQpAQCAtNTcsNyArODEsOSBAQCBjbGFzcyBD
b21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgICAgICBmb3IgKGNvbnN0IFty
ZXBvc2l0b3J5LCBjb21taXRdIG9mIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCkgewogICAg
ICAgICAgICAgaWYgKGNvbW1pdCAhPSBvdGhlci5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwLmdldChy
ZXBvc2l0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBp
ZiAodGhpcy5fcmVwb3NpdG9yeVRvUGF0Y2hNYXAuZ2V0KHJlcG9zaXRvcnkpICE9IG90aGVyLl9y
ZXBvc2l0b3J5VG9Db21taXRNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgaWYgKHRo
aXMuX3JlcG9zaXRvcnlUb1BhdGNoTWFwLmdldChyZXBvc2l0b3J5KSAhPSBvdGhlci5fcmVwb3Np
dG9yeVRvUGF0Y2hNYXAuZ2V0KHJlcG9zaXRvcnkpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3J5VG9Sb290TWFwLmdldChyZXBv
c2l0b3J5KSAhPSBvdGhlci5fcmVwb3NpdG9yeVRvUm9vdE1hcC5nZXQocmVwb3NpdG9yeSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBD
b21taXRTZXQuYXJlQ3VzdG9tUm9vdHNFcXVhbCh0aGlzLl9jdXN0b21Sb290cywgb3RoZXIuX2N1
c3RvbVJvb3RzKTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCmluZGV4IGM2MjI2MTlhYjQyZmJhNzdlYmQ4MzdhNWE3
YWI2M2NmOWEyYTZiY2QuLjc0NTJhODVjZmE0MWIyMzUzYzBjNDgwNDVmZGNjNDUxODc2NjBjMTMg
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rl
c3QtZ3JvdXAuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvdGVzdC1ncm91cC5qcwpAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5k
cyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhpcy5faXNIaWRkZW4gPSBvYmplY3QuaGlkZGVu
OwogICAgIH0KIAorICAgIHRhc2soKSB7IHJldHVybiBBbmFseXNpc1Rhc2suZmluZEJ5SWQodGhp
cy5fdGFza0lkKTsgfQogICAgIGNyZWF0ZWRBdCgpIHsgcmV0dXJuIHRoaXMuX2NyZWF0ZWRBdDsg
fQogICAgIGlzSGlkZGVuKCkgeyByZXR1cm4gdGhpcy5faXNIaWRkZW47IH0KICAgICBidWlsZFJl
cXVlc3RzKCkgeyByZXR1cm4gdGhpcy5fYnVpbGRSZXF1ZXN0czsgfQpAQCAtMTk5LDcgKzIwMCw3
IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJhbXMp
LnRoZW4oKGRhdGEpID0+IHsKICAgICAgICAgICAgIHJldHVybiBBbmFseXNpc1Rhc2suZmV0Y2hC
eUlkKGRhdGFbJ3Rhc2tJZCddKTsKICAgICAgICAgfSkudGhlbigodGFzaykgPT4gewotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoVGVzdEdyb3Vwc0ZvclRhc2sodGFzay5pZCgpKS50aGVu
KCgpID0+IHRhc2spOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hGb3JUYXNrKHRhc2su
aWQoKSkudGhlbigoKSA9PiB0YXNrKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0yMDksNyAr
MjEwLDcgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAg
IGNvbnN0IHJldmlzaW9uU2V0cyA9IHRoaXMuX3JldmlzaW9uU2V0c0Zyb21Db21taXRTZXRzKGNv
bW1pdFNldHMpOwogICAgICAgICBjb25zdCBwYXJhbXMgPSB7dGFzazogdGFzay5pZCgpLCBuYW1l
OiBncm91cE5hbWUsIHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgpLCB0ZXN0OiB0ZXN0LmlkKCksIHJl
cGV0aXRpb25Db3VudCwgcmV2aXNpb25TZXRzfTsKICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywgcGFyYW1zKS50aGVuKChkYXRhKSA9
PiB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hUZXN0R3JvdXBzRm9yVGFzayh0YXNr
LmlkKCkpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSwg
dHJ1ZSk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMjIyLDcgKzIyMyw3IEBAIGNsYXNzIFRl
c3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICAgICAgbmFtZTogbmFtZSwK
ICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogcmVwZXRpdGlvbkNvdW50LAogICAgICAgICAg
ICAgcmV2aXNpb25TZXRzOiByZXZpc2lvblNldHMsCi0gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+
IHRoaXMuX2ZldGNoVGVzdEdyb3Vwc0ZvclRhc2sodGFzay5pZCgpKSk7CisgICAgICAgIH0pLnRo
ZW4oKGRhdGEpID0+IHRoaXMuZmV0Y2hGb3JUYXNrKHRhc2suaWQoKSwgdHJ1ZSkpOwogICAgIH0K
IAogICAgIHN0YXRpYyBfcmV2aXNpb25TZXRzRnJvbUNvbW1pdFNldHMoY29tbWl0U2V0cykKQEAg
LTI0NCwxNCArMjQ1LDE0IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3Qg
ewogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2ZldGNoVGVzdEdyb3Vwc0ZvclRh
c2sodGFza0lkKQorICAgIHN0YXRpYyBmaW5kQWxsQnlUYXNrKHRhc2tJZCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcvYXBpL3Rlc3QtZ3JvdXBzJywge3Rhc2s6IHRh
c2tJZH0sIHRydWUpLnRoZW4oKGRhdGEpID0+IHRoaXMuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVk
VGVzdEdyb3VwcyhkYXRhKSk7CisgICAgICAgIHJldHVybiBUZXN0R3JvdXAuYWxsKCkuZmlsdGVy
KCh0ZXN0R3JvdXApID0+IHRlc3RHcm91cC5fdGFza0lkID09IHRhc2tJZCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIGZldGNoQnlUYXNrKHRhc2tJZCkKKyAgICBzdGF0aWMgZmV0Y2hGb3JUYXNrKHRh
c2tJZCwgaWdub3JlQ2FjaGUgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmNh
Y2hlZEZldGNoKCcvYXBpL3Rlc3QtZ3JvdXBzJywge3Rhc2s6IHRhc2tJZH0pLnRoZW4odGhpcy5f
Y3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzLmJpbmQodGhpcykpOworICAgICAgICBy
ZXR1cm4gdGhpcy5jYWNoZWRGZXRjaCgnL2FwaS90ZXN0LWdyb3VwcycsIHt0YXNrOiB0YXNrSWR9
LCBpZ25vcmVDYWNoZSkudGhlbih0aGlzLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91
cHMuYmluZCh0aGlzKSk7CiAgICAgfQogCiAgICAgc3RhdGljIF9jcmVhdGVNb2RlbHNGcm9tRmV0
Y2hlZFRlc3RHcm91cHMoZGF0YSkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5kZXggZWU3
ZmM4ZTg3Y2UzMzQxNGI5Y2QwYTA0MWNlY2M4ZmFlYWUzNDdhMy4uODEyOWIyOGYzOGY0OTNjZjQz
NjQzYThlMzIyZThkOWQ4MGU2MTdkOSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKQEAg
LTQ1NSw3ICs0NTUsNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhI
ZWFkaW5nIHsKIAogICAgIF9mZXRjaFJlbGF0ZWRJbmZvRm9yVGFza0lkKHRhc2tJZCkKICAgICB7
Ci0gICAgICAgIFRlc3RHcm91cC5mZXRjaEJ5VGFzayh0YXNrSWQpLnRoZW4odGhpcy5fZGlkRmV0
Y2hUZXN0R3JvdXBzLmJpbmQodGhpcykpOworICAgICAgICBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHRhc2tJZCkudGhlbih0aGlzLl9kaWRGZXRjaFRlc3RHcm91cHMuYmluZCh0aGlzKSk7CiAgICAg
ICAgIEFuYWx5c2lzUmVzdWx0cy5mZXRjaCh0YXNrSWQpLnRoZW4odGhpcy5fZGlkRmV0Y2hBbmFs
eXNpc1Jlc3VsdHMuYmluZCh0aGlzKSk7CiAgICAgICAgIEFuYWx5c2lzVGFzay5mZXRjaFJlbGF0
ZWRUYXNrcyh0YXNrSWQpLnRoZW4oKHJlbGF0ZWRUYXNrcykgPT4gewogICAgICAgICAgICAgdGhp
cy5fcmVsYXRlZFRhc2tzID0gcmVsYXRlZFRhc2tzOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10
ZXN0cy5qcwppbmRleCBhMGNiY2UzYTZlMWVlYzM5ZDllM2E1Y2ZhZWI0OWQyMmNiNzg1YWFhLi5m
ZmRhZTg0YmJlMTY0ZjJiODA5YTA2MTc3MDcxMjIzZjIzMWUwMzZkIDEwMDY0NAotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0
cy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL2FwaS1idWls
ZC1yZXF1ZXN0cy10ZXN0cy5qcwpAQCAtMzUsOSArMzUsMTEgQEAgZGVzY3JpYmUoJy9hcGkvYnVp
bGQtcmVxdWVzdHMnLCBmdW5jdGlvbiAoKSB7CiAKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b250ZW50Wydjb21taXRTZXRzJ10ubGVuZ3RoLCAyKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChjb250ZW50Wydjb21taXRTZXRzJ11bMF0uaWQsIDQwMSk7Ci0gICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5yZXZpc2lvbkl0ZW1zLCBbe2NvbW1p
dDogJzg3ODMyJywgcGF0Y2g6IG51bGx9LCB7Y29tbWl0OiAnOTMxMTYnLCBwYXRjaDogbnVsbH1d
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBd
LnJldmlzaW9uSXRlbXMsCisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIHBhdGNo
OiBudWxsLCByb290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNicsIHBhdGNoOiBudWxsLCBy
b290RmlsZTogbnVsbH1dKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21t
aXRTZXRzJ11bMV0uaWQsIDQwMik7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRl
bnRbJ2NvbW1pdFNldHMnXVsxXS5yZXZpc2lvbkl0ZW1zLCBbe2NvbW1pdDogJzg3ODMyJywgcGF0
Y2g6IG51bGx9LCB7Y29tbWl0OiAnOTYzMzYnLCBwYXRjaDogbnVsbH1dKTsKKyAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLnJldmlzaW9uSXRlbXMs
CisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCByb290Rmls
ZTogbnVsbH0sIHtjb21taXQ6ICc5NjMzNicsIHBhdGNoOiBudWxsLCByb290RmlsZTogbnVsbH1d
KTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXS5sZW5ndGgs
IDMpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5pZCwg
ODc4MzIpOwpAQCAtOTAsMTAgKzkyLDEwIEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3Rz
JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1p
dFNldHMnXS5sZW5ndGgsIDIpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2Nv
bW1pdFNldHMnXVswXS5pZCwgNDAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29u
dGVudFsnY29tbWl0U2V0cyddWzBdLnJldmlzaW9uSXRlbXMsCi0gICAgICAgICAgICAgICAgW3tj
b21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsfSwge2NvbW1pdDogJzkzMTE2JywgcGF0Y2g6IG51
bGx9XSk7CisgICAgICAgICAgICAgICAgW3tjb21taXQ6ICc4NzgzMicsIHBhdGNoOiBudWxsLCBy
b290RmlsZTogbnVsbH0sIHtjb21taXQ6ICc5MzExNicsIHBhdGNoOiBudWxsLCByb290RmlsZTog
bnVsbH1dKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11b
MV0uaWQsIDQwMik7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1p
dFNldHMnXVsxXS5yZXZpc2lvbkl0ZW1zLAotICAgICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4
MzInLCBwYXRjaDogbnVsbH0sIHtjb21taXQ6ICc5NjMzNicsIHBhdGNoOiBudWxsfV0pOworICAg
ICAgICAgICAgICAgIFt7Y29tbWl0OiAnODc4MzInLCBwYXRjaDogbnVsbCwgcm9vdEZpbGU6IG51
bGx9LCB7Y29tbWl0OiAnOTYzMzYnLCBwYXRjaDogbnVsbCwgcm9vdEZpbGU6IG51bGx9XSk7CiAK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ10ubGVuZ3RoLCAzKTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMF0uaWQsIDg3ODMy
KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBp
LXVwbG9hZC1yb290LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy9hcGktdXBsb2FkLXJvb3QtdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA5NmFmY2U1YWY0ZmVm
YmIyMWRkMWU5MmFiZGVkYWI4N2FiMWMxMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLXVwbG9hZC1yb290LXRlc3RzLmpzCkBAIC0w
LDAgKzEsNDk1IEBACisndXNlIHN0cmljdCc7CisKK2NvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fz
c2VydCcpOworCityZXF1aXJlKCcuLi90b29scy9qcy92My1tb2RlbHMuanMnKTsKKworY29uc3Qg
TW9ja0RhdGEgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLWRhdGEuanMnKTsKK2NvbnN0IFRl
c3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcycpOworY29uc3Qg
VGVtcG9yYXJ5RmlsZSA9IHJlcXVpcmUoJy4vcmVzb3VyY2VzL3RlbXBvcmFyeS1maWxlLmpzJyku
VGVtcG9yYXJ5RmlsZTsKK2NvbnN0IGFkZFNsYXZlRm9yUmVwb3J0ID0gcmVxdWlyZSgnLi9yZXNv
dXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5hZGRTbGF2ZUZvclJlcG9ydDsKK2NvbnN0IHBy
ZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMu
anMnKS5wcmVwYXJlU2VydmVyVGVzdDsKKworZnVuY3Rpb24gbWFrZVJlcG9ydChyb290RmlsZSwg
YnVpbGRSZXF1ZXN0SWQgPSAxKQoreworICAgIHJldHVybiB7CisgICAgICAgIHNsYXZlTmFtZTog
J3NvbWVTbGF2ZScsCisgICAgICAgIHNsYXZlUGFzc3dvcmQ6ICdzb21lUGFzc3dvcmQnLAorICAg
ICAgICBidWlsZGVyTmFtZTogJ3NvbWVCdWlsZGVyJywKKyAgICAgICAgYnVpbGROdW1iZXI6IDEy
MywKKyAgICAgICAgYnVpbGRUaW1lOiAnMjAxNy0wNS0xMFQwMjo1NDowOC42NjYnLAorICAgICAg
ICBidWlsZFJlcXVlc3Q6IGJ1aWxkUmVxdWVzdElkLAorICAgICAgICByb290RmlsZTogcm9vdEZp
bGUsCisgICAgICAgIHJlcG9zaXRvcnlMaXN0OiAnWyJXZWJLaXQiXScsCisgICAgfTsKK30KKwor
ZnVuY3Rpb24gYWRkU2xhdmVBbmRDcmVhdGVSb290RmlsZShzbGF2ZUluZm8gPSBtYWtlUmVwb3J0
KCkpCit7CisgICAgcmV0dXJuIGFkZFNsYXZlRm9yUmVwb3J0KHNsYXZlSW5mbykudGhlbigoKSA9
PiB7CisgICAgICAgIHJldHVybiBUZW1wb3JhcnlGaWxlLm1ha2VUZW1wb3JhcnlGaWxlKCdzb21l
LmRhdCcsICdzb21lIGNvbnRlbnQnKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gY3JlYXRlVGVz
dEdyb3VwV2loUGF0Y2goKQoreworICAgIGNvbnN0IHRyaWdnZXJhYmxlQ29uZmlndXJhdGlvbiA9
IHsKKyAgICAgICAgJ3NsYXZlTmFtZSc6ICdzeW5jLXNsYXZlJywKKyAgICAgICAgJ3NsYXZlUGFz
c3dvcmQnOiAncGFzc3dvcmQnLAorICAgICAgICAndHJpZ2dlcmFibGUnOiAnYnVpbGQtd2Via2l0
JywKKyAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzogWworICAgICAgICAgICAge3Rlc3Q6IE1vY2tE
YXRhLnNvbWVUZXN0SWQoKSwgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCl9LAor
ICAgICAgICBdLAorICAgICAgICAncmVwb3NpdG9yeUdyb3Vwcyc6IFsKKyAgICAgICAgICAgIHtu
YW1lOiAnd2Via2l0JywgcmVwb3NpdG9yaWVzOiBbCisgICAgICAgICAgICAgICAge3JlcG9zaXRv
cnk6IE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6IHRydWV9LAor
ICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS5zaGFyZWRSZXBvc2l0b3J5SWQo
KX0sCisgICAgICAgICAgICBdfQorICAgICAgICBdCisgICAgfTsKKworICAgIHJldHVybiBNb2Nr
RGF0YS5hZGRNb2NrRGF0YShUZXN0U2VydmVyLmRhdGFiYXNlKCkpLnRoZW4oKCkgPT4geworICAg
ICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1RlbXBvcmFyeUZpbGUubWFrZVRlbXBvcmFyeUZpbGUo
J3BhdGNoLmRhdCcsICdwYXRjaCBmaWxlJyksIE1hbmlmZXN0LmZldGNoKCldKTsKKyAgICB9KS50
aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAgY29uc3QgcGF0Y2hGaWxlID0gcmVzdWx0WzBdOwor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1VwbG9hZGVkRmlsZS51cGxvYWRGaWxlKHBhdGNo
RmlsZSksIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEpTT04oJy9hcGkvdXBkYXRlLXRyaWdn
ZXJhYmxlLycsIHRyaWdnZXJhYmxlQ29uZmlndXJhdGlvbildKTsKKyAgICB9KS50aGVuKChyZXN1
bHQpID0+IHsKKyAgICAgICAgY29uc3QgcGF0Y2hGaWxlID0gcmVzdWx0WzBdOworICAgICAgICBj
b25zdCBzb21lVGVzdCA9IFRlc3QuZmluZEJ5SWQoTW9ja0RhdGEuc29tZVRlc3RJZCgpKTsKKyAg
ICAgICAgY29uc3Qgd2Via2l0ID0gUmVwb3NpdG9yeS5maW5kQnlJZChNb2NrRGF0YS53ZWJraXRS
ZXBvc2l0b3J5SWQoKSk7CisgICAgICAgIGNvbnN0IHNoYXJlZCA9IFJlcG9zaXRvcnkuZmluZEJ5
SWQoTW9ja0RhdGEuc2hhcmVkUmVwb3NpdG9yeUlkKCkpOworICAgICAgICBjb25zdCBzZXQxID0g
bmV3IEN1c3RvbUNvbW1pdFNldDsKKyAgICAgICAgc2V0MS5zZXRSZXZpc2lvbkZvclJlcG9zaXRv
cnkod2Via2l0LCAnMTkxNjIyJywgcGF0Y2hGaWxlKTsKKyAgICAgICAgc2V0MS5zZXRSZXZpc2lv
bkZvclJlcG9zaXRvcnkoc2hhcmVkLCAnODAyMjknKTsKKyAgICAgICAgY29uc3Qgc2V0MiA9IG5l
dyBDdXN0b21Db21taXRTZXQ7CisgICAgICAgIHNldDIuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCwgJzE5MTYyMicpOworICAgICAgICBzZXQyLnNldFJldmlzaW9uRm9yUmVwb3NpdG9y
eShzaGFyZWQsICc4MDIyOScpOworICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmNyZWF0ZVdpdGhU
YXNrKCdjdXN0b20gdGFzaycsIFBsYXRmb3JtLmZpbmRCeUlkKE1vY2tEYXRhLnNvbWVQbGF0Zm9y
bUlkKCkpLCBzb21lVGVzdCwgJ3NvbWUgZ3JvdXAnLCAyLCBbc2V0MSwgc2V0Ml0pOworICAgIH0p
LnRoZW4oKHRhc2spID0+IHsKKyAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5maW5kQWxsQnlUYXNr
KHRhc2suaWQoKSlbMF07CisgICAgfSkKK30KKworZGVzY3JpYmUoJy9hcGkvdXBsb2FkLXJvb3Qv
JywgZnVuY3Rpb24gKCkgeworICAgIHByZXBhcmVTZXJ2ZXJUZXN0KHRoaXMpOworICAgIFRlbXBv
cmFyeUZpbGUuaW5qZWN0KCk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHJvb3QgZmls
ZSBpcyBtaXNzaW5nJywgKCkgPT4geworICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVB
UEkoKS5wb3N0Rm9ybURhdGEoJy9hcGkvdXBsb2FkLXJvb3QvJywge30pLnRoZW4oKHJlc3BvbnNl
KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnTm9G
aWxlU3BlY2lmaWVkJyk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBy
ZWplY3Qgd2hlbiB0aGVyZSBhcmUgbm8gc2xhdmVzJywgKCkgPT4geworICAgICAgICByZXR1cm4g
VGVtcG9yYXJ5RmlsZS5tYWtlVGVtcG9yYXJ5RmlsZSgnc29tZS5kYXQnLCAnc29tZSBjb250ZW50
JykudGhlbigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLnBvc3RGb3JtRGF0YSgnL2FwaS91cGxvYWQtcm9vdC8nLCBtYWtlUmVwb3J0KHJv
b3RGaWxlKSk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnU2xhdmVOb3RGb3VuZCcpOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gc2xhdmUgbmFtZSBp
cyBtaXNzaW5nJywgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkU2xhdmVBbmRDcmVhdGVSb290
RmlsZSgpLnRoZW4oKHJvb3RGaWxlKSA9PiB7CisgICAgICAgICAgICBjb25zdCByZXBvcnQgPSBt
YWtlUmVwb3J0KHJvb3RGaWxlKTsKKyAgICAgICAgICAgIGRlbGV0ZSByZXBvcnQuc2xhdmVOYW1l
OworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEZvcm1EYXRh
KCcvYXBpL3VwbG9hZC1yb290LycsIHJlcG9ydCk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNl
KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnTWlz
c2luZ1NsYXZlTmFtZScpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQg
cmVqZWN0IHdoZW4gYnVpbGRlciBuYW1lIGlzIG1pc3NpbmcnLCAoKSA9PiB7CisgICAgICAgIHJl
dHVybiBhZGRTbGF2ZUFuZENyZWF0ZVJvb3RGaWxlKCkudGhlbigocm9vdEZpbGUpID0+IHsKKyAg
ICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IG1ha2VSZXBvcnQocm9vdEZpbGUpOworICAgICAgICAg
ICAgZGVsZXRlIHJlcG9ydC5idWlsZGVyTmFtZTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2Vy
dmVyLnJlbW90ZUFQSSgpLnBvc3RGb3JtRGF0YSgnL2FwaS91cGxvYWQtcm9vdC8nLCByZXBvcnQp
OworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0ludmFsaWRCdWlsZGVyTmFtZScpOworICAgICAgICB9
KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gYnVpbGQgbnVtYmVyIGlz
IG1pc3NpbmcnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRTbGF2ZUFuZENyZWF0ZVJvb3RG
aWxlKCkudGhlbigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IG1h
a2VSZXBvcnQocm9vdEZpbGUpOworICAgICAgICAgICAgZGVsZXRlIHJlcG9ydC5idWlsZE51bWJl
cjsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RGb3JtRGF0
YSgnL2FwaS91cGxvYWQtcm9vdC8nLCByZXBvcnQpOworICAgICAgICB9KS50aGVuKChyZXNwb25z
ZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0lu
dmFsaWRCdWlsZE51bWJlcicpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91
bGQgcmVqZWN0IHdoZW4gYnVpbGQgbnVtYmVyIGlzIG5vdCBhIG51bWJlcicsICgpID0+IHsKKyAg
ICAgICAgcmV0dXJuIGFkZFNsYXZlQW5kQ3JlYXRlUm9vdEZpbGUoKS50aGVuKChyb290RmlsZSkg
PT4geworICAgICAgICAgICAgY29uc3QgcmVwb3J0ID0gbWFrZVJlcG9ydChyb290RmlsZSk7Cisg
ICAgICAgICAgICByZXBvcnQuYnVpbGROdW1iZXIgPSAnMWFiYyc7CisgICAgICAgICAgICByZXR1
cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0Rm9ybURhdGEoJy9hcGkvdXBsb2FkLXJvb3Qv
JywgcmVwb3J0KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkQnVpbGROdW1iZXInKTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIGJ1aWxk
IHRpbWUgaXMgbWlzc2luZycsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZFNsYXZlQW5kQ3Jl
YXRlUm9vdEZpbGUoKS50aGVuKChyb290RmlsZSkgPT4geworICAgICAgICAgICAgY29uc3QgcmVw
b3J0ID0gbWFrZVJlcG9ydChyb290RmlsZSk7CisgICAgICAgICAgICBkZWxldGUgcmVwb3J0LmJ1
aWxkVGltZTsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RG
b3JtRGF0YSgnL2FwaS91cGxvYWQtcm9vdC8nLCByZXBvcnQpOworICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMn
XSwgJ0ludmFsaWRCdWlsZFRpbWUnKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBpdCgn
c2hvdWxkIHJlamVjdCB3aGVuIGJ1aWxkIHRpbWUgaXMgbWFsZm9ybWVkJywgKCkgPT4geworICAg
ICAgICByZXR1cm4gYWRkU2xhdmVBbmRDcmVhdGVSb290RmlsZSgpLnRoZW4oKHJvb3RGaWxlKSA9
PiB7CisgICAgICAgICAgICBjb25zdCByZXBvcnQgPSBtYWtlUmVwb3J0KHJvb3RGaWxlKTsKKyAg
ICAgICAgICAgIHJlcG9ydC5idWlsZFRpbWUgPSAnV2VkLCAxMCBNYXkgMjAxNyAwMzowMjozMCBH
TVQnOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEZvcm1E
YXRhKCcvYXBpL3VwbG9hZC1yb290LycsIHJlcG9ydCk7CisgICAgICAgIH0pLnRoZW4oKHJlc3Bv
bnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAn
SW52YWxpZEJ1aWxkVGltZScpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91
bGQgcmVqZWN0IHdoZW4gYnVpbGQgcmVxdWVzdCBJRCBpcyBtaXNzaW5nJywgKCkgPT4geworICAg
ICAgICByZXR1cm4gYWRkU2xhdmVBbmRDcmVhdGVSb290RmlsZSgpLnRoZW4oKHJvb3RGaWxlKSA9
PiB7CisgICAgICAgICAgICBjb25zdCByZXBvcnQgPSBtYWtlUmVwb3J0KHJvb3RGaWxlKTsKKyAg
ICAgICAgICAgIGRlbGV0ZSByZXBvcnQuYnVpbGRSZXF1ZXN0OworICAgICAgICAgICAgcmV0dXJu
IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkucG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290Lycs
IHJlcG9ydCk7CisgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZEJ1aWxkUmVxdWVzdCcpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gYnVpbGQg
cmVxdWVzdCBJRCBpcyBub3QgYSBudW1iZXInLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRT
bGF2ZUFuZENyZWF0ZVJvb3RGaWxlKCkudGhlbigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0IHJlcG9ydCA9IG1ha2VSZXBvcnQocm9vdEZpbGUpOworICAgICAgICAgICAgcmVwb3J0
LmJ1aWxkUmVxdWVzdCA9ICdhYmMnOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkucG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290LycsIHJlcG9ydCk7CisgICAg
ICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZEJ1aWxkUmVxdWVzdCcpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gYnVpbGQgcmVxdWVzdCBkb2VzIG5v
dCBleGlzdCcsICgpID0+IHsKKyAgICAgICAgcmV0dXJuIGFkZFNsYXZlQW5kQ3JlYXRlUm9vdEZp
bGUoKS50aGVuKChyb290RmlsZSkgPT4geworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkucG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290LycsIG1ha2VSZXBvcnQo
cm9vdEZpbGUpKTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkQnVpbGRSZXF1ZXN0VHlw
ZScpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4g
cmVwb3NpdG9yeSBsaXN0IGlzIG1pc3NpbmcnLCAoKSA9PiB7CisgICAgICAgIHJldHVybiBhZGRT
bGF2ZUFuZENyZWF0ZVJvb3RGaWxlKCkudGhlbigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0IHJlcG9ydCA9IG1ha2VSZXBvcnQocm9vdEZpbGUpOworICAgICAgICAgICAgZGVsZXRl
IHJlcG9ydC5yZXBvc2l0b3J5TGlzdDsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJl
bW90ZUFQSSgpLnBvc3RGb3JtRGF0YSgnL2FwaS91cGxvYWQtcm9vdC8nLCByZXBvcnQpOworICAg
ICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJl
c3BvbnNlWydzdGF0dXMnXSwgJ0ludmFsaWRSZXBvc2l0b3J5TGlzdCcpOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gcmVwb3NpdG9yeSBsaXN0IGlz
IG5vdCBhIHZhbGlkIEpTT04gc3RyaW5nJywgKCkgPT4geworICAgICAgICByZXR1cm4gYWRkU2xh
dmVBbmRDcmVhdGVSb290RmlsZSgpLnRoZW4oKHJvb3RGaWxlKSA9PiB7CisgICAgICAgICAgICBj
b25zdCByZXBvcnQgPSBtYWtlUmVwb3J0KHJvb3RGaWxlKTsKKyAgICAgICAgICAgIHJlcG9ydC5y
ZXBvc2l0b3J5TGlzdCA9ICdhK2InOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVt
b3RlQVBJKCkucG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290LycsIHJlcG9ydCk7CisgICAg
ICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVz
cG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZFJlcG9zaXRvcnlMaXN0Jyk7CisgICAgICAgIH0pOwor
ICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBhY2NlcHQgd2hlbiBidWlsZCByZXF1ZXN0IGV4aXN0
cycsICgpID0+IHsKKyAgICAgICAgbGV0IHdlYmtpdDsKKyAgICAgICAgbGV0IHdlYmtpdFBhdGNo
OworICAgICAgICBsZXQgc2hhcmVkOworICAgICAgICBsZXQgdGVzdEdyb3VwOworICAgICAgICBs
ZXQgYnVpbGRSZXF1ZXN0OworICAgICAgICBsZXQgb3RoZXJCdWlsZFJlcXVlc3Q7CisgICAgICAg
IGxldCB1cGxvYWRlZFJvb3Q7CisgICAgICAgIHJldHVybiBjcmVhdGVUZXN0R3JvdXBXaWhQYXRj
aCgpLnRoZW4oKGdyb3VwKSA9PiB7CisgICAgICAgICAgICB3ZWJraXQgPSBSZXBvc2l0b3J5LmZp
bmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpKTsKKyAgICAgICAgICAgIHNoYXJl
ZCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEuc2hhcmVkUmVwb3NpdG9yeUlkKCkpOwor
CisgICAgICAgICAgICB0ZXN0R3JvdXAgPSBncm91cDsKKyAgICAgICAgICAgIGJ1aWxkUmVxdWVz
dCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBh
c3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxk
UmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5oYXNG
aW5pc2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNQZW5kaW5nKCkp
OyAKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxs
KTsKKworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0LmNvbW1pdFNl
dCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgd2Via2l0UGF0Y2ggPSBjb21t
aXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CisgICAgICAgICAgICBhc3NlcnQod2Vi
a2l0UGF0Y2ggaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHdlYmtpdFBhdGNoLmZpbGVuYW1lKCksICdwYXRjaC5kYXQnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShz
aGFyZWQpLCAnODAyMjknKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0
Y2hGb3JSZXBvc2l0b3J5KHNoYXJlZCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxsKTsKKyAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAg
ICAgICAgIG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsK
KyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29t
bWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNp
b25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnko
d2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQu
cmV2aXNpb25Gb3JSZXBvc2l0b3J5KHNoYXJlZCksICc4MDIyOScpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3Np
dG9yeShzaGFyZWQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJD
b21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKKworICAgICAgICAgICAgcmV0dXJuIGFkZFNs
YXZlQW5kQ3JlYXRlUm9vdEZpbGUoKTsKKyAgICAgICAgfSkudGhlbigocm9vdEZpbGUpID0+IHsK
KyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RGb3JtRGF0YSgn
L2FwaS91cGxvYWQtcm9vdC8nLCBtYWtlUmVwb3J0KHJvb3RGaWxlLCBidWlsZFJlcXVlc3QuaWQo
KSkpOworICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ09LJyk7CisgICAgICAgICAgICBjb25zdCB1cGxv
YWRlZFJvb3RSYXdEYXRhID0gcmVzcG9uc2VbJ3VwbG9hZGVkRmlsZSddOworICAgICAgICAgICAg
dXBsb2FkZWRSb290ID0gVXBsb2FkZWRGaWxlLmVuc3VyZVNpbmdsZXRvbih1cGxvYWRlZFJvb3RS
YXdEYXRhLmlkLCB1cGxvYWRlZFJvb3RSYXdEYXRhKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bCh1cGxvYWRlZFJvb3QuZmlsZW5hbWUoKSwgJ3NvbWUuZGF0Jyk7CisgICAgICAgICAgICByZXR1
cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayhidWlsZFJlcXVlc3QudGVzdEdyb3VwKCkudGFzaygp
LmlkKCksIHRydWUpOworICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CisKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICBj
b25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZ3Jv
dXAsIHRlc3RHcm91cCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3VwLmJ1aWxk
UmVxdWVzdHMoKS5sZW5ndGgsIDYpOworCisgICAgICAgICAgICBjb25zdCB1cGRhdGVkQnVpbGRS
ZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbCh1cGRhdGVkQnVpbGRSZXF1ZXN0LCBidWlsZFJlcXVlc3QpOworCisgICAgICAgICAg
ICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1
aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0Lmhh
c0ZpbmlzaGVkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFidWlsZFJlcXVlc3QuaXNQZW5kaW5n
KCkpOyAKKyAgICAgICAgICAgIGFzc2VydC5ub3RFcXVhbChidWlsZFJlcXVlc3QuYnVpbGRJZCgp
LCBudWxsKTsKKworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0LmNv
bW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgd2Via2l0UGF0Y2gpOworICAg
ICAgICAgICAgY29uc3Qgd2Via2l0Um9vdCA9IGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeSh3
ZWJraXQpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFJvb3QsIHVwbG9hZGVkUm9v
dCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeShzaGFyZWQpLCAnODAyMjknKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRT
ZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHNoYXJlZCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxsKTsKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbdXBsb2Fk
ZWRSb290XSk7CisKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWls
ZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21t
aXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0
KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZv
clJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3Ro
ZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHNoYXJlZCksICc4MDIyOScpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShz
aGFyZWQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5y
b290Rm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwob3RoZXJDb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CisKKyAgICBpdCgnc2hvdWxkIHJlamVjdCB3aGVuIHRoZSByZXBvc2l0b3J5IGxpc3Qg
aXMgbm90IGFuIGFycmF5JywgKCkgPT4geworICAgICAgICBsZXQgYnVpbGRSZXF1ZXN0OworICAg
ICAgICByZXR1cm4gY3JlYXRlVGVzdEdyb3VwV2loUGF0Y2goKS50aGVuKChncm91cCkgPT4gewor
ICAgICAgICAgICAgYnVpbGRSZXF1ZXN0ID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAg
ICAgICAgICAgcmV0dXJuIGFkZFNsYXZlQW5kQ3JlYXRlUm9vdEZpbGUoKTsKKyAgICAgICAgfSku
dGhlbigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IG1ha2VSZXBv
cnQocm9vdEZpbGUsIGJ1aWxkUmVxdWVzdC5pZCgpKTsKKyAgICAgICAgICAgIHJlcG9ydC5yZXBv
c2l0b3J5TGlzdCA9ICciYSInOworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3Rl
QVBJKCkucG9zdEZvcm1EYXRhKCcvYXBpL3VwbG9hZC1yb290LycsIHJlcG9ydCk7CisgICAgICAg
IH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3N0YXR1cyddLCAnSW52YWxpZFJlcG9zaXRvcnlMaXN0Jyk7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiB0aGUgcmVwb3NpdG9yeSBsaXN0IHJl
ZmVycyB0byBhIG5vbi1leGlzdGVudCByZXBvc2l0b3J5JywgKCkgPT4geworICAgICAgICBsZXQg
YnVpbGRSZXF1ZXN0OworICAgICAgICByZXR1cm4gY3JlYXRlVGVzdEdyb3VwV2loUGF0Y2goKS50
aGVuKChncm91cCkgPT4geworICAgICAgICAgICAgYnVpbGRSZXF1ZXN0ID0gZ3JvdXAuYnVpbGRS
ZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlQW5kQ3JlYXRlUm9vdEZp
bGUoKTsKKyAgICAgICAgfSkudGhlbigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IHJlcG9ydCA9IG1ha2VSZXBvcnQocm9vdEZpbGUsIGJ1aWxkUmVxdWVzdC5pZCgpKTsKKyAgICAg
ICAgICAgIHJlcG9ydC5yZXBvc2l0b3J5TGlzdCA9ICdbIldlYktpdCIsICJCYWRSZXBvc2l0b3J5
TmFtZSJdJzsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RG
b3JtRGF0YSgnL2FwaS91cGxvYWQtcm9vdC8nLCByZXBvcnQpOworICAgICAgICB9KS50aGVuKChy
ZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMn
XSwgJ0ludmFsaWRSZXBvc2l0b3J5Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9u
c2VbJ3JlcG9zaXRvcnlOYW1lJ10sICdCYWRSZXBvc2l0b3J5TmFtZScpOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gdGhlIHJlcG9zaXRvcnkgbGlz
dCByZWZlcnMgdG8gYSByZXBvc2l0b3J5IG5vdCBwcmVzZW50IGluIHRoZSBjb21taXQgc2V0Jywg
KCkgPT4geworICAgICAgICBsZXQgYnVpbGRSZXF1ZXN0OworICAgICAgICByZXR1cm4gY3JlYXRl
VGVzdEdyb3VwV2loUGF0Y2goKS50aGVuKChncm91cCkgPT4geworICAgICAgICAgICAgYnVpbGRS
ZXF1ZXN0ID0gZ3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBdOworICAgICAgICAgICAgcmV0dXJuIGFk
ZFNsYXZlQW5kQ3JlYXRlUm9vdEZpbGUoKTsKKyAgICAgICAgfSkudGhlbigocm9vdEZpbGUpID0+
IHsKKyAgICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IG1ha2VSZXBvcnQocm9vdEZpbGUsIGJ1aWxk
UmVxdWVzdC5pZCgpKTsKKyAgICAgICAgICAgIHJlcG9ydC5yZXBvc2l0b3J5TGlzdCA9ICdbIldl
YktpdCIsICJtYWNPUyJdJzsKKyAgICAgICAgICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQ
SSgpLnBvc3RGb3JtRGF0YSgnL2FwaS91cGxvYWQtcm9vdC8nLCByZXBvcnQpOworICAgICAgICB9
KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ0ludmFsaWRSZXBvc2l0b3J5Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocmVzcG9uc2VbJ3JlcG9zaXRvcnlOYW1lJ10sICdtYWNPUycpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGl0KCdzaG91bGQgdXBkYXRlIGFsbCBjb21taXQgc2V0IGl0ZW1zIGluIHRo
ZSByZXBvc2l0b3J5IGxpc3RlZCcsICgpID0+IHsKKyAgICAgICAgbGV0IHdlYmtpdDsKKyAgICAg
ICAgbGV0IHdlYmtpdFBhdGNoOworICAgICAgICBsZXQgc2hhcmVkOworICAgICAgICBsZXQgdGVz
dEdyb3VwOworICAgICAgICBsZXQgYnVpbGRSZXF1ZXN0OworICAgICAgICBsZXQgb3RoZXJCdWls
ZFJlcXVlc3Q7CisgICAgICAgIGxldCB1cGxvYWRlZFJvb3Q7CisgICAgICAgIHJldHVybiBjcmVh
dGVUZXN0R3JvdXBXaWhQYXRjaCgpLnRoZW4oKGdyb3VwKSA9PiB7CisgICAgICAgICAgICB3ZWJr
aXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKE1vY2tEYXRhLndlYmtpdFJlcG9zaXRvcnlJZCgpKTsK
KyAgICAgICAgICAgIHNoYXJlZCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEuc2hhcmVk
UmVwb3NpdG9yeUlkKCkpOworCisgICAgICAgICAgICB0ZXN0R3JvdXAgPSBncm91cDsKKyAgICAg
ICAgICAgIGJ1aWxkUmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKS5sZW5ndGgsIDYp
OworCisgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0LmlzQnVpbGQoKSk7CisgICAgICAg
ICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7CisgICAgICAgICAgICBhc3NlcnQo
IWJ1aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJl
cXVlc3QuaXNQZW5kaW5nKCkpOyAKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVl
c3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gYnVp
bGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNl
dC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAg
d2Via2l0UGF0Y2ggPSBjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CisgICAg
ICAgICAgICBhc3NlcnQod2Via2l0UGF0Y2ggaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFBhdGNoLmZpbGVuYW1lKCksICdwYXRjaC5kYXQn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnko
d2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlz
aW9uRm9yUmVwb3NpdG9yeShzaGFyZWQpLCAnODAyMjknKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHNoYXJlZCksIG51bGwpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeShzaGFyZWQpLCBu
dWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29tbWl0U2V0LmFsbFJvb3RGaWxl
cygpLCBbXSk7CisKKyAgICAgICAgICAgIG90aGVyQnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1
aWxkUmVxdWVzdHMoKVsxXTsKKyAgICAgICAgICAgIGNvbnN0IG90aGVyQ29tbWl0U2V0ID0gb3Ro
ZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3Ro
ZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnko
d2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQu
cm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHNoYXJlZCksICc4MDIyOScp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnBhdGNoRm9yUmVwb3Np
dG9yeShzaGFyZWQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1p
dFNldC5yb290Rm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwob3RoZXJDb21taXRTZXQuYWxsUm9vdEZpbGVzKCksIFtdKTsKKworICAgICAg
ICAgICAgcmV0dXJuIGFkZFNsYXZlQW5kQ3JlYXRlUm9vdEZpbGUoKTsKKyAgICAgICAgfSkudGhl
bigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IG1ha2VSZXBvcnQo
cm9vdEZpbGUsIGJ1aWxkUmVxdWVzdC5pZCgpKTsKKyAgICAgICAgICAgIHJlcG9ydC5yZXBvc2l0
b3J5TGlzdCA9ICdbIldlYktpdCIsICJTaGFyZWQiXSc7CisgICAgICAgICAgICByZXR1cm4gVGVz
dFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0Rm9ybURhdGEoJy9hcGkvdXBsb2FkLXJvb3QvJywgcmVw
b3J0KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+IHsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOworICAgICAgICAgICAgY29uc3QgdXBs
b2FkZWRSb290UmF3RGF0YSA9IHJlc3BvbnNlWyd1cGxvYWRlZEZpbGUnXTsKKyAgICAgICAgICAg
IHVwbG9hZGVkUm9vdCA9IFVwbG9hZGVkRmlsZS5lbnN1cmVTaW5nbGV0b24odXBsb2FkZWRSb290
UmF3RGF0YS5pZCwgdXBsb2FkZWRSb290UmF3RGF0YSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwodXBsb2FkZWRSb290LmZpbGVuYW1lKCksICdzb21lLmRhdCcpOworICAgICAgICAgICAgcmV0
dXJuIFRlc3RHcm91cC5mZXRjaEZvclRhc2soYnVpbGRSZXF1ZXN0LnRlc3RHcm91cCgpLnRhc2so
KS5pZCgpLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVzdEdyb3VwcykgPT4geworCisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOworICAgICAgICAgICAg
Y29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGdy
b3VwLCB0ZXN0R3JvdXApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cC5idWls
ZFJlcXVlc3RzKCkubGVuZ3RoLCA2KTsKKworICAgICAgICAgICAgY29uc3QgdXBkYXRlZEJ1aWxk
UmVxdWVzdCA9IHRlc3RHcm91cC5idWlsZFJlcXVlc3RzKClbMF07CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwodXBkYXRlZEJ1aWxkUmVxdWVzdCwgYnVpbGRSZXF1ZXN0KTsKKworICAgICAgICAg
ICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5pc0J1aWxkKCkpOworICAgICAgICAgICAgYXNzZXJ0KCFi
dWlsZFJlcXVlc3QuaXNUZXN0KCkpOworICAgICAgICAgICAgYXNzZXJ0KGJ1aWxkUmVxdWVzdC5o
YXNGaW5pc2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzUGVuZGlu
ZygpKTsgCisgICAgICAgICAgICBhc3NlcnQubm90RXF1YWwoYnVpbGRSZXF1ZXN0LmJ1aWxkSWQo
KSwgbnVsbCk7CisKKyAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IGJ1aWxkUmVxdWVzdC5j
b21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25G
b3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIHdlYmtpdFBhdGNoKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0
KSwgdXBsb2FkZWRSb290KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2
aXNpb25Gb3JSZXBvc2l0b3J5KHNoYXJlZCksICc4MDIyOScpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbW1pdFNldC5wYXRjaEZvclJlcG9zaXRvcnkoc2hhcmVkKSwgbnVsbCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHNoYXJlZCks
IHVwbG9hZGVkUm9vdCk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5h
bGxSb290RmlsZXMoKSwgW3VwbG9hZGVkUm9vdF0pOworCisgICAgICAgICAgICBjb25zdCBvdGhl
ckNvbW1pdFNldCA9IG90aGVyQnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQp
LCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucGF0
Y2hGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KG90aGVyQ29tbWl0U2V0LnJvb3RGb3JSZXBvc2l0b3J5KHdlYmtpdCksIG51bGwpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShz
aGFyZWQpLCAnODAyMjknKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNl
dC5wYXRjaEZvclJlcG9zaXRvcnkoc2hhcmVkKSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkoc2hhcmVkKSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG90aGVyQ29tbWl0U2V0LmFsbFJvb3RGaWxlcygp
LCBbXSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCB1cGRhdGUgYWxs
IGNvbW1pdCBzZXQgaXRlbXMgaW4gdGhlIHJlcG9zaXRvcnkgbGlzdGVkJywgKCkgPT4geworICAg
ICAgICBsZXQgd2Via2l0OworICAgICAgICBsZXQgd2Via2l0UGF0Y2g7CisgICAgICAgIGxldCBz
aGFyZWQ7CisgICAgICAgIGxldCB0ZXN0R3JvdXA7CisgICAgICAgIGxldCBidWlsZFJlcXVlc3Q7
CisgICAgICAgIGxldCBvdGhlckJ1aWxkUmVxdWVzdDsKKyAgICAgICAgbGV0IHVwbG9hZGVkUm9v
dDsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVRlc3RHcm91cFdpaFBhdGNoKCkudGhlbigoZ3JvdXAp
ID0+IHsKKyAgICAgICAgICAgIHdlYmtpdCA9IFJlcG9zaXRvcnkuZmluZEJ5SWQoTW9ja0RhdGEu
d2Via2l0UmVwb3NpdG9yeUlkKCkpOworICAgICAgICAgICAgc2hhcmVkID0gUmVwb3NpdG9yeS5m
aW5kQnlJZChNb2NrRGF0YS5zaGFyZWRSZXBvc2l0b3J5SWQoKSk7CisKKyAgICAgICAgICAgIHRl
c3RHcm91cCA9IGdyb3VwOworICAgICAgICAgICAgYnVpbGRSZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1
aWxkUmVxdWVzdHMoKVswXTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXAuYnVp
bGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisgICAgICAgICAgICBhc3NlcnQoYnVpbGRSZXF1ZXN0
LmlzQnVpbGQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5pc1Rlc3QoKSk7
CisgICAgICAgICAgICBhc3NlcnQoIWJ1aWxkUmVxdWVzdC5oYXNGaW5pc2hlZCgpKTsKKyAgICAg
ICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNQZW5kaW5nKCkpOyAKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChidWlsZFJlcXVlc3QuYnVpbGRJZCgpLCBudWxsKTsKKworICAgICAgICAgICAg
Y29uc3QgY29tbWl0U2V0ID0gYnVpbGRSZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5
MTYyMicpOworICAgICAgICAgICAgd2Via2l0UGF0Y2ggPSBjb21taXRTZXQucGF0Y2hGb3JSZXBv
c2l0b3J5KHdlYmtpdCk7CisgICAgICAgICAgICBhc3NlcnQod2Via2l0UGF0Y2ggaW5zdGFuY2Vv
ZiBVcGxvYWRlZEZpbGUpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdFBhdGNoLmZp
bGVuYW1lKCksICdwYXRjaC5kYXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRT
ZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShzaGFyZWQpLCAnODAyMjknKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucGF0Y2hGb3JSZXBvc2l0b3J5KHNo
YXJlZCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yb290Rm9y
UmVwb3NpdG9yeShzaGFyZWQpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
Y29tbWl0U2V0LmFsbFJvb3RGaWxlcygpLCBbXSk7CisKKyAgICAgICAgICAgIG90aGVyQnVpbGRS
ZXF1ZXN0ID0gdGVzdEdyb3VwLmJ1aWxkUmVxdWVzdHMoKVsxXTsKKyAgICAgICAgICAgIGNvbnN0
IG90aGVyQ29tbWl0U2V0ID0gb3RoZXJCdWlsZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdl
YmtpdCksICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvdGhlckNvbW1pdFNl
dC5wYXRjaEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwob3RoZXJDb21taXRTZXQucm9vdEZvclJlcG9zaXRvcnkod2Via2l0KSwgbnVsbCk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwob3RoZXJDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHNoYXJlZCksICc4MDIyOScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG90aGVyQ29t
bWl0U2V0LnBhdGNoRm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxsKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbChvdGhlckNvbW1pdFNldC5yb290Rm9yUmVwb3NpdG9yeShzaGFyZWQpLCBudWxs
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3RoZXJDb21taXRTZXQuYWxsUm9vdEZp
bGVzKCksIFtdKTsKKworICAgICAgICAgICAgcmV0dXJuIGFkZFNsYXZlQW5kQ3JlYXRlUm9vdEZp
bGUoKTsKKyAgICAgICAgfSkudGhlbigocm9vdEZpbGUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0
IHJlcG9ydCA9IG1ha2VSZXBvcnQocm9vdEZpbGUsIGJ1aWxkUmVxdWVzdC5pZCgpKTsKKyAgICAg
ICAgICAgIHJlcG9ydC5yZXBvc2l0b3J5TGlzdCA9ICdbIldlYktpdCIsICJTaGFyZWQiXSc7Cisg
ICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0Rm9ybURhdGEoJy9h
cGkvdXBsb2FkLXJvb3QvJywgcmVwb3J0KTsKKyAgICAgICAgfSkudGhlbigocmVzcG9uc2UpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdPSycpOwor
ICAgICAgICAgICAgY29uc3QgdXBsb2FkZWRSb290UmF3RGF0YSA9IHJlc3BvbnNlWyd1cGxvYWRl
ZEZpbGUnXTsKKyAgICAgICAgICAgIHVwbG9hZGVkUm9vdCA9IFVwbG9hZGVkRmlsZS5lbnN1cmVT
aW5nbGV0b24odXBsb2FkZWRSb290UmF3RGF0YS5pZCwgdXBsb2FkZWRSb290UmF3RGF0YSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwodXBsb2FkZWRSb290LmZpbGVuYW1lKCksICdzb21lLmRh
dCcpOworICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRjaEZvclRhc2soYnVpbGRSZXF1
ZXN0LnRlc3RHcm91cCgpLnRhc2soKS5pZCgpLCB0cnVlKTsKKyAgICAgICAgfSkudGhlbigodGVz
dEdyb3VwcykgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3Ro
LCAxKTsKKyAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKKyAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChncm91cCwgdGVzdEdyb3VwKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbCh0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpLmxlbmd0aCwgNik7CisKKyAgICAgICAgICAg
IGNvbnN0IHVwZGF0ZWRCdWlsZFJlcXVlc3QgPSB0ZXN0R3JvdXAuYnVpbGRSZXF1ZXN0cygpWzBd
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHVwZGF0ZWRCdWlsZFJlcXVlc3QsIGJ1aWxkUmVx
dWVzdCk7CisKKyAgICAgICAgICAgIGFzc2VydChidWlsZFJlcXVlc3QuaXNCdWlsZCgpKTsKKyAg
ICAgICAgICAgIGFzc2VydCghYnVpbGRSZXF1ZXN0LmlzVGVzdCgpKTsKKyAgICAgICAgICAgIGFz
c2VydChidWlsZFJlcXVlc3QuaGFzRmluaXNoZWQoKSk7CisgICAgICAgICAgICBhc3NlcnQoIWJ1
aWxkUmVxdWVzdC5pc1BlbmRpbmcoKSk7IAorICAgICAgICAgICAgYXNzZXJ0Lm5vdEVxdWFsKGJ1
aWxkUmVxdWVzdC5idWlsZElkKCksIG51bGwpOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKGJ1aWxkUmVxdWVzdC5jb21taXRTZXQoKS5hbGxSb290RmlsZXMoKSwgW3VwbG9hZGVkUm9v
dF0pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChvdGhlckJ1aWxkUmVxdWVzdC5jb21t
aXRTZXQoKS5hbGxSb290RmlsZXMoKSwgW10pOworICAgICAgICB9KTsKKyAgICB9KTsKKworfSk7
CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZp
bGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0
cy5qcwppbmRleCBjODJhODNhN2U2YjJhMTQ2N2I4MGNmNWViNGY1NTgwY2E1NTk5NjU3Li45ODMz
NTc5MmRjNGFiZjQyNjc2ZDMxYWE4YmQxMzU5ZWZjZDA5NGQ5IDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0
LWdyb3VwLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLXRlc3QtZ3JvdXAtdGVzdHMuanMKQEAgLTMyMyw3ICsz
MjMsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsKICAgICAgICAgICAg
IHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtu
YW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgY29tbWl0U2V0czogeydtYWNPUyc6IFsnMTVBMjg0
JywgJzE1QTI4NCddLCAnV2ViS2l0JzogWycxOTE2MjInLCAnMTkxNjIzJ119fSkudGhlbigoY29u
dGVudCkgPT4gewogICAgICAgICAgICAgICAgIGluc2VydGVkR3JvdXBJZCA9IGNvbnRlbnRbJ3Rl
c3RHcm91cElkJ107Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRjaEJ5VGFz
ayh0YXNrSWQpOworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHRhc2tJZCwgdHJ1ZSk7CiAgICAgICAgICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMubGVuZ3RoLCAxKTsKICAgICAg
ICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07CkBAIC0zNjEsNyArMzYxLDcg
QEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIGxldCBpbnNlcnRlZEdyb3VwSWQ7CiAgICAgICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCBwYXJhbXMp
LnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAgICAgICAgICBpbnNlcnRlZEdyb3VwSWQgPSBj
b250ZW50Wyd0ZXN0R3JvdXBJZCddOwotICAgICAgICAgICAgICAgIHJldHVybiBUZXN0R3JvdXAu
ZmV0Y2hCeVRhc2sodGFza0lkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZl
dGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOwogICAgICAgICAgICAgfSkudGhlbigodGVzdEdyb3Vw
cykgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbCh0ZXN0R3JvdXBzLmxlbmd0aCwg
MSk7CiAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOwpAQCAtMzky
LDcgKzM5Miw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAn
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJl
cGV0aXRpb25Db3VudDogMiwKICAgICAgICAgICAgICAgICBjb21taXRTZXRzOiB7J1dlYktpdCc6
IFsnMTkxNjIyJywgJzE5MTYyMyddLCAnbWFjT1MnOiBbJzE1QTI4NCcsICcxNUEyODQnXX19KS50
aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgaW5zZXJ0ZWRHcm91cElkID0gY29u
dGVudFsndGVzdEdyb3VwSWQnXTsKLSAgICAgICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZl
dGNoQnlUYXNrKHRhc2tJZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RHcm91cC5mZXRj
aEZvclRhc2sodGFza0lkLCB0cnVlKTsKICAgICAgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMp
ID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEp
OwogICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsKQEAgLTQzOCw3
ICs0MzgsNyBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwJywg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgbGV0IGluc2VydGVkR3JvdXBJZDsKICAgICAgICAg
ICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcs
IHBhcmFtcykudGhlbigoY29udGVudCkgPT4gewogICAgICAgICAgICAgICAgIGluc2VydGVkR3Jv
dXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRl
c3RHcm91cC5mZXRjaEJ5VGFzayh0YXNrSWQpOworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0
R3JvdXAuZmV0Y2hGb3JUYXNrKHRhc2tJZCwgdHJ1ZSk7CiAgICAgICAgICAgICB9KS50aGVuKCh0
ZXN0R3JvdXBzKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRlc3RHcm91cHMu
bGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRlc3RHcm91cHNbMF07
CkBAIC00ODUsNyArNDg1LDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVz
dC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAge1t3ZWJraXQuaWQo
KV06IHtyZXZpc2lvbjogJzE5MTYyMid9LCBbbWFjb3MuaWQoKV06IHtyZXZpc2lvbjogJzE1QTI4
NCd9LCAnY3VzdG9tUm9vdHMnOiBbdXBsb2FkZWRGaWxlWydpZCddXX1dOwogICAgICAgICAgICAg
ICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcs
IHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgcmVwZXRpdGlvbkNvdW50OiAyLCByZXZpc2lv
blNldHN9KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGluc2VydGVk
R3JvdXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBUZXN0R3JvdXAuZmV0Y2hCeVRhc2sodGFza0lkKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFRlc3RHcm91cC5mZXRjaEZvclRhc2sodGFza0lkLCB0cnVlKTsKICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIH0pLnRoZW4oKHRlc3RHcm91cHMpID0+IHsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwodGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwpAQCAtNTM0LDcgKzUz
NCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgn
Y3JlYXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHJlcGV0aXRp
b25Db3VudDogMiwgcmV2aXNpb25TZXRzfSk7CiAgICAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+
IHsKICAgICAgICAgICAgIGluc2VydGVkR3JvdXBJZCA9IGNvbnRlbnRbJ3Rlc3RHcm91cElkJ107
Ci0gICAgICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoQnlUYXNrKHRhc2tJZCk7CisgICAg
ICAgICAgICByZXR1cm4gVGVzdEdyb3VwLmZldGNoRm9yVGFzayh0YXNrSWQsIHRydWUpOwogICAg
ICAgICB9KS50aGVuKCh0ZXN0R3JvdXBzKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
dGVzdEdyb3Vwcy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0ZXN0R3Jv
dXBzWzBdOwpAQCAtNjE4LDcgKzYxOCw3IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAge25hbWU6ICd0
ZXN0JywgdGFza05hbWU6ICdvdGhlciB0YXNrJywgcGxhdGZvcm06IE1vY2tEYXRhLnNvbWVQbGF0
Zm9ybUlkKCksIHRlc3Q6IE1vY2tEYXRhLnNvbWVUZXN0SWQoKSwgcmV2aXNpb25TZXRzfSk7CiAg
ICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgaW5zZXJ0ZWRHcm91cElk
ID0gcmVzdWx0Wyd0ZXN0R3JvdXBJZCddOwotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxs
KFtBbmFseXNpc1Rhc2suZmV0Y2hCeUlkKHJlc3VsdFsndGFza0lkJ10pLCBUZXN0R3JvdXAuZmV0
Y2hCeVRhc2socmVzdWx0Wyd0YXNrSWQnXSldKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LmFsbChbQW5hbHlzaXNUYXNrLmZldGNoQnlJZChyZXN1bHRbJ3Rhc2tJZCddKSwgVGVzdEdyb3Vw
LmZldGNoRm9yVGFzayhyZXN1bHRbJ3Rhc2tJZCddLCB0cnVlKV0pOwogICAgICAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKICAgICAgICAgICAgIGNvbnN0IFthbmFseXNpc1Rhc2ssIHRlc3RHcm91
cHNdID0gcmVzdWx0OwogCkBAIC02NjAsNyArNjYwLDcgQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2Vk
LWFwaS9jcmVhdGUtdGVzdC1ncm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgfSkudGhlbigo
cmVzdWx0KSA9PiB7CiAgICAgICAgICAgICBzZWNvbmRSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoZmlyc3RSZXN1bHRbJ3Rhc2tJZCddLCBzZWNvbmRSZXN1bHRbJ3Rh
c2tJZCddKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbQW5hbHlzaXNUYXNrLmZl
dGNoQnlJZChyZXN1bHRbJ3Rhc2tJZCddKSwgVGVzdEdyb3VwLmZldGNoQnlUYXNrKHJlc3VsdFsn
dGFza0lkJ10pXSk7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW0FuYWx5c2lzVGFz
ay5mZXRjaEJ5SWQocmVzdWx0Wyd0YXNrSWQnXSksIFRlc3RHcm91cC5mZXRjaEZvclRhc2socmVz
dWx0Wyd0YXNrSWQnXSwgdHJ1ZSldKTsKICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7CiAg
ICAgICAgICAgICBjb25zdCBbYW5hbHlzaXNUYXNrLCB0ZXN0R3JvdXBzXSA9IHJlc3VsdDsKIApk
aWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJj
ZXMvbW9jay1kYXRhLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9y
ZXNvdXJjZXMvbW9jay1kYXRhLmpzCmluZGV4IDBkMDQwNjRhODliN2RhNTA1NzI4OTY3ODRiMzQ3
NzQxNDA1OTE1YTAuLjMwN2M4Zjg0ZjBjMDFjYzQwMWNmYzhhOTZiMjY2OTdjMjQ0YmVkNzUgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2Vz
L21vY2stZGF0YS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3Rz
L3Jlc291cmNlcy9tb2NrLWRhdGEuanMKQEAgLTI1LDYgKzI1LDcgQEAgTW9ja0RhdGEgPSB7CiAg
ICAgbWFjb3NSZXBvc2l0b3J5SWQoKSB7IHJldHVybiA5OyB9LAogICAgIHdlYmtpdFJlcG9zaXRv
cnlJZCgpIHsgcmV0dXJuIDExOyB9LAogICAgIGdpdFdlYmtpdFJlcG9zaXRvcnlJZCgpIHsgcmV0
dXJuIDExMTsgfSwKKyAgICBzaGFyZWRSZXBvc2l0b3J5SWQoKSB7IHJldHVybiAxNDsgfSwKICAg
ICBhZGRNb2NrRGF0YTogZnVuY3Rpb24gKGRiLCBzdGF0dXNMaXN0KQogICAgIHsKICAgICAgICAg
aWYgKCFzdGF0dXNMaXN0KQpAQCAtMzQsMTIgKzM1LDE1IEBAIE1vY2tEYXRhID0gewogICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdidWlsZF9zbGF2ZXMnLCB7aWQ6IDIwLCBuYW1lOiAnc3luYy1zbGF2
ZScsIHBhc3N3b3JkX2hhc2g6IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoJ3Bh
c3N3b3JkJykuZGlnZXN0KCdoZXgnKX0pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0
b3JpZXMnLCB7aWQ6IHRoaXMubWFjb3NSZXBvc2l0b3J5SWQoKSwgbmFtZTogJ21hY09TJ30pLAog
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IHRoaXMud2Via2l0UmVw
b3NpdG9yeUlkKCksIG5hbWU6ICdXZWJLaXQnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Jl
cG9zaXRvcmllcycsIHtpZDogdGhpcy5zaGFyZWRSZXBvc2l0b3J5SWQoKSwgbmFtZTogJ1NoYXJl
ZCd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yeV9ncm91
cHMnLCB7aWQ6IDIwMDEsIG5hbWU6ICd3ZWJraXQtc3ZuJywgdHJpZ2dlcmFibGU6IDEwMDB9KSwK
ICAgICAgICAgICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9z
aXRvcnk6IHRoaXMubWFjb3NSZXBvc2l0b3J5SWQoKSwgZ3JvdXA6IDIwMDF9KSwKICAgICAgICAg
ICAgIGRiLmluc2VydCgndHJpZ2dlcmFibGVfcmVwb3NpdG9yaWVzJywge3JlcG9zaXRvcnk6IHRo
aXMud2Via2l0UmVwb3NpdG9yeUlkKCksIGdyb3VwOiAyMDAxfSksCiAgICAgICAgICAgICBkYi5p
bnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDg3ODMyLCByZXBvc2l0b3J5OiB0aGlzLm1hY29zUmVwb3Np
dG9yeUlkKCksIHJldmlzaW9uOiAnMTAuMTEgMTVBMjg0J30pLAogICAgICAgICAgICAgZGIuaW5z
ZXJ0KCdjb21taXRzJywge2lkOiA5MzExNiwgcmVwb3NpdG9yeTogdGhpcy53ZWJraXRSZXBvc2l0
b3J5SWQoKSwgcmV2aXNpb246ICcxOTE2MjInLCB0aW1lOiAobmV3IERhdGUoMTQ0NTk0NTgxNjg3
OCkpLnRvSVNPU3RyaW5nKCl9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0cycsIHtp
ZDogOTYzMzYsIHJlcG9zaXRvcnk6IHRoaXMud2Via2l0UmVwb3NpdG9yeUlkKCksIHJldmlzaW9u
OiAnMTkyNzM2JywgdGltZTogKG5ldyBEYXRlKDE0NDgyMjUzMjU2NTApKS50b0lTT1N0cmluZygp
fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdHMnLCB7aWQ6IDExMTE2OCwgcmVwb3Np
dG9yeTogdGhpcy5zaGFyZWRSZXBvc2l0b3J5SWQoKSwgcmV2aXNpb246ICc4MDIyOScsIHRpbWU6
ICcyMDE2LTAzLTAyVDIzOjE3OjU0LjNaJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21t
aXRzJywge2lkOiAxMTExNjksIHJlcG9zaXRvcnk6IHRoaXMuc2hhcmVkUmVwb3NpdG9yeUlkKCks
IHJldmlzaW9uOiAnODAyMzAnLCB0aW1lOiAnMjAxNi0wMy0wMlQyMzozNzoxOC4wWid9KSwKICAg
ICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRzJywge2lkOiA5MDEsIG51bWJlcjogJzkwMScsIHRp
bWU6ICcyMDE1LTEwLTI3VDEyOjA1OjI3LjFaJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdw
bGF0Zm9ybXMnLCB7aWQ6IE1vY2tEYXRhLnNvbWVQbGF0Zm9ybUlkKCksIG5hbWU6ICdzb21lIHBs
YXRmb3JtJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdwbGF0Zm9ybXMnLCB7aWQ6IE1vY2tE
YXRhLm90aGVyUGxhdGZvcm1JZCgpLCBuYW1lOiAnb3RoZXIgcGxhdGZvcm0nfSksCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>