<?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>155863</bug_id>
          
          <creation_ts>2016-03-24 19:19:28 -0700</creation_ts>
          <short_desc>Migrate admin-regenerate-manifest.js to mocha.js and test v3 UI code</short_desc>
          <delta_ts>2016-03-25 14:55: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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1177850</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-24 19:19:28 -0700</bug_when>
    <thetext>Migrate legacy tests/admin-regenerate-manifest.js to mocha.js,
and test v3 UI code in addition to the server backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177856</commentid>
    <comment_count>1</comment_count>
      <attachid>274874</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-24 19:36:24 -0700</bug_when>
    <thetext>Created attachment 274874
Migrates the test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177877</commentid>
    <comment_count>2</comment_count>
      <attachid>274874</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-24 21:20:11 -0700</bug_when>
    <thetext>Comment on attachment 274874
Migrates the test

View in context: https://bugs.webkit.org/attachment.cgi?id=274874&amp;action=review

&gt; Websites/perf.webkit.org/public/v3/models/manifest.js:58
&gt; +        }

Nit: Semicolon.

&gt; Websites/perf.webkit.org/public/v3/models/platform.js:20
&gt; +                for (var currentTest = metric.test(); currentTest; currentTest = test.parentTest()) {

This seems super sketchy. The iteration portion of the for loop is always setting the same value... and we just break because we run the loop twice with the same value. Should the iteration portion be &quot;currentTest = currentTest.parentTest()&quot; or could this be written in a clearer way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177879</commentid>
    <comment_count>3</comment_count>
      <attachid>274874</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-24 21:43:08 -0700</bug_when>
    <thetext>Comment on attachment 274874
Migrates the test

View in context: https://bugs.webkit.org/attachment.cgi?id=274874&amp;action=review

&gt;&gt; Websites/perf.webkit.org/public/v3/models/platform.js:20
&gt;&gt; +                for (var currentTest = metric.test(); currentTest; currentTest = test.parentTest()) {
&gt; 
&gt; This seems super sketchy. The iteration portion of the for loop is always setting the same value... and we just break because we run the loop twice with the same value. Should the iteration portion be &quot;currentTest = currentTest.parentTest()&quot; or could this be written in a clearer way?

Yup, it&apos;s supposed to be &quot;currentTest = currentTest.parentTest().&quot;
Will fix and a test case before landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178120</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-25 14:55:32 -0700</bug_when>
    <thetext>Committed r198691: &lt;http://trac.webkit.org/changeset/198691&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274874</attachid>
            <date>2016-03-24 19:36:24 -0700</date>
            <delta_ts>2016-03-24 21:20:11 -0700</delta_ts>
            <desc>Migrates the test</desc>
            <filename>bug-155863-20160324193626.patch</filename>
            <type>text/plain</type>
            <size>39818</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NjU3KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ5IEBACisyMDE2LTAzLTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1pZ3JhdGUgYWRtaW4tcmVnZW5lcmF0ZS1tYW5pZmVzdC5qcyB0byBtb2NoYS5q
cyBhbmQgdGVzdCB2MyBVSSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTU4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlZCBhZG1pbi1yZWdlbmVyYXRlLW1hbmlmZXN0LmpzIGJ5IGEg
bmV3IG1vY2hhLmpzIHRlc3RzIHVzaW5nIHRoZSBuZXcgc2VydmVyIHRlc3RpbmcgY2FwYWJpbGl0
eQorICAgICAgICBhZGRlZCBpbiByMTk4NjQyIGFuZCB0ZXN0ZWQgdjMgVUkgY29kZSAocGFyc2lu
ZyBtYW5pZmVzdC5qc29uIGFuZCBjcmVhdGluZyBtb2RlbHMpLiBBbHNvIHJlbW92ZWQKKyAgICAg
ICAgL2FkbWluL3JlZ2VuZXJhdGUtbWFuaWZlc3Qgc2luY2UgaXQgaGFzIGJlZW4gc3VwZXJzZWRl
ZCBieSAvYXBpL21hbmlmZXN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBleHRyYWN0cyBt
YW5pZmVzdC5qcyBvdXQgb2YgbWFpbi5qcyBzbyB0aGF0IGl0IGNvdWxkIGJlIHVzZWQgYW5kIHRl
c3RlZCB3aXRob3V0IHRoZQorICAgICAgICBET00gc3VwcG9ydCBpbiBub2RlLgorCisgICAgICAg
ICogcHVibGljL2FkbWluL3JlZ2VuZXJhdGUtbWFuaWZlc3QucGhwOiBEZWxldGVkLgorICAgICAg
ICAqIHB1YmxpYy9pbmNsdWRlL2RiLnBocDogRml4ZWQgYSByZWdyZXNzaW9uIGZyb20gcjE5ODY0
MiBzaW5jZSBDT05GSUdfRElSIG5vdyBkb2Vzbid0IGVuZCB3aXRoCisgICAgICAgIGEgdHJhaWxp
bmcgYmFja3NsYXNoLgorICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL21hbmlmZXN0LnBocDoKKyAg
ICAgICAgKE1hbmlmZXN0R2VuZXJhdG9yOjpidWdfdHJhY2tlcnMpOiBBdm9pZCBhIHdhcm5pbmcg
bWVzc2FnZSB3aGVuIHRoZXJlIGFyZSBubyByZXBvc2l0b3JpZXMuCisgICAgICAgICogcHVibGlj
L3YzL2luZGV4Lmh0bWw6CisgICAgICAgICogcHVibGljL3YzL21haW4uanM6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2J1Zy10cmFja2VyLmpzOgorICAgICAg
ICAoQnVnVHJhY2tlci5wcm90b3R5cGUubmV3QnVnVXJsKTogQWRkZWQuCisgICAgICAgIChCdWdU
cmFja2VyLnByb3RvdHlwZS5yZXBvc2l0b3JpZXMpOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMv
djMvbW9kZWxzL21hbmlmZXN0LmpzOiBBZGRlZC4gRXh0cmFjdGVkIGZyb20gbWFpbi5qcy4KKyAg
ICAgICAgKE1hbmlmZXN0LmZldGNoKTogTW92ZWQgZnJvbSBtYWluLmpzJyBmZXRjaE1hbmlmZXN0
LgorICAgICAgICAoTWFuaWZlc3QuX2RpZEZldGNoTWFuaWZlc3QpOiBNb3ZlZCBmcm9tIG1haW4u
anMnIGRpZEZldGNoTWFuaWZlc3QuCisgICAgICAgICogcHVibGljL3YzL21vZGVscy9wbGF0Zm9y
bS5qczoKKyAgICAgICAgKFBsYXRmb3JtLnByb3RvdHlwZS5oYXNUZXN0KTogRml4ZWQgdGhlIGJ1
ZyB0aGF0ICJ0ZXN0IiBoZXJlIHdhcyBzaGFkb3dpbmcgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlciBv
ZgorICAgICAgICB0aGUgc2FtZSBuYW1lLiBUaGlzIGlzIHRlc3RlZCBieSB0aGUgbmV3bHkgYWRk
ZWQgdGVzdCBjYXNlcy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3Rz
LXRlc3RzLmpzOgorICAgICAgICAqIHNlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanM6IEFkZGVk
LiBNaWdyYXRlZCB0ZXN0IGNhc2VzIGZyb20gdGVzdHMvYWRtaW4tcmVnZW5lcmF0ZS1tYW5pZmVz
dC5qcworICAgICAgICB3aXRoIGFkZGl0aW9uYWwgYXNzZXJ0aW9ucyBmb3IgdjMgVUkgbW9kZWwg
b2JqZWN0cy4KKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpz
OgorICAgICAgICAoVGVzdFNlcnZlci5wcm90b3R5cGUuc3RhcnQpOgorICAgICAgICAoVGVzdFNl
cnZlci5wcm90b3R5cGUudGVzdENvbmZpZyk6IFJlbmFtZWQgZnJvbSBfY29uc3RydWN0VGVzdENv
bmZpZyBub3cgdGhhdCB0aGlzIGlzIGEgcHVibGljIEFQSS4KKyAgICAgICAgQWxzbyBubyBsb25n
ZXIgdGFrZXMgZGF0YURpcmVjdG9yeSBhcyBhbiBhcmd1bWVudCBzaW5jZSBpdCdzIGFsd2F5cyB0
aGUgc2FtZS4KKyAgICAgICAgKFRlc3RTZXJ2ZXIucHJvdG90eXBlLl9lbnN1cmVEYXRhRGlyZWN0
b3J5KTogRml4ZWQgYSBidWcgdGhhdCB3ZSB3ZXJlbid0IG1ha2luZyBwdWJsaWMvZGF0YS4KKyAg
ICAgICAgKFRlc3RTZXJ2ZXIucHJvdG90eXBlLmNsZWFuRGF0YURpcmVjdG9yeSk6IEFkZGVkLiBS
ZW1vdmUgYWxsIGZpbGVzIGluc2lkZSBwdWJsaWMvZGF0YSBiZXR3ZWVuIHRlc3RzLgorICAgICAg
ICAoVGVzdFNlcnZlci5wcm90b3R5cGUuaW5qZWN0KTogQWRkZWQuIENhbGxzIGJlZm9yZSwgZXRj
Li4uIGJlY2F1c2UgYWx3YXlzIGNhbGxpbmcgYmVmb3JlIGhhZCBhbgorICAgICAgICB1bmludGVu
ZGVkIHNpZGUgZWZmZWN0IG9mIHNsb3dpbmcgZG93biB1bml0IHRlc3RzIGV2ZW4gdGhyb3VnaCB0
aGV5IGRvbid0IG5lZWQgUG9zdGdyZXMgb3IgQXBhY2hlLgorICAgICAgICAqIHRlc3RzL2FkbWlu
LXJlZ2VuZXJhdGUtbWFuaWZlc3QuanM6IFJlbW92ZWQuCisgICAgICAgICogdG9vbHMvanMvZGF0
YWJhc2UuanM6CisgICAgICAgICogdG9vbHMvanMvdjMtbW9kZWxzLmpzOgorCiAyMDE2LTAzLTIz
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBtb2NoYSBz
ZXJ2ZXIgdGVzdHMgZm9yIC9hcGkvYnVpbGQtcmVxdWVzdHMKSW5kZXg6IFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvYWRtaW4vcmVnZW5lcmF0ZS1tYW5pZmVzdC5waHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hZG1pbi9yZWdlbmVyYXRlLW1h
bmlmZXN0LnBocAkocmV2aXNpb24gMTk4NjU2KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9hZG1pbi9yZWdlbmVyYXRlLW1hbmlmZXN0LnBocAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMyArMCwwIEBACi08P3BocAotCi1yZXF1aXJlX29uY2UoJy4uL2luY2x1ZGUvYWRtaW4taGVh
ZGVyLnBocCcpOwotcmVxdWlyZV9vbmNlKCcuLi9pbmNsdWRlL21hbmlmZXN0LnBocCcpOwotCi1p
ZiAoJGRiKSB7Ci0gICAgaWYgKHJlZ2VuZXJhdGVfbWFuaWZlc3QoKSkKLSAgICAgICAgbm90aWNl
KCJSZWdlbmVyYXRlZCB0aGUgbWFuaWZlc3QiKTsKLX0KLQotcmVxdWlyZSgnLi4vaW5jbHVkZS9h
ZG1pbi1mb290ZXIucGhwJyk7Ci0KLT8+CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL2luY2x1ZGUvZGIucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvaW5jbHVkZS9kYi5waHAJKHJldmlzaW9uIDE5ODY1NikKKysrIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9kYi5waHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDE0ICszNCwxNCBAQCBmdW5jdGlvbiBjb25maWcoJGtleSwgJGRlZmF1bHQgPSBOVUxMKSB7
CiAgICAgaWYgKCEkX2NvbmZpZykgewogICAgICAgICAkZmlsZV9wYXRoID0gZ2V0ZW52KCdPUkdf
V0VCS0lUX1BFUkZfQ09ORklHX1BBVEgnKTsKICAgICAgICAgaWYgKCEkZmlsZV9wYXRoKQotICAg
ICAgICAgICAgJGZpbGVfcGF0aCA9IENPTkZJR19ESVIgLiAnY29uZmlnLmpzb24nOworICAgICAg
ICAgICAgJGZpbGVfcGF0aCA9IENPTkZJR19ESVIgLiAnL2NvbmZpZy5qc29uJzsKICAgICAgICAg
JF9jb25maWcgPSBqc29uX2RlY29kZShmaWxlX2dldF9jb250ZW50cygkZmlsZV9wYXRoKSwgdHJ1
ZSk7CiAgICAgfQogICAgIHJldHVybiBhcnJheV9nZXQoJF9jb25maWcsICRrZXksICRkZWZhdWx0
KTsKIH0KIAogZnVuY3Rpb24gY29uZmlnX3BhdGgoJGtleSwgJHBhdGgpIHsKLSAgICByZXR1cm4g
Q09ORklHX0RJUiAuIGNvbmZpZygka2V5KSAuICcvJyAuICRwYXRoOworICAgIHJldHVybiBDT05G
SUdfRElSIC4gJy8nIC4gY29uZmlnKCRrZXkpIC4gJy8nIC4gJHBhdGg7CiB9CiAKIGZ1bmN0aW9u
IGdlbmVyYXRlX2RhdGFfZmlsZSgkZmlsZW5hbWUsICRjb250ZW50KSB7CkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvbWFuaWZlc3QucGhwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9tYW5pZmVzdC5waHAJ
KHJldmlzaW9uIDE5ODY1NikKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5j
bHVkZS9tYW5pZmVzdC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBjbGFz
cyBNYW5pZmVzdEdlbmVyYXRvciB7CiAgICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiAkcm93
Wyd0cmFja2VyX25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAgJ2J1Z1VybCcgPT4gJHJvd1sn
dHJhY2tlcl9idWdfdXJsJ10sCiAgICAgICAgICAgICAgICAgICAgICduZXdCdWdVcmwnID0+ICRy
b3dbJ3RyYWNrZXJfbmV3X2J1Z191cmwnXSwKLSAgICAgICAgICAgICAgICAgICAgJ3JlcG9zaXRv
cmllcycgPT4gJHRyYWNrZXJfaWRfdG9fcmVwb3NpdG9yaWVzWyRyb3dbJ3RyYWNrZXJfaWQnXV0p
OworICAgICAgICAgICAgICAgICAgICAncmVwb3NpdG9yaWVzJyA9PiBhcnJheV9nZXQoJHRyYWNr
ZXJfaWRfdG9fcmVwb3NpdG9yaWVzLCAkcm93Wyd0cmFja2VyX2lkJ10pKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9pbmRleC5odG1sCShyZXZpc2lvbiAxOTg2NTYpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcg
QEAgUnVuIHRvb2xzL2J1bmRsZS12My1zY3JpcHRzIHRvIHNwZWVkIHVwIAogICAgICAgICA8c2Ny
aXB0IHNyYz0ibW9kZWxzL3Rlc3QtZ3JvdXAuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0
IHNyYz0ibW9kZWxzL2J1aWxkLXJlcXVlc3QuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0
IHNyYz0ibW9kZWxzL3Jvb3Qtc2V0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Im1vZGVscy9tYW5pZmVzdC5qcyI+PC9zY3JpcHQ+CiAKICAgICAgICAgPHNjcmlwdCBzcmM9ImNv
bXBvbmVudHMvYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJjb21wb25l
bnRzL3NwaW5uZXItaWNvbi5qcyI+PC9zY3JpcHQ+CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL21haW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tYWluLmpzCShyZXZpc2lvbiAxOTg2NTYpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTksNyAr
OSw3IEBAIGNsYXNzIFNwaW5uaW5nUGFnZSBleHRlbmRzIFBhZ2UgewogZnVuY3Rpb24gbWFpbigp
IHsKICAgICAobmV3IFNwaW5uaW5nUGFnZSkub3BlbigpOwogCi0gICAgZmV0Y2hNYW5pZmVzdCgp
LnRoZW4oZnVuY3Rpb24gKG1hbmlmZXN0KSB7CisgICAgTWFuaWZlc3QuZmV0Y2goKS50aGVuKGZ1
bmN0aW9uIChtYW5pZmVzdCkgewogICAgICAgICB2YXIgZGFzaGJvYXJkVG9vbGJhciA9IG5ldyBE
YXNoYm9hcmRUb29sYmFyOwogICAgICAgICB2YXIgZGFzaGJvYXJkUGFnZXMgPSBbXTsKICAgICAg
ICAgaWYgKG1hbmlmZXN0LmRhc2hib2FyZHMpIHsKQEAgLTUxLDY2ICs1MSwxMSBAQCBmdW5jdGlv
biBtYWluKCkgewogCiAgICAgICAgIGhlYWRpbmcuc2V0Um91dGVyKHJvdXRlcik7CiAgICAgICAg
IHJvdXRlci5yb3V0ZSgpOworICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAg
ICBhbGVydCgnRmFpbGVkIHRvIGxvYWQgdGhlIHNpdGUgbWFuaWZlc3Q6ICcgKyBlcnJvcik7CiAg
ICAgfSk7CiB9CiAKLWZ1bmN0aW9uIGZldGNoTWFuaWZlc3QoKQotewotICAgIHJldHVybiBSZW1v
dGVBUEkuZ2V0SlNPTignLi4vZGF0YS9tYW5pZmVzdC5qc29uJykudGhlbihkaWRGZXRjaE1hbmlm
ZXN0LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTignLi4v
YXBpL21hbmlmZXN0LycpLnRoZW4oZGlkRmV0Y2hNYW5pZmVzdCwgZnVuY3Rpb24gKGVycm9yKSB7
Ci0gICAgICAgICAgICBhbGVydCgnRmFpbGVkIHRvIGxvYWQgdGhlIHNpdGUgbWFuaWZlc3Q6ICcg
KyBlcnJvcik7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBkaWRGZXRjaE1h
bmlmZXN0KHJhd1Jlc3BvbnNlKQotewotICAgIEluc3RydW1lbnRhdGlvbi5zdGFydE1lYXN1cmlu
Z1RpbWUoJ01haW4nLCAnZGlkRmV0Y2hNYW5pZmVzdCcpOwotCi0gICAgdmFyIHRlc3RzID0gW107
Ci0gICAgdmFyIHRlc3RQYXJlbnRNYXAgPSB7fTsKLSAgICBmb3IgKHZhciB0ZXN0SWQgaW4gcmF3
UmVzcG9uc2UudGVzdHMpIHsKLSAgICAgICAgdmFyIHRlc3QgPSByYXdSZXNwb25zZS50ZXN0c1t0
ZXN0SWRdOwotICAgICAgICB2YXIgdG9wTGV2ZWwgPSAhdGVzdC5wYXJlbnRJZDsKLSAgICAgICAg
aWYgKHRlc3QucGFyZW50SWQpCi0gICAgICAgICAgICB0ZXN0UGFyZW50TWFwW3Rlc3RJZF0gPSBw
YXJzZUludCh0ZXN0LnBhcmVudElkKTsKLSAgICAgICAgdGVzdHMucHVzaChuZXcgVGVzdCh0ZXN0
SWQsIHRlc3QsIHRvcExldmVsKSk7Ci0gICAgfQotICAgIGZvciAodmFyIHRlc3RJZCBpbiB0ZXN0
UGFyZW50TWFwKQotICAgICAgICBUZXN0LmZpbmRCeUlkKHRlc3RJZCkuc2V0UGFyZW50VGVzdChU
ZXN0LmZpbmRCeUlkKHRlc3RQYXJlbnRNYXBbdGVzdElkXSkpOwotCi0gICAgZnVuY3Rpb24gYnVp
bGRPYmplY3RzRnJvbUlkTWFwKGlkTWFwLCBjb25zdHJ1Y3RvciwgcmVzb2x2ZXIpIHsKLSAgICAg
ICAgZm9yICh2YXIgaWQgaW4gaWRNYXApIHsKLSAgICAgICAgICAgIGlmIChyZXNvbHZlcikKLSAg
ICAgICAgICAgICAgICByZXNvbHZlcihpZE1hcFtpZF0pOwotICAgICAgICAgICAgbmV3IGNvbnN0
cnVjdG9yKGlkLCBpZE1hcFtpZF0pOwotICAgICAgICB9Ci0gICAgfQotICAgIGJ1aWxkT2JqZWN0
c0Zyb21JZE1hcChyYXdSZXNwb25zZS5tZXRyaWNzLCBNZXRyaWMsIGZ1bmN0aW9uIChyYXcpIHsK
LSAgICAgICAgcmF3LnRlc3QgPSBUZXN0LmZpbmRCeUlkKHJhdy50ZXN0KTsKLSAgICB9KTsKLQot
ICAgIGJ1aWxkT2JqZWN0c0Zyb21JZE1hcChyYXdSZXNwb25zZS5hbGwsIFBsYXRmb3JtLCBmdW5j
dGlvbiAocmF3KSB7Ci0gICAgICAgIHJhdy5sYXN0TW9kaWZpZWRCeU1ldHJpYyA9IHt9OwotICAg
ICAgICByYXcubGFzdE1vZGlmaWVkLmZvckVhY2goZnVuY3Rpb24gKGxhc3RNb2RpZmllZCwgaW5k
ZXgpIHsKLSAgICAgICAgICAgIHJhdy5sYXN0TW9kaWZpZWRCeU1ldHJpY1tyYXcubWV0cmljc1tp
bmRleF1dID0gbGFzdE1vZGlmaWVkOwotICAgICAgICB9KTsKLSAgICAgICAgcmF3Lm1ldHJpY3Mg
PSByYXcubWV0cmljcy5tYXAoZnVuY3Rpb24gKGlkKSB7IHJldHVybiBNZXRyaWMuZmluZEJ5SWQo
aWQpOyB9KTsKLSAgICB9KTsKLSAgICBidWlsZE9iamVjdHNGcm9tSWRNYXAocmF3UmVzcG9uc2Uu
YnVpbGRlcnMsIEJ1aWxkZXIpOwotICAgIGJ1aWxkT2JqZWN0c0Zyb21JZE1hcChyYXdSZXNwb25z
ZS5yZXBvc2l0b3JpZXMsIFJlcG9zaXRvcnkpOwotICAgIGJ1aWxkT2JqZWN0c0Zyb21JZE1hcChy
YXdSZXNwb25zZS5idWdUcmFja2VycywgQnVnVHJhY2tlciwgZnVuY3Rpb24gKHJhdykgewotICAg
ICAgICByYXcucmVwb3NpdG9yaWVzID0gcmF3LnJlcG9zaXRvcmllcy5tYXAoZnVuY3Rpb24gKGlk
KSB7IHJldHVybiBSZXBvc2l0b3J5LmZpbmRCeUlkKGlkKTsgfSk7Ci0gICAgfSk7Ci0KLSAgICBJ
bnN0cnVtZW50YXRpb24uZW5kTWVhc3VyaW5nVGltZSgnTWFpbicsICdkaWRGZXRjaE1hbmlmZXN0
Jyk7Ci0KLSAgICByZXR1cm4gewotICAgICAgICBzaXRlVGl0bGU6IHJhd1Jlc3BvbnNlLnNpdGVU
aXRsZSwKLSAgICAgICAgZGFzaGJvYXJkczogcmF3UmVzcG9uc2UuZGFzaGJvYXJkcywgLy8gRklY
TUU6IEFkZCBhbiBhYnN0cmFjdGlvbiBhcm91bmQgZGFzaGJvYXJkcy4KLSAgICB9Ci19Ci0KIGlm
IChkb2N1bWVudC5yZWFkeVN0YXRlICE9ICdsb2FkaW5nJykKICAgICBtYWluKCk7CiBlbHNlCklu
ZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWctdHJhY2tl
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9idWctdHJhY2tlci5qcwkocmV2aXNpb24gMTk4NjU2KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVnLXRyYWNrZXIuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0IEBACisndXNlIHN0cmljdCc7CiAKIGNsYXNzIEJ1Z1RyYWNrZXIgZXh0ZW5k
cyBMYWJlbGVkT2JqZWN0IHsKICAgICBjb25zdHJ1Y3RvcihpZCwgb2JqZWN0KQpAQCAtOSw0ICsx
MCw5IEBAIGNsYXNzIEJ1Z1RyYWNrZXIgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICB9CiAK
ICAgICBidWdVcmwoYnVnTnVtYmVyKSB7IHJldHVybiB0aGlzLl9idWdVcmwgJiYgYnVnTnVtYmVy
ID8gdGhpcy5fYnVnVXJsLnJlcGxhY2UoL1wkbnVtYmVyL2csIGJ1Z051bWJlcikgOiBudWxsOyB9
CisgICAgbmV3QnVnVXJsKCkgeyByZXR1cm4gdGhpcy5fbmV3QnVnVXJsOyB9CisgICAgcmVwb3Np
dG9yaWVzKCkgeyByZXR1cm4gdGhpcy5fcmVwb3NpdG9yaWVzOyB9CiB9CisKK2lmICh0eXBlb2Yg
bW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1vZHVsZS5leHBvcnRzLkJ1Z1RyYWNrZXIgPSBC
dWdUcmFja2VyOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvbWFuaWZlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvbWFuaWZlc3QuanMJKHJldmlzaW9uIDApCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tYW5pZmVzdC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYzIEBACisndXNlIHN0cmljdCc7CisKK2NsYXNzIE1hbmlmZXN0IHsKKworICAg
IHN0YXRpYyBmZXRjaCgpCisgICAgeworICAgICAgICByZXR1cm4gUmVtb3RlQVBJLmdldEpTT04o
Jy4uL2RhdGEvbWFuaWZlc3QuanNvbicpLmNhdGNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHJldHVybiBSZW1vdGVBUEkuZ2V0SlNPTignLi4vYXBpL21hbmlmZXN0LycpOworICAgICAgICB9
KS50aGVuKHRoaXMuX2RpZEZldGNoTWFuaWZlc3QuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAg
c3RhdGljIF9kaWRGZXRjaE1hbmlmZXN0KHJhd1Jlc3BvbnNlKQorICAgIHsKKyAgICAgICAgSW5z
dHJ1bWVudGF0aW9uLnN0YXJ0TWVhc3VyaW5nVGltZSgnTWFuaWZlc3QnLCAnX2RpZEZldGNoTWFu
aWZlc3QnKTsKKworICAgICAgICB2YXIgdGVzdHMgPSBbXTsKKyAgICAgICAgdmFyIHRlc3RQYXJl
bnRNYXAgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgdGVzdElkIGluIHJhd1Jlc3BvbnNlLnRlc3Rz
KSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHJhd1Jlc3BvbnNlLnRlc3RzW3Rlc3RJZF07Cisg
ICAgICAgICAgICB2YXIgdG9wTGV2ZWwgPSAhdGVzdC5wYXJlbnRJZDsKKyAgICAgICAgICAgIGlm
ICh0ZXN0LnBhcmVudElkKQorICAgICAgICAgICAgICAgIHRlc3RQYXJlbnRNYXBbdGVzdElkXSA9
IHBhcnNlSW50KHRlc3QucGFyZW50SWQpOworICAgICAgICAgICAgdGVzdHMucHVzaChuZXcgVGVz
dCh0ZXN0SWQsIHRlc3QsIHRvcExldmVsKSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh2YXIg
dGVzdElkIGluIHRlc3RQYXJlbnRNYXApCisgICAgICAgICAgICBUZXN0LmZpbmRCeUlkKHRlc3RJ
ZCkuc2V0UGFyZW50VGVzdChUZXN0LmZpbmRCeUlkKHRlc3RQYXJlbnRNYXBbdGVzdElkXSkpOwor
CisgICAgICAgIGZ1bmN0aW9uIGJ1aWxkT2JqZWN0c0Zyb21JZE1hcChpZE1hcCwgY29uc3RydWN0
b3IsIHJlc29sdmVyKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpZCBpbiBpZE1hcCkgeworICAg
ICAgICAgICAgICAgIGlmIChyZXNvbHZlcikKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIo
aWRNYXBbaWRdKTsKKyAgICAgICAgICAgICAgICBuZXcgY29uc3RydWN0b3IoaWQsIGlkTWFwW2lk
XSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnVpbGRPYmplY3RzRnJvbUlk
TWFwKHJhd1Jlc3BvbnNlLm1ldHJpY3MsIE1ldHJpYywgZnVuY3Rpb24gKHJhdykgeworICAgICAg
ICAgICAgcmF3LnRlc3QgPSBUZXN0LmZpbmRCeUlkKHJhdy50ZXN0KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgYnVpbGRPYmplY3RzRnJvbUlkTWFwKHJhd1Jlc3BvbnNlLmFsbCwgUGxhdGZvcm0s
IGZ1bmN0aW9uIChyYXcpIHsKKyAgICAgICAgICAgIHJhdy5sYXN0TW9kaWZpZWRCeU1ldHJpYyA9
IHt9OworICAgICAgICAgICAgcmF3Lmxhc3RNb2RpZmllZC5mb3JFYWNoKGZ1bmN0aW9uIChsYXN0
TW9kaWZpZWQsIGluZGV4KSB7CisgICAgICAgICAgICAgICAgcmF3Lmxhc3RNb2RpZmllZEJ5TWV0
cmljW3Jhdy5tZXRyaWNzW2luZGV4XV0gPSBsYXN0TW9kaWZpZWQ7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHJhdy5tZXRyaWNzID0gcmF3Lm1ldHJpY3MubWFwKGZ1bmN0aW9uIChpZCkg
eyByZXR1cm4gTWV0cmljLmZpbmRCeUlkKGlkKTsgfSk7CisgICAgICAgIH0pOworICAgICAgICBi
dWlsZE9iamVjdHNGcm9tSWRNYXAocmF3UmVzcG9uc2UuYnVpbGRlcnMsIEJ1aWxkZXIpOworICAg
ICAgICBidWlsZE9iamVjdHNGcm9tSWRNYXAocmF3UmVzcG9uc2UucmVwb3NpdG9yaWVzLCBSZXBv
c2l0b3J5KTsKKyAgICAgICAgYnVpbGRPYmplY3RzRnJvbUlkTWFwKHJhd1Jlc3BvbnNlLmJ1Z1Ry
YWNrZXJzLCBCdWdUcmFja2VyLCBmdW5jdGlvbiAocmF3KSB7CisgICAgICAgICAgICBpZiAocmF3
LnJlcG9zaXRvcmllcykKKyAgICAgICAgICAgICAgICByYXcucmVwb3NpdG9yaWVzID0gcmF3LnJl
cG9zaXRvcmllcy5tYXAoZnVuY3Rpb24gKGlkKSB7IHJldHVybiBSZXBvc2l0b3J5LmZpbmRCeUlk
KGlkKTsgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIEluc3RydW1lbnRhdGlvbi5lbmRNZWFz
dXJpbmdUaW1lKCdNYW5pZmVzdCcsICdfZGlkRmV0Y2hNYW5pZmVzdCcpOworCisgICAgICAgIHJl
dHVybiB7CisgICAgICAgICAgICBzaXRlVGl0bGU6IHJhd1Jlc3BvbnNlLnNpdGVUaXRsZSwKKyAg
ICAgICAgICAgIGRhc2hib2FyZHM6IHJhd1Jlc3BvbnNlLmRhc2hib2FyZHMsIC8vIEZJWE1FOiBB
ZGQgYW4gYWJzdHJhY3Rpb24gYXJvdW5kIGRhc2hib2FyZHMuCisgICAgICAgIH0KKyAgICB9Cit9
CisKK2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1vZHVsZS5leHBvcnRz
Lk1hbmlmZXN0ID0gTWFuaWZlc3Q7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy9wbGF0Zm9ybS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9wbGF0Zm9ybS5qcwkocmV2aXNpb24gMTk4NjU2KQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcGxhdGZvcm0uanMJ
KHdvcmtpbmcgY29weSkKQEAgLTE3LDEwICsxNywxMCBAQCBjbGFzcyBQbGF0Zm9ybSBleHRlbmRz
IExhYmVsZWRPYmplY3QgewogICAgICAgICBpZiAoIXRoaXMuX2NvbnRhaW5pbmdUZXN0cykgewog
ICAgICAgICAgICAgdGhpcy5fY29udGFpbmluZ1Rlc3RzID0ge307CiAgICAgICAgICAgICBmb3Ig
KHZhciBtZXRyaWMgb2YgdGhpcy5fbWV0cmljcykgewotICAgICAgICAgICAgICAgIGZvciAodmFy
IHRlc3QgPSBtZXRyaWMudGVzdCgpOyB0ZXN0OyB0ZXN0ID0gdGVzdC5wYXJlbnRUZXN0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHRlc3QuaWQoKSBpbiB0aGlzLl9jb250YWluaW5nVGVz
dHMpCisgICAgICAgICAgICAgICAgZm9yICh2YXIgY3VycmVudFRlc3QgPSBtZXRyaWMudGVzdCgp
OyBjdXJyZW50VGVzdDsgY3VycmVudFRlc3QgPSB0ZXN0LnBhcmVudFRlc3QoKSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoY3VycmVudFRlc3QuaWQoKSBpbiB0aGlzLl9jb250YWluaW5nVGVz
dHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
dGhpcy5fY29udGFpbmluZ1Rlc3RzW3Rlc3QuaWQoKV0gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9jb250YWluaW5nVGVzdHNbY3VycmVudFRlc3QuaWQoKV0gPSB0cnVlOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGkt
YnVpbGQtcmVxdWVzdHMtdGVzdHMuanMJKHJldmlzaW9uIDE5ODY1NikKKysrIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQCBsZXQgVGVzdFNlcnZlciA9IHJlcXVpcmUoJy4v
cmVzb3VyY2VzL3RlCiAKIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24g
KCkgewogICAgIHRoaXMudGltZW91dCgxMDAwMCk7CisgICAgVGVzdFNlcnZlci5pbmplY3QoKTsK
IAogICAgIGl0KCdzaG91bGQgcmV0dXJuICJUcmlnZ2VyYWJsZU5vdEZvdW5kIiB3aGVuIHRoZSBk
YXRhYmFzZSBpcyBlbXB0eScsIGZ1bmN0aW9uIChkb25lKSB7CiAgICAgICAgIFRlc3RTZXJ2ZXIu
cmVtb3RlQVBJKCkuZmV0Y2hKU09OKCcvYXBpL2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcp
LnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvYXBpLW1hbmlmZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLW1hbmlmZXN0LmpzCShyZXZpc2lvbiAwKQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktbWFuaWZlc3QuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNjMgQEAKKyd1c2Ugc3RyaWN0JzsKKworbGV0IGFz
c2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpOworCityZXF1aXJlKCcuLi90b29scy9qcy92My1tb2Rl
bHMuanMnKTsKKworbGV0IFRlc3RTZXJ2ZXIgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZXN0LXNl
cnZlci5qcycpOworCitkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uICgp
IHsKKyAgICB0aGlzLnRpbWVvdXQoMTAwMDApOworICAgIFRlc3RTZXJ2ZXIuaW5qZWN0KCk7CisK
KyAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgQnVpbGRlci5jbGVhclN0YXRp
Y01hcCgpOworICAgICAgICBCdWdUcmFja2VyLmNsZWFyU3RhdGljTWFwKCk7CisgICAgICAgIFRl
c3QuY2xlYXJTdGF0aWNNYXAoKTsKKyAgICAgICAgTWV0cmljLmNsZWFyU3RhdGljTWFwKCk7Cisg
ICAgICAgIFBsYXRmb3JtLmNsZWFyU3RhdGljTWFwKCk7CisgICAgICAgIFJlcG9zaXRvcnkuY2xl
YXJTdGF0aWNNYXAoKTsKKyAgICB9KTsKKworICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgYW4gZW1w
dHkgbWFuaWZlc3Qgd2hlbiBkYXRhYmFzZSBpcyBlbXB0eSIsIGZ1bmN0aW9uIChkb25lKSB7Cisg
ICAgICAgIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZmV0Y2hKU09OKCcvYXBpL21hbmlmZXN0Jyku
dGhlbihmdW5jdGlvbiAobWFuaWZlc3QpIHsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
T2JqZWN0LmtleXMobWFuaWZlc3QpLnNvcnQoKSwgWydhbGwnLCAnYnVnVHJhY2tlcnMnLCAnYnVp
bGRlcnMnLCAnZGFzaGJvYXJkJywgJ2Rhc2hib2FyZHMnLAorICAgICAgICAgICAgICAgICdlbGFw
c2VkVGltZScsICdtZXRyaWNzJywgJ3JlcG9zaXRvcmllcycsICdzaXRlVGl0bGUnLCAnc3RhdHVz
JywgJ3Rlc3RzJ10pOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHlwZW9mKG1hbmlmZXN0
LmVsYXBzZWRUaW1lKSwgJ251bWJlcicpOworICAgICAgICAgICAgZGVsZXRlIG1hbmlmZXN0LmVs
YXBzZWRUaW1lOworCisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG1hbmlmZXN0LCB7Cisg
ICAgICAgICAgICAgICAgc2l0ZVRpdGxlOiBUZXN0U2VydmVyLnRlc3RDb25maWcoKS5zaXRlVGl0
bGUsCisgICAgICAgICAgICAgICAgYWxsOiB7fSwKKyAgICAgICAgICAgICAgICBidWdUcmFja2Vy
czoge30sCisgICAgICAgICAgICAgICAgYnVpbGRlcnM6IHt9LAorICAgICAgICAgICAgICAgIGRh
c2hib2FyZDoge30sCisgICAgICAgICAgICAgICAgZGFzaGJvYXJkczoge30sCisgICAgICAgICAg
ICAgICAgbWV0cmljczoge30sCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzOiB7fSwKKyAg
ICAgICAgICAgICAgICB0ZXN0czoge30sCisgICAgICAgICAgICAgICAgc3RhdHVzOiAnT0snCisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSkuY2F0Y2goZG9u
ZSk7CisgICAgfSk7CisKKyAgICBjb25zdCBidWd6aWxsYURhdGEgPSB7aWQ6IDEsIG5hbWU6ICdC
dWd6aWxsYScsIGJ1Z191cmw6ICdodHRwczovL3dlYmtpdC5vcmcvYi8kbnVtYmVyJywgbmV3X2J1
Z191cmw6ICdodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8nfTsKKyAgICBjb25zdCByYWRhckRhdGEg
PSB7aWQ6IDIsIG5hbWU6ICdSYWRhcid9OworCisgICAgaXQoInNob3VsZCBnZW5lcmF0ZSBtYW5p
ZmVzdCB3aXRoIGJ1ZyB0cmFja2VycyB3aXRob3V0IHJlcG9zaXRvcmllcyIsIGZ1bmN0aW9uIChk
b25lKSB7CisgICAgICAgIFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5jb25uZWN0KCk7CisgICAgICAg
IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKS5pbnNlcnQoJ2J1Z190cmFja2VycycsIGJ1Z3ppbGxhRGF0
YSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1v
dGVBUEkoKS5mZXRjaEpTT04oJy9hcGkvbWFuaWZlc3QnKTsKKyAgICAgICAgfSkudGhlbihmdW5j
dGlvbiAoY29udGVudCkgeworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50LmJ1
Z1RyYWNrZXJzLCB7MToge25hbWU6ICdCdWd6aWxsYScsIGJ1Z1VybDogJ2h0dHBzOi8vd2Via2l0
Lm9yZy9iLyRudW1iZXInLAorICAgICAgICAgICAgICAgIG5ld0J1Z1VybDogJ2h0dHBzOi8vYnVn
cy53ZWJraXQub3JnLycsIHJlcG9zaXRvcmllczogbnVsbH19KTsKKworICAgICAgICAgICAgbGV0
IG1hbmlmZXN0ID0gTWFuaWZlc3QuX2RpZEZldGNoTWFuaWZlc3QoY29udGVudCk7CisgICAgICAg
ICAgICBsZXQgdHJhY2tlciA9IEJ1Z1RyYWNrZXIuZmluZEJ5SWQoMSk7CisgICAgICAgICAgICBh
c3NlcnQodHJhY2tlcik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHJhY2tlci5uYW1lKCks
ICdCdWd6aWxsYScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHRyYWNrZXIuYnVnVXJsKDEy
MyksICdodHRwczovL3dlYmtpdC5vcmcvYi8xMjMnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bCh0cmFja2VyLm5ld0J1Z1VybCgpLCAnaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvJyk7CisKKyAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSkuY2F0Y2goZG9uZSk7CisgICAgfSk7CisKKyAg
ICBpdCgic2hvdWxkIGdlbmVyYXRlIG1hbmlmZXN0IHdpdGggYnVnIHRyYWNrZXJzIGFuZCByZXBv
c2l0b3JpZXMiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICBsZXQgZGIgPSBUZXN0U2VydmVy
LmRhdGFiYXNlKCk7CisgICAgICAgIGRiLmNvbm5lY3QoKTsKKyAgICAgICAgUHJvbWlzZS5hbGwo
WworICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWdfdHJhY2tlcnMnLCBidWd6aWxsYURhdGEpLAor
ICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWdfdHJhY2tlcnMnLCByYWRhckRhdGEpLAorICAgICAg
ICAgICAgZGIuaW5zZXJ0KCdyZXBvc2l0b3JpZXMnLCB7aWQ6IDExLCBuYW1lOiAnV2ViS2l0Jywg
dXJsOiAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvJDEnfSksCisgICAgICAgICAgICBkYi5pbnNl
cnQoJ3JlcG9zaXRvcmllcycsIHtpZDogOSwgbmFtZTogJ09TIFgnfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ3JlcG9zaXRvcmllcycsIHtpZDogMjIsIG5hbWU6ICdpT1MnfSksCisgICAgICAg
ICAgICBkYi5pbnNlcnQoJ3RyYWNrZXJfcmVwb3NpdG9yaWVzJywge3RyYWNrZXI6IGJ1Z3ppbGxh
RGF0YS5pZCwgcmVwb3NpdG9yeTogMTF9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndHJhY2tl
cl9yZXBvc2l0b3JpZXMnLCB7dHJhY2tlcjogcmFkYXJEYXRhLmlkLCByZXBvc2l0b3J5OiA5fSks
CisgICAgICAgICAgICBkYi5pbnNlcnQoJ3RyYWNrZXJfcmVwb3NpdG9yaWVzJywge3RyYWNrZXI6
IHJhZGFyRGF0YS5pZCwgcmVwb3NpdG9yeTogMjJ9KSwKKyAgICAgICAgXSkudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5mZXRjaEpT
T04oJy9hcGkvbWFuaWZlc3QnKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVudCkg
eworICAgICAgICAgICAgbGV0IG1hbmlmZXN0ID0gTWFuaWZlc3QuX2RpZEZldGNoTWFuaWZlc3Qo
Y29udGVudCk7CisKKyAgICAgICAgICAgIGxldCB3ZWJraXQgPSBSZXBvc2l0b3J5LmZpbmRCeUlk
KDExKTsKKyAgICAgICAgICAgIGFzc2VydCh3ZWJraXQpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHdlYmtpdC5uYW1lKCksICdXZWJLaXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbCh3
ZWJraXQudXJsRm9yUmV2aXNpb24oMTIzKSwgJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnLzEyMycp
OworCisgICAgICAgICAgICBsZXQgb3N4ID0gUmVwb3NpdG9yeS5maW5kQnlJZCg5KTsKKyAgICAg
ICAgICAgIGFzc2VydChvc3gpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeC5uYW1lKCks
ICdPUyBYJyk7CisKKyAgICAgICAgICAgIGxldCBpb3MgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKDIy
KTsKKyAgICAgICAgICAgIGFzc2VydChpb3MpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGlv
cy5uYW1lKCksICdpT1MnKTsKKworICAgICAgICAgICAgbGV0IHRyYWNrZXIgPSBCdWdUcmFja2Vy
LmZpbmRCeUlkKDEpOworICAgICAgICAgICAgYXNzZXJ0KHRyYWNrZXIpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHRyYWNrZXIubmFtZSgpLCAnQnVnemlsbGEnKTsKKyAgICAgICAgICAgIGFz
c2VydC5lcXVhbCh0cmFja2VyLmJ1Z1VybCgxMjMpLCAnaHR0cHM6Ly93ZWJraXQub3JnL2IvMTIz
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwodHJhY2tlci5uZXdCdWdVcmwoKSwgJ2h0dHBz
Oi8vYnVncy53ZWJraXQub3JnLycpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh0cmFj
a2VyLnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7CisKKyAgICAgICAgICAgIHRyYWNrZXIgPSBC
dWdUcmFja2VyLmZpbmRCeUlkKDIpOworICAgICAgICAgICAgYXNzZXJ0KHRyYWNrZXIpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHRyYWNrZXIubmFtZSgpLCAnUmFkYXInKTsKKyAgICAgICAg
ICAgIGFzc2VydC5kZWVwRXF1YWwoUmVwb3NpdG9yeS5zb3J0QnlOYW1lKHRyYWNrZXIucmVwb3Np
dG9yaWVzKCkpLCBbb3N4LCBpb3NdKTsKKworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9
KS5jYXRjaChkb25lKTsKKyAgICB9KTsKKworICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZl
c3Qgd2l0aCBidWlsZGVycyIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGxldCBkYiA9IFRl
c3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgZGIuY29ubmVjdCgpOworICAgICAgICBQcm9t
aXNlLmFsbChbCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkZXJzJywge2lkOiAxLCBuYW1l
OiAnU29tZUJ1aWxkZXInLCBwYXNzd29yZF9oYXNoOiAnYScsCisgICAgICAgICAgICAgICAgYnVp
bGRfdXJsOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzLyRidWlsZGVyTmFtZS9i
dWlsZC8kYnVpbGROdW1iZXInfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkZXJzJywg
e2lkOiAyLCBuYW1lOiAnU29tZU90aGVyQnVpbGRlcicsIHBhc3N3b3JkX2hhc2g6ICdiJ30pCisg
ICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIFRlc3RTZXJ2
ZXIucmVtb3RlQVBJKCkuZmV0Y2hKU09OKCcvYXBpL21hbmlmZXN0Jyk7CisgICAgICAgIH0pLnRo
ZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29u
dGVudC5idWlsZGVycywgeworICAgICAgICAgICAgICAgICcxJzoge25hbWU6ICdTb21lQnVpbGRl
cicsIGJ1aWxkVXJsOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL2J1aWxkZXJzLyRidWlsZGVy
TmFtZS9idWlsZC8kYnVpbGROdW1iZXInfSwKKyAgICAgICAgICAgICAgICAnMic6IHtuYW1lOiAn
U29tZU90aGVyQnVpbGRlcicsIGJ1aWxkVXJsOiBudWxsfQorICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGxldCBtYW5pZmVzdCA9IE1hbmlmZXN0Ll9kaWRGZXRjaE1hbmlmZXN0KGNvbnRl
bnQpOworCisgICAgICAgICAgICBsZXQgYnVpbGRlciA9IEJ1aWxkZXIuZmluZEJ5SWQoMSk7Cisg
ICAgICAgICAgICBhc3NlcnQoYnVpbGRlcik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVp
bGRlci5uYW1lKCksICdTb21lQnVpbGRlcicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1
aWxkZXIudXJsRm9yQnVpbGQoMTIzKSwgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9idWlsZGVy
cy9Tb21lQnVpbGRlci9idWlsZC8xMjMnKTsKKworICAgICAgICAgICAgYnVpbGRlciA9IEJ1aWxk
ZXIuZmluZEJ5SWQoMik7CisgICAgICAgICAgICBhc3NlcnQoYnVpbGRlcik7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoYnVpbGRlci5uYW1lKCksICdTb21lT3RoZXJCdWlsZGVyJyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRlci51cmxGb3JCdWlsZCgxMjMpLCBudWxsKTsKKwor
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICB9KTsKKwor
ICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0aCB0ZXN0cywgbWV0cmljcywgYW5k
IHBsYXRmb3JtcyIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2
ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAgZGIuY29ubmVjdCgpOworICAgICAgICBQcm9taXNlLmFs
bChbCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAxLCBuYW1lOiAnU29tZVRl
c3QnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiAyLCBuYW1lOiAnU29t
ZU90aGVyVGVzdCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndGVzdHMnLCB7aWQ6IDMsIG5h
bWU6ICdDaGlsZFRlc3QnLCBwYXJlbnQ6IDF9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYWdn
cmVnYXRvcnMnLCB7aWQ6IDQsIG5hbWU6ICdUb3RhbCd9KSwKKyAgICAgICAgICAgIGRiLmluc2Vy
dCgndGVzdF9tZXRyaWNzJywge2lkOiA1LCB0ZXN0OiAxLCBuYW1lOiAnVGltZSd9KSwKKyAgICAg
ICAgICAgIGRiLmluc2VydCgndGVzdF9tZXRyaWNzJywge2lkOiA2LCB0ZXN0OiAyLCBuYW1lOiAn
VGltZScsIGFnZ3JlZ2F0b3I6IDR9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndGVzdF9tZXRy
aWNzJywge2lkOiA3LCB0ZXN0OiAyLCBuYW1lOiAnTWFsbG9jJywgYWdncmVnYXRvcjogNH0pLAor
ICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X21ldHJpY3MnLCB7aWQ6IDgsIHRlc3Q6IDMsIG5h
bWU6ICdUaW1lJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdwbGF0Zm9ybXMnLCB7aWQ6IDIz
LCBuYW1lOiAnaU9TIDkgaVBob25lIDVzJ30pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdwbGF0
Zm9ybXMnLCB7aWQ6IDQ2LCBuYW1lOiAnVHJ1bmsgTWF2ZXJpY2tzJ30pLAorICAgICAgICAgICAg
ZGIuaW5zZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge2lkOiAxMDEsIG1ldHJpYzogNSwgcGxh
dGZvcm06IDQ2LCB0eXBlOiAnY3VycmVudCd9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgndGVz
dF9jb25maWd1cmF0aW9ucycsIHtpZDogMTAyLCBtZXRyaWM6IDYsIHBsYXRmb3JtOiA0NiwgdHlw
ZTogJ2N1cnJlbnQnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlv
bnMnLCB7aWQ6IDEwMywgbWV0cmljOiA3LCBwbGF0Zm9ybTogNDYsIHR5cGU6ICdjdXJyZW50J30p
LAorICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywge2lkOiAxMDQs
IG1ldHJpYzogOCwgcGxhdGZvcm06IDQ2LCB0eXBlOiAnY3VycmVudCd9KSwKKyAgICAgICAgICAg
IGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtpZDogMTA1LCBtZXRyaWM6IDUsIHBs
YXRmb3JtOiAyMywgdHlwZTogJ2N1cnJlbnQnfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rl
c3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDEwNiwgbWV0cmljOiA1LCBwbGF0Zm9ybTogMjMsIHR5
cGU6ICdiYXNlbGluZSd9KSwKKyAgICAgICAgXSkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5mZXRjaEpTT04oJy9hcGkvbWFuaWZl
c3QnKTsKKyAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVudCkgeworICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjb250ZW50LnRlc3RzLCB7CisgICAgICAgICAgICAgICAgIjEiOiB7
Im5hbWUiOiAiU29tZVRlc3QiLCAicGFyZW50SWQiOiBudWxsLCAidXJsIjogbnVsbH0sCisgICAg
ICAgICAgICAgICAgIjIiOiB7Im5hbWUiOiAiU29tZU90aGVyVGVzdCIsICJwYXJlbnRJZCI6IG51
bGwsICJ1cmwiOiBudWxsfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsibmFtZSI6ICJDaGlsZFRl
c3QiLCAicGFyZW50SWQiOiAiMSIsICJ1cmwiOiBudWxsfSwKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnQubWV0cmljcywgeworICAgICAgICAg
ICAgICAgICc1Jzoge25hbWU6ICdUaW1lJywgdGVzdDogJzEnLCBhZ2dyZWdhdG9yOiBudWxsfSwK
KyAgICAgICAgICAgICAgICAnNic6IHtuYW1lOiAnVGltZScsIHRlc3Q6ICcyJywgYWdncmVnYXRv
cjogJ1RvdGFsJ30sCisgICAgICAgICAgICAgICAgJzcnOiB7bmFtZTogJ01hbGxvYycsIHRlc3Q6
ICcyJywgYWdncmVnYXRvcjogJ1RvdGFsJ30sCisgICAgICAgICAgICAgICAgJzgnOiB7bmFtZTog
J1RpbWUnLCB0ZXN0OiAnMycsIGFnZ3JlZ2F0b3I6IG51bGx9LAorICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIGxldCBtYW5pZmVzdCA9IE1hbmlmZXN0Ll9kaWRGZXRjaE1hbmlmZXN0KGNv
bnRlbnQpOworCisgICAgICAgICAgICBsZXQgc29tZVRlc3QgPSBUZXN0LmZpbmRCeUlkKDEpOwor
ICAgICAgICAgICAgbGV0IHNvbWVUZXN0TWV0cmljID0gTWV0cmljLmZpbmRCeUlkKDUpOworICAg
ICAgICAgICAgbGV0IHNvbWVPdGhlclRlc3QgPSBUZXN0LmZpbmRCeUlkKDIpOworICAgICAgICAg
ICAgbGV0IHNvbWVPdGhlclRlc3RUaW1lID0gTWV0cmljLmZpbmRCeUlkKDYpOworICAgICAgICAg
ICAgbGV0IHNvbWVPdGhlclRlc3RNYWxsb2MgPSBNZXRyaWMuZmluZEJ5SWQoNyk7CisgICAgICAg
ICAgICBsZXQgY2hpbGRUZXN0ID0gVGVzdC5maW5kQnlJZCgzKTsKKyAgICAgICAgICAgIGxldCBj
aGlsZFRlc3RNZXRyaWMgPSBNZXRyaWMuZmluZEJ5SWQoOCk7CisgICAgICAgICAgICBsZXQgaW9z
OWlwaG9uZTVzID0gUGxhdGZvcm0uZmluZEJ5SWQoMjMpOworICAgICAgICAgICAgbGV0IG1hdmVy
aWNrcyA9IFBsYXRmb3JtLmZpbmRCeUlkKDQ2KTsKKyAgICAgICAgICAgIGFzc2VydChzb21lVGVz
dCk7CisgICAgICAgICAgICBhc3NlcnQoc29tZVRlc3RNZXRyaWMpOworICAgICAgICAgICAgYXNz
ZXJ0KHNvbWVPdGhlclRlc3QpOworICAgICAgICAgICAgYXNzZXJ0KHNvbWVPdGhlclRlc3RUaW1l
KTsKKyAgICAgICAgICAgIGFzc2VydChzb21lT3RoZXJUZXN0TWFsbG9jKTsKKyAgICAgICAgICAg
IGFzc2VydChjaGlsZFRlc3QpOworICAgICAgICAgICAgYXNzZXJ0KGNoaWxkVGVzdE1ldHJpYyk7
CisgICAgICAgICAgICBhc3NlcnQoaW9zOWlwaG9uZTVzKTsKKyAgICAgICAgICAgIGFzc2VydCht
YXZlcmlja3MpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwobWF2ZXJpY2tzLm5hbWUoKSwg
J1RydW5rIE1hdmVyaWNrcycpOworICAgICAgICAgICAgYXNzZXJ0KG1hdmVyaWNrcy5oYXNUZXN0
KHNvbWVUZXN0KSk7CisgICAgICAgICAgICBhc3NlcnQobWF2ZXJpY2tzLmhhc1Rlc3Qoc29tZU90
aGVyVGVzdCkpOworICAgICAgICAgICAgYXNzZXJ0KG1hdmVyaWNrcy5oYXNUZXN0KGNoaWxkVGVz
dCkpOworICAgICAgICAgICAgYXNzZXJ0KG1hdmVyaWNrcy5oYXNNZXRyaWMoc29tZVRlc3RNZXRy
aWMpKTsKKyAgICAgICAgICAgIGFzc2VydChtYXZlcmlja3MuaGFzTWV0cmljKHNvbWVPdGhlclRl
c3RUaW1lKSk7CisgICAgICAgICAgICBhc3NlcnQobWF2ZXJpY2tzLmhhc01ldHJpYyhzb21lT3Ro
ZXJUZXN0TWFsbG9jKSk7CisgICAgICAgICAgICBhc3NlcnQobWF2ZXJpY2tzLmhhc01ldHJpYyhj
aGlsZFRlc3RNZXRyaWMpKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGlvczlpcGhvbmU1
cy5uYW1lKCksICdpT1MgOSBpUGhvbmUgNXMnKTsKKyAgICAgICAgICAgIGFzc2VydChpb3M5aXBo
b25lNXMuaGFzVGVzdChzb21lVGVzdCkpOworICAgICAgICAgICAgYXNzZXJ0KCFpb3M5aXBob25l
NXMuaGFzVGVzdChzb21lT3RoZXJUZXN0KSk7CisgICAgICAgICAgICBhc3NlcnQoIWlvczlpcGhv
bmU1cy5oYXNUZXN0KGNoaWxkVGVzdCkpOworICAgICAgICAgICAgYXNzZXJ0KGlvczlpcGhvbmU1
cy5oYXNNZXRyaWMoc29tZVRlc3RNZXRyaWMpKTsKKyAgICAgICAgICAgIGFzc2VydCghaW9zOWlw
aG9uZTVzLmhhc01ldHJpYyhzb21lT3RoZXJUZXN0VGltZSkpOworICAgICAgICAgICAgYXNzZXJ0
KCFpb3M5aXBob25lNXMuaGFzTWV0cmljKHNvbWVPdGhlclRlc3RNYWxsb2MpKTsKKyAgICAgICAg
ICAgIGFzc2VydCghaW9zOWlwaG9uZTVzLmhhc01ldHJpYyhjaGlsZFRlc3RNZXRyaWMpKTsKKwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVUZXN0Lm5hbWUoKSwgJ1NvbWVUZXN0Jyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZVRlc3QucGFyZW50VGVzdCgpLCBudWxsKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc29tZVRlc3QucGF0aCgpLCBbc29tZVRlc3RdKTsK
KyAgICAgICAgICAgIGFzc2VydCghc29tZVRlc3Qub25seUNvbnRhaW5zU2luZ2xlTWV0cmljKCkp
OworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChzb21lVGVzdC5jaGlsZFRlc3RzKCksIFtj
aGlsZFRlc3RdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoc29tZVRlc3QubWV0cmlj
cygpLCBbc29tZVRlc3RNZXRyaWNdKTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVU
ZXN0TWV0cmljLm5hbWUoKSwgJ1RpbWUnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21l
VGVzdE1ldHJpYy5hZ2dyZWdhdG9yTmFtZSgpLCBudWxsKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChzb21lVGVzdE1ldHJpYy5sYWJlbCgpLCAnVGltZScpOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChzb21lVGVzdE1ldHJpYy5jaGlsZE1ldHJpY3MoKSwgY2hpbGRUZXN0Lm1ldHJp
Y3MoKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZVRlc3RNZXRyaWMuZnVsbE5hbWUo
KSwgJ1NvbWVUZXN0IDogVGltZScpOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZU90
aGVyVGVzdC5uYW1lKCksICdTb21lT3RoZXJUZXN0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoc29tZU90aGVyVGVzdC5wYXJlbnRUZXN0KCksIG51bGwpOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChzb21lT3RoZXJUZXN0LnBhdGgoKSwgW3NvbWVPdGhlclRlc3RdKTsKKyAgICAg
ICAgICAgIGFzc2VydCghc29tZU90aGVyVGVzdC5vbmx5Q29udGFpbnNTaW5nbGVNZXRyaWMoKSk7
CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHNvbWVPdGhlclRlc3QuY2hpbGRUZXN0cygp
LCBbXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKCku
bGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lT3RoZXJUZXN0Lm1ldHJp
Y3MoKVswXS5uYW1lKCksICdUaW1lJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc29tZU90
aGVyVGVzdC5tZXRyaWNzKClbMF0uYWdncmVnYXRvck5hbWUoKSwgJ1RvdGFsJyk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClbMF0ubGFiZWwoKSwgJ1Rp
bWUgOiBUb3RhbCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubWV0
cmljcygpWzBdLmNoaWxkTWV0cmljcygpLmxlbmd0aCwgMCk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc29tZU90aGVyVGVzdC5tZXRyaWNzKClbMF0uZnVsbE5hbWUoKSwgJ1NvbWVPdGhlclRl
c3QgOiBUaW1lIDogVG90YWwnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lT3RoZXJU
ZXN0Lm1ldHJpY3MoKVsxXS5uYW1lKCksICdNYWxsb2MnKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChzb21lT3RoZXJUZXN0Lm1ldHJpY3MoKVsxXS5hZ2dyZWdhdG9yTmFtZSgpLCAnVG90YWwn
KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21lT3RoZXJUZXN0Lm1ldHJpY3MoKVsxXS5s
YWJlbCgpLCAnTWFsbG9jIDogVG90YWwnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzb21l
T3RoZXJUZXN0Lm1ldHJpY3MoKVsxXS5jaGlsZE1ldHJpY3MoKS5sZW5ndGgsIDApOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHNvbWVPdGhlclRlc3QubWV0cmljcygpWzFdLmZ1bGxOYW1lKCks
ICdTb21lT3RoZXJUZXN0IDogTWFsbG9jIDogVG90YWwnKTsKKworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNoaWxkVGVzdC5uYW1lKCksICdDaGlsZFRlc3QnKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjaGlsZFRlc3QucGFyZW50VGVzdCgpLCBzb21lVGVzdCk7CisgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKGNoaWxkVGVzdC5wYXRoKCksIFtzb21lVGVzdCwgY2hpbGRUZXN0XSk7
CisgICAgICAgICAgICBhc3NlcnQoY2hpbGRUZXN0Lm9ubHlDb250YWluc1NpbmdsZU1ldHJpYygp
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY2hpbGRUZXN0LmNoaWxkVGVzdHMoKSwg
W10pOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNoaWxkVGVzdC5tZXRyaWNzKCkubGVuZ3Ro
LCAxKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjaGlsZFRlc3QubWV0cmljcygpWzBdLmxh
YmVsKCksICdUaW1lJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY2hpbGRUZXN0Lm1ldHJp
Y3MoKVswXS5mdWxsTmFtZSgpLCAnU29tZVRlc3QgXHUyMjBCIENoaWxkVGVzdCA6IFRpbWUnKTsK
KworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9KS5jYXRjaChkb25lKTsKKyAgICB9KTsK
KworfSk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291
cmNlcy90ZXN0LXNlcnZlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy90ZXN0LXNlcnZlci5qcwkocmV2aXNpb24gMTk4NjU2
KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVz
dC1zZXJ2ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbGV0IFRlc3RTZXJ2
ZXIgPSAobmV3IGNsYXNzIFRlc3RTZXJ2ZXIgewogCiAgICAgc3RhcnQoKQogICAgIHsgICAgICAg
IAotICAgICAgICBsZXQgdGVzdENvbmZpZ0NvbnRlbnQgPSB0aGlzLl9jb25zdHJ1Y3RUZXN0Q29u
ZmlnKHRoaXMuX2RhdGFEaXJlY3RvcnkpOworICAgICAgICBsZXQgdGVzdENvbmZpZ0NvbnRlbnQg
PSB0aGlzLnRlc3RDb25maWcoKTsKICAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0aGlzLl90ZXN0
Q29uZmlnUGF0aCwgSlNPTi5zdHJpbmdpZnkodGVzdENvbmZpZ0NvbnRlbnQsIG51bGwsICcgICAg
JykpOwogCiAgICAgICAgIHRoaXMuX2Vuc3VyZVRlc3REYXRhYmFzZSgpOwpAQCAtNjEsMTMgKzYx
LDEzIEBAIGxldCBUZXN0U2VydmVyID0gKG5ldyBjbGFzcyBUZXN0U2VydmVyIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2RhdGFiYXNlOwogICAgIH0KIAotICAgIF9jb25zdHJ1Y3RUZXN0Q29uZmln
KGRhdGFEaXJlY3RvcnkpCisgICAgdGVzdENvbmZpZygpCiAgICAgewogICAgICAgICByZXR1cm4g
ewogICAgICAgICAgICAgJ3NpdGVUaXRsZSc6ICdUZXN0IERhc2hib2FyZCcsCiAgICAgICAgICAg
ICAnZGVidWcnOiB0cnVlLAogICAgICAgICAgICAgJ2pzb25DYWNoZU1heEFnZSc6IDYwMCwKLSAg
ICAgICAgICAgICdkYXRhRGlyZWN0b3J5JzogZGF0YURpcmVjdG9yeSwKKyAgICAgICAgICAgICdk
YXRhRGlyZWN0b3J5JzogQ29uZmlnLnZhbHVlKCdkYXRhRGlyZWN0b3J5JyksCiAgICAgICAgICAg
ICAnZGF0YWJhc2UnOiB7CiAgICAgICAgICAgICAgICAgJ2hvc3QnOiBDb25maWcudmFsdWUoJ2Rh
dGFiYXNlLmhvc3QnKSwKICAgICAgICAgICAgICAgICAncG9ydCc6IENvbmZpZy52YWx1ZSgnZGF0
YWJhc2UucG9ydCcpLApAQCAtODYsMTcgKzg2LDE0IEBAIGxldCBUZXN0U2VydmVyID0gKG5ldyBj
bGFzcyBUZXN0U2VydmVyIHsKIAogICAgIF9lbnN1cmVEYXRhRGlyZWN0b3J5KCkKICAgICB7Ci0K
ICAgICAgICAgbGV0IGJhY2t1cFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5fZGF0YURpcmVjdG9y
eSwgJy4uL29yaWdpbmFsLWRhdGEnKTsKICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGhpcy5f
ZGF0YURpcmVjdG9yeSkpIHsKICAgICAgICAgICAgIGFzc2VydC5vayghZnMuZXhpc3RzU3luYyhi
YWNrdXBQYXRoKSwgYEJvdGggJHt0aGlzLl9kYXRhRGlyZWN0b3J5fSBhbmQgJHtiYWNrdXBQYXRo
fSBleGlzdC4gQ2Fubm90IG1ha2UgYSBiYWNrdXAgb2YgZGF0YWApOwotICAgICAgICAgICAgZnMu
cmVuYW1lKHRoaXMuX2RhdGFEaXJlY3RvcnksIGJhY2t1cFBhdGgpOworICAgICAgICAgICAgZnMu
cmVuYW1lU3luYyh0aGlzLl9kYXRhRGlyZWN0b3J5LCBiYWNrdXBQYXRoKTsKICAgICAgICAgICAg
IHRoaXMuX2JhY2t1cERhdGFQYXRoID0gYmFja3VwUGF0aDsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGJhY2t1cFBhdGgpKSAvLyBBc3N1bWUgdGhpcyBp
cyBhIGJhY2t1cCBmcm9tIHRoZSBsYXN0IGZhaWxlZCBydW4KLSAgICAgICAgICAgICAgICB0aGlz
Ll9iYWNrdXBEYXRhUGF0aCA9IGJhY2t1cFBhdGg7Ci0gICAgICAgICAgICBmcy5ta2RpclN5bmMo
dGhpcy5fZGF0YURpcmVjdG9yeSwgMG83NTUpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBp
ZiAoZnMuZXhpc3RzU3luYyhiYWNrdXBQYXRoKSkgLy8gQXNzdW1lIHRoaXMgaXMgYSBiYWNrdXAg
ZnJvbSB0aGUgbGFzdCBmYWlsZWQgcnVuCisgICAgICAgICAgICB0aGlzLl9iYWNrdXBEYXRhUGF0
aCA9IGJhY2t1cFBhdGg7CisgICAgICAgIGZzLm1rZGlyU3luYyh0aGlzLl9kYXRhRGlyZWN0b3J5
LCAwbzc1NSk7CiAgICAgfQogCiAgICAgX3Jlc3RvcmVEYXRhRGlyZWN0b3J5KCkKQEAgLTEwNiw2
ICsxMDMsMTMgQEAgbGV0IFRlc3RTZXJ2ZXIgPSAobmV3IGNsYXNzIFRlc3RTZXJ2ZXIgewogICAg
ICAgICAgICAgZnMucmVuYW1lKHRoaXMuX2JhY2t1cERhdGFQYXRoLCB0aGlzLl9kYXRhRGlyZWN0
b3J5KTsKICAgICB9CiAKKyAgICBjbGVhbkRhdGFEaXJlY3RvcnkoKQorICAgIHsKKyAgICAgICAg
bGV0IGZpbGVMaXN0ID0gZnMucmVhZGRpclN5bmModGhpcy5fZGF0YURpcmVjdG9yeSk7CisgICAg
ICAgIGZvciAobGV0IGZpbGVuYW1lIG9mIGZpbGVMaXN0KQorICAgICAgICAgICAgZnMudW5saW5r
U3luYyhwYXRoLnJlc29sdmUodGhpcy5fZGF0YURpcmVjdG9yeSwgZmlsZW5hbWUpKTsKKyAgICB9
CisKICAgICBfZW5zdXJlVGVzdERhdGFiYXNlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2V4ZWN1
dGVQZ3NxbENvbW1hbmQoJ2Ryb3BkYicpOwpAQCAtMjA2LDIzICsyMTAsMjggQEAgbGV0IFRlc3RT
ZXJ2ZXIgPSAobmV3IGNsYXNzIFRlc3RTZXJ2ZXIgewogICAgICAgICB9CiAgICAgICAgIHJlc29s
dmUoKTsKICAgICB9Ci19KTsKIAotCi1iZWZvcmUoZnVuY3Rpb24gKCkgewotICAgIHRoaXMudGlt
ZW91dCg1MDAwKTsKLSAgICByZXR1cm4gVGVzdFNlcnZlci5zdGFydCgpOwotfSk7Ci0KLWJlZm9y
ZUVhY2goZnVuY3Rpb24gKCkgewotICAgIHRoaXMudGltZW91dCg1MDAwKTsKLSAgICByZXR1cm4g
VGVzdFNlcnZlci5pbml0RGF0YWJhc2UoKTsKKyAgICBpbmplY3QoKQorICAgIHsKKyAgICAgICAg
bGV0IHNlbGYgPSB0aGlzOworICAgICAgICBiZWZvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdGhpcy50aW1lb3V0KDUwMDApOworICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RhcnQoKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0aGlzLnRpbWVvdXQoMTAwMDApOworICAgICAgICAgICAgc2VsZi5pbml0RGF0YWJhc2Uo
KTsKKyAgICAgICAgICAgIHNlbGYuY2xlYW5EYXRhRGlyZWN0b3J5KCk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGFmdGVyKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMudGltZW91dCg1
MDAwKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnN0b3AoKTsKKyAgICAgICAgfSk7CisgICAg
fQogfSk7CiAKLWFmdGVyKGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLnRpbWVvdXQoNTAwMCk7Ci0g
ICAgcmV0dXJuIFRlc3RTZXJ2ZXIuc3RvcCgpOwotfSk7CiAKIGlmICh0eXBlb2YgbW9kdWxlICE9
ICd1bmRlZmluZWQnKQogICAgIG1vZHVsZS5leHBvcnRzID0gVGVzdFNlcnZlcjsKSW5kZXg6IFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90ZXN0cy9hZG1pbi1yZWdlbmVyYXRlLW1hbmlmZXN0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90ZXN0cy9hZG1pbi1yZWdl
bmVyYXRlLW1hbmlmZXN0LmpzCShyZXZpc2lvbiAxOTg2NTYpCisrKyBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdGVzdHMvYWRtaW4tcmVnZW5lcmF0ZS1tYW5pZmVzdC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSwxMjkgKzAsMCBAQAotZGVzY3JpYmUoIi9hZG1pbi9yZWdlbmVyYXRlLW1hbmlmZXN0
IiwgZnVuY3Rpb24gKCkgewotCi0gICAgaXQoInNob3VsZCBnZW5lcmF0ZSBhbiBlbXB0eSBtYW5p
ZmVzdCB3aGVuIGRhdGFiYXNlIGlzIGVtcHR5IiwgZnVuY3Rpb24gKCkgewotICAgICAgICBodHRw
R2V0KCcvYWRtaW4vcmVnZW5lcmF0ZS1tYW5pZmVzdCcsIGZ1bmN0aW9uIChyZXNwb25zZSkgewot
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7Ci0gICAg
ICAgICAgICBodHRwR2V0KCcvZGF0YS9tYW5pZmVzdCcsIGZ1bmN0aW9uIChyZXNwb25zZSkgewot
ICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDApOwot
ICAgICAgICAgICAgICAgIHZhciBtYW5pZmVzdCA9IEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9u
c2VUZXh0KTsKLSAgICAgICAgICAgICAgICBkZWxldGUgbWFuaWZlc3QuZGVmYXVsdERhc2hib2Fy
ZDsKLSAgICAgICAgICAgICAgICBkZWxldGUgbWFuaWZlc3QuZGFzaGJvYXJkczsKLSAgICAgICAg
ICAgICAgICBkZWxldGUgbWFuaWZlc3QuZWxhcHNlZFRpbWU7Ci0gICAgICAgICAgICAgICAgZGVs
ZXRlIG1hbmlmZXN0LnNpdGVUaXRsZTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KG1hbmlmZXN0LCB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbDoge30sCi0gICAgICAgICAgICAg
ICAgICAgIGJ1Z1RyYWNrZXJzOiB7fSwKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlcnM6IHt9
LAotICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmQ6IHt9LAotICAgICAgICAgICAgICAgICAg
ICBtZXRyaWNzOiB7fSwKLSAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzOiB7fSwKLSAg
ICAgICAgICAgICAgICAgICAgdGVzdHM6IHt9fSk7Ci0gICAgICAgICAgICAgICAgbm90aWZ5RG9u
ZSgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQoInNo
b3VsZCBnZW5lcmF0ZSBtYW5pZmVzdCB3aXRoIGJ1ZyB0cmFja2VycyB3aXRob3V0IHJlcG9zaXRv
cmllcyIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcXVlcnlBbmRGZXRjaEFsbCgiSU5TRVJUIElO
VE8gYnVnX3RyYWNrZXJzICh0cmFja2VyX2lkLCB0cmFja2VyX25hbWUsIHRyYWNrZXJfbmV3X2J1
Z191cmwpIFZBTFVFUyIKLSAgICAgICAgICAgICsgIiAoMSwgJ0J1Z3ppbGxhJywgJ2J1Z3Mud2Vi
a2l0Lm9yZycpIiwgW10sIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGh0dHBHZXQoJy9hZG1p
bi9yZWdlbmVyYXRlLW1hbmlmZXN0JywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7Ci0gICAgICAgICAg
ICAgICAgaHR0cEdldCgnL2RhdGEvbWFuaWZlc3QnLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciBtYW5pZmVzdCA9IEpTT04ucGFyc2UocmVzcG9uc2Uu
cmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChtYW5p
ZmVzdFsnYnVnVHJhY2tlcnMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsxOiB7bmFtZTog
J0J1Z3ppbGxhJywgYnVnVXJsOiBudWxsLCBuZXdCdWdVcmw6ICdidWdzLndlYmtpdC5vcmcnLCBy
ZXBvc2l0b3JpZXM6IG51bGx9fSk7Ci0gICAgICAgICAgICAgICAgICAgIG5vdGlmeURvbmUoKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9
KTsKLQotICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0aCBidWcgdHJhY2tlcnMg
YW5kIHJlcG9zaXRvcmllcyIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcXVlcnlBbmRGZXRjaEFs
bCgiSU5TRVJUIElOVE8gcmVwb3NpdG9yaWVzIChyZXBvc2l0b3J5X2lkLCByZXBvc2l0b3J5X25h
bWUsIHJlcG9zaXRvcnlfdXJsLCByZXBvc2l0b3J5X2JsYW1lX3VybCkgVkFMVUVTIgotICAgICAg
ICAgICAgKyAiICgxLCAnV2ViS2l0JywgJ3RyYWMud2Via2l0Lm9yZycsIG51bGwpLCAoMiwgJ0No
cm9taXVtJywgbnVsbCwgJ1NvbWVCbGFtZVVSTCcpIiwgW10sIGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgIHF1ZXJ5QW5kRmV0Y2hBbGwoIklOU0VSVCBJTlRPIGJ1Z190cmFja2VycyAodHJhY2tl
cl9pZCwgdHJhY2tlcl9uYW1lKSBWQUxVRVMgKDMsICdCdWd6aWxsYScpLCAoNCwgJ0lzc3VlIFRy
YWNrZXInKSIsIFtdLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgcXVlcnlBbmRGZXRj
aEFsbCgiSU5TRVJUIElOVE8gdHJhY2tlcl9yZXBvc2l0b3JpZXMgKHRyYWNyZXBvX3RyYWNrZXIs
IHRyYWNyZXBvX3JlcG9zaXRvcnkpIFZBTFVFUyAoMywgMSksICg0LCAxKSwgKDQsIDIpIiwgW10s
IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgaHR0cEdldCgnL2FkbWluL3JlZ2Vu
ZXJhdGUtbWFuaWZlc3QnLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZS5zdGF0dXNDb2RlLCAyMDApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaHR0cEdldCgnL2RhdGEvbWFuaWZlc3QnLCBmdW5jdGlvbiAocmVzcG9u
c2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Uu
c3RhdHVzQ29kZSwgMjAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFuaWZl
c3QgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChtYW5pZmVzdFsncmVwb3NpdG9yaWVzJ10sIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTogeyBuYW1lOiAnV2ViS2l0JywgdXJs
OiAndHJhYy53ZWJraXQub3JnJywgYmxhbWVVcmw6IG51bGwsIGhhc1JlcG9ydGVkQ29tbWl0czog
ZmFsc2UgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjogeyBuYW1lOiAnQ2hy
b21pdW0nLCB1cmw6IG51bGwsIGJsYW1lVXJsOiAnU29tZUJsYW1lVVJMJywgaGFzUmVwb3J0ZWRD
b21taXRzOiBmYWxzZSB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChtYW5pZmVzdFsnYnVnVHJhY2tl
cnMnXVszXSwge25hbWU6ICdCdWd6aWxsYScsIGJ1Z1VybDogbnVsbCwgbmV3QnVnVXJsOiBudWxs
LCByZXBvc2l0b3JpZXM6IFsnMSddfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChtYW5pZmVzdFsnYnVnVHJhY2tlcnMnXVs0XSwge25hbWU6ICdJc3N1ZSBU
cmFja2VyJywgYnVnVXJsOiBudWxsLCBuZXdCdWdVcmw6IG51bGwsIHJlcG9zaXRvcmllczogWycx
JywgJzInXX0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmeURvbmUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQot
ICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZlc3Qgd2l0aCBidWlsZGVycyIsIGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgcXVlcnlBbmRGZXRjaEFsbCgiSU5TRVJUIElOVE8gYnVpbGRlcnMgKGJ1
aWxkZXJfaWQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9wYXNzd29yZF9oYXNoLCBidWlsZGVyX2J1
aWxkX3VybCkgVkFMVUVTIgotICAgICAgICAgICAgKyAiICgxLCAnU29tZUJ1aWxkZXInLCAnYScs
IG51bGwpLCAoMiwgJ1NvbWVPdGhlckJ1aWxkZXInLCAnYicsICdTb21lVVJMJykiLCBbXSwgZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgaHR0cEdldCgnL2FkbWluL3JlZ2VuZXJhdGUtbWFuaWZl
c3QnLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cmVzcG9uc2Uuc3RhdHVzQ29kZSwgMjAwKTsKLSAgICAgICAgICAgICAgICBodHRwR2V0KCcvZGF0
YS9tYW5pZmVzdCcsIGZ1bmN0aW9uIChyZXNwb25zZSkgewotICAgICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMjAwKTsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIG1hbmlmZXN0ID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXNwb25zZVRleHQpOwotICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKG1hbmlmZXN0WydidWlsZGVycyddLCB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnMSc6IHsgbmFtZTogJ1NvbWVCdWlsZGVyJywgYnVp
bGRVcmw6IG51bGwgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICcyJzogeyBuYW1lOiAnU29t
ZU90aGVyQnVpbGRlcicsIGJ1aWxkVXJsOiAnU29tZVVSTCcgfQotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaXQoInNo
b3VsZCBnZW5lcmF0ZSBtYW5pZmVzdCB3aXRoIHRlc3RzIiwgZnVuY3Rpb24gKCkgewotICAgICAg
ICBxdWVyeUFuZEZldGNoQWxsKCJJTlNFUlQgSU5UTyB0ZXN0cyAodGVzdF9pZCwgdGVzdF9uYW1l
LCB0ZXN0X3BhcmVudCkgVkFMVUVTIgotICAgICAgICAgICAgKyAiICgxLCAnU29tZVRlc3QnLCBu
dWxsKSwgKDIsICdTb21lT3RoZXJUZXN0JywgbnVsbCksICAoMywgJ0NoaWxkVGVzdCcsIDEpIiwg
W10sIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGh0dHBHZXQoJy9hZG1pbi9yZWdlbmVyYXRl
LW1hbmlmZXN0JywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7Ci0gICAgICAgICAgICAgICAgaHR0cEdl
dCgnL2RhdGEvbWFuaWZlc3QnLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIwMCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBtYW5pZmVzdCA9IEpTT04ucGFyc2UocmVzcG9uc2UucmVzcG9uc2VUZXh0
KTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChtYW5pZmVzdFsndGVzdHMn
XSwgewotICAgICAgICAgICAgICAgICAgICAgICAgJzEnOiB7IG5hbWU6ICdTb21lVGVzdCcsIHVy
bDogbnVsbCwgcGFyZW50SWQ6IG51bGwgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICcyJzog
eyBuYW1lOiAnU29tZU90aGVyVGVzdCcsIHVybDogbnVsbCwgcGFyZW50SWQ6IG51bGwgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICczJzogeyBuYW1lOiAnQ2hpbGRUZXN0JywgdXJsOiBudWxs
LCBwYXJlbnRJZDogJzEnIH0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGl0KCJzaG91bGQgZ2VuZXJhdGUgbWFuaWZl
c3Qgd2l0aCBtZXRyaWNzIiwgZnVuY3Rpb24gKCkgewotICAgICAgICBxdWVyeUFuZEZldGNoQWxs
KCJJTlNFUlQgSU5UTyB0ZXN0cyAodGVzdF9pZCwgdGVzdF9uYW1lLCB0ZXN0X3BhcmVudCkgVkFM
VUVTIgotICAgICAgICAgICAgKyAiICgxLCAnU29tZVRlc3QnLCBudWxsKSwgKDIsICdTb21lT3Ro
ZXJUZXN0JywgbnVsbCksICAoMywgJ0NoaWxkVGVzdCcsIDEpIiwgW10sIGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgICAgIHF1ZXJ5QW5kRmV0Y2hBbGwoJ0lOU0VSVCBJTlRPIGFnZ3JlZ2F0b3JzIChh
Z2dyZWdhdG9yX2lkLCBhZ2dyZWdhdG9yX25hbWUsIGFnZ3JlZ2F0b3JfZGVmaW5pdGlvbikgdmFs
dWVzICg0LCAkMSwgJDIpJywKLSAgICAgICAgICAgICAgICBbJ1RvdGFsJywgJ3ZhbHVlcy5yZWR1
Y2UoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9KSddLCBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICAgICAgcXVlcnlBbmRGZXRjaEFsbCgiSU5TRVJUIElOVE8gdGVzdF9tZXRyaWNz
IChtZXRyaWNfaWQsIG1ldHJpY190ZXN0LCBtZXRyaWNfbmFtZSwgbWV0cmljX2FnZ3JlZ2F0b3Ip
IFZBTFVFUyIKLSAgICAgICAgICAgICAgICAgICAgKyAiICg1LCAxLCAnVGltZScsIG51bGwpLCAo
NiwgMiwgJ1RpbWUnLCA0KSwgKDcsIDIsICdNYWxsb2MnLCA0KSIsIFtdLCBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGh0dHBHZXQoJy9hZG1pbi9yZWdlbmVyYXRlLW1hbmlmZXN0
JywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMjAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGh0dHBHZXQoJy9kYXRhL21hbmlmZXN0JywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDIw
MCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hbmlmZXN0ID0gSlNPTi5wYXJz
ZShyZXNwb25zZS5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwobWFuaWZlc3RbJ21ldHJpY3MnXSwgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnNSc6IHsgbmFtZTogJ1RpbWUnLCB0ZXN0OiAnMScsIGFnZ3JlZ2F0b3I6
IG51bGwgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzYnOiB7IG5hbWU6ICdU
aW1lJywgdGVzdDogJzInLCBhZ2dyZWdhdG9yOiAnVG90YWwnIH0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc3JzogeyBuYW1lOiAnTWFsbG9jJywgdGVzdDogJzInLCBhZ2dyZWdh
dG9yOiAnVG90YWwnIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICAvLyBGSVhNRTogVGVzdCB0
aGUgZ2VuZXJhdGlvbiBvZiBhbGwgYW5kIGRhc2hib2FyZC4KLX0pOwpJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9kYXRhYmFzZS5qcwkocmV2aXNpb24gMTk4NjU2
KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSwxMyArNzksMTggQEAgY2xhc3MgRGF0YWJhc2UgewogfQogCiBsZXQg
dGFibGVUb1ByZWZpeE1hcCA9IHsKKyAgICAnYWdncmVnYXRvcnMnOiAnYWdncmVnYXRvcicsCiAg
ICAgJ2FuYWx5c2lzX3Rhc2tzJzogJ3Rhc2snLAogICAgICdhbmFseXNpc190ZXN0X2dyb3Vwcyc6
ICd0ZXN0Z3JvdXAnLAorICAgICdidWdfdHJhY2tlcnMnOiAndHJhY2tlcicsCiAgICAgJ2J1aWxk
X3RyaWdnZXJhYmxlcyc6ICd0cmlnZ2VyYWJsZScsCiAgICAgJ2J1aWxkX3JlcXVlc3RzJzogJ3Jl
cXVlc3QnLAorICAgICdidWlsZGVycyc6ICdidWlsZGVyJywKICAgICAnY29tbWl0cyc6ICdjb21t
aXQnLAorICAgICd0ZXN0X2NvbmZpZ3VyYXRpb25zJzogJ2NvbmZpZycsCiAgICAgJ3Rlc3RfbWV0
cmljcyc6ICdtZXRyaWMnLAogICAgICd0ZXN0cyc6ICd0ZXN0JywKKyAgICAndHJhY2tlcl9yZXBv
c2l0b3JpZXMnOiAndHJhY3JlcG8nLAogICAgICdwbGF0Zm9ybXMnOiAncGxhdGZvcm0nLAogICAg
ICdyZXBvc2l0b3JpZXMnOiAncmVwb3NpdG9yeScsCiAgICAgJ3Jvb3Rfc2V0cyc6ICdyb290c2V0
JywKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy92My1tb2RlbHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVs
cy5qcwkocmV2aXNpb24gMTk4NjU2KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xz
L2pzL3YzLW1vZGVscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTAsMTAgKzEwLDEyIEBAIGltcG9y
dEZyb21WMygnbW9kZWxzL2RhdGEtbW9kZWwuanMnLCAnRGEKIGltcG9ydEZyb21WMygnbW9kZWxz
L2RhdGEtbW9kZWwuanMnLCAnTGFiZWxlZE9iamVjdCcpOwogCiBpbXBvcnRGcm9tVjMoJ21vZGVs
cy9hbmFseXNpcy10YXNrLmpzJywgJ0FuYWx5c2lzVGFzaycpOworaW1wb3J0RnJvbVYzKCdtb2Rl
bHMvYnVnLXRyYWNrZXIuanMnLCAnQnVnVHJhY2tlcicpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMv
YnVpbGQtcmVxdWVzdC5qcycsICdCdWlsZFJlcXVlc3QnKTsKIGltcG9ydEZyb21WMygnbW9kZWxz
L2J1aWxkZXIuanMnLCAnQnVpbGQnKTsKIGltcG9ydEZyb21WMygnbW9kZWxzL2J1aWxkZXIuanMn
LCAnQnVpbGRlcicpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMvY29tbWl0LWxvZy5qcycsICdDb21t
aXRMb2cnKTsKK2ltcG9ydEZyb21WMygnbW9kZWxzL21hbmlmZXN0LmpzJywgJ01hbmlmZXN0Jyk7
CiBpbXBvcnRGcm9tVjMoJ21vZGVscy9tZWFzdXJlbWVudC1hZGFwdG9yLmpzJywgJ01lYXN1cmVt
ZW50QWRhcHRvcicpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMvbWVhc3VyZW1lbnQtY2x1c3Rlci5q
cycsICdNZWFzdXJlbWVudENsdXN0ZXInKTsKIGltcG9ydEZyb21WMygnbW9kZWxzL21lYXN1cmVt
ZW50LXNldC5qcycsICdNZWFzdXJlbWVudFNldCcpOwo=
</data>
<flag name="review"
          id="299280"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>