<?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>105080</bug_id>
          
          <creation_ts>2012-12-14 18:26:57 -0800</creation_ts>
          <short_desc>nrwt: merge the manager code into run_webkit_tests.py</short_desc>
          <delta_ts>2013-01-14 15:40:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>NRWT</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105078</dependson>
          <blocked>103824</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>792018</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-14 18:26:57 -0800</bug_when>
    <thetext>nrwt: merge the manager code into run_webkit_tests.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792019</commentid>
    <comment_count>1</comment_count>
      <attachid>179572</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-14 18:28:35 -0800</bug_when>
    <thetext>Created attachment 179572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792029</commentid>
    <comment_count>2</comment_count>
      <attachid>179572</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-14 19:06:49 -0800</bug_when>
    <thetext>Comment on attachment 179572
Patch

clearing r? ... I&apos;m not actually sure I think this is a good idea yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806687</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-14 15:40:07 -0800</bug_when>
    <thetext>abandoning this for now ...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179572</attachid>
            <date>2012-12-14 18:28:35 -0800</date>
            <delta_ts>2012-12-14 19:06:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105080-20121214182554.patch</filename>
            <type>text/plain</type>
            <size>47633</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmY0YTMwMWY4ODBmODMyZDY3MzZkYzQ0NjFhMDQyYzFk
MzA2YTc5OC4uOWNlZTYzZjNhYjUwZmNhNDA2MDBjYzBiZjhlMjQyNzcxOTk0NGM1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU4
IEBACiAyMDEyLTEyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IG1lcmdlIHRoZSBtYW5hZ2VyIGNvZGUgaW50byBydW5fd2Via2l0X3Rlc3Rz
LnB5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUw
ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZnRl
ciBhbGwgdGhlIGNsZWFudXAgZm9yIHRoZSByZXN1bHQgY2xhc3NlcywgbWFuYWdlci5weSB3YXMg
bXVjaAorICAgICAgICBzbWFsbGVyIGFuZCBvbmx5IGNvbnRhaW5lZCB0aGUgTWFuYWdlciBjbGFz
cywgd2hpY2ggaXMgb25seSBldmVyCisgICAgICAgIHVzZWQgZnJvbSBydW5fd2Via2l0X3Rlc3Rz
LnB5IGFuZCBpcyBhIGNvbmNlcHQgdGhhdCBzaG91bGQgYmUKKyAgICAgICAgbW9zdGx5IGdsb3Nz
ZWQgb3Zlci4gVGhpcyBwYXRjaCBtZXJnZXMgdGhlIHR3byBtb2R1bGVzOyBzdWJzZXF1ZW50Cisg
ICAgICAgIHBhdGNoZXMgbWF5IHJlZmFjdG9yL2NsZWFuIHVwL3JlbW92ZSBldmVuIG1vcmUgb2Yg
dGhlIE1hbmFnZXIgY29kZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weTogUmVt
b3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5OgorICAgICAgICAocnVuKToKKyAgICAgICAgKE1hbmFnZXIpOgorICAgICAgICAo
TWFuYWdlci5mb3IpOgorICAgICAgICAoTWFuYWdlci5fX2luaXRfXyk6CisgICAgICAgIChNYW5h
Z2VyLl9jb2xsZWN0X3Rlc3RzKToKKyAgICAgICAgKE1hbmFnZXIuX2lzX2h0dHBfdGVzdCk6Cisg
ICAgICAgIChNYW5hZ2VyLl9pc193ZWJzb2NrZXRfdGVzdCk6CisgICAgICAgIChNYW5hZ2VyLl9o
dHRwX3Rlc3RzKToKKyAgICAgICAgKE1hbmFnZXIuX2lzX3BlcmZfdGVzdCk6CisgICAgICAgIChN
YW5hZ2VyLl9wcmVwYXJlX2xpc3RzKToKKyAgICAgICAgKE1hbmFnZXIuX3Rlc3RfaW5wdXRfZm9y
X2ZpbGUpOgorICAgICAgICAoTWFuYWdlci5fdGVzdF9yZXF1aXJlc19sb2NrKToKKyAgICAgICAg
KE1hbmFnZXIuX3Rlc3RfaXNfc2xvdyk6CisgICAgICAgIChNYW5hZ2VyLm5lZWRzX3NlcnZlcnMp
OgorICAgICAgICAoTWFuYWdlci5fc2V0X3VwX3J1bik6CisgICAgICAgIChNYW5hZ2VyLnJ1bik6
CisgICAgICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMpOgorICAgICAgICAoTWFuYWdlci5fY2xlYW5f
dXBfcnVuKToKKyAgICAgICAgKE1hbmFnZXIuX2xvb2tfZm9yX25ld19jcmFzaF9sb2dzKToKKyAg
ICAgICAgKE1hbmFnZXIuX2Nsb2JiZXJfb2xkX3Jlc3VsdHMpOgorICAgICAgICAoTWFuYWdlci5f
dGVzdHNfdG9fcmV0cnkpOgorICAgICAgICAoTWFuYWdlci5fdXBsb2FkX2pzb25fZmlsZXMpOgor
ICAgICAgICAoTWFuYWdlci5fY29weV9yZXN1bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChNYW5h
Z2VyLl9zdGF0c190cmllKToKKyAgICAgICAgKE1hbmFnZXIuX3N0YXRzX3RyaWUuX3dvcmtlcl9u
dW1iZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OgorICAgICAgICAoRW5kVG9FbmRUZXN0LnBhcnNl
X2Z1bGxfcmVzdWx0cyk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X2V4Y2VwdGlvbl9oYW5kbGlu
Zyk6CisgICAgICAgIChNYW5hZ2VyVGVzdCk6CisgICAgICAgIChNYW5hZ2VyVGVzdC50ZXN0X25l
ZWRzX3NlcnZlcnMpOgorICAgICAgICAoTWFuYWdlclRlc3QudGVzdF9uZWVkc19zZXJ2ZXJzLmdl
dF9tYW5hZ2VyKToKKyAgICAgICAgKE1hbmFnZXJUZXN0LmludGVncmF0aW9uX3Rlc3RfbmVlZHNf
c2VydmVycyk6CisgICAgICAgIChNYW5hZ2VyVGVzdC5pbnRlZ3JhdGlvbl90ZXN0X25lZWRzX3Nl
cnZlcnMuZ2V0X21hbmFnZXIpOgorICAgICAgICAoTWFuYWdlclRlc3QudGVzdF9sb29rX2Zvcl9u
ZXdfY3Jhc2hfbG9ncyk6CisgICAgICAgIChNYW5hZ2VyVGVzdC50ZXN0X2xvb2tfZm9yX25ld19j
cmFzaF9sb2dzLmdldF9tYW5hZ2VyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weToKKworMjAxMi0xMi0xNCAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBucnd0OiBzaHVmZmxlIGNv
ZGUgYXJvdW5kIGZvciBjbGVhbnVwIGluIHJ1bl93ZWJraXRfdGVzdHMucHkKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTA3OAogCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBkYjdhZDc0Mjc4NGY5ZDBk
MTdhNTU0YjgzZGVlM2ZkZmE2ODFmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9tYW5hZ2VyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzY0ICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdo
dCAoQykgMjAxMCBHYWJvciBSYXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiCi1UaGUgTWFuYWdlciBy
dW5zIGEgc2VyaWVzIG9mIHRlc3RzIChUZXN0VHlwZSBpbnRlcmZhY2UpIGFnYWluc3QgYSBzZXQK
LW9mIHRlc3QgZmlsZXMuICBJZiBhIHRlc3QgZmlsZSBmYWlscyBhIFRlc3RUeXBlLCBpdCByZXR1
cm5zIGEgbGlzdCBvZiBUZXN0RmFpbHVyZQotb2JqZWN0cyB0byB0aGUgTWFuYWdlci4gVGhlIE1h
bmFnZXIgdGhlbiBhZ2dyZWdhdGVzIHRoZSBUZXN0RmFpbHVyZXMgdG8KLWNyZWF0ZSBhIGZpbmFs
IHJlcG9ydC4KLSIiIgotCi1pbXBvcnQganNvbgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByYW5k
b20KLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmNvbnRyb2xsZXJzLmxheW91dF90ZXN0X2ZpbmRlciBpbXBvcnQgTGF5b3V0VGVzdEZpbmRlcgot
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMubGF5b3V0X3Rlc3RfcnVubmVy
IGltcG9ydCBMYXlvdXRUZXN0UnVubmVyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250
cm9sbGVycy50ZXN0X3Jlc3VsdF93cml0ZXIgaW1wb3J0IFRlc3RSZXN1bHRXcml0ZXIKLWZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX2xheW91dF9y
ZXN1bHRzX2dlbmVyYXRvcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2th
Z2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0b3IKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKLWZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwotZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3J1bl9yZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0Ci0KLV9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotIyBCdWlsZGVyIGJhc2UgVVJMIHdoZXJlIHdlIGhh
dmUgdGhlIGFyY2hpdmVkIHRlc3QgcmVzdWx0cy4KLUJVSUxERVJfQkFTRV9VUkwgPSAiaHR0cDov
L2J1aWxkLmNocm9taXVtLm9yZy9idWlsZGJvdC9sYXlvdXRfdGVzdF9yZXN1bHRzLyIKLQotVGVz
dEV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMKLQotCi0K
LWNsYXNzIE1hbmFnZXIob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIGZvciBtYW5hZ2luZyBydW5u
aW5nIGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAotICAgIHRlc3QgZmls
ZXMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgcHJpbnRlcik6
Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGVzdCBydW5uZXIgZGF0YSBzdHJ1Y3R1cmVzLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgcG9ydDogYW4gb2JqZWN0IGltcGxlbWVudGluZyBwb3J0
LXNwZWNpZmljCi0gICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9mIGNvbW1hbmQgbGlu
ZSBvcHRpb25zCi0gICAgICAgICAgcHJpbnRlcjogYSBQcmludGVyIG9iamVjdCB0byByZWNvcmQg
dXBkYXRlcyB0by4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0Ci0gICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbQotICAgICAgICBzZWxm
Ll9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRlcgotICAg
ICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBOb25lCi0KLSAgICAgICAgc2VsZi5IVFRQX1NVQkRJ
UiA9ICdodHRwJyArIHBvcnQuVEVTVF9QQVRIX1NFUEFSQVRPUgotICAgICAgICBzZWxmLlBFUkZf
U1VCRElSID0gJ3BlcmYnCi0gICAgICAgIHNlbGYuV0VCU09DS0VUX1NVQkRJUiA9ICd3ZWJzb2Nr
ZXQnICsgcG9ydC5URVNUX1BBVEhfU0VQQVJBVE9SCi0gICAgICAgIHNlbGYuTEFZT1VUX1RFU1RT
X0RJUkVDVE9SWSA9ICdMYXlvdXRUZXN0cycKLQotICAgICAgICAjIGRpc2FibGUgd3NzIHNlcnZl
ci4gbmVlZCB0byBpbnN0YWxsIHB5T3BlblNTTCBvbiBidWlsZGJvdHMuCi0gICAgICAgICMgc2Vs
Zi5fd2Vic29ja2V0X3NlY3VyZV9zZXJ2ZXIgPSB3ZWJzb2NrZXRfc2VydmVyLlB5V2ViU29ja2V0
KAotICAgICAgICAjICAgICAgICBvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5LCB1c2VfdGxzPVRy
dWUsIHBvcnQ9OTMyMykKLQotICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IHNlbGYu
X3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKQotICAgICAgICBzZWxmLl9maW5kZXIgPSBMYXlvdXRU
ZXN0RmluZGVyKHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgIHNlbGYuX3J1bm5l
ciA9IExheW91dFRlc3RSdW5uZXIoc2VsZi5fb3B0aW9ucywgc2VsZi5fcG9ydCwgc2VsZi5fcHJp
bnRlciwgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksIHNlbGYuX3Rlc3RfaXNfc2xvdykKLQotICAg
IGRlZiBfY29sbGVjdF90ZXN0cyhzZWxmLCBhcmdzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Zp
bmRlci5maW5kX3Rlc3RzKHNlbGYuX29wdGlvbnMsIGFyZ3MpCi0KLSAgICBkZWYgX2lzX2h0dHBf
dGVzdChzZWxmLCB0ZXN0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuSFRUUF9TVUJESVIgaW4gdGVz
dCBvciBzZWxmLl9pc193ZWJzb2NrZXRfdGVzdCh0ZXN0KQotCi0gICAgZGVmIF9pc193ZWJzb2Nr
ZXRfdGVzdChzZWxmLCB0ZXN0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuV0VCU09DS0VUX1NVQkRJ
UiBpbiB0ZXN0Ci0KLSAgICBkZWYgX2h0dHBfdGVzdHMoc2VsZiwgdGVzdF9uYW1lcyk6Ci0gICAg
ICAgIHJldHVybiBzZXQodGVzdCBmb3IgdGVzdCBpbiB0ZXN0X25hbWVzIGlmIHNlbGYuX2lzX2h0
dHBfdGVzdCh0ZXN0KSkKLQotICAgIGRlZiBfaXNfcGVyZl90ZXN0KHNlbGYsIHRlc3QpOgotICAg
ICAgICByZXR1cm4gc2VsZi5QRVJGX1NVQkRJUiA9PSB0ZXN0IG9yIChzZWxmLlBFUkZfU1VCRElS
ICsgc2VsZi5fcG9ydC5URVNUX1BBVEhfU0VQQVJBVE9SKSBpbiB0ZXN0Ci0KLSAgICBkZWYgX3By
ZXBhcmVfbGlzdHMoc2VsZiwgcGF0aHMsIHRlc3RfbmFtZXMpOgotICAgICAgICB0ZXN0c190b19z
a2lwID0gc2VsZi5fZmluZGVyLnNraXBfdGVzdHMocGF0aHMsIHRlc3RfbmFtZXMsIHNlbGYuX2V4
cGVjdGF0aW9ucywgc2VsZi5faHR0cF90ZXN0cyh0ZXN0X25hbWVzKSkKLSAgICAgICAgdGVzdHNf
dG9fcnVuID0gW3Rlc3QgZm9yIHRlc3QgaW4gdGVzdF9uYW1lcyBpZiB0ZXN0IG5vdCBpbiB0ZXN0
c190b19za2lwXQotCi0gICAgICAgICMgQ3JlYXRlIGEgc29ydGVkIGxpc3Qgb2YgdGVzdCBmaWxl
cyBzbyB0aGUgc3Vic2V0IGNodW5rLAotICAgICAgICAjIGlmIHVzZWQsIGNvbnRhaW5zIGFscGhh
YmV0aWNhbGx5IGNvbnNlY3V0aXZlIHRlc3RzLgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm9y
ZGVyID09ICduYXR1cmFsJzoKLSAgICAgICAgICAgIHRlc3RzX3RvX3J1bi5zb3J0KGtleT1zZWxm
Ll9wb3J0LnRlc3Rfa2V5KQotICAgICAgICBlbGlmIHNlbGYuX29wdGlvbnMub3JkZXIgPT0gJ3Jh
bmRvbSc6Ci0gICAgICAgICAgICByYW5kb20uc2h1ZmZsZSh0ZXN0c190b19ydW4pCi0KLSAgICAg
ICAgdGVzdHNfdG9fcnVuLCB0ZXN0c19pbl9vdGhlcl9jaHVua3MgPSBzZWxmLl9maW5kZXIuc3Bs
aXRfaW50b19jaHVua3ModGVzdHNfdG9fcnVuKQotICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMu
YWRkX3NraXBwZWRfdGVzdHModGVzdHNfaW5fb3RoZXJfY2h1bmtzKQotICAgICAgICB0ZXN0c190
b19za2lwLnVwZGF0ZSh0ZXN0c19pbl9vdGhlcl9jaHVua3MpCi0KLSAgICAgICAgcmV0dXJuIHRl
c3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcAotCi0gICAgZGVmIF90ZXN0X2lucHV0X2Zvcl9maWxl
KHNlbGYsIHRlc3RfZmlsZSk6Ci0gICAgICAgIHJldHVybiBUZXN0SW5wdXQodGVzdF9maWxlLAot
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zIGlmIHNlbGYuX3Rlc3Rf
aXNfc2xvdyh0ZXN0X2ZpbGUpIGVsc2Ugc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcywKLSAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpKQotCi0gICAgZGVmIF90
ZXN0X3JlcXVpcmVzX2xvY2soc2VsZiwgdGVzdF9maWxlKToKLSAgICAgICAgIiIiUmV0dXJuIFRy
dWUgaWYgdGhlIHRlc3QgbmVlZHMgdG8gYmUgbG9ja2VkIHdoZW4KLSAgICAgICAgcnVubmluZyBt
dWx0aXBsZSBjb3BpZXMgb2YgTlJXVHMuIFBlcmYgdGVzdHMgYXJlIGxvY2tlZAotICAgICAgICBi
ZWNhdXNlIGhlYXZ5IGxvYWQgY2F1c2VkIGJ5IHJ1bm5pbmcgb3RoZXIgdGVzdHMgaW4gcGFyYWxs
ZWwKLSAgICAgICAgbWlnaHQgY2F1c2Ugc29tZSBvZiB0aGVtIHRvIHRpbWVvdXQuIiIiCi0gICAg
ICAgIHJldHVybiBzZWxmLl9pc19odHRwX3Rlc3QodGVzdF9maWxlKSBvciBzZWxmLl9pc19wZXJm
X3Rlc3QodGVzdF9maWxlKQotCi0gICAgZGVmIF90ZXN0X2lzX3Nsb3coc2VsZiwgdGVzdF9maWxl
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9ucy5oYXNfbW9kaWZpZXIodGVzdF9m
aWxlLCB0ZXN0X2V4cGVjdGF0aW9ucy5TTE9XKQotCi0gICAgZGVmIG5lZWRzX3NlcnZlcnMoc2Vs
ZiwgdGVzdF9uYW1lcyk6Ci0gICAgICAgIHJldHVybiBhbnkoc2VsZi5fdGVzdF9yZXF1aXJlc19s
b2NrKHRlc3RfbmFtZSkgZm9yIHRlc3RfbmFtZSBpbiB0ZXN0X25hbWVzKSBhbmQgc2VsZi5fb3B0
aW9ucy5odHRwCi0KLSAgICBkZWYgX3NldF91cF9ydW4oc2VsZiwgdGVzdF9uYW1lcyk6Ci0gICAg
ICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCJDaGVja2luZyBidWlsZCAuLi4iKQotICAg
ICAgICBpZiBub3Qgc2VsZi5fcG9ydC5jaGVja19idWlsZChzZWxmLm5lZWRzX3NlcnZlcnModGVz
dF9uYW1lcykpOgotICAgICAgICAgICAgX2xvZy5lcnJvcigiQnVpbGQgY2hlY2sgZmFpbGVkIikK
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICMgVGhpcyBtdXN0IGJlIHN0YXJ0
ZWQgYmVmb3JlIHdlIGNoZWNrIHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzLAotICAgICAgICAjIHNp
bmNlIHRoZSBoZWxwZXIgbWF5IGRvIHRoaW5ncyB0byBtYWtlIHRoZSBzZXR1cCBjb3JyZWN0Lgot
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgotICAgICAgICAgICAgc2VsZi5f
cHJpbnRlci53cml0ZV91cGRhdGUoIlN0YXJ0aW5nIHBpeGVsIHRlc3QgaGVscGVyIC4uLiIpCi0g
ICAgICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X2hlbHBlcigpCi0KLSAgICAgICAgIyBDaGVjayB0
aGF0IHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3Jy
ZWN0LgotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5ub2NoZWNrX3N5c19kZXBzOgotICAg
ICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoIkNoZWNraW5nIHN5c3RlbSBkZXBl
bmRlbmNpZXMgLi4uIikKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wb3J0LmNoZWNrX3N5c19k
ZXBzKHNlbGYubmVlZHNfc2VydmVycyh0ZXN0X25hbWVzKSk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5zdG9wX2hlbHBlcigpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jbG9iYmVyX29sZF9yZXN1bHRzOgotICAgICAgICAgICAg
c2VsZi5fY2xvYmJlcl9vbGRfcmVzdWx0cygpCi0KLSAgICAgICAgIyBDcmVhdGUgdGhlIG91dHB1
dCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgotICAgICAgICBzZWxmLl9w
b3J0Lmhvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxmLl9yZXN1bHRzX2Rp
cmVjdG9yeSkKLQotICAgICAgICBzZWxmLl9wb3J0LnNldHVwX3Rlc3RfcnVuKCkKLSAgICAgICAg
cmV0dXJuIFRydWUKLQotICAgIGRlZiBydW4oc2VsZiwgYXJncyk6Ci0gICAgICAgICIiIlJ1biB0
aGUgdGVzdHMgYW5kIHJldHVybiBhIFJ1bkRldGFpbHMgb2JqZWN0IHdpdGggdGhlIHJlc3VsdHMu
IiIiCi0gICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCJDb2xsZWN0aW5nIHRlc3Rz
IC4uLiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBhdGhzLCB0ZXN0X25hbWVzID0gc2Vs
Zi5fY29sbGVjdF90ZXN0cyhhcmdzKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAg
ICAgICMgVGhpcyBpcyByYWlzZWQgaWYgLS10ZXN0LWxpc3QgZG9lc24ndCBleGlzdAotICAgICAg
ICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCi0K
LSAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoIlBhcnNpbmcgZXhwZWN0YXRpb25z
IC4uLiIpCi0gICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRl
c3RFeHBlY3RhdGlvbnMoc2VsZi5fcG9ydCwgdGVzdF9uYW1lcykKLQotICAgICAgICB0ZXN0c190
b19ydW4sIHRlc3RzX3RvX3NraXAgPSBzZWxmLl9wcmVwYXJlX2xpc3RzKHBhdGhzLCB0ZXN0X25h
bWVzKQotICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2ZvdW5kKGxlbih0ZXN0X25hbWVzKSwg
bGVuKHRlc3RzX3RvX3J1biksIHNlbGYuX29wdGlvbnMucmVwZWF0X2VhY2gsIHNlbGYuX29wdGlv
bnMuaXRlcmF0aW9ucykKLQotICAgICAgICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSdyZSBub3Qg
c2tpcHBpbmcgZXZlcnkgdGVzdC4KLSAgICAgICAgaWYgbm90IHRlc3RzX3RvX3J1bjoKLSAgICAg
ICAgICAgIF9sb2cuY3JpdGljYWwoJ05vIHRlc3RzIHRvIHJ1bi4nKQotICAgICAgICAgICAgcmV0
dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEpCi0KLSAgICAgICAg
aWYgbm90IHNlbGYuX3NldF91cF9ydW4odGVzdHNfdG9fcnVuKToKLSAgICAgICAgICAgIHJldHVy
biB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2RlPS0xKQotCi0gICAgICAgIHN0
YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbml0aWFs
X3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHModGVzdHNfdG9fcnVuLCB0ZXN0c190b19za2lwLCBz
ZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBzZWxmLl9vcHRpb25zLml0ZXJhdGlvbnMsCi0gICAg
ICAgICAgICAgICAgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgcmV0cnlpbmc9
RmFsc2UpCi0KLSAgICAgICAgICAgIHRlc3RzX3RvX3JldHJ5ID0gc2VsZi5fdGVzdHNfdG9fcmV0
cnkoaW5pdGlhbF9yZXN1bHRzLCBpbmNsdWRlX2NyYXNoZXM9c2VsZi5fcG9ydC5zaG91bGRfcmV0
cnlfY3Jhc2hlcygpKQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5yZXRyeV9mYWlsdXJl
cyBhbmQgdGVzdHNfdG9fcmV0cnkgYW5kIG5vdCBpbml0aWFsX3Jlc3VsdHMuaW50ZXJydXB0ZWQ6
Ci0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQotICAgICAgICAgICAgICAgIF9sb2cuaW5m
bygiUmV0cnlpbmcgJWQgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLiIgJSBsZW4odGVzdHNfdG9f
cmV0cnkpKQotICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnJykKLSAgICAgICAgICAgICAgICBy
ZXRyeV9yZXN1bHRzID0gc2VsZi5fcnVuX3Rlc3RzKHRlc3RzX3RvX3JldHJ5LCB0ZXN0c190b19z
a2lwPXNldCgpLCByZXBlYXRfZWFjaD0xLCBpdGVyYXRpb25zPTEsCi0gICAgICAgICAgICAgICAg
ICAgIG51bV93b3JrZXJzPTEsIHJldHJ5aW5nPVRydWUpCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdHMgPSBOb25lCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBzZWxmLl9jbGVhbl91cF9ydW4oKQotCi0gICAgICAgIGVuZF90aW1lID0gdGltZS50
aW1lKCkKLQotICAgICAgICAjIFNvbWUgY3Jhc2ggbG9ncyBjYW4gdGFrZSBhIGxvbmcgdGltZSB0
byBiZSB3cml0dGVuIG91dCBzbyBsb29rCi0gICAgICAgICMgZm9yIG5ldyBsb2dzIGFmdGVyIHRo
ZSB0ZXN0IHJ1biBmaW5pc2hlcy4KLSAgICAgICAgc2VsZi5fbG9va19mb3JfbmV3X2NyYXNoX2xv
Z3MoaW5pdGlhbF9yZXN1bHRzLCBzdGFydF90aW1lKQotICAgICAgICBpZiByZXRyeV9yZXN1bHRz
OgotICAgICAgICAgICAgc2VsZi5fbG9va19mb3JfbmV3X2NyYXNoX2xvZ3MocmV0cnlfcmVzdWx0
cywgc3RhcnRfdGltZSkKLQotICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMgPSB0ZXN0X3J1bl9y
ZXN1bHRzLnN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsIHNlbGYuX2V4cGVjdGF0aW9ucywg
aW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzKQotICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3Jlc3VsdHMoZW5kX3RpbWUgLSBzdGFydF90aW1lLCBpbml0aWFsX3Jlc3VsdHMsIHN1bW1h
cml6ZWRfcmVzdWx0cykKLQotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgot
ICAgICAgICAgICAgc2VsZi5fcG9ydC5wcmludF9sZWFrc19zdW1tYXJ5KCkKLSAgICAgICAgICAg
IHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVzKHN1bW1hcml6ZWRfcmVzdWx0cywgaW5pdGlhbF9yZXN1
bHRzKQotCi0gICAgICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
c2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJyZXN1bHRzLmh0bWwiKQotICAgICAgICAgICAgc2Vs
Zi5fY29weV9yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRzX3BhdGgpCi0gICAgICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLnNob3dfcmVzdWx0cyBhbmQgKGluaXRpYWxfcmVzdWx0cy51bmV4cGVjdGVk
X3Jlc3VsdHNfYnlfbmFtZSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc2VsZi5fb3B0aW9ucy5mdWxsX3Jlc3VsdHNfaHRtbCBhbmQgaW5pdGlhbF9y
ZXN1bHRzLnRvdGFsX2ZhaWx1cmVzKSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zaG93
X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdHNfcGF0aCkKLQotICAgICAgICByZXR1cm4gdGVzdF9y
dW5fcmVzdWx0cy5SdW5EZXRhaWxzKHNlbGYuX3BvcnQuZXhpdF9jb2RlX2Zyb21fc3VtbWFyaXpl
ZF9yZXN1bHRzKHN1bW1hcml6ZWRfcmVzdWx0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzLCBpbml0aWFsX3Jlc3VsdHMsIHJl
dHJ5X3Jlc3VsdHMpCi0KLSAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCB0ZXN0c190b19ydW4sIHRl
c3RzX3RvX3NraXAsIHJlcGVhdF9lYWNoLCBpdGVyYXRpb25zLCBudW1fd29ya2VycywgcmV0cnlp
bmcpOgotICAgICAgICBuZWVkc19odHRwID0gc2VsZi5fcG9ydC5yZXF1aXJlc19odHRwX3NlcnZl
cigpIG9yIGFueShzZWxmLl9pc19odHRwX3Rlc3QodGVzdCkgZm9yIHRlc3QgaW4gdGVzdHNfdG9f
cnVuKQotICAgICAgICBuZWVkc193ZWJzb2NrZXRzID0gYW55KHNlbGYuX2lzX3dlYnNvY2tldF90
ZXN0KHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bikKLQotICAgICAgICB0ZXN0X2lucHV0
cyA9IFtdCi0gICAgICAgIGZvciBfIGluIHhyYW5nZShpdGVyYXRpb25zKToKLSAgICAgICAgICAg
IGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bjoKLSAgICAgICAgICAgICAgICBmb3IgXyBpbiB4cmFu
Z2UocmVwZWF0X2VhY2gpOgotICAgICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0cy5hcHBlbmQo
c2VsZi5fdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0KSkKLQotICAgICAgICByZXR1cm4gc2VsZi5f
cnVubmVyLnJ1bl90ZXN0cyhzZWxmLl9leHBlY3RhdGlvbnMsIHRlc3RfaW5wdXRzLCB0ZXN0c190
b19za2lwLCBudW1fd29ya2VycywgbmVlZHNfaHR0cCwgbmVlZHNfd2Vic29ja2V0cywgcmV0cnlp
bmcpCi0KLSAgICBkZWYgX2NsZWFuX3VwX3J1bihzZWxmKToKLSAgICAgICAgIiIiUmVzdG9yZXMg
dGhlIHN5c3RlbSBhZnRlciB3ZSdyZSBkb25lIHJ1bm5pbmcgdGVzdHMuIiIiCi0gICAgICAgIF9s
b2cuZGVidWcoImZsdXNoaW5nIHN0ZG91dCIpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQot
ICAgICAgICBfbG9nLmRlYnVnKCJmbHVzaGluZyBzdGRlcnIiKQotICAgICAgICBzeXMuc3RkZXJy
LmZsdXNoKCkKLSAgICAgICAgX2xvZy5kZWJ1Zygic3RvcHBpbmcgaGVscGVyIikKLSAgICAgICAg
c2VsZi5fcG9ydC5zdG9wX2hlbHBlcigpCi0gICAgICAgIF9sb2cuZGVidWcoImNsZWFuaW5nIHVw
IHBvcnQiKQotICAgICAgICBzZWxmLl9wb3J0LmNsZWFuX3VwX3Rlc3RfcnVuKCkKLQotICAgIGRl
ZiBfbG9va19mb3JfbmV3X2NyYXNoX2xvZ3Moc2VsZiwgcnVuX3Jlc3VsdHMsIHN0YXJ0X3RpbWUp
OgotICAgICAgICAiIiJTaW5jZSBjcmFzaCBsb2dzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIHRvIGJl
IHdyaXR0ZW4gb3V0IGlmIHRoZSBzeXN0ZW0gaXMKLSAgICAgICAgICAgdW5kZXIgc3RyZXNzIGRv
IGEgc2Vjb25kIHBhc3MgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBydW4uCi0KLSAgICAgICAgICAg
cnVuX3Jlc3VsdHM6IHRoZSByZXN1bHRzIG9mIHRoZSB0ZXN0IHJ1bgotICAgICAgICAgICBzdGFy
dF90aW1lOiB0aW1lIHRoZSB0ZXN0cyBzdGFydGVkIGF0LiAgV2UncmUgbG9va2luZyBmb3IgY3Jh
c2gKLSAgICAgICAgICAgICAgIGxvZ3MgYWZ0ZXIgdGhhdCB0aW1lLgotICAgICAgICAiIiIKLSAg
ICAgICAgY3Jhc2hlZF9wcm9jZXNzZXMgPSBbXQotICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGlu
IHJ1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lLml0ZXJpdGVtcygpOgotICAg
ICAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIKToKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZm9yIGZhaWx1cmUgaW4gcmVzdWx0
LmZhaWx1cmVzOgotICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZhaWx1cmUsIHRl
c3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3Nlcy5hcHBlbmQoW3Rlc3QsIGZhaWx1cmUu
cHJvY2Vzc19uYW1lLCBmYWlsdXJlLnBpZF0pCi0KLSAgICAgICAgY3Jhc2hfbG9ncyA9IHNlbGYu
X3BvcnQubG9va19mb3JfbmV3X2NyYXNoX2xvZ3MoY3Jhc2hlZF9wcm9jZXNzZXMsIHN0YXJ0X3Rp
bWUpCi0gICAgICAgIGlmIGNyYXNoX2xvZ3M6Ci0gICAgICAgICAgICBmb3IgdGVzdCwgY3Jhc2hf
bG9nIGluIGNyYXNoX2xvZ3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd3JpdGVyID0g
VGVzdFJlc3VsdFdyaXRlcihzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLCBzZWxmLl9wb3J0LCBzZWxm
Ll9wb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCksIHRlc3QpCi0gICAgICAgICAgICAgICAgd3JpdGVy
LndyaXRlX2NyYXNoX2xvZyhjcmFzaF9sb2cpCi0KLSAgICBkZWYgX2Nsb2JiZXJfb2xkX3Jlc3Vs
dHMoc2VsZik6Ci0gICAgICAgICMgSnVzdCBjbG9iYmVyIHRoZSBhY3R1YWwgdGVzdCByZXN1bHRz
IGRpcmVjdG9yaWVzIHNpbmNlIHRoZSBvdGhlcgotICAgICAgICAjIGZpbGVzIGluIHRoZSByZXN1
bHRzIGRpcmVjdG9yeSBhcmUgZXhwbGljaXRseSB1c2VkIGZvciBjcm9zcy1ydW4KLSAgICAgICAg
IyB0cmFja2luZy4KLSAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoIkNsb2JiZXJp
bmcgb2xkIHJlc3VsdHMgaW4gJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCi0gICAgICAgIGxheW91dF90ZXN0c19kaXIgPSBz
ZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKQotICAgICAgICBwb3NzaWJsZV9kaXJzID0gc2Vs
Zi5fcG9ydC50ZXN0X2RpcnMoKQotICAgICAgICBmb3IgZGlybmFtZSBpbiBwb3NzaWJsZV9kaXJz
OgotICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5pc2RpcihzZWxmLl9maWxlc3lzdGVt
LmpvaW4obGF5b3V0X3Rlc3RzX2RpciwgZGlybmFtZSkpOgotICAgICAgICAgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ucm10cmVlKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9yZXN1bHRzX2Rp
cmVjdG9yeSwgZGlybmFtZSkpCi0KLSAgICBkZWYgX3Rlc3RzX3RvX3JldHJ5KHNlbGYsIHJ1bl9y
ZXN1bHRzLCBpbmNsdWRlX2NyYXNoZXMpOgotICAgICAgICByZXR1cm4gW3Jlc3VsdC50ZXN0X25h
bWUgZm9yIHJlc3VsdCBpbiBydW5fcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZS52
YWx1ZXMoKSBpZgotICAgICAgICAgICAgICAgICAgICgocmVzdWx0LnR5cGUgIT0gdGVzdF9leHBl
Y3RhdGlvbnMuUEFTUykgYW5kCi0gICAgICAgICAgICAgICAgICAgIChyZXN1bHQudHlwZSAhPSB0
ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgKHJlc3Vs
dC50eXBlICE9IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIIG9yIGluY2x1ZGVfY3Jhc2hlcykpXQot
Ci0gICAgZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmLCBzdW1tYXJpemVkX3Jlc3VsdHMsIGlu
aXRpYWxfcmVzdWx0cyk6Ci0gICAgICAgICIiIldyaXRlcyB0aGUgcmVzdWx0cyBvZiB0aGUgdGVz
dCBydW4gYXMgSlNPTiBmaWxlcyBpbnRvIHRoZSByZXN1bHRzCi0gICAgICAgIGRpciBhbmQgdXBs
b2FkIHRoZSBmaWxlcyB0byB0aGUgYXBwZW5naW5lIHNlcnZlci4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0czogZGljdCBvZiByZXN1bHRzCi0gICAgICAgICAg
aW5pdGlhbF9yZXN1bHRzOiBmdWxsIHN1bW1hcnkgb2JqZWN0Ci0gICAgICAgICIiIgotICAgICAg
ICBfbG9nLmRlYnVnKCJXcml0aW5nIEpTT04gZmlsZXMgaW4gJXMuIiAlIHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5KQotCi0gICAgICAgICMgRklYTUU6IFVwbG9hZCBzdGF0cy5qc29uIHRvIHRoZSBz
ZXJ2ZXIgYW5kIGRlbGV0ZSB0aW1lc19tcy4KLSAgICAgICAgdGltZXNfdHJpZSA9IGpzb25fcmVz
dWx0c19nZW5lcmF0b3IudGVzdF90aW1pbmdzX3RyaWUoc2VsZi5fcG9ydCwgaW5pdGlhbF9yZXN1
bHRzLnJlc3VsdHNfYnlfbmFtZS52YWx1ZXMoKSkKLSAgICAgICAgdGltZXNfanNvbl9wYXRoID0g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidGltZXNfbXMu
anNvbiIpCi0gICAgICAgIGpzb25fcmVzdWx0c19nZW5lcmF0b3Iud3JpdGVfanNvbihzZWxmLl9m
aWxlc3lzdGVtLCB0aW1lc190cmllLCB0aW1lc19qc29uX3BhdGgpCi0KLSAgICAgICAgc3RhdHNf
dHJpZSA9IHNlbGYuX3N0YXRzX3RyaWUoaW5pdGlhbF9yZXN1bHRzKQotICAgICAgICBzdGF0c19w
YXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAic3Rh
dHMuanNvbiIpCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHN0YXRz
X3BhdGgsIGpzb24uZHVtcHMoc3RhdHNfdHJpZSkpCi0KLSAgICAgICAgZnVsbF9yZXN1bHRzX3Bh
dGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJmdWxs
X3Jlc3VsdHMuanNvbiIpCi0gICAgICAgICMgV2Ugd3JpdGUgZnVsbF9yZXN1bHRzLmpzb24gb3V0
IGFzIGpzb25wIGJlY2F1c2Ugd2UgbmVlZCB0byBsb2FkIGl0IGZyb20gYSBmaWxlIHVybCBhbmQg
Q2hyb21pdW0gZG9lc24ndCBhbGxvdyB0aGF0LgotICAgICAgICBqc29uX3Jlc3VsdHNfZ2VuZXJh
dG9yLndyaXRlX2pzb24oc2VsZi5fZmlsZXN5c3RlbSwgc3VtbWFyaXplZF9yZXN1bHRzLCBmdWxs
X3Jlc3VsdHNfcGF0aCwgY2FsbGJhY2s9IkFERF9SRVNVTFRTIikKLQotICAgICAgICBnZW5lcmF0
b3IgPSBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5KU09OTGF5b3V0UmVzdWx0c0dlbmVy
YXRvcigKLSAgICAgICAgICAgIHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMuYnVpbGRlcl9uYW1l
LCBzZWxmLl9vcHRpb25zLmJ1aWxkX25hbWUsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmJ1
aWxkX251bWJlciwgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksCi0gICAgICAgICAgICBCVUlMREVS
X0JBU0VfVVJMLAotICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLCBpbml0aWFsX3Jlc3Vs
dHMsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRlc3RfcmVzdWx0c19zZXJ2ZXIsCi0gICAg
ICAgICAgICAibGF5b3V0LXRlc3RzIiwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubWFzdGVy
X25hbWUpCi0KLSAgICAgICAgX2xvZy5kZWJ1ZygiRmluaXNoZWQgd3JpdGluZyBKU09OIGZpbGVz
LiIpCi0KLQotICAgICAgICBqc29uX2ZpbGVzID0gWyJpbmNyZW1lbnRhbF9yZXN1bHRzLmpzb24i
LCAiZnVsbF9yZXN1bHRzLmpzb24iLCAidGltZXNfbXMuanNvbiJdCi0KLSAgICAgICAgZ2VuZXJh
dG9yLnVwbG9hZF9qc29uX2ZpbGVzKGpzb25fZmlsZXMpCi0KLSAgICAgICAgaW5jcmVtZW50YWxf
cmVzdWx0c19wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0
b3J5LCAiaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uIikKLQotICAgICAgICAjIFJlbW92ZSB0aGVz
ZSBmaWxlcyBmcm9tIHRoZSByZXN1bHRzIGRpcmVjdG9yeSBzbyB0aGV5IGRvbid0IHRha2UgdXAg
dG9vIG11Y2ggc3BhY2Ugb24gdGhlIGJ1aWxkYm90LgotICAgICAgICAjIFRoZSB0b29scyB1c2Ug
dGhlIHZlcnNpb24gd2UgdXBsb2FkZWQgdG8gdGhlIHJlc3VsdHMgc2VydmVyIGFueXdheS4KLSAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS5yZW1vdmUodGltZXNfanNvbl9wYXRoKQotICAgICAgICBz
ZWxmLl9maWxlc3lzdGVtLnJlbW92ZShpbmNyZW1lbnRhbF9yZXN1bHRzX3BhdGgpCi0KLSAgICBk
ZWYgX2NvcHlfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwgZGVzdGluYXRpb25fcGF0aCk6Ci0gICAg
ICAgIGJhc2VfZGlyID0gc2VsZi5fcG9ydC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRl
c3RzJywgJ2Zhc3QnLCAnaGFybmVzcycpCi0gICAgICAgIHJlc3VsdHNfZmlsZSA9IHNlbGYuX2Zp
bGVzeXN0ZW0uam9pbihiYXNlX2RpciwgJ3Jlc3VsdHMuaHRtbCcpCi0gICAgICAgICMgTm90ZSB0
aGF0IHRoZSByZXN1bHRzLmh0bWwgdGVtcGxhdGUgZmlsZSB3b24ndCBleGlzdCB3aGVuIHdlJ3Jl
IHVzaW5nIGEgTW9ja0ZpbGVTeXN0ZW0gZHVyaW5nIHVuaXQgdGVzdHMsCi0gICAgICAgICMgc28g
bWFrZSBzdXJlIGl0IGV4aXN0cyBiZWZvcmUgd2UgdHJ5IHRvIGNvcHkgaXQuCi0gICAgICAgIGlm
IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHJlc3VsdHNfZmlsZSk6Ci0gICAgICAgICAgICBzZWxm
Ll9maWxlc3lzdGVtLmNvcHlmaWxlKHJlc3VsdHNfZmlsZSwgZGVzdGluYXRpb25fcGF0aCkKLQot
ICAgIGRlZiBfc3RhdHNfdHJpZShzZWxmLCBpbml0aWFsX3Jlc3VsdHMpOgotICAgICAgICBkZWYg
X3dvcmtlcl9udW1iZXIod29ya2VyX25hbWUpOgotICAgICAgICAgICAgcmV0dXJuIGludCh3b3Jr
ZXJfbmFtZS5zcGxpdCgnLycpWzFdKSBpZiB3b3JrZXJfbmFtZSBlbHNlIC0xCi0KLSAgICAgICAg
c3RhdHMgPSB7fQotICAgICAgICBmb3IgcmVzdWx0IGluIGluaXRpYWxfcmVzdWx0cy5yZXN1bHRz
X2J5X25hbWUudmFsdWVzKCk6Ci0gICAgICAgICAgICBpZiByZXN1bHQudHlwZSAhPSB0ZXN0X2V4
cGVjdGF0aW9ucy5TS0lQOgotICAgICAgICAgICAgICAgIHN0YXRzW3Jlc3VsdC50ZXN0X25hbWVd
ID0geydyZXN1bHRzJzogKF93b3JrZXJfbnVtYmVyKHJlc3VsdC53b3JrZXJfbmFtZSksIHJlc3Vs
dC50ZXN0X251bWJlciwgcmVzdWx0LnBpZCwgaW50KHJlc3VsdC50ZXN0X3J1bl90aW1lICogMTAw
MCksIGludChyZXN1bHQudG90YWxfcnVuX3RpbWUgKiAxMDAwKSl9Ci0gICAgICAgIHN0YXRzX3Ry
aWUgPSB7fQotICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc3RhdHMuaXRlcml0ZW1zKCk6Ci0g
ICAgICAgICAgICBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLmFkZF9wYXRoX3RvX3RyaWUobmFtZSwg
dmFsdWUsIHN0YXRzX3RyaWUpCi0gICAgICAgIHJldHVybiBzdGF0c190cmllCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YWFkMmIzMDg3Mjg0MDIyMTBmMTI0MTRmMGZmMDU1ZTBkMzhhNzY5MC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwK
QEAgLTEsOTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdhYm9yIFJhcGNzYW55aSAocmdh
Ym9yQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi0iIiJVbml0IHRlc3RzIGZvciBtYW5hZ2VyLnB5LiIiIgotCi1pbXBvcnQgc3lzCi1p
bXBvcnQgdGltZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3Rf
bW9jayBpbXBvcnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xs
ZXJzLm1hbmFnZXIgaW1wb3J0IE1hbmFnZXIKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1v
ZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
Lm1vZGVscy50ZXN0X3J1bl9yZXN1bHRzIGltcG9ydCBUZXN0UnVuUmVzdWx0cwotZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKLWZyb20gd2Via2l0cHkudG9vbC5tb2Nr
dG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKLQotCi1jbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfbmVlZHNfc2VydmVycyhzZWxmKToKLSAgICAgICAgZGVm
IGdldF9tYW5hZ2VyKCk6Ci0gICAgICAgICAgICBwb3J0ID0gTW9jaygpICAjIEZJWE1FOiBVc2Ug
YSB0aWdodGVyIG1vY2suCi0gICAgICAgICAgICBwb3J0LlRFU1RfUEFUSF9TRVBBUkFUT1IgPSAn
LycKLSAgICAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQsIG9wdGlvbnM9TW9ja09wdGlv
bnMoaHR0cD1UcnVlLCBtYXhfbG9ja2VkX3NoYXJkcz0xKSwgcHJpbnRlcj1Nb2NrKCkpCi0gICAg
ICAgICAgICByZXR1cm4gbWFuYWdlcgotCi0gICAgICAgIG1hbmFnZXIgPSBnZXRfbWFuYWdlcigp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWFuYWdlci5uZWVkc19zZXJ2ZXJzKFsnZmFzdC9o
dG1sJ10pKQotCi0gICAgICAgIG1hbmFnZXIgPSBnZXRfbWFuYWdlcigpCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShtYW5hZ2VyLm5lZWRzX3NlcnZlcnMoWydodHRwL3Rlc3RzL21pc2MnXSkpCi0K
LSAgICBkZWYgaW50ZWdyYXRpb25fdGVzdF9uZWVkc19zZXJ2ZXJzKHNlbGYpOgotICAgICAgICBk
ZWYgZ2V0X21hbmFnZXIoKToKLSAgICAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAg
ICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCkKLSAgICAgICAgICAgIG1hbmFnZXIg
PSBNYW5hZ2VyKHBvcnQsIG9wdGlvbnM9TW9ja09wdGlvbnModGVzdF9saXN0PU5vbmUsIGh0dHA9
VHJ1ZSwgbWF4X2xvY2tlZF9zaGFyZHM9MSksIHByaW50ZXI9TW9jaygpKQotICAgICAgICAgICAg
cmV0dXJuIG1hbmFnZXIKLQotICAgICAgICBtYW5hZ2VyID0gZ2V0X21hbmFnZXIoKQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKG1hbmFnZXIubmVlZHNfc2VydmVycyhbJ2Zhc3QvaHRtbCddKSkK
LQotICAgICAgICBtYW5hZ2VyID0gZ2V0X21hbmFnZXIoKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobWFuYWdlci5uZWVkc19zZXJ2ZXJzKFsnaHR0cC90ZXN0cy9taW1lJ10pKQotCi0gICAgICAg
IGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgbWFuYWdlciA9IGdldF9t
YW5hZ2VyKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWFuYWdlci5uZWVkc19zZXJ2
ZXJzKFsnZmFzdFxcaHRtbCddKSkKLQotICAgICAgICAgICAgbWFuYWdlciA9IGdldF9tYW5hZ2Vy
KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYW5hZ2VyLm5lZWRzX3NlcnZlcnMoWydo
dHRwXFx0ZXN0c1xcbWltZSddKSkKLQotICAgIGRlZiB0ZXN0X2xvb2tfZm9yX25ld19jcmFzaF9s
b2dzKHNlbGYpOgotICAgICAgICBkZWYgZ2V0X21hbmFnZXIoKToKLSAgICAgICAgICAgIGhvc3Qg
PSBNb2NrSG9zdCgpCi0gICAgICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KCd0
ZXN0LW1hYy1sZW9wYXJkJykKLSAgICAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQsIG9w
dGlvbnM9TW9ja09wdGlvbnModGVzdF9saXN0PU5vbmUsIGh0dHA9VHJ1ZSwgbWF4X2xvY2tlZF9z
aGFyZHM9MSksIHByaW50ZXI9TW9jaygpKQotICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIKLSAg
ICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5
LmdldCgndGVzdC1tYWMtbGVvcGFyZCcpCi0gICAgICAgIHRlc3RzID0gWydmYWlsdXJlcy9leHBl
Y3RlZC9jcmFzaC5odG1sJ10KLSAgICAgICAgZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlv
bnMuVGVzdEV4cGVjdGF0aW9ucyhwb3J0LCB0ZXN0cykKLSAgICAgICAgcnVuX3Jlc3VsdHMgPSBU
ZXN0UnVuUmVzdWx0cyhleHBlY3RhdGlvbnMsIGxlbih0ZXN0cykpCi0gICAgICAgIG1hbmFnZXIg
PSBnZXRfbWFuYWdlcigpCi0gICAgICAgIG1hbmFnZXIuX2xvb2tfZm9yX25ld19jcmFzaF9sb2dz
KHJ1bl9yZXN1bHRzLCB0aW1lLnRpbWUoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDk5Yjc5ZjFlNDJm
ZTlkOWEyNjMzNTZjYWFkNWQxYmQzZjQ0NjkyNDguLmFiMWI0MzJmZmM5MGM1OTEyZjlmYTgyZTQw
NjQ0N2JhYzMwZWI5NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMjgsMTUgKzI4LDI3IEBACiAjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCisKK2ltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2lu
ZwogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KIGltcG9ydCBzaWdu
YWwKIGltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmNvbnRyb2xsZXJzLm1hbmFnZXIgaW1wb3J0IE1hbmFnZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLmNvbnRyb2xsZXJzLmxheW91dF90ZXN0X2ZpbmRlciBpbXBvcnQgTGF5b3V0VGVzdEZp
bmRlcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMubGF5b3V0X3Rlc3Rf
cnVubmVyIGltcG9ydCBMYXlvdXRUZXN0UnVubmVyCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5jb250cm9sbGVycy50ZXN0X3Jlc3VsdF93cml0ZXIgaW1wb3J0IFRlc3RSZXN1bHRXcml0ZXIK
K2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX2xh
eW91dF9yZXN1bHRzX2dlbmVyYXRvcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0
X3BhY2thZ2UgaW1wb3J0IGpzb25fcmVzdWx0c19nZW5lcmF0b3IKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKK2Zyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcworZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3J1bl9yZXN1bHRzCitmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElucHV0CiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjb25maWd1cmF0aW9uX29wdGlvbnMsIHBs
YXRmb3JtX29wdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBi
dWlsZGJvdF9yZXN1bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQg
cHJpbnRpbmcKQEAgLTQ1LDYgKzU3LDEwIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZp
ZXdzIGltcG9ydCBwcmludGluZwogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiAKKyMgQnVpbGRlciBiYXNlIFVSTCB3aGVyZSB3ZSBoYXZlIHRoZSBhcmNoaXZlZCB0ZXN0IHJl
c3VsdHMuCitCVUlMREVSX0JBU0VfVVJMID0gImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvYnVp
bGRib3QvbGF5b3V0X3Rlc3RfcmVzdWx0cy8iCisKKwogIyBUaGlzIG1pcnJvcnMgd2hhdCB0aGUg
c2hlbGwgbm9ybWFsbHkgZG9lcy4KIElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTID0gc2lnbmFsLlNJ
R0lOVCArIDEyOAogCkBAIC0zODAsNSArMzk2LDMwOCBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMs
IGFyZ3MsIGxvZ2dpbmdfc3RyZWFtKToKICAgICBmaW5hbGx5OgogICAgICAgICBwcmludGVyLmNs
ZWFudXAoKQogCisKK2NsYXNzIE1hbmFnZXIob2JqZWN0KToKKyAgICAiIiJBIGNsYXNzIGZvciBt
YW5hZ2luZyBydW5uaW5nIGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAor
ICAgIHRlc3QgZmlsZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9u
cywgcHJpbnRlcik6CisgICAgICAgICIiIkluaXRpYWxpemUgdGVzdCBydW5uZXIgZGF0YSBzdHJ1
Y3R1cmVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcG9ydDogYW4gb2JqZWN0IGltcGxl
bWVudGluZyBwb3J0LXNwZWNpZmljCisgICAgICAgICAgb3B0aW9uczogYSBkaWN0aW9uYXJ5IG9m
IGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICAgICAgcHJpbnRlcjogYSBQcmludGVyIG9iamVj
dCB0byByZWNvcmQgdXBkYXRlcyB0by4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3BvcnQg
PSBwb3J0CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Lmhvc3QuZmlsZXN5c3RlbQor
ICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLl9wcmludGVyID0g
cHJpbnRlcgorICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBOb25lCisKKyAgICAgICAgc2Vs
Zi5IVFRQX1NVQkRJUiA9ICdodHRwJyArIHBvcnQuVEVTVF9QQVRIX1NFUEFSQVRPUgorICAgICAg
ICBzZWxmLlBFUkZfU1VCRElSID0gJ3BlcmYnCisgICAgICAgIHNlbGYuV0VCU09DS0VUX1NVQkRJ
UiA9ICd3ZWJzb2NrZXQnICsgcG9ydC5URVNUX1BBVEhfU0VQQVJBVE9SCisgICAgICAgIHNlbGYu
TEFZT1VUX1RFU1RTX0RJUkVDVE9SWSA9ICdMYXlvdXRUZXN0cycKKworICAgICAgICAjIGRpc2Fi
bGUgd3NzIHNlcnZlci4gbmVlZCB0byBpbnN0YWxsIHB5T3BlblNTTCBvbiBidWlsZGJvdHMuCisg
ICAgICAgICMgc2VsZi5fd2Vic29ja2V0X3NlY3VyZV9zZXJ2ZXIgPSB3ZWJzb2NrZXRfc2VydmVy
LlB5V2ViU29ja2V0KAorICAgICAgICAjICAgICAgICBvcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5
LCB1c2VfdGxzPVRydWUsIHBvcnQ9OTMyMykKKworICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVj
dG9yeSA9IHNlbGYuX3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKQorICAgICAgICBzZWxmLl9maW5k
ZXIgPSBMYXlvdXRUZXN0RmluZGVyKHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMpCisgICAgICAg
IHNlbGYuX3J1bm5lciA9IExheW91dFRlc3RSdW5uZXIoc2VsZi5fb3B0aW9ucywgc2VsZi5fcG9y
dCwgc2VsZi5fcHJpbnRlciwgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksIHNlbGYuX3Rlc3RfaXNf
c2xvdykKKworICAgIGRlZiBfY29sbGVjdF90ZXN0cyhzZWxmLCBhcmdzKToKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2ZpbmRlci5maW5kX3Rlc3RzKHNlbGYuX29wdGlvbnMsIGFyZ3MpCisKKyAgICBk
ZWYgX2lzX2h0dHBfdGVzdChzZWxmLCB0ZXN0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuSFRUUF9T
VUJESVIgaW4gdGVzdCBvciBzZWxmLl9pc193ZWJzb2NrZXRfdGVzdCh0ZXN0KQorCisgICAgZGVm
IF9pc193ZWJzb2NrZXRfdGVzdChzZWxmLCB0ZXN0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuV0VC
U09DS0VUX1NVQkRJUiBpbiB0ZXN0CisKKyAgICBkZWYgX2h0dHBfdGVzdHMoc2VsZiwgdGVzdF9u
YW1lcyk6CisgICAgICAgIHJldHVybiBzZXQodGVzdCBmb3IgdGVzdCBpbiB0ZXN0X25hbWVzIGlm
IHNlbGYuX2lzX2h0dHBfdGVzdCh0ZXN0KSkKKworICAgIGRlZiBfaXNfcGVyZl90ZXN0KHNlbGYs
IHRlc3QpOgorICAgICAgICByZXR1cm4gc2VsZi5QRVJGX1NVQkRJUiA9PSB0ZXN0IG9yIChzZWxm
LlBFUkZfU1VCRElSICsgc2VsZi5fcG9ydC5URVNUX1BBVEhfU0VQQVJBVE9SKSBpbiB0ZXN0CisK
KyAgICBkZWYgX3ByZXBhcmVfbGlzdHMoc2VsZiwgcGF0aHMsIHRlc3RfbmFtZXMpOgorICAgICAg
ICB0ZXN0c190b19za2lwID0gc2VsZi5fZmluZGVyLnNraXBfdGVzdHMocGF0aHMsIHRlc3RfbmFt
ZXMsIHNlbGYuX2V4cGVjdGF0aW9ucywgc2VsZi5faHR0cF90ZXN0cyh0ZXN0X25hbWVzKSkKKyAg
ICAgICAgdGVzdHNfdG9fcnVuID0gW3Rlc3QgZm9yIHRlc3QgaW4gdGVzdF9uYW1lcyBpZiB0ZXN0
IG5vdCBpbiB0ZXN0c190b19za2lwXQorCisgICAgICAgICMgQ3JlYXRlIGEgc29ydGVkIGxpc3Qg
b2YgdGVzdCBmaWxlcyBzbyB0aGUgc3Vic2V0IGNodW5rLAorICAgICAgICAjIGlmIHVzZWQsIGNv
bnRhaW5zIGFscGhhYmV0aWNhbGx5IGNvbnNlY3V0aXZlIHRlc3RzLgorICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLm9yZGVyID09ICduYXR1cmFsJzoKKyAgICAgICAgICAgIHRlc3RzX3RvX3J1bi5z
b3J0KGtleT1zZWxmLl9wb3J0LnRlc3Rfa2V5KQorICAgICAgICBlbGlmIHNlbGYuX29wdGlvbnMu
b3JkZXIgPT0gJ3JhbmRvbSc6CisgICAgICAgICAgICByYW5kb20uc2h1ZmZsZSh0ZXN0c190b19y
dW4pCisKKyAgICAgICAgdGVzdHNfdG9fcnVuLCB0ZXN0c19pbl9vdGhlcl9jaHVua3MgPSBzZWxm
Ll9maW5kZXIuc3BsaXRfaW50b19jaHVua3ModGVzdHNfdG9fcnVuKQorICAgICAgICBzZWxmLl9l
eHBlY3RhdGlvbnMuYWRkX3NraXBwZWRfdGVzdHModGVzdHNfaW5fb3RoZXJfY2h1bmtzKQorICAg
ICAgICB0ZXN0c190b19za2lwLnVwZGF0ZSh0ZXN0c19pbl9vdGhlcl9jaHVua3MpCisKKyAgICAg
ICAgcmV0dXJuIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcAorCisgICAgZGVmIF90ZXN0X2lu
cHV0X2Zvcl9maWxlKHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgIHJldHVybiBUZXN0SW5wdXQo
dGVzdF9maWxlLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zIGlm
IHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUpIGVsc2Ugc2VsZi5fb3B0aW9ucy50aW1lX291
dF9tcywKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpKQor
CisgICAgZGVmIF90ZXN0X3JlcXVpcmVzX2xvY2soc2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAg
IiIiUmV0dXJuIFRydWUgaWYgdGhlIHRlc3QgbmVlZHMgdG8gYmUgbG9ja2VkIHdoZW4KKyAgICAg
ICAgcnVubmluZyBtdWx0aXBsZSBjb3BpZXMgb2YgTlJXVHMuIFBlcmYgdGVzdHMgYXJlIGxvY2tl
ZAorICAgICAgICBiZWNhdXNlIGhlYXZ5IGxvYWQgY2F1c2VkIGJ5IHJ1bm5pbmcgb3RoZXIgdGVz
dHMgaW4gcGFyYWxsZWwKKyAgICAgICAgbWlnaHQgY2F1c2Ugc29tZSBvZiB0aGVtIHRvIHRpbWVv
dXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9pc19odHRwX3Rlc3QodGVzdF9maWxlKSBvciBz
ZWxmLl9pc19wZXJmX3Rlc3QodGVzdF9maWxlKQorCisgICAgZGVmIF90ZXN0X2lzX3Nsb3coc2Vs
ZiwgdGVzdF9maWxlKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9ucy5oYXNfbW9k
aWZpZXIodGVzdF9maWxlLCB0ZXN0X2V4cGVjdGF0aW9ucy5TTE9XKQorCisgICAgZGVmIG5lZWRz
X3NlcnZlcnMoc2VsZiwgdGVzdF9uYW1lcyk6CisgICAgICAgIHJldHVybiBhbnkoc2VsZi5fdGVz
dF9yZXF1aXJlc19sb2NrKHRlc3RfbmFtZSkgZm9yIHRlc3RfbmFtZSBpbiB0ZXN0X25hbWVzKSBh
bmQgc2VsZi5fb3B0aW9ucy5odHRwCisKKyAgICBkZWYgX3NldF91cF9ydW4oc2VsZiwgdGVzdF9u
YW1lcyk6CisgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCJDaGVja2luZyBidWls
ZCAuLi4iKQorICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5jaGVja19idWlsZChzZWxmLm5lZWRz
X3NlcnZlcnModGVzdF9uYW1lcykpOgorICAgICAgICAgICAgX2xvZy5lcnJvcigiQnVpbGQgY2hl
Y2sgZmFpbGVkIikKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgVGhpcyBt
dXN0IGJlIHN0YXJ0ZWQgYmVmb3JlIHdlIGNoZWNrIHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzLAor
ICAgICAgICAjIHNpbmNlIHRoZSBoZWxwZXIgbWF5IGRvIHRoaW5ncyB0byBtYWtlIHRoZSBzZXR1
cCBjb3JyZWN0LgorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgorICAgICAg
ICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoIlN0YXJ0aW5nIHBpeGVsIHRlc3QgaGVs
cGVyIC4uLiIpCisgICAgICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X2hlbHBlcigpCisKKyAgICAg
ICAgIyBDaGVjayB0aGF0IHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzICh0aGVtZXMsIGZvbnRzLCAu
Li4pIGFyZSBjb3JyZWN0LgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5ub2NoZWNrX3N5
c19kZXBzOgorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoIkNoZWNraW5n
IHN5c3RlbSBkZXBlbmRlbmNpZXMgLi4uIikKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wb3J0
LmNoZWNrX3N5c19kZXBzKHNlbGYubmVlZHNfc2VydmVycyh0ZXN0X25hbWVzKSk6CisgICAgICAg
ICAgICAgICAgc2VsZi5fcG9ydC5zdG9wX2hlbHBlcigpCisgICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jbG9iYmVyX29sZF9yZXN1bHRzOgor
ICAgICAgICAgICAgc2VsZi5fY2xvYmJlcl9vbGRfcmVzdWx0cygpCisKKyAgICAgICAgIyBDcmVh
dGUgdGhlIG91dHB1dCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgorICAg
ICAgICBzZWxmLl9wb3J0Lmhvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSkKKworICAgICAgICBzZWxmLl9wb3J0LnNldHVwX3Rlc3RfcnVu
KCkKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBydW4oc2VsZiwgYXJncyk6CisgICAg
ICAgICIiIlJ1biB0aGUgdGVzdHMgYW5kIHJldHVybiBhIFJ1bkRldGFpbHMgb2JqZWN0IHdpdGgg
dGhlIHJlc3VsdHMuIiIiCisgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVfdXBkYXRlKCJDb2xs
ZWN0aW5nIHRlc3RzIC4uLiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBhdGhzLCB0ZXN0
X25hbWVzID0gc2VsZi5fY29sbGVjdF90ZXN0cyhhcmdzKQorICAgICAgICBleGNlcHQgSU9FcnJv
cjoKKyAgICAgICAgICAgICMgVGhpcyBpcyByYWlzZWQgaWYgLS10ZXN0LWxpc3QgZG9lc24ndCBl
eGlzdAorICAgICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0
X2NvZGU9LTEpCisKKyAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRhdGUoIlBhcnNpbmcg
ZXhwZWN0YXRpb25zIC4uLiIpCisgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhw
ZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoc2VsZi5fcG9ydCwgdGVzdF9uYW1lcykKKworICAg
ICAgICB0ZXN0c190b19ydW4sIHRlc3RzX3RvX3NraXAgPSBzZWxmLl9wcmVwYXJlX2xpc3RzKHBh
dGhzLCB0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X2ZvdW5kKGxlbih0
ZXN0X25hbWVzKSwgbGVuKHRlc3RzX3RvX3J1biksIHNlbGYuX29wdGlvbnMucmVwZWF0X2VhY2gs
IHNlbGYuX29wdGlvbnMuaXRlcmF0aW9ucykKKworICAgICAgICAjIENoZWNrIHRvIG1ha2Ugc3Vy
ZSB3ZSdyZSBub3Qgc2tpcHBpbmcgZXZlcnkgdGVzdC4KKyAgICAgICAgaWYgbm90IHRlc3RzX3Rv
X3J1bjoKKyAgICAgICAgICAgIF9sb2cuY3JpdGljYWwoJ05vIHRlc3RzIHRvIHJ1bi4nKQorICAg
ICAgICAgICAgcmV0dXJuIHRlc3RfcnVuX3Jlc3VsdHMuUnVuRGV0YWlscyhleGl0X2NvZGU9LTEp
CisKKyAgICAgICAgaWYgbm90IHNlbGYuX3NldF91cF9ydW4odGVzdHNfdG9fcnVuKToKKyAgICAg
ICAgICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2RlPS0xKQor
CisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBpbml0aWFsX3Jlc3VsdHMgPSBzZWxmLl9ydW5fdGVzdHModGVzdHNfdG9fcnVuLCB0ZXN0
c190b19za2lwLCBzZWxmLl9vcHRpb25zLnJlcGVhdF9lYWNoLCBzZWxmLl9vcHRpb25zLml0ZXJh
dGlvbnMsCisgICAgICAgICAgICAgICAgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2Vz
KSwgcmV0cnlpbmc9RmFsc2UpCisKKyAgICAgICAgICAgIHRlc3RzX3RvX3JldHJ5ID0gc2VsZi5f
dGVzdHNfdG9fcmV0cnkoaW5pdGlhbF9yZXN1bHRzLCBpbmNsdWRlX2NyYXNoZXM9c2VsZi5fcG9y
dC5zaG91bGRfcmV0cnlfY3Jhc2hlcygpKQorICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5y
ZXRyeV9mYWlsdXJlcyBhbmQgdGVzdHNfdG9fcmV0cnkgYW5kIG5vdCBpbml0aWFsX3Jlc3VsdHMu
aW50ZXJydXB0ZWQ6CisgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcnKQorICAgICAgICAgICAg
ICAgIF9sb2cuaW5mbygiUmV0cnlpbmcgJWQgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLiIgJSBs
ZW4odGVzdHNfdG9fcmV0cnkpKQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnJykKKyAgICAg
ICAgICAgICAgICByZXRyeV9yZXN1bHRzID0gc2VsZi5fcnVuX3Rlc3RzKHRlc3RzX3RvX3JldHJ5
LCB0ZXN0c190b19za2lwPXNldCgpLCByZXBlYXRfZWFjaD0xLCBpdGVyYXRpb25zPTEsCisgICAg
ICAgICAgICAgICAgICAgIG51bV93b3JrZXJzPTEsIHJldHJ5aW5nPVRydWUpCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHJ5X3Jlc3VsdHMgPSBOb25lCisgICAgICAgIGZp
bmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbGVhbl91cF9ydW4oKQorCisgICAgICAgIGVuZF90
aW1lID0gdGltZS50aW1lKCkKKworICAgICAgICAjIFNvbWUgY3Jhc2ggbG9ncyBjYW4gdGFrZSBh
IGxvbmcgdGltZSB0byBiZSB3cml0dGVuIG91dCBzbyBsb29rCisgICAgICAgICMgZm9yIG5ldyBs
b2dzIGFmdGVyIHRoZSB0ZXN0IHJ1biBmaW5pc2hlcy4KKyAgICAgICAgc2VsZi5fbG9va19mb3Jf
bmV3X2NyYXNoX2xvZ3MoaW5pdGlhbF9yZXN1bHRzLCBzdGFydF90aW1lKQorICAgICAgICBpZiBy
ZXRyeV9yZXN1bHRzOgorICAgICAgICAgICAgc2VsZi5fbG9va19mb3JfbmV3X2NyYXNoX2xvZ3Mo
cmV0cnlfcmVzdWx0cywgc3RhcnRfdGltZSkKKworICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMg
PSB0ZXN0X3J1bl9yZXN1bHRzLnN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsIHNlbGYuX2V4
cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzKQorICAgICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3Jlc3VsdHMoZW5kX3RpbWUgLSBzdGFydF90aW1lLCBpbml0aWFsX3Jl
c3VsdHMsIHN1bW1hcml6ZWRfcmVzdWx0cykKKworICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9u
cy5kcnlfcnVuOgorICAgICAgICAgICAgc2VsZi5fcG9ydC5wcmludF9sZWFrc19zdW1tYXJ5KCkK
KyAgICAgICAgICAgIHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVzKHN1bW1hcml6ZWRfcmVzdWx0cywg
aW5pdGlhbF9yZXN1bHRzKQorCisgICAgICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl9maWxl
c3lzdGVtLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksICJyZXN1bHRzLmh0bWwiKQorICAg
ICAgICAgICAgc2VsZi5fY29weV9yZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRzX3BhdGgpCisgICAg
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnNob3dfcmVzdWx0cyBhbmQgKGluaXRpYWxfcmVzdWx0
cy51bmV4cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fb3B0aW9ucy5mdWxsX3Jlc3VsdHNfaHRtbCBh
bmQgaW5pdGlhbF9yZXN1bHRzLnRvdGFsX2ZhaWx1cmVzKSk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdHNfcGF0aCkKKworICAgICAgICBy
ZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKHNlbGYuX3BvcnQuZXhpdF9jb2RlX2Zy
b21fc3VtbWFyaXplZF9yZXN1bHRzKHN1bW1hcml6ZWRfcmVzdWx0cyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzLCBpbml0aWFs
X3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMpCisKKyAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCB0ZXN0
c190b19ydW4sIHRlc3RzX3RvX3NraXAsIHJlcGVhdF9lYWNoLCBpdGVyYXRpb25zLCBudW1fd29y
a2VycywgcmV0cnlpbmcpOgorICAgICAgICBuZWVkc19odHRwID0gc2VsZi5fcG9ydC5yZXF1aXJl
c19odHRwX3NlcnZlcigpIG9yIGFueShzZWxmLl9pc19odHRwX3Rlc3QodGVzdCkgZm9yIHRlc3Qg
aW4gdGVzdHNfdG9fcnVuKQorICAgICAgICBuZWVkc193ZWJzb2NrZXRzID0gYW55KHNlbGYuX2lz
X3dlYnNvY2tldF90ZXN0KHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bikKKworICAgICAg
ICB0ZXN0X2lucHV0cyA9IFtdCisgICAgICAgIGZvciBfIGluIHhyYW5nZShpdGVyYXRpb25zKToK
KyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzX3RvX3J1bjoKKyAgICAgICAgICAgICAgICBm
b3IgXyBpbiB4cmFuZ2UocmVwZWF0X2VhY2gpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2lu
cHV0cy5hcHBlbmQoc2VsZi5fdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0KSkKKworICAgICAgICBy
ZXR1cm4gc2VsZi5fcnVubmVyLnJ1bl90ZXN0cyhzZWxmLl9leHBlY3RhdGlvbnMsIHRlc3RfaW5w
dXRzLCB0ZXN0c190b19za2lwLCBudW1fd29ya2VycywgbmVlZHNfaHR0cCwgbmVlZHNfd2Vic29j
a2V0cywgcmV0cnlpbmcpCisKKyAgICBkZWYgX2NsZWFuX3VwX3J1bihzZWxmKToKKyAgICAgICAg
IiIiUmVzdG9yZXMgdGhlIHN5c3RlbSBhZnRlciB3ZSdyZSBkb25lIHJ1bm5pbmcgdGVzdHMuIiIi
CisgICAgICAgIF9sb2cuZGVidWcoImZsdXNoaW5nIHN0ZG91dCIpCisgICAgICAgIHN5cy5zdGRv
dXQuZmx1c2goKQorICAgICAgICBfbG9nLmRlYnVnKCJmbHVzaGluZyBzdGRlcnIiKQorICAgICAg
ICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgX2xvZy5kZWJ1Zygic3RvcHBpbmcgaGVscGVy
IikKKyAgICAgICAgc2VsZi5fcG9ydC5zdG9wX2hlbHBlcigpCisgICAgICAgIF9sb2cuZGVidWco
ImNsZWFuaW5nIHVwIHBvcnQiKQorICAgICAgICBzZWxmLl9wb3J0LmNsZWFuX3VwX3Rlc3RfcnVu
KCkKKworICAgIGRlZiBfbG9va19mb3JfbmV3X2NyYXNoX2xvZ3Moc2VsZiwgcnVuX3Jlc3VsdHMs
IHN0YXJ0X3RpbWUpOgorICAgICAgICAiIiJTaW5jZSBjcmFzaCBsb2dzIGNhbiB0YWtlIGEgbG9u
ZyB0aW1lIHRvIGJlIHdyaXR0ZW4gb3V0IGlmIHRoZSBzeXN0ZW0gaXMKKyAgICAgICAgICAgdW5k
ZXIgc3RyZXNzIGRvIGEgc2Vjb25kIHBhc3MgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBydW4uCisK
KyAgICAgICAgICAgcnVuX3Jlc3VsdHM6IHRoZSByZXN1bHRzIG9mIHRoZSB0ZXN0IHJ1bgorICAg
ICAgICAgICBzdGFydF90aW1lOiB0aW1lIHRoZSB0ZXN0cyBzdGFydGVkIGF0LiAgV2UncmUgbG9v
a2luZyBmb3IgY3Jhc2gKKyAgICAgICAgICAgICAgIGxvZ3MgYWZ0ZXIgdGhhdCB0aW1lLgorICAg
ICAgICAiIiIKKyAgICAgICAgY3Jhc2hlZF9wcm9jZXNzZXMgPSBbXQorICAgICAgICBmb3IgdGVz
dCwgcmVzdWx0IGluIHJ1bl9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9uYW1lLml0ZXJp
dGVtcygpOgorICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9IHRlc3RfZXhwZWN0YXRpb25z
LkNSQVNIKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9yIGZhaWx1
cmUgaW4gcmVzdWx0LmZhaWx1cmVzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZUNyYXNoKToKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjcmFzaGVkX3Byb2Nlc3Nlcy5hcHBlbmQoW3Rl
c3QsIGZhaWx1cmUucHJvY2Vzc19uYW1lLCBmYWlsdXJlLnBpZF0pCisKKyAgICAgICAgY3Jhc2hf
bG9ncyA9IHNlbGYuX3BvcnQubG9va19mb3JfbmV3X2NyYXNoX2xvZ3MoY3Jhc2hlZF9wcm9jZXNz
ZXMsIHN0YXJ0X3RpbWUpCisgICAgICAgIGlmIGNyYXNoX2xvZ3M6CisgICAgICAgICAgICBmb3Ig
dGVzdCwgY3Jhc2hfbG9nIGluIGNyYXNoX2xvZ3MuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICAg
ICAgd3JpdGVyID0gVGVzdFJlc3VsdFdyaXRlcihzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLCBzZWxm
Ll9wb3J0LCBzZWxmLl9wb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCksIHRlc3QpCisgICAgICAgICAg
ICAgICAgd3JpdGVyLndyaXRlX2NyYXNoX2xvZyhjcmFzaF9sb2cpCisKKyAgICBkZWYgX2Nsb2Ji
ZXJfb2xkX3Jlc3VsdHMoc2VsZik6CisgICAgICAgICMgSnVzdCBjbG9iYmVyIHRoZSBhY3R1YWwg
dGVzdCByZXN1bHRzIGRpcmVjdG9yaWVzIHNpbmNlIHRoZSBvdGhlcgorICAgICAgICAjIGZpbGVz
IGluIHRoZSByZXN1bHRzIGRpcmVjdG9yeSBhcmUgZXhwbGljaXRseSB1c2VkIGZvciBjcm9zcy1y
dW4KKyAgICAgICAgIyB0cmFja2luZy4KKyAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZV91cGRh
dGUoIkNsb2JiZXJpbmcgb2xkIHJlc3VsdHMgaW4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgIGxheW91dF90
ZXN0c19kaXIgPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKQorICAgICAgICBwb3NzaWJs
ZV9kaXJzID0gc2VsZi5fcG9ydC50ZXN0X2RpcnMoKQorICAgICAgICBmb3IgZGlybmFtZSBpbiBw
b3NzaWJsZV9kaXJzOgorICAgICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5pc2RpcihzZWxm
Ll9maWxlc3lzdGVtLmpvaW4obGF5b3V0X3Rlc3RzX2RpciwgZGlybmFtZSkpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucm10cmVlKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSwgZGlybmFtZSkpCisKKyAgICBkZWYgX3Rlc3RzX3RvX3JldHJ5
KHNlbGYsIHJ1bl9yZXN1bHRzLCBpbmNsdWRlX2NyYXNoZXMpOgorICAgICAgICByZXR1cm4gW3Jl
c3VsdC50ZXN0X25hbWUgZm9yIHJlc3VsdCBpbiBydW5fcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3Vs
dHNfYnlfbmFtZS52YWx1ZXMoKSBpZgorICAgICAgICAgICAgICAgICAgICgocmVzdWx0LnR5cGUg
IT0gdGVzdF9leHBlY3RhdGlvbnMuUEFTUykgYW5kCisgICAgICAgICAgICAgICAgICAgIChyZXN1
bHQudHlwZSAhPSB0ZXN0X2V4cGVjdGF0aW9ucy5NSVNTSU5HKSBhbmQKKyAgICAgICAgICAgICAg
ICAgICAgKHJlc3VsdC50eXBlICE9IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIIG9yIGluY2x1ZGVf
Y3Jhc2hlcykpXQorCisgICAgZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmLCBzdW1tYXJpemVk
X3Jlc3VsdHMsIGluaXRpYWxfcmVzdWx0cyk6CisgICAgICAgICIiIldyaXRlcyB0aGUgcmVzdWx0
cyBvZiB0aGUgdGVzdCBydW4gYXMgSlNPTiBmaWxlcyBpbnRvIHRoZSByZXN1bHRzCisgICAgICAg
IGRpciBhbmQgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGUgYXBwZW5naW5lIHNlcnZlci4KKworICAg
ICAgICBBcmdzOgorICAgICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0czogZGljdCBvZiByZXN1bHRz
CisgICAgICAgICAgaW5pdGlhbF9yZXN1bHRzOiBmdWxsIHN1bW1hcnkgb2JqZWN0CisgICAgICAg
ICIiIgorICAgICAgICBfbG9nLmRlYnVnKCJXcml0aW5nIEpTT04gZmlsZXMgaW4gJXMuIiAlIHNl
bGYuX3Jlc3VsdHNfZGlyZWN0b3J5KQorCisgICAgICAgICMgRklYTUU6IFVwbG9hZCBzdGF0cy5q
c29uIHRvIHRoZSBzZXJ2ZXIgYW5kIGRlbGV0ZSB0aW1lc19tcy4KKyAgICAgICAgdGltZXNfdHJp
ZSA9IGpzb25fcmVzdWx0c19nZW5lcmF0b3IudGVzdF90aW1pbmdzX3RyaWUoc2VsZi5fcG9ydCwg
aW5pdGlhbF9yZXN1bHRzLnJlc3VsdHNfYnlfbmFtZS52YWx1ZXMoKSkKKyAgICAgICAgdGltZXNf
anNvbl9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5
LCAidGltZXNfbXMuanNvbiIpCisgICAgICAgIGpzb25fcmVzdWx0c19nZW5lcmF0b3Iud3JpdGVf
anNvbihzZWxmLl9maWxlc3lzdGVtLCB0aW1lc190cmllLCB0aW1lc19qc29uX3BhdGgpCisKKyAg
ICAgICAgc3RhdHNfdHJpZSA9IHNlbGYuX3N0YXRzX3RyaWUoaW5pdGlhbF9yZXN1bHRzKQorICAg
ICAgICBzdGF0c19wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGly
ZWN0b3J5LCAic3RhdHMuanNvbiIpCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4
dF9maWxlKHN0YXRzX3BhdGgsIGpzb24uZHVtcHMoc3RhdHNfdHJpZSkpCisKKyAgICAgICAgZnVs
bF9yZXN1bHRzX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcmVzdWx0c19kaXJl
Y3RvcnksICJmdWxsX3Jlc3VsdHMuanNvbiIpCisgICAgICAgICMgV2Ugd3JpdGUgZnVsbF9yZXN1
bHRzLmpzb24gb3V0IGFzIGpzb25wIGJlY2F1c2Ugd2UgbmVlZCB0byBsb2FkIGl0IGZyb20gYSBm
aWxlIHVybCBhbmQgQ2hyb21pdW0gZG9lc24ndCBhbGxvdyB0aGF0LgorICAgICAgICBqc29uX3Jl
c3VsdHNfZ2VuZXJhdG9yLndyaXRlX2pzb24oc2VsZi5fZmlsZXN5c3RlbSwgc3VtbWFyaXplZF9y
ZXN1bHRzLCBmdWxsX3Jlc3VsdHNfcGF0aCwgY2FsbGJhY2s9IkFERF9SRVNVTFRTIikKKworICAg
ICAgICBnZW5lcmF0b3IgPSBqc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5KU09OTGF5b3V0
UmVzdWx0c0dlbmVyYXRvcigKKyAgICAgICAgICAgIHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMu
YnVpbGRlcl9uYW1lLCBzZWxmLl9vcHRpb25zLmJ1aWxkX25hbWUsCisgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLmJ1aWxkX251bWJlciwgc2VsZi5fcmVzdWx0c19kaXJlY3RvcnksCisgICAgICAg
ICAgICBCVUlMREVSX0JBU0VfVVJMLAorICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLCBp
bml0aWFsX3Jlc3VsdHMsCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRlc3RfcmVzdWx0c19z
ZXJ2ZXIsCisgICAgICAgICAgICAibGF5b3V0LXRlc3RzIiwKKyAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMubWFzdGVyX25hbWUpCisKKyAgICAgICAgX2xvZy5kZWJ1ZygiRmluaXNoZWQgd3JpdGlu
ZyBKU09OIGZpbGVzLiIpCisKKyAgICAgICAganNvbl9maWxlcyA9IFsiaW5jcmVtZW50YWxfcmVz
dWx0cy5qc29uIiwgImZ1bGxfcmVzdWx0cy5qc29uIiwgInRpbWVzX21zLmpzb24iXQorCisgICAg
ICAgIGdlbmVyYXRvci51cGxvYWRfanNvbl9maWxlcyhqc29uX2ZpbGVzKQorCisgICAgICAgIGlu
Y3JlbWVudGFsX3Jlc3VsdHNfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9yZXN1
bHRzX2RpcmVjdG9yeSwgImluY3JlbWVudGFsX3Jlc3VsdHMuanNvbiIpCisKKyAgICAgICAgIyBS
ZW1vdmUgdGhlc2UgZmlsZXMgZnJvbSB0aGUgcmVzdWx0cyBkaXJlY3Rvcnkgc28gdGhleSBkb24n
dCB0YWtlIHVwIHRvbyBtdWNoIHNwYWNlIG9uIHRoZSBidWlsZGJvdC4KKyAgICAgICAgIyBUaGUg
dG9vbHMgdXNlIHRoZSB2ZXJzaW9uIHdlIHVwbG9hZGVkIHRvIHRoZSByZXN1bHRzIHNlcnZlciBh
bnl3YXkuCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucmVtb3ZlKHRpbWVzX2pzb25fcGF0aCkK
KyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5yZW1vdmUoaW5jcmVtZW50YWxfcmVzdWx0c19wYXRo
KQorCisgICAgZGVmIF9jb3B5X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYsIGRlc3RpbmF0aW9uX3Bh
dGgpOgorICAgICAgICBiYXNlX2RpciA9IHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtpdF9iYXNl
KCdMYXlvdXRUZXN0cycsICdmYXN0JywgJ2hhcm5lc3MnKQorICAgICAgICByZXN1bHRzX2ZpbGUg
PSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFzZV9kaXIsICdyZXN1bHRzLmh0bWwnKQorICAgICAg
ICAjIE5vdGUgdGhhdCB0aGUgcmVzdWx0cy5odG1sIHRlbXBsYXRlIGZpbGUgd29uJ3QgZXhpc3Qg
d2hlbiB3ZSdyZSB1c2luZyBhIE1vY2tGaWxlU3lzdGVtIGR1cmluZyB1bml0IHRlc3RzLAorICAg
ICAgICAjIHNvIG1ha2Ugc3VyZSBpdCBleGlzdHMgYmVmb3JlIHdlIHRyeSB0byBjb3B5IGl0Lgor
ICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhyZXN1bHRzX2ZpbGUpOgorICAgICAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbS5jb3B5ZmlsZShyZXN1bHRzX2ZpbGUsIGRlc3RpbmF0aW9u
X3BhdGgpCisKKyAgICBkZWYgX3N0YXRzX3RyaWUoc2VsZiwgaW5pdGlhbF9yZXN1bHRzKToKKyAg
ICAgICAgZGVmIF93b3JrZXJfbnVtYmVyKHdvcmtlcl9uYW1lKToKKyAgICAgICAgICAgIHJldHVy
biBpbnQod29ya2VyX25hbWUuc3BsaXQoJy8nKVsxXSkgaWYgd29ya2VyX25hbWUgZWxzZSAtMQor
CisgICAgICAgIHN0YXRzID0ge30KKyAgICAgICAgZm9yIHJlc3VsdCBpbiBpbml0aWFsX3Jlc3Vs
dHMucmVzdWx0c19ieV9uYW1lLnZhbHVlcygpOgorICAgICAgICAgICAgaWYgcmVzdWx0LnR5cGUg
IT0gdGVzdF9leHBlY3RhdGlvbnMuU0tJUDoKKyAgICAgICAgICAgICAgICBzdGF0c1tyZXN1bHQu
dGVzdF9uYW1lXSA9IHsncmVzdWx0cyc6IChfd29ya2VyX251bWJlcihyZXN1bHQud29ya2VyX25h
bWUpLCByZXN1bHQudGVzdF9udW1iZXIsIHJlc3VsdC5waWQsIGludChyZXN1bHQudGVzdF9ydW5f
dGltZSAqIDEwMDApLCBpbnQocmVzdWx0LnRvdGFsX3J1bl90aW1lICogMTAwMCkpfQorICAgICAg
ICBzdGF0c190cmllID0ge30KKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHN0YXRzLml0ZXJp
dGVtcygpOgorICAgICAgICAgICAganNvbl9yZXN1bHRzX2dlbmVyYXRvci5hZGRfcGF0aF90b190
cmllKG5hbWUsIHZhbHVlLCBzdGF0c190cmllKQorICAgICAgICByZXR1cm4gc3RhdHNfdHJpZQog
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6
XSwgc3lzLnN0ZG91dCwgc3lzLnN0ZGVycikpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50
ZWdyYXRpb250ZXN0LnB5CmluZGV4IGVhYTgwYzliYmY3OGVmM2U1ZjFiNDJmNzgzZmJlODk5YTYz
ZGYwMmQuLjMwMmUxNmRiMDhlM2EwZGRmYTZkMDhiMjExODYyZDZhNzE1ZmEwMzAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNf
aW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CkBAIC0yOCwxOCArMjgsMTEg
QEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBjb2RlY3MKIGltcG9y
dCBqc29uCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZvcm0KLWltcG9y
dCBRdWV1ZQotaW1wb3J0IHJlCiBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCBzeXMKLWltcG9ydCB0
aHJlYWQKIGltcG9ydCB0aW1lCi1pbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlLCBwYXRoCkBA
IC00NywxMiArNDAsMTEgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9nc191
bml0dGVzdCBpbXBvcnQgbWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXIKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sg
aW1wb3J0IE1vY2tIb3N0Ci0KLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cwotZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgUG9ydAorZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucworZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0IFRlc3RSdW5SZXN1
bHRzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCB0ZXN0Ci1mcm9tIHdl
YmtpdHB5LnRlc3Quc2tpcCBpbXBvcnQgc2tpcF9pZgorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5
Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9j
a09wdGlvbnMKIAogCkBAIC04MjMsMTIgKzgxNSw2IEBAIGNsYXNzIEVuZFRvRW5kVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGNvbXByZXNzZWRfcmVzdWx0cyA9IGpzb24ubG9hZHMo
anNvbl90b19ldmFsKQogICAgICAgICByZXR1cm4gY29tcHJlc3NlZF9yZXN1bHRzCiAKLSAgICAg
ICAgIyBDaGVjayB0aGF0IHdlIHJlY29yZGVkIHRoZSB0ZXN0IHJ1biB0aW1lcyBhbmQgb3JkZXJp
bmcuIE5vdGUgdGhhdAotICAgICAgICAjIHByZXR0eSBtdWNoIG5vbmUgb2YgdGhlIGFjdHVhbCB2
YWx1ZXMgY2FuIGJlIGd1YXJhbnRlZWQsIGJ1dCBhdCBsZWFzdAotICAgICAgICAjIHdlIGNhbiB0
ZXN0IHRoYXQgdGhleSdyZSB0aGVyZS4KLSAgICAgICAgc3RhdHMgPSBqc29uLmxvYWRzKGhvc3Qu
ZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSgnL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3N0YXRz
Lmpzb24nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RhdHNbJ2h0dHAnXVsndGVz
dHMnXVsncGFzc2VzJ11bJ2ltYWdlLmh0bWwnXVsncmVzdWx0cyddKSwgNSkKLQogICAgIGRlZiB0
ZXN0X3JlZnRlc3Rfd2l0aF90d29fbm90cmVmcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQg
d2UgdXBkYXRlIGV4cGVjdGF0aW9ucyBpbiBwbGFjZS4gSWYgdGhlIGV4cGVjdGF0aW9uCiAgICAg
ICAgICMgaXMgbWlzc2luZywgdXBkYXRlIHRoZSBleHBlY3RlZCBnZW5lcmljIGxvY2F0aW9uLgpA
QCAtOTU3LDMgKzk0Myw1MiBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgcnVuX3dlYmtpdF90ZXN0cy5FWENFUFRJ
T05BTF9FWElUX1NUQVRVUykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHJ1bl93ZWJr
aXRfdGVzdHMucnVuID0gb3JpZ19ydW5fZm4KKworCitjbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbmVlZHNfc2VydmVycyhzZWxmKToKKyAgICAgICAg
ZGVmIGdldF9tYW5hZ2VyKCk6CisgICAgICAgICAgICBwb3J0ID0gTW9jaygpICAjIEZJWE1FOiBV
c2UgYSB0aWdodGVyIG1vY2suCisgICAgICAgICAgICBwb3J0LlRFU1RfUEFUSF9TRVBBUkFUT1Ig
PSAnLycKKyAgICAgICAgICAgIG1hbmFnZXIgPSBydW5fd2Via2l0X3Rlc3RzLk1hbmFnZXIocG9y
dCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyhodHRwPVRydWUsIG1heF9sb2NrZWRfc2hhcmRzPTEpLCBw
cmludGVyPU1vY2soKSkKKyAgICAgICAgICAgIHJldHVybiBtYW5hZ2VyCisKKyAgICAgICAgbWFu
YWdlciA9IGdldF9tYW5hZ2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5hZ2VyLm5l
ZWRzX3NlcnZlcnMoWydmYXN0L2h0bWwnXSkpCisKKyAgICAgICAgbWFuYWdlciA9IGdldF9tYW5h
Z2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hbmFnZXIubmVlZHNfc2VydmVycyhbJ2h0
dHAvdGVzdHMvbWlzYyddKSkKKworICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X25lZWRzX3NlcnZl
cnMoc2VsZik6CisgICAgICAgIGRlZiBnZXRfbWFuYWdlcigpOgorICAgICAgICAgICAgaG9zdCA9
IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIHBvcnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQoKQor
ICAgICAgICAgICAgbWFuYWdlciA9IHJ1bl93ZWJraXRfdGVzdHMuTWFuYWdlcihwb3J0LCBvcHRp
b25zPU1vY2tPcHRpb25zKHRlc3RfbGlzdD1Ob25lLCBodHRwPVRydWUsIG1heF9sb2NrZWRfc2hh
cmRzPTEpLCBwcmludGVyPU1vY2soKSkKKyAgICAgICAgICAgIHJldHVybiBtYW5hZ2VyCisKKyAg
ICAgICAgbWFuYWdlciA9IGdldF9tYW5hZ2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSht
YW5hZ2VyLm5lZWRzX3NlcnZlcnMoWydmYXN0L2h0bWwnXSkpCisKKyAgICAgICAgbWFuYWdlciA9
IGdldF9tYW5hZ2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hbmFnZXIubmVlZHNfc2Vy
dmVycyhbJ2h0dHAvdGVzdHMvbWltZSddKSkKKworICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0g
J3dpbjMyJzoKKyAgICAgICAgICAgIG1hbmFnZXIgPSBnZXRfbWFuYWdlcigpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKG1hbmFnZXIubmVlZHNfc2VydmVycyhbJ2Zhc3RcXGh0bWwnXSkp
CisKKyAgICAgICAgICAgIG1hbmFnZXIgPSBnZXRfbWFuYWdlcigpCisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUobWFuYWdlci5uZWVkc19zZXJ2ZXJzKFsnaHR0cFxcdGVzdHNcXG1pbWUnXSkp
CisKKyAgICBkZWYgdGVzdF9sb29rX2Zvcl9uZXdfY3Jhc2hfbG9ncyhzZWxmKToKKyAgICAgICAg
ZGVmIGdldF9tYW5hZ2VyKCk6CisgICAgICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAg
ICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgndGVzdC1tYWMtbGVvcGFyZCcpCisg
ICAgICAgICAgICBtYW5hZ2VyID0gcnVuX3dlYmtpdF90ZXN0cy5NYW5hZ2VyKHBvcnQsIG9wdGlv
bnM9TW9ja09wdGlvbnModGVzdF9saXN0PU5vbmUsIGh0dHA9VHJ1ZSwgbWF4X2xvY2tlZF9zaGFy
ZHM9MSksIHByaW50ZXI9TW9jaygpKQorICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIKKyAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5Lmdl
dCgndGVzdC1tYWMtbGVvcGFyZCcpCisgICAgICAgIHRlc3RzID0gWydmYWlsdXJlcy9leHBlY3Rl
ZC9jcmFzaC5odG1sJ10KKyAgICAgICAgZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMu
VGVzdEV4cGVjdGF0aW9ucyhwb3J0LCB0ZXN0cykKKyAgICAgICAgcnVuX3Jlc3VsdHMgPSBUZXN0
UnVuUmVzdWx0cyhleHBlY3RhdGlvbnMsIGxlbih0ZXN0cykpCisgICAgICAgIG1hbmFnZXIgPSBn
ZXRfbWFuYWdlcigpCisgICAgICAgIG1hbmFnZXIuX2xvb2tfZm9yX25ld19jcmFzaF9sb2dzKHJ1
bl9yZXN1bHRzLCB0aW1lLnRpbWUoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkKaW5kZXgg
YTc5NzI2OGYxNmYxYmIwNDJkZWM0NzVmOTdmYTk4MjJlNjlmNzc2OS4uNzE1NjI0NWE0Y2E3ZWZh
YTI2N2M0ODRhYzkyNDM4NWYzMmJjNTU5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkK
QEAgLTM4LDcgKzM4LDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBN
b2NrSG9zdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGxvZ3Rlc3RpbmcK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Ci1mcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWFuYWdlcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>