<?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>151721</bug_id>
          
          <creation_ts>2015-12-01 14:13:21 -0800</creation_ts>
          <short_desc>[Win] Run non-http tests without Cygwin</short_desc>
          <delta_ts>2015-12-02 08:53:23 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1145394</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-12-01 14:13:21 -0800</bug_when>
    <thetext>The attached patch allows you to run the WebKit LayoutTest suite without needing Cygwin. It does not yet support HTTP tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145450</commentid>
    <comment_count>1</comment_count>
      <attachid>266409</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-12-01 16:39:15 -0800</bug_when>
    <thetext>Created attachment 266409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145451</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-01 16:42:06 -0800</bug_when>
    <thetext>Attachment 266409 did not pass style-queue:


ERROR: Tools/Scripts/webkitpy/port/win.py:231:  [WinPort.read_registry_value] Undefined variable &apos;WindowsError&apos;  [pylint/E0602] [5]
ERROR: Tools/Scripts/webkitpy/port/win.py:257:  [WinPort.write_registry_value] Undefined variable &apos;WindowsError&apos;  [pylint/E0602] [5]
ERROR: Tools/Scripts/webkitpy/port/win.py:261:  [WinPort.write_registry_value] Undefined variable &apos;WindowsError&apos;  [pylint/E0602] [5]
Total errors found: 3 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145453</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-12-01 16:42:52 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 266409 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Tools/Scripts/webkitpy/port/win.py:231: 
&gt; [WinPort.read_registry_value] Undefined variable &apos;WindowsError&apos; 
&gt; [pylint/E0602] [5]
&gt; ERROR: Tools/Scripts/webkitpy/port/win.py:257: 
&gt; [WinPort.write_registry_value] Undefined variable &apos;WindowsError&apos; 
&gt; [pylint/E0602] [5]
&gt; ERROR: Tools/Scripts/webkitpy/port/win.py:261: 
&gt; [WinPort.write_registry_value] Undefined variable &apos;WindowsError&apos; 
&gt; [pylint/E0602] [5]
&gt; Total errors found: 3 in 24 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

These warnings are false positives. WindowsError is present in the native Windows Python implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145491</commentid>
    <comment_count>4</comment_count>
      <attachid>266409</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-01 18:15:01 -0800</bug_when>
    <thetext>Comment on attachment 266409
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145575</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-12-02 08:53:23 -0800</bug_when>
    <thetext>Committed r192944: &lt;http://trac.webkit.org/changeset/192944&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266409</attachid>
            <date>2015-12-01 16:39:15 -0800</date>
            <delta_ts>2015-12-01 18:15:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151721-20151201165747.patch</filename>
            <type>text/plain</type>
            <size>53612</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5MjkxMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEwMiBAQAorMjAxNS0xMi0wMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBbV2luXSBSdW4gbm9uLWh0dHAgdGVzdHMgd2l0aG91dCBDeWd3aW4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgbmF0
aXZlIDMyLWJpdCBhbmQgNjQtYml0IFB5dGhvbiAoYW5kIFBlcmwpIGJ1aWxkcworICAgICAgICBm
b3IgcnVubmluZyB0ZXN0czoKKworICAgICAgICAxLiBVc2UgInN0YXJ0c3dpdGgoJ3dpbicpIiwg
cmF0aGVyIHRoYW4gIj09ICd3aW4zMiciIHRvIHN1cHBvcnQKKyAgICAgICAgdmFyaW91cyBXaW5k
b3dzIGJ1aWxkIHR5cGVzLgorICAgICAgICAyLiBTdXBwbHkgZnVsbCBwYXRoIGZvciBzb21lIG5h
dGl2ZSBXaW5kb3dzIHV0aWxpdGllcywgc2luY2UgdGhlCisgICAgICAgIHBhdGggZW52aXJvbm1l
bnQgZG9lcyBub3QgYWx3YXlzIGhhdmUgdGhlIHNwZWNpZmllZCwgYW5kIHRoZXkgYXJlCisgICAg
ICAgIGd1YXJhbnRlZWQgdG8gZXhpc3QgaW4gdGhvc2Ugc3BlY2lmaWMgbG9jYXRpb25zLgorICAg
ICAgICAzLiBNYWtlIHN1cmUgbmF0aXZlIFdpbmRvd3MgUHl0aG9uIHRlc3QgcnVucyBwYXNzIHBy
b3BlciBlbnZpcm9ubWVudAorICAgICAgICB2YXJpYWJsZXMgdG8gcnVuIHByb2dyYW1zLgorICAg
ICAgICA0LiBBcHBlbmQgJ2V4ZScgc3VmZml4IHdoZW4gcnVubmluZyBXaW5kb3dzIGV4ZWN1dGFi
bGVzLgorICAgICAgICA1LiBVc2UgdGhlIF93aW5yZWcgUHl0aG9uIG1vZHVsZSBvbiBXaW5kb3dz
LCBzaW5jZSB0aGUgQ3lnd2luICdyZWd0b29sJworICAgICAgICBjb21tYW5kIGRvZXNuJ3QgZXhp
c3QuCisgICAgICAgIAorICAgICAgICAqIFNjcmlwdHMvdXBkYXRlLXdlYmtpdDogVXNlIFBlcmwg
JF5YIGNvbW1hbmQgdG8gcmVmZXIgdG8gdGhlIHBhdGggb2YKKyAgICAgICAgdGhlIGN1cnJlbnQg
UGVybCBleGVjdXRhYmxlLCByYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBuZXcgcGF0aCBzZWFyY2gu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vZmluZF9maWxlc191bml0dGVzdC5w
eToKKyAgICAgICAgKFRlc3RXaW5Ob3JtYWxpemUudGVzdF93aW4pOiBVc2Ugc3RhcnRzd2l0aCgn
d2luJykuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJldHR5cGF0Y2hfdW5p
dHRlc3QucHk6CisgICAgICAgICh0ZXN0X3ByZXR0eV9kaWZmX2VuY29kaW5ncyk6IERpdHRvLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHk6Cisg
ICAgICAgIChFeGVjdXRpdmUuX3Nob3VsZF9jbG9zZV9mZHMpOiBEaXR0by4KKyAgICAgICAgKEV4
ZWN1dGl2ZS5zaGVsbF9jb21tYW5kX2Zvcl9zY3JpcHQpOiBVc2Ugc3RhcnRzd2l0aCgnd2luJyku
CisgICAgICAgIChFeGVjdXRpdmUua2lsbF9wcm9jZXNzKTogVXNlIGZ1bGwgcGF0aCB0byBraWxs
YWxsIGV4ZWN1dGFibGUuCisgICAgICAgIChFeGVjdXRpdmUuY2hlY2tfcnVubmluZ19waWQpOiBV
c2Ugc3RhcnRzd2l0aCgnd2luJykuCisgICAgICAgIChFeGVjdXRpdmUucnVubmluZ19waWRzKTog
RGl0dG8uCisgICAgICAgIChFeGVjdXRpdmUua2lsbF9hbGwpOiBEaXR0by4gQWxzbyB1c2UgcGF0
aCB0byAna2lsbGFsbCcgZXhlY3V0YWJsZSB3aGVuCisgICAgICAgIHJ1bm5pbmcgdW5kZXIgbmF0
aXZlIFdpbmRvd3MgUHl0aG9uLgorICAgICAgICAoRXhlY3V0aXZlLl9jaGlsZF9wcm9jZXNzX2Vu
Y29kaW5nKTogVXNlIHN0YXJ0c3dpdGgoJ3dpbicpLgorICAgICAgICAoRXhlY3V0aXZlLl9zaG91
bGRfZW5jb2RlX2NoaWxkX3Byb2Nlc3NfYXJndW1lbnRzKTogRGl0dG8uCisgICAgICAgIChFeGVj
dXRpdmUucG9wZW4pOiBSZWNvZ25pemUgcHJvcGVyIHNjcmlwdCBlbmdpbmUgb24gV2luZG93cywg
c2luY2UgaXQKKyAgICAgICAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgc2hlYmFuZyBzeW50YXguCisg
ICAgICAgIChFeGVjdXRpdmUucnVuX2luX3BhcmFsbGVsKTogVXNlIHN0YXJ0c3dpdGgoJ3dpbicp
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5p
dHRlc3QucHk6CisgICAgICAgIChuZXZlcl9lbmRpbmdfY29tbWFuZCk6IERpdHRvLgorICAgICAg
ICAoRXhlY3V0aXZlVGVzdC50ZXN0X3J1bl9jb21tYW5kX3dpdGhfdW5pY29kZSk6IERpdHRvLgor
ICAgICAgICAoRXhlY3V0aXZlVGVzdC5zZXJpYWxfdGVzdF9raWxsX3Byb2Nlc3MpOiBEaXR0by4K
KyAgICAgICAgKEV4ZWN1dGl2ZVRlc3Quc2VyaWFsX3Rlc3Rfa2lsbF9hbGwpOiBEaXR0by4KKyAg
ICAgICAgKEV4ZWN1dGl2ZVRlc3Quc2VyaWFsX3Rlc3RfY2hlY2tfcnVubmluZ19waWQpOiBEaXR0
by4KKyAgICAgICAgKEV4ZWN1dGl2ZVRlc3Quc2VyaWFsX3Rlc3RfcnVuX2luX3BhcmFsbGVsKTog
RGl0dG8uCisgICAgICAgIChtYWluKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL2ZpbGVfbG9jay5weToKKyAgICAgICAgKEZpbGVMb2NrLl9jcmVhdGVf
bG9jayk6IERpdHRvLgorICAgICAgICAoRmlsZUxvY2suX3JlbW92ZV9sb2NrKTogRGl0dG8uCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fdW5pdHRl
c3QucHk6CisgICAgICAgIChSZWFsRmlsZVN5c3RlbVRlc3QudGVzdF9jaGRpcik6IERpdHRvLgor
ICAgICAgICAoUmVhbEZpbGVTeXN0ZW1UZXN0LnRlc3RfY2hkaXJfX25vdGV4aXN0cyk6IERpdHRv
LgorICAgICAgICAoUmVhbEZpbGVTeXN0ZW1UZXN0LnRlc3RfbWF5YmVfbWFrZV9kaXJlY3Rvcnlf
X2ZhaWx1cmUpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vcGF0aF91bml0dGVzdC5weToKKyAgICAgICAgKEFic3BhdGhUZXN0LnRlc3RfYWJzcGF0aF90
b191cmlfd2luKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3BsYXRmb3JtaW5mby5weToKKyAgICAgICAgKFBsYXRmb3JtSW5mby5fZGV0ZXJtaW5lX29z
X25hbWUpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
dXNlci5weTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weToKKyAgICAgICAgKE1hbmFnZXJUZXN0Lmlu
dGVncmF0aW9uX3Rlc3RfbmVlZHNfc2VydmVycyk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyX3VuaXR0ZXN0
LnB5OgorICAgICAgICAoVGVzdExheW91dFRlc3RBcGFjaGVIdHRwZC50ZXN0X3N0YXJ0X2NtZCk6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMv
aHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKEh0dHBTZXJ2ZXJCYXNlLl9jaGVja190aGF0
X2FsbF9wb3J0c19hcmVfYXZhaWxhYmxlKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl91bml0dGVzdC5weToKKyAgICAg
ICAgKFRlc3RIdHRwU2VydmVyLnRlc3Rfc3RhcnRfY21kKTogRGl0dG8uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnRvLnNldHVwX2Vudmly
b25fZm9yX3NlcnZlcik6IEluY2x1ZGUgJ0NPTVNQRUMnLCAnU1lTVEVNRFJJVkUnLAorICAgICAg
ICBhbmQgJ1NZU1RFTVJPT1QnIGluIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZXN0IHJ1bm5lcnMu
CisgICAgICAgIChQb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOiBV
c2Ugc3RhcnRzd2l0aCgnd2luJykuCisgICAgICAgIChQb3J0Ll9idWlsZF9wYXRoKTogRGl0dG8u
CisgICAgICAgIChQb3J0Ll9wYXRoX3RvX2RyaXZlcik6IEluY2x1ZGUgJ2V4ZScgc3VmZml4IHdo
ZW4gcnVubmluZyB1bmRlciBuYXRpdmUKKyAgICAgICAgV2luZG93cy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVyLl9zZXR1cF9lbnZp
cm9uX2Zvcl9kcml2ZXIpOiBFeHBsaWNpdGx5IG1ha2Ugc29tZSBlbnZpcm9ubWVudAorICAgICAg
ICB2YXJpYWJsZXMgc3RyaW5ncy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2Vy
dmVyX3Byb2Nlc3MucHk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9faW5pdF9fKTogVXNlIHN0
YXJ0c3dpdGgoJ3dpbicpLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6
CisgICAgICAgIChXaW5Qb3J0KTogVXNlIHRoZSB3aW4zMiByZWdpc3RyeSB1dGlsaXRpZXMgb24g
V2luZG93cywgYW5kIGFwcHJvcHJpYXRlCisgICAgICAgIHJlZ2lzdHJ5IGtleSBmb3JtYXRzLgor
ICAgICAgICAoV2luUG9ydC5fbnRzZF9sb2NhdGlvbik6IFJldmlzZSB0b29sIHNlYXJjaCBwYXRo
cyBmb3IgV2luZG93cyAxMC4KKyAgICAgICAgKFdpblBvcnQucmVhZF9yZWdpc3RyeV92YWx1ZSk6
IFJldmlzZSB0byB1c2UgX3dpbnJlZyBsaWJyYXJ5IG9uIFdpbmRvd3MsCisgICAgICAgIGFuZCBy
ZWd0b29sIG9uIEN5Z3dpbi4KKyAgICAgICAgKFdpblBvcnQud3JpdGVfcmVnaXN0cnlfdmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdpblBvcnQuc2V0dXBfY3Jhc2hfbG9nX3NhdmluZyk6IERpdHRv
LgorICAgICAgICAoV2luUG9ydC5yZXN0b3JlX2NyYXNoX2xvZ19zYXZpbmcpOiBEaXR0by4KKyAg
ICAgICAgKFdpblBvcnQucHJldmVudF9lcnJvcl9kaWFsb2dzKTogRGl0dG8uCisgICAgICAgIChX
aW5Qb3J0LmFsbG93X2Vycm9yX2RpYWxvZ3MpOiBEaXR0by4KKyAgICAgICAgKFdpblBvcnQuZmlu
ZF9zeXN0ZW1fcGlkKTogUmV2aXNlIHRvIHVzZSBXaW5kb3dzIG1hbmFnZW1lbnQKKyAgICAgICAg
aW5mcmFzdHJ1Y3R1cmUgb24gbmF0aXZlIFdpbmRvd3MsIGNvbnRpbnVlIHVzaW5nICdwcycgb24g
Q3lnd2luLgorICAgICAgICAoV2luUG9ydC5yZWFkX3JlZ2lzdHJ5X3N0cmluZyk6IERlbGV0ZWQu
CisgICAgICAgIChXaW5Qb3J0LndyaXRlX3JlZ2lzdHJ5X3N0cmluZyk6IERlbGV0ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6CisgICAgICAgIChtYWluKTogVXNl
IHN0YXJ0c3dpdGgoJ3dpbicpLgorICAgICAgICAoVGVzdGVyLl9wYXJzZV9hcmdzKTogRGl0dG8u
CisKIDIwMTUtMTItMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBO
ZWVkIGNvbXBsZXRpb25IYW5kbGVyLWJhc2VkIFdlYktpdCBDIFNQSSBmb3IgYWxlcnQsIGNvbmZp
cm0sIGFuZCBwcm9tcHQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQJKHJldmlzaW9uIDE5MjY5OSkKKysr
IFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTAgKzc2
LDEwIEBAIHJ1blN2blVwZGF0ZUFuZFJlc29sdmVDaGFuZ2VMb2dzKEBzdm5PcHQKIHJ1bkdpdFVw
ZGF0ZSgpIGlmIGlzR2l0KCk7CiAKIGlmIChpc0FwcGxlV2luV2ViS2l0KCkgJiYgJGF1eGlsaWFy
eUxpYnMpIHsKLSAgICBzeXN0ZW0oInBlcmwiLCAiVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0
LWF1eGlsaWFyeS1saWJzIikgPT0gMCBvciBkaWU7CisgICAgc3lzdGVtKCReWCwgRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZSgiVG9vbHMiLCAiU2NyaXB0cyIsICJ1cGRhdGUtd2Via2l0LWF1eGlsaWFyeS1s
aWJzIikpID09IDAgb3IgZGllOwogICAgIGlmIChpc1dpbkNhaXJvKCkpIHsKICAgICAgICAgIyBX
aW5DYWlybyBzaGFyZXMgdGhlIGF1eGlsaWFyeSBsaWJzIGZyb20gdGhlIEFwcGxlIHBvcnQuCi0g
ICAgICAgIHN5c3RlbSgicGVybCIsICJUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtd2luY2Fp
cm8tbGlicyIpID09IDAgb3IgZGllOworICAgICAgICBzeXN0ZW0oJF5YLCBGaWxlOjpTcGVjLT5j
YXRmaWxlKCJUb29scyIsICJTY3JpcHRzIiwgInVwZGF0ZS13ZWJraXQtd2luY2Fpcm8tbGlicyIp
KSA9PSAwIG9yIGRpZTsKICAgICB9CiB9CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2ZpbmRfZmlsZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vZmluZF9maWxlc191bml0dGVzdC5weQkocmV2aXNpb24gMTkyNjk5
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vZmluZF9maWxlc191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNiBAQCBjbGFzcyBUZXN0V2luTm9ybWFsaXpl
KHVuaXR0ZXN0LlRlc3RDYXNlCiAgICAgZGVmIHRlc3Rfd2luKHNlbGYpOgogICAgICAgICAjIFRo
aXMgdGVzdHMgdGhlIGFjdHVhbCB3aW5kb3dzIHBsYXRmb3JtLCB0byBlbnN1cmUgd2UgZ2V0IHRo
ZSBzYW1lCiAgICAgICAgICMgcmVzdWx0cyB0aGF0IHdlIGdldCBpbiB0ZXN0X21vY2tlZF93aW4o
KS4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgIGlmIG5vdCBz
eXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAg
ICAgc2VsZi5hc3NlcnRfZmlsZXN5c3RlbV9ub3JtYWxpemVzKEZpbGVTeXN0ZW0oKSkKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3ByZXR0eXBhdGNoX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAxOTI2OTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9wcmV0dHlwYXRjaF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAs
NyBAQCBJbmRleDogbGF0aW4xX3Rlc3QKICAgICAgICAgaWYgbm90IHNlbGYuY2hlY2tfcnVieSgp
OgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4z
Mic6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAg
ICAgICMgRklYTUU6IGRpc2FibGVkIGR1ZSB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTMxOTIKICAgICAgICAgICAgIHJldHVybgogCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkJKHJldmlzaW9u
IDE5MjY5OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmUucHkJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgRXhlY3V0aXZlKG9i
amVjdCk6CiAgICAgICAgICMgbXVsdGlwbGUgdGhyZWFkcykuIFNlZSBodHRwOi8vYnVncy5weXRo
b24ub3JnL2lzc3VlMjMyMCAuCiAgICAgICAgICMgTm90ZSB0aGF0IGNsb3NlX2ZkcyBpc24ndCBz
dXBwb3J0ZWQgb24gV2luZG93cywgYnV0IHRoaXMgYnVnIG9ubHkKICAgICAgICAgIyBzaG93cyB1
cCBvbiBNYWMgYW5kIExpbnV4LgotICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtIG5vdCBpbiAo
J3dpbjMyJywgJ2N5Z3dpbicpCisgICAgICAgIHJldHVybiBub3QgKHN5cy5wbGF0Zm9ybSA9PSAn
Y3lnd2luJyBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykpCiAKICAgICBkZWYgX3J1
bl9jb21tYW5kX3dpdGhfdGVlZF9vdXRwdXQoc2VsZiwgYXJncywgdGVlZF9vdXRwdXQsICoqa3dh
cmdzKToKICAgICAgICAgY2hpbGRfcHJvY2VzcyA9IHNlbGYucG9wZW4oYXJncywKQEAgLTE3NCw3
ICsxNzQsNyBAQCBjbGFzcyBFeGVjdXRpdmUob2JqZWN0KToKICAgICBkZWYgc2hlbGxfY29tbWFu
ZF9mb3Jfc2NyaXB0KHNjcmlwdF9wYXRoLCBmcz1Ob25lKToKICAgICAgICAgZnMgPSBmcyBvciBG
aWxlU3lzdGVtKCkKICAgICAgICAgIyBXaW4zMiBkb2VzIG5vdCBzdXBwb3J0IHNoZWJhbmcuIFdl
IG5lZWQgdG8gZGV0ZWN0IHRoZSBpbnRlcnByZXRlciBvdXJzZWxmLgotICAgICAgICBpZiBzeXMu
cGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgo
J3dpbicpOgogICAgICAgICAgICAgaW50ZXJwcmV0ZXIgPSBFeGVjdXRpdmUuaW50ZXJwcmV0ZXJf
Zm9yX3NjcmlwdChzY3JpcHRfcGF0aCwgZnMpCiAgICAgICAgICAgICBpZiBpbnRlcnByZXRlcjoK
ICAgICAgICAgICAgICAgICByZXR1cm4gW2ludGVycHJldGVyLCBzY3JpcHRfcGF0aF0KQEAgLTE4
MywxMSArMTgzLDEyIEBAIGNsYXNzIEV4ZWN1dGl2ZShvYmplY3QpOgogICAgIGRlZiBraWxsX3By
b2Nlc3Moc2VsZiwgcGlkKToKICAgICAgICAgIiIiQXR0ZW1wdHMgdG8ga2lsbCB0aGUgZ2l2ZW4g
cGlkLgogICAgICAgICBXaWxsIGZhaWwgc2lsZW50bHkgaWYgcGlkIGRvZXMgbm90IGV4aXN0IG9y
IGluc3VmZmljaWVudCBwZXJtaXNzc2lvbnMuIiIiCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9
PSAid2luMzIiOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luMzInKToK
ICAgICAgICAgICAgICMgV2Ugb25seSB1c2UgdGFza2tpbGwuZXhlIG9uIHdpbmRvd3MgKG5vdCBj
eWd3aW4pIGJlY2F1c2Ugc3VicHJvY2Vzcy5waWQKICAgICAgICAgICAgICMgaXMgYSBDWUdXSU4g
cGlkIGFuZCB0YXNra2lsbC5leGUgZXhwZWN0cyBhIHdpbmRvd3MgcGlkLgogICAgICAgICAgICAg
IyBUaGFua2Z1bGx5IG9zLmtpbGwgb24gQ1lHV0lOIGhhbmRsZXMgZWl0aGVyIHBpZCB0eXBlLgot
ICAgICAgICAgICAgY29tbWFuZCA9IFsidGFza2tpbGwuZXhlIiwgIi9mIiwgIi90IiwgIi9waWQi
LCBwaWRdCisgICAgICAgICAgICB0YXNrX2tpbGxfZXhlY3V0YWJsZSA9IG9zLnBhdGguam9pbign
QzonLCBvcy5zZXAsICdXSU5ET1dTJywgJ3N5c3RlbTMyJywgJ3Rhc2traWxsLmV4ZScpCisgICAg
ICAgICAgICBjb21tYW5kID0gW3Rhc2tfa2lsbF9leGVjdXRhYmxlLCAiL2YiLCAiL3QiLCAiL3Bp
ZCIsIHBpZF0KICAgICAgICAgICAgICMgdGFza2tpbGwgd2lsbCBleGl0IDEyOCBpZiB0aGUgcHJv
Y2VzcyBpcyBub3QgZm91bmQuICBXZSBzaG91bGQgbG9nLgogICAgICAgICAgICAgc2VsZi5ydW5f
Y29tbWFuZChjb21tYW5kLCBlcnJvcl9oYW5kbGVyPXNlbGYuaWdub3JlX2Vycm9yKQogICAgICAg
ICAgICAgcmV0dXJuCkBAIC0yNjQsNyArMjY1LDcgQEAgY2xhc3MgRXhlY3V0aXZlKG9iamVjdCk6
CiAKICAgICBkZWYgY2hlY2tfcnVubmluZ19waWQoc2VsZiwgcGlkKToKICAgICAgICAgIiIiUmV0
dXJuIFRydWUgaWYgcGlkIGlzIGFsaXZlLCBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAg
ICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3Jt
LnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dpbjMyX2NoZWNr
X3J1bm5pbmdfcGlkKHBpZCkKIAogICAgICAgICB0cnk6CkBAIC0yNzQsNyArMjc1LDcgQEAgY2xh
c3MgRXhlY3V0aXZlKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRl
ZiBydW5uaW5nX3BpZHMoc2VsZiwgcHJvY2Vzc19uYW1lX2ZpbHRlcj1Ob25lKToKLSAgICAgICAg
aWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCd3aW4nKToKICAgICAgICAgICAgICMgRklYTUU6IHJ1bm5pbmdfcGlkcyBpc24ndCBp
bXBsZW1lbnRlZCBvbiBuYXRpdmUgV2luZG93cyB5ZXQuLi4KICAgICAgICAgICAgIHJldHVybiBb
XQogCkBAIC0zNDksOSArMzUwLDEyIEBAIGNsYXNzIEV4ZWN1dGl2ZShvYmplY3QpOgogICAgIGRl
ZiBraWxsX2FsbChzZWxmLCBwcm9jZXNzX25hbWUpOgogICAgICAgICAiIiJBdHRlbXB0cyB0byBr
aWxsIHByb2Nlc3NlcyBtYXRjaGluZyBwcm9jZXNzX25hbWUuCiAgICAgICAgIFdpbGwgZmFpbCBz
aWxlbnRseSBpZiBubyBwcm9jZXNzIGFyZSBmb3VuZC4iIiIKLSAgICAgICAgaWYgc3lzLnBsYXRm
b3JtIGluICgid2luMzIiLCAiY3lnd2luIik6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAn
Y3lnd2luJyBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBp
bWFnZV9uYW1lID0gc2VsZi5fd2luZG93c19pbWFnZV9uYW1lKHByb2Nlc3NfbmFtZSkKLSAgICAg
ICAgICAgIGNvbW1hbmQgPSBbInRhc2traWxsLmV4ZSIsICIvZiIsICIvaW0iLCBpbWFnZV9uYW1l
XQorICAgICAgICAgICAga2lsbENvbW1tYW5kID0gJ3Rhc2traWxsLmV4ZScKKyAgICAgICAgICAg
IGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgICAgICBraWxs
Q29tbWFuZCA9IG9zLnBhdGguam9pbignQzonLCBvcy5zZXAsICdXSU5ET1dTJywgJ3N5c3RlbTMy
JywgJ3Rhc2traWxsLmV4ZScpCisgICAgICAgICAgICBjb21tYW5kID0gW2tpbGxDb21tbWFuZCwg
Ii9mIiwgIi9pbSIsIGltYWdlX25hbWVdCiAgICAgICAgICAgICAjIHRhc2traWxsIHdpbGwgZXhp
dCAxMjggaWYgdGhlIHByb2Nlc3MgaXMgbm90IGZvdW5kLiAgV2Ugc2hvdWxkIGxvZy4KICAgICAg
ICAgICAgIHNlbGYucnVuX2NvbW1hbmQoY29tbWFuZCwgZXJyb3JfaGFuZGxlcj1zZWxmLmlnbm9y
ZV9lcnJvcikKICAgICAgICAgICAgIHJldHVybgpAQCAtNDYwLDcgKzQ2NCw3IEBAIGNsYXNzIEV4
ZWN1dGl2ZShvYmplY3QpOgogICAgICAgICAjIFdpbjMyIFB5dGhvbiAyLnggdXNlcyBDcmVhdGVQ
cm9jZXNzQSByYXRoZXIgdGhhbiBDcmVhdGVQcm9jZXNzVwogICAgICAgICAjIHRvIGxhdW5jaCBz
dWJwcm9jZXNzZXMsIHNvIHdlIGhhdmUgdG8gZW5jb2RlIGFyZ3VtZW50cyB1c2luZyB0aGUKICAg
ICAgICAgIyBjdXJyZW50IGNvZGUgcGFnZS4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3
aW4zMicgYW5kIHN5cy52ZXJzaW9uIDwgJzMnOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3Rh
cnRzd2l0aCgnd2luJykgYW5kIHN5cy52ZXJzaW9uIDwgJzMnOgogICAgICAgICAgICAgcmV0dXJu
ICdtYmNzJwogICAgICAgICAjIEFsbCBvdGhlciBwbGF0Zm9ybXMgdXNlIFVURi04LgogICAgICAg
ICAjIEZJWE1FOiBVc2luZyBVVEYtOCBvbiBDeWd3aW4gd2lsbCBjb25mdXNlIFdpbmRvd3MtbmF0
aXZlIGNvbW1hbmRzCkBAIC00NzcsNyArNDgxLDcgQEAgY2xhc3MgRXhlY3V0aXZlKG9iamVjdCk6
CiAgICAgICAgICMgV2luMzIgUHl0aG9uIDIueCB1c2VzIENyZWF0ZVByb2Nlc3NBIHJhdGhlciB0
aGFuIENyZWF0ZVByb2Nlc3NXCiAgICAgICAgICMgdG8gbGF1bmNoIHN1YnByb2Nlc3Nlcywgc28g
d2UgaGF2ZSB0byBlbmNvZGUgYXJndW1lbnRzIHVzaW5nIHRoZQogICAgICAgICAjIGN1cnJlbnQg
Y29kZSBwYWdlLgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBhbmQgc3lzLnZl
cnNpb24gPCAnMyc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBh
bmQgc3lzLnZlcnNpb24gPCAnMyc6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAg
IHJldHVybiBGYWxzZQpAQCAtNDkzLDggKzQ5NywyNyBAQCBjbGFzcyBFeGVjdXRpdmUob2JqZWN0
KToKICAgICAgICAgIyBUaGUgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZiBQb3BlbiBjYW5ub3Qg
aGFuZGxlIHVuaWNvZGUgc3RyaW5ncy4gOigKICAgICAgICAgcmV0dXJuIG1hcChzZWxmLl9lbmNv
ZGVfYXJndW1lbnRfaWZfbmVlZGVkLCBzdHJpbmdfYXJncykKIAotICAgICMgVGhlIG9ubHkgcmVx
dWlyZWQgYXJ1Z21lbnQgdG8gcG9wZW4gaXMgbmFtZWQgImFyZ3MiLCB0aGUgcmVzdCBhcmUgb3B0
aW9uYWwga2V5d29yZCBhcmd1bWVudHMuCisgICAgZGVmIF9uZWVkc19pbnRlcnByZXRlcl9jaGVj
ayhzZWxmLCBhcmd1bWVudCk6CisgICAgICAgIHJldHVybiBub3QgYXJndW1lbnQuZW5kc3dpdGgo
KCdwZXJsJywgJ3B5dGhvbicsICdydWJ5JywgJ3Rhc2traWxsLmV4ZScsICdnaXQnLCAnc3ZuJykp
CisKKyAgICAjIFRoZSBvbmx5IHJlcXVpcmVkIGFyZ3VtZW50IHRvIHBvcGVuIGlzIG5hbWVkICJh
cmdzIiwgdGhlIHJlc3QgYXJlIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLgogICAgIGRlZiBw
b3BlbihzZWxmLCBhcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIkxvb2tpbmcgYXQgezB9Ii5m
b3JtYXQoYXJncykpCisgICAgICAgICAgICAjIE11c3QgaW5jbHVkZSBwcm9wZXIgaW50ZXJwcmV0
ZXIKKyAgICAgICAgICAgIGlmIHNlbGYuX25lZWRzX2ludGVycHJldGVyX2NoZWNrKGFyZ3NbMF0p
OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGFy
Z3NbMF0sICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRs
aW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICJwZXJsIiBpbiBsaW5lOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuaW5zZXJ0KDAsICJwZXJsIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsaWYgInB5dGhvbiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzLmluc2VydCgwLCAicHl0aG9uIikKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsaWYgInJ1YnkiIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5p
bnNlcnQoMCwgInJ1YnkiKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAg
ICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGFsd2F5cyBi
ZSBzdHJpbmdpZnlpbmcgdGhlIGFyZ3MsIGJ1dCBjYWxsZXJzIHdobyBwYXNzIHNoZWxsPVRydWUK
ICAgICAgICAgIyBleHBlY3QgdGhhdCB0aGUgZXhhY3QgYnl0ZXMgcGFzc2VkIHdpbGwgZ2V0IHBh
c3NlZCB0byB0aGUgc2hlbGwgKGV2ZW4gaWYgdGhleSdyZSB3cm9uZ2x5IGVuY29kZWQpLgogICAg
ICAgICAjIHNoZWxsPVRydWUgaXMgd3JvbmcgZm9yIG1hbnkgb3RoZXIgcmVhc29ucywgYW5kIHdl
IHNob3VsZCByZW1vdmUgdGhpcwpAQCAtNTA5LDcgKzUzMiw3IEBAIGNsYXNzIEV4ZWN1dGl2ZShv
YmplY3QpOgogICAgICAgICAiIiJSdW5zIGEgbGlzdCBvZiAoY21kX2xpbmUgbGlzdCwgY3dkIHN0
cmluZykgdHVwbGVzIGluIHBhcmFsbGVsIGFuZCByZXR1cm5zIGEgbGlzdCBvZiAocmV0Y29kZSwg
c3Rkb3V0LCBzdGRlcnIpIHR1cGxlcy4iIiIKICAgICAgICAgYXNzZXJ0IGxlbihjb21tYW5kX2xp
bmVzX2FuZF9jd2RzKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2N5Z3dpbicsICd3
aW4zMicpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicgb3Igc3lzLnBsYXRm
b3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICAgICAgcmV0dXJuIG1hcChfcnVuX2NvbW1h
bmRfdGh1bmssIGNvbW1hbmRfbGluZXNfYW5kX2N3ZHMpCiAgICAgICAgIHBvb2wgPSBtdWx0aXBy
b2Nlc3NpbmcuUG9vbChwcm9jZXNzZXM9cHJvY2Vzc2VzKQogICAgICAgICByZXN1bHRzID0gcG9v
bC5tYXAoX3J1bl9jb21tYW5kX3RodW5rLCBjb21tYW5kX2xpbmVzX2FuZF9jd2RzKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhl
Y3V0aXZlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxOTI2OTkpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC02Nyw3ICs2Nyw3IEBAIGRlZiBuZXZlcl9lbmRpbmdfY29tbWFuZCgpOgogICAgICIiIkFy
Z3VtZW50cyBmb3IgYSBjb21tYW5kIHRoYXQgd2lsbCBuZXZlciBlbmQgKHVzZWZ1bCBmb3IgdGVz
dGluZyBwcm9jZXNzCiAgICAga2lsbGluZykuIEl0IHNob3VsZCBiZSBhIHByb2Nlc3MgdGhhdCBp
cyB1bmxpa2VseSB0byBhbHJlYWR5IGJlIHJ1bm5pbmcKICAgICBiZWNhdXNlIGFsbCBpbnN0YW5j
ZXMgd2lsbCBiZSBraWxsZWQuIiIiCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Cisg
ICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICByZXR1cm4gWyd3
bWljJ10KICAgICByZXR1cm4gWyd5ZXMnXQogCkBAIC0xMzAsMTQgKzEzMCwxNCBAQCBjbGFzcyBF
eGVjdXRpdmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgdG8gRXhlY3V0aXZlLnJ1
biogbWV0aG9kcywgYW5kIHRoZXkgd2lsbCByZXR1cm4gdW5pY29kZSgpCiAgICAgICAgIG9iamVj
dHMgYnkgZGVmYXVsdCB1bmxlc3MgZGVjb2RlX291dHB1dD1GYWxzZSIiIgogICAgICAgICB1bmlj
b2RlX3Rvcl9pbnB1dCA9IHUiV2ViS2l0IFx1MjY2MSBUb3IgQXJuZSBWZXN0Ylx1MDBGOCEiCi0g
ICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBpZiBzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBlbmNvZGluZyA9ICdtYmNzJwogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RpbmcgPSAndXRmLTgnCiAgICAgICAgIGVuY29k
ZWRfdG9yID0gdW5pY29kZV90b3JfaW5wdXQuZW5jb2RlKGVuY29kaW5nKQogICAgICAgICAjIE9u
IFdpbmRvd3MsIHdlIGV4cGVjdCB0aGUgdW5pY29kZS0+bWJjcy0+dW5pY29kZSByb3VuZHRyaXAg
dG8gYmUKICAgICAgICAgIyBsb3NzeS4gT24gb3RoZXIgcGxhdGZvcm1zLCB3ZSBleHBlY3QgYSBs
b3NzbGVzcyByb3VuZHRyaXAuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgor
ICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICB1
bmljb2RlX3Rvcl9vdXRwdXQgPSBlbmNvZGVkX3Rvci5kZWNvZGUoZW5jb2RpbmcpCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICB1bmljb2RlX3Rvcl9vdXRwdXQgPSB1bmljb2RlX3Rvcl9pbnB1
dApAQCAtMTcwLDcgKzE3MCw3IEBAIGNsYXNzIEV4ZWN1dGl2ZVRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2Nlc3MucG9sbCgpLCBOb25lKSAgIyBQ
cm9jZXNzIGlzIHJ1bm5pbmcKICAgICAgICAgZXhlY3V0aXZlLmtpbGxfcHJvY2Vzcyhwcm9jZXNz
LnBpZCkKICAgICAgICAgIyBOb3RlOiBDYW4ndCB1c2UgYSB0ZXJuYXJ5IHNpbmNlIHNpZ25hbC5T
SUdLSUxMIGlzIHVuZGVmaW5lZCBmb3Igc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIKLSAgICAgICAg
aWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCd3aW4nKToKICAgICAgICAgICAgICMgRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NDc5MAogICAgICAgICAgICAgIyBXZSBzZWVtIHRvIGdldCBl
aXRoZXIgMCBvciAxIGhlcmUgZm9yIHNvbWUgcmVhc29uLgogICAgICAgICAgICAgc2VsZi5hc3Nl
cnRJbihwcm9jZXNzLndhaXQoKSwgKDAsIDEpKQpAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIEV4
ZWN1dGl2ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0g
PT0gImN5Z3dpbiI6CiAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGUgPSAwICAjIG9zLmtp
bGwgcmVzdWx0cyBpbiBleGl0KDApIGZvciB0aGlzIHByb2Nlc3MuCiAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHByb2Nlc3Mud2FpdCgpLCBleHBlY3RlZF9leGl0X2NvZGUpCi0gICAgICAg
IGVsaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgIGVsaWYgc3lzLnBsYXRmb3Jt
LnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICAgICAgIyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NzkwCiAgICAgICAgICAgICAjIFdlIHNlZW0gdG8g
Z2V0IGVpdGhlciAwIG9yIDEgaGVyZSBmb3Igc29tZSByZWFzb24uCiAgICAgICAgICAgICBzZWxm
LmFzc2VydEluKHByb2Nlc3Mud2FpdCgpLCAoMCwgMSkpCkBAIC0yMjYsNyArMjI2LDcgQEAgY2xh
c3MgRXhlY3V0aXZlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoZXhlY3V0aXZlLmNoZWNrX3J1bm5pbmdfcGlkKDEwMDAwMCkpCiAKICAgICBkZWYgc2Vy
aWFsX3Rlc3RfcnVubmluZ19waWRzKHNlbGYpOgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4g
KCJ3aW4zMiIsICJjeWd3aW4iKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgo
J3dpbicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKICAgICAgICAgICAgIHJldHVybiAg
IyBUaGlzIGZ1bmN0aW9uIGlzbid0IGltcGxlbWVudGVkIG9uIFdpbmRvd3MgeWV0LgogCiAgICAg
ICAgIGV4ZWN1dGl2ZSA9IEV4ZWN1dGl2ZSgpCkBAIC0yMzYsNyArMjM2LDcgQEAgY2xhc3MgRXhl
Y3V0aXZlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNlcmlhbF90ZXN0X3J1bl9p
bl9wYXJhbGxlbChzZWxmKToKICAgICAgICAgIyBXZSBydW4gdGhpcyB0ZXN0IHNlcmlhbGx5IHRv
IGF2b2lkIG92ZXJsb2FkaW5nIHRoZSBtYWNoaW5lIGFuZCB0aHJvd2luZyBvZmYgdGhlIHRpbWlu
Zy4KIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCJ3aW4zMiIsICJjeWd3aW4iKToKKyAg
ICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5cy5wbGF0Zm9ybSA9
PSAiY3lnd2luIjoKICAgICAgICAgICAgIHJldHVybiAgIyBUaGlzIGZ1bmN0aW9uIGlzbid0IGlt
cGxlbWVudGVkIHByb3Blcmx5IG9uIHdpbmRvd3MgeWV0LgogICAgICAgICBpbXBvcnQgbXVsdGlw
cm9jZXNzaW5nCiAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFzcyBFeGVjdXRpdmVUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKIAogCiBkZWYgbWFpbihwbGF0Zm9ybSwgc3RkaW4sIHN0ZG91dCwgY21k
LCBhcmdzKToKLSAgICBpZiBwbGF0Zm9ybSA9PSAnd2luMzInIGFuZCBoYXNhdHRyKHN0ZG91dCwg
J2ZpbGVubycpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBhbmQgaGFz
YXR0cihzdGRvdXQsICdmaWxlbm8nKToKICAgICAgICAgaW1wb3J0IG1zdmNydAogICAgICAgICBt
c3ZjcnQuc2V0bW9kZShzdGRvdXQuZmlsZW5vKCksIG9zLk9fQklOQVJZKQogICAgIGlmIGNtZCA9
PSAnLS1jYXQnOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Zp
bGVfbG9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZV9sb2NrLnB5CShyZXZpc2lvbiAxOTI2OTkpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZV9sb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3
ICs0Miw3IEBAIGNsYXNzIEZpbGVMb2NrKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX21heF93YWl0
X3RpbWVfc2VjID0gbWF4X3dhaXRfdGltZV9zZWMKIAogICAgIGRlZiBfY3JlYXRlX2xvY2soc2Vs
Zik6Ci0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBpZiBzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBpbXBvcnQgbXN2Y3J0CiAg
ICAgICAgICAgICBtc3ZjcnQubG9ja2luZyhzZWxmLl9sb2NrX2ZpbGVfZGVzY3JpcHRvciwgbXN2
Y3J0LkxLX05CTENLLCAzMikKICAgICAgICAgZWxzZToKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3Mg
RmlsZUxvY2sob2JqZWN0KToKICAgICAgICAgICAgIGZjbnRsLmZsb2NrKHNlbGYuX2xvY2tfZmls
ZV9kZXNjcmlwdG9yLCBmY250bC5MT0NLX0VYIHwgZmNudGwuTE9DS19OQikKIAogICAgIGRlZiBf
cmVtb3ZlX2xvY2soc2VsZik6Ci0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgor
ICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBp
bXBvcnQgbXN2Y3J0CiAgICAgICAgICAgICBtc3ZjcnQubG9ja2luZyhzZWxmLl9sb2NrX2ZpbGVf
ZGVzY3JpcHRvciwgbXN2Y3J0LkxLX1VOTENLLCAzMikKICAgICAgICAgZWxzZToKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxl
c3lzdGVtX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxOTI2OTkpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtOTEsNyArOTEsNyBAQCBjbGFzcyBSZWFsRmlsZVN5c3RlbVRlc3QodW5pdHRlc3QuVGVz
dENhCiAgICAgICAgIGZzID0gRmlsZVN5c3RlbSgpCiAgICAgICAgIGN3ZCA9IGZzLmdldGN3ZCgp
CiAgICAgICAgIG5ld2RpciA9ICcvJwotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMy
JzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICAg
ICAgbmV3ZGlyID0gJ2M6XFwnCiAgICAgICAgIGZzLmNoZGlyKG5ld2RpcikKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChmcy5nZXRjd2QoKSwgbmV3ZGlyKQpAQCAtMTAwLDcgKzEwMCw3IEBAIGNs
YXNzIFJlYWxGaWxlU3lzdGVtVGVzdCh1bml0dGVzdC5UZXN0Q2EKICAgICBkZWYgdGVzdF9jaGRp
cl9fbm90ZXhpc3RzKHNlbGYpOgogICAgICAgICBmcyA9IEZpbGVTeXN0ZW0oKQogICAgICAgICBu
ZXdkaXIgPSAnL2RpcmRvZXNub3RleGlzdCcKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3
aW4zMic6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAg
ICAgICAgIG5ld2RpciA9ICdjOlxcZGlyZG9lc25vdGV4aXN0JwogICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhPU0Vycm9yLCBmcy5jaGRpciwgbmV3ZGlyKQogCkBAIC0xNjQsNyArMTY0LDcgQEAg
Y2xhc3MgUmVhbEZpbGVTeXN0ZW1UZXN0KHVuaXR0ZXN0LlRlc3RDYQogICAgIGRlZiB0ZXN0X21h
eWJlX21ha2VfZGlyZWN0b3J5X19mYWlsdXJlKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBvcy5j
aG1vZCgpIGRvZXNuJ3Qgd29yayBvbiBXaW5kb3dzIHRvIHNldCBkaXJlY3RvcmllcwogICAgICAg
ICAjIGFzIHJlYWRvbmx5LCBzbyB3ZSBza2lwIHRoaXMgdGVzdCBmb3Igbm93LgotICAgICAgICBp
ZiBzeXMucGxhdGZvcm0gaW4gKCd3aW4zMicsICdjeWd3aW4nKToKKyAgICAgICAgaWYgc3lzLnBs
YXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAg
ICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGZzID0gRmlsZVN5c3RlbSgpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVz
dC5weQkocmV2aXNpb24gMTkyNjk5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3BhdGhfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAg
Y2xhc3MgQWJzcGF0aFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZmlsZTovLy9mb28vYmFyLmh0bWwnKQogCiAgICAgZGVmIHRlc3RfYWJzcGF0aF90
b191cmlfd2luKHNlbGYpOgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAg
ICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgICAg
IHJldHVybgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoc2Vs
Zi5wbGF0Zm9ybWluZm8oKSwgJ2M6XFxmb29cXGJhci5odG1sJyksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2ZpbGU6Ly8vYzovZm9vL2Jhci5odG1sJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5weQkocmV2aXNp
b24gMTkyNjk5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRm
b3JtaW5mby5weQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIFBsYXRm
b3JtSW5mbyhvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuICdtYWMnCiAgICAgICAgIGlmIHN5
c19wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgogICAgICAgICAgICAgcmV0dXJuICdsaW51
eCcKLSAgICAgICAgaWYgc3lzX3BsYXRmb3JtIGluICgnd2luMzInLCAnY3lnd2luJyk6CisgICAg
ICAgIGlmIHN5c19wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBvciBzeXNfcGxhdGZvcm0gPT0g
J2N5Z3dpbic6CiAgICAgICAgICAgICByZXR1cm4gJ3dpbicKICAgICAgICAgaWYgc3lzX3BsYXRm
b3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKToKICAgICAgICAgICAgIHJldHVybiAnZnJlZWJzZCcK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5CShy
ZXZpc2lvbiAxOTI2OTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
dXNlci5weQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCiB0cnk6CiAgICAgaW1wb3J0IHJlYWRsaW5lCiBleGNlcHQgSW1w
b3J0RXJyb3I6Ci0gICAgaWYgc3lzLnBsYXRmb3JtICE9ICJ3aW4zMiI6CisgICAgaWYgbm90IHN5
cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4zMicpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIHJl
YWRsaW5lIG1vZHVsZSBmb3Igd2luMzIsIG5vdCBtdWNoIHRvIGRvIGV4Y2VwdCBjcnkuCiAgICAg
ICAgIF9sb2cud2FybigiVW5hYmxlIHRvIGltcG9ydCByZWFkbGluZS4iKQogCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE5MjY5OSkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgTWFuYWdlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBtYW5hZ2VyID0gZ2V0X21hbmFnZXIoKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUobWFuYWdlci5uZWVkc19zZXJ2ZXJzKFsnaHR0cC90ZXN0
cy9taW1lJ10pKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAg
ICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBtYW5hZ2Vy
ID0gZ2V0X21hbmFnZXIoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYW5hZ2VyLm5l
ZWRzX3NlcnZlcnMoWydmYXN0XFxodG1sJ10pKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlcl91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJz
L2FwYWNoZV9odHRwX3NlcnZlcl91bml0dGVzdC5weQkocmV2aXNpb24gMTkyNjk5KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2
ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMuc2VydmVycy5odHRwXwogY2xhc3MgVGVzdExheW91dFRlc3RBcGFj
aGVIdHRwZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RhcnRfY21kKHNlbGYp
OgogICAgICAgICAjIEZhaWxzIG9uIHdpbiAtIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQ3MjYKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2lu
JywgJ3dpbjMyJyk6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBv
ciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAg
ICBkZWYgZmFrZV9waWQoXyk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CShy
ZXZpc2lvbiAxOTI2OTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9z
ZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgs
NyBAQCBjbGFzcyBIdHRwU2VydmVyQmFzZShvYmplY3QpOgogICAgICAgICAgICAgZXhjZXB0IElP
RXJyb3IsIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBpbiAoZXJybm8uRUFMUkVBRFks
IGVycm5vLkVBRERSSU5VU0UpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBTZXJ2ZXJFcnJv
cignUG9ydCAlZCBpcyBhbHJlYWR5IGluIHVzZS4nICUgcG9ydCkKLSAgICAgICAgICAgICAgICBl
bGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIGFuZCBlLmVycm5vIGluIChlcnJuby5XU0FFQUND
RVMsKTogICMgcHlsaW50OiBkaXNhYmxlPUUxMTAxCisgICAgICAgICAgICAgICAgZWxpZiBzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgYW5kIGUuZXJybm8gaW4gKGVycm5vLldTQUVBQ0NF
UywpOiAgIyBweWxpbnQ6IGRpc2FibGU9RTExMDEKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
U2VydmVyRXJyb3IoJ1BvcnQgJWQgaXMgYWxyZWFkeSBpbiB1c2UuJyAlIHBvcnQpCiAgICAgICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2Vy
dmVycy9odHRwX3NlcnZlcl91bml0dGVzdC5weQkocmV2aXNpb24gMTkyNjk5KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5zZXJ2ZXJzLmh0dHBfCiBjbGFzcyBUZXN0SHR0cFNlcnZlcih1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RhcnRfY21kKHNlbGYpOgogICAgICAgICAjIEZhaWxzIG9u
IHdpbiAtIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ3MjYK
LSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6CisgICAgICAg
IGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBvciBzeXMucGxhdGZvcm0gPT0gJ2N5
Z3dpbic6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDE5MjY5OSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04
MzQsNyArODM0LDEwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgICdfTlRfU1lN
Qk9MX1BBVEgnLAogCiAgICAgICAgICAgICAjIFdpbmRvd3M6CisgICAgICAgICAgICAnQ09NU1BF
QycsCiAgICAgICAgICAgICAnUEFUSCcsCisgICAgICAgICAgICAnU1lTVEVNRFJJVkUnLAorICAg
ICAgICAgICAgJ1NZU1RFTVJPT1QnLAogCiAgICAgICAgICAgICAjIE1vc3QgcG9ydHMgKD8pOgog
ICAgICAgICAgICAgJ1dFQktJVF9URVNURk9OVFMnLApAQCAtMTEwNCw3ICsxMTA3LDcgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogCiAgICAgIyBXZSBwYXNzIHN5c19wbGF0Zm9ybSBpbnRvIHRoaXMg
bWV0aG9kIHRvIG1ha2UgaXQgZWFzeSB0byB1bml0IHRlc3QuCiAgICAgZGVmIF9hcGFjaGVfY29u
ZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0oc2VsZiwgc3lzX3BsYXRmb3JtKToKLSAgICAgICAg
aWYgc3lzX3BsYXRmb3JtID09ICdjeWd3aW4nIG9yIHN5c19wbGF0Zm9ybSA9PSAnd2luMzInOgor
ICAgICAgICBpZiBzeXNfcGxhdGZvcm0gPT0gJ2N5Z3dpbicgb3Igc3lzX3BsYXRmb3JtLnN0YXJ0
c3dpdGgoJ3dpbicpOgogICAgICAgICAgICAgcmV0dXJuICdhcGFjaGUnICsgc2VsZi5fYXBhY2hl
X3ZlcnNpb24oKSArICctaHR0cGQtd2luLmNvbmYnCiAgICAgICAgIGlmIHN5c19wbGF0Zm9ybS5z
dGFydHN3aXRoKCdsaW51eCcpOgogICAgICAgICAgICAgaWYgc2VsZi5faXNfcmVkaGF0X2Jhc2Vk
KCk6CkBAIC0xMTUwLDE0ICsxMTUzLDE4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
ICAgICMgdGhlIG9wdGlvbnMgbGlzdC4KICAgICAgICAgICAgIHNlbGYuc2V0X29wdGlvbignX2Nh
Y2hlZF9yb290Jywgcm9vdF9kaXJlY3RvcnkpCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGlu
ICgnY3lnd2luJywgJ3dpbjMyJyk6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRo
KCd3aW4nKSBvciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICByZXR1cm4g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHJvb3RfZGlyZWN0b3J5LCAqY29tcHMpCiAKICAgICAgICAg
cmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgocm9v
dF9kaXJlY3RvcnkpLCAqY29tcHMpCiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNv
bmZpZ3VyYXRpb249Tm9uZSk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0
aGUgdGVzdCBkcml2ZXIgKER1bXBSZW5kZXJUcmVlKS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2J1aWxkX3BhdGgoc2VsZi5kcml2ZXJfbmFtZSgpKQorICAgICAgICBsb2NhbF9kcml2ZXJfcGF0
aCA9IHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5kcml2ZXJfbmFtZSgpKQorICAgICAgICBpZiBzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgICAgICBiYXNlID0gb3MucGF0aC5z
cGxpdGV4dChsb2NhbF9kcml2ZXJfcGF0aClbMF0KKyAgICAgICAgICAgIGxvY2FsX2RyaXZlcl9w
YXRoID0gYmFzZSArICIuZXhlIgorICAgICAgICByZXR1cm4gbG9jYWxfZHJpdmVyX3BhdGgKIAog
ICAgIGRlZiBfZHJpdmVyX3RlbXBkaXIoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxl
c3lzdGVtLm1rZHRlbXAocHJlZml4PSclcy0nICUgc2VsZi5kcml2ZXJfbmFtZSgpKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CShyZXZpc2lvbiAxOTI2OTkpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0z
MTIsMTUgKzMxMiwxNSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYu
X3J1bl9wb3N0X3N0YXJ0X3Rhc2tzKCkKIAogICAgIGRlZiBfc2V0dXBfZW52aXJvbl9mb3JfZHJp
dmVyKHNlbGYsIGVudmlyb25tZW50KToKLSAgICAgICAgZW52aXJvbm1lbnRbJ0RZTERfTElCUkFS
WV9QQVRIJ10gPSBzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkKLSAgICAgICAgZW52aXJvbm1lbnRb
J0RZTERfRlJBTUVXT1JLX1BBVEgnXSA9IHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoKQorICAgICAg
ICBlbnZpcm9ubWVudFsnRFlMRF9MSUJSQVJZX1BBVEgnXSA9IHN0cihzZWxmLl9wb3J0Ll9idWls
ZF9wYXRoKCkpCisgICAgICAgIGVudmlyb25tZW50WydEWUxEX0ZSQU1FV09SS19QQVRIJ10gPSBz
dHIoc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgpKQogICAgICAgICAjIFVzZSBhbiBpc29sYXRlZCB0
ZW1wIGRpcmVjdG9yeSB0aGF0IGNhbiBiZSBkZWxldGVkIGFmdGVyIHRlc3RpbmcgKGVzcGVjaWFs
bHkgaW1wb3J0YW50IG9uIE1hYywgYXMKICAgICAgICAgIyBDb3JlTWVkaWEgZGlzayBjYWNoZSBp
cyBpbiB0aGUgdGVtcCBkaXJlY3RvcnkpLgogICAgICAgICBlbnZpcm9ubWVudFsnVE1QRElSJ10g
PSBzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpCi0gICAgICAgIGVudmlyb25tZW50WydESVJIRUxQ
RVJfVVNFUl9ESVJfU1VGRklYJ10gPSBvcy5wYXRoLmJhc2VuYW1lKHN0cihzZWxmLl9kcml2ZXJf
dGVtcGRpcikpCisgICAgICAgIGVudmlyb25tZW50WydESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklY
J10gPSBzdHIob3MucGF0aC5iYXNlbmFtZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKSkKICAg
ICAgICAgIyBQdXQgY2VydGFpbiBub3JtYWxseSBwZXJzaXN0ZW50IGZpbGVzIGludG8gdGhlIHRl
bXAgZGlyZWN0b3J5IChlLmcuIEluZGV4ZWREQiBzdG9yYWdlKS4KICAgICAgICAgZW52aXJvbm1l
bnRbJ0RVTVBSRU5ERVJUUkVFX1RFTVAnXSA9IHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikKLSAg
ICAgICAgZW52aXJvbm1lbnRbJ0xPQ0FMX1JFU09VUkNFX1JPT1QnXSA9IHNlbGYuX3BvcnQubGF5
b3V0X3Rlc3RzX2RpcigpCisgICAgICAgIGVudmlyb25tZW50WydMT0NBTF9SRVNPVVJDRV9ST09U
J10gPSBzdHIoc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkpCiAgICAgICAgIGVudmlyb25t
ZW50WydBU0FOX09QVElPTlMnXSA9ICJhbGxvY2F0b3JfbWF5X3JldHVybl9udWxsPTEiCiAgICAg
ICAgIGlmICdXRUJLSVRfT1VUUFVURElSJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgZW52
aXJvbm1lbnRbJ1dFQktJVF9PVVRQVVRESVInXSA9IG9zLmVudmlyb25bJ1dFQktJVF9PVVRQVVRE
SVInXQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAxOTI2OTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZHJpdmVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIGZyb20g
d2Via2l0cHkucG9ydC5wb3J0X3Rlc3RjYXNlIGltcG9ydAogCiBmcm9tIHdlYmtpdHB5LnRvb2wu
bW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiAKK2ltcG9ydCBzeXMKIAogY2xhc3MgRHJpdmVy
T3V0cHV0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RyaXBfbWV0cmlj
cyhzZWxmKToKQEAgLTE3OCw3ICsxNzksMTAgQEAgY2xhc3MgRHJpdmVyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCiAgICAgICAgIHBvcnQu
X2NvbmZpZy5idWlsZF9kaXJlY3RvcnkgPSBsYW1iZGEgY29uZmlndXJhdGlvbjogJy9tb2NrLWJ1
aWxkJwogICAgICAgICBkcml2ZXIgPSBEcml2ZXIocG9ydCwgMCwgcGl4ZWxfdGVzdHM9VHJ1ZSwg
bm9fdGltZW91dD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyaXZlci5jbWRfbGlu
ZShUcnVlLCBbXSksIFsnL21vY2stYnVpbGQvRHVtcFJlbmRlclRyZWUnLCAnLS1uby10aW1lb3V0
JywgJy0nXSkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXIuY21kX2xpbmUoVHJ1ZSwgW10pLCBbJy9t
b2NrLWJ1aWxkL0R1bXBSZW5kZXJUcmVlLmV4ZScsICctLW5vLXRpbWVvdXQnLCAnLSddKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2ZXIuY21kX2xpbmUo
VHJ1ZSwgW10pLCBbJy9tb2NrLWJ1aWxkL0R1bXBSZW5kZXJUcmVlJywgJy0tbm8tdGltZW91dCcs
ICctJ10pCiAKICAgICBkZWYgdGVzdF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKHNlbGYpOgogICAg
ICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2dfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2dfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDE5MjY5OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9n
ZXRfY3Jhc2hfbG9nX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0
CiAKIGZyb20gd2Via2l0cHkucG9ydC5saW51eF9nZXRfY3Jhc2hfbG9nIGltcG9ydCBHREJDcmFz
aExvZ0dlbmVyYXRvcgpAQCAtMzcsNiArMzgsOSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZmlsZXN5c3RlbV9tCiBjbGFzcyBHREJDcmFzaExvZ0dlbmVyYXRvclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZ2VuZXJhdGVfY3Jhc2hfbG9nKHNlbGYpOgorICAg
ICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgICAgICByZXR1
cm4KKwogICAgICAgICBnZW5lcmF0b3IgPSBHREJDcmFzaExvZ0dlbmVyYXRvcignRHVtcFJlbmRl
clRyZWUnLCAyODUyOSwgbmV3ZXJfdGhhbj1Ob25lLCBmaWxlc3lzdGVtPU1vY2tGaWxlU3lzdGVt
KHsnL3BhdGgvdG8vY29yZWR1bXBzJzogJyd9KSwgcGF0aF90b19kcml2ZXI9Tm9uZSkKIAogICAg
ICAgICBjb3JlX2RpcmVjdG9yeSA9IG9zLmVudmlyb24uZ2V0KCdXRUJLSVRfQ09SRV9EVU1QU19E
SVJFQ1RPUlknLCAnL3BhdGgvdG8vY29yZWR1bXBzJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAxOTI2OTkpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQkod29ya2luZyBjb3B5KQpA
QCAtNDc1LDcgKzQ3NSwxMCBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGRlZiB0ZXN0X3Jvb3Rfb3B0aW9uKHNlbGYpOgogICAgICAgICBwb3J0ID0gVGVzdFdl
YktpdFBvcnQoKQogICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMocm9vdD0nL2Zv
bycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5fcGF0aF90b19kcml2ZXIoKSwgIi9m
b28vRHVtcFJlbmRlclRyZWUiKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgn
d2luJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3BhdGhfdG9fZHJpdmVy
KCksICIvZm9vL0R1bXBSZW5kZXJUcmVlLmV4ZSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX3BhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5k
ZXJUcmVlIikKIAogICAgIGRlZiB0ZXN0X3Rlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAg
ICAjIENoZWNrIHRoYXQgd2UgcmVhZCB0aGUgZXhwZWN0YXRpb25zIGZpbGUKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkJKHJldmlzaW9uIDE5
MjY5OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBpbXBvcnQgdGltZQogIyBOb3RlIHRoYXQg
YWx0aG91Z2ggd2luMzIgcHl0aG9uIGRvZXMgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZgog
IyB0aGUgd2luMzIgc2VsZWN0IEFQSSwgaXQgb25seSB3b3JrcyBvbiBzb2NrZXRzLCBhbmQgbm90
IG9uIHRoZSBuYW1lZCBwaXBlcwogIyB1c2VkIGJ5IHN1YnByb2Nlc3MsIHNvIHdlIGhhdmUgdG8g
dXNlIHRoZSBuYXRpdmUgQVBJcyBkaXJlY3RseS4KLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzIn
OgoraWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgIGltcG9ydCBtc3ZjcnQK
ICAgICBpbXBvcnQgd2luMzJwaXBlCiAgICAgaW1wb3J0IHdpbjMyZmlsZQpAQCAtNzQsNyArNzQs
NyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAKICAgICAgICAgIyBTZWUgY29tbWVu
dCBpbiBpbXBvcnRzIGZvciB3aHkgd2UgbmVlZCB0aGUgd2luMzIgQVBJcyBhbmQgY2FuJ3QganVz
dCB1c2Ugc2VsZWN0LgogICAgICAgICAjIEZJWE1FOiB0aGVyZSBzaG91bGQgYmUgYSB3YXkgdG8g
Z2V0IHdpbjMyIHZzLiBjeWd3aW4gZnJvbSBwbGF0Zm9ybWluZm8uCi0gICAgICAgIHNlbGYuX3Vz
ZV93aW4zMl9hcGlzID0gc3lzLnBsYXRmb3JtID09ICd3aW4zMicKKyAgICAgICAgc2VsZi5fdXNl
X3dpbjMyX2FwaXMgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykKIAogICAgIGRlZiBu
YW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weQko
cmV2aXNpb24gMTkyNjk5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9w
cm9jZXNzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDEwIEBAIGNs
YXNzIFRlc3RTZXJ2ZXJQcm9jZXNzKHVuaXR0ZXN0LlRlc3RDYXMKICAgICAgICAgcHJvYyA9IHNl
cnZlcl9wcm9jZXNzLlNlcnZlclByb2Nlc3MocG9ydCwgJ3B5dGhvbicsIGNtZCkKICAgICAgICAg
cHJvYy53cml0ZSgnJykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2MucG9sbCgpLCBO
b25lKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2MucG9sbCgpLCAwKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLnBvbGwoKSwgTm9uZSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShwcm9jLmhhc19jcmFzaGVkKCkpCiAKICAgICAgICAgIyBjaGVjayB0aGF0
IGRvaW5nIGEgcmVhZCBhZnRlciBhbiBleHBpcmVkIGRlYWRsaW5lIHJldHVybnMKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkocmV2aXNpb24gMTkyNjk5KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTIg
QEAgZnJvbSB3ZWJraXRweS5wb3J0LmFwcGxlIGltcG9ydCBBcHBsZVBvcgogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKK3RyeToKKyAgICBpbXBvcnQgX3dpbnJlZworICAg
IGltcG9ydCB3aW4zMmNvbS5jbGllbnQKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfbG9nLndh
cm4oIk5vdCBydW5uaW5nIG9uIG5hdGl2ZSBXaW5kb3dzLiIpCisKIGNsYXNzIFdpblBvcnQoQXBw
bGVQb3J0KToKICAgICBwb3J0X25hbWUgPSAid2luIgogCkBAIC01MywxMyArNTksMzAgQEAgY2xh
c3MgV2luUG9ydChBcHBsZVBvcnQpOgogCiAgICAgQ1JBU0hfTE9HX1BSRUZJWCA9ICJDcmFzaExv
ZyIKIAotICAgIFBPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSA9ICIvJXMvU09GVFdBUkUvTWljcm9z
b2Z0L1dpbmRvd3MgTlQvQ3VycmVudFZlcnNpb24vQWVEZWJ1Zy8lcyIKLQotICAgIFdJTkRPV1Nf
RVJST1JfUkVQT1JUSU5HX0tFWSA9ICIvJXMvU09GVFdBUkUvTWljcm9zb2Z0L1dpbmRvd3MvV2lu
ZG93cyBFcnJvciBSZXBvcnRpbmcvJXMiCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgo
J3dpbicpOgorICAgICAgICBQT1NUX01PUlRFTV9ERUJVR0dFUl9LRVkgPSByJ1NPRlRXQVJFXE1p
Y3Jvc29mdFxXaW5kb3dzIE5UXEN1cnJlbnRWZXJzaW9uXEFlRGVidWcnCisgICAgICAgIFdPVzY0
X1BPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSA9IHInU09GVFdBUkVcV293NjQzMk5vZGVcTWljcm9z
b2Z0XFdpbmRvd3MgTlRcQ3VycmVudFZlcnNpb25cQWVEZWJ1ZycKKyAgICAgICAgV0lORE9XU19F
UlJPUl9SRVBPUlRJTkdfS0VZID0gcidTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93c1xXaW5kb3dz
IEVycm9yIFJlcG9ydGluZycKKyAgICAgICAgV09XNjRfV0lORE9XU19FUlJPUl9SRVBPUlRJTkdf
S0VZID0gcidTT0ZUV0FSRVxXb3c2NDMyTm9kZVxNaWNyb3NvZnRcV2luZG93c1xXaW5kb3dzIEVy
cm9yIFJlcG9ydGluZycKKyAgICAgICAgX0hLTE0gPSBfd2lucmVnLkhLRVlfTE9DQUxfTUFDSElO
RQorICAgICAgICBfSEtDVSA9IF93aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIKKyAgICAgICAgX1JF
R19EV09SRCA9IF93aW5yZWcuUkVHX0RXT1JECisgICAgICAgIF9SRUdfU1ogPSBfd2lucmVnLlJF
R19TWgorICAgIGVsc2U6CisgICAgICAgIFBPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSA9ICIvJXMv
U09GVFdBUkUvTWljcm9zb2Z0L1dpbmRvd3MgTlQvQ3VycmVudFZlcnNpb24vQWVEZWJ1Zy8lcyIK
KyAgICAgICAgV09XNjRfUE9TVF9NT1JURU1fREVCVUdHRVJfS0VZID0gIi8lcy9TT0ZUV0FSRS9X
b3c2NDMyTm9kZS9NaWNyb3NvZnQvV2luZG93cyBOVC9DdXJyZW50VmVyc2lvbi9BZURlYnVnLyVz
IgorICAgICAgICBXSU5ET1dTX0VSUk9SX1JFUE9SVElOR19LRVkgPSAiLyVzL1NPRlRXQVJFL01p
Y3Jvc29mdC9XaW5kb3dzL1dpbmRvd3MgRXJyb3IgUmVwb3J0aW5nLyVzIgorICAgICAgICBXT1c2
NF9XSU5ET1dTX0VSUk9SX1JFUE9SVElOR19LRVkgPSAiLyVzL1NPRlRXQVJFL1dvdzY0MzJOb2Rl
L01pY3Jvc29mdC9XaW5kb3dzL1dpbmRvd3MgRXJyb3IgUmVwb3J0aW5nLyVzIgorICAgICAgICBf
SEtMTSA9ICJIS0xNIgorICAgICAgICBfSEtDVSA9ICJIS0NVIgorICAgICAgICBfUkVHX0RXT1JE
ID0gIi1kIgorICAgICAgICBfUkVHX1NaID0gIi1zIgogCiAgICAgcHJldmlvdXNfZGVidWdnZXJf
dmFsdWVzID0ge30KKyAgICBwcmV2aW91c193b3c2NF9kZWJ1Z2dlcl92YWx1ZXMgPSB7fQogCiAg
ICAgcHJldmlvdXNfZXJyb3JfcmVwb3J0aW5nX3ZhbHVlcyA9IHt9CisgICAgcHJldmlvdXNfd293
NjRfZXJyb3JfcmVwb3J0aW5nX3ZhbHVlcyA9IHt9CiAKICAgICBkZWYgZG9fdGV4dF9yZXN1bHRz
X2RpZmZlcihzZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCk6CiAgICAgICAgICMgU2Fu
aXR5IHdhcyByZXN0b3JlZCBpbiBXSzIsIHNvIHdlIGRvbid0IG5lZWQgdGhpcyBoYWNrIHRoZXJl
LgpAQCAtMTYzLDIwICsxODYsMjUgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAgIGRl
ZiBfbnRzZF9sb2NhdGlvbihzZWxmKToKICAgICAgICAgaWYgJ1BST0dSQU1GSUxFUycgbm90IGlu
IG9zLmVudmlyb246CiAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBwb3NzaWJsZV9w
YXRocyA9IFtzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3MuZW52aXJvblsnUFJPR1JBTUZJTEVTJ10s
ICJXaW5kb3dzIEtpdHMiLCAiMTAiLCAiRGVidWdnZXJzIiwgIng2NCIsICJudHNkLmV4ZSIpLAor
ICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5qb2luKG9zLmVudmlyb25bJ1BST0dSQU1GSUxF
UyddLCAiV2luZG93cyBLaXRzIiwgIjguMSIsICJEZWJ1Z2dlcnMiLCAieDY0IiwgIm50c2QuZXhl
IiksCisgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3MuZW52aXJvblsnUFJPR1JB
TUZJTEVTJ10sICJXaW5kb3dzIEtpdHMiLCAiOC4wIiwgIkRlYnVnZ2VycyIsICJ4NjQiLCAibnRz
ZC5leGUiKV0KICAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdhcmNoaXRlY3R1cmUnKSA9PSAn
eDg2XzY0JzoKLSAgICAgICAgICAgIHBvc3NpYmxlX3BhdGhzID0gW3NlbGYuX2ZpbGVzeXN0ZW0u
am9pbihvcy5lbnZpcm9uWydQUk9HUkFNRklMRVMnXSwgIldpbmRvd3MgS2l0cyIsICIxMCIsICJE
ZWJ1Z2dlcnMiLCAieDY0IiwgIm50c2QuZXhlIiksCi0gICAgICAgICAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbS5qb2luKG9zLmVudmlyb25bJ1BST0dSQU1GSUxFUyddLCAiV2luZG93cyBLaXRzIiwg
IjguMSIsICJEZWJ1Z2dlcnMiLCAieDY0IiwgIm50c2QuZXhlIiksCi0gICAgICAgICAgICAgICAg
c2VsZi5fZmlsZXN5c3RlbS5qb2luKG9zLmVudmlyb25bJ1BST0dSQU1GSUxFUyddLCAiV2luZG93
cyBLaXRzIiwgIjguMCIsICJEZWJ1Z2dlcnMiLCAieDY0IiwgIm50c2QuZXhlIildCisgICAgICAg
ICAgICBwb3NzaWJsZV9wYXRocy5hcHBlbmQoc2VsZi5fZmlsZXN5c3RlbS5qb2luKCJ7MH0gKHg4
NikiLmZvcm1hdChvcy5lbnZpcm9uWydQUk9HUkFNRklMRVMnXSksICJXaW5kb3dzIEtpdHMiLCAi
MTAiLCAiRGVidWdnZXJzIiwgIng2NCIsICJudHNkLmV4ZSIpKQorICAgICAgICAgICAgcG9zc2li
bGVfcGF0aHMuYXBwZW5kKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbigiezB9ICh4ODYpIi5mb3JtYXQo
b3MuZW52aXJvblsnUFJPR1JBTUZJTEVTJ10pLCAiV2luZG93cyBLaXRzIiwgIjguMSIsICJEZWJ1
Z2dlcnMiLCAieDY0IiwgIm50c2QuZXhlIikpCisgICAgICAgICAgICBwb3NzaWJsZV9wYXRocy5h
cHBlbmQoc2VsZi5fZmlsZXN5c3RlbS5qb2luKCJ7MH0gKHg4NikiLmZvcm1hdChvcy5lbnZpcm9u
WydQUk9HUkFNRklMRVMnXSksICJXaW5kb3dzIEtpdHMiLCAiOC4wIiwgIkRlYnVnZ2VycyIsICJ4
NjQiLCAibnRzZC5leGUiKSkKKyAgICAgICAgICAgIHBvc3NpYmxlX3BhdGhzLmFwcGVuZChzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oInswfSAoeDg2KSIuZm9ybWF0KG9zLmVudmlyb25bJ1BST0dSQU1G
SUxFUyddKSwgIkRlYnVnZ2luZyBUb29scyBmb3IgV2luZG93cyAoeDY0KSIsICJudHNkLmV4ZSIp
KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9zc2libGVfcGF0aHMgPSBbc2VsZi5fZmls
ZXN5c3RlbS5qb2luKG9zLmVudmlyb25bJ1BST0dSQU1GSUxFUyddLCAiV2luZG93cyBLaXRzIiwg
IjEwIiwgIkRlYnVnZ2VycyIsICJ4ODYiLCAibnRzZC5leGUiKSwKLSAgICAgICAgICAgICAgICBz
ZWxmLl9maWxlc3lzdGVtLmpvaW4ob3MuZW52aXJvblsnUFJPR1JBTUZJTEVTJ10sICJXaW5kb3dz
IEtpdHMiLCAiOC4xIiwgIkRlYnVnZ2VycyIsICJ4ODYiLCAibnRzZC5leGUiKSwKLSAgICAgICAg
ICAgICAgICBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3MuZW52aXJvblsnUFJPR1JBTUZJTEVTJ10s
ICJXaW5kb3dzIEtpdHMiLCAiOC4wIiwgIkRlYnVnZ2VycyIsICJ4ODYiLCAibnRzZC5leGUiKSwK
LSAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3MuZW52aXJvblsnUFJPR1JB
TUZJTEVTJ10sICJEZWJ1Z2dpbmcgVG9vbHMgZm9yIFdpbmRvd3MgKHg4NikiLCAibnRzZC5leGUi
KV0KKyAgICAgICAgICAgIHBvc3NpYmxlX3BhdGhzLmFwcGVuZChzZWxmLl9maWxlc3lzdGVtLmpv
aW4ob3MuZW52aXJvblsnUFJPR1JBTUZJTEVTJ10sICJEZWJ1Z2dpbmcgVG9vbHMgZm9yIFdpbmRv
d3MgKHg4NikiLCAibnRzZC5leGUiKSkKICAgICAgICAgcG9zc2libGVfcGF0aHMuYXBwZW5kKHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihvcy5lbnZpcm9uWydTWVNURU1ST09UJ10sICJzeXN0ZW0zMiIs
ICJudHNkLmV4ZSIpKQogICAgICAgICBpZiAnUHJvZ3JhbVc2NDMyJyBpbiBvcy5lbnZpcm9uOgor
ICAgICAgICAgICAgcG9zc2libGVfcGF0aHMuYXBwZW5kKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihv
cy5lbnZpcm9uWydQcm9ncmFtVzY0MzInXSwgIldpbmRvd3MgS2l0cyIsICIxMCIsICJEZWJ1Z2dl
cnMiLCAieDY0IiwgIm50c2QuZXhlIikpCisgICAgICAgICAgICBwb3NzaWJsZV9wYXRocy5hcHBl
bmQoc2VsZi5fZmlsZXN5c3RlbS5qb2luKG9zLmVudmlyb25bJ1Byb2dyYW1XNjQzMiddLCAiV2lu
ZG93cyBLaXRzIiwgIjguMSIsICJEZWJ1Z2dlcnMiLCAieDY0IiwgIm50c2QuZXhlIikpCisgICAg
ICAgICAgICBwb3NzaWJsZV9wYXRocy5hcHBlbmQoc2VsZi5fZmlsZXN5c3RlbS5qb2luKG9zLmVu
dmlyb25bJ1Byb2dyYW1XNjQzMiddLCAiV2luZG93cyBLaXRzIiwgIjguMCIsICJEZWJ1Z2dlcnMi
LCAieDY0IiwgIm50c2QuZXhlIikpCiAgICAgICAgICAgICBwb3NzaWJsZV9wYXRocy5hcHBlbmQo
c2VsZi5fZmlsZXN5c3RlbS5qb2luKG9zLmVudmlyb25bJ1Byb2dyYW1XNjQzMiddLCAiRGVidWdn
aW5nIFRvb2xzIGZvciBXaW5kb3dzICh4NjQpIiwgIm50c2QuZXhlIikpCiAgICAgICAgIGZvciBw
YXRoIGluIHBvc3NpYmxlX3BhdGhzOgogICAgICAgICAgICAgZXhwYW5kZWRfcGF0aCA9IHNlbGYu
X2ZpbGVzeXN0ZW0uZXhwYW5kdXNlcihwYXRoKQorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiQ29u
c2lkZXJpbmcgJyVzJyIgJSBleHBhbmRlZF9wYXRoKQogICAgICAgICAgICAgaWYgc2VsZi5fZmls
ZXN5c3RlbS5leGlzdHMoZXhwYW5kZWRfcGF0aCk6CiAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1
ZygiVXNpbmcgbnRzZCBsb2NhdGVkIGluICclcyciICUgcGF0aCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXhwYW5kZWRfcGF0aApAQCAtMTkzLDQyICsyMjEsNzkgQEAgY2xhc3MgV2luUG9ydChB
cHBsZVBvcnQpOgogICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShjb21t
YW5kX2ZpbGUsIGNvbW1hbmRzKQogICAgICAgICByZXR1cm4gY29tbWFuZF9maWxlCiAKLSAgICBk
ZWYgcmVhZF9yZWdpc3RyeV9zdHJpbmcoc2VsZiwgcmVnX3BhdGgsIGFyY2gsIHJvb3QsIGtleSk6
Ci0gICAgICAgIHJlZ2lzdHJ5X2tleSA9IHJlZ19wYXRoICUgKHJvb3QsIGtleSkKLSAgICAgICAg
cmVhZF9yZWdpc3RyeV9jb21tYW5kID0gWyJyZWd0b29sIiwgYXJjaCwgImdldCIsIHJlZ2lzdHJ5
X2tleV0KLSAgICAgICAgdmFsdWUgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQocmVhZF9y
ZWdpc3RyeV9jb21tYW5kLCBlcnJvcl9oYW5kbGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCi0g
ICAgICAgIHJldHVybiB2YWx1ZS5yc3RyaXAoKQorICAgIGRlZiByZWFkX3JlZ2lzdHJ5X3ZhbHVl
KHNlbGYsIHJlZ19wYXRoLCBhcmNoLCByb290LCBrZXkpOgorICAgICAgICBpZiBzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgICAgICBfbG9nLmRlYnVnKCJUcnlpbmcgdG8g
cmVhZCAlc1xcJXMiICUgKHJlZ19wYXRoLCBrZXkpKQorICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IF93aW5yZWcuT3BlbktleShyb290LCByZWdfcGF0aCkK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IF93aW5yZWcuUXVlcnlWYWx1ZUV4KHJlZ2lzdHJ5X2tl
eSwga2V5KQorICAgICAgICAgICAgICAgIF93aW5yZWcuQ2xvc2VLZXkocmVnaXN0cnlfa2V5KQor
ICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvciBhcyBleDoKKyAgICAgICAgICAgICAgICBf
bG9nLmRlYnVnKCJVbmFibGUgdG8gcmVhZCAlc1xcJXM6ICVzIiAlIChyZWdfcGF0aCwga2V5LCBz
dHIoZXgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gWycnLCBzZWxmLl9SRUdfU1pdCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSByZWdfcGF0aCAlIChyb290LCBr
ZXkpCisgICAgICAgICAgICBfbG9nLmRlYnVnKCJSZWFkaW5nICVzIiAlIChyZWdpc3RyeV9rZXkp
KQorICAgICAgICAgICAgcmVhZF9yZWdpc3RyeV9jb21tYW5kID0gWyJyZWd0b29sIiwgYXJjaCwg
ImdldCIsIHJlZ2lzdHJ5X2tleV0KKyAgICAgICAgICAgIGludF92YWx1ZSA9IHNlbGYuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChyZWFkX3JlZ2lzdHJ5X2NvbW1hbmQsIGVycm9yX2hhbmRsZXI9RXhl
Y3V0aXZlLmlnbm9yZV9lcnJvcikKKyAgICAgICAgICAgICMgcmVndG9vbCBkb2Vzbid0IHJldHVy
biB0aGUgdHlwZSBvZiB0aGUgZW50cnksIHNvIG5lZWQgdGhpcyB1Z2x5IGhhY2s6CisgICAgICAg
ICAgICBpZiByZWdfcGF0aCBpbiAoc2VsZi5XSU5ET1dTX0VSUk9SX1JFUE9SVElOR19LRVksIHNl
bGYuV09XNjRfV0lORE9XU19FUlJPUl9SRVBPUlRJTkdfS0VZKToKKyAgICAgICAgICAgICAgICBf
bG9nLmRlYnVnKCJJIGdvdCB7MH0iLmZvcm1hdChpbnRfdmFsdWUpKQorICAgICAgICAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbaW50KGludF92YWx1ZSksIHNlbGYu
X1JFR19EV09SRF0KKyAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gWzAsIHNlbGYuX1JFR19EV09SRF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgdmFsdWUgPSBbaW50X3ZhbHVlLnJzdHJpcCgpLCBzZWxmLl9SRUdfU1pdCiAKLSAg
ICBkZWYgd3JpdGVfcmVnaXN0cnlfdmFsdWUoc2VsZiwgcmVnX3BhdGgsIGFyY2gsIHJvb3QsIGtl
eSwgcmVnVHlwZSwgdmFsdWUpOgotICAgICAgICByZWdpc3RyeV9rZXkgPSByZWdfcGF0aCAlIChy
b290LCBrZXkpCisgICAgICAgIF9sb2cuZGVidWcoIkkgZ290IGJhY2sgKHswfSkgb2YgdHlwZSAo
ezF9KSIuZm9ybWF0KHZhbHVlWzBdLCB2YWx1ZVsxXSkpCisgICAgICAgIHJldHVybiB2YWx1ZQog
Ci0gICAgICAgIF9sb2cuZGVidWcoIldyaXRpbmcgdG8gJXMiICUgcmVnaXN0cnlfa2V5KQorICAg
IGRlZiB3cml0ZV9yZWdpc3RyeV92YWx1ZShzZWxmLCByZWdfcGF0aCwgYXJjaCwgcm9vdCwga2V5
LCByZWdUeXBlLCB2YWx1ZSk6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3
aW4nKToKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIlRyeWluZyB0byB3cml0ZSAlc1xcJXMgPSAl
cyIgJSAocmVnX3BhdGgsIGtleSwgdmFsdWUpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgICAgIHJlZ2lzdHJ5X2tleSA9IF93aW5yZWcuT3BlbktleShyb290LCByZWdfcGF0aCwgMCwg
X3dpbnJlZy5LRVlfV1JJVEUpCisgICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yOgorICAg
ICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiS2V5IGRv
ZXNuJ3QgZXhpc3QgLS0gbXVzdCBjcmVhdGUgaXQuIikKKyAgICAgICAgICAgICAgICAgICAgcmVn
aXN0cnlfa2V5ID0gX3dpbnJlZy5DcmVhdGVLZXlFeChyb290LCByZWdfcGF0aCwgMCwgX3dpbnJl
Zy5LRVlfV1JJVEUpCisgICAgICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvciBhcyBleDoK
KyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiRXJyb3Igc2V0dGluZyAoJXMpICVzXGtl
eTogJXMgdG8gdmFsdWU6ICVzLiAgRXJyb3I9JXMuIiAlIChhcmNoLCByb290LCBrZXksIHZhbHVl
LCBzdHIoZXgpKSkKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiWW91IG1hbnkgbmVl
ZCB0byBhZGp1c3QgcGVybWlzc2lvbnMgb24gdGhlICVzXFwlcyBrZXkuIiAlIChyZWdfcGF0aCwg
a2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgIF9s
b2cuZGVidWcoIldyaXRpbmcgezB9IG9mIHR5cGUgezF9IHRvIHsyfVxcezN9Ii5mb3JtYXQodmFs
dWUsIHJlZ1R5cGUsIHJlZ2lzdHJ5X2tleSwga2V5KSkKKyAgICAgICAgICAgIF93aW5yZWcuU2V0
VmFsdWVFeChyZWdpc3RyeV9rZXksIGtleSwgMCwgcmVnVHlwZSwgdmFsdWUpCisgICAgICAgICAg
ICBfd2lucmVnLkNsb3NlS2V5KHJlZ2lzdHJ5X2tleSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJlZ2lzdHJ5X2tleSA9IHJlZ19wYXRoICUgKHJvb3QsIGtleSkKKyAgICAgICAgICAgIF9s
b2cuZGVidWcoIldyaXRpbmcgdG8gJXMiICUgcmVnaXN0cnlfa2V5KQogCi0gICAgICAgIHNldF9y
ZWdfdmFsdWVfY29tbWFuZCA9IFsicmVndG9vbCIsIGFyY2gsICJzZXQiLCByZWdUeXBlLCBzdHIo
cmVnaXN0cnlfa2V5KSwgc3RyKHZhbHVlKV0KLSAgICAgICAgcmMgPSBzZWxmLl9leGVjdXRpdmUu
cnVuX2NvbW1hbmQoc2V0X3JlZ192YWx1ZV9jb21tYW5kLCByZXR1cm5fZXhpdF9jb2RlPVRydWUp
Ci0gICAgICAgIGlmIHJjID09IDI6Ci0gICAgICAgICAgICBhZGRfcmVnX3ZhbHVlX2NvbW1hbmQg
PSBbInJlZ3Rvb2wiLCBhcmNoLCAiYWRkIiwgcmVnVHlwZSwgc3RyKHJlZ2lzdHJ5X2tleSldCi0g
ICAgICAgICAgICByYyA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChhZGRfcmVnX3ZhbHVl
X2NvbW1hbmQsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKLSAgICAgICAgICAgIGlmIHJjID09IDA6
Ci0gICAgICAgICAgICAgICAgcmMgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoc2V0X3Jl
Z192YWx1ZV9jb21tYW5kLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpCi0gICAgICAgIGlmIHJjOgot
ICAgICAgICAgICAgX2xvZy53YXJuKCJFcnJvciBzZXR0aW5nICglcykgJXNca2V5OiAlcyB0byB2
YWx1ZTogJXMuICBFcnJvcj0lcy4iICUgKGFyY2gsIHJvb3QsIGtleSwgdmFsdWUsIHN0cihyYykp
KQotICAgICAgICAgICAgX2xvZy53YXJuKCJZb3UgbWFueSBuZWVkIHRvIGFkanVzdCBwZXJtaXNz
aW9ucyBvbiB0aGUgJXMga2V5LiIgJSByZWdpc3RyeV9rZXkpCi0gICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgICAgIHNldF9yZWdfdmFsdWVfY29tbWFuZCA9IFsicmVndG9vbCIsIGFy
Y2gsICJzZXQiLCByZWdUeXBlLCBzdHIocmVnaXN0cnlfa2V5KSwgc3RyKHZhbHVlKV0KKyAgICAg
ICAgICAgIHJjID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHNldF9yZWdfdmFsdWVfY29t
bWFuZCwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQorICAgICAgICAgICAgaWYgcmMgPT0gMjoKKyAg
ICAgICAgICAgICAgICBhZGRfcmVnX3ZhbHVlX2NvbW1hbmQgPSBbInJlZ3Rvb2wiLCBhcmNoLCAi
YWRkIiwgcmVnVHlwZSwgc3RyKHJlZ2lzdHJ5X2tleSldCisgICAgICAgICAgICAgICAgcmMgPSBz
ZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoYWRkX3JlZ192YWx1ZV9jb21tYW5kLCByZXR1cm5f
ZXhpdF9jb2RlPVRydWUpCisgICAgICAgICAgICAgICAgaWYgcmMgPT0gMDoKKyAgICAgICAgICAg
ICAgICAgICAgcmMgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoc2V0X3JlZ192YWx1ZV9j
b21tYW5kLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpCisgICAgICAgICAgICBpZiByYzoKKyAgICAg
ICAgICAgICAgICBfbG9nLndhcm4oIkVycm9yIHNldHRpbmcgKCVzKSAlc1xrZXk6ICVzIHRvIHZh
bHVlOiAlcy4gIEVycm9yPSVzLiIgJSAoYXJjaCwgcm9vdCwga2V5LCB2YWx1ZSwgc3RyKHJjKSkp
CisgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJZb3UgbWFueSBuZWVkIHRvIGFkanVzdCBwZXJt
aXNzaW9ucyBvbiB0aGUgJXMga2V5LiIgJSByZWdpc3RyeV9rZXkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCiAKICAgICAgICAgIyBPbiBXaW5kb3dzIFZpc3RhLzcgd2l0aCBVQUMgZW5h
YmxlZCwgcmVndG9vbCB3aWxsIGZhaWwgdG8gbW9kaWZ5IHRoZSByZWdpc3RyeSwgYnV0IHdpbGwg
c3RpbGwKICAgICAgICAgIyByZXR1cm4gYSBzdWNjZXNzZnVsIGV4aXQgY29kZS4gU28gd2UgZG91
YmxlLWNoZWNrIGhlcmUgdGhhdCB0aGUgdmFsdWUgd2UgdHJpZWQgdG8gd3JpdGUgdG8gdGhlCiAg
ICAgICAgICMgcmVnaXN0cnkgd2FzIHJlYWxseSB3cml0dGVuLgotICAgICAgICBpZiBzZWxmLnJl
YWRfcmVnaXN0cnlfc3RyaW5nKHJlZ19wYXRoLCBhcmNoLCByb290LCBrZXkpICE9IHN0cih2YWx1
ZSk6Ci0gICAgICAgICAgICBfbG9nLndhcm4oIlJlZ3Rvb2wgcmVwb3J0ZWQgc3VjY2VzcywgYnV0
IHZhbHVlIG9mIGtleSAlcyBkaWQgbm90IGNoYW5nZS4iICUga2V5KQotICAgICAgICAgICAgX2xv
Zy53YXJuKCJZb3UgbWFueSBuZWVkIHRvIGFkanVzdCBwZXJtaXNzaW9ucyBvbiB0aGUgJXMga2V5
LiIgJSByZWdpc3RyeV9rZXkpCisgICAgICAgIGNoZWNrX3ZhbHVlID0gc2VsZi5yZWFkX3JlZ2lz
dHJ5X3ZhbHVlKHJlZ19wYXRoLCBhcmNoLCByb290LCBrZXkpCisgICAgICAgIGlmIGNoZWNrX3Zh
bHVlWzBdICE9IHZhbHVlIG9yIGNoZWNrX3ZhbHVlWzFdICE9IHJlZ1R5cGU6CisgICAgICAgICAg
ICBfbG9nLndhcm4oIlJlZyB1cGRhdGUgcmVwb3J0ZWQgc3VjY2VzcywgYnV0IHZhbHVlIG9mIGtl
eSAlcyBkaWQgbm90IGNoYW5nZS4iICUga2V5KQorICAgICAgICAgICAgX2xvZy53YXJuKCJXYW50
ZWQgdG8gc2V0IGl0IHRvICh7MH0sIHsxfSksIGJ1dCBnb3QgezJ9KSIuZm9ybWF0KHZhbHVlLCBy
ZWdUeXBlLCBjaGVja192YWx1ZSkpCisgICAgICAgICAgICBfbG9nLndhcm4oIllvdSBtYW55IG5l
ZWQgdG8gYWRqdXN0IHBlcm1pc3Npb25zIG9uIHRoZSAlc1xcJXMga2V5LiIgJSAocmVnX3BhdGgs
IGtleSkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICByZXR1cm4gVHJ1ZQog
Ci0gICAgZGVmIHdyaXRlX3JlZ2lzdHJ5X3N0cmluZyhzZWxmLCByZWdfcGF0aCwgYXJjaCwgcm9v
dCwga2V5LCB2YWx1ZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLndyaXRlX3JlZ2lzdHJ5X3ZhbHVl
KHJlZ19wYXRoLCBhcmNoLCByb290LCBrZXksICItcyIsIHZhbHVlKQotCiAgICAgZGVmIHNldHVw
X2NyYXNoX2xvZ19zYXZpbmcoc2VsZik6CiAgICAgICAgIGlmICdfTlRfU1lNQk9MX1BBVEgnIG5v
dCBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJUaGUgX05UX1NZTUJP
TF9QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQuIFVzaW5nIE1pY3Jvc29mdCBT
eW1ib2wgU2VydmVyLiIpCkBAIC0yNDYsMjcgKzMxMSwzNSBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxl
UG9ydCk6CiAgICAgICAgIGlmIG5vdCBjb21tYW5kX2ZpbGU6CiAgICAgICAgICAgICByZXR1cm4g
Tm9uZQogICAgICAgICBkZWJ1Z2dlcl9vcHRpb25zID0gJyJ7MH0iIC1wICVsZCAtZSAlbGQgLWcg
LW5vaW8gLWxpbmVzIC1jZiAiezF9IicuZm9ybWF0KGN5Z3BhdGgobnRzZF9wYXRoKSwgY3lncGF0
aChjb21tYW5kX2ZpbGUpKQotICAgICAgICByZWdpc3RyeV9zZXR0aW5ncyA9IHsnRGVidWdnZXIn
OiBkZWJ1Z2dlcl9vcHRpb25zLCAnQXV0byc6ICIxIn0KLSAgICAgICAgZm9yIGtleSBpbiByZWdp
c3RyeV9zZXR0aW5nczoKKyAgICAgICAgcmVnaXN0cnlfc2V0dGluZ3MgPSB7J0RlYnVnZ2VyJzog
W2RlYnVnZ2VyX29wdGlvbnMsIHNlbGYuX1JFR19TWl0sICdBdXRvJzogWyIxIiwgc2VsZi5fUkVH
X1NaXX0KKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gcmVnaXN0cnlfc2V0dGluZ3MuaXRlcml0
ZW1zKCk6CiAgICAgICAgICAgICBmb3IgYXJjaCBpbiBbIi0td293MzIiLCAiLS13b3c2NCJdOgot
ICAgICAgICAgICAgICAgIHNlbGYucHJldmlvdXNfZGVidWdnZXJfdmFsdWVzWyhhcmNoLCAiSEtM
TSIsIGtleSldID0gc2VsZi5yZWFkX3JlZ2lzdHJ5X3N0cmluZyhzZWxmLlBPU1RfTU9SVEVNX0RF
QlVHR0VSX0tFWSwgYXJjaCwgIkhLTE0iLCBrZXkpCi0gICAgICAgICAgICAgICAgc2VsZi53cml0
ZV9yZWdpc3RyeV9zdHJpbmcoc2VsZi5QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVksIGFyY2gsICJI
S0xNIiwga2V5LCByZWdpc3RyeV9zZXR0aW5nc1trZXldKQorICAgICAgICAgICAgICAgIHNlbGYu
cHJldmlvdXNfZGVidWdnZXJfdmFsdWVzWyhhcmNoLCBzZWxmLl9IS0xNLCBrZXkpXSA9IHNlbGYu
cmVhZF9yZWdpc3RyeV92YWx1ZShzZWxmLlBPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSwgYXJjaCwg
c2VsZi5fSEtMTSwga2V5KQorICAgICAgICAgICAgICAgIHNlbGYucHJldmlvdXNfd293NjRfZGVi
dWdnZXJfdmFsdWVzWyhhcmNoLCBzZWxmLl9IS0xNLCBrZXkpXSA9IHNlbGYucmVhZF9yZWdpc3Ry
eV92YWx1ZShzZWxmLldPVzY0X1BPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSwgYXJjaCwgc2VsZi5f
SEtMTSwga2V5KQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlfdmFsdWUoc2Vs
Zi5QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVksIGFyY2gsIHNlbGYuX0hLTE0sIGtleSwgdmFsdWVb
MV0sIHZhbHVlWzBdKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlfdmFsdWUo
c2VsZi5XT1c2NF9QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVksIGFyY2gsIHNlbGYuX0hLTE0sIGtl
eSwgdmFsdWVbMV0sIHZhbHVlWzBdKQogCiAgICAgZGVmIHJlc3RvcmVfY3Jhc2hfbG9nX3Nhdmlu
ZyhzZWxmKToKLSAgICAgICAgZm9yIGtleSBpbiBzZWxmLnByZXZpb3VzX2RlYnVnZ2VyX3ZhbHVl
czoKLSAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlfc3RyaW5nKHNlbGYuUE9TVF9NT1JU
RU1fREVCVUdHRVJfS0VZLCBrZXlbMF0sIGtleVsxXSwga2V5WzJdLCBzZWxmLnByZXZpb3VzX2Rl
YnVnZ2VyX3ZhbHVlc1trZXldKQorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLnByZXZp
b3VzX2RlYnVnZ2VyX3ZhbHVlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYud3JpdGVf
cmVnaXN0cnlfdmFsdWUoc2VsZi5QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVksIGtleVswXSwga2V5
WzFdLCBrZXlbMl0sIHZhbHVlWzFdLCB2YWx1ZVswXSkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUg
aW4gc2VsZi5wcmV2aW91c193b3c2NF9kZWJ1Z2dlcl92YWx1ZXMuaXRlcml0ZW1zKCk6CisgICAg
ICAgICAgICBzZWxmLndyaXRlX3JlZ2lzdHJ5X3ZhbHVlKHNlbGYuV09XNjRfUE9TVF9NT1JURU1f
REVCVUdHRVJfS0VZLCBrZXlbMF0sIGtleVsxXSwga2V5WzJdLCB2YWx1ZVsxXSwgdmFsdWVbMF0p
CiAKICAgICBkZWYgcHJldmVudF9lcnJvcl9kaWFsb2dzKHNlbGYpOgotICAgICAgICByZWdpc3Ry
eV9zZXR0aW5ncyA9IHsnRG9udFNob3dVSSc6IDEsICdEaXNhYmxlZCc6IDF9Ci0gICAgICAgIGZv
ciBrZXkgaW4gcmVnaXN0cnlfc2V0dGluZ3M6Ci0gICAgICAgICAgICBmb3Igcm9vdCBpbiBbIkhL
TE0iLCAiSEtDVSJdOgorICAgICAgICByZWdpc3RyeV9zZXR0aW5ncyA9IHsnRG9udFNob3dVSSc6
IFsxLCBzZWxmLl9SRUdfRFdPUkRdLCAnRGlzYWJsZWQnOiBbMSwgc2VsZi5fUkVHX0RXT1JEXX0K
KyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gcmVnaXN0cnlfc2V0dGluZ3MuaXRlcml0ZW1zKCk6
CisgICAgICAgICAgICBmb3Igcm9vdCBpbiBbc2VsZi5fSEtMTSwgc2VsZi5fSEtDVV06CiAgICAg
ICAgICAgICAgICAgZm9yIGFyY2ggaW4gWyItLXdvdzMyIiwgIi0td293NjQiXToKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5wcmV2aW91c19lcnJvcl9yZXBvcnRpbmdfdmFsdWVzWyhhcmNoLCBy
b290LCBrZXkpXSA9IHNlbGYucmVhZF9yZWdpc3RyeV9zdHJpbmcoc2VsZi5XSU5ET1dTX0VSUk9S
X1JFUE9SVElOR19LRVksIGFyY2gsIHJvb3QsIGtleSkKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi53cml0ZV9yZWdpc3RyeV92YWx1ZShzZWxmLldJTkRPV1NfRVJST1JfUkVQT1JUSU5HX0tFWSwg
YXJjaCwgcm9vdCwga2V5LCAiLWQiLCByZWdpc3RyeV9zZXR0aW5nc1trZXldKQorICAgICAgICAg
ICAgICAgICAgICBzZWxmLnByZXZpb3VzX2Vycm9yX3JlcG9ydGluZ192YWx1ZXNbKGFyY2gsIHJv
b3QsIGtleSldID0gc2VsZi5yZWFkX3JlZ2lzdHJ5X3ZhbHVlKHNlbGYuV0lORE9XU19FUlJPUl9S
RVBPUlRJTkdfS0VZLCBhcmNoLCByb290LCBrZXkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
cHJldmlvdXNfd293NjRfZXJyb3JfcmVwb3J0aW5nX3ZhbHVlc1soYXJjaCwgcm9vdCwga2V5KV0g
PSBzZWxmLnJlYWRfcmVnaXN0cnlfdmFsdWUoc2VsZi5XT1c2NF9XSU5ET1dTX0VSUk9SX1JFUE9S
VElOR19LRVksIGFyY2gsIHJvb3QsIGtleSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0
ZV9yZWdpc3RyeV92YWx1ZShzZWxmLldJTkRPV1NfRVJST1JfUkVQT1JUSU5HX0tFWSwgYXJjaCwg
cm9vdCwga2V5LCB2YWx1ZVsxXSwgdmFsdWVbMF0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
d3JpdGVfcmVnaXN0cnlfdmFsdWUoc2VsZi5XT1c2NF9XSU5ET1dTX0VSUk9SX1JFUE9SVElOR19L
RVksIGFyY2gsIHJvb3QsIGtleSwgdmFsdWVbMV0sIHZhbHVlWzBdKQogCiAgICAgZGVmIGFsbG93
X2Vycm9yX2RpYWxvZ3Moc2VsZik6Ci0gICAgICAgIGZvciBrZXkgaW4gc2VsZi5wcmV2aW91c19l
cnJvcl9yZXBvcnRpbmdfdmFsdWVzOgotICAgICAgICAgICAgc2VsZi53cml0ZV9yZWdpc3RyeV92
YWx1ZShzZWxmLldJTkRPV1NfRVJST1JfUkVQT1JUSU5HX0tFWSwga2V5WzBdLCBrZXlbMV0sIGtl
eVsyXSwgIi1kIiwgc2VsZi5wcmV2aW91c19lcnJvcl9yZXBvcnRpbmdfdmFsdWVzW2tleV0pCisg
ICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucHJldmlvdXNfZXJyb3JfcmVwb3J0aW5nX3Zh
bHVlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlfdmFsdWUo
c2VsZi5XSU5ET1dTX0VSUk9SX1JFUE9SVElOR19LRVksIGtleVswXSwga2V5WzFdLCBrZXlbMl0s
IHZhbHVlWzFdLCB2YWx1ZVswXSkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5wcmV2
aW91c193b3c2NF9lcnJvcl9yZXBvcnRpbmdfdmFsdWVzLml0ZXJpdGVtcygpOgorICAgICAgICAg
ICAgc2VsZi53cml0ZV9yZWdpc3RyeV92YWx1ZShzZWxmLldPVzY0X1dJTkRPV1NfRVJST1JfUkVQ
T1JUSU5HX0tFWSwga2V5WzBdLCBrZXlbMV0sIGtleVsyXSwgdmFsdWVbMV0sIHZhbHVlWzBdKQog
CiAgICAgZGVmIGRlbGV0ZV9zZW1fbG9ja3Moc2VsZik6CiAgICAgICAgIG9zLnN5c3RlbSgicm0g
LXJmIC9kZXYvc2htL3NlbS4qIikKQEAgLTMzMSwyMSArNDA0LDMzIEBAIGNsYXNzIFdpblBvcnQo
QXBwbGVQb3J0KToKIAogICAgIGRlZiBmaW5kX3N5c3RlbV9waWQoc2VsZiwgbmFtZSwgcGlkKToK
ICAgICAgICAgc3lzdGVtX3BpZCA9IGludChwaWQpCi0gICAgICAgICMgV2luZG93cyBhbmQgQ3ln
d2luIFBJRHMgYXJlIG5vdCB0aGUgc2FtZS4gIFdlIG5lZWQgdG8gZmluZCB0aGUgV2luZG93cwot
ICAgICAgICAjIFBJRCBmb3Igb3VyIEN5Z3dpbiBwcm9jZXNzIHNvIHdlIGNhbiBtYXRjaCBpdCBs
YXRlciB0byBhbnkgY3Jhc2gKLSAgICAgICAgIyBmaWxlcyB3ZSBlbmQgdXAgY3JlYXRpbmcgKHdo
aWNoIHdpbGwgYmUgdGFnZ2VkIHdpdGggdGhlIFdpbmRvd3MgUElEKQotICAgICAgICBwc19wcm9j
ZXNzID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsncHMnLCAnLWUnXSwgZXJyb3JfaGFu
ZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKQotICAgICAgICBmb3IgbGluZSBpbiBwc19wcm9j
ZXNzLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIHRva2VucyA9IGxpbmUuc3RyaXAoKS5zcGxp
dCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY3BpZCwgcHBpZCwgcGdpZCwg
d2lucGlkLCB0dHksIHVpZCwgc3RpbWUsIHByb2Nlc3NfbmFtZSA9IHRva2VucwotICAgICAgICAg
ICAgICAgIGlmIHByb2Nlc3NfbmFtZS5lbmRzd2l0aChuYW1lKToKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fZXhlY3V0aXZlLnBpZF90b19zeXN0ZW1fcGlkW2ludChjcGlkKV0gPSBpbnQod2lu
cGlkKQotICAgICAgICAgICAgICAgICAgICBpZiBpbnQocGlkKSA9PSBpbnQoY3BpZCk6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fcGlkID0gaW50KHdpbnBpZCkKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAg
ICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6Cisg
ICAgICAgICAgICAjIFdpbmRvd3MgYW5kIEN5Z3dpbiBQSURzIGFyZSBub3QgdGhlIHNhbWUuICBX
ZSBuZWVkIHRvIGZpbmQgdGhlIFdpbmRvd3MKKyAgICAgICAgICAgICMgUElEIGZvciBvdXIgQ3ln
d2luIHByb2Nlc3Mgc28gd2UgY2FuIG1hdGNoIGl0IGxhdGVyIHRvIGFueSBjcmFzaAorICAgICAg
ICAgICAgIyBmaWxlcyB3ZSBlbmQgdXAgY3JlYXRpbmcgKHdoaWNoIHdpbGwgYmUgdGFnZ2VkIHdp
dGggdGhlIFdpbmRvd3MgUElEKQorICAgICAgICAgICAgcHNfcHJvY2VzcyA9IHNlbGYuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbJ3BzJywgJy1lJ10sIGVycm9yX2hhbmRsZXI9RXhlY3V0aXZlLmln
bm9yZV9lcnJvcikKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHBzX3Byb2Nlc3Muc3BsaXRsaW5l
cygpOgorICAgICAgICAgICAgICAgIHRva2VucyA9IGxpbmUuc3RyaXAoKS5zcGxpdCgpCisgICAg
ICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjcGlkLCBwcGlkLCBwZ2lkLCB3
aW5waWQsIHR0eSwgdWlkLCBzdGltZSwgcHJvY2Vzc19uYW1lID0gdG9rZW5zCisgICAgICAgICAg
ICAgICAgICAgIGlmIHByb2Nlc3NfbmFtZS5lbmRzd2l0aChuYW1lKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5waWRfdG9fc3lzdGVtX3BpZFtpbnQoY3BpZCldID0g
aW50KHdpbnBpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGludChwaWQpID09IGludChj
cGlkKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fcGlkID0gaW50KHdpbnBp
ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0
IFZhbHVlRXJyb3IsIGU6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHdtaSA9IHdpbjMyY29tLmNsaWVudC5HZXRPYmplY3QoJ3dpbm1nbXRzOicp
CisgICAgICAgICAgICBfbG9nLmRlYnVnKCdRdWVyeWluZyBXTUkgd2l0aCAiJXswfSUiJy5mb3Jt
YXQobmFtZSkpCisgICAgICAgICAgICBwcm9jcyA9IHdtaS5FeGVjUXVlcnkoJ1NlbGVjdCAqIGZy
b20gd2luMzJfcHJvY2VzcyB3aGVyZSBuYW1lIGxpa2UgIiV7MH0lIicuZm9ybWF0KG5hbWUpKQor
ICAgICAgICAgICAgZm9yIHByb2MgaW4gcHJvY3M6CisgICAgICAgICAgICAgICAgc2VsZi5fZXhl
Y3V0aXZlLnBpZF90b19zeXN0ZW1fcGlkW2ludChwcm9jLlByb2Nlc3NJZCldID0gaW50KHByb2Mu
UHJvY2Vzc0lkKQorICAgICAgICAgICAgICAgIF9sb2cuZGVidWcoIkkgc2VlIHswfTogezF9Ii5m
b3JtYXQocHJvYy5OYW1lLCBwcm9jLlByb2Nlc3NJZCkpCisgICAgICAgICAgICAgICAgaWYgaW50
KHBpZCkgPT0gaW50KHByb2MuUHJvY2Vzc0lkKToKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVt
X3BpZCA9IGludChwcm9jLlByb2Nlc3NJZCkKKyAgICAgICAgICAgICAgICBicmVhawogCiAgICAg
ICAgIHJldHVybiBzeXN0ZW1fcGlkCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9tYWluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5CShyZXZpc2lvbiAxOTI2OTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFp
bi5weQkod29ya2luZyBjb3B5KQpAQCAtNTIsMTEgKzUyLDExIEBAIGRlZiBtYWluKCk6CiAgICAg
dGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1Njcmlw
dHMnKSwgJ3dlYmtpdHB5JykKIAogICAgICMgVGhlcmUgaXMgbm8gV2ViS2l0MiBvbiBXaW5kb3dz
LCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJ1biBXZWJLaXQyIHVuaXR0ZXN0cyBvbiBpdC4KLSAgICBp
ZiBub3Qgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6CisgICAgaWYgbm90IChz
eXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4n
KToKICAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Nv
dXJjZScsICdXZWJLaXQyJywgJ1NjcmlwdHMnKSwgJ3dlYmtpdDInKQogCiAgICAgdGVzdGVyLnNr
aXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSBy
ZWFsbHksIHJlYWxseSwgc2xvdycsIDMxODE4KQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2lu
MzInOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgdGVz
dGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQnLCAnd2Via2l0cHkuY29tbW9uLmNv
bmZpZycsICd3ZWJraXRweS50b29sJyksICdmYWlsIGhvcnJpYmx5IG9uIHdpbjMyJywgNTQ1MjYp
CiAKICAgICAjIFRoaXMgb25seSBuZWVkcyB0byBydW4gb24gVW5peCwgc28gZG9uJ3Qgd29ycnkg
YWJvdXQgd2luMzIgZm9yIG5vdy4KQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBUZXN0ZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZ2VuZXJhdGUgY29kZSBjb3Zl
cmFnZSBpbmZvIChyZXF1aXJlcyBodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY292ZXJhZ2Up
JykKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1pJywgJy0taW50ZWdyYXRpb24tdGVzdHMn
LCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdydW4gaW50ZWdyYXRpb24gdGVzdHMgYXMgd2VsbCBhcyB1bml0IHRlc3Rz
JyksCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaicsICctLWNoaWxkLXByb2Nlc3Nlcycs
IGFjdGlvbj0nc3RvcmUnLCB0eXBlPSdpbnQnLCBkZWZhdWx0PSgxIGlmIHN5cy5wbGF0Zm9ybSA9
PSAnd2luMzInIGVsc2UgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpKSwKKyAgICAgICAgcGFy
c2VyLmFkZF9vcHRpb24oJy1qJywgJy0tY2hpbGQtcHJvY2Vzc2VzJywgYWN0aW9uPSdzdG9yZScs
IHR5cGU9J2ludCcsIGRlZmF1bHQ9KDEgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicp
IGVsc2UgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0nbnVtYmVyIG9mIHRlc3RzIHRvIHJ1biBpbiBwYXJhbGxlbCAoZGVmYXVsdD0l
ZGVmYXVsdCknKQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wYXNzLXRocm91
Z2gnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdiZSBkZWJ1Z2dlciBmcmllbmRseSBieSBwYXNzaW5nIGNhcHR1cmVk
IG91dHB1dCB0aHJvdWdoIHRvIHRoZSBzeXN0ZW0nKQo=
</data>
<flag name="review"
          id="291426"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>