<?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>220158</bug_id>
          
          <creation_ts>2020-12-26 13:14:42 -0800</creation_ts>
          <short_desc>Assorted fixes for bisect-builds</short_desc>
          <delta_ts>2021-01-06 12:31:50 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716679</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-12-26 13:14:42 -0800</bug_when>
    <thetext>bisect-builds doesn&apos;t work with Python 3, and is buggy in several ways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716680</commentid>
    <comment_count>1</comment_count>
      <attachid>416790</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-12-26 13:15:46 -0800</bug_when>
    <thetext>Created attachment 416790
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717011</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-02 13:15:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/72771835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717386</commentid>
    <comment_count>3</comment_count>
      <attachid>416790</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-05 10:27:28 -0800</bug_when>
    <thetext>Comment on attachment 416790
proposed patch

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

&gt; Tools/Scripts/bisect-builds:209
&gt; +    platform = SystemHost().platform

SystemHost is not free to instantiate (it runs some shell commands in the constructor, if I recall correctly), so we probably don&apos;t want to instantiate it twice.

&gt; Tools/Scripts/bisect-builds:214
&gt; +        return platform

Pretty sure you want to return &quot;platform.os_name&quot;, not the actual PlatformInfo object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717666</commentid>
    <comment_count>4</comment_count>
      <attachid>417092</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-06 09:21:38 -0800</bug_when>
    <thetext>Created attachment 417092
proposed patch

Thank you, updated accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717743</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-06 12:31:49 -0800</bug_when>
    <thetext>Committed r271211: &lt;https://trac.webkit.org/changeset/271211&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417092.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416790</attachid>
            <date>2020-12-26 13:15:46 -0800</date>
            <delta_ts>2021-01-06 09:21:38 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>bisect-builds.txt</filename>
            <type>text/plain</type>
            <size>23322</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MTA5MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI5IEBACisyMDIwLTEyLTI2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIEFzc29ydGVkIGZpeGVzIGZvciBiaXNlY3QtYnVpbGRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2hlZCB0byBQeXRob24g
My4KKyAgICAgICAgTWFueSB0cml2aWFsIFB5dGhvbiBzdHlsZSBjaGFuZ2VzLgorICAgICAgICBT
aW1wbGlmaWVkIGFyZ3VtZW50cywgYW5kIGNsZWFuZWQgdXAgb3V0cHV0LgorICAgICAgICBTd2l0
Y2hlZCBmcm9tIHJ1bi1zYWZhcmkgdG8gcnVuLW1pbmlicm93c2VyIG9uIG1hY09TLCBhcyBydW4t
c2FmYXJpIGN1cnJlbnRseQorICAgICAgICBkb2Vzbid0IHdvcmsgb24gcmVndWxhciBtYWNPUyBp
bnN0YWxsYXRpb25zLgorCisgICAgICAgICogU2NyaXB0cy9iaXNlY3QtYnVpbGRzOiAKKyAgICAg
ICAgKFF1ZXVlRGVzY3JpcHRvcik6IE5ldyBjbGFzcyB0aGF0IGhvbGRzIGEgZGVzY3JpcHRpb24g
b2YgYSBxdWV1ZSwgb3IgYSAicGxhdGZvcm0iLAorICAgICAgICBhcyBjb21pbmcgZnJvbSBhIHN0
cmluZyBsaWtlIG1hYy1jYXRhbGluYSBvciBtYWMtY2F0YWxpbmEteDg2XzY0LXJlbGVhc2UuIFVz
ZWQgZm9yCisgICAgICAgIG1hdGNoaW5nIGFyZ3VtZW50cyB0byBhbiBleGlzdGluZyBhcmNoaXZl
IGRpcmVjdG9yeSBvbiB0aGUgc2VydmVyLgorICAgICAgICAodHJhY19saW5rKTogQWRkZWQuIFRo
ZSB0b29sIG5vdyBwcmludHMgYSB0cmFjIGxpbmsgZm9yIHNlZWluZyB3aGVyZSB0aGUgcmVncmVz
c2lvbgorICAgICAgICB3YXMgaW50cm9kdWNlZC4KKyAgICAgICAgKGJpc2VjdF9idWlsZHMpOiBG
aXhlZCBhcml0aG1ldGljIG1pc3Rha2VzLiBHb3QgcmlkIG9mIGFuIHVubmVjZXNzYXJ5IHdoaWxl
LXRydWUgbG9vcCwKKyAgICAgICAgYXMgdGhlIGZ1bmN0aW9uIHdhcyBhbHJlYWR5IHJlY3Vyc2l2
ZS4KKyAgICAgICAgKGhvc3RfcGxhdGZvcm1fbmFtZSk6IFRoZSBzY3JpcHQgbm93IGRlZmF1bHRz
IHRvIGN1cnJlbnQgcGxhdGZvcm0sIHNvIC1wIGFyZ3VtZW50CisgICAgICAgIGlzIG1vc3RseSB0
byBzZWxlY3Qgc2ltdWxhdG9yLgorICAgICAgICAobWFpbik6IE1vdmVkIGNvZGUgZnJvbSAiaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJyIgYmxvY2sgaW50byBtYWluIGZ1bmN0aW9uIGZvcgorICAg
ICAgICBjb25zaXN0ZW5jeS4KKwogMjAyMC0xMi0yMyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU2ltdWxhdGVkIFB5dGhvbiBjcmFzaCBkdXJpbmcgdGVzdCBydW5z
CkluZGV4OiBUb29scy9TY3JpcHRzL2Jpc2VjdC1idWlsZHMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy9iaXNlY3QtYnVpbGRzCShyZXZpc2lvbiAyNzEwNjYpCisrKyBUb29scy9TY3JpcHRz
L2Jpc2VjdC1idWlsZHMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACi0jIS91c3IvYmlu
L2VudiBweXRob24KKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotIyBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTcs
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw2ICsyNiwxMiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICMgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAorIyBBIHdlYmtpdHB5IGltcG9ydCBuZWVkcyB0byBnbyBmaXJzdCBmb3IgYXV0b2luc3Rh
bGxlciB0byB3b3JrIHdpdGggc3Vic2VxdWVudCBpbXBvcnRzLgorZnJvbSB3ZWJraXRweS5jb21t
b24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
c3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lv
bl9uYW1lX21hcCBpbXBvcnQgVmVyc2lvbk5hbWVNYXAKK2Zyb20gd2Via2l0cHkudG9vbC5ncmFt
bWFyIGltcG9ydCBwbHVyYWxpemUKKwogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgYmlzZWN0CiBp
bXBvcnQganNvbgpAQCAtMzUsOSArNDEsOCBAQCBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3VicHJv
Y2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgdXJsbGliMgotaW1wb3J0
IHVybHBhcnNlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQK
K2ltcG9ydCB1cmxsaWIKKwogCiBSRVNUX0FQSV9VUkwgPSAnaHR0cHM6Ly9xMXR6cWZ5NDhlLmV4
ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL3YyXzIvJwogUkVTVF9BUElfQVJDSElW
RV9FTkRQT0lOVCA9ICdhcmNoaXZlcy8nCkBAIC00NiwzNSArNTEsOTQgQEAgUkVTVF9BUElfUExB
VEZPUk1fRU5EUE9JTlQgPSAncGxhdGZvcm1zJwogUkVTVF9BUElfTUlOSUZJRURfUExBVEZPUk1f
RU5EUE9JTlQgPSAnbWluaWZpZWQtcGxhdGZvcm1zJwogCiAKK2NsYXNzIFF1ZXVlRGVzY3JpcHRv
cihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjcmlwdG9yX3N0cmluZyk6Cisg
ICAgICAgIHNlbGYucGxhdGZvcm1fbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJzaW9uID0g
Tm9uZQorICAgICAgICBzZWxmLmFyY2hpdGVjdHVyZXMgPSBzZXQoKQorICAgICAgICBzZWxmLmNv
bmZpZ3VyYXRpb24gPSBOb25lCisKKyAgICAgICAgaWYgZGVzY3JpcHRvcl9zdHJpbmcuc3RhcnRz
d2l0aCgnbWFjLScpOgorICAgICAgICAgICAgcGxhdGZvcm1fbmFtZV9lbmRfaW5kZXggPSBkZXNj
cmlwdG9yX3N0cmluZy5maW5kKCctJykKKyAgICAgICAgICAgIHZlcnNpb25fc3RhcnRfaW5kZXgg
PSBwbGF0Zm9ybV9uYW1lX2VuZF9pbmRleCArIDEKKyAgICAgICAgICAgIHZlcnNpb25fZW5kX2lu
ZGV4ID0gZGVzY3JpcHRvcl9zdHJpbmcuZmluZCgnLScsIHZlcnNpb25fc3RhcnRfaW5kZXgpCisg
ICAgICAgICAgICBzZWxmLnBsYXRmb3JtX25hbWUgPSBkZXNjcmlwdG9yX3N0cmluZ1s6cGxhdGZv
cm1fbmFtZV9lbmRfaW5kZXhdCisgICAgICAgICAgICBpZiB2ZXJzaW9uX2VuZF9pbmRleCA9PSAt
MToKKyAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb24gPSBkZXNjcmlwdG9yX3N0cmluZ1t2ZXJz
aW9uX3N0YXJ0X2luZGV4Ol0KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHNl
bGYudmVyc2lvbiA9IGRlc2NyaXB0b3Jfc3RyaW5nW3ZlcnNpb25fc3RhcnRfaW5kZXg6dmVyc2lv
bl9lbmRfaW5kZXhdCisgICAgICAgICAgICBhcmNoaXRlY3R1cmVzX2FuZF9jb25maWd1cmF0aW9u
ID0gZGVzY3JpcHRvcl9zdHJpbmdbdmVyc2lvbl9lbmRfaW5kZXggKyAxOl0KKyAgICAgICAgZWxp
ZiBkZXNjcmlwdG9yX3N0cmluZy5zdGFydHN3aXRoKCdpb3Mtc2ltdWxhdG9yLScpOgorICAgICAg
ICAgICAgcGxhdGZvcm1fbmFtZV9lbmRfaW5kZXggPSBkZXNjcmlwdG9yX3N0cmluZy5maW5kKCct
JywgZGVzY3JpcHRvcl9zdHJpbmcuZmluZCgnLScpICsgMSkKKyAgICAgICAgICAgIHZlcnNpb25f
c3RhcnRfaW5kZXggPSBwbGF0Zm9ybV9uYW1lX2VuZF9pbmRleCArIDEKKyAgICAgICAgICAgIHZl
cnNpb25fZW5kX2luZGV4ID0gZGVzY3JpcHRvcl9zdHJpbmcuZmluZCgnLScsIHZlcnNpb25fc3Rh
cnRfaW5kZXgpCisgICAgICAgICAgICBzZWxmLnBsYXRmb3JtX25hbWUgPSBkZXNjcmlwdG9yX3N0
cmluZ1s6cGxhdGZvcm1fbmFtZV9lbmRfaW5kZXhdCisgICAgICAgICAgICBpZiB2ZXJzaW9uX2Vu
ZF9pbmRleCA9PSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb24gPSBkZXNjcmlwdG9y
X3N0cmluZ1t2ZXJzaW9uX3N0YXJ0X2luZGV4Ol0KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgICAgIHNlbGYudmVyc2lvbiA9IGRlc2NyaXB0b3Jfc3RyaW5nW3ZlcnNpb25fc3RhcnRf
aW5kZXg6dmVyc2lvbl9lbmRfaW5kZXhdCisgICAgICAgICAgICBhcmNoaXRlY3R1cmVzX2FuZF9j
b25maWd1cmF0aW9uID0gZGVzY3JpcHRvcl9zdHJpbmdbdmVyc2lvbl9lbmRfaW5kZXggKyAxOl0K
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBsYXRmb3JtX25hbWVfZW5kX2luZGV4ID0gZGVz
Y3JpcHRvcl9zdHJpbmcuZmluZCgnLScpCisgICAgICAgICAgICBpZiBwbGF0Zm9ybV9uYW1lX2Vu
ZF9pbmRleCA9PSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnBsYXRmb3JtX25hbWUgPSBkZXNj
cmlwdG9yX3N0cmluZworICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc2VsZi5w
bGF0Zm9ybV9uYW1lID0gZGVzY3JpcHRvcl9zdHJpbmdbOnBsYXRmb3JtX25hbWVfZW5kX2luZGV4
XQorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlc19hbmRfY29uZmlndXJhdGlvbiA9IGRlc2NyaXB0
b3Jfc3RyaW5nW3BsYXRmb3JtX25hbWVfZW5kX2luZGV4ICsgMTpdCisgICAgICAgIGFyY2hpdGVj
dHVyZXNfZW5kX2luZGV4ID0gYXJjaGl0ZWN0dXJlc19hbmRfY29uZmlndXJhdGlvbi5maW5kKCct
JykKKyAgICAgICAgaWYgYXJjaGl0ZWN0dXJlc19lbmRfaW5kZXggPT0gLTE6CisgICAgICAgICAg
ICBzZWxmLmFyY2hpdGVjdHVyZXMgPSBzZXQoYXJjaGl0ZWN0dXJlc19hbmRfY29uZmlndXJhdGlv
bi5zcGxpdCgnICcpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNvbmZpZ3VyYXRpb25f
c3RhcnRfaW5kZXggPSBhcmNoaXRlY3R1cmVzX2VuZF9pbmRleCArIDEKKyAgICAgICAgc2VsZi5h
cmNoaXRlY3R1cmVzID0gc2V0KGFyY2hpdGVjdHVyZXNfYW5kX2NvbmZpZ3VyYXRpb25bOmFyY2hp
dGVjdHVyZXNfZW5kX2luZGV4XS5zcGxpdCgnICcpKQorICAgICAgICBzZWxmLmNvbmZpZ3VyYXRp
b24gPSBhcmNoaXRlY3R1cmVzX2FuZF9jb25maWd1cmF0aW9uW2NvbmZpZ3VyYXRpb25fc3RhcnRf
aW5kZXg6XQorCisgICAgZGVmIHByZXR0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHJlc3VsdCA9
IHNlbGYucGxhdGZvcm1fbmFtZQorICAgICAgICBpZiBzZWxmLnZlcnNpb246CisgICAgICAgICAg
ICByZXN1bHQgKz0gJy0nICsgc2VsZi52ZXJzaW9uCisgICAgICAgIHJlc3VsdCArPSAnICgnICsg
JyAnLmpvaW4oc2VsZi5hcmNoaXRlY3R1cmVzKQorICAgICAgICByZXN1bHQgKz0gJywgJyArIHNl
bGYuY29uZmlndXJhdGlvbiArICcpJworICAgICAgICByZXR1cm4gcmVzdWx0CisKKworZGVmIHRy
YWNfbGluayhzdGFydF9yZXZpc2lvbiwgZW5kX3JldmlzaW9uKToKKyAgICBpZiBzdGFydF9yZXZp
c2lvbiArIDEgPT0gZW5kX3JldmlzaW9uOgorICAgICAgICByZXR1cm4gJ2h0dHBzOi8vdHJhYy53
ZWJraXQub3JnL3J7fScuZm9ybWF0KGVuZF9yZXZpc2lvbikKKyAgICBlbHNlOgorICAgICAgICBy
ZXR1cm4gJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuay8/bW9kZT1mb2xsb3dfY29w
eSZyZXY9e30mc3RvcF9yZXY9e30nLmZvcm1hdChlbmRfcmV2aXNpb24sIHN0YXJ0X3JldmlzaW9u
ICsgMSkKKworCiBkZWYgYmlzZWN0X2J1aWxkcyhyZXZpc2lvbl9saXN0LCBzdGFydF9pbmRleCwg
ZW5kX2luZGV4LCBvcHRpb25zKToKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBpbmRleF90b190
ZXN0ID0gcGlja19uZXh0X2J1aWxkKHJldmlzaW9uX2xpc3QsIHN0YXJ0X2luZGV4LCBlbmRfaW5k
ZXgpCi0gICAgICAgIGlmIGluZGV4X3RvX3Rlc3QgPT0gTm9uZToKLSAgICAgICAgICAgIHByaW50
KCdObyBtb3JlIGJ1aWxkcyB0byB0ZXN0Li4uJykKLSAgICAgICAgICAgIGV4aXQoMSkKLSAgICAg
ICAgZG93bmxvYWRfYXJjaGl2ZShvcHRpb25zLCByZXZpc2lvbl9saXN0W2luZGV4X3RvX3Rlc3Rd
KQotICAgICAgICBleHRyYWN0X2FyY2hpdmUob3B0aW9ucykKLSAgICAgICAgcmVwcm9kdWNlcyA9
IHRlc3RfYXJjaGl2ZShvcHRpb25zLCByZXZpc2lvbl9saXN0W2luZGV4X3RvX3Rlc3RdKQotCi0g
ICAgICAgIGlmIHJlcHJvZHVjZXM6ICAgICAgICAgICMgYmlzZWN0IGxlZnQKLSAgICAgICAgICAg
IGluZGV4X3RvX3Rlc3QgLT0gMSAgIyBXZSBjYW4gcmVtb3ZlIHRoaXMgZnJvbSB0aGUgZW5kIG9m
IHRoZSBsaXN0IG9mIGJ1aWxkcyB0byB0ZXN0Ci0gICAgICAgICAgICBiaXNlY3RfYnVpbGRzKHJl
dmlzaW9uX2xpc3QsIHN0YXJ0X2luZGV4LCBpbmRleF90b190ZXN0LCBvcHRpb25zKQotICAgICAg
ICBpZiBub3QgcmVwcm9kdWNlczogICAgICAjIGJpc2VjdCByaWdodAotICAgICAgICAgICAgaW5k
ZXhfdG9fdGVzdCArPSAxICAjIFdlIGNhbiByZW1vdmUgdGhpcyBmcm9tIHRoZSBzdGFydCBvZiB0
aGUgbGlzdCBvZiBidWlsZHMgdG8gdGVzdAotICAgICAgICAgICAgYmlzZWN0X2J1aWxkcyhyZXZp
c2lvbl9saXN0LCBpbmRleF90b190ZXN0LCBlbmRfaW5kZXgsIG9wdGlvbnMpCisgICAgaW5kZXhf
dG9fdGVzdCA9IHBpY2tfbmV4dF9idWlsZChyZXZpc2lvbl9saXN0LCBzdGFydF9pbmRleCwgZW5k
X2luZGV4KQorICAgIGlmIGluZGV4X3RvX3Rlc3QgaXMgTm9uZToKKyAgICAgICAgcHJpbnQoJ1xu
V29ya3M6IHJ7fScuZm9ybWF0KHJldmlzaW9uX2xpc3Rbc3RhcnRfaW5kZXhdKSkKKyAgICAgICAg
cHJpbnQoJ0ZhaWxzOiBye30nLmZvcm1hdChyZXZpc2lvbl9saXN0W2VuZF9pbmRleF0pKQorICAg
ICAgICBwcmludCh0cmFjX2xpbmsocmV2aXNpb25fbGlzdFtzdGFydF9pbmRleF0sIHJldmlzaW9u
X2xpc3RbZW5kX2luZGV4XSkpCisgICAgICAgIGV4aXQoMCkKKworICAgIGFyY2hpdmVfY291bnQg
PSBlbmRfaW5kZXggLSBzdGFydF9pbmRleCAtIDEKKyAgICBwcmludCgnQmlzZWN0aW5nIGJldHdl
ZW4gcnt9IGFuZCBye30sIHt9IGluIHRoZSByYW5nZS4nLmZvcm1hdChyZXZpc2lvbl9saXN0W3N0
YXJ0X2luZGV4XSwgcmV2aXNpb25fbGlzdFtlbmRfaW5kZXhdLCBwbHVyYWxpemUoYXJjaGl2ZV9j
b3VudCwgJ2FyY2hpdmUnKSkpCisgICAgcmVwcm9kdWNlcyA9IHRlc3RfcmV2aXNpb24ob3B0aW9u
cywgcmV2aXNpb25fbGlzdFtpbmRleF90b190ZXN0XSkKKworICAgIGlmIHJlcHJvZHVjZXM6Cisg
ICAgICAgIGJpc2VjdF9idWlsZHMocmV2aXNpb25fbGlzdCwgc3RhcnRfaW5kZXgsIGluZGV4X3Rv
X3Rlc3QsIG9wdGlvbnMpCisgICAgZWxzZToKKyAgICAgICAgYmlzZWN0X2J1aWxkcyhyZXZpc2lv
bl9saXN0LCBpbmRleF90b190ZXN0LCBlbmRfaW5kZXgsIG9wdGlvbnMpCiAKIAorIyBkb3dubG9h
ZC1idWlsdC1wcm9kdWN0IGFuZCBidWlsdC1wcm9kdWN0LWFyY2hpdmUgaW1wbGljaXRseSB1c2Ug
V2ViS2l0QnVpbGQgZGlyZWN0b3J5IGZvciBkb3dubG9hZGVkIGFyY2hpdmUuCisjIEZJWE1FOiBN
b2RpZnlpbmcgdGhlIFdlYktpdEJ1aWxkIGRpcmVjdG9yeSBtYWtlcyBubyBzZW5zZSBoZXJlLCBm
aW5kIGEgd2F5IHRvIHVzZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIHRoZSBhcmNoaXZlLgog
ZGVmIGRvd25sb2FkX2FyY2hpdmUob3B0aW9ucywgcmV2aXNpb24pOgogICAgIGFwaV91cmwgPSBn
ZXRfYXBpX2FyY2hpdmVfdXJsKG9wdGlvbnMpCiAgICAgczNfdXJsID0gZ2V0X3MzX2xvY2F0aW9u
X2Zvcl9yZXZpc2lvbihhcGlfdXJsLCByZXZpc2lvbikKLSAgICBwcmludCgnQXJjaGl2ZSBVUkw6
IHt9Jy5mb3JtYXQoczNfdXJsKSkKKyAgICBwcmludCgnRG93bmxvYWRpbmcgcnt9OiB7fScuZm9y
bWF0KHJldmlzaW9uLCBzM191cmwpKQogICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuLi9DSVN1
cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICctLXt9Jy5mb3JtYXQob3B0aW9ucy5jb25m
aWd1cmF0aW9uKSwgJy0tcGxhdGZvcm0nLCBvcHRpb25zLnBsYXRmb3JtLCBzM191cmxdCi0gICAg
cHJpbnQoJ0Rvd25sb2FkaW5nIHJldmlzaW9uOiB7fScuZm9ybWF0KHJldmlzaW9uKSkKICAgICBz
dWJwcm9jZXNzLmNoZWNrX2NhbGwoY29tbWFuZCkKIAogCiBkZWYgZXh0cmFjdF9hcmNoaXZlKG9w
dGlvbnMpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuLi9DSVN1cHBvcnQvYnVpbHQtcHJv
ZHVjdC1hcmNoaXZlJywgJy0tcGxhdGZvcm0nLCBvcHRpb25zLnBsYXRmb3JtLCAnLS0lcycgJSBv
cHRpb25zLmNvbmZpZ3VyYXRpb24sICdleHRyYWN0J10KKyAgICBjb21tYW5kID0gWydweXRob24n
LCAnLi4vQ0lTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXt9Jy5mb3JtYXQob3B0
aW9ucy5jb25maWd1cmF0aW9uKSwgJy0tcGxhdGZvcm0nLCBvcHRpb25zLnBsYXRmb3JtLCAnZXh0
cmFjdCddCiAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNvbW1hbmQpCiAKIApAQCAtOTYsMjkg
KzE2MCwyOSBAQCBkZWYgZmluZF9nZShhLCB4KToKICMgLS0tLSBlbmQgYmlzZWN0IGhlbHBlcnMg
LS0tLQogCiAKLWRlZiBnZXRfYXBpX2FyY2hpdmVfdXJsKG9wdGlvbnMsIExhc3RFdmFsdWF0ZWRL
ZXk9Tm9uZSk6CitkZWYgZ2V0X2FwaV9hcmNoaXZlX3VybChvcHRpb25zLCBsYXN0X2V2YWx1YXRl
ZF9rZXk9Tm9uZSk6CiAgICAgaWYgb3B0aW9ucy5mdWxsOgotICAgICAgICBiYXNlX3VybCA9IHVy
bHBhcnNlLnVybGpvaW4oUkVTVF9BUElfVVJMLCBSRVNUX0FQSV9BUkNISVZFX0VORFBPSU5UKQor
ICAgICAgICBiYXNlX3VybCA9IHVybGxpYi5wYXJzZS51cmxqb2luKFJFU1RfQVBJX1VSTCwgUkVT
VF9BUElfQVJDSElWRV9FTkRQT0lOVCkKICAgICBlbHNlOgotICAgICAgICBiYXNlX3VybCA9IHVy
bHBhcnNlLnVybGpvaW4oUkVTVF9BUElfVVJMLCBSRVNUX0FQSV9NSU5JRklFRF9BUkNISVZFX0VO
RFBPSU5UKQorICAgICAgICBiYXNlX3VybCA9IHVybGxpYi5wYXJzZS51cmxqb2luKFJFU1RfQVBJ
X1VSTCwgUkVTVF9BUElfTUlOSUZJRURfQVJDSElWRV9FTkRQT0lOVCkKIAotICAgIGFwaV91cmwg
PSB1cmxwYXJzZS51cmxqb2luKGJhc2VfdXJsLCAnLScuam9pbihbb3B0aW9ucy5wbGF0Zm9ybSwg
b3B0aW9ucy5hcmNoaXRlY3R1cmUsIG9wdGlvbnMuY29uZmlndXJhdGlvbl0pKQotICAgIGlmIExh
c3RFdmFsdWF0ZWRLZXk6Ci0gICAgICAgIHF1ZXJ5c3RyaW5nID0gdXJsbGliMi5xdW90ZShqc29u
LmR1bXBzKExhc3RFdmFsdWF0ZWRLZXkpKQorICAgIGFwaV91cmwgPSB1cmxsaWIucGFyc2UudXJs
am9pbihiYXNlX3VybCwgdXJsbGliLnBhcnNlLnF1b3RlKG9wdGlvbnMucXVldWUpKQorICAgIGlm
IGxhc3RfZXZhbHVhdGVkX2tleToKKyAgICAgICAgcXVlcnlzdHJpbmcgPSB1cmxsaWIucGFyc2Uu
cXVvdGUoanNvbi5kdW1wcyhsYXN0X2V2YWx1YXRlZF9rZXkpKQogICAgICAgICBhcGlfdXJsICs9
ICc/RXhjbHVzaXZlU3RhcnRLZXk9JyArIHF1ZXJ5c3RyaW5nCi0gICAgICAgIAorCiAgICAgcmV0
dXJuIGFwaV91cmwKIAogCiBkZWYgZ2V0X2luZGljZXNfZnJvbV9yZXZpc2lvbnMocmV2aXNpb25f
bGlzdCwgc3RhcnRfcmV2aXNpb24sIGVuZF9yZXZpc2lvbik6CiAgICAgaWYgc3RhcnRfcmV2aXNp
b24gaXMgTm9uZToKLSAgICAgICAgcHJpbnQoJ1dBUk5JTkc6IE5vIHN0YXJ0aW5nIHJldmlzaW9u
IHdhcyBnaXZlbiwgZGVmYXVsdGluZyB0byBmaXJzdCBhdmFpbGFibGUgZm9yIHRoaXMgY29uZmln
dXJhdGlvbicpCisgICAgICAgIHByaW50KCdXQVJOSU5HOiBObyBzdGFydGluZyByZXZpc2lvbiB3
YXMgZ2l2ZW4sIGRlZmF1bHRpbmcgdG8gZmlyc3QgYXZhaWxhYmxlIGZvciB0aGlzIGNvbmZpZ3Vy
YXRpb24uJykKICAgICAgICAgc3RhcnRfaW5kZXggPSAwCiAgICAgZWxzZToKICAgICAgICAgc3Rh
cnRfaW5kZXggPSBmaW5kX2dlKHJldmlzaW9uX2xpc3QsIHN0YXJ0X3JldmlzaW9uKQogCiAgICAg
aWYgZW5kX3JldmlzaW9uIGlzIE5vbmU6Ci0gICAgICAgIHByaW50KCdXQVJOSU5HOiBObyBlbmRp
bmcgcmV2aXNpb24gd2FzIGdpdmVuLCBkZWZhdWx0aW5nIHRvIGxhc3QgYXZpYWxhYmxlIGZvciB0
aGlzIGNvbmZpZ3VyYXRpb24nKQorICAgICAgICBwcmludCgnV0FSTklORzogTm8gZW5kaW5nIHJl
dmlzaW9uIHdhcyBnaXZlbiwgZGVmYXVsdGluZyB0byBsYXN0IGF2YWlsYWJsZSBmb3IgdGhpcyBj
b25maWd1cmF0aW9uLicpCiAgICAgICAgIGVuZF9pbmRleCA9IGxlbihyZXZpc2lvbl9saXN0KSAt
IDEKICAgICBlbHNlOgogICAgICAgICBlbmRfaW5kZXggPSBmaW5kX2xlKHJldmlzaW9uX2xpc3Qs
IGVuZF9yZXZpc2lvbikKQEAgLTEyOSw0NSArMTkzLDUyIEBAIGRlZiBnZXRfaW5kaWNlc19mcm9t
X3JldmlzaW9ucyhyZXZpc2lvbl8KIGRlZiBnZXRfc29ydGVkX3JldmlzaW9ucyhyZXZpc2lvbnNf
ZGljdCk6CiAgICAgcmV2aXNpb25zID0gW2ludChpdGVtWydyZXZpc2lvbiddWydOJ10pIGZvciBp
dGVtIGluIHJldmlzaW9uc19kaWN0WydyZXZpc2lvbnMnXVsnSXRlbXMnXV0KICAgICByZXR1cm4g
c29ydGVkKHJldmlzaW9ucykKLSAgICAKKwogCiBkZWYgZ2V0X3MzX2xvY2F0aW9uX2Zvcl9yZXZp
c2lvbih1cmwsIHJldmlzaW9uKToKICAgICB1cmwgPSAnLycuam9pbihbdXJsLCBzdHIocmV2aXNp
b24pXSkKLSAgICByID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICByID0gdXJsbGliLnJlcXVl
c3QudXJsb3Blbih1cmwpCiAgICAgZGF0YSA9IGpzb24ubG9hZChyKQotICAgIAorCiAgICAgZm9y
IGFyY2hpdmUgaW4gZGF0YVsnYXJjaGl2ZSddOgogICAgICAgICBzM191cmwgPSBhcmNoaXZlWydz
M191cmwnXQogICAgIHJldHVybiBzM191cmwKIAogCitkZWYgaG9zdF9wbGF0Zm9ybV9uYW1lKCk6
CisgICAgcGxhdGZvcm0gPSBTeXN0ZW1Ib3N0KCkucGxhdGZvcm0KKyAgICB2ZXJzaW9uX25hbWUg
PSBWZXJzaW9uTmFtZU1hcC5zdHJpcF9uYW1lX2Zvcm1hdHRpbmcocGxhdGZvcm0ub3NfdmVyc2lv
bl9uYW1lKCkpCisgICAgaWYgdmVyc2lvbl9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1
cm4gU3lzdGVtSG9zdCgpLnBsYXRmb3JtLm9zX25hbWUgKyAnLScgKyB2ZXJzaW9uX25hbWUKKyAg
ICBlbHNlOgorICAgICAgICByZXR1cm4gcGxhdGZvcm0KKworCiBkZWYgcGFyc2VfYXJncyhhcmdz
KToKLSAgICBoZWxwdGV4dCA9ICdiaXNlY3QtYnVpbGRzIGlzIGRlc2lnbmVkIHRvIGhlbHAgcGlu
cG9pbnQgcmVncmVzc2lvbnMgdG8gc3BlY2lmaWMgY29kZSBjaGFuZ2VzLiBJdCBkb2VzIHRoaXMg
YnkgYmlzZWN0aW5nIGFjcm9zcyBhcmNoaXZlcyBwcm9kdWNlZCBieSBidWlsZC53ZWJraXQub3Jn
LiBGdWxsIGFuZCAibWluaWZpZWQiIGFyY2hpdmVzIGFyZSBhdmFpbGFibGUuIE1pbmlmaWVkIGFy
Y2hpdmVzIGFyZSBzaWduaWZpY2FudGx5IHNtYWxsZXIsIGFzIHRoZXkgaGF2ZSBiZWVuIHN0cmlw
cGVkIG9mIGRTWU1zIGFuZCBvdGhlciBub24tZXNzZW50aWFsIGNvbXBvbmVudHMuJworICAgIGhl
bHB0ZXh0ID0gJ2Jpc2VjdC1idWlsZHMgaGVscHMgcGlucG9pbnQgcmVncmVzc2lvbnMgdG8gc3Bl
Y2lmaWMgY29kZSBjaGFuZ2VzLiBJdCBkb2VzIHRoaXMgYnkgYmlzZWN0aW5nIGFjcm9zcyBhcmNo
aXZlcyBwcm9kdWNlZCBieSBidWlsZC53ZWJraXQub3JnLiBGdWxsIGFuZCAibWluaWZpZWQiIGFy
Y2hpdmVzIGFyZSBhdmFpbGFibGUuIE1pbmlmaWVkIGFyY2hpdmVzIGFyZSBzaWduaWZpY2FudGx5
IHNtYWxsZXIsIGFzIHRoZXkgaGF2ZSBiZWVuIHN0cmlwcGVkIG9mIGRTWU1zIGFuZCBvdGhlciBu
b24tZXNzZW50aWFsIGNvbXBvbmVudHMuJwogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50
UGFyc2VyKGRlc2NyaXB0aW9uPWhlbHB0ZXh0KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1j
JywgJy0tY29uZmlndXJhdGlvbicsIGRlZmF1bHQ9J3JlbGVhc2UnLCBoZWxwPSdUaGUgY29uZmln
dXJhdGlvbiB0byBxdWVyeSBbcmVsZWFzZSB8IGRlYnVnXScpCi0gICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgnLWEnLCAnLS1hcmNoaXRlY3R1cmUnLCBkZWZhdWx0PSd4ODZfNjQnLCBoZWxwPSdUaGUg
YXJjaGl0ZWN0dXJlIHRvIHF1ZXJ5IFt4ODZfNjQgfCBpMzg2XScpCi0gICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgnLXAnLCAnLS1wbGF0Zm9ybScsIGRlZmF1bHQ9J05vbmUnLCByZXF1aXJlZD1UcnVl
LCBoZWxwPSdUaGUgcGxhdGZvcm0gdG8gcXVlcnkgW21hYy1zaWVycmEgfCBndGsgfCBpb3Mtc2lt
dWxhdG9yIHwgd2luXScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mdWxsJywg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0nVXNlIGZ1bGwgYXJjaGl2
ZXMgY29udGFpbmluZyBkZWJ1ZyBzeW1ib2xzLiBUaGVzZSBhcmUgc2lnbmlmaWNhbnRseSBsYXJn
ZXIgZmlsZXMhJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXN0YXJ0JywgZGVm
YXVsdD1Ob25lLCB0eXBlPWludCwgaGVscD0nVGhlIHN0YXJ0aW5nIHJldmlzaW9uIHRvIGJpc2Vj
dC4nKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW5kJywgZGVmYXVsdD1Ob25l
LCB0eXBlPWludCwgaGVscD0nVGhlIGVuZGluZyByZXZpc2lvbiB0byBiaXNlY3QnKQotICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy1sJywgJy0tbGlzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRl
ZmF1bHQ9RmFsc2UsIGhlbHA9J0Rpc3BsYXkgYSBsaXN0IG9mIHBsYXRmb3JtcyBhbmQgcmV2aXNp
b25zJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbmZpZ3VyYXRpb24nLCBk
ZWZhdWx0PSdyZWxlYXNlJywgaGVscD0ndGhlIGNvbmZpZ3VyYXRpb24gdG8gcXVlcnkgW3JlbGVh
c2UgfCBkZWJ1Z10nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1hJywgJy0tYXJjaGl0ZWN0
dXJlJywgaGVscD0ndGhlIGFyY2hpdGVjdHVyZSB0byBxdWVyeSwgZS5nLiB4ODZfNjQsIGRlZmF1
bHQgaXMgbm8gcHJlZmVyZW5jZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXAnLCAnLS1w
bGF0Zm9ybScsIGRlZmF1bHQ9aG9zdF9wbGF0Zm9ybV9uYW1lKCksIGhlbHA9J3RoZSBwbGF0Zm9y
bSB0byBxdWVyeSwgZS5nLiBtYWMtYmlnc3VyLCBndGssIGlvcy1zaW11bGF0b3ItMTQsIHdpbiwg
ZGVmYXVsdCBpcyBjdXJyZW50IGhvc3QgcGxhdGZvcm0uJykKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctZicsICctLWZ1bGwnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBo
ZWxwPSd1c2UgZnVsbCBhcmNoaXZlcyBjb250YWluaW5nIGRlYnVnIHN5bWJvbHMsIHdoaWNoIGFy
ZSBzaWduaWZpY2FudGx5IGxhcmdlciBmaWxlcycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
LXMnLCAnLS1zdGFydCcsIGRlZmF1bHQ9Tm9uZSwgdHlwZT1pbnQsIGhlbHA9J3RoZSBzdGFydGlu
ZyByZXZpc2lvbiB0byBiaXNlY3QnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0t
ZW5kJywgZGVmYXVsdD1Ob25lLCB0eXBlPWludCwgaGVscD0ndGhlIGVuZGluZyByZXZpc2lvbiB0
byBiaXNlY3QnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc2FuaXR5LWNoZWNrJywgYWN0
aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0ndmVyaWZ5IGJvdGggc3RhcnRp
bmcgYW5kIGVuZGluZyByZXZpc2lvbnMgYmVmb3JlIGJpc2VjdGluZycpCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgnLWwnLCAnLS1saXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1G
YWxzZSwgaGVscD0nZGlzcGxheSBhIGxpc3Qgb2YgcGxhdGZvcm1zIGFuZCByZXZpc2lvbnMnKQog
ICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQogCiAKIGRlZiBwaWNrX25leHRfYnVp
bGQocmV2aXNpb25fbGlzdCwgc3RhcnRfaW5kZXgsIGVuZF9pbmRleCk6Ci0gICAgcmV2aXNpb25z
X3JlbWFpbmluZyA9IChlbmRfaW5kZXggLSBzdGFydF9pbmRleCkgKyAxCi0gICAgcHJpbnQoJ0Zv
dW5kIHt9IHJldmlzaW9ucyBpbiB0aGlzIHJhbmdlIHRvIHRlc3QuLi4nLmZvcm1hdChyZXZpc2lv
bnNfcmVtYWluaW5nKSkKLQotICAgIGlmIHN0YXJ0X2luZGV4ID49IGVuZF9pbmRleDoKLSAgICAg
ICAgcHJpbnQoJ05vIGFyY2hpdmVzIGF2YWlsYWJsZSBiZXR3ZWVuIHt9IGFuZCB7fScuZm9ybWF0
KHJldmlzaW9uX2xpc3RbZW5kX2luZGV4XSwgcmV2aXNpb25fbGlzdFtzdGFydF9pbmRleF0pKQor
ICAgIGlmIHN0YXJ0X2luZGV4ICsgMSA+PSBlbmRfaW5kZXg6CisgICAgICAgIHByaW50KCdObyBh
cmNoaXZlcyBhdmFpbGFibGUgYmV0d2VlbiBye30gYW5kIHJ7fS4nLmZvcm1hdChyZXZpc2lvbl9s
aXN0W3N0YXJ0X2luZGV4XSwgcmV2aXNpb25fbGlzdFtlbmRfaW5kZXhdKSkKICAgICAgICAgcmV0
dXJuIE5vbmUKIAotICAgIG1pZGRsZUluZGV4ID0gKHN0YXJ0X2luZGV4ICsgZW5kX2luZGV4KSAv
IDIKLSAgICByZXR1cm4gaW50KG1hdGguY2VpbChtaWRkbGVJbmRleCkpCisgICAgbWlkZGxlX2lu
ZGV4ID0gKHN0YXJ0X2luZGV4ICsgZW5kX2luZGV4KSAvIDIKKyAgICByZXR1cm4gaW50KG1hdGgu
Y2VpbChtaWRkbGVfaW5kZXgpKQogCiAKIGRlZiBwcm9tcHRfZGlkX3JlcHJvZHVjZSgpOgotICAg
IHZhciA9IHJhd19pbnB1dCgnXG5EaWQgdGhlIGVycm9yIHJlcHJvZHVjZT8gW3kvbl06ICcpCisg
ICAgdmFyID0gaW5wdXQoJ1xuRGlkIHRoZSBlcnJvciByZXByb2R1Y2U/IFt5L25dOiAnKQogICAg
IHZhciA9IHZhci5sb3dlcigpCiAgICAgaWYgJ3knIGluIHZhcjoKICAgICAgICAgcmV0dXJuIFRy
dWUKQEAgLTE3NSwxMDYgKzI0NiwxNTcgQEAgZGVmIHByb21wdF9kaWRfcmVwcm9kdWNlKCk6CiAg
ICAgICAgIHJldHVybiBGYWxzZQogICAgIGVsc2U6CiAgICAgICAgIHByb21wdF9kaWRfcmVwcm9k
dWNlKCkKLSAgICAKKwogCiBkZWYgc2V0X3dlYmtpdF9vdXRwdXRfZGlyKHRlbXBfZGlyKToKLSAg
ICBwcmludCgnU2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBXRUJLSVRfT1VUUFVURElSIHRv
IHt9Jy5mb3JtYXQodGVtcF9kaXIpKQorICAgIHByaW50KCdBcmNoaXZlcyB3aWxsIGJlIGV4dHJh
Y3RlZCB0byB7fScuZm9ybWF0KHRlbXBfZGlyKSkKICAgICBvcy5lbnZpcm9uWydXRUJLSVRfT1VU
UFVURElSJ10gPSB0ZW1wX2RpcgogCiAKLWRlZiB0ZXN0X2FyY2hpdmUob3B0aW9ucywgcmV2aXNp
b24pOgotICAgIHByaW50KCdUZXN0aW5nIHJldmlzaW9uIHt9Li4uJy5mb3JtYXQocmV2aXNpb24p
KQotICAgIGNvbW1hbmQgPSBbXQotICAgIGlmICdtYWMnIGluIG9wdGlvbnMucGxhdGZvcm06Ci0g
ICAgICAgIGNvbW1hbmQgPSBbJy4vcnVuLXNhZmFyaSddCi0gICAgZWxpZiAnaW9zJyBpbiBvcHRp
b25zLnBsYXRmb3JtOgotICAgICAgICBjb21tYW5kID0gWycuL3J1bi1zYWZhcmknLCAnLS1zaW11
bGF0b3InXQorZGVmIHRlc3RfcmV2aXNpb24ob3B0aW9ucywgcmV2aXNpb24pOgorICAgIGRvd25s
b2FkX2FyY2hpdmUob3B0aW9ucywgcmV2aXNpb24pCisgICAgZXh0cmFjdF9hcmNoaXZlKG9wdGlv
bnMpCisgICAgaWYgb3B0aW9ucy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdpb3Mtc2ltdWxhdG9yJyk6
CisgICAgICAgIGNvbW1hbmQgPSBbJy4vcnVuLXNhZmFyaScsICctLWlwaG9uZS1zaW11bGF0b3In
LCAnLS17fScuZm9ybWF0KG9wdGlvbnMuY29uZmlndXJhdGlvbildCiAgICAgZWxzZToKLSAgICAg
ICAgcHJpbnQoJ0RlZmF1bHQgdGVzdCBiZWhhdmlvciBmb3IgdGhpcyBwbGF0Zm9ybSBpcyBub3Qg
aW1wbGVtZW50ZWQuLi4nLmZvcm1hdChvcHRpb25zLnBsYXRmb3JtKSkKKyAgICAgICAgY29tbWFu
ZCA9IFsnLi9ydW4tbWluaWJyb3dzZXInLCAnLS17fScuZm9ybWF0KG9wdGlvbnMuY29uZmlndXJh
dGlvbildCiAKICAgICBpZiBjb21tYW5kOgotICAgICAgICBzdWJwcm9jZXNzLmNhbGwoY29tbWFu
ZCkKKyAgICAgICAgc3VicHJvY2Vzcy5jYWxsKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLkRF
Vk5VTEwsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpCiAgICAgcmV0dXJuIHByb21wdF9kaWRf
cmVwcm9kdWNlKCkKIAogCiBkZWYgZ2V0X3BsYXRmb3JtcyhlbmRwb2ludCk6Ci0gICAgcGxhdGZv
cm1fdXJsID0gdXJscGFyc2UudXJsam9pbihSRVNUX0FQSV9VUkwsIGVuZHBvaW50KQotICAgIHIg
PSB1cmxsaWIyLnVybG9wZW4ocGxhdGZvcm1fdXJsKQorICAgIHBsYXRmb3JtX3VybCA9IHVybGxp
Yi5wYXJzZS51cmxqb2luKFJFU1RfQVBJX1VSTCwgZW5kcG9pbnQpCisgICAgciA9IHVybGxpYi5y
ZXF1ZXN0LnVybG9wZW4ocGxhdGZvcm1fdXJsKQogICAgIGRhdGEgPSBqc29uLmxvYWQocikKICAg
ICBwbGF0Zm9ybXMgPSBbXQogICAgIGZvciBwbGF0Zm9ybSBpbiBkYXRhLmdldCgnSXRlbXMnKToK
ICAgICAgICAgcGxhdGZvcm1zLmFwcGVuZChzdHIocGxhdGZvcm1bJ2lkZW50aWZpZXInXVsnUydd
KSkKLSAgICAKKwogICAgIHJldHVybiBwbGF0Zm9ybXMKLSAgICAgCisKKwogQG1lbW9pemVkCiBk
ZWYgbWluaWZpZWRfcGxhdGZvcm1zKCk6CiAgICAgcmV0dXJuIGdldF9wbGF0Zm9ybXMoUkVTVF9B
UElfTUlOSUZJRURfUExBVEZPUk1fRU5EUE9JTlQpCi0gCisKKwogQG1lbW9pemVkCiBkZWYgdW5t
aW5pZmllZF9wbGF0Zm9ybXMoKToKICAgICByZXR1cm4gZ2V0X3BsYXRmb3JtcyhSRVNUX0FQSV9Q
TEFURk9STV9FTkRQT0lOVCkKLSAKLWRlZiBpc19zdXBwb3J0ZWRfcGxhdGZvcm0ob3B0aW9ucyk6
Ci0gICAgcGxhdGZvcm0gPSAnLScuam9pbihbb3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucy5hcmNo
aXRlY3R1cmUsIG9wdGlvbnMuY29uZmlndXJhdGlvbl0pICAgIAorCisKK2RlZiBxdWV1ZV9mb3Io
b3B0aW9ucyk6CiAgICAgaWYgb3B0aW9ucy5mdWxsOgotICAgICAgICByZXR1cm4gcGxhdGZvcm0g
aW4gdW5taW5pZmllZF9wbGF0Zm9ybXMoKQotICAgIHJldHVybiBwbGF0Zm9ybSBpbiBtaW5pZmll
ZF9wbGF0Zm9ybXMoKQorICAgICAgICBwbGF0Zm9ybV9saXN0ID0gdW5taW5pZmllZF9wbGF0Zm9y
bXMoKQorICAgIGVsc2U6CisgICAgICAgIHBsYXRmb3JtX2xpc3QgPSBtaW5pZmllZF9wbGF0Zm9y
bXMoKQorCisgICAgZGVzY3JpcHRvcl9mcm9tX29wdGlvbnMgPSBRdWV1ZURlc2NyaXB0b3Iob3B0
aW9ucy5wbGF0Zm9ybSkKKworICAgIGlmIG5vdCBkZXNjcmlwdG9yX2Zyb21fb3B0aW9ucy5hcmNo
aXRlY3R1cmVzOgorICAgICAgICBpZiBvcHRpb25zLmFyY2hpdGVjdHVyZToKKyAgICAgICAgICAg
IGRlc2NyaXB0b3JfZnJvbV9vcHRpb25zLmFyY2hpdGVjdHVyZXMgPSBzZXQob3B0aW9ucy5hcmNo
aXRlY3R1cmUpCisgICAgZWxpZiBvcHRpb25zLmFyY2hpdGVjdHVyZSBpcyBub3QgTm9uZSBhbmQg
ZGVzY3JpcHRvcl9mcm9tX29wdGlvbnMuYXJjaGl0ZWN0dXJlcyAhPSB7b3B0aW9ucy5hcmNoaXRl
Y3R1cmV9OgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgaWYgbm90IGRlc2NyaXB0b3JfZnJv
bV9vcHRpb25zLmNvbmZpZ3VyYXRpb246CisgICAgICAgIGlmIG9wdGlvbnMuY29uZmlndXJhdGlv
bjoKKyAgICAgICAgICAgIGRlc2NyaXB0b3JfZnJvbV9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBv
cHRpb25zLmNvbmZpZ3VyYXRpb24KKyAgICBlbGlmIG9wdGlvbnMuY29uZmlndXJhdGlvbiBpcyBu
b3QgTm9uZSBhbmQgZGVzY3JpcHRvcl9mcm9tX29wdGlvbnMuY29uZmlndXJhdGlvbiAhPSBvcHRp
b25zLmNvbmZpZ3VyYXRpb246CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBmb3IgcGxhdGZv
cm1fbmFtZSBpbiBwbGF0Zm9ybV9saXN0OgorICAgICAgICBhdmFpbGFibGVfcGxhdGZvcm0gPSBR
dWV1ZURlc2NyaXB0b3IocGxhdGZvcm1fbmFtZSkKKyAgICAgICAgaWYgZGVzY3JpcHRvcl9mcm9t
X29wdGlvbnMucGxhdGZvcm1fbmFtZSAhPSBhdmFpbGFibGVfcGxhdGZvcm0ucGxhdGZvcm1fbmFt
ZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGRlc2NyaXB0b3JfZnJvbV9vcHRp
b25zLnZlcnNpb24gYW5kIGRlc2NyaXB0b3JfZnJvbV9vcHRpb25zLnZlcnNpb24gIT0gYXZhaWxh
YmxlX3BsYXRmb3JtLnZlcnNpb246CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBu
b3QgZGVzY3JpcHRvcl9mcm9tX29wdGlvbnMuYXJjaGl0ZWN0dXJlcy5pc3N1YnNldChhdmFpbGFi
bGVfcGxhdGZvcm0uYXJjaGl0ZWN0dXJlcyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICBpZiBkZXNjcmlwdG9yX2Zyb21fb3B0aW9ucy5jb25maWd1cmF0aW9uIGFuZCBkZXNjcmlwdG9y
X2Zyb21fb3B0aW9ucy5jb25maWd1cmF0aW9uICE9IGF2YWlsYWJsZV9wbGF0Zm9ybS5jb25maWd1
cmF0aW9uOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtX25h
bWUKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiBwcmludF9wbGF0Zm9ybXMocGxhdGZvcm1zKToK
KyAgICBwbGF0Zm9ybV9zdHJpbmdzID0gWycgICAge30nLmZvcm1hdChRdWV1ZURlc2NyaXB0b3Io
cXVldWVfbmFtZSkucHJldHR5X3N0cmluZygpKSBmb3IgcXVldWVfbmFtZSBpbiBwbGF0Zm9ybXNd
CisgICAgcHJpbnQoJ1xuJy5qb2luKHNvcnRlZChwbGF0Zm9ybV9zdHJpbmdzKSkpCiAKIAogZGVm
IHZhbGlkYXRlX29wdGlvbnMob3B0aW9ucyk6Ci0gICAgaWYgbm90IGlzX3N1cHBvcnRlZF9wbGF0
Zm9ybShvcHRpb25zKToKLSAgICAgICAgcHJpbnQoJ1Vuc3VwcG9ydGVkIHBsYXRmb3JtIGNvbWJp
bmF0aW9uOiBbe31dLCBleGl0aW5nLi4uJy5mb3JtYXQoJy0nLmpvaW4oW29wdGlvbnMucGxhdGZv
cm0sIG9wdGlvbnMuYXJjaGl0ZWN0dXJlLCBvcHRpb25zLmNvbmZpZ3VyYXRpb25dKSkpCisgICAg
b3B0aW9ucy5xdWV1ZSA9IHF1ZXVlX2ZvcihvcHRpb25zKSAgIyBSZXNvbHZlIGFuZCBjYWNoZSBm
b3IgZnV0dXJlIHVzZS4KKyAgICBpZiBvcHRpb25zLnF1ZXVlIGlzIE5vbmU6CisgICAgICAgIHBy
aW50KCdVbnN1cHBvcnRlZCBwbGF0Zm9ybSBjb21iaW5hdGlvbiwgZXhpdGluZy4nKQogICAgICAg
ICBpZiBvcHRpb25zLmZ1bGw6Ci0gICAgICAgICAgICBwcmludCgnQXZhaWxhYmxlIFVubWluaWZp
ZWQgcGxhdGZvcm1zOiB7fScuZm9ybWF0KHVubWluaWZpZWRfcGxhdGZvcm1zKCkpKQorICAgICAg
ICAgICAgcHJpbnQoJ0F2YWlsYWJsZSB1bm1pbmlmaWVkIHBsYXRmb3JtczonKQorICAgICAgICAg
ICAgcHJpbnRfcGxhdGZvcm1zKHVubWluaWZpZWRfcGxhdGZvcm1zKCkpCiAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBwcmludCgnQXZhaWxhYmxlIE1pbmlmaWVkIHBsYXRmb3Jtczoge30nLmZv
cm1hdChtaW5pZmllZF9wbGF0Zm9ybXMoKSkpCi0gICAgICAgICAgICBwcmludCgnSU5GTzogcGFz
cyAtLWZ1bGwgdG8gdHJ5IGFnYWluc3QgZnVsbCBhcmNoaXZlcycpCisgICAgICAgICAgICBwcmlu
dCgnQXZhaWxhYmxlIG1pbmlmaWVkIHBsYXRmb3JtczonKQorICAgICAgICAgICAgcHJpbnRfcGxh
dGZvcm1zKG1pbmlmaWVkX3BsYXRmb3JtcygpKQogICAgICAgICBleGl0KDEpCiAKKwogZGVmIHBy
aW50X2xpc3RfYW5kX2V4aXQocmV2aXNpb25fbGlzdCwgb3B0aW9ucyk6Ci0gICAgICAgIHByaW50
KCdTdXBwb3J0ZWQgbWluaWZpZWQgcGxhdGZvcm1zOiB7fScuZm9ybWF0KG1pbmlmaWVkX3BsYXRm
b3JtcygpKSkKLSAgICAgICAgcHJpbnQoJ1N1cHBvcnRlZCB1bm1pbmlmaWVkIHBsYXRmb3Jtczog
e30nLmZvcm1hdCh1bm1pbmlmaWVkX3BsYXRmb3JtcygpKSkKLSAgICAgICAgcHJpbnQoJ3t9IHJl
dmlzaW9ucyBhdmFpbGFibGUgZm9yIHN1cHBsaWVkIHBsYXRmb3JtOiB7fS17fS17fTonLmZvcm1h
dChsZW4ocmV2aXNpb25fbGlzdCksIG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnMuYXJjaGl0ZWN0
dXJlLCBvcHRpb25zLmNvbmZpZ3VyYXRpb24pKQotICAgICAgICBwcmludChyZXZpc2lvbl9saXN0
KQotICAgICAgICBleGl0KDApCisgICAgcHJpbnQoJ1N1cHBvcnRlZCBtaW5pZmllZCBwbGF0Zm9y
bXM6JykKKyAgICBwcmludF9wbGF0Zm9ybXMobWluaWZpZWRfcGxhdGZvcm1zKCkpCisgICAgcHJp
bnQoJ1N1cHBvcnRlZCB1bm1pbmlmaWVkIHBsYXRmb3JtczonKQorICAgIHByaW50X3BsYXRmb3Jt
cyh1bm1pbmlmaWVkX3BsYXRmb3JtcygpKQorICAgIHByaW50KCd7fSByZXZpc2lvbnMgYXZhaWxh
YmxlIGZvciB7fTonLmZvcm1hdChsZW4ocmV2aXNpb25fbGlzdCksIG9wdGlvbnMucXVldWUpKQor
ICAgIHByaW50KHJldmlzaW9uX2xpc3QpCisgICAgZXhpdCgwKQogCi1kZWYgZmV0Y2hfcmV2aXNp
b25fbGlzdChvcHRpb25zLCBMYXN0RXZhbHVhdGVkS2V5PU5vbmUpOgotICAgIHVybCA9IGdldF9h
cGlfYXJjaGl2ZV91cmwob3B0aW9ucywgTGFzdEV2YWx1YXRlZEtleSkKLSAgICByID0gdXJsbGli
Mi51cmxvcGVuKHVybCkKKworZGVmIGZldGNoX3JldmlzaW9uX2xpc3Qob3B0aW9ucywgbGFzdF9l
dmFsdWF0ZWRfa2V5PU5vbmUpOgorICAgIHVybCA9IGdldF9hcGlfYXJjaGl2ZV91cmwob3B0aW9u
cywgbGFzdF9ldmFsdWF0ZWRfa2V5KQorICAgIHIgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHVy
bCkKICAgICBkYXRhID0ganNvbi5sb2FkKHIpCiAgICAgcmV2aXNpb25fbGlzdCA9IGdldF9zb3J0
ZWRfcmV2aXNpb25zKGRhdGEpCiAKICAgICBpZiAnTGFzdEV2YWx1YXRlZEtleScgaW4gZGF0YVsn
cmV2aXNpb25zJ106Ci0gICAgICAgIExhc3RFdmFsdWF0ZWRLZXkgPSBkYXRhWydyZXZpc2lvbnMn
XVsnTGFzdEV2YWx1YXRlZEtleSddCi0gICAgICAgIHJldmlzaW9uX2xpc3QgKz0gZmV0Y2hfcmV2
aXNpb25fbGlzdChvcHRpb25zLCBMYXN0RXZhbHVhdGVkS2V5KQotICAgICAgICAKLSAgICByZXR1
cm4gcmV2aXNpb25fbGlzdAotICAgIAotZGVmIG1haW4ob3B0aW9ucyk6Ci0gICAgdmFsaWRhdGVf
b3B0aW9ucyhvcHRpb25zKQotICAgIHJldmlzaW9uX2xpc3QgPSBmZXRjaF9yZXZpc2lvbl9saXN0
KG9wdGlvbnMpCi0gICAgCi0gICAgaWYgb3B0aW9ucy5saXN0OgotICAgICAgICBwcmludF9saXN0
X2FuZF9leGl0KHJldmlzaW9uX2xpc3QsIG9wdGlvbnMpCisgICAgICAgIGxhc3RfZXZhbHVhdGVk
X2tleSA9IGRhdGFbJ3JldmlzaW9ucyddWydMYXN0RXZhbHVhdGVkS2V5J10KKyAgICAgICAgcmV2
aXNpb25fbGlzdCArPSBmZXRjaF9yZXZpc2lvbl9saXN0KG9wdGlvbnMsIGxhc3RfZXZhbHVhdGVk
X2tleSkKIAotICAgIHN0YXJ0X2luZGV4LCBlbmRfaW5kZXggPSBnZXRfaW5kaWNlc19mcm9tX3Jl
dmlzaW9ucyhyZXZpc2lvbl9saXN0LCBvcHRpb25zLnN0YXJ0LCBvcHRpb25zLmVuZCkKLSAgICBw
cmludCgnQmlzZWN0aW5nIGJldHdlZW4ge30gYW5kIHt9Jy5mb3JtYXQocmV2aXNpb25fbGlzdFtz
dGFydF9pbmRleF0sIHJldmlzaW9uX2xpc3RbZW5kX2luZGV4XSkpCi0gICAgCi0gICAgIyBmcm9t
IGhlcmUgZm9yd2FyZCwgdXNlIGluZGljZXMgaW5zdGVhZCBvZiByZXZpc2lvbnMKLSAgICBiaXNl
Y3RfYnVpbGRzKHJldmlzaW9uX2xpc3QsIHN0YXJ0X2luZGV4LCBlbmRfaW5kZXgsIG9wdGlvbnMp
CisgICAgcmV0dXJuIHJldmlzaW9uX2xpc3QKIAogCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgorZGVmIG1haW4oKToKICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhzeXMuYXJndlsxOl0pCiAg
ICAgc2NyaXB0X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoX19maWxlX18pCiAgICAgc2NyaXB0X2Rp
cmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShzY3JpcHRfcGF0aCkKICAgICBvcy5jaGRpcihzY3Jp
cHRfZGlyZWN0b3J5KQogICAgIHdlYmtpdF9vdXRwdXRfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgp
CiAgICAgc2V0X3dlYmtpdF9vdXRwdXRfZGlyKHdlYmtpdF9vdXRwdXRfZGlyKQorCisgICAgdmFs
aWRhdGVfb3B0aW9ucyhvcHRpb25zKQorICAgIHJldmlzaW9uX2xpc3QgPSBmZXRjaF9yZXZpc2lv
bl9saXN0KG9wdGlvbnMpCisKKyAgICBpZiBvcHRpb25zLmxpc3Q6CisgICAgICAgIHByaW50X2xp
c3RfYW5kX2V4aXQocmV2aXNpb25fbGlzdCwgb3B0aW9ucykKKworICAgIGlmIG5vdCByZXZpc2lv
bl9saXN0OgorICAgICAgICBwcmludCgnTm8gYXJjaGl2ZXMgZm91bmQgZm9yIHt9LicuZm9ybWF0
KG9wdGlvbnMucXVldWUpKQorICAgICAgICBleGl0KDEpCisgICAgc3RhcnRfaW5kZXgsIGVuZF9p
bmRleCA9IGdldF9pbmRpY2VzX2Zyb21fcmV2aXNpb25zKHJldmlzaW9uX2xpc3QsIG9wdGlvbnMu
c3RhcnQsIG9wdGlvbnMuZW5kKQorCisgICAgIyBGcm9tIGhlcmUgZm9yd2FyZCwgdXNlIGluZGlj
ZXMgaW5zdGVhZCBvZiByZXZpc2lvbnMuCiAgICAgdHJ5OgotICAgICAgICBtYWluKG9wdGlvbnMp
ICAgIAorICAgICAgICBpZiBvcHRpb25zLnNhbml0eV9jaGVjazoKKyAgICAgICAgICAgIGlmIHRl
c3RfcmV2aXNpb24ob3B0aW9ucywgcmV2aXNpb25fbGlzdFtzdGFydF9pbmRleF0pOgorICAgICAg
ICAgICAgICAgIHByaW50KCdJc3N1ZSByZXByb2R1Y2VkIHdpdGggdGhlIGZpcnN0IHJldmlzaW9u
IGluIHRoZSByYW5nZSwgY2Fubm90IGJpc2VjdC4nKQorICAgICAgICAgICAgICAgIGV4aXQoMSkK
KyAgICAgICAgICAgIGlmIG5vdCB0ZXN0X3JldmlzaW9uKG9wdGlvbnMsIHJldmlzaW9uX2xpc3Rb
ZW5kX2luZGV4XSk6CisgICAgICAgICAgICAgICAgcHJpbnQoJ0lzc3VlIGRpZCBub3QgcmVwcm9k
dWNlIHdpdGggdGhlIGxhc3QgcmV2aXNpb24gaW4gdGhlIHJhbmdlLCBjYW5ub3QgYmlzZWN0Licp
CisgICAgICAgICAgICAgICAgZXhpdCgxKQorCisgICAgICAgIGJpc2VjdF9idWlsZHMocmV2aXNp
b25fbGlzdCwgc3RhcnRfaW5kZXgsIGVuZF9pbmRleCwgb3B0aW9ucykKICAgICBleGNlcHQgS2V5
Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIGV4aXQoIkFib3J0aW5nLiIpCisgICAgICAgIGV4aXQo
MSkKICAgICBmaW5hbGx5OgogICAgICAgICBzaHV0aWwucm10cmVlKHdlYmtpdF9vdXRwdXRfZGly
LCBpZ25vcmVfZXJyb3JzPVRydWUpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICBtYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417092</attachid>
            <date>2021-01-06 09:21:38 -0800</date>
            <delta_ts>2021-01-06 12:31:49 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>bisect-builds.txt</filename>
            <type>text/plain</type>
            <size>23312</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MTE2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI5IEBACisyMDIxLTAxLTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIEFzc29ydGVkIGZpeGVzIGZvciBiaXNlY3QtYnVpbGRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAxNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2hlZCB0byBQeXRob24g
My4KKyAgICAgICAgTWFueSB0cml2aWFsIFB5dGhvbiBzdHlsZSBjaGFuZ2VzLgorICAgICAgICBT
aW1wbGlmaWVkIGFyZ3VtZW50cywgYW5kIGNsZWFuZWQgdXAgb3V0cHV0LgorICAgICAgICBTd2l0
Y2hlZCBmcm9tIHJ1bi1zYWZhcmkgdG8gcnVuLW1pbmlicm93c2VyIG9uIG1hY09TLCBhcyBydW4t
c2FmYXJpIGN1cnJlbnRseQorICAgICAgICBkb2Vzbid0IHdvcmsgb24gcmVndWxhciBtYWNPUyBp
bnN0YWxsYXRpb25zLgorCisgICAgICAgICogU2NyaXB0cy9iaXNlY3QtYnVpbGRzOiAKKyAgICAg
ICAgKFF1ZXVlRGVzY3JpcHRvcik6IE5ldyBjbGFzcyB0aGF0IGhvbGRzIGEgZGVzY3JpcHRpb24g
b2YgYSBxdWV1ZSwgb3IgYSAicGxhdGZvcm0iLAorICAgICAgICBhcyBjb21pbmcgZnJvbSBhIHN0
cmluZyBsaWtlIG1hYy1jYXRhbGluYSBvciBtYWMtY2F0YWxpbmEteDg2XzY0LXJlbGVhc2UuIFVz
ZWQgZm9yCisgICAgICAgIG1hdGNoaW5nIGFyZ3VtZW50cyB0byBhbiBleGlzdGluZyBhcmNoaXZl
IGRpcmVjdG9yeSBvbiB0aGUgc2VydmVyLgorICAgICAgICAodHJhY19saW5rKTogQWRkZWQuIFRo
ZSB0b29sIG5vdyBwcmludHMgYSB0cmFjIGxpbmsgZm9yIHNlZWluZyB3aGVyZSB0aGUgcmVncmVz
c2lvbgorICAgICAgICB3YXMgaW50cm9kdWNlZC4KKyAgICAgICAgKGJpc2VjdF9idWlsZHMpOiBG
aXhlZCBhcml0aG1ldGljIG1pc3Rha2VzLiBHb3QgcmlkIG9mIGFuIHVubmVjZXNzYXJ5IHdoaWxl
LXRydWUgbG9vcCwKKyAgICAgICAgYXMgdGhlIGZ1bmN0aW9uIHdhcyBhbHJlYWR5IHJlY3Vyc2l2
ZS4KKyAgICAgICAgKGhvc3RfcGxhdGZvcm1fbmFtZSk6IFRoZSBzY3JpcHQgbm93IGRlZmF1bHRz
IHRvIGN1cnJlbnQgcGxhdGZvcm0sIHNvIC1wIGFyZ3VtZW50CisgICAgICAgIGlzIG1vc3RseSB0
byBzZWxlY3Qgc2ltdWxhdG9yLgorICAgICAgICAobWFpbik6IE1vdmVkIGNvZGUgZnJvbSAiaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJyIgYmxvY2sgaW50byBtYWluIGZ1bmN0aW9uIGZvcgorICAg
ICAgICBjb25zaXN0ZW5jeS4KKwogMjAyMS0wMS0wNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcGFydCBvZiBodHRwczovL3RyYWMud2Via2l0
Lm9yZy9yMjcxMTU4CkluZGV4OiBUb29scy9TY3JpcHRzL2Jpc2VjdC1idWlsZHMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9iaXNlY3QtYnVpbGRzCShyZXZpc2lvbiAyNzExNDgpCisrKyBU
b29scy9TY3JpcHRzL2Jpc2VjdC1idWlsZHMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotIyBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTcsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiwxMiBAQAogIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAorIyBBIHdlYmtpdHB5IGltcG9ydCBuZWVkcyB0byBnbyBmaXJzdCBm
b3IgYXV0b2luc3RhbGxlciB0byB3b3JrIHdpdGggc3Vic2VxdWVudCBpbXBvcnRzLgorZnJvbSB3
ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5j
b21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgVmVyc2lvbk5hbWVNYXAKK2Zyb20gd2Via2l0
cHkudG9vbC5ncmFtbWFyIGltcG9ydCBwbHVyYWxpemUKKwogaW1wb3J0IGFyZ3BhcnNlCiBpbXBv
cnQgYmlzZWN0CiBpbXBvcnQganNvbgpAQCAtMzUsOSArNDEsOCBAQCBpbXBvcnQgc2h1dGlsCiBp
bXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgdXJs
bGliMgotaW1wb3J0IHVybHBhcnNlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBv
cnQgbWVtb2l6ZWQKK2ltcG9ydCB1cmxsaWIKKwogCiBSRVNUX0FQSV9VUkwgPSAnaHR0cHM6Ly9x
MXR6cWZ5NDhlLmV4ZWN1dGUtYXBpLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tL3YyXzIvJwogUkVT
VF9BUElfQVJDSElWRV9FTkRQT0lOVCA9ICdhcmNoaXZlcy8nCkBAIC00NiwzNSArNTEsOTQgQEAg
UkVTVF9BUElfUExBVEZPUk1fRU5EUE9JTlQgPSAncGxhdGZvcm1zJwogUkVTVF9BUElfTUlOSUZJ
RURfUExBVEZPUk1fRU5EUE9JTlQgPSAnbWluaWZpZWQtcGxhdGZvcm1zJwogCiAKK2NsYXNzIFF1
ZXVlRGVzY3JpcHRvcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjcmlwdG9y
X3N0cmluZyk6CisgICAgICAgIHNlbGYucGxhdGZvcm1fbmFtZSA9IE5vbmUKKyAgICAgICAgc2Vs
Zi52ZXJzaW9uID0gTm9uZQorICAgICAgICBzZWxmLmFyY2hpdGVjdHVyZXMgPSBzZXQoKQorICAg
ICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBOb25lCisKKyAgICAgICAgaWYgZGVzY3JpcHRvcl9z
dHJpbmcuc3RhcnRzd2l0aCgnbWFjLScpOgorICAgICAgICAgICAgcGxhdGZvcm1fbmFtZV9lbmRf
aW5kZXggPSBkZXNjcmlwdG9yX3N0cmluZy5maW5kKCctJykKKyAgICAgICAgICAgIHZlcnNpb25f
c3RhcnRfaW5kZXggPSBwbGF0Zm9ybV9uYW1lX2VuZF9pbmRleCArIDEKKyAgICAgICAgICAgIHZl
cnNpb25fZW5kX2luZGV4ID0gZGVzY3JpcHRvcl9zdHJpbmcuZmluZCgnLScsIHZlcnNpb25fc3Rh
cnRfaW5kZXgpCisgICAgICAgICAgICBzZWxmLnBsYXRmb3JtX25hbWUgPSBkZXNjcmlwdG9yX3N0
cmluZ1s6cGxhdGZvcm1fbmFtZV9lbmRfaW5kZXhdCisgICAgICAgICAgICBpZiB2ZXJzaW9uX2Vu
ZF9pbmRleCA9PSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb24gPSBkZXNjcmlwdG9y
X3N0cmluZ1t2ZXJzaW9uX3N0YXJ0X2luZGV4Ol0KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgICAgIHNlbGYudmVyc2lvbiA9IGRlc2NyaXB0b3Jfc3RyaW5nW3ZlcnNpb25fc3RhcnRf
aW5kZXg6dmVyc2lvbl9lbmRfaW5kZXhdCisgICAgICAgICAgICBhcmNoaXRlY3R1cmVzX2FuZF9j
b25maWd1cmF0aW9uID0gZGVzY3JpcHRvcl9zdHJpbmdbdmVyc2lvbl9lbmRfaW5kZXggKyAxOl0K
KyAgICAgICAgZWxpZiBkZXNjcmlwdG9yX3N0cmluZy5zdGFydHN3aXRoKCdpb3Mtc2ltdWxhdG9y
LScpOgorICAgICAgICAgICAgcGxhdGZvcm1fbmFtZV9lbmRfaW5kZXggPSBkZXNjcmlwdG9yX3N0
cmluZy5maW5kKCctJywgZGVzY3JpcHRvcl9zdHJpbmcuZmluZCgnLScpICsgMSkKKyAgICAgICAg
ICAgIHZlcnNpb25fc3RhcnRfaW5kZXggPSBwbGF0Zm9ybV9uYW1lX2VuZF9pbmRleCArIDEKKyAg
ICAgICAgICAgIHZlcnNpb25fZW5kX2luZGV4ID0gZGVzY3JpcHRvcl9zdHJpbmcuZmluZCgnLScs
IHZlcnNpb25fc3RhcnRfaW5kZXgpCisgICAgICAgICAgICBzZWxmLnBsYXRmb3JtX25hbWUgPSBk
ZXNjcmlwdG9yX3N0cmluZ1s6cGxhdGZvcm1fbmFtZV9lbmRfaW5kZXhdCisgICAgICAgICAgICBp
ZiB2ZXJzaW9uX2VuZF9pbmRleCA9PSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb24g
PSBkZXNjcmlwdG9yX3N0cmluZ1t2ZXJzaW9uX3N0YXJ0X2luZGV4Ol0KKyAgICAgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgICAgIHNlbGYudmVyc2lvbiA9IGRlc2NyaXB0b3Jfc3RyaW5nW3Zl
cnNpb25fc3RhcnRfaW5kZXg6dmVyc2lvbl9lbmRfaW5kZXhdCisgICAgICAgICAgICBhcmNoaXRl
Y3R1cmVzX2FuZF9jb25maWd1cmF0aW9uID0gZGVzY3JpcHRvcl9zdHJpbmdbdmVyc2lvbl9lbmRf
aW5kZXggKyAxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBsYXRmb3JtX25hbWVfZW5k
X2luZGV4ID0gZGVzY3JpcHRvcl9zdHJpbmcuZmluZCgnLScpCisgICAgICAgICAgICBpZiBwbGF0
Zm9ybV9uYW1lX2VuZF9pbmRleCA9PSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnBsYXRmb3Jt
X25hbWUgPSBkZXNjcmlwdG9yX3N0cmluZworICAgICAgICAgICAgICAgIHJldHVybgorICAgICAg
ICAgICAgc2VsZi5wbGF0Zm9ybV9uYW1lID0gZGVzY3JpcHRvcl9zdHJpbmdbOnBsYXRmb3JtX25h
bWVfZW5kX2luZGV4XQorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlc19hbmRfY29uZmlndXJhdGlv
biA9IGRlc2NyaXB0b3Jfc3RyaW5nW3BsYXRmb3JtX25hbWVfZW5kX2luZGV4ICsgMTpdCisgICAg
ICAgIGFyY2hpdGVjdHVyZXNfZW5kX2luZGV4ID0gYXJjaGl0ZWN0dXJlc19hbmRfY29uZmlndXJh
dGlvbi5maW5kKCctJykKKyAgICAgICAgaWYgYXJjaGl0ZWN0dXJlc19lbmRfaW5kZXggPT0gLTE6
CisgICAgICAgICAgICBzZWxmLmFyY2hpdGVjdHVyZXMgPSBzZXQoYXJjaGl0ZWN0dXJlc19hbmRf
Y29uZmlndXJhdGlvbi5zcGxpdCgnICcpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNv
bmZpZ3VyYXRpb25fc3RhcnRfaW5kZXggPSBhcmNoaXRlY3R1cmVzX2VuZF9pbmRleCArIDEKKyAg
ICAgICAgc2VsZi5hcmNoaXRlY3R1cmVzID0gc2V0KGFyY2hpdGVjdHVyZXNfYW5kX2NvbmZpZ3Vy
YXRpb25bOmFyY2hpdGVjdHVyZXNfZW5kX2luZGV4XS5zcGxpdCgnICcpKQorICAgICAgICBzZWxm
LmNvbmZpZ3VyYXRpb24gPSBhcmNoaXRlY3R1cmVzX2FuZF9jb25maWd1cmF0aW9uW2NvbmZpZ3Vy
YXRpb25fc3RhcnRfaW5kZXg6XQorCisgICAgZGVmIHByZXR0eV9zdHJpbmcoc2VsZik6CisgICAg
ICAgIHJlc3VsdCA9IHNlbGYucGxhdGZvcm1fbmFtZQorICAgICAgICBpZiBzZWxmLnZlcnNpb246
CisgICAgICAgICAgICByZXN1bHQgKz0gJy0nICsgc2VsZi52ZXJzaW9uCisgICAgICAgIHJlc3Vs
dCArPSAnICgnICsgJyAnLmpvaW4oc2VsZi5hcmNoaXRlY3R1cmVzKQorICAgICAgICByZXN1bHQg
Kz0gJywgJyArIHNlbGYuY29uZmlndXJhdGlvbiArICcpJworICAgICAgICByZXR1cm4gcmVzdWx0
CisKKworZGVmIHRyYWNfbGluayhzdGFydF9yZXZpc2lvbiwgZW5kX3JldmlzaW9uKToKKyAgICBp
ZiBzdGFydF9yZXZpc2lvbiArIDEgPT0gZW5kX3JldmlzaW9uOgorICAgICAgICByZXR1cm4gJ2h0
dHBzOi8vdHJhYy53ZWJraXQub3JnL3J7fScuZm9ybWF0KGVuZF9yZXZpc2lvbikKKyAgICBlbHNl
OgorICAgICAgICByZXR1cm4gJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuay8/bW9k
ZT1mb2xsb3dfY29weSZyZXY9e30mc3RvcF9yZXY9e30nLmZvcm1hdChlbmRfcmV2aXNpb24sIHN0
YXJ0X3JldmlzaW9uICsgMSkKKworCiBkZWYgYmlzZWN0X2J1aWxkcyhyZXZpc2lvbl9saXN0LCBz
dGFydF9pbmRleCwgZW5kX2luZGV4LCBvcHRpb25zKToKLSAgICB3aGlsZSBUcnVlOgotICAgICAg
ICBpbmRleF90b190ZXN0ID0gcGlja19uZXh0X2J1aWxkKHJldmlzaW9uX2xpc3QsIHN0YXJ0X2lu
ZGV4LCBlbmRfaW5kZXgpCi0gICAgICAgIGlmIGluZGV4X3RvX3Rlc3QgPT0gTm9uZToKLSAgICAg
ICAgICAgIHByaW50KCdObyBtb3JlIGJ1aWxkcyB0byB0ZXN0Li4uJykKLSAgICAgICAgICAgIGV4
aXQoMSkKLSAgICAgICAgZG93bmxvYWRfYXJjaGl2ZShvcHRpb25zLCByZXZpc2lvbl9saXN0W2lu
ZGV4X3RvX3Rlc3RdKQotICAgICAgICBleHRyYWN0X2FyY2hpdmUob3B0aW9ucykKLSAgICAgICAg
cmVwcm9kdWNlcyA9IHRlc3RfYXJjaGl2ZShvcHRpb25zLCByZXZpc2lvbl9saXN0W2luZGV4X3Rv
X3Rlc3RdKQotCi0gICAgICAgIGlmIHJlcHJvZHVjZXM6ICAgICAgICAgICMgYmlzZWN0IGxlZnQK
LSAgICAgICAgICAgIGluZGV4X3RvX3Rlc3QgLT0gMSAgIyBXZSBjYW4gcmVtb3ZlIHRoaXMgZnJv
bSB0aGUgZW5kIG9mIHRoZSBsaXN0IG9mIGJ1aWxkcyB0byB0ZXN0Ci0gICAgICAgICAgICBiaXNl
Y3RfYnVpbGRzKHJldmlzaW9uX2xpc3QsIHN0YXJ0X2luZGV4LCBpbmRleF90b190ZXN0LCBvcHRp
b25zKQotICAgICAgICBpZiBub3QgcmVwcm9kdWNlczogICAgICAjIGJpc2VjdCByaWdodAotICAg
ICAgICAgICAgaW5kZXhfdG9fdGVzdCArPSAxICAjIFdlIGNhbiByZW1vdmUgdGhpcyBmcm9tIHRo
ZSBzdGFydCBvZiB0aGUgbGlzdCBvZiBidWlsZHMgdG8gdGVzdAotICAgICAgICAgICAgYmlzZWN0
X2J1aWxkcyhyZXZpc2lvbl9saXN0LCBpbmRleF90b190ZXN0LCBlbmRfaW5kZXgsIG9wdGlvbnMp
CisgICAgaW5kZXhfdG9fdGVzdCA9IHBpY2tfbmV4dF9idWlsZChyZXZpc2lvbl9saXN0LCBzdGFy
dF9pbmRleCwgZW5kX2luZGV4KQorICAgIGlmIGluZGV4X3RvX3Rlc3QgaXMgTm9uZToKKyAgICAg
ICAgcHJpbnQoJ1xuV29ya3M6IHJ7fScuZm9ybWF0KHJldmlzaW9uX2xpc3Rbc3RhcnRfaW5kZXhd
KSkKKyAgICAgICAgcHJpbnQoJ0ZhaWxzOiBye30nLmZvcm1hdChyZXZpc2lvbl9saXN0W2VuZF9p
bmRleF0pKQorICAgICAgICBwcmludCh0cmFjX2xpbmsocmV2aXNpb25fbGlzdFtzdGFydF9pbmRl
eF0sIHJldmlzaW9uX2xpc3RbZW5kX2luZGV4XSkpCisgICAgICAgIGV4aXQoMCkKKworICAgIGFy
Y2hpdmVfY291bnQgPSBlbmRfaW5kZXggLSBzdGFydF9pbmRleCAtIDEKKyAgICBwcmludCgnQmlz
ZWN0aW5nIGJldHdlZW4gcnt9IGFuZCBye30sIHt9IGluIHRoZSByYW5nZS4nLmZvcm1hdChyZXZp
c2lvbl9saXN0W3N0YXJ0X2luZGV4XSwgcmV2aXNpb25fbGlzdFtlbmRfaW5kZXhdLCBwbHVyYWxp
emUoYXJjaGl2ZV9jb3VudCwgJ2FyY2hpdmUnKSkpCisgICAgcmVwcm9kdWNlcyA9IHRlc3RfcmV2
aXNpb24ob3B0aW9ucywgcmV2aXNpb25fbGlzdFtpbmRleF90b190ZXN0XSkKKworICAgIGlmIHJl
cHJvZHVjZXM6CisgICAgICAgIGJpc2VjdF9idWlsZHMocmV2aXNpb25fbGlzdCwgc3RhcnRfaW5k
ZXgsIGluZGV4X3RvX3Rlc3QsIG9wdGlvbnMpCisgICAgZWxzZToKKyAgICAgICAgYmlzZWN0X2J1
aWxkcyhyZXZpc2lvbl9saXN0LCBpbmRleF90b190ZXN0LCBlbmRfaW5kZXgsIG9wdGlvbnMpCiAK
IAorIyBkb3dubG9hZC1idWlsdC1wcm9kdWN0IGFuZCBidWlsdC1wcm9kdWN0LWFyY2hpdmUgaW1w
bGljaXRseSB1c2UgV2ViS2l0QnVpbGQgZGlyZWN0b3J5IGZvciBkb3dubG9hZGVkIGFyY2hpdmUu
CisjIEZJWE1FOiBNb2RpZnlpbmcgdGhlIFdlYktpdEJ1aWxkIGRpcmVjdG9yeSBtYWtlcyBubyBz
ZW5zZSBoZXJlLCBmaW5kIGEgd2F5IHRvIHVzZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIHRo
ZSBhcmNoaXZlLgogZGVmIGRvd25sb2FkX2FyY2hpdmUob3B0aW9ucywgcmV2aXNpb24pOgogICAg
IGFwaV91cmwgPSBnZXRfYXBpX2FyY2hpdmVfdXJsKG9wdGlvbnMpCiAgICAgczNfdXJsID0gZ2V0
X3MzX2xvY2F0aW9uX2Zvcl9yZXZpc2lvbihhcGlfdXJsLCByZXZpc2lvbikKLSAgICBwcmludCgn
QXJjaGl2ZSBVUkw6IHt9Jy5mb3JtYXQoczNfdXJsKSkKKyAgICBwcmludCgnRG93bmxvYWRpbmcg
cnt9OiB7fScuZm9ybWF0KHJldmlzaW9uLCBzM191cmwpKQogICAgIGNvbW1hbmQgPSBbJ3B5dGhv
bicsICcuLi9DSVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICctLXt9Jy5mb3JtYXQo
b3B0aW9ucy5jb25maWd1cmF0aW9uKSwgJy0tcGxhdGZvcm0nLCBvcHRpb25zLnBsYXRmb3JtLCBz
M191cmxdCi0gICAgcHJpbnQoJ0Rvd25sb2FkaW5nIHJldmlzaW9uOiB7fScuZm9ybWF0KHJldmlz
aW9uKSkKICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY29tbWFuZCkKIAogCiBkZWYgZXh0cmFj
dF9hcmNoaXZlKG9wdGlvbnMpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuLi9DSVN1cHBv
cnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlJywgJy0tcGxhdGZvcm0nLCBvcHRpb25zLnBsYXRmb3Jt
LCAnLS0lcycgJSBvcHRpb25zLmNvbmZpZ3VyYXRpb24sICdleHRyYWN0J10KKyAgICBjb21tYW5k
ID0gWydweXRob24nLCAnLi4vQ0lTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXt9
Jy5mb3JtYXQob3B0aW9ucy5jb25maWd1cmF0aW9uKSwgJy0tcGxhdGZvcm0nLCBvcHRpb25zLnBs
YXRmb3JtLCAnZXh0cmFjdCddCiAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNvbW1hbmQpCiAK
IApAQCAtOTYsMjkgKzE2MCwyOSBAQCBkZWYgZmluZF9nZShhLCB4KToKICMgLS0tLSBlbmQgYmlz
ZWN0IGhlbHBlcnMgLS0tLQogCiAKLWRlZiBnZXRfYXBpX2FyY2hpdmVfdXJsKG9wdGlvbnMsIExh
c3RFdmFsdWF0ZWRLZXk9Tm9uZSk6CitkZWYgZ2V0X2FwaV9hcmNoaXZlX3VybChvcHRpb25zLCBs
YXN0X2V2YWx1YXRlZF9rZXk9Tm9uZSk6CiAgICAgaWYgb3B0aW9ucy5mdWxsOgotICAgICAgICBi
YXNlX3VybCA9IHVybHBhcnNlLnVybGpvaW4oUkVTVF9BUElfVVJMLCBSRVNUX0FQSV9BUkNISVZF
X0VORFBPSU5UKQorICAgICAgICBiYXNlX3VybCA9IHVybGxpYi5wYXJzZS51cmxqb2luKFJFU1Rf
QVBJX1VSTCwgUkVTVF9BUElfQVJDSElWRV9FTkRQT0lOVCkKICAgICBlbHNlOgotICAgICAgICBi
YXNlX3VybCA9IHVybHBhcnNlLnVybGpvaW4oUkVTVF9BUElfVVJMLCBSRVNUX0FQSV9NSU5JRklF
RF9BUkNISVZFX0VORFBPSU5UKQorICAgICAgICBiYXNlX3VybCA9IHVybGxpYi5wYXJzZS51cmxq
b2luKFJFU1RfQVBJX1VSTCwgUkVTVF9BUElfTUlOSUZJRURfQVJDSElWRV9FTkRQT0lOVCkKIAot
ICAgIGFwaV91cmwgPSB1cmxwYXJzZS51cmxqb2luKGJhc2VfdXJsLCAnLScuam9pbihbb3B0aW9u
cy5wbGF0Zm9ybSwgb3B0aW9ucy5hcmNoaXRlY3R1cmUsIG9wdGlvbnMuY29uZmlndXJhdGlvbl0p
KQotICAgIGlmIExhc3RFdmFsdWF0ZWRLZXk6Ci0gICAgICAgIHF1ZXJ5c3RyaW5nID0gdXJsbGli
Mi5xdW90ZShqc29uLmR1bXBzKExhc3RFdmFsdWF0ZWRLZXkpKQorICAgIGFwaV91cmwgPSB1cmxs
aWIucGFyc2UudXJsam9pbihiYXNlX3VybCwgdXJsbGliLnBhcnNlLnF1b3RlKG9wdGlvbnMucXVl
dWUpKQorICAgIGlmIGxhc3RfZXZhbHVhdGVkX2tleToKKyAgICAgICAgcXVlcnlzdHJpbmcgPSB1
cmxsaWIucGFyc2UucXVvdGUoanNvbi5kdW1wcyhsYXN0X2V2YWx1YXRlZF9rZXkpKQogICAgICAg
ICBhcGlfdXJsICs9ICc/RXhjbHVzaXZlU3RhcnRLZXk9JyArIHF1ZXJ5c3RyaW5nCi0gICAgICAg
IAorCiAgICAgcmV0dXJuIGFwaV91cmwKIAogCiBkZWYgZ2V0X2luZGljZXNfZnJvbV9yZXZpc2lv
bnMocmV2aXNpb25fbGlzdCwgc3RhcnRfcmV2aXNpb24sIGVuZF9yZXZpc2lvbik6CiAgICAgaWYg
c3RhcnRfcmV2aXNpb24gaXMgTm9uZToKLSAgICAgICAgcHJpbnQoJ1dBUk5JTkc6IE5vIHN0YXJ0
aW5nIHJldmlzaW9uIHdhcyBnaXZlbiwgZGVmYXVsdGluZyB0byBmaXJzdCBhdmFpbGFibGUgZm9y
IHRoaXMgY29uZmlndXJhdGlvbicpCisgICAgICAgIHByaW50KCdXQVJOSU5HOiBObyBzdGFydGlu
ZyByZXZpc2lvbiB3YXMgZ2l2ZW4sIGRlZmF1bHRpbmcgdG8gZmlyc3QgYXZhaWxhYmxlIGZvciB0
aGlzIGNvbmZpZ3VyYXRpb24uJykKICAgICAgICAgc3RhcnRfaW5kZXggPSAwCiAgICAgZWxzZToK
ICAgICAgICAgc3RhcnRfaW5kZXggPSBmaW5kX2dlKHJldmlzaW9uX2xpc3QsIHN0YXJ0X3Jldmlz
aW9uKQogCiAgICAgaWYgZW5kX3JldmlzaW9uIGlzIE5vbmU6Ci0gICAgICAgIHByaW50KCdXQVJO
SU5HOiBObyBlbmRpbmcgcmV2aXNpb24gd2FzIGdpdmVuLCBkZWZhdWx0aW5nIHRvIGxhc3QgYXZp
YWxhYmxlIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24nKQorICAgICAgICBwcmludCgnV0FSTklORzog
Tm8gZW5kaW5nIHJldmlzaW9uIHdhcyBnaXZlbiwgZGVmYXVsdGluZyB0byBsYXN0IGF2YWlsYWJs
ZSBmb3IgdGhpcyBjb25maWd1cmF0aW9uLicpCiAgICAgICAgIGVuZF9pbmRleCA9IGxlbihyZXZp
c2lvbl9saXN0KSAtIDEKICAgICBlbHNlOgogICAgICAgICBlbmRfaW5kZXggPSBmaW5kX2xlKHJl
dmlzaW9uX2xpc3QsIGVuZF9yZXZpc2lvbikKQEAgLTEyOSw0NSArMTkzLDUxIEBAIGRlZiBnZXRf
aW5kaWNlc19mcm9tX3JldmlzaW9ucyhyZXZpc2lvbl8KIGRlZiBnZXRfc29ydGVkX3JldmlzaW9u
cyhyZXZpc2lvbnNfZGljdCk6CiAgICAgcmV2aXNpb25zID0gW2ludChpdGVtWydyZXZpc2lvbidd
WydOJ10pIGZvciBpdGVtIGluIHJldmlzaW9uc19kaWN0WydyZXZpc2lvbnMnXVsnSXRlbXMnXV0K
ICAgICByZXR1cm4gc29ydGVkKHJldmlzaW9ucykKLSAgICAKKwogCiBkZWYgZ2V0X3MzX2xvY2F0
aW9uX2Zvcl9yZXZpc2lvbih1cmwsIHJldmlzaW9uKToKICAgICB1cmwgPSAnLycuam9pbihbdXJs
LCBzdHIocmV2aXNpb24pXSkKLSAgICByID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICByID0g
dXJsbGliLnJlcXVlc3QudXJsb3Blbih1cmwpCiAgICAgZGF0YSA9IGpzb24ubG9hZChyKQotICAg
IAorCiAgICAgZm9yIGFyY2hpdmUgaW4gZGF0YVsnYXJjaGl2ZSddOgogICAgICAgICBzM191cmwg
PSBhcmNoaXZlWydzM191cmwnXQogICAgIHJldHVybiBzM191cmwKIAogCitkZWYgaG9zdF9wbGF0
Zm9ybV9uYW1lKCk6CisgICAgcGxhdGZvcm0gPSBTeXN0ZW1Ib3N0KCkucGxhdGZvcm0KKyAgICB2
ZXJzaW9uX25hbWUgPSBWZXJzaW9uTmFtZU1hcC5zdHJpcF9uYW1lX2Zvcm1hdHRpbmcocGxhdGZv
cm0ub3NfdmVyc2lvbl9uYW1lKCkpCisgICAgaWYgdmVyc2lvbl9uYW1lIGlzIE5vbmU6CisgICAg
ICAgIHJldHVybiBwbGF0Zm9ybS5vc19uYW1lCisgICAgcmV0dXJuIHBsYXRmb3JtLm9zX25hbWUg
KyAnLScgKyB2ZXJzaW9uX25hbWUKKworCiBkZWYgcGFyc2VfYXJncyhhcmdzKToKLSAgICBoZWxw
dGV4dCA9ICdiaXNlY3QtYnVpbGRzIGlzIGRlc2lnbmVkIHRvIGhlbHAgcGlucG9pbnQgcmVncmVz
c2lvbnMgdG8gc3BlY2lmaWMgY29kZSBjaGFuZ2VzLiBJdCBkb2VzIHRoaXMgYnkgYmlzZWN0aW5n
IGFjcm9zcyBhcmNoaXZlcyBwcm9kdWNlZCBieSBidWlsZC53ZWJraXQub3JnLiBGdWxsIGFuZCAi
bWluaWZpZWQiIGFyY2hpdmVzIGFyZSBhdmFpbGFibGUuIE1pbmlmaWVkIGFyY2hpdmVzIGFyZSBz
aWduaWZpY2FudGx5IHNtYWxsZXIsIGFzIHRoZXkgaGF2ZSBiZWVuIHN0cmlwcGVkIG9mIGRTWU1z
IGFuZCBvdGhlciBub24tZXNzZW50aWFsIGNvbXBvbmVudHMuJworICAgIGhlbHB0ZXh0ID0gJ2Jp
c2VjdC1idWlsZHMgaGVscHMgcGlucG9pbnQgcmVncmVzc2lvbnMgdG8gc3BlY2lmaWMgY29kZSBj
aGFuZ2VzLiBJdCBkb2VzIHRoaXMgYnkgYmlzZWN0aW5nIGFjcm9zcyBhcmNoaXZlcyBwcm9kdWNl
ZCBieSBidWlsZC53ZWJraXQub3JnLiBGdWxsIGFuZCAibWluaWZpZWQiIGFyY2hpdmVzIGFyZSBh
dmFpbGFibGUuIE1pbmlmaWVkIGFyY2hpdmVzIGFyZSBzaWduaWZpY2FudGx5IHNtYWxsZXIsIGFz
IHRoZXkgaGF2ZSBiZWVuIHN0cmlwcGVkIG9mIGRTWU1zIGFuZCBvdGhlciBub24tZXNzZW50aWFs
IGNvbXBvbmVudHMuJwogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2Ny
aXB0aW9uPWhlbHB0ZXh0KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY29uZmln
dXJhdGlvbicsIGRlZmF1bHQ9J3JlbGVhc2UnLCBoZWxwPSdUaGUgY29uZmlndXJhdGlvbiB0byBx
dWVyeSBbcmVsZWFzZSB8IGRlYnVnXScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWEnLCAn
LS1hcmNoaXRlY3R1cmUnLCBkZWZhdWx0PSd4ODZfNjQnLCBoZWxwPSdUaGUgYXJjaGl0ZWN0dXJl
IHRvIHF1ZXJ5IFt4ODZfNjQgfCBpMzg2XScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXAn
LCAnLS1wbGF0Zm9ybScsIGRlZmF1bHQ9J05vbmUnLCByZXF1aXJlZD1UcnVlLCBoZWxwPSdUaGUg
cGxhdGZvcm0gdG8gcXVlcnkgW21hYy1zaWVycmEgfCBndGsgfCBpb3Mtc2ltdWxhdG9yIHwgd2lu
XScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mdWxsJywgYWN0aW9uPSdzdG9y
ZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0nVXNlIGZ1bGwgYXJjaGl2ZXMgY29udGFpbmlu
ZyBkZWJ1ZyBzeW1ib2xzLiBUaGVzZSBhcmUgc2lnbmlmaWNhbnRseSBsYXJnZXIgZmlsZXMhJykK
LSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXN0YXJ0JywgZGVmYXVsdD1Ob25lLCB0
eXBlPWludCwgaGVscD0nVGhlIHN0YXJ0aW5nIHJldmlzaW9uIHRvIGJpc2VjdC4nKQotICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW5kJywgZGVmYXVsdD1Ob25lLCB0eXBlPWludCwg
aGVscD0nVGhlIGVuZGluZyByZXZpc2lvbiB0byBiaXNlY3QnKQotICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy1sJywgJy0tbGlzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9J0Rpc3BsYXkgYSBsaXN0IG9mIHBsYXRmb3JtcyBhbmQgcmV2aXNpb25zJykKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbmZpZ3VyYXRpb24nLCBkZWZhdWx0PSdyZWxl
YXNlJywgaGVscD0ndGhlIGNvbmZpZ3VyYXRpb24gdG8gcXVlcnkgW3JlbGVhc2UgfCBkZWJ1Z10n
KQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1hJywgJy0tYXJjaGl0ZWN0dXJlJywgaGVscD0n
dGhlIGFyY2hpdGVjdHVyZSB0byBxdWVyeSwgZS5nLiB4ODZfNjQsIGRlZmF1bHQgaXMgbm8gcHJl
ZmVyZW5jZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXAnLCAnLS1wbGF0Zm9ybScsIGRl
ZmF1bHQ9aG9zdF9wbGF0Zm9ybV9uYW1lKCksIGhlbHA9J3RoZSBwbGF0Zm9ybSB0byBxdWVyeSwg
ZS5nLiBtYWMtYmlnc3VyLCBndGssIGlvcy1zaW11bGF0b3ItMTQsIHdpbiwgZGVmYXVsdCBpcyBj
dXJyZW50IGhvc3QgcGxhdGZvcm0uJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZicsICct
LWZ1bGwnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgZnVs
bCBhcmNoaXZlcyBjb250YWluaW5nIGRlYnVnIHN5bWJvbHMsIHdoaWNoIGFyZSBzaWduaWZpY2Fu
dGx5IGxhcmdlciBmaWxlcycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zdGFy
dCcsIGRlZmF1bHQ9Tm9uZSwgdHlwZT1pbnQsIGhlbHA9J3RoZSBzdGFydGluZyByZXZpc2lvbiB0
byBiaXNlY3QnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW5kJywgZGVmYXVs
dD1Ob25lLCB0eXBlPWludCwgaGVscD0ndGhlIGVuZGluZyByZXZpc2lvbiB0byBiaXNlY3QnKQor
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc2FuaXR5LWNoZWNrJywgYWN0aW9uPSdzdG9yZV90
cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0ndmVyaWZ5IGJvdGggc3RhcnRpbmcgYW5kIGVuZGlu
ZyByZXZpc2lvbnMgYmVmb3JlIGJpc2VjdGluZycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
LWwnLCAnLS1saXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0n
ZGlzcGxheSBhIGxpc3Qgb2YgcGxhdGZvcm1zIGFuZCByZXZpc2lvbnMnKQogICAgIHJldHVybiBw
YXJzZXIucGFyc2VfYXJncyhhcmdzKQogCiAKIGRlZiBwaWNrX25leHRfYnVpbGQocmV2aXNpb25f
bGlzdCwgc3RhcnRfaW5kZXgsIGVuZF9pbmRleCk6Ci0gICAgcmV2aXNpb25zX3JlbWFpbmluZyA9
IChlbmRfaW5kZXggLSBzdGFydF9pbmRleCkgKyAxCi0gICAgcHJpbnQoJ0ZvdW5kIHt9IHJldmlz
aW9ucyBpbiB0aGlzIHJhbmdlIHRvIHRlc3QuLi4nLmZvcm1hdChyZXZpc2lvbnNfcmVtYWluaW5n
KSkKLQotICAgIGlmIHN0YXJ0X2luZGV4ID49IGVuZF9pbmRleDoKLSAgICAgICAgcHJpbnQoJ05v
IGFyY2hpdmVzIGF2YWlsYWJsZSBiZXR3ZWVuIHt9IGFuZCB7fScuZm9ybWF0KHJldmlzaW9uX2xp
c3RbZW5kX2luZGV4XSwgcmV2aXNpb25fbGlzdFtzdGFydF9pbmRleF0pKQorICAgIGlmIHN0YXJ0
X2luZGV4ICsgMSA+PSBlbmRfaW5kZXg6CisgICAgICAgIHByaW50KCdObyBhcmNoaXZlcyBhdmFp
bGFibGUgYmV0d2VlbiBye30gYW5kIHJ7fS4nLmZvcm1hdChyZXZpc2lvbl9saXN0W3N0YXJ0X2lu
ZGV4XSwgcmV2aXNpb25fbGlzdFtlbmRfaW5kZXhdKSkKICAgICAgICAgcmV0dXJuIE5vbmUKIAot
ICAgIG1pZGRsZUluZGV4ID0gKHN0YXJ0X2luZGV4ICsgZW5kX2luZGV4KSAvIDIKLSAgICByZXR1
cm4gaW50KG1hdGguY2VpbChtaWRkbGVJbmRleCkpCisgICAgbWlkZGxlX2luZGV4ID0gKHN0YXJ0
X2luZGV4ICsgZW5kX2luZGV4KSAvIDIKKyAgICByZXR1cm4gaW50KG1hdGguY2VpbChtaWRkbGVf
aW5kZXgpKQogCiAKIGRlZiBwcm9tcHRfZGlkX3JlcHJvZHVjZSgpOgotICAgIHZhciA9IHJhd19p
bnB1dCgnXG5EaWQgdGhlIGVycm9yIHJlcHJvZHVjZT8gW3kvbl06ICcpCisgICAgdmFyID0gaW5w
dXQoJ1xuRGlkIHRoZSBlcnJvciByZXByb2R1Y2U/IFt5L25dOiAnKQogICAgIHZhciA9IHZhci5s
b3dlcigpCiAgICAgaWYgJ3knIGluIHZhcjoKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTE3NSwx
MDYgKzI0NSwxNTggQEAgZGVmIHByb21wdF9kaWRfcmVwcm9kdWNlKCk6CiAgICAgICAgIHJldHVy
biBGYWxzZQogICAgIGVsc2U6CiAgICAgICAgIHByb21wdF9kaWRfcmVwcm9kdWNlKCkKLSAgICAK
KwogCiBkZWYgc2V0X3dlYmtpdF9vdXRwdXRfZGlyKHRlbXBfZGlyKToKLSAgICBwcmludCgnU2V0
dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBXRUJLSVRfT1VUUFVURElSIHRvIHt9Jy5mb3JtYXQo
dGVtcF9kaXIpKQorICAgIHByaW50KCdBcmNoaXZlcyB3aWxsIGJlIGV4dHJhY3RlZCB0byB7fScu
Zm9ybWF0KHRlbXBfZGlyKSkKICAgICBvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10gPSB0
ZW1wX2RpcgogCiAKLWRlZiB0ZXN0X2FyY2hpdmUob3B0aW9ucywgcmV2aXNpb24pOgotICAgIHBy
aW50KCdUZXN0aW5nIHJldmlzaW9uIHt9Li4uJy5mb3JtYXQocmV2aXNpb24pKQotICAgIGNvbW1h
bmQgPSBbXQotICAgIGlmICdtYWMnIGluIG9wdGlvbnMucGxhdGZvcm06Ci0gICAgICAgIGNvbW1h
bmQgPSBbJy4vcnVuLXNhZmFyaSddCi0gICAgZWxpZiAnaW9zJyBpbiBvcHRpb25zLnBsYXRmb3Jt
OgotICAgICAgICBjb21tYW5kID0gWycuL3J1bi1zYWZhcmknLCAnLS1zaW11bGF0b3InXQorZGVm
IHRlc3RfcmV2aXNpb24ob3B0aW9ucywgcmV2aXNpb24pOgorICAgIGRvd25sb2FkX2FyY2hpdmUo
b3B0aW9ucywgcmV2aXNpb24pCisgICAgZXh0cmFjdF9hcmNoaXZlKG9wdGlvbnMpCisgICAgaWYg
b3B0aW9ucy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdpb3Mtc2ltdWxhdG9yJyk6CisgICAgICAgIGNv
bW1hbmQgPSBbJy4vcnVuLXNhZmFyaScsICctLWlwaG9uZS1zaW11bGF0b3InLCAnLS17fScuZm9y
bWF0KG9wdGlvbnMuY29uZmlndXJhdGlvbildCiAgICAgZWxzZToKLSAgICAgICAgcHJpbnQoJ0Rl
ZmF1bHQgdGVzdCBiZWhhdmlvciBmb3IgdGhpcyBwbGF0Zm9ybSBpcyBub3QgaW1wbGVtZW50ZWQu
Li4nLmZvcm1hdChvcHRpb25zLnBsYXRmb3JtKSkKKyAgICAgICAgY29tbWFuZCA9IFsnLi9ydW4t
bWluaWJyb3dzZXInLCAnLS17fScuZm9ybWF0KG9wdGlvbnMuY29uZmlndXJhdGlvbildCiAKICAg
ICBpZiBjb21tYW5kOgotICAgICAgICBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCkKKyAgICAgICAg
c3VicHJvY2Vzcy5jYWxsKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsIHN0ZGVy
cj1zdWJwcm9jZXNzLkRFVk5VTEwpCiAgICAgcmV0dXJuIHByb21wdF9kaWRfcmVwcm9kdWNlKCkK
IAogCiBkZWYgZ2V0X3BsYXRmb3JtcyhlbmRwb2ludCk6Ci0gICAgcGxhdGZvcm1fdXJsID0gdXJs
cGFyc2UudXJsam9pbihSRVNUX0FQSV9VUkwsIGVuZHBvaW50KQotICAgIHIgPSB1cmxsaWIyLnVy
bG9wZW4ocGxhdGZvcm1fdXJsKQorICAgIHBsYXRmb3JtX3VybCA9IHVybGxpYi5wYXJzZS51cmxq
b2luKFJFU1RfQVBJX1VSTCwgZW5kcG9pbnQpCisgICAgciA9IHVybGxpYi5yZXF1ZXN0LnVybG9w
ZW4ocGxhdGZvcm1fdXJsKQogICAgIGRhdGEgPSBqc29uLmxvYWQocikKICAgICBwbGF0Zm9ybXMg
PSBbXQogICAgIGZvciBwbGF0Zm9ybSBpbiBkYXRhLmdldCgnSXRlbXMnKToKICAgICAgICAgcGxh
dGZvcm1zLmFwcGVuZChzdHIocGxhdGZvcm1bJ2lkZW50aWZpZXInXVsnUyddKSkKLSAgICAKKwog
ICAgIHJldHVybiBwbGF0Zm9ybXMKLSAgICAgCisKKwogQG1lbW9pemVkCiBkZWYgbWluaWZpZWRf
cGxhdGZvcm1zKCk6CiAgICAgcmV0dXJuIGdldF9wbGF0Zm9ybXMoUkVTVF9BUElfTUlOSUZJRURf
UExBVEZPUk1fRU5EUE9JTlQpCi0gCisKKwogQG1lbW9pemVkCiBkZWYgdW5taW5pZmllZF9wbGF0
Zm9ybXMoKToKICAgICByZXR1cm4gZ2V0X3BsYXRmb3JtcyhSRVNUX0FQSV9QTEFURk9STV9FTkRQ
T0lOVCkKLSAKLWRlZiBpc19zdXBwb3J0ZWRfcGxhdGZvcm0ob3B0aW9ucyk6Ci0gICAgcGxhdGZv
cm0gPSAnLScuam9pbihbb3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucy5hcmNoaXRlY3R1cmUsIG9w
dGlvbnMuY29uZmlndXJhdGlvbl0pICAgIAorCisKK2RlZiBxdWV1ZV9mb3Iob3B0aW9ucyk6CiAg
ICAgaWYgb3B0aW9ucy5mdWxsOgotICAgICAgICByZXR1cm4gcGxhdGZvcm0gaW4gdW5taW5pZmll
ZF9wbGF0Zm9ybXMoKQotICAgIHJldHVybiBwbGF0Zm9ybSBpbiBtaW5pZmllZF9wbGF0Zm9ybXMo
KQorICAgICAgICBwbGF0Zm9ybV9saXN0ID0gdW5taW5pZmllZF9wbGF0Zm9ybXMoKQorICAgIGVs
c2U6CisgICAgICAgIHBsYXRmb3JtX2xpc3QgPSBtaW5pZmllZF9wbGF0Zm9ybXMoKQorCisgICAg
ZGVzY3JpcHRvcl9mcm9tX29wdGlvbnMgPSBRdWV1ZURlc2NyaXB0b3Iob3B0aW9ucy5wbGF0Zm9y
bSkKKworICAgIGlmIG5vdCBkZXNjcmlwdG9yX2Zyb21fb3B0aW9ucy5hcmNoaXRlY3R1cmVzOgor
ICAgICAgICBpZiBvcHRpb25zLmFyY2hpdGVjdHVyZToKKyAgICAgICAgICAgIGRlc2NyaXB0b3Jf
ZnJvbV9vcHRpb25zLmFyY2hpdGVjdHVyZXMgPSBzZXQob3B0aW9ucy5hcmNoaXRlY3R1cmUpCisg
ICAgZWxpZiBvcHRpb25zLmFyY2hpdGVjdHVyZSBpcyBub3QgTm9uZSBhbmQgZGVzY3JpcHRvcl9m
cm9tX29wdGlvbnMuYXJjaGl0ZWN0dXJlcyAhPSB7b3B0aW9ucy5hcmNoaXRlY3R1cmV9OgorICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgaWYgbm90IGRlc2NyaXB0b3JfZnJvbV9vcHRpb25zLmNv
bmZpZ3VyYXRpb246CisgICAgICAgIGlmIG9wdGlvbnMuY29uZmlndXJhdGlvbjoKKyAgICAgICAg
ICAgIGRlc2NyaXB0b3JfZnJvbV9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBvcHRpb25zLmNvbmZp
Z3VyYXRpb24KKyAgICBlbGlmIG9wdGlvbnMuY29uZmlndXJhdGlvbiBpcyBub3QgTm9uZSBhbmQg
ZGVzY3JpcHRvcl9mcm9tX29wdGlvbnMuY29uZmlndXJhdGlvbiAhPSBvcHRpb25zLmNvbmZpZ3Vy
YXRpb246CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBmb3IgcGxhdGZvcm1fbmFtZSBpbiBw
bGF0Zm9ybV9saXN0OgorICAgICAgICBhdmFpbGFibGVfcGxhdGZvcm0gPSBRdWV1ZURlc2NyaXB0
b3IocGxhdGZvcm1fbmFtZSkKKyAgICAgICAgaWYgZGVzY3JpcHRvcl9mcm9tX29wdGlvbnMucGxh
dGZvcm1fbmFtZSAhPSBhdmFpbGFibGVfcGxhdGZvcm0ucGxhdGZvcm1fbmFtZToKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGRlc2NyaXB0b3JfZnJvbV9vcHRpb25zLnZlcnNpb24g
YW5kIGRlc2NyaXB0b3JfZnJvbV9vcHRpb25zLnZlcnNpb24gIT0gYXZhaWxhYmxlX3BsYXRmb3Jt
LnZlcnNpb246CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBub3QgZGVzY3JpcHRv
cl9mcm9tX29wdGlvbnMuYXJjaGl0ZWN0dXJlcy5pc3N1YnNldChhdmFpbGFibGVfcGxhdGZvcm0u
YXJjaGl0ZWN0dXJlcyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBkZXNjcmlw
dG9yX2Zyb21fb3B0aW9ucy5jb25maWd1cmF0aW9uIGFuZCBkZXNjcmlwdG9yX2Zyb21fb3B0aW9u
cy5jb25maWd1cmF0aW9uICE9IGF2YWlsYWJsZV9wbGF0Zm9ybS5jb25maWd1cmF0aW9uOgorICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtX25hbWUKKyAgICByZXR1
cm4gTm9uZQorCisKK2RlZiBwcmludF9wbGF0Zm9ybXMocGxhdGZvcm1zKToKKyAgICBwbGF0Zm9y
bV9zdHJpbmdzID0gWycgICAge30nLmZvcm1hdChRdWV1ZURlc2NyaXB0b3IocXVldWVfbmFtZSku
cHJldHR5X3N0cmluZygpKSBmb3IgcXVldWVfbmFtZSBpbiBwbGF0Zm9ybXNdCisgICAgcHJpbnQo
J1xuJy5qb2luKHNvcnRlZChwbGF0Zm9ybV9zdHJpbmdzKSkpCiAKIAogZGVmIHZhbGlkYXRlX29w
dGlvbnMob3B0aW9ucyk6Ci0gICAgaWYgbm90IGlzX3N1cHBvcnRlZF9wbGF0Zm9ybShvcHRpb25z
KToKLSAgICAgICAgcHJpbnQoJ1Vuc3VwcG9ydGVkIHBsYXRmb3JtIGNvbWJpbmF0aW9uOiBbe31d
LCBleGl0aW5nLi4uJy5mb3JtYXQoJy0nLmpvaW4oW29wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnMu
YXJjaGl0ZWN0dXJlLCBvcHRpb25zLmNvbmZpZ3VyYXRpb25dKSkpCisgICAgb3B0aW9ucy5xdWV1
ZSA9IHF1ZXVlX2ZvcihvcHRpb25zKSAgIyBSZXNvbHZlIGFuZCBjYWNoZSBmb3IgZnV0dXJlIHVz
ZS4KKyAgICBpZiBvcHRpb25zLnF1ZXVlIGlzIE5vbmU6CisgICAgICAgIHByaW50KCdVbnN1cHBv
cnRlZCBwbGF0Zm9ybSBjb21iaW5hdGlvbiwgZXhpdGluZy4nKQogICAgICAgICBpZiBvcHRpb25z
LmZ1bGw6Ci0gICAgICAgICAgICBwcmludCgnQXZhaWxhYmxlIFVubWluaWZpZWQgcGxhdGZvcm1z
OiB7fScuZm9ybWF0KHVubWluaWZpZWRfcGxhdGZvcm1zKCkpKQorICAgICAgICAgICAgcHJpbnQo
J0F2YWlsYWJsZSB1bm1pbmlmaWVkIHBsYXRmb3JtczonKQorICAgICAgICAgICAgcHJpbnRfcGxh
dGZvcm1zKHVubWluaWZpZWRfcGxhdGZvcm1zKCkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBwcmludCgnQXZhaWxhYmxlIE1pbmlmaWVkIHBsYXRmb3Jtczoge30nLmZvcm1hdChtaW5pZmll
ZF9wbGF0Zm9ybXMoKSkpCi0gICAgICAgICAgICBwcmludCgnSU5GTzogcGFzcyAtLWZ1bGwgdG8g
dHJ5IGFnYWluc3QgZnVsbCBhcmNoaXZlcycpCisgICAgICAgICAgICBwcmludCgnQXZhaWxhYmxl
IG1pbmlmaWVkIHBsYXRmb3JtczonKQorICAgICAgICAgICAgcHJpbnRfcGxhdGZvcm1zKG1pbmlm
aWVkX3BsYXRmb3JtcygpKQogICAgICAgICBleGl0KDEpCiAKKwogZGVmIHByaW50X2xpc3RfYW5k
X2V4aXQocmV2aXNpb25fbGlzdCwgb3B0aW9ucyk6Ci0gICAgICAgIHByaW50KCdTdXBwb3J0ZWQg
bWluaWZpZWQgcGxhdGZvcm1zOiB7fScuZm9ybWF0KG1pbmlmaWVkX3BsYXRmb3JtcygpKSkKLSAg
ICAgICAgcHJpbnQoJ1N1cHBvcnRlZCB1bm1pbmlmaWVkIHBsYXRmb3Jtczoge30nLmZvcm1hdCh1
bm1pbmlmaWVkX3BsYXRmb3JtcygpKSkKLSAgICAgICAgcHJpbnQoJ3t9IHJldmlzaW9ucyBhdmFp
bGFibGUgZm9yIHN1cHBsaWVkIHBsYXRmb3JtOiB7fS17fS17fTonLmZvcm1hdChsZW4ocmV2aXNp
b25fbGlzdCksIG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnMuYXJjaGl0ZWN0dXJlLCBvcHRpb25z
LmNvbmZpZ3VyYXRpb24pKQotICAgICAgICBwcmludChyZXZpc2lvbl9saXN0KQotICAgICAgICBl
eGl0KDApCisgICAgcHJpbnQoJ1N1cHBvcnRlZCBtaW5pZmllZCBwbGF0Zm9ybXM6JykKKyAgICBw
cmludF9wbGF0Zm9ybXMobWluaWZpZWRfcGxhdGZvcm1zKCkpCisgICAgcHJpbnQoJ1N1cHBvcnRl
ZCB1bm1pbmlmaWVkIHBsYXRmb3JtczonKQorICAgIHByaW50X3BsYXRmb3Jtcyh1bm1pbmlmaWVk
X3BsYXRmb3JtcygpKQorICAgIHByaW50KCd7fSByZXZpc2lvbnMgYXZhaWxhYmxlIGZvciB7fTon
LmZvcm1hdChsZW4ocmV2aXNpb25fbGlzdCksIG9wdGlvbnMucXVldWUpKQorICAgIHByaW50KHJl
dmlzaW9uX2xpc3QpCisgICAgZXhpdCgwKQorCiAKLWRlZiBmZXRjaF9yZXZpc2lvbl9saXN0KG9w
dGlvbnMsIExhc3RFdmFsdWF0ZWRLZXk9Tm9uZSk6Ci0gICAgdXJsID0gZ2V0X2FwaV9hcmNoaXZl
X3VybChvcHRpb25zLCBMYXN0RXZhbHVhdGVkS2V5KQotICAgIHIgPSB1cmxsaWIyLnVybG9wZW4o
dXJsKQorZGVmIGZldGNoX3JldmlzaW9uX2xpc3Qob3B0aW9ucywgbGFzdF9ldmFsdWF0ZWRfa2V5
PU5vbmUpOgorICAgIHVybCA9IGdldF9hcGlfYXJjaGl2ZV91cmwob3B0aW9ucywgbGFzdF9ldmFs
dWF0ZWRfa2V5KQorICAgIHIgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHVybCkKICAgICBkYXRh
ID0ganNvbi5sb2FkKHIpCiAgICAgcmV2aXNpb25fbGlzdCA9IGdldF9zb3J0ZWRfcmV2aXNpb25z
KGRhdGEpCiAKICAgICBpZiAnTGFzdEV2YWx1YXRlZEtleScgaW4gZGF0YVsncmV2aXNpb25zJ106
Ci0gICAgICAgIExhc3RFdmFsdWF0ZWRLZXkgPSBkYXRhWydyZXZpc2lvbnMnXVsnTGFzdEV2YWx1
YXRlZEtleSddCi0gICAgICAgIHJldmlzaW9uX2xpc3QgKz0gZmV0Y2hfcmV2aXNpb25fbGlzdChv
cHRpb25zLCBMYXN0RXZhbHVhdGVkS2V5KQotICAgICAgICAKLSAgICByZXR1cm4gcmV2aXNpb25f
bGlzdAotICAgIAotZGVmIG1haW4ob3B0aW9ucyk6Ci0gICAgdmFsaWRhdGVfb3B0aW9ucyhvcHRp
b25zKQotICAgIHJldmlzaW9uX2xpc3QgPSBmZXRjaF9yZXZpc2lvbl9saXN0KG9wdGlvbnMpCi0g
ICAgCi0gICAgaWYgb3B0aW9ucy5saXN0OgotICAgICAgICBwcmludF9saXN0X2FuZF9leGl0KHJl
dmlzaW9uX2xpc3QsIG9wdGlvbnMpCisgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleSA9IGRhdGFb
J3JldmlzaW9ucyddWydMYXN0RXZhbHVhdGVkS2V5J10KKyAgICAgICAgcmV2aXNpb25fbGlzdCAr
PSBmZXRjaF9yZXZpc2lvbl9saXN0KG9wdGlvbnMsIGxhc3RfZXZhbHVhdGVkX2tleSkKIAotICAg
IHN0YXJ0X2luZGV4LCBlbmRfaW5kZXggPSBnZXRfaW5kaWNlc19mcm9tX3JldmlzaW9ucyhyZXZp
c2lvbl9saXN0LCBvcHRpb25zLnN0YXJ0LCBvcHRpb25zLmVuZCkKLSAgICBwcmludCgnQmlzZWN0
aW5nIGJldHdlZW4ge30gYW5kIHt9Jy5mb3JtYXQocmV2aXNpb25fbGlzdFtzdGFydF9pbmRleF0s
IHJldmlzaW9uX2xpc3RbZW5kX2luZGV4XSkpCi0gICAgCi0gICAgIyBmcm9tIGhlcmUgZm9yd2Fy
ZCwgdXNlIGluZGljZXMgaW5zdGVhZCBvZiByZXZpc2lvbnMKLSAgICBiaXNlY3RfYnVpbGRzKHJl
dmlzaW9uX2xpc3QsIHN0YXJ0X2luZGV4LCBlbmRfaW5kZXgsIG9wdGlvbnMpCisgICAgcmV0dXJu
IHJldmlzaW9uX2xpc3QKIAogCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorZGVmIG1haW4o
KToKICAgICBvcHRpb25zID0gcGFyc2VfYXJncyhzeXMuYXJndlsxOl0pCiAgICAgc2NyaXB0X3Bh
dGggPSBvcy5wYXRoLmFic3BhdGgoX19maWxlX18pCiAgICAgc2NyaXB0X2RpcmVjdG9yeSA9IG9z
LnBhdGguZGlybmFtZShzY3JpcHRfcGF0aCkKICAgICBvcy5jaGRpcihzY3JpcHRfZGlyZWN0b3J5
KQogICAgIHdlYmtpdF9vdXRwdXRfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisKKyAgICB2YWxp
ZGF0ZV9vcHRpb25zKG9wdGlvbnMpCisgICAgcmV2aXNpb25fbGlzdCA9IGZldGNoX3JldmlzaW9u
X2xpc3Qob3B0aW9ucykKKworICAgIGlmIG9wdGlvbnMubGlzdDoKKyAgICAgICAgcHJpbnRfbGlz
dF9hbmRfZXhpdChyZXZpc2lvbl9saXN0LCBvcHRpb25zKQorCisgICAgaWYgbm90IHJldmlzaW9u
X2xpc3Q6CisgICAgICAgIHByaW50KCdObyBhcmNoaXZlcyBmb3VuZCBmb3Ige30uJy5mb3JtYXQo
b3B0aW9ucy5xdWV1ZSkpCisgICAgICAgIGV4aXQoMSkKKyAgICBzdGFydF9pbmRleCwgZW5kX2lu
ZGV4ID0gZ2V0X2luZGljZXNfZnJvbV9yZXZpc2lvbnMocmV2aXNpb25fbGlzdCwgb3B0aW9ucy5z
dGFydCwgb3B0aW9ucy5lbmQpCisKICAgICBzZXRfd2Via2l0X291dHB1dF9kaXIod2Via2l0X291
dHB1dF9kaXIpCisKKyAgICAjIEZyb20gaGVyZSBmb3J3YXJkLCB1c2UgaW5kaWNlcyBpbnN0ZWFk
IG9mIHJldmlzaW9ucy4KICAgICB0cnk6Ci0gICAgICAgIG1haW4ob3B0aW9ucykgICAgCisgICAg
ICAgIGlmIG9wdGlvbnMuc2FuaXR5X2NoZWNrOgorICAgICAgICAgICAgaWYgdGVzdF9yZXZpc2lv
bihvcHRpb25zLCByZXZpc2lvbl9saXN0W3N0YXJ0X2luZGV4XSk6CisgICAgICAgICAgICAgICAg
cHJpbnQoJ0lzc3VlIHJlcHJvZHVjZWQgd2l0aCB0aGUgZmlyc3QgcmV2aXNpb24gaW4gdGhlIHJh
bmdlLCBjYW5ub3QgYmlzZWN0LicpCisgICAgICAgICAgICAgICAgZXhpdCgxKQorICAgICAgICAg
ICAgaWYgbm90IHRlc3RfcmV2aXNpb24ob3B0aW9ucywgcmV2aXNpb25fbGlzdFtlbmRfaW5kZXhd
KToKKyAgICAgICAgICAgICAgICBwcmludCgnSXNzdWUgZGlkIG5vdCByZXByb2R1Y2Ugd2l0aCB0
aGUgbGFzdCByZXZpc2lvbiBpbiB0aGUgcmFuZ2UsIGNhbm5vdCBiaXNlY3QuJykKKyAgICAgICAg
ICAgICAgICBleGl0KDEpCisKKyAgICAgICAgYmlzZWN0X2J1aWxkcyhyZXZpc2lvbl9saXN0LCBz
dGFydF9pbmRleCwgZW5kX2luZGV4LCBvcHRpb25zKQogICAgIGV4Y2VwdCBLZXlib2FyZEludGVy
cnVwdDoKLSAgICAgICAgZXhpdCgiQWJvcnRpbmcuIikKKyAgICAgICAgZXhpdCgxKQogICAgIGZp
bmFsbHk6CiAgICAgICAgIHNodXRpbC5ybXRyZWUod2Via2l0X291dHB1dF9kaXIsIGlnbm9yZV9l
cnJvcnM9VHJ1ZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>