<?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>33620</bug_id>
          
          <creation_ts>2010-01-13 13:06:33 -0800</creation_ts>
          <short_desc>check-webkit-style: Move error() from cpp_style.py to checker.py</short_desc>
          <delta_ts>2010-01-14 02:19:26 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180369</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-13 13:06:33 -0800</bug_when>
    <thetext>This is part of the FIXME to move more code from cpp_style.py to checker.py, where appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180533</commentid>
    <comment_count>1</comment_count>
      <attachid>46538</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-13 20:59:13 -0800</bug_when>
    <thetext>Created attachment 46538
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180534</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-13 21:03:14 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=46538) [details]
&gt; Proposed patch

I noticed that we can also now remove this line from cpp_style_unittest.py:

&gt; from checker import CategoryFilter

I&apos;ll do that after the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180543</commentid>
    <comment_count>3</comment_count>
      <attachid>46538</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-13 22:17:51 -0800</bug_when>
    <thetext>Comment on attachment 46538
Proposed patch

Looks a sane code migration.

&gt; -    def __init__(self, output_format, verbosity=1, filter=None,
&gt; +    def __init__(self, output_format=&quot;emacs&quot;, verbosity=1, filter=None,

I think we can utilize DEFAULT_OUTPUT_FORMAT and DEFAULT_VERBOSITY?

&gt; +        if ((verbosity &lt; 1) or (verbosity &gt; 5)):

I think we usually don&apos;t have parentheses for the condition of if-statement, but I don&apos;t care. Please remove them if you have no preference about this.

&gt; +        ProcessorOptions() # No ValueError: works

I slightly prefer to examine the constructed value if it has sane attributes.

&gt; +        # Spurious white space in filter rules.
&gt; +        (files, options) = parse([&apos;--filter=+foo ,-bar&apos;])
&gt; +        self.assertEquals(options.filter,
&gt; +                          CategoryFilter([&quot;-&quot;, &quot;+whitespace&quot;, &quot;+foo&quot;, &quot;-bar&quot;]))

Thanks for adding this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180560</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-13 23:05:27 -0800</bug_when>
    <thetext>(In reply to comment #3)

Thanks for the quick review, Shinichiro!  Submitting patch for cq shortly.

&gt; &gt; -    def __init__(self, output_format, verbosity=1, filter=None,
&gt; &gt; +    def __init__(self, output_format=&quot;emacs&quot;, verbosity=1, filter=None,
&gt; 
&gt; I think we can utilize DEFAULT_OUTPUT_FORMAT and DEFAULT_VERBOSITY?

The default parameter values above are meant more for convenience and internal use (like unit testing) rather than to be substantive.  That is why, for example, the default filter here should be the empty rule rather than the global variable list of filter rules for check-webkit-style.  Maybe in a future patch I can rename the DEFAULT values to something like SCRIPT_DEFAULT_OUTPUT_FORMAT to make clearer the distinction that those global variable defaults are for use by check-webkit-style.

&gt; 
&gt; &gt; +        if ((verbosity &lt; 1) or (verbosity &gt; 5)):
&gt; 
&gt; I think we usually don&apos;t have parentheses for the condition of if-statement,
&gt; but I don&apos;t care. Please remove them if you have no preference about this.

Thanks for the catch.  I also made this same change in a second place in the file.

&gt; 
&gt; &gt; +        ProcessorOptions() # No ValueError: works
&gt; 
&gt; I slightly prefer to examine the constructed value if it has sane attributes.

Good suggestion.  Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180562</commentid>
    <comment_count>5</comment_count>
      <attachid>46543</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-13 23:07:00 -0800</bug_when>
    <thetext>Created attachment 46543
Proposed patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180593</commentid>
    <comment_count>6</comment_count>
      <attachid>46543</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-14 01:06:38 -0800</bug_when>
    <thetext>Comment on attachment 46543
Proposed patch 2

Thanks for the description and fixing issues. I&apos;ve found you fixed s/self.handle_error/self._handle_error/ . Thanks for catching this issue and sorry I didn&apos;t notice it. I think this means we want StyleCheckerTest later. Could you work for this? Otherwise, I&apos;ll write it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180596</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-14 01:21:11 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 46543 [details])
&gt; Thanks for the description and fixing issues. I&apos;ve found you fixed
&gt; s/self.handle_error/self._handle_error/ . Thanks for catching this issue and
&gt; sorry I didn&apos;t notice it. I think this means we want StyleCheckerTest later.
&gt; Could you work for this? Otherwise, I&apos;ll write it.

I wasn&apos;t planning on doing it soon.  If you could do it, that would be great.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180629</commentid>
    <comment_count>8</comment_count>
      <attachid>46543</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-14 02:19:20 -0800</bug_when>
    <thetext>Comment on attachment 46543
Proposed patch 2

Clearing flags on attachment: 46543

Committed r53251: &lt;http://trac.webkit.org/changeset/53251&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180630</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-14 02:19:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46538</attachid>
            <date>2010-01-13 20:59:13 -0800</date>
            <delta_ts>2010-01-13 23:07:00 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch-tools4-1.txt</filename>
            <type>text/plain</type>
            <size>23472</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUzMjMzKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMTMgIENocmlzIEplcmRvbmVrICA8
Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmVkIGVycm9yKCkgZnJvbSBjcHBfc3R5bGUucHkgdG8gY2hl
Y2tlci5weS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM2MjAKKworICAgICAgICAqIFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlOgorICAgICAg
ICAgIC0gQWRkcmVzc2VkIEZJWE1FIHRvIG5vdCBzZXQgZ2xvYmFsIHN0YXRlLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAgIC0gQWRkZWQg
YXJndW1lbnQgdmFsaWRhdGlvbiB0byBQcm9jZXNzb3JPcHRpb25zIGNvbnN0cnVjdG9yLgorICAg
ICAgICAgIC0gQWRkZWQgc2hvdWxkX3JlcG9ydF9lcnJvcigpIHRvIFByb2Nlc3Nvck9wdGlvbnMg
Y2xhc3MuCisgICAgICAgICAgLSBSZW1vdmVkIHNldF9vcHRpb25zKCkuCisgICAgICAgICAgLSBB
ZGRlZCBTdHlsZUNoZWNrZXIgY2xhc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBBZGRlZCB1bml0IHRlc3QgY2xh
c3MgZm9yIFByb2Nlc3Nvck9wdGlvbnMgY2xhc3MuCisgICAgICAgICAgLSBBZGRlZCB1bml0IHRl
c3QgdG8gY2hlY2sgdGhhdCBwYXJzZSgpIHN0cmlwcyB3aGl0ZSBzcGFjZS4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5OgorICAgICAgICAgIC0gUmVtb3Zl
ZCAiZmlsdGVyIiBhbmQgIm91dHB1dF9mb3JtYXQiIG1ldGhvZHMuCisgICAgICAgICAgLSBSZW1v
dmVkIHNob3VsZF9wcmludF9lcnJvcigpIGFuZCBlcnJvcigpIGZ1bmN0aW9ucy4KKyAgICAgICAg
ICAtIFJlbW92ZWQgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgZnJvbSBwcm9jZXNzX2ZpbGUoKS4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5
OgorICAgICAgICAgIC0gUmVtb3ZlZCBjYWxsIHRvIGNwcF9zdHlsZS5fc2hvdWxkX3ByaW50X2Vy
cm9yKCkuCisgICAgICAgICAgLSBSZW1vdmVkIHRlc3RfZmlsdGVyKCkgYW5kIHRlc3RfZmlsdGVy
X2FwcGVuZGluZygpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0
eWxlLnB5OgorICAgICAgICAgIC0gUmVtb3ZlZCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBmcm9t
IHByb2Nlc3NfZmlsZSgpLgorCiAyMDEwLTAxLTEzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkocmV2aXNpb24gNTMyMzMpCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkod29ya2luZyBjb3B5KQpAQCAtNjYsMTMg
KzY2LDExIEBAIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyID0gY2hlY2tlci5Bcmd1bWVudFBhcnNl
cihkZWZhdWx0cykKICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2VyLnBhcnNlKHN5cy5hcmd2
WzE6XSkKIAotICAgICMgRklYTUU6IEVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjYWxsIHRoaXMgZnVu
Y3Rpb24uCi0gICAgIyAgICAgICAgT3B0aW9ucyBzaG91bGQgYmUgcGFzc2VkIGludG8gcHJvY2Vz
c19maWxlIGluc3RlYWQuCi0gICAgY2hlY2tlci5zZXRfb3B0aW9ucyhvcHRpb25zKQorICAgIHN0
eWxlQ2hlY2tlciA9IGNoZWNrZXIuU3R5bGVDaGVja2VyKG9wdGlvbnMpCiAKICAgICBpZiBmaWxl
czoKICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgY2hlY2tlci5w
cm9jZXNzX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICBzdHlsZUNoZWNrZXIucHJvY2Vzc19m
aWxlKGZpbGVuYW1lKQogCiAgICAgZWxzZToKICAgICAgICAgY3dkID0gb3MucGF0aC5hYnNwYXRo
KCcuJykKQEAgLTg4LDcgKzg2LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKLSAgICAgICAgY2hlY2tl
ci5wcm9jZXNzX3BhdGNoKHBhdGNoKQorICAgICAgICBzdHlsZUNoZWNrZXIucHJvY2Vzc19wYXRj
aChwYXRjaCkKIAogICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RvdGFsIGVycm9ycyBmb3VuZDogJWRc
bicgJSBjaGVja2VyLmVycm9yX2NvdW50KCkpCiAgICAgc3lzLmV4aXQoY2hlY2tlci5lcnJvcl9j
b3VudCgpID4gMCkKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHkJKHJldmlzaW9uIDUzMjMzKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsOCArMzA1LDggQEAg
Y2xhc3MgUHJvY2Vzc29yT3B0aW9ucyhvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgb3V0
cHV0IGZvcm1hdHMgYXJlICJlbWFjcyIgd2hpY2ggZW1hY3MgY2FuIHBhcnNlCiAgICAgICAgICAg
ICAgICAgICAgICBhbmQgInZzNyIgd2hpY2ggTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4g
cGFyc2UuCiAKLSAgICAgIHZlcmJvc2l0eTogQW4gaW50ZWdlciAxLTUgdGhhdCByZXN0cmljdHMg
b3V0cHV0IHRvIGVycm9ycyB3aXRoIGEKLSAgICAgICAgICAgICAgICAgY29uZmlkZW5jZSBzY29y
ZSBhdCBvciBhYm92ZSB0aGlzIHZhbHVlLgorICAgICAgdmVyYm9zaXR5OiBBbiBpbnRlZ2VyIGJl
dHdlZW4gMS01IGluY2x1c2l2ZSB0aGF0IHJlc3RyaWN0cyBvdXRwdXQKKyAgICAgICAgICAgICAg
ICAgdG8gZXJyb3JzIHdpdGggYSBjb25maWRlbmNlIHNjb3JlIGF0IG9yIGFib3ZlIHRoaXMgdmFs
dWUuCiAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIDEsIHdoaWNoIGRpc3BsYXlzIGFs
bCBlcnJvcnMuCiAKICAgICAgIGZpbHRlcjogQSBDYXRlZ29yeUZpbHRlciBpbnN0YW5jZS4gVGhl
IGRlZmF1bHQgaXMgdGhlIGVtcHR5IGZpbHRlciwKQEAgLTMxOCwzNSArMzE4LDU0IEBAIGNsYXNz
IFByb2Nlc3Nvck9wdGlvbnMob2JqZWN0KToKICAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzOiBBIHN0
cmluZy1zdHJpbmcgZGljdGlvbmFyeSBvZiBhbGwgZmxhZyBrZXktdmFsdWUKICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYWlycyB0aGF0IGFyZSBub3Qgb3RoZXJ3aXNlIHJlcHJlc2VudGVkIGJ5
IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4gVGhlIGRlZmF1bHQgaXMgdGhl
IGVtcHR5IGRpY3Rpb25hcnkuCisKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBv
dXRwdXRfZm9ybWF0LCB2ZXJib3NpdHk9MSwgZmlsdGVyPU5vbmUsCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG91dHB1dF9mb3JtYXQ9ImVtYWNzIiwgdmVyYm9zaXR5PTEsIGZpbHRlcj1Ob25lLAog
ICAgICAgICAgICAgICAgICBnaXRfY29tbWl0PU5vbmUsIGV4dHJhX2ZsYWdfdmFsdWVzPU5vbmUp
OgogICAgICAgICBpZiBmaWx0ZXIgaXMgTm9uZToKICAgICAgICAgICAgIGZpbHRlciA9IENhdGVn
b3J5RmlsdGVyKFtdKQogICAgICAgICBpZiBleHRyYV9mbGFnX3ZhbHVlcyBpcyBOb25lOgogICAg
ICAgICAgICAgZXh0cmFfZmxhZ192YWx1ZXMgPSB7fQogCisgICAgICAgIGlmIG91dHB1dF9mb3Jt
YXQgbm90IGluICgiZW1hY3MiLCAidnM3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdJbnZhbGlkICJvdXRwdXRfZm9ybWF0IiBwYXJhbWV0ZXI6ICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3ZhbHVlIG11c3QgYmUgImVtYWNzIiBvciAidnM3Ii4gJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnVmFsdWUgZ2l2ZW46ICIlcyIuJyAlIG91dHB1dF9mb3JtYXQp
CisKKyAgICAgICAgaWYgKCh2ZXJib3NpdHkgPCAxKSBvciAodmVyYm9zaXR5ID4gNSkpOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCAidmVyYm9zaXR5IiBwYXJhbWV0ZXI6
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIG11c3QgYmUgYW4gaW50ZWdl
ciBiZXR3ZWVuIDEtNSBpbmNsdXNpdmUuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1ZhbHVlIGdpdmVuOiAiJXMiLicgJSB2ZXJib3NpdHkpCisKICAgICAgICAgc2VsZi5vdXRwdXRf
Zm9ybWF0ID0gb3V0cHV0X2Zvcm1hdAogICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0
eQogICAgICAgICBzZWxmLmZpbHRlciA9IGZpbHRlcgogICAgICAgICBzZWxmLmdpdF9jb21taXQg
PSBnaXRfY29tbWl0CiAgICAgICAgIHNlbGYuZXh0cmFfZmxhZ192YWx1ZXMgPSBleHRyYV9mbGFn
X3ZhbHVlcwogCisgICAgZGVmIHNob3VsZF9yZXBvcnRfZXJyb3Ioc2VsZiwgY2F0ZWdvcnksIGNv
bmZpZGVuY2VfaW5fZXJyb3IpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciBhbiBlcnJvciBz
aG91bGQgYmUgcmVwb3J0ZWQuCiAKLSMgRklYTUU6IEVsaW1pbmF0ZSB0aGUgbmVlZCBmb3IgdGhp
cyBmdW5jdGlvbi4KLSMgICAgICAgIE9wdGlvbnMgc2hvdWxkIGJlIHBhc3NlZCBpbnRvIHByb2Nl
c3NfZmlsZSBpbnN0ZWFkLgotZGVmIHNldF9vcHRpb25zKG9wdGlvbnMpOgotICAgICIiIkluaXRp
YWxpemUgZ2xvYmFsIF9DcHBTdHlsZVN0YXRlIGluc3RhbmNlLgorICAgICAgICBBbiBlcnJvciBz
aG91bGQgYmUgcmVwb3J0ZWQgaWYgdGhlIGNvbmZpZGVuY2UgaW4gdGhlIGVycm9yCisgICAgICAg
IGlzIGF0IGxlYXN0IHRoZSBjdXJyZW50IHZlcmJvc2l0eSBsZXZlbCwgYW5kIGlmIHRoZSBjdXJy
ZW50CisgICAgICAgIGZpbHRlciBzYXlzIHRoYXQgdGhlIGNhdGVnb3J5IHNob3VsZCBiZSBjaGVj
a2VkLgogCi0gICAgVGhpcyBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgcHJvY2Vz
c19maWxlLgorICAgICAgICBBcmdzOgorICAgICAgICAgIGNhdGVnb3J5OiBBIHN0cmluZyB0aGF0
IGlzIGEgc3R5bGUgY2F0ZWdvcnkuCisgICAgICAgICAgY29uZmlkZW5jZV9pbl9lcnJvcjogQW4g
aW50ZWdlciBiZXR3ZWVuIDEgYW5kIDUsIGluY2x1c2l2ZSwgdGhhdAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgdGhlIGFwcGxpY2F0aW9uJ3MgY29uZmlkZW5jZSBp
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBlcnJvci4gQSBoaWdoZXIgbnVt
YmVyIHNpZ25pZmllcyBncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
ZmlkZW5jZS4KIAotICAgIEFyZ3M6Ci0gICAgICBvcHRpb25zOiBBIFByb2Nlc3Nvck9wdGlvbnMg
aW5zdGFuY2UuCi0gICAgIiIiCi0gICAgY3BwX3N0eWxlLl9zZXRfb3V0cHV0X2Zvcm1hdChvcHRp
b25zLm91dHB1dF9mb3JtYXQpCi0gICAgY3BwX3N0eWxlLl9zZXRfdmVyYm9zZV9sZXZlbChvcHRp
b25zLnZlcmJvc2l0eSkKLSAgICBjcHBfc3R5bGUuX3NldF9maWx0ZXIob3B0aW9ucy5maWx0ZXIp
CisgICAgICAgICIiIgorICAgICAgICBpZiBjb25maWRlbmNlX2luX2Vycm9yIDwgc2VsZi52ZXJi
b3NpdHk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBpZiBzZWxmLmZpbHRl
ciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUgIyBBbGwgY2F0ZWdvcmllcyBzaG91
bGQgYmUgY2hlY2tlZCBieSBkZWZhdWx0LgorCisgICAgICAgIHJldHVybiBzZWxmLmZpbHRlci5z
aG91bGRfY2hlY2soY2F0ZWdvcnkpCiAKIAogIyBUaGlzIGNsYXNzIHNob3VsZCBub3QgaGF2ZSBr
bm93bGVkZ2Ugb2YgdGhlIGZsYWcga2V5IG5hbWVzLgpAQCAtNDM2LDYgKzQ1NSw3IEBAIGNsYXNz
IEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAKICAgICAgICAgQXJnczoKICAgICAgICAgICBlcnJv
cl9tZXNzYWdlOiBBIHN0cmluZyB0aGF0IGlzIGFuIGVycm9yIG1lc3NhZ2UgdG8gcHJpbnQuCisK
ICAgICAgICAgIiIiCiAgICAgICAgIHVzYWdlID0gc2VsZi5jcmVhdGVfdXNhZ2Uoc2VsZi5kZWZh
dWx0cykKICAgICAgICAgc2VsZi5kb2NfcHJpbnQodXNhZ2UpCkBAIC01NjMsNDggKzU4Myw5OSBA
QCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gKGZpbGVuYW1l
cywgb3B0aW9ucykKIAogCi1kZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lKToKLSAgICAiIiJDaGVj
a3Mgc3R5bGUgZm9yIHRoZSBzcGVjaWZpZWQgZmlsZS4KK2NsYXNzIFN0eWxlQ2hlY2tlcihvYmpl
Y3QpOgogCi0gICAgSWYgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSBpcyAnLScsIGFwcGxpZXMgY3Bw
X3N0eWxlIHRvIHRoZSBzdGFuZGFyZCBpbnB1dC4KLSAgICAiIiIKLSAgICBpZiBjcHBfc3R5bGUu
Y2FuX2hhbmRsZShmaWxlbmFtZSkgb3IgZmlsZW5hbWUgPT0gJy0nOgotICAgICAgICBjcHBfc3R5
bGUucHJvY2Vzc19maWxlKGZpbGVuYW1lKQotICAgIGVsaWYgdGV4dF9zdHlsZS5jYW5faGFuZGxl
KGZpbGVuYW1lKToKLSAgICAgICAgdGV4dF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUpCisg
ICAgIiIiU3VwcG9ydHMgY2hlY2tpbmcgc3R5bGUgaW4gZmlsZXMgYW5kIHBhdGNoZXMuIiIiCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgICIiIkNyZWF0ZSBhIFN0
eWxlQ2hlY2tlciBpbnN0YW5jZS4KIAorICAgICAgICBBcmdzOgorICAgICAgICAgIG9wdGlvbnM6
IEEgUHJvY2Vzc29yT3B0aW9ucyBpbnN0YW5jZS4KIAotZGVmIHByb2Nlc3NfcGF0Y2gocGF0Y2hf
c3RyaW5nKToKLSAgICAiIiJEb2VzIGxpbnQgb24gYSBzaW5nbGUgcGF0Y2guCisgICAgICAgICIi
IgorICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCiAKLSAgICBBcmdzOgotICAgICAgcGF0
Y2hfc3RyaW5nOiBBIHN0cmluZyBvZiBhIHBhdGNoLgotICAgICIiIgotICAgIHBhdGNoID0gRGlm
ZlBhcnNlcihwYXRjaF9zdHJpbmcuc3BsaXRsaW5lcygpKQotICAgIGZvciBmaWxlbmFtZSwgZGlm
ZiBpbiBwYXRjaC5maWxlcy5pdGVyaXRlbXMoKToKLSAgICAgICAgZmlsZV9leHRlbnNpb24gPSBv
cy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXQotICAgICAgICBsaW5lX251bWJlcnMgPSBzZXQo
KQotCi0gICAgICAgIGRlZiBlcnJvcl9mb3JfcGF0Y2goZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBj
YXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAiIiJXcmFwcGVyIGZ1
bmN0aW9uIG9mIGNwcF9zdHlsZS5lcnJvciBmb3IgcGF0Y2hlcy4KLQotICAgICAgICAgICAgVGhp
cyBmdW5jdGlvbiBvdXRwdXRzIGVycm9ycyBvbmx5IGlmIHRoZSBsaW5lIG51bWJlcgotICAgICAg
ICAgICAgY29ycmVzcG9uZHMgdG8gbGluZXMgd2hpY2ggYXJlIG1vZGlmaWVkIG9yIGFkZGVkLgot
ICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpZiBub3QgbGluZV9udW1iZXJzOgotICAgICAg
ICAgICAgICAgIGZvciBsaW5lIGluIGRpZmYubGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICMg
V2hlbiBkZWxldGVkIGxpbmUgaXMgbm90IHNldCwgaXQgbWVhbnMgdGhhdAotICAgICAgICAgICAg
ICAgICAgICAjIHRoZSBsaW5lIGlzIG5ld2x5IGFkZGVkLgotICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgbGluZVswXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycy5hZGQo
bGluZVsxXSkKKyAgICAgICAgIyBGSVhNRTogRWxpbWluYXRlIHRoZSBuZWVkIHRvIHNldCBnbG9i
YWwgc3RhdGUgaGVyZS4KKyAgICAgICAgY3BwX3N0eWxlLl9zZXRfdmVyYm9zZV9sZXZlbChvcHRp
b25zLnZlcmJvc2l0eSkKIAotICAgICAgICAgICAgaWYgbGluZV9udW1iZXIgaW4gbGluZV9udW1i
ZXJzOgotICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5lcnJvcihmaWxlbmFtZSwgbGluZV9udW1i
ZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQorICAgIGRlZiBfaGFuZGxlX2Vycm9y
KHNlbGYsIGZpbGVuYW1lLCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3Nh
Z2UpOgorICAgICAgICAiIiJMb2dzIHRoZSBmYWN0IHdlJ3ZlIGZvdW5kIGEgbGludCBlcnJvci4K
IAotICAgICAgICBpZiBjcHBfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgICAgICAg
ICBjcHBfc3R5bGUucHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcj1lcnJvcl9mb3JfcGF0Y2gp
CisgICAgICAgIFdlIGxvZyB0aGUgZXJyb3IgbG9jYXRpb24gYW5kIG91ciBjb25maWRlbmNlIGlu
IHRoZSBlcnJvciwgaS5lLgorICAgICAgICBob3cgY2VydGFpbiB3ZSBhcmUgdGhlIGVycm9yIGlz
IGEgbGVnaXRpbWF0ZSBzdHlsZSByZWdyZXNzaW9uCisgICAgICAgIHZlcnN1cyBhIG1pc2lkZW50
aWZpY2F0aW9uIG9yIGp1c3RpZmllZCB1c2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBm
aWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgZXJyb3IuCisgICAg
ICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgY29udGFpbmluZyB0aGUg
ZXJyb3IuCisgICAgICAgICAgY2F0ZWdvcnk6IEEgc3RyaW5nIHVzZWQgdG8gZGVzY3JpYmUgdGhl
ICJjYXRlZ29yeSIgdGhpcyBidWcKKyAgICAgICAgICAgICAgICAgICAgZmFsbHMgdW5kZXI6ICJ3
aGl0ZXNwYWNlIiwgc2F5LCBvciAicnVudGltZSIuCisgICAgICAgICAgICAgICAgICAgIENhdGVn
b3JpZXMgbWF5IGhhdmUgYSBoaWVyYXJjaHkgc2VwYXJhdGVkIGJ5IHNsYXNoZXM6CisgICAgICAg
ICAgICAgICAgICAgICJ3aGl0ZXNwYWNlL2luZGVudCIuCisgICAgICAgICAgY29uZmlkZW5jZTog
QSBudW1iZXIgZnJvbSAxLTUgcmVwcmVzZW50aW5nIGEgY29uZmlkZW5jZSBzY29yZQorICAgICAg
ICAgICAgICAgICAgICAgIGZvciB0aGUgZXJyb3IsIHdpdGggNSBtZWFuaW5nIHRoYXQgd2UgYXJl
IGNlcnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcHJvYmxlbSwgYW5kIDEgbWVh
bmluZyB0aGF0IGl0IGNvdWxkIGJlIGEKKyAgICAgICAgICAgICAgICAgICAgICBsZWdpdGltYXRl
IGNvbnN0cnVjdC4KKyAgICAgICAgICBtZXNzYWdlOiBUaGUgZXJyb3IgbWVzc2FnZS4KKworICAg
ICAgICAiIiIKKyAgICAgICAgaWYgbm90IHNlbGYub3B0aW9ucy5zaG91bGRfcmVwb3J0X2Vycm9y
KGNhdGVnb3J5LCBjb25maWRlbmNlKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMg
RklYTUU6IEVsaW1pbmF0ZSB0aGUgbmVlZCB0byByZWZlcmVuY2UgY3BwX3N0eWxlIGhlcmUuCisg
ICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmluY3JlbWVudF9lcnJvcl9jb3VudCgp
CisKKyAgICAgICAgaWYgc2VsZi5vcHRpb25zLm91dHB1dF9mb3JtYXQgPT0gJ3ZzNyc6CisgICAg
ICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCclcyglcyk6ICAlcyAgWyVzXSBbJWRdXG4nICUgKAor
ICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lX251bWJlciwgbWVzc2FnZSwgY2F0ZWdvcnks
IGNvbmZpZGVuY2UpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgnJXM6JXM6ICAlcyAgWyVzXSBbJWRdXG4nICUgKAorICAgICAgICAgICAgICAgIGZpbGVuYW1l
LCBsaW5lX251bWJlciwgbWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQorCisgICAgZGVm
IHByb2Nlc3NfZmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIkNoZWNrcyBzdHlsZSBm
b3IgdGhlIHNwZWNpZmllZCBmaWxlLgorCisgICAgICAgIElmIHRoZSBzcGVjaWZpZWQgZmlsZW5h
bWUgaXMgJy0nLCBhcHBsaWVzIGNwcF9zdHlsZSB0byB0aGUgc3RhbmRhcmQgaW5wdXQuCisKKyAg
ICAgICAgIiIiCisgICAgICAgIGlmIGNwcF9zdHlsZS5jYW5faGFuZGxlKGZpbGVuYW1lKSBvciBm
aWxlbmFtZSA9PSAnLSc6CisgICAgICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlKGZpbGVu
YW1lLCBzZWxmLl9oYW5kbGVfZXJyb3IpCiAgICAgICAgIGVsaWYgdGV4dF9zdHlsZS5jYW5faGFu
ZGxlKGZpbGVuYW1lKToKLSAgICAgICAgICAgIHRleHRfc3R5bGUucHJvY2Vzc19maWxlKGZpbGVu
YW1lLCBlcnJvcj1lcnJvcl9mb3JfcGF0Y2gpCisgICAgICAgICAgICB0ZXh0X3N0eWxlLnByb2Nl
c3NfZmlsZShmaWxlbmFtZSwgc2VsZi5faGFuZGxlX2Vycm9yKQorCisgICAgZGVmIHByb2Nlc3Nf
cGF0Y2goc2VsZiwgcGF0Y2hfc3RyaW5nKToKKyAgICAgICAgIiIiRG9lcyBsaW50IG9uIGEgc2lu
Z2xlIHBhdGNoLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcGF0Y2hfc3RyaW5nOiBBIHN0
cmluZyBvZiBhIHBhdGNoLgorCisgICAgICAgICIiIgorICAgICAgICBwYXRjaCA9IERpZmZQYXJz
ZXIocGF0Y2hfc3RyaW5nLnNwbGl0bGluZXMoKSkKKyAgICAgICAgZm9yIGZpbGVuYW1lLCBkaWZm
IGluIHBhdGNoLmZpbGVzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgZmlsZV9leHRlbnNpb24g
PSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXQorICAgICAgICAgICAgbGluZV9udW1iZXJz
ID0gc2V0KCkKKworICAgICAgICAgICAgZGVmIGVycm9yX2Zvcl9wYXRjaChmaWxlbmFtZSwgbGlu
ZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToKKyAgICAgICAgICAgICAg
ICAiIiJXcmFwcGVyIGZ1bmN0aW9uIG9mIGNwcF9zdHlsZS5lcnJvciBmb3IgcGF0Y2hlcy4KKwor
ICAgICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gb3V0cHV0cyBlcnJvcnMgb25seSBpZiB0aGUg
bGluZSBudW1iZXIKKyAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byBsaW5lcyB3aGljaCBh
cmUgbW9kaWZpZWQgb3IgYWRkZWQuCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAg
ICAgaWYgbm90IGxpbmVfbnVtYmVyczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4g
ZGlmZi5saW5lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBkZWxldGVkIGxpbmUg
aXMgbm90IHNldCwgaXQgbWVhbnMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUg
bGluZSBpcyBuZXdseSBhZGRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5l
WzBdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycy5hZGQobGluZVsx
XSkKKworICAgICAgICAgICAgICAgIGlmIGxpbmVfbnVtYmVyIGluIGxpbmVfbnVtYmVyczoKKyAg
ICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSkKKworICAgICAgICAgICAgaWYgY3BwX3N0
eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wcm9j
ZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9yPWVycm9yX2Zvcl9wYXRjaCkKKyAgICAgICAgICAgIGVs
aWYgdGV4dF9zdHlsZS5jYW5faGFuZGxlKGZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICB0ZXh0
X3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3JfZm9yX3BhdGNoKQogCiAK
IGRlZiBlcnJvcl9jb3VudCgpOgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQkocmV2aXNpb24gNTMyMzMpCisr
KyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9y
dCBjaGVja2VyIGFzIHN0eWxlCiBmcm9tIGNoZWNrZXIgaW1wb3J0IENhdGVnb3J5RmlsdGVyCi0K
K2Zyb20gY2hlY2tlciBpbXBvcnQgUHJvY2Vzc29yT3B0aW9ucwogCiBjbGFzcyBDYXRlZ29yeUZp
bHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC04NSw2ICs4NSw0OSBAQCBjbGFzcyBD
YXRlZ29yeUZpbHRlclRlc3QodW5pdHRlc3QuVGVzdENhCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShmaWx0ZXIuc2hvdWxkX2NoZWNrKCJhIikpCiAKIAorY2xhc3MgUHJvY2Vzc29yT3B0aW9uc1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgUHJvY2Vzc29yT3B0aW9ucyBj
bGFzcy4iIiIKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICIiIlRlc3QgX19p
bml0X18gY29uc3RydWN0b3IuIiIiCisgICAgICAgICMgQ2hlY2sgZGVmYXVsdCBwYXJhbWV0ZXJz
LgorICAgICAgICBQcm9jZXNzb3JPcHRpb25zKCkgIyBObyBWYWx1ZUVycm9yOiB3b3JrcworCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFByb2Nlc3Nvck9wdGlvbnMsIG91
dHB1dF9mb3JtYXQ9ImJhZCIpCisgICAgICAgIFByb2Nlc3Nvck9wdGlvbnMob3V0cHV0X2Zvcm1h
dD0iZW1hY3MiKSAjIHdvcmtzCisgICAgICAgIFByb2Nlc3Nvck9wdGlvbnMob3V0cHV0X2Zvcm1h
dD0idnM3IikgIyB3b3JrcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQ
cm9jZXNzb3JPcHRpb25zLCB2ZXJib3NpdHk9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwgUHJvY2Vzc29yT3B0aW9ucywgdmVyYm9zaXR5PTYpCisgICAgICAgIFByb2Nl
c3Nvck9wdGlvbnModmVyYm9zaXR5PTEpICMgd29ya3MKKyAgICAgICAgUHJvY2Vzc29yT3B0aW9u
cyh2ZXJib3NpdHk9NSkgIyB3b3JrcworCisgICAgICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KKyAg
ICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nvck9wdGlvbnMoZXh0cmFfZmxhZ192YWx1ZXM9eyJleHRy
YV92YWx1ZSIgOiAyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVy
PUNhdGVnb3J5RmlsdGVyKFsiKyJdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2l0X2NvbW1pdD0iY29tbWl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0X2Zvcm1hdD0idnM3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmVyYm9zaXR5PTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZXh0cmFf
ZmxhZ192YWx1ZXMsIHsiZXh0cmFfdmFsdWUiIDogMn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG9wdGlvbnMuZmlsdGVyLCBDYXRlZ29yeUZpbHRlcihbIisiXSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG9wdGlvbnMuZ2l0X2NvbW1pdCwgImNvbW1pdCIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG9wdGlvbnMub3V0cHV0X2Zvcm1hdCwgInZzNyIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG9wdGlvbnMudmVyYm9zaXR5LCAzKQorCisgICAgZGVmIHRlc3Rfc2hvdWxk
X3JlcG9ydF9lcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzaG91bGRfcmVwb3J0X2Vycm9y
KCkuIiIiCisgICAgICAgIGZpbHRlciA9IENhdGVnb3J5RmlsdGVyKFsiLXh5eiJdKQorICAgICAg
ICBvcHRpb25zID0gUHJvY2Vzc29yT3B0aW9ucyhmaWx0ZXI9ZmlsdGVyLCB2ZXJib3NpdHk9MykK
KworICAgICAgICAjIFRlc3QgdmVyYm9zaXR5CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRp
b25zLnNob3VsZF9yZXBvcnRfZXJyb3IoImFiYyIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKG9wdGlvbnMuc2hvdWxkX3JlcG9ydF9lcnJvcigiYWJjIiwgMikpCisKKyAgICAgICAgIyBU
ZXN0IGZpbHRlcgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5zaG91bGRfcmVwb3J0
X2Vycm9yKCJ4eSIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuc2hvdWxk
X3JlcG9ydF9lcnJvcigieHl6IiwgMykpCisKKwogY2xhc3MgRGVmYXVsdEFyZ3VtZW50c1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdHMgdmFsaWRpdHkgb2YgZGVmYXVsdCBh
cmd1bWVudHMgdXNlZCBieSBjaGVjay13ZWJraXQtc3R5bGUuIiIiCkBAIC0yMzksNiArMjgyLDEw
IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2EKICAgICAgICAgKGZp
bGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1maWx0ZXI9K2ZvbywtYmFyJ10pCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZmlsdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBDYXRlZ29yeUZpbHRlcihbIi0iLCAiK3doaXRlc3BhY2UiLCAiK2ZvbyIsICItYmFyIl0pKQor
ICAgICAgICAjIFNwdXJpb3VzIHdoaXRlIHNwYWNlIGluIGZpbHRlciBydWxlcy4KKyAgICAgICAg
KGZpbGVzLCBvcHRpb25zKSA9IHBhcnNlKFsnLS1maWx0ZXI9K2ZvbyAsLWJhciddKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ2F0ZWdvcnlGaWx0ZXIoWyItIiwgIit3aGl0ZXNwYWNlIiwgIitmb28iLCAiLWJhciJd
KSkKIAogICAgICAgICAjIFBhc3MgZXh0cmEgZmxhZyB2YWx1ZXMuCiAgICAgICAgIChmaWxlcywg
b3B0aW9ucykgPSBwYXJzZShbJy0tZXh0cmEnXSwgWydleHRyYSddKQpJbmRleDogV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkJKHJldmlzaW9uIDUz
MjMzKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTI0OCwxNyArMjQ4LDYgQEAgY2xhc3MgX0NwcFN0eWxlU3RhdGUo
b2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYudmVyYm9zZV9s
ZXZlbCA9IDEgICMgZ2xvYmFsIHNldHRpbmcuCiAgICAgICAgIHNlbGYuZXJyb3JfY291bnQgPSAw
ICAgICMgZ2xvYmFsIGNvdW50IG9mIHJlcG9ydGVkIGVycm9ycwotICAgICAgICAjIGZpbHRlciB0
byBhcHBseSB3aGVuIGVtaXR0aW5nIGVycm9yIG1lc3NhZ2VzCi0gICAgICAgIHNlbGYuZmlsdGVy
ID0gTm9uZQotCi0gICAgICAgICMgb3V0cHV0IGZvcm1hdDoKLSAgICAgICAgIyAiZW1hY3MiIC0g
Zm9ybWF0IHRoYXQgZW1hY3MgY2FuIHBhcnNlIChkZWZhdWx0KQotICAgICAgICAjICJ2czciIC0g
Zm9ybWF0IHRoYXQgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4gcGFyc2UKLSAgICAgICAg
c2VsZi5vdXRwdXRfZm9ybWF0ID0gJ2VtYWNzJwotCi0gICAgZGVmIHNldF9vdXRwdXRfZm9ybWF0
KHNlbGYsIG91dHB1dF9mb3JtYXQpOgotICAgICAgICAiIiJTZXRzIHRoZSBvdXRwdXQgZm9ybWF0
IGZvciBlcnJvcnMuIiIiCi0gICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3Jt
YXQKIAogICAgIGRlZiBzZXRfdmVyYm9zZV9sZXZlbChzZWxmLCBsZXZlbCk6CiAgICAgICAgICIi
IlNldHMgdGhlIG1vZHVsZSdzIHZlcmJvc2l0eSwgYW5kIHJldHVybnMgdGhlIHByZXZpb3VzIHNl
dHRpbmcuIiIiCkBAIC0yNjYsMTUgKzI1NSw2IEBAIGNsYXNzIF9DcHBTdHlsZVN0YXRlKG9iamVj
dCk6CiAgICAgICAgIHNlbGYudmVyYm9zZV9sZXZlbCA9IGxldmVsCiAgICAgICAgIHJldHVybiBs
YXN0X3ZlcmJvc2VfbGV2ZWwKIAotICAgIGRlZiBzZXRfZmlsdGVyKHNlbGYsIGZpbHRlcik6Ci0g
ICAgICAgICIiIlNldHMgdGhlIGVycm9yLW1lc3NhZ2UgZmlsdGVyLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgZmlsdGVyOiBBIENhdGVnb3J5RmlsdGVyIGluc3RhbmNlLgotCi0gICAgICAg
ICIiIgotICAgICAgICBzZWxmLmZpbHRlciA9IGZpbHRlcgotCiAgICAgZGVmIHJlc2V0X2Vycm9y
X2NvdW50KHNlbGYpOgogICAgICAgICAiIiJTZXRzIHRoZSBtb2R1bGUncyBlcnJvciBzdGF0aXN0
aWMgYmFjayB0byB6ZXJvLiIiIgogICAgICAgICBzZWxmLmVycm9yX2NvdW50ID0gMApAQCAtMjg3
LDE2ICsyNjcsNiBAQCBjbGFzcyBfQ3BwU3R5bGVTdGF0ZShvYmplY3QpOgogX2NwcF9zdHlsZV9z
dGF0ZSA9IF9DcHBTdHlsZVN0YXRlKCkKIAogCi1kZWYgX291dHB1dF9mb3JtYXQoKToKLSAgICAi
IiJHZXRzIHRoZSBtb2R1bGUncyBvdXRwdXQgZm9ybWF0LiIiIgotICAgIHJldHVybiBfY3BwX3N0
eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQKLQotCi1kZWYgX3NldF9vdXRwdXRfZm9ybWF0KG91dHB1
dF9mb3JtYXQpOgotICAgICIiIlNldHMgdGhlIG1vZHVsZSdzIG91dHB1dCBmb3JtYXQuIiIiCi0g
ICAgX2NwcF9zdHlsZV9zdGF0ZS5zZXRfb3V0cHV0X2Zvcm1hdChvdXRwdXRfZm9ybWF0KQotCi0K
IGRlZiBfdmVyYm9zZV9sZXZlbCgpOgogICAgICIiIlJldHVybnMgdGhlIG1vZHVsZSdzIHZlcmJv
c2l0eSBzZXR0aW5nLiIiIgogICAgIHJldHVybiBfY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2
ZWwKQEAgLTMwNywyNCArMjc3LDYgQEAgZGVmIF9zZXRfdmVyYm9zZV9sZXZlbChsZXZlbCk6CiAg
ICAgcmV0dXJuIF9jcHBfc3R5bGVfc3RhdGUuc2V0X3ZlcmJvc2VfbGV2ZWwobGV2ZWwpCiAKIAot
ZGVmIF9maWx0ZXIoKToKLSAgICAiIiJSZXR1cm5zIHRoZSBtb2R1bGUncyBDYXRlZ29yeUZpbHRl
ciBpbnN0YW5jZS4iIiIKLSAgICByZXR1cm4gX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXIKLQotCi1k
ZWYgX3NldF9maWx0ZXIoZmlsdGVyKToKLSAgICAiIiJTZXRzIHRoZSBtb2R1bGUncyBlcnJvci1t
ZXNzYWdlIGZpbHRlci4KLQotICAgIFRoZSBmaWx0ZXIgaXMgYXBwbGllZCB3aGVuIGRlY2lkaW5n
IHdoZXRoZXIgdG8gZW1pdCBhIGdpdmVuCi0gICAgZXJyb3IgbWVzc2FnZS4KLQotICAgIEFyZ3M6
Ci0gICAgICBmaWx0ZXI6IEEgQ2F0ZWdvcnlGaWx0ZXIgaW5zdGFuY2UuCi0KLSAgICAiIiIKLSAg
ICBfY3BwX3N0eWxlX3N0YXRlLnNldF9maWx0ZXIoZmlsdGVyKQotCi0KIGRlZiBlcnJvcl9jb3Vu
dCgpOgogICAgICIiIlJldHVybnMgdGhlIGdsb2JhbCBjb3VudCBvZiByZXBvcnRlZCBlcnJvcnMu
IiIiCiAgICAgcmV0dXJuIF9jcHBfc3R5bGVfc3RhdGUuZXJyb3JfY291bnQKQEAgLTQ3Nyw1MSAr
NDI5LDYgQEAgY2xhc3MgRmlsZUluZm86CiAgICAgICAgIHJldHVybiBzZWxmLmV4dGVuc2lvbigp
WzE6XSBpbiAoJ2MnLCAnY2MnLCAnY3BwJywgJ2N4eCcpCiAKIAotZGVmIF9zaG91bGRfcHJpbnRf
ZXJyb3IoY2F0ZWdvcnksIGNvbmZpZGVuY2UpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgY29u
ZmlkZW5jZSA+PSB2ZXJib3NlLCBhbmQgY2F0ZWdvcnkgcGFzc2VzIGZpbHRlci4iIiIKLSAgICAj
IFRoZXJlIGFyZSB0d28gd2F5cyB3ZSBtaWdodCBkZWNpZGUgbm90IHRvIHByaW50IGFuIGVycm9y
IG1lc3NhZ2U6Ci0gICAgIyB0aGUgdmVyYm9zaXR5IGxldmVsIGlzbid0IGhpZ2ggZW5vdWdoLCBv
ciB0aGUgZmlsdGVycyBmaWx0ZXIgaXQgb3V0LgotICAgIGlmIGNvbmZpZGVuY2UgPCBfY3BwX3N0
eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWw6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZmls
dGVyID0gX2ZpbHRlcigpCi0KLSAgICBpZiBmaWx0ZXIgaXMgTm9uZToKLSAgICAgICAgcmV0dXJu
IFRydWUgIyBBbGwgY2F0ZWdvcmllcyBzaG91bGQgYmUgY2hlY2tlZCBieSBkZWZhdWx0LgotCi0g
ICAgcmV0dXJuIGZpbHRlci5zaG91bGRfY2hlY2soY2F0ZWdvcnkpCi0KLQotZGVmIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgotICAg
ICIiIkxvZ3MgdGhlIGZhY3Qgd2UndmUgZm91bmQgYSBsaW50IGVycm9yLgotCi0gICAgV2UgbG9n
IHdoZXJlIHRoZSBlcnJvciB3YXMgZm91bmQsIGFuZCBhbHNvIG91ciBjb25maWRlbmNlIGluIHRo
ZSBlcnJvciwKLSAgICB0aGF0IGlzLCBob3cgY2VydGFpbiB3ZSBhcmUgdGhpcyBpcyBhIGxlZ2l0
aW1hdGUgc3R5bGUgcmVncmVzc2lvbiwgYW5kCi0gICAgbm90IGEgbWlzaWRlbnRpZmljYXRpb24g
b3IgYSB1c2UgdGhhdCdzIHNvbWV0aW1lcyBqdXN0aWZpZWQuCi0KLSAgICBBcmdzOgotICAgICAg
ZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGVycm9yLgotICAg
ICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgY29udGFpbmluZyB0aGUgZXJy
b3IuCi0gICAgICBjYXRlZ29yeTogQSBzdHJpbmcgdXNlZCB0byBkZXNjcmliZSB0aGUgImNhdGVn
b3J5IiB0aGlzIGJ1ZwotICAgICAgICAgICAgICAgIGZhbGxzIHVuZGVyOiAid2hpdGVzcGFjZSIs
IHNheSwgb3IgInJ1bnRpbWUiLiAgQ2F0ZWdvcmllcwotICAgICAgICAgICAgICAgIG1heSBoYXZl
IGEgaGllcmFyY2h5IHNlcGFyYXRlZCBieSBzbGFzaGVzOiAid2hpdGVzcGFjZS9pbmRlbnQiLgot
ICAgICAgY29uZmlkZW5jZTogQSBudW1iZXIgZnJvbSAxLTUgcmVwcmVzZW50aW5nIGEgY29uZmlk
ZW5jZSBzY29yZSBmb3IKLSAgICAgICAgICAgICAgICAgIHRoZSBlcnJvciwgd2l0aCA1IG1lYW5p
bmcgdGhhdCB3ZSBhcmUgY2VydGFpbiBvZiB0aGUgcHJvYmxlbSwKLSAgICAgICAgICAgICAgICAg
IGFuZCAxIG1lYW5pbmcgdGhhdCBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUgY29uc3RydWN0Lgot
ICAgICAgbWVzc2FnZTogVGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgIiIiCi0gICAgIyBUaGVyZSBh
cmUgdHdvIHdheXMgd2UgbWlnaHQgZGVjaWRlIG5vdCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdl
OgotICAgICMgdGhlIHZlcmJvc2l0eSBsZXZlbCBpc24ndCBoaWdoIGVub3VnaCwgb3IgdGhlIGZp
bHRlcnMgZmlsdGVyIGl0IG91dC4KLSAgICBpZiBfc2hvdWxkX3ByaW50X2Vycm9yKGNhdGVnb3J5
LCBjb25maWRlbmNlKToKLSAgICAgICAgX2NwcF9zdHlsZV9zdGF0ZS5pbmNyZW1lbnRfZXJyb3Jf
Y291bnQoKQotICAgICAgICBpZiBfY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQgPT0gJ3Zz
Nyc6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCclcyglcyk6ICAlcyAgWyVzXSBbJWRd
XG4nICUgKAotICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lX251bWJlciwgbWVzc2FnZSwg
Y2F0ZWdvcnksIGNvbmZpZGVuY2UpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnJXM6JXM6ICAlcyAgWyVzXSBbJWRdXG4nICUgKAotICAgICAgICAgICAgICAg
IGZpbGVuYW1lLCBsaW5lX251bWJlciwgbWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQot
Ci0KICMgTWF0Y2hlcyBzdGFuZGFyZCBDKysgZXNjYXBlIGVzZXF1ZW5jZXMgcGVyIDIuMTMuMi4z
IG9mIHRoZSBDKysgc3RhbmRhcmQuCiBfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfRVNDQVBFUyA9
IHJlLmNvbXBpbGUoCiAgICAgcidcXChbYWJmbnJ0dj8iXFxcJ118XGQrfHhbMC05YS1mQS1GXSsp
JykKQEAgLTI5NjksNyArMjg3Niw3IEBAIGRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwg
ZmlsZV9leHQKICAgICBjaGVja19mb3JfbmV3X2xpbmVfYXRfZW9mKGZpbGVuYW1lLCBsaW5lcywg
ZXJyb3IpCiAKIAotZGVmIHByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3IpOgorZGVm
IHByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3IpOgogICAgICIiIlBlcmZvcm1zIGNwcF9zdHls
ZSBvbiBhIHNpbmdsZSBmaWxlLgogCiAgICAgQXJnczoKSW5kZXg6IFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiA1MzIzMykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3Bw
X3N0eWxlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw3IEBAIGNsYXNz
IEVycm9yQ29sbGVjdG9yOgogICAgICAgICAgICAgICAgICAgICAgICAgJ01lc3NhZ2UgIiVzIiBo
YXMgY2F0ZWdvcnkgIiVzIiwnCiAgICAgICAgICAgICAgICAgICAgICAgICAnIHdoaWNoIGlzIG5v
dCBpbiBTVFlMRV9DQVRFR09SSUVTJyAlIChtZXNzYWdlLCBjYXRlZ29yeSkpCiAgICAgICAgIHNl
bGYuX3NlZW5fc3R5bGVfY2F0ZWdvcmllc1tjYXRlZ29yeV0gPSAxCi0gICAgICAgIGlmIGNwcF9z
dHlsZS5fc2hvdWxkX3ByaW50X2Vycm9yKGNhdGVnb3J5LCBjb25maWRlbmNlKToKLSAgICAgICAg
ICAgIHNlbGYuX2Vycm9ycy5hcHBlbmQoJyVzICBbJXNdIFslZF0nICUgKG1lc3NhZ2UsIGNhdGVn
b3J5LCBjb25maWRlbmNlKSkKKyAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVuZCgnJXMgIFslc10g
WyVkXScgJSAobWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQogCiAgICAgZGVmIHJlc3Vs
dHMoc2VsZik6CiAgICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMpIDwgMjoKQEAgLTE1NzEsMzQg
KzE1NzAsNiBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhID0gNTtcdC8vIHNldCBhIHRvIDUnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICdUYWIgZm91bmQ7IGJldHRlciB0byB1c2Ugc3BhY2VzICBbd2hpdGVz
cGFjZS90YWJdIFsxXScpCiAKLSAgICBkZWYgdGVzdF9maWx0ZXIoc2VsZik6Ci0gICAgICAgIG9s
ZF9maWx0ZXIgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXIKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuc2V0X2ZpbHRlcihDYXRl
Z29yeUZpbHRlcihbJy0nLCAnK3doaXRlc3BhY2UnLCAnLXdoaXRlc3BhY2UvaW5kZW50J10pKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICAgICAnLy8gSGVsbG8g
dGhlcmUgJywKLSAgICAgICAgICAgICAgICAnTGluZSBlbmRzIGluIHdoaXRlc3BhY2UuICBDb25z
aWRlciBkZWxldGluZyB0aGVzZSBleHRyYSBzcGFjZXMuJwotICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL2VuZF9vZl9saW5lXSBbNF0nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnaW50IGEgPSAoaW50KTEuMDsnLCAnJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
JyB3ZWlyZCBvcGVuaW5nIHNwYWNlJywgJycpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXIgPSBvbGRfZmlsdGVyCi0KLSAgICBk
ZWYgdGVzdF9maWx0ZXJfYXBwZW5kaW5nKHNlbGYpOgotICAgICAgICBvbGRfZmlsdGVyID0gY3Bw
X3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVyCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
ICMgUmVzZXQgZmlsdGVycwotICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUu
c2V0X2ZpbHRlcihDYXRlZ29yeUZpbHRlcihbJy13aGl0ZXNwYWNlJ10pKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnLy8gSGVsbG8gdGhlcmUgJywgJycpCi0gICAgICAgICAgICBjcHBf
c3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVyKENhdGVnb3J5RmlsdGVyKFsnLXdoaXRl
c3BhY2UnLCAnK3doaXRlc3BhY2UvZW5kX29mX2xpbmUnXSkpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydF9saW50KAotICAgICAgICAgICAgICAgICcvLyBIZWxsbyB0aGVyZSAnLAotICAgICAgICAg
ICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNl
IGV4dHJhIHNwYWNlcy4nCi0gICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvZW5kX29mX2xp
bmVdIFs0XScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgd2VpcmQgb3BlbmluZyBz
cGFjZScsICcnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBf
c3R5bGVfc3RhdGUuZmlsdGVyID0gb2xkX2ZpbHRlcgotCiAgICAgZGVmIHRlc3RfdW5uYW1lZF9u
YW1lc3BhY2VzX2luX2hlYWRlcnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdl
X3J1bGVzX2NoZWNrKAogICAgICAgICAgICAgJ2Zvby5oJywgJ25hbWVzcGFjZSB7JywKSW5kZXg6
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGUucHkJ
KHJldmlzaW9uIDUzMjMzKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS90
ZXh0X3N0eWxlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGRlZiBwcm9jZXNz
X2ZpbGVfZGF0YShmaWxlbmFtZSwgbGluZXMsIGUKICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvdGFiJywgNSwgJ0xpbmUgY29udGFpbnMgdGFiIGNo
YXJhY3Rlci4nKQogCiAKLWRlZiBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9yPWNwcF9zdHls
ZS5lcnJvcik6CitkZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcik6CiAgICAgIiIiUGVy
Zm9ybXMgbGludCBjaGVjayBmb3IgdGV4dCBvbiBhIHNpbmdsZSBmaWxlLiIiIgogICAgIGlmIChu
b3QgY2FuX2hhbmRsZShmaWxlbmFtZSkpOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJZ25v
cmluZyAlczsgbm90IGEgc3VwcG9ydGVkIGZpbGVcbicgJSBmaWxlbmFtZSkK
</data>
<flag name="review"
          id="28823"
          type_id="1"
          status="+"
          setter="hamaji"
    />
    <flag name="commit-queue"
          id="28824"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46543</attachid>
            <date>2010-01-13 23:07:00 -0800</date>
            <delta_ts>2010-01-14 02:19:20 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>patch-tools4-2.txt</filename>
            <type>text/plain</type>
            <size>24470</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUzMjMzKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMTMgIENocmlzIEplcmRvbmVrICA8
Y2hyaXMuamVyZG9uZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmVkIGVycm9yKCkgZnJvbSBjcHBfc3R5bGUucHkgdG8gY2hl
Y2tlci5weS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM2MjAKKworICAgICAgICAqIFNjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlOgorICAgICAg
ICAgIC0gQWRkcmVzc2VkIEZJWE1FIHRvIG5vdCBzZXQgZ2xvYmFsIHN0YXRlLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAgIC0gQWRkZWQg
YXJndW1lbnQgdmFsaWRhdGlvbiB0byBQcm9jZXNzb3JPcHRpb25zIGNvbnN0cnVjdG9yLgorICAg
ICAgICAgIC0gQWRkZWQgc2hvdWxkX3JlcG9ydF9lcnJvcigpIHRvIFByb2Nlc3Nvck9wdGlvbnMg
Y2xhc3MuCisgICAgICAgICAgLSBSZW1vdmVkIHNldF9vcHRpb25zKCkuCisgICAgICAgICAgLSBB
ZGRlZCBTdHlsZUNoZWNrZXIgY2xhc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBBZGRlZCB1bml0IHRlc3QgY2xh
c3MgZm9yIFByb2Nlc3Nvck9wdGlvbnMgY2xhc3MuCisgICAgICAgICAgLSBBZGRlZCB1bml0IHRl
c3QgdG8gY2hlY2sgdGhhdCBwYXJzZSgpIHN0cmlwcyB3aGl0ZSBzcGFjZS4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5OgorICAgICAgICAgIC0gUmVtb3Zl
ZCAiZmlsdGVyIiBhbmQgIm91dHB1dF9mb3JtYXQiIG1ldGhvZHMuCisgICAgICAgICAgLSBSZW1v
dmVkIHNob3VsZF9wcmludF9lcnJvcigpIGFuZCBlcnJvcigpIGZ1bmN0aW9ucy4KKyAgICAgICAg
ICAtIFJlbW92ZWQgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgZnJvbSBwcm9jZXNzX2ZpbGUoKS4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5
OgorICAgICAgICAgIC0gUmVtb3ZlZCBjYWxsIHRvIGNwcF9zdHlsZS5fc2hvdWxkX3ByaW50X2Vy
cm9yKCkuCisgICAgICAgICAgLSBSZW1vdmVkIHRlc3RfZmlsdGVyKCkgYW5kIHRlc3RfZmlsdGVy
X2FwcGVuZGluZygpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0
eWxlLnB5OgorICAgICAgICAgIC0gUmVtb3ZlZCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBmcm9t
IHByb2Nlc3NfZmlsZSgpLgorCiAyMDEwLTAxLTEzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkocmV2aXNpb24gNTMyMzMpCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQkod29ya2luZyBjb3B5KQpAQCAtNjYsMTMg
KzY2LDExIEBAIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyID0gY2hlY2tlci5Bcmd1bWVudFBhcnNl
cihkZWZhdWx0cykKICAgICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2VyLnBhcnNlKHN5cy5hcmd2
WzE6XSkKIAotICAgICMgRklYTUU6IEVsaW1pbmF0ZSB0aGUgbmVlZCB0byBjYWxsIHRoaXMgZnVu
Y3Rpb24uCi0gICAgIyAgICAgICAgT3B0aW9ucyBzaG91bGQgYmUgcGFzc2VkIGludG8gcHJvY2Vz
c19maWxlIGluc3RlYWQuCi0gICAgY2hlY2tlci5zZXRfb3B0aW9ucyhvcHRpb25zKQorICAgIHN0
eWxlQ2hlY2tlciA9IGNoZWNrZXIuU3R5bGVDaGVja2VyKG9wdGlvbnMpCiAKICAgICBpZiBmaWxl
czoKICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgY2hlY2tlci5w
cm9jZXNzX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICBzdHlsZUNoZWNrZXIucHJvY2Vzc19m
aWxlKGZpbGVuYW1lKQogCiAgICAgZWxzZToKICAgICAgICAgY3dkID0gb3MucGF0aC5hYnNwYXRo
KCcuJykKQEAgLTg4LDcgKzg2LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKLSAgICAgICAgY2hlY2tl
ci5wcm9jZXNzX3BhdGNoKHBhdGNoKQorICAgICAgICBzdHlsZUNoZWNrZXIucHJvY2Vzc19wYXRj
aChwYXRjaCkKIAogICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RvdGFsIGVycm9ycyBmb3VuZDogJWRc
bicgJSBjaGVja2VyLmVycm9yX2NvdW50KCkpCiAgICAgc3lzLmV4aXQoY2hlY2tlci5lcnJvcl9j
b3VudCgpID4gMCkKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHkJKHJldmlzaW9uIDUzMjMzKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsOCArMzA1LDggQEAg
Y2xhc3MgUHJvY2Vzc29yT3B0aW9ucyhvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgb3V0
cHV0IGZvcm1hdHMgYXJlICJlbWFjcyIgd2hpY2ggZW1hY3MgY2FuIHBhcnNlCiAgICAgICAgICAg
ICAgICAgICAgICBhbmQgInZzNyIgd2hpY2ggTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNyBjYW4g
cGFyc2UuCiAKLSAgICAgIHZlcmJvc2l0eTogQW4gaW50ZWdlciAxLTUgdGhhdCByZXN0cmljdHMg
b3V0cHV0IHRvIGVycm9ycyB3aXRoIGEKLSAgICAgICAgICAgICAgICAgY29uZmlkZW5jZSBzY29y
ZSBhdCBvciBhYm92ZSB0aGlzIHZhbHVlLgorICAgICAgdmVyYm9zaXR5OiBBbiBpbnRlZ2VyIGJl
dHdlZW4gMS01IGluY2x1c2l2ZSB0aGF0IHJlc3RyaWN0cyBvdXRwdXQKKyAgICAgICAgICAgICAg
ICAgdG8gZXJyb3JzIHdpdGggYSBjb25maWRlbmNlIHNjb3JlIGF0IG9yIGFib3ZlIHRoaXMgdmFs
dWUuCiAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIDEsIHdoaWNoIGRpc3BsYXlzIGFs
bCBlcnJvcnMuCiAKICAgICAgIGZpbHRlcjogQSBDYXRlZ29yeUZpbHRlciBpbnN0YW5jZS4gVGhl
IGRlZmF1bHQgaXMgdGhlIGVtcHR5IGZpbHRlciwKQEAgLTMxOCwzNSArMzE4LDU0IEBAIGNsYXNz
IFByb2Nlc3Nvck9wdGlvbnMob2JqZWN0KToKICAgICAgIGV4dHJhX2ZsYWdfdmFsdWVzOiBBIHN0
cmluZy1zdHJpbmcgZGljdGlvbmFyeSBvZiBhbGwgZmxhZyBrZXktdmFsdWUKICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYWlycyB0aGF0IGFyZSBub3Qgb3RoZXJ3aXNlIHJlcHJlc2VudGVkIGJ5
IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4gVGhlIGRlZmF1bHQgaXMgdGhl
IGVtcHR5IGRpY3Rpb25hcnkuCisKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBv
dXRwdXRfZm9ybWF0LCB2ZXJib3NpdHk9MSwgZmlsdGVyPU5vbmUsCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG91dHB1dF9mb3JtYXQ9ImVtYWNzIiwgdmVyYm9zaXR5PTEsIGZpbHRlcj1Ob25lLAog
ICAgICAgICAgICAgICAgICBnaXRfY29tbWl0PU5vbmUsIGV4dHJhX2ZsYWdfdmFsdWVzPU5vbmUp
OgogICAgICAgICBpZiBmaWx0ZXIgaXMgTm9uZToKICAgICAgICAgICAgIGZpbHRlciA9IENhdGVn
b3J5RmlsdGVyKFtdKQogICAgICAgICBpZiBleHRyYV9mbGFnX3ZhbHVlcyBpcyBOb25lOgogICAg
ICAgICAgICAgZXh0cmFfZmxhZ192YWx1ZXMgPSB7fQogCisgICAgICAgIGlmIG91dHB1dF9mb3Jt
YXQgbm90IGluICgiZW1hY3MiLCAidnM3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdJbnZhbGlkICJvdXRwdXRfZm9ybWF0IiBwYXJhbWV0ZXI6ICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3ZhbHVlIG11c3QgYmUgImVtYWNzIiBvciAidnM3Ii4gJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnVmFsdWUgZ2l2ZW46ICIlcyIuJyAlIG91dHB1dF9mb3JtYXQp
CisKKyAgICAgICAgaWYgKHZlcmJvc2l0eSA8IDEpIG9yICh2ZXJib3NpdHkgPiA1KToKKyAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgInZlcmJvc2l0eSIgcGFyYW1ldGVyOiAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBtdXN0IGJlIGFuIGludGVnZXIg
YmV0d2VlbiAxLTUgaW5jbHVzaXZlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdW
YWx1ZSBnaXZlbjogIiVzIi4nICUgdmVyYm9zaXR5KQorCiAgICAgICAgIHNlbGYub3V0cHV0X2Zv
cm1hdCA9IG91dHB1dF9mb3JtYXQKICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkK
ICAgICAgICAgc2VsZi5maWx0ZXIgPSBmaWx0ZXIKICAgICAgICAgc2VsZi5naXRfY29tbWl0ID0g
Z2l0X2NvbW1pdAogICAgICAgICBzZWxmLmV4dHJhX2ZsYWdfdmFsdWVzID0gZXh0cmFfZmxhZ192
YWx1ZXMKIAorICAgIGRlZiBzaG91bGRfcmVwb3J0X2Vycm9yKHNlbGYsIGNhdGVnb3J5LCBjb25m
aWRlbmNlX2luX2Vycm9yKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgYW4gZXJyb3Igc2hv
dWxkIGJlIHJlcG9ydGVkLgogCi0jIEZJWE1FOiBFbGltaW5hdGUgdGhlIG5lZWQgZm9yIHRoaXMg
ZnVuY3Rpb24uCi0jICAgICAgICBPcHRpb25zIHNob3VsZCBiZSBwYXNzZWQgaW50byBwcm9jZXNz
X2ZpbGUgaW5zdGVhZC4KLWRlZiBzZXRfb3B0aW9ucyhvcHRpb25zKToKLSAgICAiIiJJbml0aWFs
aXplIGdsb2JhbCBfQ3BwU3R5bGVTdGF0ZSBpbnN0YW5jZS4KKyAgICAgICAgQW4gZXJyb3Igc2hv
dWxkIGJlIHJlcG9ydGVkIGlmIHRoZSBjb25maWRlbmNlIGluIHRoZSBlcnJvcgorICAgICAgICBp
cyBhdCBsZWFzdCB0aGUgY3VycmVudCB2ZXJib3NpdHkgbGV2ZWwsIGFuZCBpZiB0aGUgY3VycmVu
dAorICAgICAgICBmaWx0ZXIgc2F5cyB0aGF0IHRoZSBjYXRlZ29yeSBzaG91bGQgYmUgY2hlY2tl
ZC4KIAotICAgIFRoaXMgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIHByb2Nlc3Nf
ZmlsZS4KKyAgICAgICAgQXJnczoKKyAgICAgICAgICBjYXRlZ29yeTogQSBzdHJpbmcgdGhhdCBp
cyBhIHN0eWxlIGNhdGVnb3J5LgorICAgICAgICAgIGNvbmZpZGVuY2VfaW5fZXJyb3I6IEFuIGlu
dGVnZXIgYmV0d2VlbiAxIGFuZCA1LCBpbmNsdXNpdmUsIHRoYXQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXByZXNlbnRzIHRoZSBhcHBsaWNhdGlvbidzIGNvbmZpZGVuY2UgaW4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZXJyb3IuIEEgaGlnaGVyIG51bWJl
ciBzaWduaWZpZXMgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZp
ZGVuY2UuCiAKLSAgICBBcmdzOgotICAgICAgb3B0aW9uczogQSBQcm9jZXNzb3JPcHRpb25zIGlu
c3RhbmNlLgotICAgICIiIgotICAgIGNwcF9zdHlsZS5fc2V0X291dHB1dF9mb3JtYXQob3B0aW9u
cy5vdXRwdXRfZm9ybWF0KQotICAgIGNwcF9zdHlsZS5fc2V0X3ZlcmJvc2VfbGV2ZWwob3B0aW9u
cy52ZXJib3NpdHkpCi0gICAgY3BwX3N0eWxlLl9zZXRfZmlsdGVyKG9wdGlvbnMuZmlsdGVyKQor
ICAgICAgICAiIiIKKyAgICAgICAgaWYgY29uZmlkZW5jZV9pbl9lcnJvciA8IHNlbGYudmVyYm9z
aXR5OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgc2VsZi5maWx0ZXIg
aXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlICMgQWxsIGNhdGVnb3JpZXMgc2hvdWxk
IGJlIGNoZWNrZWQgYnkgZGVmYXVsdC4KKworICAgICAgICByZXR1cm4gc2VsZi5maWx0ZXIuc2hv
dWxkX2NoZWNrKGNhdGVnb3J5KQogCiAKICMgVGhpcyBjbGFzcyBzaG91bGQgbm90IGhhdmUga25v
d2xlZGdlIG9mIHRoZSBmbGFnIGtleSBuYW1lcy4KQEAgLTQzNiw2ICs0NTUsNyBAQCBjbGFzcyBB
cmd1bWVudFBhcnNlcihvYmplY3QpOgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgZXJyb3Jf
bWVzc2FnZTogQSBzdHJpbmcgdGhhdCBpcyBhbiBlcnJvciBtZXNzYWdlIHRvIHByaW50LgorCiAg
ICAgICAgICIiIgogICAgICAgICB1c2FnZSA9IHNlbGYuY3JlYXRlX3VzYWdlKHNlbGYuZGVmYXVs
dHMpCiAgICAgICAgIHNlbGYuZG9jX3ByaW50KHVzYWdlKQpAQCAtNTUxLDcgKzU3MSw3IEBAIGNs
YXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dF9mb3JtYXQpCiAKICAgICAgICAgdmVyYm9zaXR5ID0gaW50KHZlcmJvc2l0eSkKLSAg
ICAgICAgaWYgKCh2ZXJib3NpdHkgPCAxKSBvciAodmVyYm9zaXR5ID4gNSkpOgorICAgICAgICBp
ZiAodmVyYm9zaXR5IDwgMSkgb3IgKHZlcmJvc2l0eSA+IDUpOgogICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignSW52YWxpZCAtLXZlcmJvc2UgdmFsdWUgJXM6IHZhbHVlIG11c3QgJwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnYmUgYmV0d2VlbiAxLTUuJyAlIHZlcmJvc2l0eSkK
IApAQCAtNTYzLDQ4ICs1ODMsOTkgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAg
ICAgICAgcmV0dXJuIChmaWxlbmFtZXMsIG9wdGlvbnMpCiAKIAotZGVmIHByb2Nlc3NfZmlsZShm
aWxlbmFtZSk6Ci0gICAgIiIiQ2hlY2tzIHN0eWxlIGZvciB0aGUgc3BlY2lmaWVkIGZpbGUuCitj
bGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKIAotICAgIElmIHRoZSBzcGVjaWZpZWQgZmlsZW5h
bWUgaXMgJy0nLCBhcHBsaWVzIGNwcF9zdHlsZSB0byB0aGUgc3RhbmRhcmQgaW5wdXQuCi0gICAg
IiIiCi0gICAgaWYgY3BwX3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpIG9yIGZpbGVuYW1lID09
ICctJzoKLSAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSkKLSAgICBlbGlm
IHRleHRfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgICAgIHRleHRfc3R5bGUucHJv
Y2Vzc19maWxlKGZpbGVuYW1lKQorICAgICIiIlN1cHBvcnRzIGNoZWNraW5nIHN0eWxlIGluIGZp
bGVzIGFuZCBwYXRjaGVzLiIiIgogCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgor
ICAgICAgICAiIiJDcmVhdGUgYSBTdHlsZUNoZWNrZXIgaW5zdGFuY2UuCiAKLWRlZiBwcm9jZXNz
X3BhdGNoKHBhdGNoX3N0cmluZyk6Ci0gICAgIiIiRG9lcyBsaW50IG9uIGEgc2luZ2xlIHBhdGNo
LgorICAgICAgICBBcmdzOgorICAgICAgICAgIG9wdGlvbnM6IEEgUHJvY2Vzc29yT3B0aW9ucyBp
bnN0YW5jZS4KIAotICAgIEFyZ3M6Ci0gICAgICBwYXRjaF9zdHJpbmc6IEEgc3RyaW5nIG9mIGEg
cGF0Y2guCi0gICAgIiIiCi0gICAgcGF0Y2ggPSBEaWZmUGFyc2VyKHBhdGNoX3N0cmluZy5zcGxp
dGxpbmVzKCkpCi0gICAgZm9yIGZpbGVuYW1lLCBkaWZmIGluIHBhdGNoLmZpbGVzLml0ZXJpdGVt
cygpOgotICAgICAgICBmaWxlX2V4dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUp
WzFdCi0gICAgICAgIGxpbmVfbnVtYmVycyA9IHNldCgpCi0KLSAgICAgICAgZGVmIGVycm9yX2Zv
cl9wYXRjaChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNz
YWdlKToKLSAgICAgICAgICAgICIiIldyYXBwZXIgZnVuY3Rpb24gb2YgY3BwX3N0eWxlLmVycm9y
IGZvciBwYXRjaGVzLgotCi0gICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIG91dHB1dHMgZXJyb3Jz
IG9ubHkgaWYgdGhlIGxpbmUgbnVtYmVyCi0gICAgICAgICAgICBjb3JyZXNwb25kcyB0byBsaW5l
cyB3aGljaCBhcmUgbW9kaWZpZWQgb3IgYWRkZWQuCi0gICAgICAgICAgICAiIiIKLSAgICAgICAg
ICAgIGlmIG5vdCBsaW5lX251bWJlcnM6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZGlm
Zi5saW5lczoKLSAgICAgICAgICAgICAgICAgICAgIyBXaGVuIGRlbGV0ZWQgbGluZSBpcyBub3Qg
c2V0LCBpdCBtZWFucyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICMgdGhlIGxpbmUgaXMgbmV3
bHkgYWRkZWQuCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lWzBdOgotICAgICAgICAg
ICAgICAgICAgICAgICAgbGluZV9udW1iZXJzLmFkZChsaW5lWzFdKQorICAgICAgICAiIiIKKyAg
ICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucworCisgICAgICAgICMgRklYTUU6IEVsaW1pbmF0
ZSB0aGUgbmVlZCB0byBzZXQgZ2xvYmFsIHN0YXRlIGhlcmUuCisgICAgICAgIGNwcF9zdHlsZS5f
c2V0X3ZlcmJvc2VfbGV2ZWwob3B0aW9ucy52ZXJib3NpdHkpCisKKyAgICBkZWYgX2hhbmRsZV9l
cnJvcihzZWxmLCBmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBt
ZXNzYWdlKToKKyAgICAgICAgIiIiTG9ncyB0aGUgZmFjdCB3ZSd2ZSBmb3VuZCBhIGxpbnQgZXJy
b3IuCiAKLSAgICAgICAgICAgIGlmIGxpbmVfbnVtYmVyIGluIGxpbmVfbnVtYmVyczoKLSAgICAg
ICAgICAgICAgICBjcHBfc3R5bGUuZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBjYXRlZ29y
eSwgY29uZmlkZW5jZSwgbWVzc2FnZSkKKyAgICAgICAgV2UgbG9nIHRoZSBlcnJvciBsb2NhdGlv
biBhbmQgb3VyIGNvbmZpZGVuY2UgaW4gdGhlIGVycm9yLCBpLmUuCisgICAgICAgIGhvdyBjZXJ0
YWluIHdlIGFyZSB0aGUgZXJyb3IgaXMgYSBsZWdpdGltYXRlIHN0eWxlIHJlZ3Jlc3Npb24KKyAg
ICAgICAgdmVyc3VzIGEgbWlzaWRlbnRpZmljYXRpb24gb3IganVzdGlmaWVkIHVzZS4KIAotICAg
ICAgICBpZiBjcHBfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgICAgICAgICBjcHBf
c3R5bGUucHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcj1lcnJvcl9mb3JfcGF0Y2gpCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRh
aW5pbmcgdGhlIGVycm9yLgorICAgICAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRo
ZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGVycm9yLgorICAgICAgICAgIGNhdGVnb3J5OiBBIHN0cmlu
ZyB1c2VkIHRvIGRlc2NyaWJlIHRoZSAiY2F0ZWdvcnkiIHRoaXMgYnVnCisgICAgICAgICAgICAg
ICAgICAgIGZhbGxzIHVuZGVyOiAid2hpdGVzcGFjZSIsIHNheSwgb3IgInJ1bnRpbWUiLgorICAg
ICAgICAgICAgICAgICAgICBDYXRlZ29yaWVzIG1heSBoYXZlIGEgaGllcmFyY2h5IHNlcGFyYXRl
ZCBieSBzbGFzaGVzOgorICAgICAgICAgICAgICAgICAgICAid2hpdGVzcGFjZS9pbmRlbnQiLgor
ICAgICAgICAgIGNvbmZpZGVuY2U6IEEgbnVtYmVyIGZyb20gMS01IHJlcHJlc2VudGluZyBhIGNv
bmZpZGVuY2Ugc2NvcmUKKyAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGVycm9yLCB3aXRo
IDUgbWVhbmluZyB0aGF0IHdlIGFyZSBjZXJ0YWluCisgICAgICAgICAgICAgICAgICAgICAgb2Yg
dGhlIHByb2JsZW0sIGFuZCAxIG1lYW5pbmcgdGhhdCBpdCBjb3VsZCBiZSBhCisgICAgICAgICAg
ICAgICAgICAgICAgbGVnaXRpbWF0ZSBjb25zdHJ1Y3QuCisgICAgICAgICAgbWVzc2FnZTogVGhl
IGVycm9yIG1lc3NhZ2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLm9wdGlv
bnMuc2hvdWxkX3JlcG9ydF9lcnJvcihjYXRlZ29yeSwgY29uZmlkZW5jZSk6CisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICAjIEZJWE1FOiBFbGltaW5hdGUgdGhlIG5lZWQgdG8gcmVmZXJl
bmNlIGNwcF9zdHlsZSBoZXJlLgorICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5p
bmNyZW1lbnRfZXJyb3JfY291bnQoKQorCisgICAgICAgIGlmIHNlbGYub3B0aW9ucy5vdXRwdXRf
Zm9ybWF0ID09ICd2czcnOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnJXMoJXMpOiAg
JXMgIFslc10gWyVkXVxuJyAlICgKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZV9udW1i
ZXIsIG1lc3NhZ2UsIGNhdGVnb3J5LCBjb25maWRlbmNlKSkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyVzOiVzOiAgJXMgIFslc10gWyVkXVxuJyAlICgKKyAg
ICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZV9udW1iZXIsIG1lc3NhZ2UsIGNhdGVnb3J5LCBj
b25maWRlbmNlKSkKKworICAgIGRlZiBwcm9jZXNzX2ZpbGUoc2VsZiwgZmlsZW5hbWUpOgorICAg
ICAgICAiIiJDaGVja3Mgc3R5bGUgZm9yIHRoZSBzcGVjaWZpZWQgZmlsZS4KKworICAgICAgICBJ
ZiB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lIGlzICctJywgYXBwbGllcyBjcHBfc3R5bGUgdG8gdGhl
IHN0YW5kYXJkIGlucHV0LgorCisgICAgICAgICIiIgorICAgICAgICBpZiBjcHBfc3R5bGUuY2Fu
X2hhbmRsZShmaWxlbmFtZSkgb3IgZmlsZW5hbWUgPT0gJy0nOgorICAgICAgICAgICAgY3BwX3N0
eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgc2VsZi5faGFuZGxlX2Vycm9yKQogICAgICAgICBl
bGlmIHRleHRfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgICAgICAgICB0ZXh0X3N0
eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3JfZm9yX3BhdGNoKQorICAgICAg
ICAgICAgdGV4dF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIHNlbGYuX2hhbmRsZV9lcnJv
cikKKworICAgIGRlZiBwcm9jZXNzX3BhdGNoKHNlbGYsIHBhdGNoX3N0cmluZyk6CisgICAgICAg
ICIiIkRvZXMgbGludCBvbiBhIHNpbmdsZSBwYXRjaC4KKworICAgICAgICBBcmdzOgorICAgICAg
ICAgIHBhdGNoX3N0cmluZzogQSBzdHJpbmcgb2YgYSBwYXRjaC4KKworICAgICAgICAiIiIKKyAg
ICAgICAgcGF0Y2ggPSBEaWZmUGFyc2VyKHBhdGNoX3N0cmluZy5zcGxpdGxpbmVzKCkpCisgICAg
ICAgIGZvciBmaWxlbmFtZSwgZGlmZiBpbiBwYXRjaC5maWxlcy5pdGVyaXRlbXMoKToKKyAgICAg
ICAgICAgIGZpbGVfZXh0ZW5zaW9uID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0KKyAg
ICAgICAgICAgIGxpbmVfbnVtYmVycyA9IHNldCgpCisKKyAgICAgICAgICAgIGRlZiBlcnJvcl9m
b3JfcGF0Y2goZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVz
c2FnZSk6CisgICAgICAgICAgICAgICAgIiIiV3JhcHBlciBmdW5jdGlvbiBvZiBjcHBfc3R5bGUu
ZXJyb3IgZm9yIHBhdGNoZXMuCisKKyAgICAgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIG91dHB1
dHMgZXJyb3JzIG9ubHkgaWYgdGhlIGxpbmUgbnVtYmVyCisgICAgICAgICAgICAgICAgY29ycmVz
cG9uZHMgdG8gbGluZXMgd2hpY2ggYXJlIG1vZGlmaWVkIG9yIGFkZGVkLgorICAgICAgICAgICAg
ICAgICIiIgorICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lX251bWJlcnM6CisgICAgICAgICAg
ICAgICAgICAgIGZvciBsaW5lIGluIGRpZmYubGluZXM6CisgICAgICAgICAgICAgICAgICAgICAg
ICAjIFdoZW4gZGVsZXRlZCBsaW5lIGlzIG5vdCBzZXQsIGl0IG1lYW5zIHRoYXQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICMgdGhlIGxpbmUgaXMgbmV3bHkgYWRkZWQuCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBub3QgbGluZVswXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
aW5lX251bWJlcnMuYWRkKGxpbmVbMV0pCisKKyAgICAgICAgICAgICAgICBpZiBsaW5lX251bWJl
ciBpbiBsaW5lX251bWJlcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9lcnJv
cihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQor
CisgICAgICAgICAgICBpZiBjcHBfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6CisgICAgICAg
ICAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3JfZm9yX3BhdGNo
KQorICAgICAgICAgICAgZWxpZiB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpOgorICAg
ICAgICAgICAgICAgIHRleHRfc3R5bGUucHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcl9mb3Jf
cGF0Y2gpCiAKIAogZGVmIGVycm9yX2NvdW50KCk6CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biA1MzIzMykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBpbXBvcnQgdW5pdHRl
c3QKIAogaW1wb3J0IGNoZWNrZXIgYXMgc3R5bGUKIGZyb20gY2hlY2tlciBpbXBvcnQgQ2F0ZWdv
cnlGaWx0ZXIKLQorZnJvbSBjaGVja2VyIGltcG9ydCBQcm9jZXNzb3JPcHRpb25zCiAKIGNsYXNz
IENhdGVnb3J5RmlsdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTg1LDYgKzg1LDU0
IEBAIGNsYXNzIENhdGVnb3J5RmlsdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2EKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGZpbHRlci5zaG91bGRfY2hlY2soImEiKSkKIAogCitjbGFzcyBQcm9jZXNz
b3JPcHRpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBQcm9jZXNz
b3JPcHRpb25zIGNsYXNzLiIiIgorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAg
IiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKKyAgICAgICAgIyBDaGVjayBkZWZhdWx0
IHBhcmFtZXRlcnMuCisgICAgICAgIG9wdGlvbnMgPSBQcm9jZXNzb3JPcHRpb25zKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5leHRyYV9mbGFnX3ZhbHVlcywge30pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZmlsdGVyLCBDYXRlZ29yeUZpbHRlcihbXSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbnMuZ2l0X2NvbW1pdCwgTm9uZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5vdXRwdXRfZm9ybWF0LCAiZW1hY3MiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLnZlcmJvc2l0eSwgMSkKKworICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBQcm9jZXNzb3JPcHRpb25zLCBvdXRwdXRf
Zm9ybWF0PSJiYWQiKQorICAgICAgICBQcm9jZXNzb3JPcHRpb25zKG91dHB1dF9mb3JtYXQ9ImVt
YWNzIikgIyBObyBWYWx1ZUVycm9yOiB3b3JrcworICAgICAgICBQcm9jZXNzb3JPcHRpb25zKG91
dHB1dF9mb3JtYXQ9InZzNyIpICMgd29ya3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgUHJvY2Vzc29yT3B0aW9ucywgdmVyYm9zaXR5PTApCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFByb2Nlc3Nvck9wdGlvbnMsIHZlcmJvc2l0eT02KQorICAg
ICAgICBQcm9jZXNzb3JPcHRpb25zKHZlcmJvc2l0eT0xKSAjIHdvcmtzCisgICAgICAgIFByb2Nl
c3Nvck9wdGlvbnModmVyYm9zaXR5PTUpICMgd29ya3MKKworICAgICAgICAjIENoZWNrIGF0dHJp
YnV0ZXMuCisgICAgICAgIG9wdGlvbnMgPSBQcm9jZXNzb3JPcHRpb25zKGV4dHJhX2ZsYWdfdmFs
dWVzPXsiZXh0cmFfdmFsdWUiIDogMn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbHRlcj1DYXRlZ29yeUZpbHRlcihbIisiXSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdpdF9jb21taXQ9ImNvbW1pdCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9InZzNyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcmJvc2l0eT0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRp
b25zLmV4dHJhX2ZsYWdfdmFsdWVzLCB7ImV4dHJhX3ZhbHVlIiA6IDJ9KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhvcHRpb25zLmZpbHRlciwgQ2F0ZWdvcnlGaWx0ZXIoWyIrIl0pKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21taXQsICJjb21taXQiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLm91dHB1dF9mb3JtYXQsICJ2czciKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLnZlcmJvc2l0eSwgMykKKworICAgIGRlZiB0
ZXN0X3Nob3VsZF9yZXBvcnRfZXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3Qgc2hvdWxkX3Jl
cG9ydF9lcnJvcigpLiIiIgorICAgICAgICBmaWx0ZXIgPSBDYXRlZ29yeUZpbHRlcihbIi14eXoi
XSkKKyAgICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nvck9wdGlvbnMoZmlsdGVyPWZpbHRlciwgdmVy
Ym9zaXR5PTMpCisKKyAgICAgICAgIyBUZXN0IHZlcmJvc2l0eQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUob3B0aW9ucy5zaG91bGRfcmVwb3J0X2Vycm9yKCJhYmMiLCAzKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShvcHRpb25zLnNob3VsZF9yZXBvcnRfZXJyb3IoImFiYyIsIDIpKQorCisg
ICAgICAgICMgVGVzdCBmaWx0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMuc2hv
dWxkX3JlcG9ydF9lcnJvcigieHkiLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRp
b25zLnNob3VsZF9yZXBvcnRfZXJyb3IoInh5eiIsIDMpKQorCisKIGNsYXNzIERlZmF1bHRBcmd1
bWVudHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3RzIHZhbGlkaXR5IG9m
IGRlZmF1bHQgYXJndW1lbnRzIHVzZWQgYnkgY2hlY2std2Via2l0LXN0eWxlLiIiIgpAQCAtMjM5
LDYgKzI4NywxMCBAQCBjbGFzcyBBcmd1bWVudFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhCiAg
ICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tZmlsdGVyPStmb28sLWJhciddKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmZpbHRlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ2F0ZWdvcnlGaWx0ZXIoWyItIiwgIit3aGl0ZXNwYWNlIiwgIitmb28iLCAi
LWJhciJdKSkKKyAgICAgICAgIyBTcHVyaW91cyB3aGl0ZSBzcGFjZSBpbiBmaWx0ZXIgcnVsZXMu
CisgICAgICAgIChmaWxlcywgb3B0aW9ucykgPSBwYXJzZShbJy0tZmlsdGVyPStmb28gLC1iYXIn
XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5maWx0ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIENhdGVnb3J5RmlsdGVyKFsiLSIsICIrd2hpdGVzcGFjZSIsICIrZm9v
IiwgIi1iYXIiXSkpCiAKICAgICAgICAgIyBQYXNzIGV4dHJhIGZsYWcgdmFsdWVzLgogICAgICAg
ICAoZmlsZXMsIG9wdGlvbnMpID0gcGFyc2UoWyctLWV4dHJhJ10sIFsnZXh0cmEnXSkKSW5kZXg6
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5CShy
ZXZpc2lvbiA1MzIzMykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3Bw
X3N0eWxlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsMTcgKzI0OCw2IEBAIGNsYXNzIF9DcHBT
dHlsZVN0YXRlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxm
LnZlcmJvc2VfbGV2ZWwgPSAxICAjIGdsb2JhbCBzZXR0aW5nLgogICAgICAgICBzZWxmLmVycm9y
X2NvdW50ID0gMCAgICAjIGdsb2JhbCBjb3VudCBvZiByZXBvcnRlZCBlcnJvcnMKLSAgICAgICAg
IyBmaWx0ZXIgdG8gYXBwbHkgd2hlbiBlbWl0dGluZyBlcnJvciBtZXNzYWdlcwotICAgICAgICBz
ZWxmLmZpbHRlciA9IE5vbmUKLQotICAgICAgICAjIG91dHB1dCBmb3JtYXQ6Ci0gICAgICAgICMg
ImVtYWNzIiAtIGZvcm1hdCB0aGF0IGVtYWNzIGNhbiBwYXJzZSAoZGVmYXVsdCkKLSAgICAgICAg
IyAidnM3IiAtIGZvcm1hdCB0aGF0IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDcgY2FuIHBhcnNl
Ci0gICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9ICdlbWFjcycKLQotICAgIGRlZiBzZXRfb3V0
cHV0X2Zvcm1hdChzZWxmLCBvdXRwdXRfZm9ybWF0KToKLSAgICAgICAgIiIiU2V0cyB0aGUgb3V0
cHV0IGZvcm1hdCBmb3IgZXJyb3JzLiIiIgotICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSBv
dXRwdXRfZm9ybWF0CiAKICAgICBkZWYgc2V0X3ZlcmJvc2VfbGV2ZWwoc2VsZiwgbGV2ZWwpOgog
ICAgICAgICAiIiJTZXRzIHRoZSBtb2R1bGUncyB2ZXJib3NpdHksIGFuZCByZXR1cm5zIHRoZSBw
cmV2aW91cyBzZXR0aW5nLiIiIgpAQCAtMjY2LDE1ICsyNTUsNiBAQCBjbGFzcyBfQ3BwU3R5bGVT
dGF0ZShvYmplY3QpOgogICAgICAgICBzZWxmLnZlcmJvc2VfbGV2ZWwgPSBsZXZlbAogICAgICAg
ICByZXR1cm4gbGFzdF92ZXJib3NlX2xldmVsCiAKLSAgICBkZWYgc2V0X2ZpbHRlcihzZWxmLCBm
aWx0ZXIpOgotICAgICAgICAiIiJTZXRzIHRoZSBlcnJvci1tZXNzYWdlIGZpbHRlci4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgIGZpbHRlcjogQSBDYXRlZ29yeUZpbHRlciBpbnN0YW5jZS4K
LQotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5maWx0ZXIgPSBmaWx0ZXIKLQogICAgIGRlZiBy
ZXNldF9lcnJvcl9jb3VudChzZWxmKToKICAgICAgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3MgZXJy
b3Igc3RhdGlzdGljIGJhY2sgdG8gemVyby4iIiIKICAgICAgICAgc2VsZi5lcnJvcl9jb3VudCA9
IDAKQEAgLTI4NywxNiArMjY3LDYgQEAgY2xhc3MgX0NwcFN0eWxlU3RhdGUob2JqZWN0KToKIF9j
cHBfc3R5bGVfc3RhdGUgPSBfQ3BwU3R5bGVTdGF0ZSgpCiAKIAotZGVmIF9vdXRwdXRfZm9ybWF0
KCk6Ci0gICAgIiIiR2V0cyB0aGUgbW9kdWxlJ3Mgb3V0cHV0IGZvcm1hdC4iIiIKLSAgICByZXR1
cm4gX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0Ci0KLQotZGVmIF9zZXRfb3V0cHV0X2Zv
cm1hdChvdXRwdXRfZm9ybWF0KToKLSAgICAiIiJTZXRzIHRoZSBtb2R1bGUncyBvdXRwdXQgZm9y
bWF0LiIiIgotICAgIF9jcHBfc3R5bGVfc3RhdGUuc2V0X291dHB1dF9mb3JtYXQob3V0cHV0X2Zv
cm1hdCkKLQotCiBkZWYgX3ZlcmJvc2VfbGV2ZWwoKToKICAgICAiIiJSZXR1cm5zIHRoZSBtb2R1
bGUncyB2ZXJib3NpdHkgc2V0dGluZy4iIiIKICAgICByZXR1cm4gX2NwcF9zdHlsZV9zdGF0ZS52
ZXJib3NlX2xldmVsCkBAIC0zMDcsMjQgKzI3Nyw2IEBAIGRlZiBfc2V0X3ZlcmJvc2VfbGV2ZWwo
bGV2ZWwpOgogICAgIHJldHVybiBfY3BwX3N0eWxlX3N0YXRlLnNldF92ZXJib3NlX2xldmVsKGxl
dmVsKQogCiAKLWRlZiBfZmlsdGVyKCk6Ci0gICAgIiIiUmV0dXJucyB0aGUgbW9kdWxlJ3MgQ2F0
ZWdvcnlGaWx0ZXIgaW5zdGFuY2UuIiIiCi0gICAgcmV0dXJuIF9jcHBfc3R5bGVfc3RhdGUuZmls
dGVyCi0KLQotZGVmIF9zZXRfZmlsdGVyKGZpbHRlcik6Ci0gICAgIiIiU2V0cyB0aGUgbW9kdWxl
J3MgZXJyb3ItbWVzc2FnZSBmaWx0ZXIuCi0KLSAgICBUaGUgZmlsdGVyIGlzIGFwcGxpZWQgd2hl
biBkZWNpZGluZyB3aGV0aGVyIHRvIGVtaXQgYSBnaXZlbgotICAgIGVycm9yIG1lc3NhZ2UuCi0K
LSAgICBBcmdzOgotICAgICAgZmlsdGVyOiBBIENhdGVnb3J5RmlsdGVyIGluc3RhbmNlLgotCi0g
ICAgIiIiCi0gICAgX2NwcF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVyKGZpbHRlcikKLQotCiBkZWYg
ZXJyb3JfY291bnQoKToKICAgICAiIiJSZXR1cm5zIHRoZSBnbG9iYWwgY291bnQgb2YgcmVwb3J0
ZWQgZXJyb3JzLiIiIgogICAgIHJldHVybiBfY3BwX3N0eWxlX3N0YXRlLmVycm9yX2NvdW50CkBA
IC00NzcsNTEgKzQyOSw2IEBAIGNsYXNzIEZpbGVJbmZvOgogICAgICAgICByZXR1cm4gc2VsZi5l
eHRlbnNpb24oKVsxOl0gaW4gKCdjJywgJ2NjJywgJ2NwcCcsICdjeHgnKQogCiAKLWRlZiBfc2hv
dWxkX3ByaW50X2Vycm9yKGNhdGVnb3J5LCBjb25maWRlbmNlKToKLSAgICAiIiJSZXR1cm5zIHRy
dWUgaWZmIGNvbmZpZGVuY2UgPj0gdmVyYm9zZSwgYW5kIGNhdGVnb3J5IHBhc3NlcyBmaWx0ZXIu
IiIiCi0gICAgIyBUaGVyZSBhcmUgdHdvIHdheXMgd2UgbWlnaHQgZGVjaWRlIG5vdCB0byBwcmlu
dCBhbiBlcnJvciBtZXNzYWdlOgotICAgICMgdGhlIHZlcmJvc2l0eSBsZXZlbCBpc24ndCBoaWdo
IGVub3VnaCwgb3IgdGhlIGZpbHRlcnMgZmlsdGVyIGl0IG91dC4KLSAgICBpZiBjb25maWRlbmNl
IDwgX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsOgotICAgICAgICByZXR1cm4gRmFsc2UK
LQotICAgIGZpbHRlciA9IF9maWx0ZXIoKQotCi0gICAgaWYgZmlsdGVyIGlzIE5vbmU6Ci0gICAg
ICAgIHJldHVybiBUcnVlICMgQWxsIGNhdGVnb3JpZXMgc2hvdWxkIGJlIGNoZWNrZWQgYnkgZGVm
YXVsdC4KLQotICAgIHJldHVybiBmaWx0ZXIuc2hvdWxkX2NoZWNrKGNhdGVnb3J5KQotCi0KLWRl
ZiBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNz
YWdlKToKLSAgICAiIiJMb2dzIHRoZSBmYWN0IHdlJ3ZlIGZvdW5kIGEgbGludCBlcnJvci4KLQot
ICAgIFdlIGxvZyB3aGVyZSB0aGUgZXJyb3Igd2FzIGZvdW5kLCBhbmQgYWxzbyBvdXIgY29uZmlk
ZW5jZSBpbiB0aGUgZXJyb3IsCi0gICAgdGhhdCBpcywgaG93IGNlcnRhaW4gd2UgYXJlIHRoaXMg
aXMgYSBsZWdpdGltYXRlIHN0eWxlIHJlZ3Jlc3Npb24sIGFuZAotICAgIG5vdCBhIG1pc2lkZW50
aWZpY2F0aW9uIG9yIGEgdXNlIHRoYXQncyBzb21ldGltZXMganVzdGlmaWVkLgotCi0gICAgQXJn
czoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBl
cnJvci4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIGNvbnRhaW5p
bmcgdGhlIGVycm9yLgotICAgICAgY2F0ZWdvcnk6IEEgc3RyaW5nIHVzZWQgdG8gZGVzY3JpYmUg
dGhlICJjYXRlZ29yeSIgdGhpcyBidWcKLSAgICAgICAgICAgICAgICBmYWxscyB1bmRlcjogIndo
aXRlc3BhY2UiLCBzYXksIG9yICJydW50aW1lIi4gIENhdGVnb3JpZXMKLSAgICAgICAgICAgICAg
ICBtYXkgaGF2ZSBhIGhpZXJhcmNoeSBzZXBhcmF0ZWQgYnkgc2xhc2hlczogIndoaXRlc3BhY2Uv
aW5kZW50Ii4KLSAgICAgIGNvbmZpZGVuY2U6IEEgbnVtYmVyIGZyb20gMS01IHJlcHJlc2VudGlu
ZyBhIGNvbmZpZGVuY2Ugc2NvcmUgZm9yCi0gICAgICAgICAgICAgICAgICB0aGUgZXJyb3IsIHdp
dGggNSBtZWFuaW5nIHRoYXQgd2UgYXJlIGNlcnRhaW4gb2YgdGhlIHByb2JsZW0sCi0gICAgICAg
ICAgICAgICAgICBhbmQgMSBtZWFuaW5nIHRoYXQgaXQgY291bGQgYmUgYSBsZWdpdGltYXRlIGNv
bnN0cnVjdC4KLSAgICAgIG1lc3NhZ2U6IFRoZSBlcnJvciBtZXNzYWdlLgotICAgICIiIgotICAg
ICMgVGhlcmUgYXJlIHR3byB3YXlzIHdlIG1pZ2h0IGRlY2lkZSBub3QgdG8gcHJpbnQgYW4gZXJy
b3IgbWVzc2FnZToKLSAgICAjIHRoZSB2ZXJib3NpdHkgbGV2ZWwgaXNuJ3QgaGlnaCBlbm91Z2gs
IG9yIHRoZSBmaWx0ZXJzIGZpbHRlciBpdCBvdXQuCi0gICAgaWYgX3Nob3VsZF9wcmludF9lcnJv
cihjYXRlZ29yeSwgY29uZmlkZW5jZSk6Ci0gICAgICAgIF9jcHBfc3R5bGVfc3RhdGUuaW5jcmVt
ZW50X2Vycm9yX2NvdW50KCkKLSAgICAgICAgaWYgX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9y
bWF0ID09ICd2czcnOgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnJXMoJXMpOiAgJXMg
IFslc10gWyVkXVxuJyAlICgKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZV9udW1iZXIs
IG1lc3NhZ2UsIGNhdGVnb3J5LCBjb25maWRlbmNlKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoJyVzOiVzOiAgJXMgIFslc10gWyVkXVxuJyAlICgKLSAgICAg
ICAgICAgICAgICBmaWxlbmFtZSwgbGluZV9udW1iZXIsIG1lc3NhZ2UsIGNhdGVnb3J5LCBjb25m
aWRlbmNlKSkKLQotCiAjIE1hdGNoZXMgc3RhbmRhcmQgQysrIGVzY2FwZSBlc2VxdWVuY2VzIHBl
ciAyLjEzLjIuMyBvZiB0aGUgQysrIHN0YW5kYXJkLgogX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5F
X0VTQ0FQRVMgPSByZS5jb21waWxlKAogICAgIHInXFwoW2FiZm5ydHY/IlxcXCddfFxkK3x4WzAt
OWEtZkEtRl0rKScpCkBAIC0yOTY5LDcgKzI4NzYsNyBAQCBkZWYgcHJvY2Vzc19maWxlX2RhdGEo
ZmlsZW5hbWUsIGZpbGVfZXh0CiAgICAgY2hlY2tfZm9yX25ld19saW5lX2F0X2VvZihmaWxlbmFt
ZSwgbGluZXMsIGVycm9yKQogCiAKLWRlZiBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9yPWVy
cm9yKToKK2RlZiBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9yKToKICAgICAiIiJQZXJmb3Jt
cyBjcHBfc3R5bGUgb24gYSBzaW5nbGUgZmlsZS4KIAogICAgIEFyZ3M6CkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0
dGVzdC5weQkocmV2aXNpb24gNTMyMzMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NiBAQCBpbXBvcnQgY3BwX3N0eWxlCiAjICAgICAgICBGSVhNRSBub3RlcyBuZWFyIHRoZSBTVFlM
RV9DQVRFR09SSUVTIGRlZmluaXRpb24gZm9yIGEKICMgICAgICAgIHN1Z2dlc3Rpb24gb24gaG93
IHRvIGJlc3QgZG8gdGhpcy4KIGZyb20gY2hlY2tlciBpbXBvcnQgU1RZTEVfQ0FURUdPUklFUwot
ZnJvbSBjaGVja2VyIGltcG9ydCBDYXRlZ29yeUZpbHRlcgogCiAjIFRoaXMgY2xhc3Mgd29ya3Mg
YXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBfc3R5bGUuRXJyb3IKICMgZnVu
Y3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2ZXJpZnkgZWFjaCBjYXRlZ29yeSB3
ZSBzZWUKQEAgLTY2LDggKzY1LDcgQEAgY2xhc3MgRXJyb3JDb2xsZWN0b3I6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAnTWVzc2FnZSAiJXMiIGhhcyBjYXRlZ29yeSAiJXMiLCcKICAgICAgICAg
ICAgICAgICAgICAgICAgICcgd2hpY2ggaXMgbm90IGluIFNUWUxFX0NBVEVHT1JJRVMnICUgKG1l
c3NhZ2UsIGNhdGVnb3J5KSkKICAgICAgICAgc2VsZi5fc2Vlbl9zdHlsZV9jYXRlZ29yaWVzW2Nh
dGVnb3J5XSA9IDEKLSAgICAgICAgaWYgY3BwX3N0eWxlLl9zaG91bGRfcHJpbnRfZXJyb3IoY2F0
ZWdvcnksIGNvbmZpZGVuY2UpOgotICAgICAgICAgICAgc2VsZi5fZXJyb3JzLmFwcGVuZCgnJXMg
IFslc10gWyVkXScgJSAobWVzc2FnZSwgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQorICAgICAgICBz
ZWxmLl9lcnJvcnMuYXBwZW5kKCclcyAgWyVzXSBbJWRdJyAlIChtZXNzYWdlLCBjYXRlZ29yeSwg
Y29uZmlkZW5jZSkpCiAKICAgICBkZWYgcmVzdWx0cyhzZWxmKToKICAgICAgICAgaWYgbGVuKHNl
bGYuX2Vycm9ycykgPCAyOgpAQCAtMTU3MSwzNCArMTU2OSw2IEBAIGNsYXNzIENwcFN0eWxlVGVz
dChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGEgPSA1
O1x0Ly8gc2V0IGEgdG8gNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RhYiBmb3VuZDsg
YmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFdJykKIAotICAgIGRlZiB0
ZXN0X2ZpbHRlcihzZWxmKToKLSAgICAgICAgb2xkX2ZpbHRlciA9IGNwcF9zdHlsZS5fY3BwX3N0
eWxlX3N0YXRlLmZpbHRlcgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjcHBfc3R5bGUuX2Nw
cF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVyKENhdGVnb3J5RmlsdGVyKFsnLScsICcrd2hpdGVzcGFj
ZScsICctd2hpdGVzcGFjZS9pbmRlbnQnXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9saW50
KAotICAgICAgICAgICAgICAgICcvLyBIZWxsbyB0aGVyZSAnLAotICAgICAgICAgICAgICAgICdM
aW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNlIGV4dHJhIHNw
YWNlcy4nCi0gICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvZW5kX29mX2xpbmVdIFs0XScp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYSA9IChpbnQpMS4wOycsICcnKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHdlaXJkIG9wZW5pbmcgc3BhY2UnLCAnJykK
LSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRl
LmZpbHRlciA9IG9sZF9maWx0ZXIKLQotICAgIGRlZiB0ZXN0X2ZpbHRlcl9hcHBlbmRpbmcoc2Vs
Zik6Ci0gICAgICAgIG9sZF9maWx0ZXIgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0
ZXIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBSZXNldCBmaWx0ZXJzCi0gICAgICAgICAg
ICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5zZXRfZmlsdGVyKENhdGVnb3J5RmlsdGVyKFsn
LXdoaXRlc3BhY2UnXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLyBIZWxsbyB0
aGVyZSAnLCAnJykKLSAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnNldF9m
aWx0ZXIoQ2F0ZWdvcnlGaWx0ZXIoWyctd2hpdGVzcGFjZScsICcrd2hpdGVzcGFjZS9lbmRfb2Zf
bGluZSddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAgICAg
Jy8vIEhlbGxvIHRoZXJlICcsCi0gICAgICAgICAgICAgICAgJ0xpbmUgZW5kcyBpbiB3aGl0ZXNw
YWNlLiAgQ29uc2lkZXIgZGVsZXRpbmcgdGhlc2UgZXh0cmEgc3BhY2VzLicKLSAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9lbmRfb2ZfbGluZV0gWzRdJykKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJyB3ZWlyZCBvcGVuaW5nIHNwYWNlJywgJycpCi0gICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXIgPSBvbGRfZmls
dGVyCi0KICAgICBkZWYgdGVzdF91bm5hbWVkX25hbWVzcGFjZXNfaW5faGVhZGVycyhzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soCiAgICAgICAgICAgICAn
Zm9vLmgnLCAnbmFtZXNwYWNlIHsnLApJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS90ZXh0X3N0eWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weQkocmV2aXNpb24gNTMyMzMpCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGUucHkJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBsaW5lcywg
ZQogICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS90
YWInLCA1LCAnTGluZSBjb250YWlucyB0YWIgY2hhcmFjdGVyLicpCiAKIAotZGVmIHByb2Nlc3Nf
ZmlsZShmaWxlbmFtZSwgZXJyb3I9Y3BwX3N0eWxlLmVycm9yKToKK2RlZiBwcm9jZXNzX2ZpbGUo
ZmlsZW5hbWUsIGVycm9yKToKICAgICAiIiJQZXJmb3JtcyBsaW50IGNoZWNrIGZvciB0ZXh0IG9u
IGEgc2luZ2xlIGZpbGUuIiIiCiAgICAgaWYgKG5vdCBjYW5faGFuZGxlKGZpbGVuYW1lKSk6CiAg
ICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0lnbm9yaW5nICVzOyBub3QgYSBzdXBwb3J0ZWQgZmls
ZVxuJyAlIGZpbGVuYW1lKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>