<?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>65886</bug_id>
          
          <creation_ts>2011-08-08 15:58:20 -0700</creation_ts>
          <short_desc>Remove deduplicate-tests</short_desc>
          <delta_ts>2011-08-08 17:19:54 -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>New Bugs</component>
          <version>528+ (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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>evan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448332</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-08 15:58:20 -0700</bug_when>
    <thetext>Remove deduplicate-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448335</commentid>
    <comment_count>1</comment_count>
      <attachid>103307</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-08 15:59:51 -0700</bug_when>
    <thetext>Created attachment 103307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448336</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-08 16:00:58 -0700</bug_when>
    <thetext>BTW, does webkit-patch bulk-optimize-baselines know how to find duplicate png files?  It would need to read the checksum out of the png rather than just diffing png files to catch all cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448338</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-08 16:03:34 -0700</bug_when>
    <thetext>&gt; BTW, does webkit-patch bulk-optimize-baselines know how to find duplicate png files?  It would need to read the checksum out of the png rather than just diffing png files to catch all cases.

The tool is dumb and just taks the sha1 hash of the whole file.  If there are two PNGs that are bit-by-bit different yet semantically the same, then bulk-optimize-baselines treats them as different.

We can do something smarter here if that&apos;s important.  So far, I haven&apos;t seen any examples, but I haven&apos;t been looking either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448378</commentid>
    <comment_count>4</comment_count>
      <attachid>103307</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 17:19:49 -0700</bug_when>
    <thetext>Comment on attachment 103307
Patch

Clearing flags on attachment: 103307

Committed r92656: &lt;http://trac.webkit.org/changeset/92656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448379</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 17:19:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103307</attachid>
            <date>2011-08-08 15:59:51 -0700</date>
            <delta_ts>2011-08-08 17:19:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65886-20110808155949.patch</filename>
            <type>text/plain</type>
            <size>26543</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkyNjQ4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTEtMDgtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZW1vdmUgZGVkdXBsaWNhdGUtdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1ODg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzY3JpcHQgaXMgcmVkdW5kYW50IHdpdGggIndl
YmtpdC1wYXRjaCBidWxrLW9wdGltaXplLWJhc2VsaW5lcyIsCisgICAgICAgIHdoaWNoIGNhbiBm
aW5kIG1hbnkgbW9yZSBkdXBsaWNhdGVzIHRoYW4gZGVkdXBsaWNhdGUtdGVzdHMgYmVjYXVzZQor
ICAgICAgICBidWxrLW9wdGltaXplLWJhc2VsaW5lcyBjYW4gbW92ZSByZXN1bHRzIGFyb3VuZCB3
aGVyZWFzCisgICAgICAgIGRlZHVwbGljYXRlLXRlc3RzIGNhbiBvbmx5IHJlbW92ZSByZXN1bHRz
LgorCisgICAgICAgICogU2NyaXB0cy9kZWR1cGxpY2F0ZS10ZXN0czogUmVtb3ZlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL2RlZHVwbGljYXRlX3Rlc3RzLnB5OiBS
ZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvZGVkdXBsaWNh
dGVfdGVzdHNfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisKIDIwMTEtMDgtMDggIEx1Y2FzIEZvcnNj
aGxlciAgPGxmb3JzY2hsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0cmlnZ2VycyBmb3Ig
TGlvbiBXSzIgdGVzdCBib3RzLgpJbmRleDogVG9vbHMvU2NyaXB0cy9kZWR1cGxpY2F0ZS10ZXN0
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2RlZHVwbGljYXRlLXRlc3RzCShyZXZpc2lv
biA5MjYzNykKKysrIFRvb2xzL1NjcmlwdHMvZGVkdXBsaWNhdGUtdGVzdHMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsODQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0iIiJkZWR1cGxpY2F0ZS10ZXN0cyAtLSBwcmludCB0ZXN0IHJl
c3VsdHMgZHVwbGljYXRlZCBiZXR3ZWVuIHBsYXRmb3Jtcy4KLQotSWYgcGxhdGZvcm0vbWFjLWxl
b3BhcmQgaXMgbWlzc2luZyBhbiBleHBlY3RlZCB0ZXN0IG91dHB1dCwgd2UgZmFsbCBiYWNrIG9u
Ci1wbGF0Zm9ybS9tYWMuICBUaGlzIG1lYW5zIGl0J3MgcG9zc2libGUgdG8gZ3JvdyByZWR1bmRh
bnQgdGVzdCBvdXRwdXRzLAotd2hlcmUgd2UgaGF2ZSB0aGUgc2FtZSBleHBlY3RlZCBkYXRhIGlu
IGJvdGggYSBwbGF0Zm9ybSBkaXJlY3RvcnkgYW5kIGFub3RoZXIKLXBsYXRmb3JtIGl0IGZhbGxz
IGJhY2sgb24uCi0KLVRoaXMgY29tbWFuZCBkdW1wcyBvdXQgYWxsIHN1Y2ggZmlsZXMuICBZb3Ug
Y2FuIHVzZSBpdCBsaWtlIHRoaXM6Ci0gIGRlZHVwbGljYXRlLXRlc3RzIC0tdmVyYm9zZSAgIyBw
cmludCBvdXQgdGhlIGR1cGxpY2F0ZWQgZmlsZXMKLSAgZGVkdXBsaWNhdGUtdGVzdHMgfCB4YXJn
cyBnaXQgcm0gICAjIGRlbGV0ZSB0aGVtCi0iIiIKLQotCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9y
dCB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxvZ3V0aWxzIGFzIGxvZ3V0aWxzCi1pbXBvcnQgd2Vi
a2l0cHkudG9fYmVfbW92ZWQuZGVkdXBsaWNhdGVfdGVzdHMgYXMgZGVkdXBsaWNhdGVfdGVzdHMK
LQotCi1kZWYgcGFyc2VfYXJncygpOgotICAgICIiIlByb3ZpZGVzIGEgZGVmYXVsdCBzZXQgb2Yg
Y29tbWFuZCBsaW5lIGFyZ3MuCi0KLSAgICBSZXR1cm5zIGEgdHVwbGUgb2Ygb3B0aW9ucywgYXJn
cyBmcm9tIG9wdHBhcnNlIiIiCi0KLSAgICBjb25maWd1cmF0aW9uX29wdGlvbnMgPSBbCi0gICAg
ICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItdiIsICItLXZlcmJvc2UiLCBkZXN0PSJ2ZXJib3Nl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iVmVyYm9zZSBv
dXRwdXQuIiksCi0gICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItZyIsICItLWdsb2IiLCBk
ZXN0PSJnbG9iX3BhdHRlcm4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PSIqLWV4cGVjdGVkKiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlNwZWNp
ZnkgdGhlIGdsb2IgdG8gZmlsdGVyIHRoZSBmaWxlcywgZGVmYXVsdHMgdG8gKi1leHBlY3RlZCou
IiksCi0gICAgXQotCi0gICAgb3B0aW9uX2xpc3QgPSAoY29uZmlndXJhdGlvbl9vcHRpb25zKQot
ICAgIG9wdGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9b3B0
aW9uX2xpc3QpCi0KLSAgICBvcHRpb25zLCBfID0gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKCkK
LQotICAgIHJldHVybiBvcHRpb25zCi0KLQotZGVmIHJ1bihvcHRpb25zKToKLSAgICBsb2d1dGls
cy5jb25maWd1cmVfbG9nZ2luZygpCi0gICAgaWYgb3B0aW9ucy52ZXJib3NlOgotICAgICAgICBm
b3JtYXQgPSAoIiogJSh0ZXN0KXNcbiIKLSAgICAgICAgICAgICAgICAgICJcdHJlZHVuZGFudGx5
IG9uICUocGxhdGZvcm0pcyBhbmQgJShmYWxsYmFjaylzXG4iCi0gICAgICAgICAgICAgICAgICAi
XHRjb25zaWRlciBkZWxldGluZyAlKHBhdGgpcyIpCi0gICAgZWxzZToKLSAgICAgICAgZm9ybWF0
ID0gIiUocGF0aClzIgotCi0gICAgZm9yIGR1cGUgaW4gZGVkdXBsaWNhdGVfdGVzdHMuZGVkdXBs
aWNhdGUob3B0aW9ucy5nbG9iX3BhdHRlcm4pOgotICAgICAgICBwcmludChmb3JtYXQgJSBkdXBl
KQotCi0KLWRlZiBtYWluKCk6Ci0gICAgb3B0aW9ucyA9IHBhcnNlX2FyZ3MoKQotICAgIHJ1bihv
cHRpb25zKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL2RlZHVwbGljYXRlX3Rlc3RzLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvZGVkdXBs
aWNhdGVfdGVzdHMucHkJKHJldmlzaW9uIDkyNjM3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b19iZV9tb3ZlZC9kZWR1cGxpY2F0ZV90ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAtMSwy
NDQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0iIiJkZWR1cGxpY2F0ZV90ZXN0cyAtLSBsaXN0cyBkdXBsaWNhdGVkIGJldHdl
ZW4gcGxhdGZvcm1zLgotCi1JZiBwbGF0Zm9ybS9tYWMtbGVvcGFyZCBpcyBtaXNzaW5nIGFuIGV4
cGVjdGVkIHRlc3Qgb3V0cHV0LCB3ZSBmYWxsIGJhY2sgb24KLXBsYXRmb3JtL21hYy4gIFRoaXMg
bWVhbnMgaXQncyBwb3NzaWJsZSB0byBncm93IHJlZHVuZGFudCB0ZXN0IG91dHB1dHMsCi13aGVy
ZSB3ZSBoYXZlIHRoZSBzYW1lIGV4cGVjdGVkIGRhdGEgaW4gYm90aCBhIHBsYXRmb3JtIGRpcmVj
dG9yeSBhbmQgYW5vdGhlcgotcGxhdGZvcm0gaXQgZmFsbHMgYmFjayBvbi4KLSIiIgotCi1pbXBv
cnQgY29sbGVjdGlvbnMKLWltcG9ydCBmbm1hdGNoCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9j
ZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgcmUKLQotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tv
dXQgaW1wb3J0IHNjbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRp
dmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgbG9ndXRpbHMKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3NwYXRoCi1mcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5IGFzIHBvcnRfZmFjdG9yeQotCi1fbG9nID0gbG9ndXRp
bHMuZ2V0X2xvZ2dlcihfX2ZpbGVfXykKLQotX0JBU0VfUExBVEZPUk0gPSAnYmFzZScKLQotCi1k
ZWYgcG9ydF9mYWxsYmFja3MoKToKLSAgICAiIiJHZXQgdGhlIHBvcnQgZmFsbGJhY2sgaW5mb3Jt
YXRpb24uCi0gICAgUmV0dXJuczoKLSAgICAgICAgQSBkaWN0aW9uYXJ5IG1hcHBpbmcgcGxhdGZv
cm0gbmFtZSB0byBhIGxpc3Qgb2Ygb3RoZXIgcGxhdGZvcm1zIHRvIGZhbGwKLSAgICAgICAgYmFj
ayBvbi4gIEFsbCBwbGF0Zm9ybXMgZmFsbCBiYWNrIG9uICdiYXNlJy4KLSAgICAiIiIKLSAgICBm
YWxsYmFja3MgPSB7X0JBU0VfUExBVEZPUk06IFtdfQotICAgIGZvciBwb3J0X25hbWUgaW4gcG9y
dF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBs
YXRmb3JtcyA9IHBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKS5iYXNlbGluZV9zZWFyY2hfcGF0
aCgpCi0gICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgX2xv
Zy5lcnJvcigiJyVzJyBsYWNrcyBiYXNlbGluZV9zZWFyY2hfcGF0aCgpLCBwbGVhc2UgZml4LiIg
JSBwb3J0X25hbWUpCi0gICAgICAgICAgICBmYWxsYmFja3NbcG9ydF9uYW1lXSA9IFtfQkFTRV9Q
TEFURk9STV0KLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZhbGxiYWNrc1twb3J0X25h
bWVdID0gW29zLnBhdGguYmFzZW5hbWUocCkgZm9yIHAgaW4gcGxhdGZvcm1zXVsxOl0KLSAgICAg
ICAgZmFsbGJhY2tzW3BvcnRfbmFtZV0uYXBwZW5kKF9CQVNFX1BMQVRGT1JNKQotCi0gICAgcmV0
dXJuIGZhbGxiYWNrcwotCi0KLWRlZiBwYXJzZV9naXRfb3V0cHV0KGdpdF9vdXRwdXQsIGdsb2Jf
cGF0dGVybik6Ci0gICAgIiIiUGFyc2VzIHRoZSBvdXRwdXQgb2YgZ2l0IGxzLXRyZWUgYW5kIGZp
bHRlcnMgYmFzZWQgb24gZ2xvYl9wYXR0ZXJuLgotICAgIEFyZ3M6Ci0gICAgICAgIGdpdF9vdXRw
dXQ6IHJlc3VsdCBvZiBnaXQgbHMtdHJlZSAtciBIRUFEIExheW91dFRlc3RzLgotICAgICAgICBn
bG9iX3BhdHRlcm46IGEgcGF0dGVybiB0byBmaWx0ZXIgdGhlIGZpbGVzLgotICAgIFJldHVybnM6
Ci0gICAgICAgIEEgZGljdGlvbmFyeSBtYXBwaW5nICh0ZXN0IG5hbWUsIGhhc2ggb2YgY29udGVu
dCkgPT4gW3BhdGhzXQotICAgICIiIgotICAgIGhhc2hlcyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRk
aWN0KHNldCkKLSAgICBmb3IgbGluZSBpbiBnaXRfb3V0cHV0LnNwbGl0KCdcbicpOgotICAgICAg
ICBpZiBub3QgbGluZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGF0dHJzLCBwYXRoID0g
bGluZS5zdHJpcCgpLnNwbGl0KCdcdCcpCi0gICAgICAgIGlmIG5vdCBmbm1hdGNoLmZubWF0Y2go
cGF0aCwgZ2xvYl9wYXR0ZXJuKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHBhdGgg
PSBwYXRoW2xlbignTGF5b3V0VGVzdHMvJyk6XQotICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHIn
XihwbGF0Zm9ybS8uKj8vKT8oLiopJywgcGF0aCkKLSAgICAgICAgdGVzdCA9IG1hdGNoLmdyb3Vw
KDIpCi0gICAgICAgIF8sIF8sIGhhc2ggPSBhdHRycy5zcGxpdCgnICcpCi0gICAgICAgIGhhc2hl
c1sodGVzdCwgaGFzaCldLmFkZChwYXRoKQotICAgIHJldHVybiBoYXNoZXMKLQotCi1kZWYgY2x1
c3Rlcl9maWxlX2hhc2hlcyhnbG9iX3BhdHRlcm4pOgotICAgICIiIkdldCB0aGUgaGFzaGVzIG9m
IGFsbCB0aGUgdGVzdCBleHBlY3RhdGlvbnMgaW4gdGhlIHRyZWUuCi0gICAgV2UgY2hlYXQgYW5k
IHVzZSBnaXQncyBoYXNoZXMuCi0gICAgQXJnczoKLSAgICAgICAgZ2xvYl9wYXR0ZXJuOiBhIHBh
dHRlcm4gdG8gZmlsdGVyIHRoZSBmaWxlcy4KLSAgICBSZXR1cm5zOgotICAgICAgICBBIGRpY3Rp
b25hcnkgbWFwcGluZyAodGVzdCBuYW1lLCBoYXNoIG9mIGNvbnRlbnQpID0+IFtwYXRoc10KLSAg
ICAiIiIKLQotICAgICMgQSBtYXAgb2YgZmlsZSBoYXNoID0+IHNldCBvZiBhbGwgZmlsZXMgd2l0
aCB0aGF0IGhhc2guCi0gICAgaGFzaGVzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3Qoc2V0KQot
Ci0gICAgIyBGaWxsIGluIHRoZSBtYXAuCi0gICAgY21kID0gKCdnaXQnLCAnbHMtdHJlZScsICct
cicsICdIRUFEJywgJ0xheW91dFRlc3RzJykKLSAgICB0cnk6Ci0gICAgICAgIGdpdF9vdXRwdXQg
PSBleGVjdXRpdmUuRXhlY3V0aXZlKCkucnVuX2NvbW1hbmQoY21kLAotICAgICAgICAgICAgY3dk
PXNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKSkKLSAgICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAg
ICAgaWYgZS5lcnJubyA9PSAyOiAgIyBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LgotICAgICAg
ICAgICAgX2xvZy5lcnJvcigiRXJyb3I6ICdObyBzdWNoIGZpbGUnIHdoZW4gcnVubmluZyBnaXQu
IikKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIlRoaXMgc2NyaXB0IHJlcXVpcmVzIGdpdC4iKQot
ICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgcmFpc2UgZQotICAgIHJldHVybiBwYXJz
ZV9naXRfb3V0cHV0KGdpdF9vdXRwdXQsIGdsb2JfcGF0dGVybikKLQotCi1kZWYgZGlybmFtZV90
b19wbGF0Zm9ybShkaXJuYW1lKToKLSAgICBpZiBkaXJuYW1lID09ICdjaHJvbWl1bS1saW51eCc6
Ci0gICAgICAgIHJldHVybiAnY2hyb21pdW0tbGludXgteDg2XzY0JwotICAgIGVsaWYgZGlybmFt
ZSA9PSAnY2hyb21pdW0td2luJzoKLSAgICAgICAgcmV0dXJuICdjaHJvbWl1bS13aW4td2luNycK
LSAgICBlbGlmIGRpcm5hbWUgPT0gJ2Nocm9taXVtLW1hYyc6Ci0gICAgICAgIHJldHVybiAnY2hy
b21pdW0tbWFjLXNub3dsZW9wYXJkJwotICAgIHJldHVybiBkaXJuYW1lCi0KLWRlZiBleHRyYWN0
X3BsYXRmb3JtcyhwYXRocyk6Ci0gICAgIiIiRXh0cmFjdHMgdGhlIHBsYXRmb3JtcyBmcm9tIGEg
bGlzdCBvZiBwYXRocyBtYXRjaGluZyBecGxhdGZvcm0vKC4qPykvLgotICAgIEFyZ3M6Ci0gICAg
ICAgIHBhdGhzOiBhIGxpc3Qgb2YgcGF0aHMuCi0gICAgUmV0dXJuczoKLSAgICAgICAgQSBkaWN0
aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIHBsYXRmb3JtcyBmcm9tIHBhdGhzLgotICAgICIiIgotICAg
IHBsYXRmb3JtcyA9IHt9Ci0gICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgICAgIG1hdGNoID0g
cmUubWF0Y2gocidecGxhdGZvcm0vKC4qPykvJywgcGF0aCkKLSAgICAgICAgaWYgbWF0Y2g6Ci0g
ICAgICAgICAgICBwbGF0Zm9ybSA9IGRpcm5hbWVfdG9fcGxhdGZvcm0obWF0Y2guZ3JvdXAoMSkp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwbGF0Zm9ybSA9IF9CQVNFX1BMQVRGT1JNCi0g
ICAgICAgIHBsYXRmb3Jtc1twbGF0Zm9ybV0gPSBwYXRoCi0gICAgcmV0dXJuIHBsYXRmb3Jtcwot
Ci0KLWRlZiBoYXNfaW50ZXJtZWRpYXRlX3Jlc3VsdHModGVzdCwgZmFsbGJhY2tzLCBtYXRjaGlu
Z19wbGF0Zm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9leGlzdHM9b3Mu
cGF0aC5leGlzdHMpOgotICAgICIiIlJldHVybnMgVHJ1ZSBpZiB0aGVyZSBpcyBhIHRlc3QgcmVz
dWx0IHRoYXQgY2F1c2VzIHVzIHRvIG5vdCBkZWxldGUKLSAgICB0aGlzIGR1cGxpY2F0ZS4KLQot
ICAgIEZvciBleGFtcGxlLCBjaHJvbWl1bS1saW51eCBtYXkgYmUgYSBkdXBsaWNhdGUgb2YgdGhl
IGNoZWNrZWQgaW4gcmVzdWx0LAotICAgIGJ1dCBjaHJvbWl1bS13aW4gbWF5IGhhdmUgYSBkaWZm
ZXJlbnQgcmVzdWx0IGNoZWNrZWQgaW4uICBJbiB0aGlzIGNhc2UsCi0gICAgd2UgbmVlZCB0byBr
ZWVwIHRoZSBkdXBsaWNhdGUgcmVzdWx0cy4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHRlc3Q6IFRo
ZSB0ZXN0IG5hbWUuCi0gICAgICAgIGZhbGxiYWNrczogQSBsaXN0IG9mIHBsYXRmb3JtcyB3ZSBm
YWxsIGJhY2sgb24uCi0gICAgICAgIG1hdGNoaW5nX3BsYXRmb3JtOiBUaGUgcGxhdGZvcm0gdGhh
dCB3ZSBmb3VuZCB0aGUgZHVwbGljYXRlIHRlc3QKLSAgICAgICAgICAgIHJlc3VsdC4gIFdlIGNh
biBzdG9wIGNoZWNraW5nIGhlcmUuCi0gICAgICAgIHBhdGhfZXhpc3RzOiBPcHRpb25hbCBwYXJh
bWV0ZXIgdGhhdCBhbGxvd3MgdXMgdG8gc3R1YiBvdXQKLSAgICAgICAgICAgIG9zLnBhdGguZXhp
c3RzIGZvciB0ZXN0aW5nLgotICAgICIiIgotICAgIGZvciBkaXJuYW1lIGluIGZhbGxiYWNrczoK
LSAgICAgICAgcGxhdGZvcm0gPSBkaXJuYW1lX3RvX3BsYXRmb3JtKGRpcm5hbWUpCi0gICAgICAg
IGlmIHBsYXRmb3JtID09IG1hdGNoaW5nX3BsYXRmb3JtOgotICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbignTGF5b3V0VGVzdHMnLCAncGxh
dGZvcm0nLCBkaXJuYW1lLCB0ZXN0KQotICAgICAgICBpZiBwYXRoX2V4aXN0cyh0ZXN0X3BhdGgp
OgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgZ2V0
X3JlbGF0aXZlX3Rlc3RfcGF0aChmaWxlbmFtZSwgcmVsYXRpdmVfdG8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGVja291dF9yb290PXNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKSk6Ci0g
ICAgIiIiQ29uc3RydWN0cyBhIHJlbGF0aXZlIHBhdGggdG8gfGZpbGVuYW1lfCBmcm9tIHxyZWxh
dGl2ZV90b3wuCi0gICAgQXJnczoKLSAgICAgICAgZmlsZW5hbWU6IFRoZSB0ZXN0IGZpbGUgd2Un
cmUgdHJ5aW5nIHRvIGdldCBhIHJlbGF0aXZlIHBhdGggdG8uCi0gICAgICAgIHJlbGF0aXZlX3Rv
OiBUaGUgYWJzb2x1dGUgcGF0aCB3ZSdyZSByZWxhdGl2ZSB0by4KLSAgICBSZXR1cm5zOgotICAg
ICAgICBBIHJlbGF0aXZlIHBhdGggdG8gZmlsZW5hbWUgb3IgTm9uZSBpZiB8ZmlsZW5hbWV8IGlz
IG5vdCBiZWxvdwotICAgICAgICB8cmVsYXRpdmVfdG98LgotICAgICIiIgotICAgIGxheW91dF90
ZXN0X2RpciA9IG9zLnBhdGguam9pbihjaGVja291dF9yb290LCAnTGF5b3V0VGVzdHMnKQotICAg
IGFic19wYXRoID0gb3MucGF0aC5qb2luKGxheW91dF90ZXN0X2RpciwgZmlsZW5hbWUpCi0gICAg
cmV0dXJuIG9zcGF0aC5yZWxwYXRoKGFic19wYXRoLCByZWxhdGl2ZV90bykKLQotCi1kZWYgZmlu
ZF9kdXBzKGhhc2hlcywgcG9ydF9mYWxsYmFja3MsIHJlbGF0aXZlX3RvKToKLSAgICAiIiJZaWVs
ZHMgaW5mbyBhYm91dCByZWR1bmRhbnQgdGVzdCBleHBlY3RhdGlvbnMuCi0gICAgQXJnczoKLSAg
ICAgICAgaGFzaGVzOiBhIGxpc3Qgb2YgaGFzaGVzIGFzIHJldHVybmVkIGJ5IGNsdXN0ZXJfZmls
ZV9oYXNoZXMuCi0gICAgICAgIHBvcnRfZmFsbGJhY2tzOiBhIGxpc3Qgb2YgZmFsbGJhY2sgaW5m
b3JtYXRpb24gYXMgcmV0dXJuZWQgYnkKLSAgICAgICAgICAgIGdldF9wb3J0X2ZhbGxiYWNrcy4K
LSAgICAgICAgcmVsYXRpdmVfdG86IHRoZSBkaXJlY3RvcnkgdGhhdCB3ZSB3YW50IHRoZSByZXN1
bHRzIHJlbGF0aXZlIHRvCi0gICAgUmV0dXJuczoKLSAgICAgICAgYSB0dXBsZSBjb250YWluaW5n
ICh0ZXN0LCBwbGF0Zm9ybSwgZmFsbGJhY2ssIHBsYXRmb3JtcykKLSAgICAiIiIKLSAgICBmb3Ig
KHRlc3QsIGhhc2gpLCBjbHVzdGVyIGluIGhhc2hlcy5pdGVtcygpOgotICAgICAgICBpZiBsZW4o
Y2x1c3RlcikgPCAyOgotICAgICAgICAgICAgY29udGludWUgICMgQ29tbW9uIGNhc2U6IG9ubHkg
b25lIGZpbGUgd2l0aCB0aGF0IGhhc2guCi0KLSAgICAgICAgIyBDb21wdXRlIHRoZSBsaXN0IG9m
IHBsYXRmb3JtcyB3ZSBoYXZlIHRoaXMgcGFydGljdWxhciBoYXNoIGZvci4KLSAgICAgICAgcGxh
dGZvcm1zID0gZXh0cmFjdF9wbGF0Zm9ybXMoY2x1c3RlcikKLSAgICAgICAgaWYgbGVuKHBsYXRm
b3JtcykgPT0gMToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgIyBTZWUgaWYgYW55
IG9mIHRoZSBwbGF0Zm9ybXMgYXJlIHJlZHVuZGFudCB3aXRoIGVhY2ggb3RoZXIuCi0gICAgICAg
IGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXMua2V5cygpOgotICAgICAgICAgICAgaWYgcGxhdGZv
cm0gbm90IGluIHBvcnRfZmFjdG9yeS5hbGxfcG9ydF9uYW1lcygpOgotICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICAgICBmb3IgZGlybmFtZSBpbiBwb3J0X2ZhbGxiYWNrc1twbGF0
Zm9ybV06Ci0gICAgICAgICAgICAgICAgZmFsbGJhY2sgPSBkaXJuYW1lX3RvX3BsYXRmb3JtKGRp
cm5hbWUpCi0gICAgICAgICAgICAgICAgaWYgZmFsbGJhY2sgbm90IGluIHBsYXRmb3Jtcy5rZXlz
KCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBXZSBo
YXZlIHRvIHZlcmlmeSB0aGF0IHRoZXJlIGlzbid0IGFuIGludGVybWVkaWF0ZSByZXN1bHQKLSAg
ICAgICAgICAgICAgICAjIHRoYXQgY2F1c2VzIHRoaXMgZHVwbGljYXRlIGhhc2ggdG8gZXhpc3Qu
Ci0gICAgICAgICAgICAgICAgaWYgaGFzX2ludGVybWVkaWF0ZV9yZXN1bHRzKHRlc3QsIHBvcnRf
ZmFsbGJhY2tzW3BsYXRmb3JtXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFsbGJhY2spOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgICAgICMgV2UgcHJpbnQgdGhlIHJlbGF0aXZlIHBhdGggc28gaXQncyBlYXN5IHRvIHBp
cGUgdGhlIHJlc3VsdHMKLSAgICAgICAgICAgICAgICAjIHRvIHhhcmdzIHJtLgotICAgICAgICAg
ICAgICAgIHBhdGggPSBnZXRfcmVsYXRpdmVfdGVzdF9wYXRoKHBsYXRmb3Jtc1twbGF0Zm9ybV0s
IHJlbGF0aXZlX3RvKQotICAgICAgICAgICAgICAgIGlmIG5vdCBwYXRoOgotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHlpZWxkIHsKLSAgICAgICAgICAgICAg
ICAgICAgJ3Rlc3QnOiB0ZXN0LAotICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiBwbGF0
Zm9ybSwKLSAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzogZGlybmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgJ3BhdGgnOiBwYXRoLAotICAgICAgICAgICAgICAgIH0KLQotCi1kZWYgZGVk
dXBsaWNhdGUoZ2xvYl9wYXR0ZXJuKToKLSAgICAiIiJUcmF2ZXJzZXMgTGF5b3V0VGVzdHMgYW5k
IHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgZHVwbGljYXRlZCBmaWxlcy4KLSAgICBBcmdzOgot
ICAgICAgICBnbG9iIHBhdHRlcm4gdG8gZmlsdGVyIHRoZSBmaWxlcyBpbiBMYXlvdXRUZXN0cy4K
LSAgICBSZXR1cm5zOgotICAgICAgICBhIGRpY3Rpb25hcnkgY29udGFpbmluZyB0ZXN0LCBwYXRo
LCBwbGF0Zm9ybSBhbmQgZmFsbGJhY2suCi0gICAgIiIiCi0gICAgZmFsbGJhY2tzID0gcG9ydF9m
YWxsYmFja3MoKQotICAgIGhhc2hlcyA9IGNsdXN0ZXJfZmlsZV9oYXNoZXMoZ2xvYl9wYXR0ZXJu
KQotICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBhIEZpbGVTeXN0ZW0gb2JqZWN0IGFuZCBu
b3QgY2FsbCBvcy5nZXRjd2QoKSBkaXJlY3RseS4KLSAgICByZXR1cm4gbGlzdChmaW5kX2R1cHMo
aGFzaGVzLCBmYWxsYmFja3MsIG9zLmdldGN3ZCgpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9fYmVfbW92ZWQvZGVkdXBsaWNhdGVfdGVzdHNfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9kZWR1cGxpY2F0ZV90ZXN0
c191bml0dGVzdC5weQkocmV2aXNpb24gOTI2MzcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RvX2JlX21vdmVkL2RlZHVwbGljYXRlX3Rlc3RzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDIxMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
IyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdHMgZm9yIGRlZHVwbGljYXRlX3Rlc3RzLnB5
LiIiIgotCi1pbXBvcnQgZGVkdXBsaWNhdGVfdGVzdHMKLWltcG9ydCBvcwotaW1wb3J0IHVuaXR0
ZXN0Ci1pbXBvcnQgd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBhcyBzY20KLQotCi1jbGFz
cyBNb2NrRXhlY3V0aXZlKG9iamVjdCk6Ci0gICAgbGFzdF9ydW5fY29tbWFuZCA9IFtdCi0gICAg
cmVzcG9uc2UgPSAnJwotCi0gICAgY2xhc3MgRXhlY3V0aXZlKG9iamVjdCk6Ci0gICAgICAgIGRl
ZiBydW5fY29tbWFuZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgYXJncywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGN3ZD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXI9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9leGl0X2NvZGU9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkZWNvZGVfb3V0cHV0PVRydWUpOgotICAgICAgICAgICAgTW9ja0V4ZWN1dGl2ZS5sYXN0X3J1
bl9jb21tYW5kICs9IFthcmdzXQotICAgICAgICAgICAgcmV0dXJuIE1vY2tFeGVjdXRpdmUucmVz
cG9uc2UKLQotCi1jbGFzcyBMaXN0RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgTW9ja0V4ZWN1dGl2ZS5sYXN0X3J1bl9jb21t
YW5kID0gW10KLSAgICAgICAgTW9ja0V4ZWN1dGl2ZS5yZXNwb25zZSA9ICcnCi0gICAgICAgIGRl
ZHVwbGljYXRlX3Rlc3RzLmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUKLSAgICAgICAgc2VsZi5f
b3JpZ2luYWxfY3dkID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgY2hlY2tvdXRfcm9vdCA9IHNjbS5m
aW5kX2NoZWNrb3V0X3Jvb3QoKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNoZWNrb3V0
X3Jvb3QsIE5vbmUpCi0gICAgICAgIG9zLmNoZGlyKGNoZWNrb3V0X3Jvb3QpCi0KLSAgICBkZWYg
dGVhckRvd24oc2VsZik6Ci0gICAgICAgIG9zLmNoZGlyKHNlbGYuX29yaWdpbmFsX2N3ZCkKLQot
ICAgIGRlZiB0ZXN0X3BhcnNlX2dpdF9vdXRwdXQoc2VsZik6Ci0gICAgICAgIGdpdF9vdXRwdXQg
PSAoCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2IgNTA1MzI0MGIzMzUzZjZlYjM5ZjdjYjAwMjU5
Nzg1ZjE2ZDEyMWRmMlx0TGF5b3V0VGVzdHMvbWFjL2Zvby1leHBlY3RlZC50eHRcbicKLSAgICAg
ICAgICAgICcxMDA2NDQgYmxvYiBhMDA0NTQ4ZDEwN2VjYzRlMWVhMDgwMTlkYWYwYTE0ZTg2MzRh
MWZmXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mb28tZXhwZWN0ZWQudHh0XG4nCi0g
ICAgICAgICAgICAnMTAwNjQ0IGJsb2IgZDZiYjBiYzc2MmUzYWVjNWRmMDNiNWMwNDQ4NWIyY2Iz
YjY1ZmZiMVx0TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZm9vLWV4cGVjdGVk
LnR4dFxuJwotICAgICAgICAgICAgJzEwMDY0NCBibG9iIGFiY2RlYmM3NjJlM2FlYzVkZjAzYjVj
MDQ0ODViMmNiM2I2NWZmYjFcdExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Fu
aW1hZ2UucG5nXG4nCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2IgZDZiYjBiYzc2MmUzYWVjNWRm
MDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMVx0TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2lu
L2Zvby1leHBlY3RlZC50eHRcbicKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiBhYmNkZWJjNzYy
ZTNhZWM1ZGYwM2I1YzA0NDg1YjJjYjNiNjVmZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS13aW4vYW5pbWFnZS5wbmdcbicKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiA0MzAzZGY1
Mzg5Y2E4N2NhZTgzZGQzMjM2YjhkZDg0ZTE2NjA2NTE3XHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZm9vLWV4cGVjdGVkLnR4dFxuJykKLSAgICAgICAgaGFzaGVzID0gZGVkdXBsaWNhdGVfdGVz
dHMucGFyc2VfZ2l0X291dHB1dChnaXRfb3V0cHV0LCAnKicpCi0gICAgICAgIGV4cGVjdGVkID0g
eygnbWFjL2Zvby1leHBlY3RlZC50eHQnLCAnNTA1MzI0MGIzMzUzZjZlYjM5ZjdjYjAwMjU5Nzg1
ZjE2ZDEyMWRmMicpOiBzZXQoWydtYWMvZm9vLWV4cGVjdGVkLnR4dCddKSwKLSAgICAgICAgICAg
ICAgICAgICAgKCdhbmltYWdlLnBuZycsICdhYmNkZWJjNzYyZTNhZWM1ZGYwM2I1YzA0NDg1YjJj
YjNiNjVmZmIxJyk6IHNldChbJ3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hZ2UucG5nJywg
J3BsYXRmb3JtL2Nocm9taXVtLXdpbi9hbmltYWdlLnBuZyddKSwKLSAgICAgICAgICAgICAgICAg
ICAgKCdmb28tZXhwZWN0ZWQudHh0JywgJzQzMDNkZjUzODljYTg3Y2FlODNkZDMyMzZiOGRkODRl
MTY2MDY1MTcnKTogc2V0KFsncGxhdGZvcm0vbWFjL2Zvby1leHBlY3RlZC50eHQnXSksCi0gICAg
ICAgICAgICAgICAgICAgICgnZm9vLWV4cGVjdGVkLnR4dCcsICdkNmJiMGJjNzYyZTNhZWM1ZGYw
M2I1YzA0NDg1YjJjYjNiNjVmZmIxJyk6IHNldChbJ3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zv
by1leHBlY3RlZC50eHQnLCAncGxhdGZvcm0vY2hyb21pdW0td2luL2Zvby1leHBlY3RlZC50eHQn
XSksCi0gICAgICAgICAgICAgICAgICAgICgnZm9vLWV4cGVjdGVkLnR4dCcsICdhMDA0NTQ4ZDEw
N2VjYzRlMWVhMDgwMTlkYWYwYTE0ZTg2MzRhMWZmJyk6IHNldChbJ3BsYXRmb3JtL2Nocm9taXVt
L2Zvby1leHBlY3RlZC50eHQnXSl9Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVk
LCBoYXNoZXMpCi0KLSAgICAgICAgaGFzaGVzID0gZGVkdXBsaWNhdGVfdGVzdHMucGFyc2VfZ2l0
X291dHB1dChnaXRfb3V0cHV0LCAnKi5wbmcnKQotICAgICAgICBleHBlY3RlZCA9IHsoJ2FuaW1h
Z2UucG5nJywgJ2FiY2RlYmM3NjJlM2FlYzVkZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjEnKTogc2V0
KFsncGxhdGZvcm0vY2hyb21pdW0tbGludXgvYW5pbWFnZS5wbmcnLCAncGxhdGZvcm0vY2hyb21p
dW0td2luL2FuaW1hZ2UucG5nJ10pfQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3Rl
ZCwgaGFzaGVzKQotCi0gICAgZGVmIHRlc3RfZXh0cmFjdF9wbGF0Zm9ybXMoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHsnZm9vJzogJ3BsYXRmb3JtL2Zvby9iYXInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3pvbyc6ICdwbGF0Zm9ybS96b28vY29tJ30sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWR1cGxpY2F0ZV90ZXN0cy5leHRyYWN0X3BsYXRmb3Jtcyhb
J3BsYXRmb3JtL2Zvby9iYXInLCAncGxhdGZvcm0vem9vL2NvbSddKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoeydmb28nOiAncGxhdGZvcm0vZm9vL2JhcicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWR1cGxpY2F0ZV90ZXN0cy5fQkFTRV9QTEFURk9STTogJ3doYXQvJ30sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1cGxpY2F0ZV90ZXN0cy5leHRyYWN0X3BsYXRm
b3JtcyhbJ3BsYXRmb3JtL2Zvby9iYXInLCAnd2hhdC8nXSkpCi0KLSAgICBkZWYgdGVzdF9oYXNf
aW50ZXJtZWRpYXRlX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIHRlc3RfY2FzZXMgPSAoCi0gICAg
ICAgICAgICAjIElmIHdlIGZvdW5kIGEgZHVwbGljYXRlIGluIG91ciBmaXJzdCBmYWxsYmFjaywg
d2UgaGF2ZSBubwotICAgICAgICAgICAgIyBpbnRlcm1lZGlhdGUgcmVzdWx0cy4KLSAgICAgICAg
ICAgIChGYWxzZSwgKCdmYXN0L2Zvby1leHBlY3RlZC50eHQnLAotICAgICAgICAgICAgICAgICAg
ICAgWydjaHJvbWl1bS13aW4nLCAnY2hyb21pdW0nLCAnYmFzZSddLAotICAgICAgICAgICAgICAg
ICAgICAgJ2Nocm9taXVtLXdpbi13aW43JywKLSAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBw
YXRoOiBUcnVlKSksCi0gICAgICAgICAgICAjIFNpbmNlIGNocm9taXVtLXdpbiBoYXMgYSByZXN1
bHQsIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXRlIHJlc3VsdC4KLSAgICAgICAgICAgIChUcnVlLCAg
KCdmYXN0L2Zvby1leHBlY3RlZC50eHQnLAotICAgICAgICAgICAgICAgICAgICAgWydjaHJvbWl1
bS13aW4nLCAnY2hyb21pdW0nLCAnYmFzZSddLAotICAgICAgICAgICAgICAgICAgICAgJ2Nocm9t
aXVtJywKLSAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBwYXRoOiBUcnVlKSksCi0gICAgICAg
ICAgICAjIFRoZXJlIGFyZSBubyBpbnRlcm1lZGlhdGUgcmVzdWx0cy4KLSAgICAgICAgICAgIChG
YWxzZSwgKCdmYXN0L2Zvby1leHBlY3RlZC50eHQnLAotICAgICAgICAgICAgICAgICAgICAgWydj
aHJvbWl1bS13aW4nLCAnY2hyb21pdW0nLCAnYmFzZSddLAotICAgICAgICAgICAgICAgICAgICAg
J2Nocm9taXVtJywKLSAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBwYXRoOiBGYWxzZSkpLAot
ICAgICAgICAgICAgIyBUaGVyZSBhcmUgbm8gaW50ZXJtZWRpYXRlIHJlc3VsdHMgc2luY2UgYSBy
ZXN1bHQgZm9yIGNocm9taXVtIGlzCi0gICAgICAgICAgICAjIG91ciBkdXBsaWNhdGUgZmlsZS4K
LSAgICAgICAgICAgIChGYWxzZSwgKCdmYXN0L2Zvby1leHBlY3RlZC50eHQnLAotICAgICAgICAg
ICAgICAgICAgICAgWydjaHJvbWl1bS13aW4nLCAnY2hyb21pdW0nLCAnYmFzZSddLAotICAgICAg
ICAgICAgICAgICAgICAgJ2Nocm9taXVtJywKLSAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBw
YXRoOiBwYXRoID09ICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvby1leHBl
Y3RlZC50eHQnKSksCi0gICAgICAgICAgICAjIFdlIGhhdmUgYW4gaW50ZXJtZWRpYXRlIHJlc3Vs
dCBpbiAnY2hyb21pdW0nIGV2ZW4gdGhvdWdoIG91cgotICAgICAgICAgICAgIyBkdXBsaWNhdGUg
aXMgd2l0aCB0aGUgZmlsZSBpbiAnYmFzZScuCi0gICAgICAgICAgICAoVHJ1ZSwgICgnZmFzdC9m
b28tZXhwZWN0ZWQudHh0JywKLSAgICAgICAgICAgICAgICAgICAgIFsnY2hyb21pdW0td2luJywg
J2Nocm9taXVtJywgJ2Jhc2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICdiYXNlJywKLSAgICAg
ICAgICAgICAgICAgICAgIGxhbWJkYSBwYXRoOiBwYXRoID09ICdMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvby1leHBlY3RlZC50eHQnKSksCi0gICAgICAgICAgICAjIFdlIGhh
dmUgYW4gaW50ZXJtZWRpYXRlIHJlc3VsdCBpbiAnY2hyb21pdW0td2luJyBldmVuIHRob3VnaCBv
dXIKLSAgICAgICAgICAgICMgZHVwbGljYXRlIGlzIGluICdiYXNlJy4KLSAgICAgICAgICAgIChU
cnVlLCAgKCdmYXN0L2Zvby1leHBlY3RlZC50eHQnLAotICAgICAgICAgICAgICAgICAgICAgWydj
aHJvbWl1bS13aW4nLCAnY2hyb21pdW0nLCAnYmFzZSddLAotICAgICAgICAgICAgICAgICAgICAg
J2Jhc2UnLAotICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHBhdGg6IHBhdGggPT0gJ0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2Zvby1leHBlY3RlZC50eHQnKSksCi0g
ICAgICAgICkKLSAgICAgICAgZm9yIGV4cGVjdGVkLCBpbnB1dHMgaW4gdGVzdF9jYXNlczoKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLAotICAgICAgICAgICAgICAgIGRl
ZHVwbGljYXRlX3Rlc3RzLmhhc19pbnRlcm1lZGlhdGVfcmVzdWx0cygqaW5wdXRzKSkKLQotICAg
IGRlZiB0ZXN0X3VuaXF1ZShzZWxmKToKLSAgICAgICAgTW9ja0V4ZWN1dGl2ZS5yZXNwb25zZSA9
ICgKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiA1MDUzMjQwYjMzNTNmNmViMzlmN2NiMDAyNTk3
ODVmMTZkMTIxZGYyXHRMYXlvdXRUZXN0cy9tYWMvZm9vLWV4cGVjdGVkLnR4dFxuJwotICAgICAg
ICAgICAgJzEwMDY0NCBibG9iIGEwMDQ1NDhkMTA3ZWNjNGUxZWEwODAxOWRhZjBhMTRlODYzNGEx
ZmZcdExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zvby1leHBlY3RlZC50eHRcbicKLSAg
ICAgICAgICAgICcxMDA2NDQgYmxvYiBhYmNkMGJjNzYyZTNhZWM1ZGYwM2I1YzA0NDg1YjJjYjNi
NjVmZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mb28tZXhwZWN0ZWQu
dHh0XG4nCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2IgZDZiYjBiYzc2MmUzYWVjNWRmMDNiNWMw
NDQ4NWIyY2IzYjY1ZmZiMVx0TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zvby1l
eHBlY3RlZC50eHRcbicKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiA0MzAzZGY1Mzg5Y2E4N2Nh
ZTgzZGQzMjM2YjhkZDg0ZTE2NjA2NTE3XHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZm9vLWV4
cGVjdGVkLnR4dFxuJykKLSAgICAgICAgcmVzdWx0ID0gZGVkdXBsaWNhdGVfdGVzdHMuZGVkdXBs
aWNhdGUoJyonKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4oTW9ja0V4ZWN1dGl2
ZS5sYXN0X3J1bl9jb21tYW5kKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKCdnaXQnLCAn
bHMtdHJlZScsICctcicsICdIRUFEJywgJ0xheW91dFRlc3RzJyksIE1vY2tFeGVjdXRpdmUubGFz
dF9ydW5fY29tbWFuZFstMV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGxlbihyZXN1
bHQpKQotCi0gICAgZGVmIHRlc3RfZHVwbGljYXRlcyhzZWxmKToKLSAgICAgICAgTW9ja0V4ZWN1
dGl2ZS5yZXNwb25zZSA9ICgKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiA1MDUzMjQwYjMzNTNm
NmViMzlmN2NiMDAyNTk3ODVmMTZkMTIxZGYyXHRMYXlvdXRUZXN0cy9tYWMvZm9vLWV4cGVjdGVk
LnR4dFxuJwotICAgICAgICAgICAgJzEwMDY0NCBibG9iIGEwMDQ1NDhkMTA3ZWNjNGUxZWEwODAx
OWRhZjBhMTRlODYzNGExZmZcdExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zvby1leHBl
Y3RlZC50eHRcbicKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiBkNmJiMGJjNzYyZTNhZWM1ZGYw
M2I1YzA0NDg1YjJjYjNiNjVmZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9mb28tZXhwZWN0ZWQudHh0XG4nCi0gICAgICAgICAgICAnMTAwNjQ0IGJsb2IgYWJjZGViYzc2
MmUzYWVjNWRmMDNiNWMwNDQ4NWIyY2IzYjY1ZmZiMVx0TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbGludXgvYW5pbWFnZS5wbmdcbicKLSAgICAgICAgICAgICcxMDA2NDQgYmxvYiBkNmJi
MGJjNzYyZTNhZWM1ZGYwM2I1YzA0NDg1YjJjYjNiNjVmZmIxXHRMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS13aW4vZm9vLWV4cGVjdGVkLnR4dFxuJwotICAgICAgICAgICAgJzEwMDY0NCBi
bG9iIGFiY2RlYmM3NjJlM2FlYzVkZjAzYjVjMDQ0ODViMmNiM2I2NWZmYjFcdExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLXdpbi9hbmltYWdlLnBuZ1xuJwotICAgICAgICAgICAgJzEwMDY0
NCBibG9iIDQzMDNkZjUzODljYTg3Y2FlODNkZDMyMzZiOGRkODRlMTY2MDY1MTdcdExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mb28tZXhwZWN0ZWQudHh0XG4nKQotCi0gICAgICAgIHJlc3VsdCA9
IGRlZHVwbGljYXRlX3Rlc3RzLmRlZHVwbGljYXRlKCcqJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoMSwgbGVuKE1vY2tFeGVjdXRpdmUubGFzdF9ydW5fY29tbWFuZCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKCgnZ2l0JywgJ2xzLXRyZWUnLCAnLXInLCAnSEVBRCcsICdMYXlvdXRU
ZXN0cycpLCBNb2NrRXhlY3V0aXZlLmxhc3RfcnVuX2NvbW1hbmRbLTFdKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygyLCBsZW4ocmVzdWx0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
eyd0ZXN0JzogJ2FuaW1hZ2UucG5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRo
JzogJ0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hZ2UucG5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4LXg4Nl82
NCd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbMF0pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHsndGVzdCc6ICdmb28tZXhwZWN0ZWQudHh0JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdwYXRoJzogJ0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2Zvby1leHBlY3RlZC50eHQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNr
JzogJ2Nocm9taXVtLXdpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0n
OiAnY2hyb21pdW0tbGludXgteDg2XzY0J30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdFsxXSkKLQotICAgICAgICByZXN1bHQgPSBkZWR1cGxpY2F0ZV90ZXN0cy5kZWR1cGxpY2F0
ZSgnKi50eHQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygyLCBsZW4oTW9ja0V4ZWN1dGl2
ZS5sYXN0X3J1bl9jb21tYW5kKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKCdnaXQnLCAn
bHMtdHJlZScsICctcicsICdIRUFEJywgJ0xheW91dFRlc3RzJyksIE1vY2tFeGVjdXRpdmUubGFz
dF9ydW5fY29tbWFuZFstMV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGxlbihyZXN1
bHQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnZm9vLWV4cGVjdGVkLnR4
dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9mb28tZXhwZWN0ZWQudHh0JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4LXg4Nl82NCd9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRbMF0pCi0KLSAgICAgICAgcmVzdWx0ID0gZGVkdXBsaWNh
dGVfdGVzdHMuZGVkdXBsaWNhdGUoJyoucG5nJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
MywgbGVuKE1vY2tFeGVjdXRpdmUubGFzdF9ydW5fY29tbWFuZCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKCgnZ2l0JywgJ2xzLXRyZWUnLCAnLXInLCAnSEVBRCcsICdMYXlvdXRUZXN0cycp
LCBNb2NrRXhlY3V0aXZlLmxhc3RfcnVuX2NvbW1hbmRbLTFdKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygxLCBsZW4ocmVzdWx0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoeyd0ZXN0
JzogJ2FuaW1hZ2UucG5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRoJzogJ0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hZ2UucG5nJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4LXg4Nl82NCd9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbMF0pCi0KLSAgICBkZWYgdGVzdF9nZXRf
cmVsYXRpdmVfdGVzdF9wYXRoKHNlbGYpOgotICAgICAgICBjaGVja291dF9yb290ID0gc2NtLmZp
bmRfY2hlY2tvdXRfcm9vdCgpCi0gICAgICAgIGxheW91dF90ZXN0X2RpciA9IG9zLnBhdGguam9p
bihjaGVja291dF9yb290LCAnTGF5b3V0VGVzdHMnKQotICAgICAgICB0ZXN0X2Nhc2VzID0gKAot
ICAgICAgICAgICAgKCdwbGF0Zm9ybS9tYWMvdGVzdC5odG1sJywKLSAgICAgICAgICAgICAoJ3Bs
YXRmb3JtL21hYy90ZXN0Lmh0bWwnLCBsYXlvdXRfdGVzdF9kaXIpKSwKLSAgICAgICAgICAgICgn
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rlc3QuaHRtbCcsCi0gICAgICAgICAgICAgKCdwbGF0
Zm9ybS9tYWMvdGVzdC5odG1sJywgY2hlY2tvdXRfcm9vdCkpLAotICAgICAgICAgICAgKE5vbmUs
Ci0gICAgICAgICAgICAgKCdwbGF0Zm9ybS9tYWMvdGVzdC5odG1sJywgb3MucGF0aC5qb2luKGNo
ZWNrb3V0X3Jvb3QsICdTb3VyY2UnLCAnV2ViQ29yZScpKSksCi0gICAgICAgICAgICAoJ3Rlc3Qu
aHRtbCcsCi0gICAgICAgICAgICAgKCdwbGF0Zm9ybS9tYWMvdGVzdC5odG1sJywgb3MucGF0aC5q
b2luKGxheW91dF90ZXN0X2RpciwgJ3BsYXRmb3JtL21hYycpKSksCi0gICAgICAgICAgICAoTm9u
ZSwKLSAgICAgICAgICAgICAoJ3BsYXRmb3JtL21hYy90ZXN0Lmh0bWwnLCBvcy5wYXRoLmpvaW4o
bGF5b3V0X3Rlc3RfZGlyLCAncGxhdGZvcm0vd2luJykpKSwKLSAgICAgICAgKQotICAgICAgICBm
b3IgZXhwZWN0ZWQsIGlucHV0cyBpbiB0ZXN0X2Nhc2VzOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1cGxp
Y2F0ZV90ZXN0cy5nZXRfcmVsYXRpdmVfdGVzdF9wYXRoKCppbnB1dHMpKQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>