<?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>26715</bug_id>
          
          <creation_ts>2009-06-25 01:22:15 -0700</creation_ts>
          <short_desc>bugzilla-tool should automate rollouts</short_desc>
          <delta_ts>2009-09-11 10:12:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>28193</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>evan</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>128125</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-25 01:22:15 -0700</bug_when>
    <thetext>bugzilla-tool should automate rollouts

1.  Should take an svn revision and know how to search through git logs as necessary. (I think git svn has a command for this.)
2.  Do the revert.
3.  Update the ChangeLog to note that no review is needed.
4.  Test that things build correctly, etc.
5.  Re-open the bug with a rollout message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128129</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-25 01:31:13 -0700</bug_when>
    <thetext>Once we have a way to do automated rollbacks, then we could eventually consider adding a web interface to do so. :)  Never have a red tree again! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129476</commentid>
    <comment_count>2</comment_count>
      <attachid>32173</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-02 02:24:24 -0700</bug_when>
    <thetext>Created attachment 32173
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129477</commentid>
    <comment_count>3</comment_count>
      <attachid>32174</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-02 02:59:40 -0700</bug_when>
    <thetext>Created attachment 32174
Working, but not ready for primetime</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132724</commentid>
    <comment_count>4</comment_count>
      <attachid>32974</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-17 15:04:40 -0700</bug_when>
    <thetext>Created attachment 32974
Updated patch for rollout support


---
 4 files changed, 189 insertions(+), 51 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132726</commentid>
    <comment_count>5</comment_count>
      <attachid>32976</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-17 15:06:24 -0700</bug_when>
    <thetext>Created attachment 32976
Begone ye tabs!


---
 4 files changed, 189 insertions(+), 51 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132832</commentid>
    <comment_count>6</comment_count>
      <attachid>32976</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-17 19:42:25 -0700</bug_when>
    <thetext>Comment on attachment 32976
Begone ye tabs!

Just a few things to address.  I&apos;m most concerned about the issue I mentioned in update_changelog_for_revert.

Two general notes:
1. It was pointed out to me that python style is to have two blank lines between top level functions: &quot;Separate top-level function and class definitions with two blank lines.&quot;
2. Many comments don&apos;t end with periods.  Please add them.

&gt; diff --git a/WebKitTools/Scripts/bugzilla-tool b/WebKitTools/Scripts/bugzilla-tool

&gt; +def update_changelog_for_revert(changelog_path, revision):
&gt; +    removing_boilerplate = False
&gt; +    # inplace=1 creates a backup file and re-directs stdout to the file
&gt; +    for line in fileinput.FileInput(changelog_path, inplace=1):
&gt; +        if re.search(&apos;Reviewed by&apos;, line):

I&apos;m confused.  How does this stop after this boilerplate change log that was just created?

It looks like it goes through the whole changelog removing all descriptions along the way.


&gt; +            print line.replace(&quot;Reviewed by NOBODY (OOPS!)&quot;, &quot;No review, rolling out %s&quot; % revision),

I like to prefix revisions with an r.
Consider: ...&quot;No review, rolling out r%s&quot;...


&gt; +class RolloutCommit(Command):
...
&gt; +    def create_changelogs_for_revert(scm, revision):
...
&gt; +        # This could move to prepare-ChangeLog by adding a --revert= option

That might be easier.  I think the current code has a bug as I noted above.


&gt; diff --git a/WebKitTools/Scripts/modules/scm.py b/WebKitTools/Scripts/modules/scm.py

&gt; +    @classmethod
&gt; +    def git_commit_from_svn_revision(cls, revision):
&gt; +        git_log_output = cls.run_command([&apos;git&apos;, &apos;svn&apos;, &apos;log&apos;, &apos;-r&apos;, revision, &apos;--oneline&apos;, &apos;--show-commit&apos;])
&gt; +        # Example: r45396 | b4954e7 | 2009-06-30  Antonio Gomes   &lt;antonio.gomes@openbossa.org&gt;
&gt; +        matched_commit = re.search(&quot;^r(\d+) \| (\w+) \| .*$&quot;, git_log_output, re.MULTILINE)

This is ok, but I always find code more readable when it uses named groups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133143</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-20 08:34:00 -0700</bug_when>
    <thetext>btw, ignore this comment: 

    &gt; +        # This could move to prepare-ChangeLog by adding a --revert= option
   That might be easier.  I think the current code has a bug as I noted above.

as I realized I was completely wrong about it being easier and I rather like it in these files :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133818</commentid>
    <comment_count>8</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2009-07-22 11:28:31 -0700</bug_when>
    <thetext>+        git_log_output = cls.run_command([&apos;git&apos;, &apos;svn&apos;, &apos;log&apos;, &apos;-r&apos;, revision, &apos;--oneline&apos;, &apos;--show-commit&apos;])
+        # Example: r45396 | b4954e7 | 2009-06-30  Antonio Gomes   &lt;antonio.gomes@openbossa.org&gt;
+        matched_commit = re.search(&quot;^r(\d+) \| (\w+) \| .*$&quot;, git_log_output, re.MULTILINE)


git svn find-rev r45396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136407</commentid>
    <comment_count>9</comment_count>
      <attachid>33930</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-31 22:32:47 -0700</bug_when>
    <thetext>Created attachment 33930
Updated, just needs testing with more rollouts


---
 4 files changed, 186 insertions(+), 53 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137070</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-04 11:33:41 -0700</bug_when>
    <thetext>Some testing code for later:

    def _parse_revision_to_commit_mappings(self, stderr):
        revision_to_commit_mapping = {}
        for line in stderr.split_lines():
            match = line.match(&quot;^(?P&lt;revision&gt;r\d+) = (?P&lt;commit_id&gt;\w+)$&quot;)
            if match:
                revision_to_commit_mapping[match.group(&apos;revision&apos;)] = match.group(&apos;commit_id&apos;)
        return revision_to_commit_mapping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139264</commentid>
    <comment_count>11</comment_count>
      <attachid>34639</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-11 23:16:13 -0700</bug_when>
    <thetext>Created attachment 34639
Updated to ToT


---
 4 files changed, 123 insertions(+), 3 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141609</commentid>
    <comment_count>12</comment_count>
      <attachid>35147</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 14:55:33 -0700</bug_when>
    <thetext>Created attachment 35147
Update rollout support


---
 7 files changed, 373 insertions(+), 49 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146331</commentid>
    <comment_count>13</comment_count>
      <attachid>39377</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-10 14:12:02 -0700</bug_when>
    <thetext>Created attachment 39377
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146333</commentid>
    <comment_count>14</comment_count>
      <attachid>39379</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-10 14:16:29 -0700</bug_when>
    <thetext>Created attachment 39379
Works well enough for others to start to use</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146335</commentid>
    <comment_count>15</comment_count>
      <attachid>39381</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-10 14:18:09 -0700</bug_when>
    <thetext>Created attachment 39381
Make ChangeLog less pessimistic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146348</commentid>
    <comment_count>16</comment_count>
      <attachid>39381</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-10 14:47:45 -0700</bug_when>
    <thetext>Comment on attachment 39381
Make ChangeLog less pessimistic

Would be nice to have some unittests for this change...  We also discussed some alternate approaches if the ChangeLog conflicts are too problematic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146414</commentid>
    <comment_count>17</comment_count>
      <attachid>39397</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-10 17:29:46 -0700</bug_when>
    <thetext>Created attachment 39397
Add a bunch of testing code for abarth</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146415</commentid>
    <comment_count>18</comment_count>
      <attachid>39398</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-10 17:30:54 -0700</bug_when>
    <thetext>Created attachment 39398
Final patch with a bunch of extra testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146417</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-10 17:31:48 -0700</bug_when>
    <thetext>Note that I uploaded a diff from the reviewed patch which just contains the new testing changes as &quot;Add a bunch of testing code for abarth&quot;.  The final patch (including all the added tests) is up for review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146418</commentid>
    <comment_count>20</comment_count>
      <attachid>39400</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-10 17:40:18 -0700</bug_when>
    <thetext>Created attachment 39400
Document all the extra testing in the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146453</commentid>
    <comment_count>21</comment_count>
      <attachid>39400</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-10 21:52:59 -0700</bug_when>
    <thetext>Comment on attachment 39400
Document all the extra testing in the ChangeLog

Thanks for the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146482</commentid>
    <comment_count>22</comment_count>
      <attachid>39400</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-11 01:12:24 -0700</bug_when>
    <thetext>Comment on attachment 39400
Document all the extra testing in the ChangeLog

Rejecting patch 39400 from commit-queue.

This patch will require manual commit. [&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146587</commentid>
    <comment_count>23</comment_count>
      <attachid>39400</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-11 09:06:39 -0700</bug_when>
    <thetext>Comment on attachment 39400
Document all the extra testing in the ChangeLog

Bitten by bug 28845. :(
media/video-source-error.html -&gt; timed out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146615</commentid>
    <comment_count>24</comment_count>
      <attachid>39400</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-11 09:54:51 -0700</bug_when>
    <thetext>Comment on attachment 39400
Document all the extra testing in the ChangeLog

Clearing flags on attachment: 39400

Committed r48303: &lt;http://trac.webkit.org/changeset/48303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146616</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-11 09:55:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146620</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-11 10:12:13 -0700</bug_when>
    <thetext>Committed r48304: &lt;http://trac.webkit.org/changeset/48304&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32173</attachid>
            <date>2009-07-02 02:24:24 -0700</date>
            <delta_ts>2009-07-02 02:59:24 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bugzilla_requires_a_filename.patch</filename>
            <type>text/plain</type>
            <size>15295</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCA1MTllNDk4Li4wNGVlZjZiIDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC04OCw2ICs4OCwxMSBAQCBkZWYgbGF0ZXN0X2NoYW5n
ZWxvZ19lbnRyeShjaGFuZ2Vsb2dfcGF0aCk6CiAgICAgIyBXZSBuZXZlciBmb3VuZCBhIGRhdGUg
bGluZSEKICAgICByZXR1cm4gTm9uZQogCitkZWYgdXBkYXRlX2NoYW5nZWxvZ19mb3JfcmV2ZXJ0
KGNoYW5nZWxvZ19wYXRoLCByZXZpc2lvbik6CisgICAgIyBpbnBsYWNlPTEgY3JlYXRlcyBhIGJh
Y2t1cCBmaWxlIGFuZCByZS1kaXJlY3RzIHN0ZG91dCB0byB0aGUgZmlsZQorICAgIGZvciBsaW5l
IGluIGZpbGVpbnB1dC5GaWxlSW5wdXQoY2hhbmdlbG9nX3BhdGgsIGlucGxhY2U9MSk6CisgICAg
ICAgIHByaW50IGxpbmUucmVwbGFjZSgiUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkiLCAiTm8g
cmV2aWV3LCByb2xsaW5nIG91dCAlcyIgJSByZXZpc2lvbiksCisKIGRlZiBzZXRfcmV2aWV3ZXJf
aW5fY2hhbmdlbG9nKGNoYW5nZWxvZ19wYXRoLCByZXZpZXdlcik6CiAgICAgIyBpbnBsYWNlPTEg
Y3JlYXRlcyBhIGJhY2t1cCBmaWxlIGFuZCByZS1kaXJlY3RzIHN0ZG91dCB0byB0aGUgZmlsZQog
ICAgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5GaWxlSW5wdXQoY2hhbmdlbG9nX3BhdGgsIGlucGxh
Y2U9MSk6CkBAIC0xNzcsMTAgKzE4Miw5IEBAIGNsYXNzIEFwcGx5UGF0Y2hlc0Zyb21CdWcoQ29t
bWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwogICAg
ICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlc3Q9InVwZGF0ZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3b3Jr
aW5nIGRpcmVjdG9yeSBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyIpLAotICAgICAgICAgICAgbWFr
ZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3Jj
ZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5IGJl
Zm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1pdHMp
IiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1jbGVhbiIsIGFjdGlvbj0ic3RvcmVf
ZmFsc2UiLCBkZXN0PSJjbGVhbiIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgY2hlY2sgaWYg
dGhlIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuIGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIiks
CiAgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1sb2NhbC1jb21taXQiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZXN0PSJsb2NhbF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYWtlIGEg
bG9jYWwgY29tbWl0IGZvciBlYWNoIGFwcGxpZWQgcGF0Y2giKSwKICAgICAgICAgXQorICAgICAg
ICBvcHRpb25zICs9IFdlYktpdFNjcmlwdHMuY2xlYW5pbmdfb3B0aW9ucygpCiAgICAgICAgIENv
bW1hbmQuX19pbml0X18oc2VsZiwgJ0FwcGxpZXMgYWxsIHBhdGNoZXMgb24gYSBidWcgdG8gdGhl
IGxvY2FsIHdvcmtpbmcgZGlyZWN0b3J5IHdpdGhvdXQgY29tbWl0dGluZy4nLCAnQlVHSUQnLCBv
cHRpb25zPW9wdGlvbnMpCiAKICAgICBAc3RhdGljbWV0aG9kCkBAIC0yMDUsNiArMjA5LDcgQEAg
Y2xhc3MgQXBwbHlQYXRjaGVzRnJvbUJ1ZyhDb21tYW5kKToKICAgICAgICAgCiAgICAgICAgIHNl
bGYuYXBwbHlfcGF0Y2hlcyhwYXRjaGVzLCB0b29sLnNjbSgpLCBvcHRpb25zLmxvY2FsX2NvbW1p
dCkKIAorCiBkZWYgYnVnX2NvbW1lbnRfZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCk6CiAg
ICAgY29tbWVudF9saW5lcyA9IFtdCiAgICAgY29tbWl0X2xpbmVzID0gY29tbWl0X3RleHQuc3Bs
aXRsaW5lcygpCkBAIC0yMTgsMTQgKzIyMyw2NyBAQCBkZWYgYnVnX2NvbW1lbnRfZnJvbV9jb21t
aXRfdGV4dChjb21taXRfdGV4dCk6CiAgICAgcmV0dXJuICJcbiIuam9pbihjb21tZW50X2xpbmVz
KQogCiAKK2NsYXNzIFdlYktpdFNjcmlwdHM6CisgICAgCisgICAgQHN0YXRpY21ldGhvZAorICAg
IGRlZiBjbGVhbmluZ19vcHRpb25zKCk6CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBt
YWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZv
cmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3Rvcnkg
YmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0
cykiKSwKKyAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLWNsZWFuIiwgYWN0aW9uPSJzdG9y
ZV9mYWxzZSIsIGRlc3Q9ImNsZWFuIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVjayBp
ZiB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4gYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMi
KSwKKyAgICAgICAgXQorICAgIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbGFuZF9vcHRp
b25zKCk6CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1i
dWlsZCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJidWlsZCIsIGRlZmF1bHQ9VHJ1ZSwg
aGVscD0iQ29tbWl0IHdpdGhvdXQgYnVpbGRpbmcgZmlyc3QsIGltcGxpZXMgLS1uby10ZXN0LiIp
LAorICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tdGVzdCIsIGFjdGlvbj0ic3RvcmVfZmFs
c2UiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJDb21taXQgd2l0aG91dCBydW5u
aW5nIHJ1bi13ZWJraXQtdGVzdHMuIiksCisgICAgICAgIF0KKworICAgIEBzdGF0aWNtZXRob2QK
KyAgICBkZWYgcnVuX2FuZF90aHJvd19pZl9mYWlsKHNjcmlwdF9uYW1lKToKKyAgICAgICAgYnVp
bGRfd2Via2l0X3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHNjcmlwdF9uYW1lKQorICAgICAg
ICByZXR1cm5fY29kZSA9IGJ1aWxkX3dlYmtpdF9wcm9jZXNzLndhaXQoKQorICAgICAgICBpZiBy
ZXR1cm5fY29kZToKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCIlcyBmYWlsZWQgd2l0
aCBleGl0IGNvZGUgJWQiICUgKHNjcmlwdF9uYW1lLCByZXR1cm5fY29kZSkpCisKKyAgICBAc3Rh
dGljbWV0aG9kCisgICAgZGVmIHNldHVwX2Zvcl9sYW5kaW5nKHNjbSwgb3B0aW9ucyk6CisgICAg
ICAgIG9zLmNoZGlyKHNjbS5jaGVja291dF9yb290KQorICAgICAgICBzY20uZW5zdXJlX25vX2xv
Y2FsX2NvbW1pdHMob3B0aW9ucy5mb3JjZV9jbGVhbikKKyAgICAgICAgaWYgb3B0aW9ucy5jbGVh
bjoKKyAgICAgICAgICAgIHNjbS5lbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3Rvcnkob3B0aW9u
cy5mb3JjZV9jbGVhbikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBydW5fd2Via2l0X3Nj
cmlwdChjbHMsIHNjcmlwdF9uYW1lKToKKyAgICAgICAgIyBXZSBtaWdodCBuZWVkIHRvIHBhc3Mg
c2NtIGludG8gdGhpcyBmdW5jdGlvbiBmb3Igc2NtLmNoZWNrb3V0X3Jvb3QKKyAgICAgICAgY2xz
LnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChvcy5wYXRoLmpvaW4oIldlYktpdFRvb2xzIiwgIlNjcmlw
dHMiLCBzY3JpcHRfbmFtZSkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYnVpbGRfd2Vi
a2l0KGNscyk6CisgICAgICAgIGNscy5ydW5fd2Via2l0X3NjcmlwdCgiYnVpbGQtd2Via2l0IikK
KworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBydW5fd2Via2l0X3Rlc3RzKGNscyk6CisgICAg
ICAgIGNscy5ydW5fd2Via2l0X3NjcmlwdCgicnVuLXdlYmtpdC10ZXN0cyIpCisKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgYnVpbGRfYW5kX2NvbW1pdChjbHMsIHNjbSwgb3B0aW9ucyk6Cisg
ICAgICAgIGlmIG9wdGlvbnMuYnVpbGQ6CisgICAgICAgICAgICBjbHMuYnVpbGRfd2Via2l0KCkK
KyAgICAgICAgICAgIGlmIG9wdGlvbnMudGVzdDoKKyAgICAgICAgICAgICAgICBjbHMucnVuX3dl
YmtpdF90ZXN0cygpCisgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0KHNjbSkKKyAgICAgICAgY29tbWl0X2xvZyA9IHNjbS5jb21taXRfd2l0aF9t
ZXNzYWdlKGNvbW1pdF9tZXNzYWdlKQorICAgICAgICByZXR1cm4gYnVnX2NvbW1lbnRfZnJvbV9j
b21taXRfdGV4dChjb21taXRfbG9nKQorCisKIGNsYXNzIExhbmRBbmRVcGRhdGVCdWcoQ29tbWFu
ZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwogICAgICAg
ICAgICAgbWFrZV9vcHRpb24oIi1yIiwgIi0tcmV2aWV3ZXIiLCBhY3Rpb249InN0b3JlIiwgdHlw
ZT0ic3RyaW5nIiwgZGVzdD0icmV2aWV3ZXIiLCBoZWxwPSJVcGRhdGUgQ2hhbmdlTG9ncyB0byBz
YXkgUmV2aWV3ZWQgYnkgUkVWSUVXRVIuIiksCiAgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1u
by1jbG9zZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbG9zZV9idWciLCBkZWZhdWx0
PVRydWUsIGhlbHA9IkxlYXZlIGJ1ZyBvcGVuIGFmdGVyIGxhbmRpbmcuIiksCi0gICAgICAgICAg
ICBtYWtlX29wdGlvbigiLS1uby1idWlsZCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJi
dWlsZCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgYnVpbGRpbmcgZmlyc3Qs
IGltcGxpZXMgLS1uby10ZXN0LiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tdGVz
dCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1UcnVlLCBoZWxw
PSJDb21taXQgd2l0aG91dCBydW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMuIiksCiAgICAgICAgIF0K
KyAgICAgICAgb3B0aW9ucyArPSBXZWJLaXRTY3JpcHRzLmxhbmRfb3B0aW9ucygpCiAgICAgICAg
IENvbW1hbmQuX19pbml0X18oc2VsZiwgJ0xhbmRzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0
b3J5IGRpZmYgYW5kIHVwZGF0ZXMgdGhlIGJ1ZyBpZiBwcm92aWRlZC4nLCAnW0JVR0lEXScsIG9w
dGlvbnM9b3B0aW9ucykKIAogICAgIGRlZiBndWVzc19yZXZpZXdlcl9mcm9tX2J1ZyhzZWxmLCBi
dWdzLCBidWdfaWQpOgpAQCAtMjU5LDcgKzMxNyw3IEBAIGNsYXNzIExhbmRBbmRVcGRhdGVCdWco
Q29tbWFuZCk6CiAKICAgICAgICAgc2VsZi51cGRhdGVfY2hhbmdlbG9nc193aXRoX3Jldmlld2Vy
KG9wdGlvbnMucmV2aWV3ZXIsIGJ1Z19pZCwgdG9vbCkKIAotICAgICAgICBjb21tZW50X3RleHQg
PSBMYW5kUGF0Y2hlc0Zyb21CdWdzLmJ1aWxkX2FuZF9jb21taXQodG9vbC5zY20oKSwgb3B0aW9u
cykKKyAgICAgICAgY29tbWVudF90ZXh0ID0gV2ViS2l0U2NyaXB0cy5idWlsZF9hbmRfY29tbWl0
KHRvb2wuc2NtKCksIG9wdGlvbnMpCiAgICAgICAgIGlmIGJ1Z19pZDoKICAgICAgICAgICAgIGxv
ZygiVXBkYXRpbmcgYnVnICVzIiAlIGJ1Z19pZCkKICAgICAgICAgICAgIGlmIG9wdGlvbnMuY2xv
c2VfYnVnOgpAQCAtMjcyLDUzICszMzAsMTMgQEAgY2xhc3MgTGFuZEFuZFVwZGF0ZUJ1ZyhDb21t
YW5kKToKICAgICAgICAgICAgIGxvZyhjb21tZW50X3RleHQpCiAgICAgICAgICAgICBsb2coIk5v
IGJ1ZyBpZCBwcm92aWRlZC4iKQogCisKIGNsYXNzIExhbmRQYXRjaGVzRnJvbUJ1Z3MoQ29tbWFu
ZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBvcHRpb25zID0gWwotICAgICAg
ICAgICAgbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBk
ZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGly
ZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5k
IGNvbW1pdHMpIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1jbGVhbiIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbGVhbiIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3Qg
Y2hlY2sgaWYgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuIGJlZm9yZSBhcHBseWluZyBw
YXRjaGVzIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1idWlsZCIsIGFjdGlvbj0i
c3RvcmVfZmFsc2UiLCBkZXN0PSJidWlsZCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdp
dGhvdXQgYnVpbGRpbmcgZmlyc3QsIGltcGxpZXMgLS1uby10ZXN0LiIpLAotICAgICAgICAgICAg
bWFrZV9vcHRpb24oIi0tbm8tdGVzdCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ0ZXN0
IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJDb21taXQgd2l0aG91dCBydW5uaW5nIHJ1bi13ZWJraXQt
dGVzdHMuIiksCi0gICAgICAgIF0KKyAgICAgICAgb3B0aW9ucyA9IFdlYktpdFNjcmlwdHMuY2xl
YW5pbmdfb3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2NyaXB0cy5sYW5kX29w
dGlvbnMoKQogICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICdMYW5kcyBhbGwgcGF0Y2hl
cyBvbiBhIGJ1ZyBvcHRpb25hbGx5IHRlc3RpbmcgdGhlbSBmaXJzdCcsICdCVUdJRCcsIG9wdGlv
bnM9b3B0aW9ucykKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcnVuX2FuZF90aHJvd19p
Zl9mYWlsKHNjcmlwdF9uYW1lKToKLSAgICAgICAgYnVpbGRfd2Via2l0X3Byb2Nlc3MgPSBzdWJw
cm9jZXNzLlBvcGVuKHNjcmlwdF9uYW1lKQotICAgICAgICByZXR1cm5fY29kZSA9IGJ1aWxkX3dl
YmtpdF9wcm9jZXNzLndhaXQoKQotICAgICAgICBpZiByZXR1cm5fY29kZToKLSAgICAgICAgICAg
IHJhaXNlIFNjcmlwdEVycm9yKCIlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJWQiICUgKHNjcmlw
dF9uYW1lLCByZXR1cm5fY29kZSkpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcnVuX3dl
YmtpdF9zY3JpcHQoY2xzLCBzY3JpcHRfbmFtZSk6Ci0gICAgICAgICMgV2UgbWlnaHQgbmVlZCB0
byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24gZm9yIHNjbS5jaGVja291dF9yb290Ci0gICAg
ICAgIGNscy5ydW5fYW5kX3Rocm93X2lmX2ZhaWwob3MucGF0aC5qb2luKCJXZWJLaXRUb29scyIs
ICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGJ1
aWxkX3dlYmtpdChjbHMpOgotICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQoImJ1aWxkLXdl
YmtpdCIpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcnVuX3dlYmtpdF90ZXN0cyhjbHMp
OgotICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQoInJ1bi13ZWJraXQtdGVzdHMiKQotCi0g
ICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBzZXR1cF9mb3JfbGFuZGluZyhzY20sIG9wdGlvbnMp
OgotICAgICAgICBvcy5jaGRpcihzY20uY2hlY2tvdXRfcm9vdCkKLSAgICAgICAgc2NtLmVuc3Vy
ZV9ub19sb2NhbF9jb21taXRzKG9wdGlvbnMuZm9yY2VfY2xlYW4pCi0gICAgICAgIGlmIG9wdGlv
bnMuY2xlYW46Ci0gICAgICAgICAgICBzY20uZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5
KG9wdGlvbnMuZm9yY2VfY2xlYW4pCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgYnVpbGRf
YW5kX2NvbW1pdChjbHMsIHNjbSwgb3B0aW9ucyk6Ci0gICAgICAgIGlmIG9wdGlvbnMuYnVpbGQ6
Ci0gICAgICAgICAgICBjbHMuYnVpbGRfd2Via2l0KCkKLSAgICAgICAgICAgIGlmIG9wdGlvbnMu
dGVzdDoKLSAgICAgICAgICAgICAgICBjbHMucnVuX3dlYmtpdF90ZXN0cygpCi0gICAgICAgIGNv
bW1pdF9tZXNzYWdlID0gY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNjbSkKLSAgICAg
ICAgY29tbWl0X2xvZyA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlKQot
ICAgICAgICByZXR1cm4gYnVnX2NvbW1lbnRfZnJvbV9jb21taXRfdGV4dChjb21taXRfbG9nKQot
CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGxhbmRfcGF0Y2hlcyhjbHMsIGJ1Z19pZCwgcGF0
Y2hlcywgb3B0aW9ucywgdG9vbCk6CiAgICAgICAgIHRyeToKQEAgLTMyNiw3ICszNDQsNyBAQCBj
bGFzcyBMYW5kUGF0Y2hlc0Zyb21CdWdzKENvbW1hbmQpOgogICAgICAgICAgICAgZm9yIHBhdGNo
IGluIHBhdGNoZXM6CiAgICAgICAgICAgICAgICAgdG9vbC5zY20oKS51cGRhdGVfd2Via2l0KCkg
IyBVcGRhdGUgYmVmb3JlIGV2ZXJ5IHBhdGNoIGluIGNhc2UgdGhlIHRyZWUgaGFzIGNoYW5nZWQK
ICAgICAgICAgICAgICAgICB0b29sLnNjbSgpLmFwcGx5X3BhdGNoKHBhdGNoKQotICAgICAgICAg
ICAgICAgIGNvbW1lbnRfdGV4dCA9IGNscy5idWlsZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9w
dGlvbnMpCisgICAgICAgICAgICAgICAgY29tbWVudF90ZXh0ID0gV2ViS2l0U2NyaXB0cy5idWls
ZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCiAKICAgICAgICAgICAgICAgICAjIElm
IHdlJ3JlIGNvbW1pdGluZyBtb3JlIHRoYW4gb25lIHBhdGNoLCB1cGRhdGUgdGhlIGJ1ZyBhcyB3
ZSBnby4KICAgICAgICAgICAgICAgICBpZiBsZW4ocGF0Y2hlcykgPiAxOgpAQCAtMzU1LDcgKzM3
Myw3IEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUJ1Z3MoQ29tbWFuZCk6CiAKICAgICAgICAgbG9n
KCJMYW5kaW5nICVzIGZyb20gJXMuIiAlIChwbHVyYWxpemUoInBhdGNoIiwgcGF0Y2hfY291bnQp
LCBwbHVyYWxpemUoImJ1ZyIsIGxlbihhcmdzKSkpKQogICAgICAgICAKLSAgICAgICAgc2VsZi5z
ZXR1cF9mb3JfbGFuZGluZyh0b29sLnNjbSgpLCBvcHRpb25zKQorICAgICAgICBXZWJLaXRTY3Jp
cHRzLnNldHVwX2Zvcl9sYW5kaW5nKHRvb2wuc2NtKCksIG9wdGlvbnMpCiAKICAgICAgICAgZm9y
IGJ1Z19pZCBpbiBhcmdzOgogICAgICAgICAgICAgc2VsZi5sYW5kX3BhdGNoZXMoYnVnX2lkLCBi
dWdzX3RvX3BhdGNoZXNbYnVnX2lkXSwgb3B0aW9ucywgdG9vbCkKQEAgLTQ0OCw2ICs0NjYsNDMg
QEAgY2xhc3MgUG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZyhDb21tYW5kKToKICAgICAgICAgICAg
IGRpZmZfZmlsZSA9IFN0cmluZ0lPLlN0cmluZ0lPKGRpZmYpICMgYWRkX3BhdGNoX3RvX2J1ZyBl
eHBlY3RzIGEgZmlsZS1saWtlIG9iamVjdAogICAgICAgICAgICAgdG9vbC5idWdzLmFkZF9wYXRj
aF90b19idWcoYnVnX2lkLCBkaWZmX2ZpbGUsIGRlc2NyaXB0aW9uLCBjb21tZW50X3RleHQsIG1h
cmtfZm9yX3Jldmlldz1vcHRpb25zLnJldmlldykKIAorY2xhc3MgUm9sbG91dENvbW1pdChDb21t
YW5kKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBXZWJLaXRT
Y3JpcHRzLmxhbmRfb3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2NyaXB0cy5j
bGVhbmluZ19vcHRpb25zKCkKKyAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAnUmV2ZXJ0
cyB0aGUgZ2l2ZW4gcmV2aXNpb24gYW5kIGNvbW1pdHMgdGhlIHJldmVydCwgb3B0aW9uYWxseSBy
ZS1vcGVucyB0aGUgYnVnLicsICdSRVZJU0lPTiBbQlVHSURdJywgb3B0aW9ucz1vcHRpb25zKQor
CisgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIHJl
dmlzaW9uID0gYXJnc1swXQorICAgICAgICBidWdfaWQgPSBhcmdzWzFdIGlmIGxlbihhcmdzKSA+
IDEgZWxzZSBOb25lCisgICAgICAgIAorICAgICAgICBXZWJLaXRTY3JpcHRzLnNldHVwX2Zvcl9s
YW5kaW5nKHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgIAorICAgICAgICB0b29sLnNjbSgp
LnVwZGF0ZV93ZWJraXQoKQorICAgICAgICB0b29sLnNjbSgpLmFwcGx5X3JldmVyc2VfZGlmZihy
ZXZpc2lvbikKKyAgICAgICAgIyBXZSBzaG91bGQgcGFyc2UgdGhlIGFmZmVjdGVkIGJ1ZyBudW1i
ZXJzIG91dCBvZiB0aGUgQ2hhbmdlTG9nIGRpZmZzIGluc3RlYWQgb2YgdXNpbmcgYSBjb21tYW5k
bGluZSBhcmcKKyAgICAgICAgaWYgbm90IGJ1Z19pZDoKKyAgICAgICAgICAgIGxvZygiQnVnIElE
IG5vdCBwYXNzZWQsIGFuZCBidWcgdXJsIHBhcnNpbmcgZnJvbSBDaGFuZ2VMb2dzIG5vdCB5ZXQg
c3VwcG9ydGVkLiAgTm8gYnVncyB3aWxsIGJlIHVwZGF0ZWQvcmVvcGVuZWQgYWZ0ZXIgdGhlIHJv
bGxvdXQuIikKKyAgICAgICAgCisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IG1vZGlmaWVkX2No
YW5nZWxvZ3ModG9vbC5zY20oKSkKKyAgICAgICAgdG9vbC5zY20oKS5yZXZlcnRfZmlsZXMoY2hh
bmdlbG9nX3BhdGhzKQorICAgICAgICAKKyAgICAgICAgIyBTaG91bGQgcGFzcyBhIC0tYnVnIG51
bWJlciBvbmNlIHByZXBhcmUtQ2hhbmdlTG9nIHN1cHBvcnRzIHRoYXQuIChidWcgMjYzODMpCisg
ICAgICAgIFdlYktpdFNjcmlwdHMucnVuX3dlYmtpdF9zY3JpcHQoInByZXBhcmUtQ2hhbmdlTG9n
IikKKyAgICAgICAgCisgICAgICAgICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdl
TG9nIGJ5IGFkZGluZyBhIC0tcmV2ZXJ0PSBvcHRpb24KKyAgICAgICAgZm9yIGNoYW5nZWxvZ19w
YXRoIGluIGNoYW5nZWxvZ19wYXRoczoKKyAgICAgICAgICAgIHVwZGF0ZV9jaGFuZ2Vsb2dfZm9y
X3JldmVydChjaGFuZ2Vsb2dfcGF0aCwgcmV2aXNpb24pCisgICAgICAgIAorICAgICAgICAjIFNo
b3VsZCBidWlsZCBhbmQgdGVzdC4KKyAgICAgICAgY29tbWVudF90ZXh0ID0gV2ViS2l0U2NyaXB0
cy5idWlsZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgIAorICAgICAg
ICAjIE9uY2Ugd2UncmUgYWJsZSB0byBwYXJzZSB0aGUgYnVnIG51bWJlciBvdXQgb2YgdGhlIENo
YW5nZUxvZworICAgICAgICBpZiBidWdfaWQ6CisgICAgICAgICAgICB0b29sLmJ1Z3MucmVvcGVu
X2J1ZyhidWdfaWQsIGNvbW1lbnRfdGV4dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxv
Zyhjb21tZW50X3RleHQpCisgICAgICAgICAgICBsb2coIk5vIGJ1Z3Mgd2VyZSB1cGRhdGVkIG9y
IHJlLW9wZW5lZCB0byByZWZsZWN0IHRoaXMgcm9sbG91dC4iKQogCiBjbGFzcyBOb25XcmFwcGlu
Z0VwaWxvZ0luZGVudGVkSGVscEZvcm1hdHRlcihJbmRlbnRlZEhlbHBGb3JtYXR0ZXIpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTQ4MSw2ICs1MzYsNyBAQCBjbGFzcyBCdWd6aWxsYVRv
b2w6CiAgICAgICAgICAgICB7ICduYW1lJyA6ICdvYnNvbGV0ZS1hdHRhY2htZW50cycsICdvYmpl
Y3QnIDogT2Jzb2xldGVBdHRhY2htZW50c09uQnVnKCkgfSwKICAgICAgICAgICAgIHsgJ25hbWUn
IDogJ3Bvc3QtZGlmZicsICdvYmplY3QnIDogUG9zdERpZmZBc1BhdGNoVG9CdWcoKSB9LAogICAg
ICAgICAgICAgeyAnbmFtZScgOiAncG9zdC1jb21taXRzJywgJ29iamVjdCcgOiBQb3N0Q29tbWl0
c0FzUGF0Y2hlc1RvQnVnKCkgfSwKKyAgICAgICAgICAgIHsgJ25hbWUnIDogJ3JvbGxvdXQnLCAn
b2JqZWN0JyA6IFJvbGxvdXRDb21taXQoKSB9LAogICAgICAgICBdCiAgICAgICAgIAogICAgICAg
ICBzZWxmLmdsb2JhbF9vcHRpb25fcGFyc2VyID0gSGVscFByaW50aW5nT3B0aW9uUGFyc2VyKHVz
YWdlPXNlbGYudXNhZ2VfbGluZSgpLCBmb3JtYXR0ZXI9Tm9uV3JhcHBpbmdFcGlsb2dJbmRlbnRl
ZEhlbHBGb3JtYXR0ZXIoKSwgZXBpbG9nPXNlbGYuY29tbWFuZHNfdXNhZ2UoKSkKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQppbmRleCA2MjVmMGQ0Li4zMWQ1NWRiIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CkBAIC0yODIsNiArMjgyLDIzIEBA
IGNsYXNzIEJ1Z3ppbGxhOgogICAgICAgICBpZiBjb21tZW50X3RleHQ6CiAgICAgICAgICAgICBs
b2coY29tbWVudF90ZXh0KQogICAgICAgICAgICAgc2VsZi5icm93c2VyWydjb21tZW50J10gPSBj
b21tZW50X3RleHQKKyAgICAgICAgIyBGSVhNRTogTmVlZCB0byBoYW5kbGUgdGhlIGNhc2Ugd2hl
cmUgdGhlIGJ1ZyBpcyBhbHJlYWR5IGNsb3NlZCwgdGhpcyB3aWxsIHJhaXNlCiAgICAgICAgIHNl
bGYuYnJvd3Nlclsna25vYiddID0gWydyZXNvbHZlJ10KICAgICAgICAgc2VsZi5icm93c2VyWydy
ZXNvbHV0aW9uJ10gPSBbJ0ZJWEVEJ10KICAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCisK
KyAgICBkZWYgcmVvcGVuX2J1ZyhzZWxmLCBidWdfaWQsIGNvbW1lbnRfdGV4dCk6CisgICAgICAg
IHNlbGYuYXV0aGVudGljYXRlKCkKKworICAgICAgICBsb2coIlJlLW9wZW5pbmcgYnVnICVzIiAl
IGJ1Z19pZCkKKyAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkgIyBCdWd6aWxsYSByZXF1aXJlcyBh
IGNvbW1lbnQgd2hlbiByZS1vcGVuaW5nIGEgYnVnLCBzbyB3ZSBrbm93IGl0IHdpbGwgbmV2ZXIg
YmUgTm9uZS4KKyAgICAgICAgaWYgc2VsZi5kcnlydW46CisgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICBzZWxmLmJyb3dzZXIub3BlbihzZWxmLmJ1Z191cmxfZm9yX2J1Z19pZChidWdfaWQp
KQorICAgICAgICBzZWxmLmJyb3dzZXIuc2VsZWN0X2Zvcm0obmFtZT0iY2hhbmdlZm9ybSIpCisg
ICAgICAgICMgRklYTUU6IE5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBidWcgaXMg
YWxyZWFkeSBvcGVuLCB0aGlzIHdpbGwgcmFpc2UKKyAgICAgICAgc2VsZi5icm93c2VyWydrbm9i
J10gPSBbJ3Jlb3BlbiddCisgICAgICAgIHNlbGYuYnJvd3NlclsnY29tbWVudCddID0gY29tbWVu
dF90ZXh0CisgICAgICAgIHNlbGYuYnJvd3Nlci5zdWJtaXQoKQorCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL3NjbS5weQppbmRleCBkOWJiMmYzLi5iZTdkNTlmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9zY20ucHkKQEAgLTE0MSw2ICsxNDEsOSBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGNyZWF0ZV9w
YXRjaChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNz
ZXMgbXVzdCBpbXBsZW1lbnQiCiAKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJl
dmlzaW9uKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMg
bXVzdCBpbXBsZW1lbnQiCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNz
YWdlKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVz
dCBpbXBsZW1lbnQiCiAgICAgCkBAIC0yMTIsNiArMjE1LDEwIEBAIGNsYXNzIFNWTihTQ00pOgog
ICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21t
YW5kKHNlbGYuc2NyaXB0X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSkKIAorICAgIGRlZiBhcHBs
eV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICAjICctYyAtcmV2aXNpb24n
IGFwcGxpZXMgdGhlIGludmVyc2UgZGlmZiBvZiAncmV2aXNpb24nCisgICAgICAgIHNlbGYucnVu
X2NvbW1hbmQoInN2biBtZXJnZSAtYyAtJXMiICUgcmV2aXNpb24pCisKICAgICBkZWYgY29tbWl0
X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgaWYgc2VsZi5kcnlydW46CiAg
ICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuIgpAQCAtMjY5LDYg
KzI3NiwyNiBAQCBjbGFzcyBHaXQoU0NNKToKIAogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKCJnaXQgZGlmZiBIRUFEIikKKyAgICAK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihj
bHMsIHJldmlzaW9uKToKKyAgICAgICAgZ2l0X2xvZ19vdXRwdXQgPSBjbHMucnVuX2NvbW1hbmQo
ImdpdCBzdm4gbG9nIC1yICVzIC0tb25lbGluZSAtLXNob3ctY29tbWl0IiAlIHJldmlzaW9uKQor
ICAgICAgICAjIEV4YW1wbGU6IHI0NTM5NiB8IGI0OTU0ZTcgfCAyMDA5LTA2LTMwICBBbnRvbmlv
IEdvbWVzICAgPGFudG9uaW8uZ29tZXNAb3BlbmJvc3NhLm9yZz4KKyAgICAgICAgbWF0Y2hlZF9j
b21taXQgPSByZS5zZWFyY2goIl5yKFxkKykgXHwgKFx3KykgXHwgLiokIiwgZ2l0X2xvZ19vdXRw
dXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgIyBnaXQgc3ZuIGxvZyBleGl0cyAwIGV2ZW4gb24g
bG9va3VwIGZhaWx1cmUsIHNvIGFzc3VtZSBlbXB0eSBvdXRwdXQgaXMgZmFpbHVyZQorICAgICAg
ICBpZiBub3QgbWF0Y2hlZF9jb21taXQ6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICBhc3NlcnQgbWF0Y2hlZF9jb21taXQuZ3JvdXAoMSkgPT0gcmV2aXNpb24sICJnaXQgc3ZuIGxv
ZyByZXR1cm5lZCBhIGNvbW1pdCB3aXRoIHRoZSB3cm9uZyByZXZpc2lvbiBudW1iZXIhIgorICAg
ICAgICByZXR1cm4gbWF0Y2hlZF9jb21taXQuZ3JvdXAoMikKKworICAgIGRlZiBhcHBseV9yZXZl
cnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICAjIEFzc3VtZSB0aGUgcmV2aXNpb24g
aXMgYW4gc3ZuIHJldmlzaW9uCisgICAgICAgIGdpdF9jb21taXQgPSBzZWxmLmdpdF9jb21taXRf
ZnJvbV9zdm5fcmV2aXNpb24ocmV2aXNpb24pCisgICAgICAgIGlmIG5vdCBnaXRfY29tbWl0Ogor
ICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ0ZhaWxlZCB0byBmaW5kIGdpdCBjb21taXQg
Zm9yIHJldmlzaW9uICVzLCBnaXQgc3ZuIGxvZyBvdXRwdXQ6ICIlcyInICUgKHJldmlzaW9uLCBn
aXRfY29tbWl0KSkKKyAgICAgICAgCisgICAgICAgICMgSSB0aGluayB0aGlzIG1pZ2h0IGFsd2F5
cyBmYWlsIGR1ZSB0byBDaGFuZ2VMb2dzCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoImdpdCBy
ZXZlcnQgLS1uby1jb21taXQgJXMiICUgZ2l0X2NvbW1pdCkKIAogICAgIGRlZiBjb21taXRfd2l0
aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dp
dGhfbWVzc2FnZShtZXNzYWdlKQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32174</attachid>
            <date>2009-07-02 02:59:40 -0700</date>
            <delta_ts>2009-07-17 15:04:38 -0700</delta_ts>
            <desc>Working, but not ready for primetime</desc>
            <filename>bugzilla_requires_a_filename.patch</filename>
            <type>text/plain</type>
            <size>16875</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCA1MTllNDk4Li43ZGY5MmE4IDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC02MSw2ICs2MSw5IEBAIGRlZiBwbHVyYWxpemUobm91
biwgY291bnQpOgogICAgICAgICBub3VuID0gcGx1cmFsKG5vdW4pCiAgICAgcmV0dXJuICIlZCAl
cyIgJSAoY291bnQsIG5vdW4pCiAKK2RlZiB2aWV3X3NvdXJjZV91cmwocmV2aXNpb25fbnVtYmVy
KToKKyAgICByZXR1cm4gImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyVzIiAlIHJl
dmlzaW9uX251bWJlcgorCiAjIFRoZXNlIGNvdWxkIGJlIHB1dCBpbiBzb21lIHNvcnQgb2YgY2hh
bmdlbG9ncy5weS4KIGRlZiBsYXRlc3RfY2hhbmdlbG9nX2VudHJ5KGNoYW5nZWxvZ19wYXRoKToK
ICAgICAjIGUuZy4gMjAwOS0wNi0wMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CkBA
IC04OCw2ICs5MSwyMSBAQCBkZWYgbGF0ZXN0X2NoYW5nZWxvZ19lbnRyeShjaGFuZ2Vsb2dfcGF0
aCk6CiAgICAgIyBXZSBuZXZlciBmb3VuZCBhIGRhdGUgbGluZSEKICAgICByZXR1cm4gTm9uZQog
CitkZWYgdXBkYXRlX2NoYW5nZWxvZ19mb3JfcmV2ZXJ0KGNoYW5nZWxvZ19wYXRoLCByZXZpc2lv
bik6CisgICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxzZQorICAgICMgaW5wbGFjZT0xIGNy
ZWF0ZXMgYSBiYWNrdXAgZmlsZSBhbmQgcmUtZGlyZWN0cyBzdGRvdXQgdG8gdGhlIGZpbGUKKyAg
ICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuRmlsZUlucHV0KGNoYW5nZWxvZ19wYXRoLCBpbnBsYWNl
PTEpOgorICAgICAgICBpZiByZS5zZWFyY2goJ1Jldmlld2VkIGJ5JywgbGluZSk6CisgICAgICAg
ICAgICBwcmludCBsaW5lLnJlcGxhY2UoIlJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpIiwgIk5v
IHJldmlldywgcm9sbGluZyBvdXQgJXMiICUgcmV2aXNpb24pLAorICAgICAgICAgICAgcHJpbnQg
IiAgICAgICAgJXNcbiIgJSB2aWV3X3NvdXJjZV91cmwocmV2aXNpb24pCisgICAgICAgICAgICAj
IFJlbW92ZSBhbGwgdGhlIENoYW5nZUxvZyBib2lsZXIgcGxhdGUgYmV0d2VlbiB0aGUgUmV2aWV3
ZWQgYnkgbGluZSBhbmQgdGhlIGZpcnN0IGNoYW5nZWQgZmlsZQorICAgICAgICAgICAgcmVtb3Zp
bmdfYm9pbGVycGxhdGUgPSBUcnVlCisgICAgICAgIGVsaWYgcmVtb3ZpbmdfYm9pbGVycGxhdGUg
YW5kIHJlLnNlYXJjaCgiXCoiLCBsaW5lKTogIyBlYWNoIGNoYW5nZWQgZmlsZSBpcyBwcmVjZWRl
ZCBieSBhICoKKyAgICAgICAgICAgIHJlbW92aW5nX2JvaWxlcnBsYXRlID0gRmFsc2UKKyAgICAg
ICAgCisgICAgICAgIGlmIG5vdCByZW1vdmluZ19ib2lsZXJwbGF0ZToKKyAgICAgICAgICAgIHBy
aW50IGxpbmUsCisKIGRlZiBzZXRfcmV2aWV3ZXJfaW5fY2hhbmdlbG9nKGNoYW5nZWxvZ19wYXRo
LCByZXZpZXdlcik6CiAgICAgIyBpbnBsYWNlPTEgY3JlYXRlcyBhIGJhY2t1cCBmaWxlIGFuZCBy
ZS1kaXJlY3RzIHN0ZG91dCB0byB0aGUgZmlsZQogICAgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5G
aWxlSW5wdXQoY2hhbmdlbG9nX3BhdGgsIGlucGxhY2U9MSk6CkBAIC0xNzcsMTAgKzE5NSw5IEBA
IGNsYXNzIEFwcGx5UGF0Y2hlc0Zyb21CdWcoQ29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgogICAgICAgICBvcHRpb25zID0gWwogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8t
dXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InVwZGF0ZSIsIGRlZmF1bHQ9VHJ1
ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBiZWZvcmUgYXBwbHlp
bmcgcGF0Y2hlcyIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhl
bHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1v
dmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1pdHMpIiksCi0gICAgICAgICAgICBtYWtlX29wdGlv
bigiLS1uby1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbGVhbiIsIGRlZmF1
bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgY2hlY2sgaWYgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNs
ZWFuIGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIiksCiAgICAgICAgICAgICBtYWtlX29wdGlvbigi
LS1sb2NhbC1jb21taXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJsb2NhbF9jb21taXQi
LCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYWtlIGEgbG9jYWwgY29tbWl0IGZvciBlYWNoIGFwcGxp
ZWQgcGF0Y2giKSwKICAgICAgICAgXQorICAgICAgICBvcHRpb25zICs9IFdlYktpdFNjcmlwdHMu
Y2xlYW5pbmdfb3B0aW9ucygpCiAgICAgICAgIENvbW1hbmQuX19pbml0X18oc2VsZiwgJ0FwcGxp
ZXMgYWxsIHBhdGNoZXMgb24gYSBidWcgdG8gdGhlIGxvY2FsIHdvcmtpbmcgZGlyZWN0b3J5IHdp
dGhvdXQgY29tbWl0dGluZy4nLCAnQlVHSUQnLCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICBAc3Rh
dGljbWV0aG9kCkBAIC0yMDUsNiArMjIyLDcgQEAgY2xhc3MgQXBwbHlQYXRjaGVzRnJvbUJ1ZyhD
b21tYW5kKToKICAgICAgICAgCiAgICAgICAgIHNlbGYuYXBwbHlfcGF0Y2hlcyhwYXRjaGVzLCB0
b29sLnNjbSgpLCBvcHRpb25zLmxvY2FsX2NvbW1pdCkKIAorCiBkZWYgYnVnX2NvbW1lbnRfZnJv
bV9jb21taXRfdGV4dChjb21taXRfdGV4dCk6CiAgICAgY29tbWVudF9saW5lcyA9IFtdCiAgICAg
Y29tbWl0X2xpbmVzID0gY29tbWl0X3RleHQuc3BsaXRsaW5lcygpCkBAIC0yMTMsMTkgKzIzMSw3
MiBAQCBkZWYgYnVnX2NvbW1lbnRfZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCk6CiAgICAg
ICAgIG1hdGNoID0gcmUubWF0Y2goIl5Db21taXR0ZWQgcihcZCspJCIsIGxpbmUpCiAgICAgICAg
IGlmIG1hdGNoOgogICAgICAgICAgICAgcmV2aXNpb24gPSBtYXRjaC5ncm91cCgxKQotICAgICAg
ICAgICAgY29tbWVudF9saW5lcy5hcHBlbmQoImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LyIgKyByZXZpc2lvbikKKyAgICAgICAgICAgIGNvbW1lbnRfbGluZXMuYXBwZW5kKHZpZXdf
c291cmNlX3VybChyZXZpc2lvbikpCiAgICAgICAgICAgICBicmVhawogICAgIHJldHVybiAiXG4i
LmpvaW4oY29tbWVudF9saW5lcykKIAogCitjbGFzcyBXZWJLaXRTY3JpcHRzOgorICAgIAorICAg
IEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY2xlYW5pbmdfb3B0aW9ucygpOgorICAgICAgICByZXR1
cm4gWworICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFu
IHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2Fs
IGNoYW5nZXMgYW5kIGNvbW1pdHMpIiksCisgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1j
bGVhbiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbGVhbiIsIGRlZmF1bHQ9VHJ1ZSwg
aGVscD0iRG9uJ3QgY2hlY2sgaWYgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuIGJlZm9y
ZSBhcHBseWluZyBwYXRjaGVzIiksCisgICAgICAgIF0KKyAgICAKKyAgICBAc3RhdGljbWV0aG9k
CisgICAgZGVmIGxhbmRfb3B0aW9ucygpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAg
bWFrZV9vcHRpb24oIi0tbm8tYnVpbGQiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iYnVp
bGQiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IGJ1aWxkaW5nIGZpcnN0LCBp
bXBsaWVzIC0tbm8tdGVzdC4iKSwKKyAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLXRlc3Qi
LCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idGVzdCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0i
Q29tbWl0IHdpdGhvdXQgcnVubmluZyBydW4td2Via2l0LXRlc3RzLiIpLAorICAgICAgICBdCisK
KyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzY3JpcHRf
bmFtZSk6CisgICAgICAgIGJ1aWxkX3dlYmtpdF9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihz
Y3JpcHRfbmFtZSkKKyAgICAgICAgcmV0dXJuX2NvZGUgPSBidWlsZF93ZWJraXRfcHJvY2Vzcy53
YWl0KCkKKyAgICAgICAgaWYgcmV0dXJuX2NvZGU6CisgICAgICAgICAgICByYWlzZSBTY3JpcHRF
cnJvcigiJXMgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkIiAlIChzY3JpcHRfbmFtZSwgcmV0dXJu
X2NvZGUpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzZXR1cF9mb3JfbGFuZGluZyhz
Y20sIG9wdGlvbnMpOgorICAgICAgICBvcy5jaGRpcihzY20uY2hlY2tvdXRfcm9vdCkKKyAgICAg
ICAgc2NtLmVuc3VyZV9ub19sb2NhbF9jb21taXRzKG9wdGlvbnMuZm9yY2VfY2xlYW4pCisgICAg
ICAgIGlmIG9wdGlvbnMuY2xlYW46CisgICAgICAgICAgICBzY20uZW5zdXJlX2NsZWFuX3dvcmtp
bmdfZGlyZWN0b3J5KG9wdGlvbnMuZm9yY2VfY2xlYW4pCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgcnVuX3dlYmtpdF9zY3JpcHQoY2xzLCBzY3JpcHRfbmFtZSk6CisgICAgICAgICMgV2Ug
bWlnaHQgbmVlZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24gZm9yIHNjbS5jaGVja291
dF9yb290CisgICAgICAgIGNscy5ydW5fYW5kX3Rocm93X2lmX2ZhaWwob3MucGF0aC5qb2luKCJX
ZWJLaXRUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpKQorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIGJ1aWxkX3dlYmtpdChjbHMpOgorICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3Jp
cHQoImJ1aWxkLXdlYmtpdCIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcnVuX3dlYmtp
dF90ZXN0cyhjbHMpOgorICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQoInJ1bi13ZWJraXQt
dGVzdHMiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGJ1aWxkX2FuZF9jb21taXQoY2xz
LCBzY20sIG9wdGlvbnMpOgorICAgICAgICBpZiBvcHRpb25zLmJ1aWxkOgorICAgICAgICAgICAg
Y2xzLmJ1aWxkX3dlYmtpdCgpCisgICAgICAgICAgICBpZiBvcHRpb25zLnRlc3Q6CisgICAgICAg
ICAgICAgICAgY2xzLnJ1bl93ZWJraXRfdGVzdHMoKQorICAgICAgICBjb21taXRfbWVzc2FnZSA9
IGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzY20pCisgICAgICAgIGNvbW1pdF9sb2cg
PSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZSkKKyAgICAgICAgcmV0dXJu
IGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQoY29tbWl0X2xvZykKKworCiBjbGFzcyBMYW5k
QW5kVXBkYXRlQnVnKENvbW1hbmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAg
b3B0aW9ucyA9IFsKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItciIsICItLXJldmlld2VyIiwg
YWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9InJldmlld2VyIiwgaGVscD0iVXBk
YXRlIENoYW5nZUxvZ3MgdG8gc2F5IFJldmlld2VkIGJ5IFJFVklFV0VSLiIpLAogICAgICAgICAg
ICAgbWFrZV9vcHRpb24oIi0tbm8tY2xvc2UiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0i
Y2xvc2VfYnVnIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJMZWF2ZSBidWcgb3BlbiBhZnRlciBsYW5k
aW5nLiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tYnVpbGQiLCBhY3Rpb249InN0
b3JlX2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRo
b3V0IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8tdGVzdC4iKSwKLSAgICAgICAgICAgIG1h
a2Vfb3B0aW9uKCItLW5vLXRlc3QiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idGVzdCIs
IGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgcnVubmluZyBydW4td2Via2l0LXRl
c3RzLiIpLAogICAgICAgICBdCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2NyaXB0cy5sYW5k
X29wdGlvbnMoKQogICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICdMYW5kcyB0aGUgY3Vy
cmVudCB3b3JraW5nIGRpcmVjdG9yeSBkaWZmIGFuZCB1cGRhdGVzIHRoZSBidWcgaWYgcHJvdmlk
ZWQuJywgJ1tCVUdJRF0nLCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICBkZWYgZ3Vlc3NfcmV2aWV3
ZXJfZnJvbV9idWcoc2VsZiwgYnVncywgYnVnX2lkKToKQEAgLTI1OSw3ICszMzAsNyBAQCBjbGFz
cyBMYW5kQW5kVXBkYXRlQnVnKENvbW1hbmQpOgogCiAgICAgICAgIHNlbGYudXBkYXRlX2NoYW5n
ZWxvZ3Nfd2l0aF9yZXZpZXdlcihvcHRpb25zLnJldmlld2VyLCBidWdfaWQsIHRvb2wpCiAKLSAg
ICAgICAgY29tbWVudF90ZXh0ID0gTGFuZFBhdGNoZXNGcm9tQnVncy5idWlsZF9hbmRfY29tbWl0
KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgIGNvbW1lbnRfdGV4dCA9IFdlYktpdFNjcmlw
dHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgpLCBvcHRpb25zKQogICAgICAgICBpZiBidWdf
aWQ6CiAgICAgICAgICAgICBsb2coIlVwZGF0aW5nIGJ1ZyAlcyIgJSBidWdfaWQpCiAgICAgICAg
ICAgICBpZiBvcHRpb25zLmNsb3NlX2J1ZzoKQEAgLTI3Miw1MyArMzQzLDEzIEBAIGNsYXNzIExh
bmRBbmRVcGRhdGVCdWcoQ29tbWFuZCk6CiAgICAgICAgICAgICBsb2coY29tbWVudF90ZXh0KQog
ICAgICAgICAgICAgbG9nKCJObyBidWcgaWQgcHJvdmlkZWQuIikKIAorCiBjbGFzcyBMYW5kUGF0
Y2hlc0Zyb21CdWdzKENvbW1hbmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAg
b3B0aW9ucyA9IFsKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLWZvcmNlLWNsZWFuIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iZm9yY2VfY2xlYW4iLCBkZWZhdWx0PUZhbHNlLCBoZWxw
PSJDbGVhbiB3b3JraW5nIGRpcmVjdG9yeSBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyAocmVtb3Zl
cyBsb2NhbCBjaGFuZ2VzIGFuZCBjb21taXRzKSIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24o
Ii0tbm8tY2xlYW4iLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY2xlYW4iLCBkZWZhdWx0
PVRydWUsIGhlbHA9IkRvbid0IGNoZWNrIGlmIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVh
biBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0t
bm8tYnVpbGQiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0PVRy
dWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8tdGVz
dC4iKSwKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLXRlc3QiLCBhY3Rpb249InN0b3Jl
X2ZhbHNlIiwgZGVzdD0idGVzdCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQg
cnVubmluZyBydW4td2Via2l0LXRlc3RzLiIpLAotICAgICAgICBdCisgICAgICAgIG9wdGlvbnMg
PSBXZWJLaXRTY3JpcHRzLmNsZWFuaW5nX29wdGlvbnMoKQorICAgICAgICBvcHRpb25zICs9IFdl
YktpdFNjcmlwdHMubGFuZF9vcHRpb25zKCkKICAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxm
LCAnTGFuZHMgYWxsIHBhdGNoZXMgb24gYSBidWcgb3B0aW9uYWxseSB0ZXN0aW5nIHRoZW0gZmly
c3QnLCAnQlVHSUQnLCBvcHRpb25zPW9wdGlvbnMpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAg
ZGVmIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzY3JpcHRfbmFtZSk6Ci0gICAgICAgIGJ1aWxkX3dl
YmtpdF9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzY3JpcHRfbmFtZSkKLSAgICAgICAgcmV0
dXJuX2NvZGUgPSBidWlsZF93ZWJraXRfcHJvY2Vzcy53YWl0KCkKLSAgICAgICAgaWYgcmV0dXJu
X2NvZGU6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiJXMgZmFpbGVkIHdpdGggZXhp
dCBjb2RlICVkIiAlIChzY3JpcHRfbmFtZSwgcmV0dXJuX2NvZGUpKQotCi0gICAgQGNsYXNzbWV0
aG9kCi0gICAgZGVmIHJ1bl93ZWJraXRfc2NyaXB0KGNscywgc2NyaXB0X25hbWUpOgotICAgICAg
ICAjIFdlIG1pZ2h0IG5lZWQgdG8gcGFzcyBzY20gaW50byB0aGlzIGZ1bmN0aW9uIGZvciBzY20u
Y2hlY2tvdXRfcm9vdAotICAgICAgICBjbHMucnVuX2FuZF90aHJvd19pZl9mYWlsKG9zLnBhdGgu
am9pbigiV2ViS2l0VG9vbHMiLCAiU2NyaXB0cyIsIHNjcmlwdF9uYW1lKSkKLQotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBidWlsZF93ZWJraXQoY2xzKToKLSAgICAgICAgY2xzLnJ1bl93ZWJr
aXRfc2NyaXB0KCJidWlsZC13ZWJraXQiKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHJ1
bl93ZWJraXRfdGVzdHMoY2xzKToKLSAgICAgICAgY2xzLnJ1bl93ZWJraXRfc2NyaXB0KCJydW4t
d2Via2l0LXRlc3RzIikKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgc2V0dXBfZm9yX2xh
bmRpbmcoc2NtLCBvcHRpb25zKToKLSAgICAgICAgb3MuY2hkaXIoc2NtLmNoZWNrb3V0X3Jvb3Qp
Ci0gICAgICAgIHNjbS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhvcHRpb25zLmZvcmNlX2NsZWFu
KQotICAgICAgICBpZiBvcHRpb25zLmNsZWFuOgotICAgICAgICAgICAgc2NtLmVuc3VyZV9jbGVh
bl93b3JraW5nX2RpcmVjdG9yeShvcHRpb25zLmZvcmNlX2NsZWFuKQotCi0gICAgQGNsYXNzbWV0
aG9kCi0gICAgZGVmIGJ1aWxkX2FuZF9jb21taXQoY2xzLCBzY20sIG9wdGlvbnMpOgotICAgICAg
ICBpZiBvcHRpb25zLmJ1aWxkOgotICAgICAgICAgICAgY2xzLmJ1aWxkX3dlYmtpdCgpCi0gICAg
ICAgICAgICBpZiBvcHRpb25zLnRlc3Q6Ci0gICAgICAgICAgICAgICAgY2xzLnJ1bl93ZWJraXRf
dGVzdHMoKQotICAgICAgICBjb21taXRfbWVzc2FnZSA9IGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlz
X2NvbW1pdChzY20pCi0gICAgICAgIGNvbW1pdF9sb2cgPSBzY20uY29tbWl0X3dpdGhfbWVzc2Fn
ZShjb21taXRfbWVzc2FnZSkKLSAgICAgICAgcmV0dXJuIGJ1Z19jb21tZW50X2Zyb21fY29tbWl0
X3RleHQoY29tbWl0X2xvZykKLQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBsYW5kX3BhdGNo
ZXMoY2xzLCBidWdfaWQsIHBhdGNoZXMsIG9wdGlvbnMsIHRvb2wpOgogICAgICAgICB0cnk6CkBA
IC0zMjYsNyArMzU3LDcgQEAgY2xhc3MgTGFuZFBhdGNoZXNGcm9tQnVncyhDb21tYW5kKToKICAg
ICAgICAgICAgIGZvciBwYXRjaCBpbiBwYXRjaGVzOgogICAgICAgICAgICAgICAgIHRvb2wuc2Nt
KCkudXBkYXRlX3dlYmtpdCgpICMgVXBkYXRlIGJlZm9yZSBldmVyeSBwYXRjaCBpbiBjYXNlIHRo
ZSB0cmVlIGhhcyBjaGFuZ2VkCiAgICAgICAgICAgICAgICAgdG9vbC5zY20oKS5hcHBseV9wYXRj
aChwYXRjaCkKLSAgICAgICAgICAgICAgICBjb21tZW50X3RleHQgPSBjbHMuYnVpbGRfYW5kX2Nv
bW1pdCh0b29sLnNjbSgpLCBvcHRpb25zKQorICAgICAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9
IFdlYktpdFNjcmlwdHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgpLCBvcHRpb25zKQogCiAg
ICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSBjb21taXRpbmcgbW9yZSB0aGFuIG9uZSBwYXRjaCwg
dXBkYXRlIHRoZSBidWcgYXMgd2UgZ28uCiAgICAgICAgICAgICAgICAgaWYgbGVuKHBhdGNoZXMp
ID4gMToKQEAgLTM1NSw3ICszODYsNyBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21CdWdzKENvbW1h
bmQpOgogCiAgICAgICAgIGxvZygiTGFuZGluZyAlcyBmcm9tICVzLiIgJSAocGx1cmFsaXplKCJw
YXRjaCIsIHBhdGNoX2NvdW50KSwgcGx1cmFsaXplKCJidWciLCBsZW4oYXJncykpKSkKICAgICAg
ICAgCi0gICAgICAgIHNlbGYuc2V0dXBfZm9yX2xhbmRpbmcodG9vbC5zY20oKSwgb3B0aW9ucykK
KyAgICAgICAgV2ViS2l0U2NyaXB0cy5zZXR1cF9mb3JfbGFuZGluZyh0b29sLnNjbSgpLCBvcHRp
b25zKQogCiAgICAgICAgIGZvciBidWdfaWQgaW4gYXJnczoKICAgICAgICAgICAgIHNlbGYubGFu
ZF9wYXRjaGVzKGJ1Z19pZCwgYnVnc190b19wYXRjaGVzW2J1Z19pZF0sIG9wdGlvbnMsIHRvb2wp
CkBAIC00NDgsNiArNDc5LDQzIEBAIGNsYXNzIFBvc3RDb21taXRzQXNQYXRjaGVzVG9CdWcoQ29t
bWFuZCk6CiAgICAgICAgICAgICBkaWZmX2ZpbGUgPSBTdHJpbmdJTy5TdHJpbmdJTyhkaWZmKSAj
IGFkZF9wYXRjaF90b19idWcgZXhwZWN0cyBhIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAgICAg
IHRvb2wuYnVncy5hZGRfcGF0Y2hfdG9fYnVnKGJ1Z19pZCwgZGlmZl9maWxlLCBkZXNjcmlwdGlv
biwgY29tbWVudF90ZXh0LCBtYXJrX2Zvcl9yZXZpZXc9b3B0aW9ucy5yZXZpZXcpCiAKK2NsYXNz
IFJvbGxvdXRDb21taXQoQ29tbWFuZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICBvcHRpb25zID0gV2ViS2l0U2NyaXB0cy5sYW5kX29wdGlvbnMoKQorICAgICAgICBvcHRpb25z
ICs9IFdlYktpdFNjcmlwdHMuY2xlYW5pbmdfb3B0aW9ucygpCisgICAgICAgIENvbW1hbmQuX19p
bml0X18oc2VsZiwgJ1JldmVydHMgdGhlIGdpdmVuIHJldmlzaW9uIGFuZCBjb21taXRzIHRoZSBy
ZXZlcnQsIG9wdGlvbmFsbHkgcmUtb3BlbnMgdGhlIGJ1Zy4nLCAnUkVWSVNJT04gW0JVR0lEXScs
IG9wdGlvbnM9b3B0aW9ucykKKworICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3Ms
IHRvb2wpOgorICAgICAgICByZXZpc2lvbiA9IGFyZ3NbMF0KKyAgICAgICAgYnVnX2lkID0gYXJn
c1sxXSBpZiBsZW4oYXJncykgPiAxIGVsc2UgTm9uZQorICAgICAgICAKKyAgICAgICAgV2ViS2l0
U2NyaXB0cy5zZXR1cF9mb3JfbGFuZGluZyh0b29sLnNjbSgpLCBvcHRpb25zKQorICAgICAgICAK
KyAgICAgICAgdG9vbC5zY20oKS51cGRhdGVfd2Via2l0KCkKKyAgICAgICAgdG9vbC5zY20oKS5h
cHBseV9yZXZlcnNlX2RpZmYocmV2aXNpb24pCisgICAgICAgICMgV2Ugc2hvdWxkIHBhcnNlIHRo
ZSBhZmZlY3RlZCBidWcgbnVtYmVycyBvdXQgb2YgdGhlIENoYW5nZUxvZyBkaWZmcyBpbnN0ZWFk
IG9mIHVzaW5nIGEgY29tbWFuZGxpbmUgYXJnCisgICAgICAgIGlmIG5vdCBidWdfaWQ6CisgICAg
ICAgICAgICBsb2coIkJ1ZyBJRCBub3QgcGFzc2VkLCBhbmQgYnVnIHVybCBwYXJzaW5nIGZyb20g
Q2hhbmdlTG9ncyBub3QgeWV0IHN1cHBvcnRlZC4gIE5vIGJ1Z3Mgd2lsbCBiZSB1cGRhdGVkL3Jl
b3BlbmVkIGFmdGVyIHRoZSByb2xsb3V0LiIpCisgICAgICAgIAorICAgICAgICBjaGFuZ2Vsb2df
cGF0aHMgPSBtb2RpZmllZF9jaGFuZ2Vsb2dzKHRvb2wuc2NtKCkpCisgICAgICAgIHRvb2wuc2Nt
KCkucmV2ZXJ0X2ZpbGVzKGNoYW5nZWxvZ19wYXRocykKKyAgICAgICAgCisgICAgICAgICMgU2hv
dWxkIHBhc3MgYSAtLWJ1ZyBudW1iZXIgb25jZSBwcmVwYXJlLUNoYW5nZUxvZyBzdXBwb3J0cyB0
aGF0LiAoYnVnIDI2MzgzKQorICAgICAgICBXZWJLaXRTY3JpcHRzLnJ1bl93ZWJraXRfc2NyaXB0
KCJwcmVwYXJlLUNoYW5nZUxvZyIpCisgICAgICAgIAorICAgICAgICAjIFRoaXMgY291bGQgbW92
ZSB0byBwcmVwYXJlLUNoYW5nZUxvZyBieSBhZGRpbmcgYSAtLXJldmVydD0gb3B0aW9uCisgICAg
ICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CisgICAgICAgICAgICB1
cGRhdGVfY2hhbmdlbG9nX2Zvcl9yZXZlcnQoY2hhbmdlbG9nX3BhdGgsIHJldmlzaW9uKQorICAg
ICAgICAKKyAgICAgICAgIyBTaG91bGQgYnVpbGQgYW5kIHRlc3QuCisgICAgICAgIGNvbW1lbnRf
dGV4dCA9IFdlYktpdFNjcmlwdHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgpLCBvcHRpb25z
KQorICAgICAgICAKKyAgICAgICAgIyBPbmNlIHdlJ3JlIGFibGUgdG8gcGFyc2UgdGhlIGJ1ZyBu
dW1iZXIgb3V0IG9mIHRoZSBDaGFuZ2VMb2cKKyAgICAgICAgaWYgYnVnX2lkOgorICAgICAgICAg
ICAgdG9vbC5idWdzLnJlb3Blbl9idWcoYnVnX2lkLCBjb21tZW50X3RleHQpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBsb2coY29tbWVudF90ZXh0KQorICAgICAgICAgICAgbG9nKCJObyBi
dWdzIHdlcmUgdXBkYXRlZCBvciByZS1vcGVuZWQgdG8gcmVmbGVjdCB0aGlzIHJvbGxvdXQuIikK
IAogY2xhc3MgTm9uV3JhcHBpbmdFcGlsb2dJbmRlbnRlZEhlbHBGb3JtYXR0ZXIoSW5kZW50ZWRI
ZWxwRm9ybWF0dGVyKToKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC00ODEsNiArNTQ5LDcg
QEAgY2xhc3MgQnVnemlsbGFUb29sOgogICAgICAgICAgICAgeyAnbmFtZScgOiAnb2Jzb2xldGUt
YXR0YWNobWVudHMnLCAnb2JqZWN0JyA6IE9ic29sZXRlQXR0YWNobWVudHNPbkJ1ZygpIH0sCiAg
ICAgICAgICAgICB7ICduYW1lJyA6ICdwb3N0LWRpZmYnLCAnb2JqZWN0JyA6IFBvc3REaWZmQXNQ
YXRjaFRvQnVnKCkgfSwKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ3Bvc3QtY29tbWl0cycsICdv
YmplY3QnIDogUG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZygpIH0sCisgICAgICAgICAgICB7ICdu
YW1lJyA6ICdyb2xsb3V0JywgJ29iamVjdCcgOiBSb2xsb3V0Q29tbWl0KCkgfSwKICAgICAgICAg
XQogICAgICAgICAKICAgICAgICAgc2VsZi5nbG9iYWxfb3B0aW9uX3BhcnNlciA9IEhlbHBQcmlu
dGluZ09wdGlvblBhcnNlcih1c2FnZT1zZWxmLnVzYWdlX2xpbmUoKSwgZm9ybWF0dGVyPU5vbldy
YXBwaW5nRXBpbG9nSW5kZW50ZWRIZWxwRm9ybWF0dGVyKCksIGVwaWxvZz1zZWxmLmNvbW1hbmRz
X3VzYWdlKCkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemls
bGEucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKaW5kZXggNjI1
ZjBkNC4uMzFkNTVkYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1
Z3ppbGxhLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQpA
QCAtMjgyLDYgKzI4MiwyMyBAQCBjbGFzcyBCdWd6aWxsYToKICAgICAgICAgaWYgY29tbWVudF90
ZXh0OgogICAgICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKICAgICAgICAgICAgIHNlbGYuYnJv
d3NlclsnY29tbWVudCddID0gY29tbWVudF90ZXh0CisgICAgICAgICMgRklYTUU6IE5lZWQgdG8g
aGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBidWcgaXMgYWxyZWFkeSBjbG9zZWQsIHRoaXMgd2ls
bCByYWlzZQogICAgICAgICBzZWxmLmJyb3dzZXJbJ2tub2InXSA9IFsncmVzb2x2ZSddCiAgICAg
ICAgIHNlbGYuYnJvd3NlclsncmVzb2x1dGlvbiddID0gWydGSVhFRCddCiAgICAgICAgIHNlbGYu
YnJvd3Nlci5zdWJtaXQoKQorCisgICAgZGVmIHJlb3Blbl9idWcoc2VsZiwgYnVnX2lkLCBjb21t
ZW50X3RleHQpOgorICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZSgpCisKKyAgICAgICAgbG9nKCJS
ZS1vcGVuaW5nIGJ1ZyAlcyIgJSBidWdfaWQpCisgICAgICAgIGxvZyhjb21tZW50X3RleHQpICMg
QnVnemlsbGEgcmVxdWlyZXMgYSBjb21tZW50IHdoZW4gcmUtb3BlbmluZyBhIGJ1Zywgc28gd2Ug
a25vdyBpdCB3aWxsIG5ldmVyIGJlIE5vbmUuCisgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5icm93c2VyLm9wZW4oc2VsZi5idWdfdXJs
X2Zvcl9idWdfaWQoYnVnX2lkKSkKKyAgICAgICAgc2VsZi5icm93c2VyLnNlbGVjdF9mb3JtKG5h
bWU9ImNoYW5nZWZvcm0iKQorICAgICAgICAjIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSB0aGUgY2Fz
ZSB3aGVyZSB0aGUgYnVnIGlzIGFscmVhZHkgb3BlbiwgdGhpcyB3aWxsIHJhaXNlCisgICAgICAg
IHNlbGYuYnJvd3Nlclsna25vYiddID0gWydyZW9wZW4nXQorICAgICAgICBzZWxmLmJyb3dzZXJb
J2NvbW1lbnQnXSA9IGNvbW1lbnRfdGV4dAorICAgICAgICBzZWxmLmJyb3dzZXIuc3VibWl0KCkK
KwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkKaW5kZXggZDliYjJmMy4uODI5Zjk5YiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CkBAIC0xNDEsNiArMTQxLDEyIEBAIGNsYXNzIFND
TToKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAorICAgIGRlZiBhcHBseV9y
ZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKyAgICAKKyAgICBkZWYgcmV2ZXJ0
X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKwogICAgIGRlZiBjb21taXRfd2l0aF9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
LCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKICAgICAKQEAgLTIxMiw2ICsyMTgsMTMgQEAg
Y2xhc3MgU1ZOKFNDTSk6CiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAgcmV0
dXJuIHNlbGYucnVuX2NvbW1hbmQoc2VsZi5zY3JpcHRfcGF0aCgic3ZuLWNyZWF0ZS1wYXRjaCIp
KQogCisgICAgZGVmIGFwcGx5X3JldmVyc2VfZGlmZihzZWxmLCByZXZpc2lvbik6CisgICAgICAg
ICMgJy1jIC1yZXZpc2lvbicgYXBwbGllcyB0aGUgaW52ZXJzZSBkaWZmIG9mICdyZXZpc2lvbicK
KyAgICAgICAgc2VsZi5ydW5fY29tbWFuZCgic3ZuIG1lcmdlIC1jIC0lcyIgJSByZXZpc2lvbikK
KworICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CisgICAgICAgIHNlbGYu
cnVuX2NvbW1hbmQoIiAiLmpvaW4oWydzdm4nLCAncmV2ZXJ0J10gKyBmaWxlX3BhdGhzKSkKKwog
ICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBpZiBz
ZWxmLmRyeXJ1bjoKICAgICAgICAgICAgIHJldHVybiAiRHJ5IHJ1biwgbm8gcmVtb3RlIGNvbW1p
dC4iCkBAIC0yNjksNiArMjgyLDMwIEBAIGNsYXNzIEdpdChTQ00pOgogCiAgICAgZGVmIGNyZWF0
ZV9wYXRjaChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoImdpdCBkaWZm
IEhFQUQiKQorICAgIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnaXRfY29tbWl0X2Zyb21f
c3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgorICAgICAgICBnaXRfbG9nX291dHB1dCA9IGNs
cy5ydW5fY29tbWFuZCgiZ2l0IHN2biBsb2cgLXIgJXMgLS1vbmVsaW5lIC0tc2hvdy1jb21taXQi
ICUgcmV2aXNpb24pCisgICAgICAgICMgRXhhbXBsZTogcjQ1Mzk2IHwgYjQ5NTRlNyB8IDIwMDkt
MDYtMzAgIEFudG9uaW8gR29tZXMgICA8YW50b25pby5nb21lc0BvcGVuYm9zc2Eub3JnPgorICAg
ICAgICBtYXRjaGVkX2NvbW1pdCA9IHJlLnNlYXJjaCgiXnIoXGQrKSBcfCAoXHcrKSBcfCAuKiQi
LCBnaXRfbG9nX291dHB1dCwgcmUuTVVMVElMSU5FKQorICAgICAgICAjIGdpdCBzdm4gbG9nIGV4
aXRzIDAgZXZlbiBvbiBsb29rdXAgZmFpbHVyZSwgc28gYXNzdW1lIGVtcHR5IG91dHB1dCBpcyBm
YWlsdXJlCisgICAgICAgIGlmIG5vdCBtYXRjaGVkX2NvbW1pdDoKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisgICAgICAgIGFzc2VydCBtYXRjaGVkX2NvbW1pdC5ncm91cCgxKSA9PSByZXZpc2lv
biwgImdpdCBzdm4gbG9nIHJldHVybmVkIGEgY29tbWl0IHdpdGggdGhlIHdyb25nIHJldmlzaW9u
IG51bWJlciEiCisgICAgICAgIHJldHVybiBtYXRjaGVkX2NvbW1pdC5ncm91cCgyKQorCisgICAg
ZGVmIGFwcGx5X3JldmVyc2VfZGlmZihzZWxmLCByZXZpc2lvbik6CisgICAgICAgICMgQXNzdW1l
IHRoZSByZXZpc2lvbiBpcyBhbiBzdm4gcmV2aXNpb24KKyAgICAgICAgZ2l0X2NvbW1pdCA9IHNl
bGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgaWYgbm90
IGdpdF9jb21taXQ6CisgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcignRmFpbGVkIHRvIGZp
bmQgZ2l0IGNvbW1pdCBmb3IgcmV2aXNpb24gJXMsIGdpdCBzdm4gbG9nIG91dHB1dDogIiVzIicg
JSAocmV2aXNpb24sIGdpdF9jb21taXQpKQorICAgICAgICAKKyAgICAgICAgIyBJIHRoaW5rIHRo
aXMgd2lsbCBhbHdheXMgZmFpbCBkdWUgdG8gQ2hhbmdlTG9ncworICAgICAgICBwcmludCBzZWxm
LnJ1bl9jb21tYW5kKCJnaXQgcmV2ZXJ0IC0tbm8tY29tbWl0ICVzIiAlIGdpdF9jb21taXQsIHJh
aXNlX29uX2ZhaWx1cmU9RmFsc2UpCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoInJlc29sdmUt
Q2hhbmdlTG9ncyIpCisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgor
ICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCIgIi5qb2luKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hF
QUQnXSArIGZpbGVfcGF0aHMpKQogCiAgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwg
bWVzc2FnZSk6CiAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3Nh
Z2Up
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32974</attachid>
            <date>2009-07-17 15:04:40 -0700</date>
            <delta_ts>2009-07-17 15:06:21 -0700</delta_ts>
            <desc>Updated patch for rollout support</desc>
            <filename>bug-26715-20090717150440.patch</filename>
            <type>text/plain</type>
            <size>17303</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyNWVjYjdjLi4xM2UxMGM3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDct
MTcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisJCVRoaXMgd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1lLCBidXQgcmVxdWlyZXMg
c29tZQorCQliYWJ5LXNpdHRpbmcuICAicm9sbG91dCIgaXMgbm90IHJlYWR5IGZvciBnZW5lcmFs
IHVzYWdlCisJCWJ1dCBJIHRoaW5rIGl0J3Mgd29ydGggY29tbWl0dGluZyBhcy1pcyBzbyB0aGF0
IG90aGVyCisJCWJyYXZlIHNvdWxzIGxpa2UgRGF2ZSBMZXZpbiBhbmQgRGF2ZSBLaWx6ZXIgY2Fu
IHRyeSBpdC4KKworICAgICAgICAqIFNjcmlwdHMvYnVnemlsbGEtdG9vbDoKKyAgICAgICAgKiBT
Y3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL3Nj
bS5weToKKwogMjAwOS0wNy0xNyAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxs
YS10b29sCmluZGV4IDdkOTg4YWUuLjY0YzY1ZWIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvYnVnemlsbGEtdG9vbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRv
b2wKQEAgLTU2LDYgKzU2LDkgQEAgZGVmIHBsdXJhbGl6ZShub3VuLCBjb3VudCk6CiAgICAgICAg
IG5vdW4gPSBwbHVyYWwobm91bikKICAgICByZXR1cm4gIiVkICVzIiAlIChjb3VudCwgbm91bikK
IAorZGVmIHZpZXdfc291cmNlX3VybChyZXZpc2lvbl9udW1iZXIpOgorICAgIHJldHVybiAiaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvJXMiICUgcmV2aXNpb25fbnVtYmVyCisKICMg
VGhlc2UgY291bGQgYmUgcHV0IGluIHNvbWUgc29ydCBvZiBjaGFuZ2Vsb2dzLnB5LgogZGVmIGxh
dGVzdF9jaGFuZ2Vsb2dfZW50cnkoY2hhbmdlbG9nX3BhdGgpOgogICAgICMgZS5nLiAyMDA5LTA2
LTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KQEAgLTgzLDYgKzg2LDIxIEBAIGRl
ZiBsYXRlc3RfY2hhbmdlbG9nX2VudHJ5KGNoYW5nZWxvZ19wYXRoKToKICAgICAjIFdlIG5ldmVy
IGZvdW5kIGEgZGF0ZSBsaW5lIQogICAgIHJldHVybiBOb25lCiAKK2RlZiB1cGRhdGVfY2hhbmdl
bG9nX2Zvcl9yZXZlcnQoY2hhbmdlbG9nX3BhdGgsIHJldmlzaW9uKToKKyAgICByZW1vdmluZ19i
b2lsZXJwbGF0ZSA9IEZhbHNlCisgICAgIyBpbnBsYWNlPTEgY3JlYXRlcyBhIGJhY2t1cCBmaWxl
IGFuZCByZS1kaXJlY3RzIHN0ZG91dCB0byB0aGUgZmlsZQorICAgIGZvciBsaW5lIGluIGZpbGVp
bnB1dC5GaWxlSW5wdXQoY2hhbmdlbG9nX3BhdGgsIGlucGxhY2U9MSk6CisgICAgICAgIGlmIHJl
LnNlYXJjaCgnUmV2aWV3ZWQgYnknLCBsaW5lKToKKyAgICAgICAgICAgIHByaW50IGxpbmUucmVw
bGFjZSgiUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkiLCAiTm8gcmV2aWV3LCByb2xsaW5nIG91
dCAlcyIgJSByZXZpc2lvbiksCisgICAgICAgICAgICBwcmludCAiICAgICAgICAlc1xuIiAlIHZp
ZXdfc291cmNlX3VybChyZXZpc2lvbikKKyAgICAgICAgICAgICMgUmVtb3ZlIGFsbCB0aGUgQ2hh
bmdlTG9nIGJvaWxlciBwbGF0ZSBiZXR3ZWVuIHRoZSBSZXZpZXdlZCBieSBsaW5lIGFuZCB0aGUg
Zmlyc3QgY2hhbmdlZCBmaWxlCisgICAgICAgICAgICByZW1vdmluZ19ib2lsZXJwbGF0ZSA9IFRy
dWUKKyAgICAgICAgZWxpZiByZW1vdmluZ19ib2lsZXJwbGF0ZSBhbmQgcmUuc2VhcmNoKCJcKiIs
IGxpbmUpOiAjIGVhY2ggY2hhbmdlZCBmaWxlIGlzIHByZWNlZGVkIGJ5IGEgKgorICAgICAgICAg
ICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxzZQorICAgICAgICAKKyAgICAgICAgaWYgbm90
IHJlbW92aW5nX2JvaWxlcnBsYXRlOgorICAgICAgICAgICAgcHJpbnQgbGluZSwKKwogZGVmIHNl
dF9yZXZpZXdlcl9pbl9jaGFuZ2Vsb2coY2hhbmdlbG9nX3BhdGgsIHJldmlld2VyKToKICAgICAj
IGlucGxhY2U9MSBjcmVhdGVzIGEgYmFja3VwIGZpbGUgYW5kIHJlLWRpcmVjdHMgc3Rkb3V0IHRv
IHRoZSBmaWxlCiAgICAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LkZpbGVJbnB1dChjaGFuZ2Vsb2df
cGF0aCwgaW5wbGFjZT0xKToKQEAgLTE3MywxMCArMTkxLDkgQEAgY2xhc3MgQXBwbHlQYXRjaGVz
RnJvbUJ1ZyhDb21tYW5kKToKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIG9wdGlv
bnMgPSBbCiAgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby11cGRhdGUiLCBhY3Rpb249InN0
b3JlX2ZhbHNlIiwgZGVzdD0idXBkYXRlIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCB1cGRh
dGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIiksCi0gICAg
ICAgICAgICBtYWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBk
aXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBh
bmQgY29tbWl0cykiKSwKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLWNsZWFuIiwgYWN0
aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsZWFuIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24n
dCBjaGVjayBpZiB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4gYmVmb3JlIGFwcGx5aW5n
IHBhdGNoZXMiKSwKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLWxvY2FsLWNvbW1pdCIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImxvY2FsX2NvbW1pdCIsIGRlZmF1bHQ9RmFsc2UsIGhl
bHA9Ik1ha2UgYSBsb2NhbCBjb21taXQgZm9yIGVhY2ggYXBwbGllZCBwYXRjaCIpLAogICAgICAg
ICBdCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2NyaXB0cy5jbGVhbmluZ19vcHRpb25zKCkK
ICAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAnQXBwbGllcyBhbGwgcGF0Y2hlcyBvbiBh
IGJ1ZyB0byB0aGUgbG9jYWwgd29ya2luZyBkaXJlY3Rvcnkgd2l0aG91dCBjb21taXR0aW5nLics
ICdCVUdJRCcsIG9wdGlvbnM9b3B0aW9ucykKIAogICAgIEBzdGF0aWNtZXRob2QKQEAgLTIwNSwx
OCArMjIyLDcwIEBAIGNsYXNzIEFwcGx5UGF0Y2hlc0Zyb21CdWcoQ29tbWFuZCk6CiBkZWYgYnVn
X2NvbW1lbnRfZnJvbV9jb21taXRfdGV4dChzY20sIGNvbW1pdF90ZXh0KToKICAgICBtYXRjaCA9
IHJlLnNlYXJjaChzY20uY29tbWl0X3N1Y2Nlc3NfcmVnZXhwKCksIGNvbW1pdF90ZXh0LCByZS5N
VUxUSUxJTkUpCiAgICAgc3ZuX3JldmlzaW9uID0gbWF0Y2guZ3JvdXAoJ3N2bl9yZXZpc2lvbicp
Ci0gICAgY29tbWl0X3RleHQgKz0gKCJcbmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LyVzIiAlIHN2bl9yZXZpc2lvbikKKyAgICBjb21taXRfdGV4dCArPSAoIlxuJXMiICUgdmlld19z
b3VyY2VfdXJsKHN2bl9yZXZpc2lvbikpCiAgICAgcmV0dXJuIGNvbW1pdF90ZXh0CiAKK2NsYXNz
IFdlYktpdFNjcmlwdHM6CisgICAgCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjbGVhbmlu
Z19vcHRpb25zKCk6CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBtYWtlX29wdGlvbigi
LS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwg
ZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5
aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0cykiKSwKKyAgICAg
ICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLWNsZWFuIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRl
c3Q9ImNsZWFuIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVjayBpZiB0aGUgd29ya2lu
ZyBkaXJlY3RvcnkgaXMgY2xlYW4gYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMiKSwKKyAgICAgICAg
XQorICAgIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbGFuZF9vcHRpb25zKCk6CisgICAg
ICAgIHJldHVybiBbCisgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1idWlsZCIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJidWlsZCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0
IHdpdGhvdXQgYnVpbGRpbmcgZmlyc3QsIGltcGxpZXMgLS1uby10ZXN0LiIpLAorICAgICAgICAg
ICAgbWFrZV9vcHRpb24oIi0tbm8tdGVzdCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ0
ZXN0IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJDb21taXQgd2l0aG91dCBydW5uaW5nIHJ1bi13ZWJr
aXQtdGVzdHMuIiksCisgICAgICAgIF0KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcnVu
X2FuZF90aHJvd19pZl9mYWlsKHNjcmlwdF9uYW1lKToKKyAgICAgICAgcHJvY2VzcyA9IHN1YnBy
b2Nlc3MuUG9wZW4oc2NyaXB0X25hbWUpCisgICAgICAgIHJldHVybl9jb2RlID0gcHJvY2Vzcy53
YWl0KCkKKyAgICAgICAgaWYgcmV0dXJuX2NvZGU6CisgICAgICAgICAgICByYWlzZSBTY3JpcHRF
cnJvcigiJXMgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkIiAlIChzY3JpcHRfbmFtZSwgcmV0dXJu
X2NvZGUpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzZXR1cF9mb3JfbGFuZGluZyhz
Y20sIG9wdGlvbnMpOgorICAgICAgICBvcy5jaGRpcihzY20uY2hlY2tvdXRfcm9vdCkKKyAgICAg
ICAgc2NtLmVuc3VyZV9ub19sb2NhbF9jb21taXRzKG9wdGlvbnMuZm9yY2VfY2xlYW4pCisgICAg
ICAgIGlmIG9wdGlvbnMuY2xlYW46CisgICAgICAgICAgICBzY20uZW5zdXJlX2NsZWFuX3dvcmtp
bmdfZGlyZWN0b3J5KG9wdGlvbnMuZm9yY2VfY2xlYW4pCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgcnVuX3dlYmtpdF9zY3JpcHQoY2xzLCBzY3JpcHRfbmFtZSk6CisgICAgICAgICMgV2Ug
bWlnaHQgbmVlZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24gZm9yIHNjbS5jaGVja291
dF9yb290CisgICAgICAgIGNscy5ydW5fYW5kX3Rocm93X2lmX2ZhaWwob3MucGF0aC5qb2luKCJX
ZWJLaXRUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpKQorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIGJ1aWxkX3dlYmtpdChjbHMpOgorICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3Jp
cHQoImJ1aWxkLXdlYmtpdCIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcnVuX3dlYmtp
dF90ZXN0cyhjbHMpOgorICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQoInJ1bi13ZWJraXQt
dGVzdHMiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGJ1aWxkX2FuZF9jb21taXQoY2xz
LCBzY20sIG9wdGlvbnMpOgorICAgICAgICBpZiBvcHRpb25zLmJ1aWxkOgorICAgICAgICAgICAg
Y2xzLmJ1aWxkX3dlYmtpdCgpCisgICAgICAgICAgICBpZiBvcHRpb25zLnRlc3Q6CisgICAgICAg
ICAgICAgICAgY2xzLnJ1bl93ZWJraXRfdGVzdHMoKQorICAgICAgICBjb21taXRfbWVzc2FnZSA9
IGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzY20pCisgICAgICAgIGNvbW1pdF9sb2cg
PSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZSkKKyAgICAgICAgcmV0dXJu
IGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQoY29tbWl0X2xvZykKKwogCiBjbGFzcyBMYW5k
QW5kVXBkYXRlQnVnKENvbW1hbmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAg
b3B0aW9ucyA9IFsKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItciIsICItLXJldmlld2VyIiwg
YWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9InJldmlld2VyIiwgaGVscD0iVXBk
YXRlIENoYW5nZUxvZ3MgdG8gc2F5IFJldmlld2VkIGJ5IFJFVklFV0VSLiIpLAogICAgICAgICAg
ICAgbWFrZV9vcHRpb24oIi0tbm8tY2xvc2UiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0i
Y2xvc2VfYnVnIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJMZWF2ZSBidWcgb3BlbiBhZnRlciBsYW5k
aW5nLiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tYnVpbGQiLCBhY3Rpb249InN0
b3JlX2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRo
b3V0IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8tdGVzdC4iKSwKLSAgICAgICAgICAgIG1h
a2Vfb3B0aW9uKCItLW5vLXRlc3QiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idGVzdCIs
IGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgcnVubmluZyBydW4td2Via2l0LXRl
c3RzLiIpLAogICAgICAgICBdCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2NyaXB0cy5sYW5k
X29wdGlvbnMoKQogICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICdMYW5kcyB0aGUgY3Vy
cmVudCB3b3JraW5nIGRpcmVjdG9yeSBkaWZmIGFuZCB1cGRhdGVzIHRoZSBidWcgaWYgcHJvdmlk
ZWQuJywgJ1tCVUdJRF0nLCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICBkZWYgZ3Vlc3NfcmV2aWV3
ZXJfZnJvbV9idWcoc2VsZiwgYnVncywgYnVnX2lkKToKQEAgLTI1MCw3ICszMTksNyBAQCBjbGFz
cyBMYW5kQW5kVXBkYXRlQnVnKENvbW1hbmQpOgogCiAgICAgICAgIHNlbGYudXBkYXRlX2NoYW5n
ZWxvZ3Nfd2l0aF9yZXZpZXdlcihvcHRpb25zLnJldmlld2VyLCBidWdfaWQsIHRvb2wpCiAKLSAg
ICAgICAgY29tbWVudF90ZXh0ID0gTGFuZFBhdGNoZXNGcm9tQnVncy5idWlsZF9hbmRfY29tbWl0
KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgIGNvbW1lbnRfdGV4dCA9IFdlYktpdFNjcmlw
dHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgpLCBvcHRpb25zKQogICAgICAgICBpZiBidWdf
aWQ6CiAgICAgICAgICAgICBsb2coIlVwZGF0aW5nIGJ1ZyAlcyIgJSBidWdfaWQpCiAgICAgICAg
ICAgICBpZiBvcHRpb25zLmNsb3NlX2J1ZzoKQEAgLTI2Niw1MSArMzM1LDEwIEBAIGNsYXNzIExh
bmRBbmRVcGRhdGVCdWcoQ29tbWFuZCk6CiAKIGNsYXNzIExhbmRQYXRjaGVzRnJvbUJ1Z3MoQ29t
bWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBvcHRpb25zID0gWwotICAg
ICAgICAgICAgbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcg
ZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMg
YW5kIGNvbW1pdHMpIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1jbGVhbiIsIGFj
dGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbGVhbiIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9u
J3QgY2hlY2sgaWYgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuIGJlZm9yZSBhcHBseWlu
ZyBwYXRjaGVzIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1idWlsZCIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJidWlsZCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0
IHdpdGhvdXQgYnVpbGRpbmcgZmlyc3QsIGltcGxpZXMgLS1uby10ZXN0LiIpLAotICAgICAgICAg
ICAgbWFrZV9vcHRpb24oIi0tbm8tdGVzdCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ0
ZXN0IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJDb21taXQgd2l0aG91dCBydW5uaW5nIHJ1bi13ZWJr
aXQtdGVzdHMuIiksCi0gICAgICAgIF0KKyAgICAgICAgb3B0aW9ucyA9IFdlYktpdFNjcmlwdHMu
Y2xlYW5pbmdfb3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2NyaXB0cy5sYW5k
X29wdGlvbnMoKQogICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICdMYW5kcyBhbGwgcGF0
Y2hlcyBvbiBhIGJ1ZyBvcHRpb25hbGx5IHRlc3RpbmcgdGhlbSBmaXJzdCcsICdCVUdJRCcsIG9w
dGlvbnM9b3B0aW9ucykKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcnVuX2FuZF90aHJv
d19pZl9mYWlsKHNjcmlwdF9uYW1lKToKLSAgICAgICAgYnVpbGRfd2Via2l0X3Byb2Nlc3MgPSBz
dWJwcm9jZXNzLlBvcGVuKHNjcmlwdF9uYW1lKQotICAgICAgICByZXR1cm5fY29kZSA9IGJ1aWxk
X3dlYmtpdF9wcm9jZXNzLndhaXQoKQotICAgICAgICBpZiByZXR1cm5fY29kZToKLSAgICAgICAg
ICAgIHJhaXNlIFNjcmlwdEVycm9yKCIlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJWQiICUgKHNj
cmlwdF9uYW1lLCByZXR1cm5fY29kZSkpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcnVu
X3dlYmtpdF9zY3JpcHQoY2xzLCBzY3JpcHRfbmFtZSk6Ci0gICAgICAgICMgV2UgbWlnaHQgbmVl
ZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24gZm9yIHNjbS5jaGVja291dF9yb290Ci0g
ICAgICAgIGNscy5ydW5fYW5kX3Rocm93X2lmX2ZhaWwob3MucGF0aC5qb2luKCJXZWJLaXRUb29s
cyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IGJ1aWxkX3dlYmtpdChjbHMpOgotICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQoImJ1aWxk
LXdlYmtpdCIpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcnVuX3dlYmtpdF90ZXN0cyhj
bHMpOgotICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQoInJ1bi13ZWJraXQtdGVzdHMiKQot
Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBzZXR1cF9mb3JfbGFuZGluZyhzY20sIG9wdGlv
bnMpOgotICAgICAgICBvcy5jaGRpcihzY20uY2hlY2tvdXRfcm9vdCkKLSAgICAgICAgc2NtLmVu
c3VyZV9ub19sb2NhbF9jb21taXRzKG9wdGlvbnMuZm9yY2VfY2xlYW4pCi0gICAgICAgIGlmIG9w
dGlvbnMuY2xlYW46Ci0gICAgICAgICAgICBzY20uZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0
b3J5KG9wdGlvbnMuZm9yY2VfY2xlYW4pCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgYnVp
bGRfYW5kX2NvbW1pdChjbHMsIHNjbSwgb3B0aW9ucyk6Ci0gICAgICAgIGlmIG9wdGlvbnMuYnVp
bGQ6Ci0gICAgICAgICAgICBjbHMuYnVpbGRfd2Via2l0KCkKLSAgICAgICAgICAgIGlmIG9wdGlv
bnMudGVzdDoKLSAgICAgICAgICAgICAgICBjbHMucnVuX3dlYmtpdF90ZXN0cygpCi0gICAgICAg
IGNvbW1pdF9tZXNzYWdlID0gY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNjbSkKLSAg
ICAgICAgY29tbWl0X2xvZyA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdl
Lm1lc3NhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQo
c2NtLCBjb21taXRfbG9nKQotCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGxhbmRfcGF0Y2hl
cyhjbHMsIGJ1Z19pZCwgcGF0Y2hlcywgb3B0aW9ucywgdG9vbCk6CiAgICAgICAgIHRyeToKQEAg
LTMxOCw3ICszNDYsNyBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zyb21CdWdzKENvbW1hbmQpOgogICAg
ICAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6CiAgICAgICAgICAgICAgICAgdG9vbC5zY20o
KS51cGRhdGVfd2Via2l0KCkgIyBVcGRhdGUgYmVmb3JlIGV2ZXJ5IHBhdGNoIGluIGNhc2UgdGhl
IHRyZWUgaGFzIGNoYW5nZWQKICAgICAgICAgICAgICAgICB0b29sLnNjbSgpLmFwcGx5X3BhdGNo
KHBhdGNoKQotICAgICAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9IGNscy5idWlsZF9hbmRfY29t
bWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgICAgICAgICAgY29tbWVudF90ZXh0ID0g
V2ViS2l0U2NyaXB0cy5idWlsZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCiAKICAg
ICAgICAgICAgICAgICAjIElmIHdlJ3JlIGNvbW1pdGluZyBtb3JlIHRoYW4gb25lIHBhdGNoLCB1
cGRhdGUgdGhlIGJ1ZyBhcyB3ZSBnby4KICAgICAgICAgICAgICAgICBpZiBsZW4ocGF0Y2hlcykg
PiAxOgpAQCAtMzQ3LDcgKzM3NSw3IEBAIGNsYXNzIExhbmRQYXRjaGVzRnJvbUJ1Z3MoQ29tbWFu
ZCk6CiAKICAgICAgICAgbG9nKCJMYW5kaW5nICVzIGZyb20gJXMuIiAlIChwbHVyYWxpemUoInBh
dGNoIiwgcGF0Y2hfY291bnQpLCBwbHVyYWxpemUoImJ1ZyIsIGxlbihhcmdzKSkpKQogICAgICAg
ICAKLSAgICAgICAgc2VsZi5zZXR1cF9mb3JfbGFuZGluZyh0b29sLnNjbSgpLCBvcHRpb25zKQor
ICAgICAgICBXZWJLaXRTY3JpcHRzLnNldHVwX2Zvcl9sYW5kaW5nKHRvb2wuc2NtKCksIG9wdGlv
bnMpCiAKICAgICAgICAgZm9yIGJ1Z19pZCBpbiBhcmdzOgogICAgICAgICAgICAgc2VsZi5sYW5k
X3BhdGNoZXMoYnVnX2lkLCBidWdzX3RvX3BhdGNoZXNbYnVnX2lkXSwgb3B0aW9ucywgdG9vbCkK
QEAgLTQ1Myw2ICs0ODEsNDcgQEAgY2xhc3MgUG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZyhDb21t
YW5kKToKICAgICAgICAgICAgIGRpZmZfZmlsZSA9IFN0cmluZ0lPLlN0cmluZ0lPKGRpZmYpICMg
YWRkX3BhdGNoX3RvX2J1ZyBleHBlY3RzIGEgZmlsZS1saWtlIG9iamVjdAogICAgICAgICAgICAg
dG9vbC5idWdzLmFkZF9wYXRjaF90b19idWcoYnVnX2lkLCBkaWZmX2ZpbGUsIGRlc2NyaXB0aW9u
LCBjb21tZW50X3RleHQsIG1hcmtfZm9yX3Jldmlldz1vcHRpb25zLnJldmlldykKIAorY2xhc3Mg
Um9sbG91dENvbW1pdChDb21tYW5kKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAg
IG9wdGlvbnMgPSBXZWJLaXRTY3JpcHRzLmxhbmRfb3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMg
Kz0gV2ViS2l0U2NyaXB0cy5jbGVhbmluZ19vcHRpb25zKCkKKyAgICAgICAgQ29tbWFuZC5fX2lu
aXRfXyhzZWxmLCAnUmV2ZXJ0cyB0aGUgZ2l2ZW4gcmV2aXNpb24gYW5kIGNvbW1pdHMgdGhlIHJl
dmVydCwgb3B0aW9uYWxseSByZS1vcGVucyB0aGUgYnVnLicsICdSRVZJU0lPTiBbQlVHSURdJywg
b3B0aW9ucz1vcHRpb25zKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjcmVhdGVfY2hh
bmdlbG9nc19mb3JfcmV2ZXJ0KHNjbSwgcmV2aXNpb24pOgorICAgICAgICAjIEZpcnN0LCBkaXNj
YXJkIHRoZSBDaGFuZ2VMb2cgY2hhbmdlcyBmcm9tIHRoZSByb2xsb3V0LgorICAgICAgICBjaGFu
Z2Vsb2dfcGF0aHMgPSBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNjbSkKKyAgICAgICAgc2NtLnJldmVy
dF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMpCisKKyAgICAgICAgIyBTZWNvbmQsIG1ha2UgbmV3IENo
YW5nZUxvZyBlbnRyaWVzIGZvciB0aGlzIHJvbGxvdXQuCisgICAgICAgICMgVGhpcyBjb3VsZCBt
b3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0tcmV2ZXJ0PSBvcHRpb24KKyAg
ICAgICAgV2ViS2l0U2NyaXB0cy5ydW5fd2Via2l0X3NjcmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ci
KQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdlbG9nX3BhdGhzOgorICAgICAg
ICAgICAgdXBkYXRlX2NoYW5nZWxvZ19mb3JfcmV2ZXJ0KGNoYW5nZWxvZ19wYXRoLCByZXZpc2lv
bikKKworICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgorICAgICAg
ICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIGVycm9yKCJSRVZJU0lPTiBpcyByZXF1aXJlZCwg
c2VlIC0taGVscC4iKQorICAgICAgICByZXZpc2lvbiA9IGFyZ3NbMF0KKyAgICAgICAgYnVnX2lk
ID0gYXJnc1sxXSBpZiBsZW4oYXJncykgPiAxIGVsc2UgTm9uZQorICAgICAgICAKKyAgICAgICAg
V2ViS2l0U2NyaXB0cy5zZXR1cF9mb3JfbGFuZGluZyh0b29sLnNjbSgpLCBvcHRpb25zKQorICAg
ICAgICAKKyAgICAgICAgdG9vbC5zY20oKS51cGRhdGVfd2Via2l0KCkKKyAgICAgICAgdG9vbC5z
Y20oKS5hcHBseV9yZXZlcnNlX2RpZmYocmV2aXNpb24pCisgICAgICAgICMgV2Ugc2hvdWxkIHBh
cnNlIHRoZSBhZmZlY3RlZCBidWcgbnVtYmVycyBvdXQgb2YgdGhlIENoYW5nZUxvZyBkaWZmcyBp
bnN0ZWFkIG9mIHVzaW5nIGEgY29tbWFuZGxpbmUgYXJnCisgICAgICAgIGlmIG5vdCBidWdfaWQ6
CisgICAgICAgICAgICBsb2coIkJ1ZyBJRCBub3QgcGFzc2VkLCBhbmQgYnVnIHVybCBwYXJzaW5n
IGZyb20gQ2hhbmdlTG9ncyBub3QgeWV0IHN1cHBvcnRlZC4gIE5vIGJ1Z3Mgd2lsbCBiZSB1cGRh
dGVkL3Jlb3BlbmVkIGFmdGVyIHRoZSByb2xsb3V0LiIpCisKKyAgICAgICAgc2VsZi5jcmVhdGVf
Y2hhbmdlbG9nc19mb3JfcmV2ZXJ0KHRvb2wuc2NtKCksIHJldmlzaW9uKQorCisgICAgICAgIGNv
bW1lbnRfdGV4dCA9IFdlYktpdFNjcmlwdHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgpLCBv
cHRpb25zKQorCisgICAgICAgIGlmIGJ1Z19pZDoKKyAgICAgICAgICAgIHRvb2wuYnVncy5yZW9w
ZW5fYnVnKGJ1Z19pZCwgY29tbWVudF90ZXh0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
bG9nKGNvbW1lbnRfdGV4dCkKKyAgICAgICAgICAgIGxvZygiTm8gYnVncyB3ZXJlIHVwZGF0ZWQg
b3IgcmUtb3BlbmVkIHRvIHJlZmxlY3QgdGhpcyByb2xsb3V0LiIpCiAKIGNsYXNzIE5vbldyYXBw
aW5nRXBpbG9nSW5kZW50ZWRIZWxwRm9ybWF0dGVyKEluZGVudGVkSGVscEZvcm1hdHRlcik6CiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtNDg4LDYgKzU1Nyw3IEBAIGNsYXNzIEJ1Z3ppbGxh
VG9vbDoKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ29ic29sZXRlLWF0dGFjaG1lbnRzJywgJ29i
amVjdCcgOiBPYnNvbGV0ZUF0dGFjaG1lbnRzT25CdWcoKSB9LAogICAgICAgICAgICAgeyAnbmFt
ZScgOiAncG9zdC1kaWZmJywgJ29iamVjdCcgOiBQb3N0RGlmZkFzUGF0Y2hUb0J1ZygpIH0sCiAg
ICAgICAgICAgICB7ICduYW1lJyA6ICdwb3N0LWNvbW1pdHMnLCAnb2JqZWN0JyA6IFBvc3RDb21t
aXRzQXNQYXRjaGVzVG9CdWcoKSB9LAorICAgICAgICAgICAgeyAnbmFtZScgOiAncm9sbG91dCcs
ICdvYmplY3QnIDogUm9sbG91dENvbW1pdCgpIH0sCiAgICAgICAgIF0KICAgICAgICAgCiAgICAg
ICAgIHNlbGYuZ2xvYmFsX29wdGlvbl9wYXJzZXIgPSBIZWxwUHJpbnRpbmdPcHRpb25QYXJzZXIo
dXNhZ2U9c2VsZi51c2FnZV9saW5lKCksIGZvcm1hdHRlcj1Ob25XcmFwcGluZ0VwaWxvZ0luZGVu
dGVkSGVscEZvcm1hdHRlcigpLCBlcGlsb2c9c2VsZi5jb21tYW5kc191c2FnZSgpKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CmluZGV4IDFkYWYwNzMuLjAzOTFhMjggMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKQEAgLTM0MiwzICszNDIsMTcg
QEAgY2xhc3MgQnVnemlsbGE6CiAgICAgICAgIHNlbGYuYnJvd3NlclsnYnVnX3N0YXR1cyddID0g
WydSRVNPTFZFRCddCiAgICAgICAgIHNlbGYuYnJvd3NlclsncmVzb2x1dGlvbiddID0gWydGSVhF
RCddCiAgICAgICAgIHNlbGYuYnJvd3Nlci5zdWJtaXQoKQorCisgICAgZGVmIHJlb3Blbl9idWco
c2VsZiwgYnVnX2lkLCBjb21tZW50X3RleHQpOgorICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZSgp
CisKKyAgICAgICAgbG9nKCJSZS1vcGVuaW5nIGJ1ZyAlcyIgJSBidWdfaWQpCisgICAgICAgIGxv
Zyhjb21tZW50X3RleHQpICMgQnVnemlsbGEgcmVxdWlyZXMgYSBjb21tZW50IHdoZW4gcmUtb3Bl
bmluZyBhIGJ1Zywgc28gd2Uga25vdyBpdCB3aWxsIG5ldmVyIGJlIE5vbmUuCisgICAgICAgIGlm
IHNlbGYuZHJ5cnVuOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5icm93c2Vy
Lm9wZW4oc2VsZi5idWdfdXJsX2Zvcl9idWdfaWQoYnVnX2lkKSkKKyAgICAgICAgc2VsZi5icm93
c2VyLnNlbGVjdF9mb3JtKG5hbWU9ImNoYW5nZWZvcm0iKQorICAgICAgICBzZWxmLmJyb3dzZXJb
J2J1Z19zdGF0dXMnXSA9IFsnUkVPUEVORUQnXQorICAgICAgICBzZWxmLmJyb3dzZXJbJ2NvbW1l
bnQnXSA9IGNvbW1lbnRfdGV4dAorICAgICAgICBzZWxmLmJyb3dzZXIuc3VibWl0KCkKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvc2NtLnB5CmluZGV4IGU4NzEyNzcuLjI4ZGNjMWIgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9tb2R1bGVzL3NjbS5weQpAQCAtMTg0LDYgKzE4NCwxMiBAQCBjbGFzcyBTQ006CiAgICAg
ZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
ciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9k
aWZmKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwg
InN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisgICAgCisgICAgZGVmIHJldmVydF9maWxlcyhz
ZWxmLCBmaWxlX3BhdGhzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1
YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNs
YXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAgICAgCkBAIC0yNjUsNiArMjcxLDEzIEBAIGNsYXNzIFNW
TihTQ00pOgogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxm
LnJ1bl9jb21tYW5kKHNlbGYuc2NyaXB0X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSkKIAorICAg
IGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICAjICctYyAt
cmV2aXNpb24nIGFwcGxpZXMgdGhlIGludmVyc2UgZGlmZiBvZiAncmV2aXNpb24nCisgICAgICAg
IHNlbGYucnVuX2NvbW1hbmQoInN2biBtZXJnZSAtYyAtJXMiICUgcmV2aXNpb24pCisKKyAgICBk
ZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgorICAgICAgICBzZWxmLnJ1bl9jb21t
YW5kKCIgIi5qb2luKFsnc3ZuJywgJ3JldmVydCddICsgZmlsZV9wYXRocykpCisKICAgICBkZWYg
Y29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgaWYgc2VsZi5kcnly
dW46CiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuIgpAQCAt
MzI5LDYgKzM0MiwzMSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNl
bGYpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJ0hF
QUQnXSkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3Jl
dmlzaW9uKGNscywgcmV2aXNpb24pOgorICAgICAgICBnaXRfbG9nX291dHB1dCA9IGNscy5ydW5f
Y29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy1yJywgcmV2aXNpb24sICctLW9uZWxpbmUn
LCAnLS1zaG93LWNvbW1pdCddKQorICAgICAgICAjIEV4YW1wbGU6IHI0NTM5NiB8IGI0OTU0ZTcg
fCAyMDA5LTA2LTMwICBBbnRvbmlvIEdvbWVzICAgPGFudG9uaW8uZ29tZXNAb3BlbmJvc3NhLm9y
Zz4KKyAgICAgICAgbWF0Y2hlZF9jb21taXQgPSByZS5zZWFyY2goIl5yKFxkKykgXHwgKFx3Kykg
XHwgLiokIiwgZ2l0X2xvZ19vdXRwdXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgIyBnaXQgc3Zu
IGxvZyBleGl0cyAwIGV2ZW4gb24gbG9va3VwIGZhaWx1cmUsIHNvIGFzc3VtZSBlbXB0eSBvdXRw
dXQgaXMgZmFpbHVyZQorICAgICAgICBpZiBub3QgbWF0Y2hlZF9jb21taXQ6CisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorICAgICAgICBhc3NlcnQgbWF0Y2hlZF9jb21taXQuZ3JvdXAoMSkgPT0g
cmV2aXNpb24sICJnaXQgc3ZuIGxvZyByZXR1cm5lZCBhIGNvbW1pdCB3aXRoIHRoZSB3cm9uZyBy
ZXZpc2lvbiBudW1iZXIhIgorICAgICAgICByZXR1cm4gbWF0Y2hlZF9jb21taXQuZ3JvdXAoMikK
KworICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICAj
IEFzc3VtZSB0aGUgcmV2aXNpb24gaXMgYW4gc3ZuIHJldmlzaW9uCisgICAgICAgIGdpdF9jb21t
aXQgPSBzZWxmLmdpdF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24ocmV2aXNpb24pCisgICAgICAg
IGxvZygiRm91bmQgbWF0Y2hpbmcgZ2l0LWNvbW1pdCAlcyBmb3Igc3ZuIHJldmlzaW9uICVzIiAl
IChnaXRfY29tbWl0LCByZXZpc2lvbikpCisgICAgICAgIGlmIG5vdCBnaXRfY29tbWl0OgorICAg
ICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ0ZhaWxlZCB0byBmaW5kIGdpdCBjb21taXQgZm9y
IHJldmlzaW9uICVzLCBnaXQgc3ZuIGxvZyBvdXRwdXQ6ICIlcyInICUgKHJldmlzaW9uLCBnaXRf
Y29tbWl0KSkKKyAgICAgICAgCisgICAgICAgICMgSSB0aGluayB0aGlzIHdpbGwgYWx3YXlzIGZh
aWwgZHVlIHRvIENoYW5nZUxvZ3MKKyAgICAgICAgcHJpbnQgc2VsZi5ydW5fY29tbWFuZChbJ2dp
dCcsICdyZXZlcnQnLCAnLS1uby1jb21taXQnLCBnaXRfY29tbWl0XSwgcmFpc2Vfb25fZmFpbHVy
ZT1GYWxzZSkKKyAgICAgICAgc2VsZi5ydW5fY29tbWFuZCgicmVzb2x2ZS1DaGFuZ2VMb2dzIikK
KworICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CisgICAgICAgIHNlbGYu
cnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnSEVBRCddICsgZmlsZV9wYXRocykKKwog
ICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBzZWxm
LmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQogICAgICAgICByZXR1cm4gc2Vs
Zi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKCk=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32976</attachid>
            <date>2009-07-17 15:06:24 -0700</date>
            <delta_ts>2009-07-31 22:32:38 -0700</delta_ts>
            <desc>Begone ye tabs!</desc>
            <filename>bug-26715-20090717150623.patch</filename>
            <type>text/plain</type>
            <size>17327</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyNWVjYjdjLi43NDBhMGJkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDct
MTcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIFRoaXMgd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1lLCBidXQgcmVx
dWlyZXMgc29tZQorICAgICAgICBiYWJ5LXNpdHRpbmcuICAicm9sbG91dCIgaXMgbm90IHJlYWR5
IGZvciBnZW5lcmFsIHVzYWdlCisgICAgICAgIGJ1dCBJIHRoaW5rIGl0J3Mgd29ydGggY29tbWl0
dGluZyBhcy1pcyBzbyB0aGF0IG90aGVyCisgICAgICAgIGJyYXZlIHNvdWxzIGxpa2UgRGF2ZSBM
ZXZpbiBhbmQgRGF2ZSBLaWx6ZXIgY2FuIHRyeSBpdC4KKworICAgICAgICAqIFNjcmlwdHMvYnVn
emlsbGEtdG9vbDoKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHk6CisgICAg
ICAgICogU2NyaXB0cy9tb2R1bGVzL3NjbS5weToKKwogMjAwOS0wNy0xNyAgUGV0ZXIgS2FzdGlu
ZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2ls
emVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCmluZGV4IDdkOTg4YWUuLjY0YzY1ZWIgMTAw
NzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKQEAgLTU2LDYgKzU2LDkgQEAgZGVmIHBsdXJhbGl6
ZShub3VuLCBjb3VudCk6CiAgICAgICAgIG5vdW4gPSBwbHVyYWwobm91bikKICAgICByZXR1cm4g
IiVkICVzIiAlIChjb3VudCwgbm91bikKIAorZGVmIHZpZXdfc291cmNlX3VybChyZXZpc2lvbl9u
dW1iZXIpOgorICAgIHJldHVybiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvJXMi
ICUgcmV2aXNpb25fbnVtYmVyCisKICMgVGhlc2UgY291bGQgYmUgcHV0IGluIHNvbWUgc29ydCBv
ZiBjaGFuZ2Vsb2dzLnB5LgogZGVmIGxhdGVzdF9jaGFuZ2Vsb2dfZW50cnkoY2hhbmdlbG9nX3Bh
dGgpOgogICAgICMgZS5nLiAyMDA5LTA2LTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KQEAgLTgzLDYgKzg2LDIxIEBAIGRlZiBsYXRlc3RfY2hhbmdlbG9nX2VudHJ5KGNoYW5nZWxv
Z19wYXRoKToKICAgICAjIFdlIG5ldmVyIGZvdW5kIGEgZGF0ZSBsaW5lIQogICAgIHJldHVybiBO
b25lCiAKK2RlZiB1cGRhdGVfY2hhbmdlbG9nX2Zvcl9yZXZlcnQoY2hhbmdlbG9nX3BhdGgsIHJl
dmlzaW9uKToKKyAgICByZW1vdmluZ19ib2lsZXJwbGF0ZSA9IEZhbHNlCisgICAgIyBpbnBsYWNl
PTEgY3JlYXRlcyBhIGJhY2t1cCBmaWxlIGFuZCByZS1kaXJlY3RzIHN0ZG91dCB0byB0aGUgZmls
ZQorICAgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5GaWxlSW5wdXQoY2hhbmdlbG9nX3BhdGgsIGlu
cGxhY2U9MSk6CisgICAgICAgIGlmIHJlLnNlYXJjaCgnUmV2aWV3ZWQgYnknLCBsaW5lKToKKyAg
ICAgICAgICAgIHByaW50IGxpbmUucmVwbGFjZSgiUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISki
LCAiTm8gcmV2aWV3LCByb2xsaW5nIG91dCAlcyIgJSByZXZpc2lvbiksCisgICAgICAgICAgICBw
cmludCAiICAgICAgICAlc1xuIiAlIHZpZXdfc291cmNlX3VybChyZXZpc2lvbikKKyAgICAgICAg
ICAgICMgUmVtb3ZlIGFsbCB0aGUgQ2hhbmdlTG9nIGJvaWxlciBwbGF0ZSBiZXR3ZWVuIHRoZSBS
ZXZpZXdlZCBieSBsaW5lIGFuZCB0aGUgZmlyc3QgY2hhbmdlZCBmaWxlCisgICAgICAgICAgICBy
ZW1vdmluZ19ib2lsZXJwbGF0ZSA9IFRydWUKKyAgICAgICAgZWxpZiByZW1vdmluZ19ib2lsZXJw
bGF0ZSBhbmQgcmUuc2VhcmNoKCJcKiIsIGxpbmUpOiAjIGVhY2ggY2hhbmdlZCBmaWxlIGlzIHBy
ZWNlZGVkIGJ5IGEgKgorICAgICAgICAgICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxzZQor
ICAgICAgICAKKyAgICAgICAgaWYgbm90IHJlbW92aW5nX2JvaWxlcnBsYXRlOgorICAgICAgICAg
ICAgcHJpbnQgbGluZSwKKwogZGVmIHNldF9yZXZpZXdlcl9pbl9jaGFuZ2Vsb2coY2hhbmdlbG9n
X3BhdGgsIHJldmlld2VyKToKICAgICAjIGlucGxhY2U9MSBjcmVhdGVzIGEgYmFja3VwIGZpbGUg
YW5kIHJlLWRpcmVjdHMgc3Rkb3V0IHRvIHRoZSBmaWxlCiAgICAgZm9yIGxpbmUgaW4gZmlsZWlu
cHV0LkZpbGVJbnB1dChjaGFuZ2Vsb2dfcGF0aCwgaW5wbGFjZT0xKToKQEAgLTE3MywxMCArMTkx
LDkgQEAgY2xhc3MgQXBwbHlQYXRjaGVzRnJvbUJ1ZyhDb21tYW5kKToKICAgICBkZWYgX19pbml0
X18oc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBbCiAgICAgICAgICAgICBtYWtlX29wdGlvbigi
LS1uby11cGRhdGUiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idXBkYXRlIiwgZGVmYXVs
dD1UcnVlLCBoZWxwPSJEb24ndCB1cGRhdGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBh
cHBseWluZyBwYXRjaGVzIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1mb3JjZS1jbGVh
biIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxz
ZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMg
KHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0cykiKSwKLSAgICAgICAgICAgIG1ha2Vf
b3B0aW9uKCItLW5vLWNsZWFuIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsZWFuIiwg
ZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVjayBpZiB0aGUgd29ya2luZyBkaXJlY3Rvcnkg
aXMgY2xlYW4gYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMiKSwKICAgICAgICAgICAgIG1ha2Vfb3B0
aW9uKCItLWxvY2FsLWNvbW1pdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImxvY2FsX2Nv
bW1pdCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik1ha2UgYSBsb2NhbCBjb21taXQgZm9yIGVhY2gg
YXBwbGllZCBwYXRjaCIpLAogICAgICAgICBdCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2Ny
aXB0cy5jbGVhbmluZ19vcHRpb25zKCkKICAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAn
QXBwbGllcyBhbGwgcGF0Y2hlcyBvbiBhIGJ1ZyB0byB0aGUgbG9jYWwgd29ya2luZyBkaXJlY3Rv
cnkgd2l0aG91dCBjb21taXR0aW5nLicsICdCVUdJRCcsIG9wdGlvbnM9b3B0aW9ucykKIAogICAg
IEBzdGF0aWNtZXRob2QKQEAgLTIwNSwxOCArMjIyLDcwIEBAIGNsYXNzIEFwcGx5UGF0Y2hlc0Zy
b21CdWcoQ29tbWFuZCk6CiBkZWYgYnVnX2NvbW1lbnRfZnJvbV9jb21taXRfdGV4dChzY20sIGNv
bW1pdF90ZXh0KToKICAgICBtYXRjaCA9IHJlLnNlYXJjaChzY20uY29tbWl0X3N1Y2Nlc3NfcmVn
ZXhwKCksIGNvbW1pdF90ZXh0LCByZS5NVUxUSUxJTkUpCiAgICAgc3ZuX3JldmlzaW9uID0gbWF0
Y2guZ3JvdXAoJ3N2bl9yZXZpc2lvbicpCi0gICAgY29tbWl0X3RleHQgKz0gKCJcbmh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyVzIiAlIHN2bl9yZXZpc2lvbikKKyAgICBjb21taXRf
dGV4dCArPSAoIlxuJXMiICUgdmlld19zb3VyY2VfdXJsKHN2bl9yZXZpc2lvbikpCiAgICAgcmV0
dXJuIGNvbW1pdF90ZXh0CiAKK2NsYXNzIFdlYktpdFNjcmlwdHM6CisgICAgCisgICAgQHN0YXRp
Y21ldGhvZAorICAgIGRlZiBjbGVhbmluZ19vcHRpb25zKCk6CisgICAgICAgIHJldHVybiBbCisg
ICAgICAgICAgICBtYWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2lu
ZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdl
cyBhbmQgY29tbWl0cykiKSwKKyAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLWNsZWFuIiwg
YWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsZWFuIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJE
b24ndCBjaGVjayBpZiB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4gYmVmb3JlIGFwcGx5
aW5nIHBhdGNoZXMiKSwKKyAgICAgICAgXQorICAgIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBk
ZWYgbGFuZF9vcHRpb25zKCk6CisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBtYWtlX29w
dGlvbigiLS1uby1idWlsZCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJidWlsZCIsIGRl
ZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgYnVpbGRpbmcgZmlyc3QsIGltcGxpZXMg
LS1uby10ZXN0LiIpLAorICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tdGVzdCIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJDb21taXQg
d2l0aG91dCBydW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMuIiksCisgICAgICAgIF0KKworICAgIEBz
dGF0aWNtZXRob2QKKyAgICBkZWYgcnVuX2FuZF90aHJvd19pZl9mYWlsKHNjcmlwdF9uYW1lKToK
KyAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oc2NyaXB0X25hbWUpCisgICAgICAg
IHJldHVybl9jb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgaWYgcmV0dXJuX2NvZGU6Cisg
ICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiJXMgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVk
IiAlIChzY3JpcHRfbmFtZSwgcmV0dXJuX2NvZGUpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAg
IGRlZiBzZXR1cF9mb3JfbGFuZGluZyhzY20sIG9wdGlvbnMpOgorICAgICAgICBvcy5jaGRpcihz
Y20uY2hlY2tvdXRfcm9vdCkKKyAgICAgICAgc2NtLmVuc3VyZV9ub19sb2NhbF9jb21taXRzKG9w
dGlvbnMuZm9yY2VfY2xlYW4pCisgICAgICAgIGlmIG9wdGlvbnMuY2xlYW46CisgICAgICAgICAg
ICBzY20uZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KG9wdGlvbnMuZm9yY2VfY2xlYW4p
CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcnVuX3dlYmtpdF9zY3JpcHQoY2xzLCBzY3Jp
cHRfbmFtZSk6CisgICAgICAgICMgV2UgbWlnaHQgbmVlZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMg
ZnVuY3Rpb24gZm9yIHNjbS5jaGVja291dF9yb290CisgICAgICAgIGNscy5ydW5fYW5kX3Rocm93
X2lmX2ZhaWwob3MucGF0aC5qb2luKCJXZWJLaXRUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25h
bWUpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGJ1aWxkX3dlYmtpdChjbHMpOgorICAg
ICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQoImJ1aWxkLXdlYmtpdCIpCisKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgcnVuX3dlYmtpdF90ZXN0cyhjbHMpOgorICAgICAgICBjbHMucnVuX3dl
YmtpdF9zY3JpcHQoInJ1bi13ZWJraXQtdGVzdHMiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIGJ1aWxkX2FuZF9jb21taXQoY2xzLCBzY20sIG9wdGlvbnMpOgorICAgICAgICBpZiBvcHRp
b25zLmJ1aWxkOgorICAgICAgICAgICAgY2xzLmJ1aWxkX3dlYmtpdCgpCisgICAgICAgICAgICBp
ZiBvcHRpb25zLnRlc3Q6CisgICAgICAgICAgICAgICAgY2xzLnJ1bl93ZWJraXRfdGVzdHMoKQor
ICAgICAgICBjb21taXRfbWVzc2FnZSA9IGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChz
Y20pCisgICAgICAgIGNvbW1pdF9sb2cgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRf
bWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQoY29t
bWl0X2xvZykKKwogCiBjbGFzcyBMYW5kQW5kVXBkYXRlQnVnKENvbW1hbmQpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IFsKICAgICAgICAgICAgIG1ha2Vfb3B0
aW9uKCItciIsICItLXJldmlld2VyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRl
c3Q9InJldmlld2VyIiwgaGVscD0iVXBkYXRlIENoYW5nZUxvZ3MgdG8gc2F5IFJldmlld2VkIGJ5
IFJFVklFV0VSLiIpLAogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tY2xvc2UiLCBhY3Rp
b249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY2xvc2VfYnVnIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJM
ZWF2ZSBidWcgb3BlbiBhZnRlciBsYW5kaW5nLiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24o
Ii0tbm8tYnVpbGQiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0
PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8t
dGVzdC4iKSwKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLXRlc3QiLCBhY3Rpb249InN0
b3JlX2ZhbHNlIiwgZGVzdD0idGVzdCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhv
dXQgcnVubmluZyBydW4td2Via2l0LXRlc3RzLiIpLAogICAgICAgICBdCisgICAgICAgIG9wdGlv
bnMgKz0gV2ViS2l0U2NyaXB0cy5sYW5kX29wdGlvbnMoKQogICAgICAgICBDb21tYW5kLl9faW5p
dF9fKHNlbGYsICdMYW5kcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBkaWZmIGFuZCB1
cGRhdGVzIHRoZSBidWcgaWYgcHJvdmlkZWQuJywgJ1tCVUdJRF0nLCBvcHRpb25zPW9wdGlvbnMp
CiAKICAgICBkZWYgZ3Vlc3NfcmV2aWV3ZXJfZnJvbV9idWcoc2VsZiwgYnVncywgYnVnX2lkKToK
QEAgLTI1MCw3ICszMTksNyBAQCBjbGFzcyBMYW5kQW5kVXBkYXRlQnVnKENvbW1hbmQpOgogCiAg
ICAgICAgIHNlbGYudXBkYXRlX2NoYW5nZWxvZ3Nfd2l0aF9yZXZpZXdlcihvcHRpb25zLnJldmll
d2VyLCBidWdfaWQsIHRvb2wpCiAKLSAgICAgICAgY29tbWVudF90ZXh0ID0gTGFuZFBhdGNoZXNG
cm9tQnVncy5idWlsZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgIGNv
bW1lbnRfdGV4dCA9IFdlYktpdFNjcmlwdHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgpLCBv
cHRpb25zKQogICAgICAgICBpZiBidWdfaWQ6CiAgICAgICAgICAgICBsb2coIlVwZGF0aW5nIGJ1
ZyAlcyIgJSBidWdfaWQpCiAgICAgICAgICAgICBpZiBvcHRpb25zLmNsb3NlX2J1ZzoKQEAgLTI2
Niw1MSArMzM1LDEwIEBAIGNsYXNzIExhbmRBbmRVcGRhdGVCdWcoQ29tbWFuZCk6CiAKIGNsYXNz
IExhbmRQYXRjaGVzRnJvbUJ1Z3MoQ29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgot
ICAgICAgICBvcHRpb25zID0gWwotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xl
YW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFs
c2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVz
IChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1pdHMpIiksCi0gICAgICAgICAgICBtYWtl
X29wdGlvbigiLS1uby1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbGVhbiIs
IGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgY2hlY2sgaWYgdGhlIHdvcmtpbmcgZGlyZWN0b3J5
IGlzIGNsZWFuIGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIiksCi0gICAgICAgICAgICBtYWtlX29w
dGlvbigiLS1uby1idWlsZCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJidWlsZCIsIGRl
ZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgYnVpbGRpbmcgZmlyc3QsIGltcGxpZXMg
LS1uby10ZXN0LiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tdGVzdCIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJDb21taXQg
d2l0aG91dCBydW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMuIiksCi0gICAgICAgIF0KKyAgICAgICAg
b3B0aW9ucyA9IFdlYktpdFNjcmlwdHMuY2xlYW5pbmdfb3B0aW9ucygpCisgICAgICAgIG9wdGlv
bnMgKz0gV2ViS2l0U2NyaXB0cy5sYW5kX29wdGlvbnMoKQogICAgICAgICBDb21tYW5kLl9faW5p
dF9fKHNlbGYsICdMYW5kcyBhbGwgcGF0Y2hlcyBvbiBhIGJ1ZyBvcHRpb25hbGx5IHRlc3Rpbmcg
dGhlbSBmaXJzdCcsICdCVUdJRCcsIG9wdGlvbnM9b3B0aW9ucykKIAotICAgIEBzdGF0aWNtZXRo
b2QKLSAgICBkZWYgcnVuX2FuZF90aHJvd19pZl9mYWlsKHNjcmlwdF9uYW1lKToKLSAgICAgICAg
YnVpbGRfd2Via2l0X3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHNjcmlwdF9uYW1lKQotICAg
ICAgICByZXR1cm5fY29kZSA9IGJ1aWxkX3dlYmtpdF9wcm9jZXNzLndhaXQoKQotICAgICAgICBp
ZiByZXR1cm5fY29kZToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCIlcyBmYWlsZWQg
d2l0aCBleGl0IGNvZGUgJWQiICUgKHNjcmlwdF9uYW1lLCByZXR1cm5fY29kZSkpCi0KLSAgICBA
Y2xhc3NtZXRob2QKLSAgICBkZWYgcnVuX3dlYmtpdF9zY3JpcHQoY2xzLCBzY3JpcHRfbmFtZSk6
Ci0gICAgICAgICMgV2UgbWlnaHQgbmVlZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24g
Zm9yIHNjbS5jaGVja291dF9yb290Ci0gICAgICAgIGNscy5ydW5fYW5kX3Rocm93X2lmX2ZhaWwo
b3MucGF0aC5qb2luKCJXZWJLaXRUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpKQotCi0g
ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGJ1aWxkX3dlYmtpdChjbHMpOgotICAgICAgICBjbHMu
cnVuX3dlYmtpdF9zY3JpcHQoImJ1aWxkLXdlYmtpdCIpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAg
ICBkZWYgcnVuX3dlYmtpdF90ZXN0cyhjbHMpOgotICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3Jp
cHQoInJ1bi13ZWJraXQtdGVzdHMiKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBzZXR1
cF9mb3JfbGFuZGluZyhzY20sIG9wdGlvbnMpOgotICAgICAgICBvcy5jaGRpcihzY20uY2hlY2tv
dXRfcm9vdCkKLSAgICAgICAgc2NtLmVuc3VyZV9ub19sb2NhbF9jb21taXRzKG9wdGlvbnMuZm9y
Y2VfY2xlYW4pCi0gICAgICAgIGlmIG9wdGlvbnMuY2xlYW46Ci0gICAgICAgICAgICBzY20uZW5z
dXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KG9wdGlvbnMuZm9yY2VfY2xlYW4pCi0KLSAgICBA
Y2xhc3NtZXRob2QKLSAgICBkZWYgYnVpbGRfYW5kX2NvbW1pdChjbHMsIHNjbSwgb3B0aW9ucyk6
Ci0gICAgICAgIGlmIG9wdGlvbnMuYnVpbGQ6Ci0gICAgICAgICAgICBjbHMuYnVpbGRfd2Via2l0
KCkKLSAgICAgICAgICAgIGlmIG9wdGlvbnMudGVzdDoKLSAgICAgICAgICAgICAgICBjbHMucnVu
X3dlYmtpdF90ZXN0cygpCi0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gY29tbWl0X21lc3NhZ2Vf
Zm9yX3RoaXNfY29tbWl0KHNjbSkKLSAgICAgICAgY29tbWl0X2xvZyA9IHNjbS5jb21taXRfd2l0
aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGJ1Z19j
b21tZW50X2Zyb21fY29tbWl0X3RleHQoc2NtLCBjb21taXRfbG9nKQotCiAgICAgQGNsYXNzbWV0
aG9kCiAgICAgZGVmIGxhbmRfcGF0Y2hlcyhjbHMsIGJ1Z19pZCwgcGF0Y2hlcywgb3B0aW9ucywg
dG9vbCk6CiAgICAgICAgIHRyeToKQEAgLTMxOCw3ICszNDYsNyBAQCBjbGFzcyBMYW5kUGF0Y2hl
c0Zyb21CdWdzKENvbW1hbmQpOgogICAgICAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6CiAg
ICAgICAgICAgICAgICAgdG9vbC5zY20oKS51cGRhdGVfd2Via2l0KCkgIyBVcGRhdGUgYmVmb3Jl
IGV2ZXJ5IHBhdGNoIGluIGNhc2UgdGhlIHRyZWUgaGFzIGNoYW5nZWQKICAgICAgICAgICAgICAg
ICB0b29sLnNjbSgpLmFwcGx5X3BhdGNoKHBhdGNoKQotICAgICAgICAgICAgICAgIGNvbW1lbnRf
dGV4dCA9IGNscy5idWlsZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAg
ICAgICAgICAgY29tbWVudF90ZXh0ID0gV2ViS2l0U2NyaXB0cy5idWlsZF9hbmRfY29tbWl0KHRv
b2wuc2NtKCksIG9wdGlvbnMpCiAKICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIGNvbW1pdGlu
ZyBtb3JlIHRoYW4gb25lIHBhdGNoLCB1cGRhdGUgdGhlIGJ1ZyBhcyB3ZSBnby4KICAgICAgICAg
ICAgICAgICBpZiBsZW4ocGF0Y2hlcykgPiAxOgpAQCAtMzQ3LDcgKzM3NSw3IEBAIGNsYXNzIExh
bmRQYXRjaGVzRnJvbUJ1Z3MoQ29tbWFuZCk6CiAKICAgICAgICAgbG9nKCJMYW5kaW5nICVzIGZy
b20gJXMuIiAlIChwbHVyYWxpemUoInBhdGNoIiwgcGF0Y2hfY291bnQpLCBwbHVyYWxpemUoImJ1
ZyIsIGxlbihhcmdzKSkpKQogICAgICAgICAKLSAgICAgICAgc2VsZi5zZXR1cF9mb3JfbGFuZGlu
Zyh0b29sLnNjbSgpLCBvcHRpb25zKQorICAgICAgICBXZWJLaXRTY3JpcHRzLnNldHVwX2Zvcl9s
YW5kaW5nKHRvb2wuc2NtKCksIG9wdGlvbnMpCiAKICAgICAgICAgZm9yIGJ1Z19pZCBpbiBhcmdz
OgogICAgICAgICAgICAgc2VsZi5sYW5kX3BhdGNoZXMoYnVnX2lkLCBidWdzX3RvX3BhdGNoZXNb
YnVnX2lkXSwgb3B0aW9ucywgdG9vbCkKQEAgLTQ1Myw2ICs0ODEsNDcgQEAgY2xhc3MgUG9zdENv
bW1pdHNBc1BhdGNoZXNUb0J1ZyhDb21tYW5kKToKICAgICAgICAgICAgIGRpZmZfZmlsZSA9IFN0
cmluZ0lPLlN0cmluZ0lPKGRpZmYpICMgYWRkX3BhdGNoX3RvX2J1ZyBleHBlY3RzIGEgZmlsZS1s
aWtlIG9iamVjdAogICAgICAgICAgICAgdG9vbC5idWdzLmFkZF9wYXRjaF90b19idWcoYnVnX2lk
LCBkaWZmX2ZpbGUsIGRlc2NyaXB0aW9uLCBjb21tZW50X3RleHQsIG1hcmtfZm9yX3Jldmlldz1v
cHRpb25zLnJldmlldykKIAorY2xhc3MgUm9sbG91dENvbW1pdChDb21tYW5kKToKKyAgICBkZWYg
X19pbml0X18oc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBXZWJLaXRTY3JpcHRzLmxhbmRfb3B0
aW9ucygpCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2NyaXB0cy5jbGVhbmluZ19vcHRpb25z
KCkKKyAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAnUmV2ZXJ0cyB0aGUgZ2l2ZW4gcmV2
aXNpb24gYW5kIGNvbW1pdHMgdGhlIHJldmVydCwgb3B0aW9uYWxseSByZS1vcGVucyB0aGUgYnVn
LicsICdSRVZJU0lPTiBbQlVHSURdJywgb3B0aW9ucz1vcHRpb25zKQorCisgICAgQHN0YXRpY21l
dGhvZAorICAgIGRlZiBjcmVhdGVfY2hhbmdlbG9nc19mb3JfcmV2ZXJ0KHNjbSwgcmV2aXNpb24p
OgorICAgICAgICAjIEZpcnN0LCBkaXNjYXJkIHRoZSBDaGFuZ2VMb2cgY2hhbmdlcyBmcm9tIHRo
ZSByb2xsb3V0LgorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBtb2RpZmllZF9jaGFuZ2Vsb2dz
KHNjbSkKKyAgICAgICAgc2NtLnJldmVydF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMpCisKKyAgICAg
ICAgIyBTZWNvbmQsIG1ha2UgbmV3IENoYW5nZUxvZyBlbnRyaWVzIGZvciB0aGlzIHJvbGxvdXQu
CisgICAgICAgICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGlu
ZyBhIC0tcmV2ZXJ0PSBvcHRpb24KKyAgICAgICAgV2ViS2l0U2NyaXB0cy5ydW5fd2Via2l0X3Nj
cmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ciKQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4g
Y2hhbmdlbG9nX3BhdGhzOgorICAgICAgICAgICAgdXBkYXRlX2NoYW5nZWxvZ19mb3JfcmV2ZXJ0
KGNoYW5nZWxvZ19wYXRoLCByZXZpc2lvbikKKworICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlv
bnMsIGFyZ3MsIHRvb2wpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIGVycm9y
KCJSRVZJU0lPTiBpcyByZXF1aXJlZCwgc2VlIC0taGVscC4iKQorICAgICAgICByZXZpc2lvbiA9
IGFyZ3NbMF0KKyAgICAgICAgYnVnX2lkID0gYXJnc1sxXSBpZiBsZW4oYXJncykgPiAxIGVsc2Ug
Tm9uZQorICAgICAgICAKKyAgICAgICAgV2ViS2l0U2NyaXB0cy5zZXR1cF9mb3JfbGFuZGluZyh0
b29sLnNjbSgpLCBvcHRpb25zKQorICAgICAgICAKKyAgICAgICAgdG9vbC5zY20oKS51cGRhdGVf
d2Via2l0KCkKKyAgICAgICAgdG9vbC5zY20oKS5hcHBseV9yZXZlcnNlX2RpZmYocmV2aXNpb24p
CisgICAgICAgICMgV2Ugc2hvdWxkIHBhcnNlIHRoZSBhZmZlY3RlZCBidWcgbnVtYmVycyBvdXQg
b2YgdGhlIENoYW5nZUxvZyBkaWZmcyBpbnN0ZWFkIG9mIHVzaW5nIGEgY29tbWFuZGxpbmUgYXJn
CisgICAgICAgIGlmIG5vdCBidWdfaWQ6CisgICAgICAgICAgICBsb2coIkJ1ZyBJRCBub3QgcGFz
c2VkLCBhbmQgYnVnIHVybCBwYXJzaW5nIGZyb20gQ2hhbmdlTG9ncyBub3QgeWV0IHN1cHBvcnRl
ZC4gIE5vIGJ1Z3Mgd2lsbCBiZSB1cGRhdGVkL3Jlb3BlbmVkIGFmdGVyIHRoZSByb2xsb3V0LiIp
CisKKyAgICAgICAgc2VsZi5jcmVhdGVfY2hhbmdlbG9nc19mb3JfcmV2ZXJ0KHRvb2wuc2NtKCks
IHJldmlzaW9uKQorCisgICAgICAgIGNvbW1lbnRfdGV4dCA9IFdlYktpdFNjcmlwdHMuYnVpbGRf
YW5kX2NvbW1pdCh0b29sLnNjbSgpLCBvcHRpb25zKQorCisgICAgICAgIGlmIGJ1Z19pZDoKKyAg
ICAgICAgICAgIHRvb2wuYnVncy5yZW9wZW5fYnVnKGJ1Z19pZCwgY29tbWVudF90ZXh0KQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKKyAgICAgICAgICAgIGxv
ZygiTm8gYnVncyB3ZXJlIHVwZGF0ZWQgb3IgcmUtb3BlbmVkIHRvIHJlZmxlY3QgdGhpcyByb2xs
b3V0LiIpCiAKIGNsYXNzIE5vbldyYXBwaW5nRXBpbG9nSW5kZW50ZWRIZWxwRm9ybWF0dGVyKElu
ZGVudGVkSGVscEZvcm1hdHRlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtNDg4LDYg
KzU1Nyw3IEBAIGNsYXNzIEJ1Z3ppbGxhVG9vbDoKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ29i
c29sZXRlLWF0dGFjaG1lbnRzJywgJ29iamVjdCcgOiBPYnNvbGV0ZUF0dGFjaG1lbnRzT25CdWco
KSB9LAogICAgICAgICAgICAgeyAnbmFtZScgOiAncG9zdC1kaWZmJywgJ29iamVjdCcgOiBQb3N0
RGlmZkFzUGF0Y2hUb0J1ZygpIH0sCiAgICAgICAgICAgICB7ICduYW1lJyA6ICdwb3N0LWNvbW1p
dHMnLCAnb2JqZWN0JyA6IFBvc3RDb21taXRzQXNQYXRjaGVzVG9CdWcoKSB9LAorICAgICAgICAg
ICAgeyAnbmFtZScgOiAncm9sbG91dCcsICdvYmplY3QnIDogUm9sbG91dENvbW1pdCgpIH0sCiAg
ICAgICAgIF0KICAgICAgICAgCiAgICAgICAgIHNlbGYuZ2xvYmFsX29wdGlvbl9wYXJzZXIgPSBI
ZWxwUHJpbnRpbmdPcHRpb25QYXJzZXIodXNhZ2U9c2VsZi51c2FnZV9saW5lKCksIGZvcm1hdHRl
cj1Ob25XcmFwcGluZ0VwaWxvZ0luZGVudGVkSGVscEZvcm1hdHRlcigpLCBlcGlsb2c9c2VsZi5j
b21tYW5kc191c2FnZSgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2J1Z3ppbGxhLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5Cmlu
ZGV4IDFkYWYwNzMuLjAzOTFhMjggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9idWd6aWxsYS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemls
bGEucHkKQEAgLTM0MiwzICszNDIsMTcgQEAgY2xhc3MgQnVnemlsbGE6CiAgICAgICAgIHNlbGYu
YnJvd3NlclsnYnVnX3N0YXR1cyddID0gWydSRVNPTFZFRCddCiAgICAgICAgIHNlbGYuYnJvd3Nl
clsncmVzb2x1dGlvbiddID0gWydGSVhFRCddCiAgICAgICAgIHNlbGYuYnJvd3Nlci5zdWJtaXQo
KQorCisgICAgZGVmIHJlb3Blbl9idWcoc2VsZiwgYnVnX2lkLCBjb21tZW50X3RleHQpOgorICAg
ICAgICBzZWxmLmF1dGhlbnRpY2F0ZSgpCisKKyAgICAgICAgbG9nKCJSZS1vcGVuaW5nIGJ1ZyAl
cyIgJSBidWdfaWQpCisgICAgICAgIGxvZyhjb21tZW50X3RleHQpICMgQnVnemlsbGEgcmVxdWly
ZXMgYSBjb21tZW50IHdoZW4gcmUtb3BlbmluZyBhIGJ1Zywgc28gd2Uga25vdyBpdCB3aWxsIG5l
dmVyIGJlIE5vbmUuCisgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgorICAgICAgICAgICAgcmV0dXJu
CisKKyAgICAgICAgc2VsZi5icm93c2VyLm9wZW4oc2VsZi5idWdfdXJsX2Zvcl9idWdfaWQoYnVn
X2lkKSkKKyAgICAgICAgc2VsZi5icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9ImNoYW5nZWZvcm0i
KQorICAgICAgICBzZWxmLmJyb3dzZXJbJ2J1Z19zdGF0dXMnXSA9IFsnUkVPUEVORUQnXQorICAg
ICAgICBzZWxmLmJyb3dzZXJbJ2NvbW1lbnQnXSA9IGNvbW1lbnRfdGV4dAorICAgICAgICBzZWxm
LmJyb3dzZXIuc3VibWl0KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CmluZGV4IGU4NzEy
NzcuLjI4ZGNjMWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20u
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weQpAQCAtMTg0LDYgKzE4
NCwxMiBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAK
KyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisgICAg
CisgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKKyAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKICAgICBk
ZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAgICAgCkBAIC0y
NjUsNiArMjcxLDEzIEBAIGNsYXNzIFNWTihTQ00pOgogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKHNlbGYuc2NyaXB0X3BhdGgoInN2
bi1jcmVhdGUtcGF0Y2giKSkKIAorICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2
aXNpb24pOgorICAgICAgICAjICctYyAtcmV2aXNpb24nIGFwcGxpZXMgdGhlIGludmVyc2UgZGlm
ZiBvZiAncmV2aXNpb24nCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoInN2biBtZXJnZSAtYyAt
JXMiICUgcmV2aXNpb24pCisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMp
OgorICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCIgIi5qb2luKFsnc3ZuJywgJ3JldmVydCddICsg
ZmlsZV9wYXRocykpCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdl
KToKICAgICAgICAgaWYgc2VsZi5kcnlydW46CiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4s
IG5vIHJlbW90ZSBjb21taXQuIgpAQCAtMzI5LDYgKzM0MiwzMSBAQCBjbGFzcyBHaXQoU0NNKToK
ICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29t
bWFuZChbJ2dpdCcsICdkaWZmJywgJ0hFQUQnXSkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgorICAgICAgICBn
aXRfbG9nX291dHB1dCA9IGNscy5ydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy1y
JywgcmV2aXNpb24sICctLW9uZWxpbmUnLCAnLS1zaG93LWNvbW1pdCddKQorICAgICAgICAjIEV4
YW1wbGU6IHI0NTM5NiB8IGI0OTU0ZTcgfCAyMDA5LTA2LTMwICBBbnRvbmlvIEdvbWVzICAgPGFu
dG9uaW8uZ29tZXNAb3BlbmJvc3NhLm9yZz4KKyAgICAgICAgbWF0Y2hlZF9jb21taXQgPSByZS5z
ZWFyY2goIl5yKFxkKykgXHwgKFx3KykgXHwgLiokIiwgZ2l0X2xvZ19vdXRwdXQsIHJlLk1VTFRJ
TElORSkKKyAgICAgICAgIyBnaXQgc3ZuIGxvZyBleGl0cyAwIGV2ZW4gb24gbG9va3VwIGZhaWx1
cmUsIHNvIGFzc3VtZSBlbXB0eSBvdXRwdXQgaXMgZmFpbHVyZQorICAgICAgICBpZiBub3QgbWF0
Y2hlZF9jb21taXQ6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBhc3NlcnQgbWF0
Y2hlZF9jb21taXQuZ3JvdXAoMSkgPT0gcmV2aXNpb24sICJnaXQgc3ZuIGxvZyByZXR1cm5lZCBh
IGNvbW1pdCB3aXRoIHRoZSB3cm9uZyByZXZpc2lvbiBudW1iZXIhIgorICAgICAgICByZXR1cm4g
bWF0Y2hlZF9jb21taXQuZ3JvdXAoMikKKworICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2Vs
ZiwgcmV2aXNpb24pOgorICAgICAgICAjIEFzc3VtZSB0aGUgcmV2aXNpb24gaXMgYW4gc3ZuIHJl
dmlzaW9uCisgICAgICAgIGdpdF9jb21taXQgPSBzZWxmLmdpdF9jb21taXRfZnJvbV9zdm5fcmV2
aXNpb24ocmV2aXNpb24pCisgICAgICAgIGxvZygiRm91bmQgbWF0Y2hpbmcgZ2l0LWNvbW1pdCAl
cyBmb3Igc3ZuIHJldmlzaW9uICVzIiAlIChnaXRfY29tbWl0LCByZXZpc2lvbikpCisgICAgICAg
IGlmIG5vdCBnaXRfY29tbWl0OgorICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ0ZhaWxl
ZCB0byBmaW5kIGdpdCBjb21taXQgZm9yIHJldmlzaW9uICVzLCBnaXQgc3ZuIGxvZyBvdXRwdXQ6
ICIlcyInICUgKHJldmlzaW9uLCBnaXRfY29tbWl0KSkKKyAgICAgICAgCisgICAgICAgICMgSSB0
aGluayB0aGlzIHdpbGwgYWx3YXlzIGZhaWwgZHVlIHRvIENoYW5nZUxvZ3MKKyAgICAgICAgcHJp
bnQgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdyZXZlcnQnLCAnLS1uby1jb21taXQnLCBnaXRf
Y29tbWl0XSwgcmFpc2Vfb25fZmFpbHVyZT1GYWxzZSkKKyAgICAgICAgc2VsZi5ydW5fY29tbWFu
ZCgicmVzb2x2ZS1DaGFuZ2VMb2dzIikKKworICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmls
ZV9wYXRocyk6CisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAn
SEVBRCddICsgZmlsZV9wYXRocykKKwogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UpOgogICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNz
YWdlKQogICAgICAgICByZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKCk=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33930</attachid>
            <date>2009-07-31 22:32:47 -0700</date>
            <delta_ts>2009-08-11 23:16:04 -0700</delta_ts>
            <desc>Updated, just needs testing with more rollouts</desc>
            <filename>bug-26715-20090731223244.patch</filename>
            <type>text/plain</type>
            <size>17121</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzNWUxZTAxLi44MGQyZmQyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDct
MTcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIFRoaXMgd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1lLCBidXQgcmVx
dWlyZXMgc29tZQorICAgICAgICBiYWJ5LXNpdHRpbmcuICAicm9sbG91dCIgaXMgbm90IHJlYWR5
IGZvciBnZW5lcmFsIHVzYWdlCisgICAgICAgIGJ1dCBJIHRoaW5rIGl0J3Mgd29ydGggY29tbWl0
dGluZyBhcy1pcyBzbyB0aGF0IG90aGVyCisgICAgICAgIGJyYXZlIHNvdWxzIGxpa2UgRGF2ZSBM
ZXZpbiBhbmQgRGF2ZSBLaWx6ZXIgY2FuIHRyeSBpdC4KKworICAgICAgICAqIFNjcmlwdHMvYnVn
emlsbGEtdG9vbDoKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHk6CisgICAg
ICAgICogU2NyaXB0cy9tb2R1bGVzL3NjbS5weToKKwogMjAwOS0wNy0zMSAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBUcmVhdC4K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCAyZTdlYjBhLi5hNTRmZGQ0IDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC01Niw2ICs1Niw5IEBAIGRlZiBwbHVyYWxpemUobm91
biwgY291bnQpOgogICAgICAgICBub3VuID0gcGx1cmFsKG5vdW4pCiAgICAgcmV0dXJuICIlZCAl
cyIgJSAoY291bnQsIG5vdW4pCiAKK2RlZiB2aWV3X3NvdXJjZV91cmwocmV2aXNpb25fbnVtYmVy
KToKKyAgICByZXR1cm4gImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyVzIiAlIHJl
dmlzaW9uX251bWJlcgorCiAjIFRoZXNlIGNvdWxkIGJlIHB1dCBpbiBzb21lIHNvcnQgb2YgY2hh
bmdlbG9ncy5weS4KIGRlZiBsYXRlc3RfY2hhbmdlbG9nX2VudHJ5KGNoYW5nZWxvZ19wYXRoKToK
ICAgICAjIGUuZy4gMjAwOS0wNi0wMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CkBA
IC04Myw2ICs4NiwyMiBAQCBkZWYgbGF0ZXN0X2NoYW5nZWxvZ19lbnRyeShjaGFuZ2Vsb2dfcGF0
aCk6CiAgICAgIyBXZSBuZXZlciBmb3VuZCBhIGRhdGUgbGluZSEKICAgICByZXR1cm4gTm9uZQog
CitkZWYgdXBkYXRlX2NoYW5nZWxvZ19mb3JfcmV2ZXJ0KGNoYW5nZWxvZ19wYXRoLCByZXZpc2lv
bik6CisgICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxzZQorICAgICMgaW5wbGFjZT0xIGNy
ZWF0ZXMgYSBiYWNrdXAgZmlsZSBhbmQgcmUtZGlyZWN0cyBzdGRvdXQgdG8gdGhlIGZpbGUKKyAg
ICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuRmlsZUlucHV0KGNoYW5nZWxvZ19wYXRoLCBpbnBsYWNl
PTEpOgorICAgICAgICBpZiByZS5zZWFyY2goJ1Jldmlld2VkIGJ5JywgbGluZSk6CisgICAgICAg
ICAgICBwcmludCBsaW5lLnJlcGxhY2UoIlJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpIiwgIk5v
IHJldmlldywgcm9sbGluZyBvdXQgciVzIiAlIHJldmlzaW9uKSwKKyAgICAgICAgICAgIHByaW50
ICIgICAgICAgICVzXG4iICUgdmlld19zb3VyY2VfdXJsKHJldmlzaW9uKQorICAgICAgICAgICAg
IyBSZW1vdmUgYWxsIHRoZSBDaGFuZ2VMb2cgYm9pbGVyIHBsYXRlIGJldHdlZW4gdGhlIFJldmll
d2VkIGJ5IGxpbmUgYW5kIHRoZSBmaXJzdCBjaGFuZ2VkIGZpbGUuCisgICAgICAgICAgICByZW1v
dmluZ19ib2lsZXJwbGF0ZSA9IFRydWUKKyAgICAgICAgZWxpZiByZW1vdmluZ19ib2lsZXJwbGF0
ZSBhbmQgcmUuc2VhcmNoKCJcKiIsIGxpbmUpOiAjIGVhY2ggY2hhbmdlZCBmaWxlIGlzIHByZWNl
ZGVkIGJ5IGEgKgorICAgICAgICAgICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxzZQorICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgCisgICAgICAgIGlmIG5vdCByZW1vdmluZ19ib2lsZXJw
bGF0ZToKKyAgICAgICAgICAgIHByaW50IGxpbmUsCisKIGRlZiBzZXRfcmV2aWV3ZXJfaW5fY2hh
bmdlbG9nKGNoYW5nZWxvZ19wYXRoLCByZXZpZXdlcik6CiAgICAgIyBpbnBsYWNlPTEgY3JlYXRl
cyBhIGJhY2t1cCBmaWxlIGFuZCByZS1kaXJlY3RzIHN0ZG91dCB0byB0aGUgZmlsZQogICAgIGZv
ciBsaW5lIGluIGZpbGVpbnB1dC5GaWxlSW5wdXQoY2hhbmdlbG9nX3BhdGgsIGlucGxhY2U9MSk6
CkBAIC0xNzMsMTAgKzE5Miw5IEBAIGNsYXNzIEFwcGx5UGF0Y2hlc0Zyb21CdWcoQ29tbWFuZCk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwogICAgICAgICAg
ICAgbWFrZV9vcHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9
InVwZGF0ZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3b3JraW5nIGRp
cmVjdG9yeSBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyIpLAotICAgICAgICAgICAgbWFrZV9vcHRp
b24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVh
biIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBh
cHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1pdHMpIiksCi0g
ICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfZmFsc2Ui
LCBkZXN0PSJjbGVhbiIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgY2hlY2sgaWYgdGhlIHdv
cmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuIGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIiksCiAgICAg
ICAgICAgICBtYWtlX29wdGlvbigiLS1sb2NhbC1jb21taXQiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZXN0PSJsb2NhbF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYWtlIGEgbG9jYWwg
Y29tbWl0IGZvciBlYWNoIGFwcGxpZWQgcGF0Y2giKSwKICAgICAgICAgXQorICAgICAgICBvcHRp
b25zICs9IFdlYktpdFNjcmlwdHMuY2xlYW5pbmdfb3B0aW9ucygpCiAgICAgICAgIENvbW1hbmQu
X19pbml0X18oc2VsZiwgJ0FwcGxpZXMgYWxsIHBhdGNoZXMgb24gYSBidWcgdG8gdGhlIGxvY2Fs
IHdvcmtpbmcgZGlyZWN0b3J5IHdpdGhvdXQgY29tbWl0dGluZy4nLCAnQlVHSUQnLCBvcHRpb25z
PW9wdGlvbnMpCiAKICAgICBAc3RhdGljbWV0aG9kCkBAIC0yMDUsMTggKzIyMyw3MSBAQCBjbGFz
cyBBcHBseVBhdGNoZXNGcm9tQnVnKENvbW1hbmQpOgogZGVmIGJ1Z19jb21tZW50X2Zyb21fY29t
bWl0X3RleHQoc2NtLCBjb21taXRfdGV4dCk6CiAgICAgbWF0Y2ggPSByZS5zZWFyY2goc2NtLmNv
bW1pdF9zdWNjZXNzX3JlZ2V4cCgpLCBjb21taXRfdGV4dCwgcmUuTVVMVElMSU5FKQogICAgIHN2
bl9yZXZpc2lvbiA9IG1hdGNoLmdyb3VwKCdzdm5fcmV2aXNpb24nKQotICAgIGNvbW1pdF90ZXh0
ICs9ICgiXG5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8lcyIgJSBzdm5fcmV2aXNp
b24pCisgICAgY29tbWl0X3RleHQgKz0gKCJcbiVzIiAlIHZpZXdfc291cmNlX3VybChzdm5fcmV2
aXNpb24pKQogICAgIHJldHVybiBjb21taXRfdGV4dAogCiAKK2NsYXNzIFdlYktpdFNjcmlwdHM6
CisgICAgCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjbGVhbmluZ19vcHRpb25zKCk6Cisg
ICAgICAgIHJldHVybiBbCisgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwg
aGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJl
bW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0cykiKSwKKyAgICAgICAgICAgIG1ha2Vfb3B0
aW9uKCItLW5vLWNsZWFuIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsZWFuIiwgZGVm
YXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVjayBpZiB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMg
Y2xlYW4gYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMiKSwKKyAgICAgICAgXQorICAgIAorICAgIEBz
dGF0aWNtZXRob2QKKyAgICBkZWYgbGFuZF9vcHRpb25zKCk6CisgICAgICAgIHJldHVybiBbCisg
ICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1jbG9zZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2Ui
LCBkZXN0PSJjbG9zZV9idWciLCBkZWZhdWx0PVRydWUsIGhlbHA9IkxlYXZlIGJ1ZyBvcGVuIGFm
dGVyIGxhbmRpbmcuIiksCisgICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1idWlsZCIsIGFj
dGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJidWlsZCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29t
bWl0IHdpdGhvdXQgYnVpbGRpbmcgZmlyc3QsIGltcGxpZXMgLS1uby10ZXN0LiIpLAorICAgICAg
ICAgICAgbWFrZV9vcHRpb24oIi0tbm8tdGVzdCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0
PSJ0ZXN0IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJDb21taXQgd2l0aG91dCBydW5uaW5nIHJ1bi13
ZWJraXQtdGVzdHMuIiksCisgICAgICAgIF0KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
cnVuX2FuZF90aHJvd19pZl9mYWlsKHNjcmlwdF9uYW1lKToKKyAgICAgICAgcHJvY2VzcyA9IHN1
YnByb2Nlc3MuUG9wZW4oc2NyaXB0X25hbWUpCisgICAgICAgIHJldHVybl9jb2RlID0gcHJvY2Vz
cy53YWl0KCkKKyAgICAgICAgaWYgcmV0dXJuX2NvZGU6CisgICAgICAgICAgICByYWlzZSBTY3Jp
cHRFcnJvcigiJXMgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkIiAlIChzY3JpcHRfbmFtZSwgcmV0
dXJuX2NvZGUpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzZXR1cF9mb3JfbGFuZGlu
ZyhzY20sIG9wdGlvbnMpOgorICAgICAgICBvcy5jaGRpcihzY20uY2hlY2tvdXRfcm9vdCkKKyAg
ICAgICAgc2NtLmVuc3VyZV9ub19sb2NhbF9jb21taXRzKG9wdGlvbnMuZm9yY2VfY2xlYW4pCisg
ICAgICAgIGlmIG9wdGlvbnMuY2xlYW46CisgICAgICAgICAgICBzY20uZW5zdXJlX2NsZWFuX3dv
cmtpbmdfZGlyZWN0b3J5KG9wdGlvbnMuZm9yY2VfY2xlYW4pCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgcnVuX3dlYmtpdF9zY3JpcHQoY2xzLCBzY3JpcHRfbmFtZSk6CisgICAgICAgICMg
V2UgbWlnaHQgbmVlZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24gZm9yIHNjbS5jaGVj
a291dF9yb290CisgICAgICAgIGNscy5ydW5fYW5kX3Rocm93X2lmX2ZhaWwob3MucGF0aC5qb2lu
KCJXZWJLaXRUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpKQorCisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIGJ1aWxkX3dlYmtpdChjbHMpOgorICAgICAgICBjbHMucnVuX3dlYmtpdF9z
Y3JpcHQoImJ1aWxkLXdlYmtpdCIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcnVuX3dl
YmtpdF90ZXN0cyhjbHMpOgorICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQoInJ1bi13ZWJr
aXQtdGVzdHMiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGJ1aWxkX2FuZF9jb21taXQo
Y2xzLCBzY20sIG9wdGlvbnMpOgorICAgICAgICBpZiBvcHRpb25zLmJ1aWxkOgorICAgICAgICAg
ICAgY2xzLmJ1aWxkX3dlYmtpdCgpCisgICAgICAgICAgICBpZiBvcHRpb25zLnRlc3Q6CisgICAg
ICAgICAgICAgICAgY2xzLnJ1bl93ZWJraXRfdGVzdHMoKQorICAgICAgICBjb21taXRfbWVzc2Fn
ZSA9IGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzY20pCisgICAgICAgIGNvbW1pdF9s
b2cgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZSkKKyAgICAgICAgcmV0
dXJuIGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQoY29tbWl0X2xvZykKKworCiBjbGFzcyBM
YW5kQW5kVXBkYXRlQnVnKENvbW1hbmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAg
ICAgb3B0aW9ucyA9IFsKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItciIsICItLXJldmlld2Vy
IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9InJldmlld2VyIiwgaGVscD0i
VXBkYXRlIENoYW5nZUxvZ3MgdG8gc2F5IFJldmlld2VkIGJ5IFJFVklFV0VSLiIpLAotICAgICAg
ICAgICAgbWFrZV9vcHRpb24oIi0tbm8tY2xvc2UiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVz
dD0iY2xvc2VfYnVnIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJMZWF2ZSBidWcgb3BlbiBhZnRlciBs
YW5kaW5nLiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tYnVpbGQiLCBhY3Rpb249
InN0b3JlX2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3
aXRob3V0IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8tdGVzdC4iKSwKLSAgICAgICAgICAg
IG1ha2Vfb3B0aW9uKCItLW5vLXRlc3QiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idGVz
dCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgcnVubmluZyBydW4td2Via2l0
LXRlc3RzLiIpLAogICAgICAgICBdCisgICAgICAgIG9wdGlvbnMgKz0gV2ViS2l0U2NyaXB0cy5s
YW5kX29wdGlvbnMoKQogICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICdMYW5kcyB0aGUg
Y3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBkaWZmIGFuZCB1cGRhdGVzIHRoZSBidWcgaWYgcHJv
dmlkZWQuJywgJ1tCVUdJRF0nLCBvcHRpb25zPW9wdGlvbnMpCiAKICAgICBkZWYgZ3Vlc3NfcmV2
aWV3ZXJfZnJvbV9idWcoc2VsZiwgYnVncywgYnVnX2lkKToKQEAgLTI1MCw3ICszMjEsNyBAQCBj
bGFzcyBMYW5kQW5kVXBkYXRlQnVnKENvbW1hbmQpOgogCiAgICAgICAgIHNlbGYudXBkYXRlX2No
YW5nZWxvZ3Nfd2l0aF9yZXZpZXdlcihvcHRpb25zLnJldmlld2VyLCBidWdfaWQsIHRvb2wpCiAK
LSAgICAgICAgY29tbWVudF90ZXh0ID0gTGFuZFBhdGNoZXNGcm9tQnVncy5idWlsZF9hbmRfY29t
bWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgIGNvbW1lbnRfdGV4dCA9IFdlYktpdFNj
cmlwdHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgpLCBvcHRpb25zKQogICAgICAgICBpZiBi
dWdfaWQ6CiAgICAgICAgICAgICBsb2coIlVwZGF0aW5nIGJ1ZyAlcyIgJSBidWdfaWQpCiAgICAg
ICAgICAgICBpZiBvcHRpb25zLmNsb3NlX2J1ZzoKQEAgLTI2Niw1MiArMzM3LDEwIEBAIGNsYXNz
IExhbmRBbmRVcGRhdGVCdWcoQ29tbWFuZCk6CiAKIGNsYXNzIExhbmRQYXRjaGVzRnJvbUJ1Z3Mo
Q29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBvcHRpb25zID0gWwot
ICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3Ry
dWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtp
bmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5n
ZXMgYW5kIGNvbW1pdHMpIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1jbGVhbiIs
IGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbGVhbiIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0i
RG9uJ3QgY2hlY2sgaWYgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuIGJlZm9yZSBhcHBs
eWluZyBwYXRjaGVzIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1jbG9zZSIsIGFj
dGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjbG9zZV9idWciLCBkZWZhdWx0PVRydWUsIGhlbHA9
IkxlYXZlIGJ1ZyBvcGVuIGFmdGVyIGxhbmRpbmcuIiksCi0gICAgICAgICAgICBtYWtlX29wdGlv
bigiLS1uby1idWlsZCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJidWlsZCIsIGRlZmF1
bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgYnVpbGRpbmcgZmlyc3QsIGltcGxpZXMgLS1u
by10ZXN0LiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tdGVzdCIsIGFjdGlvbj0i
c3RvcmVfZmFsc2UiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJDb21taXQgd2l0
aG91dCBydW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMuIiksCi0gICAgICAgIF0KKyAgICAgICAgb3B0
aW9ucyA9IFdlYktpdFNjcmlwdHMuY2xlYW5pbmdfb3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMg
Kz0gV2ViS2l0U2NyaXB0cy5sYW5kX29wdGlvbnMoKQogICAgICAgICBDb21tYW5kLl9faW5pdF9f
KHNlbGYsICdMYW5kcyBhbGwgcGF0Y2hlcyBvbiBhIGJ1ZyBvcHRpb25hbGx5IHRlc3RpbmcgdGhl
bSBmaXJzdCcsICdCVUdJRCcsIG9wdGlvbnM9b3B0aW9ucykKIAotICAgIEBzdGF0aWNtZXRob2QK
LSAgICBkZWYgcnVuX2FuZF90aHJvd19pZl9mYWlsKHNjcmlwdF9uYW1lKToKLSAgICAgICAgYnVp
bGRfd2Via2l0X3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHNjcmlwdF9uYW1lKQotICAgICAg
ICByZXR1cm5fY29kZSA9IGJ1aWxkX3dlYmtpdF9wcm9jZXNzLndhaXQoKQotICAgICAgICBpZiBy
ZXR1cm5fY29kZToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCIlcyBmYWlsZWQgd2l0
aCBleGl0IGNvZGUgJWQiICUgKHNjcmlwdF9uYW1lLCByZXR1cm5fY29kZSkpCi0KLSAgICBAY2xh
c3NtZXRob2QKLSAgICBkZWYgcnVuX3dlYmtpdF9zY3JpcHQoY2xzLCBzY3JpcHRfbmFtZSk6Ci0g
ICAgICAgICMgV2UgbWlnaHQgbmVlZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24gZm9y
IHNjbS5jaGVja291dF9yb290Ci0gICAgICAgIGNscy5ydW5fYW5kX3Rocm93X2lmX2ZhaWwob3Mu
cGF0aC5qb2luKCJXZWJLaXRUb29scyIsICJTY3JpcHRzIiwgc2NyaXB0X25hbWUpKQotCi0gICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIGJ1aWxkX3dlYmtpdChjbHMpOgotICAgICAgICBjbHMucnVu
X3dlYmtpdF9zY3JpcHQoImJ1aWxkLXdlYmtpdCIpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgcnVuX3dlYmtpdF90ZXN0cyhjbHMpOgotICAgICAgICBjbHMucnVuX3dlYmtpdF9zY3JpcHQo
InJ1bi13ZWJraXQtdGVzdHMiKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBzZXR1cF9m
b3JfbGFuZGluZyhzY20sIG9wdGlvbnMpOgotICAgICAgICBvcy5jaGRpcihzY20uY2hlY2tvdXRf
cm9vdCkKLSAgICAgICAgc2NtLmVuc3VyZV9ub19sb2NhbF9jb21taXRzKG9wdGlvbnMuZm9yY2Vf
Y2xlYW4pCi0gICAgICAgIGlmIG9wdGlvbnMuY2xlYW46Ci0gICAgICAgICAgICBzY20uZW5zdXJl
X2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KG9wdGlvbnMuZm9yY2VfY2xlYW4pCi0KLSAgICBAY2xh
c3NtZXRob2QKLSAgICBkZWYgYnVpbGRfYW5kX2NvbW1pdChjbHMsIHNjbSwgb3B0aW9ucyk6Ci0g
ICAgICAgIGlmIG9wdGlvbnMuYnVpbGQ6Ci0gICAgICAgICAgICBjbHMuYnVpbGRfd2Via2l0KCkK
LSAgICAgICAgICAgIGlmIG9wdGlvbnMudGVzdDoKLSAgICAgICAgICAgICAgICBjbHMucnVuX3dl
YmtpdF90ZXN0cygpCi0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0KHNjbSkKLSAgICAgICAgY29tbWl0X2xvZyA9IHNjbS5jb21taXRfd2l0aF9t
ZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGJ1Z19jb21t
ZW50X2Zyb21fY29tbWl0X3RleHQoc2NtLCBjb21taXRfbG9nKQotCiAgICAgQGNsYXNzbWV0aG9k
CiAgICAgZGVmIGxhbmRfcGF0Y2hlcyhjbHMsIGJ1Z19pZCwgcGF0Y2hlcywgb3B0aW9ucywgdG9v
bCk6CiAgICAgICAgIHRyeToKQEAgLTMxOSw3ICszNDgsNyBAQCBjbGFzcyBMYW5kUGF0Y2hlc0Zy
b21CdWdzKENvbW1hbmQpOgogICAgICAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6CiAgICAg
ICAgICAgICAgICAgdG9vbC5zY20oKS51cGRhdGVfd2Via2l0KCkgIyBVcGRhdGUgYmVmb3JlIGV2
ZXJ5IHBhdGNoIGluIGNhc2UgdGhlIHRyZWUgaGFzIGNoYW5nZWQKICAgICAgICAgICAgICAgICB0
b29sLnNjbSgpLmFwcGx5X3BhdGNoKHBhdGNoKQotICAgICAgICAgICAgICAgIGNvbW1lbnRfdGV4
dCA9IGNscy5idWlsZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgICAg
ICAgICAgY29tbWVudF90ZXh0ID0gV2ViS2l0U2NyaXB0cy5idWlsZF9hbmRfY29tbWl0KHRvb2wu
c2NtKCksIG9wdGlvbnMpCiAgICAgICAgICAgICAgICAgdG9vbC5idWdzLmNsZWFyX2F0dGFjaG1l
bnRfcmV2aWV3X2ZsYWcocGF0Y2hbJ2lkJ10sIGNvbW1lbnRfdGV4dCkKIAogICAgICAgICAgICAg
aWYgb3B0aW9ucy5jbG9zZV9idWc6CkBAIC0zNDMsNyArMzcyLDcgQEAgY2xhc3MgTGFuZFBhdGNo
ZXNGcm9tQnVncyhDb21tYW5kKToKIAogICAgICAgICBsb2coIkxhbmRpbmcgJXMgZnJvbSAlcy4i
ICUgKHBsdXJhbGl6ZSgicGF0Y2giLCBwYXRjaF9jb3VudCksIHBsdXJhbGl6ZSgiYnVnIiwgbGVu
KGFyZ3MpKSkpCiAgICAgICAgIAotICAgICAgICBzZWxmLnNldHVwX2Zvcl9sYW5kaW5nKHRvb2wu
c2NtKCksIG9wdGlvbnMpCisgICAgICAgIFdlYktpdFNjcmlwdHMuc2V0dXBfZm9yX2xhbmRpbmco
dG9vbC5zY20oKSwgb3B0aW9ucykKIAogICAgICAgICBmb3IgYnVnX2lkIGluIGFyZ3M6CiAgICAg
ICAgICAgICBzZWxmLmxhbmRfcGF0Y2hlcyhidWdfaWQsIGJ1Z3NfdG9fcGF0Y2hlc1tidWdfaWRd
LCBvcHRpb25zLCB0b29sKQpAQCAtNDQ2LDYgKzQ3NSw0NyBAQCBjbGFzcyBQb3N0Q29tbWl0c0Fz
UGF0Y2hlc1RvQnVnKENvbW1hbmQpOgogICAgICAgICAgICAgZGlmZl9maWxlID0gU3RyaW5nSU8u
U3RyaW5nSU8oZGlmZikgIyBhZGRfcGF0Y2hfdG9fYnVnIGV4cGVjdHMgYSBmaWxlLWxpa2Ugb2Jq
ZWN0CiAgICAgICAgICAgICB0b29sLmJ1Z3MuYWRkX3BhdGNoX3RvX2J1ZyhidWdfaWQsIGRpZmZf
ZmlsZSwgZGVzY3JpcHRpb24sIGNvbW1lbnRfdGV4dCwgbWFya19mb3JfcmV2aWV3PW9wdGlvbnMu
cmV2aWV3KQogCitjbGFzcyBSb2xsb3V0Q29tbWl0KENvbW1hbmQpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IFdlYktpdFNjcmlwdHMubGFuZF9vcHRpb25zKCkK
KyAgICAgICAgb3B0aW9ucyArPSBXZWJLaXRTY3JpcHRzLmNsZWFuaW5nX29wdGlvbnMoKQorICAg
ICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYsICdSZXZlcnRzIHRoZSBnaXZlbiByZXZpc2lvbiBh
bmQgY29tbWl0cyB0aGUgcmV2ZXJ0LCBvcHRpb25hbGx5IHJlLW9wZW5zIHRoZSBidWcuJywgJ1JF
VklTSU9OIFtCVUdJRF0nLCBvcHRpb25zPW9wdGlvbnMpCisKKyAgICBAc3RhdGljbWV0aG9kCisg
ICAgZGVmIGNyZWF0ZV9jaGFuZ2Vsb2dzX2Zvcl9yZXZlcnQoc2NtLCByZXZpc2lvbik6CisgICAg
ICAgICMgRmlyc3QsIGRpc2NhcmQgdGhlIENoYW5nZUxvZyBjaGFuZ2VzIGZyb20gdGhlIHJvbGxv
dXQuCisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2NtKQor
ICAgICAgICBzY20ucmV2ZXJ0X2ZpbGVzKGNoYW5nZWxvZ19wYXRocykKKworICAgICAgICAjIFNl
Y29uZCwgbWFrZSBuZXcgQ2hhbmdlTG9nIGVudHJpZXMgZm9yIHRoaXMgcm9sbG91dC4KKyAgICAg
ICAgIyBUaGlzIGNvdWxkIG1vdmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5nIGEgLS1y
ZXZlcnQ9IG9wdGlvbi4KKyAgICAgICAgV2ViS2l0U2NyaXB0cy5ydW5fd2Via2l0X3NjcmlwdCgi
cHJlcGFyZS1DaGFuZ2VMb2ciKQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdl
bG9nX3BhdGhzOgorICAgICAgICAgICAgdXBkYXRlX2NoYW5nZWxvZ19mb3JfcmV2ZXJ0KGNoYW5n
ZWxvZ19wYXRoLCByZXZpc2lvbikKKworICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFy
Z3MsIHRvb2wpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIGVycm9yKCJSRVZJ
U0lPTiBpcyByZXF1aXJlZCwgc2VlIC0taGVscC4iKQorICAgICAgICByZXZpc2lvbiA9IGFyZ3Nb
MF0KKyAgICAgICAgYnVnX2lkID0gYXJnc1sxXSBpZiBsZW4oYXJncykgPiAxIGVsc2UgTm9uZQor
ICAgICAgICAKKyAgICAgICAgV2ViS2l0U2NyaXB0cy5zZXR1cF9mb3JfbGFuZGluZyh0b29sLnNj
bSgpLCBvcHRpb25zKQorICAgICAgICAKKyAgICAgICAgdG9vbC5zY20oKS51cGRhdGVfd2Via2l0
KCkKKyAgICAgICAgdG9vbC5zY20oKS5hcHBseV9yZXZlcnNlX2RpZmYocmV2aXNpb24pCisgICAg
ICAgICMgV2Ugc2hvdWxkIHBhcnNlIHRoZSBhZmZlY3RlZCBidWcgbnVtYmVycyBvdXQgb2YgdGhl
IENoYW5nZUxvZyBkaWZmcyBpbnN0ZWFkIG9mIHVzaW5nIGEgY29tbWFuZGxpbmUgYXJnLgorICAg
ICAgICBpZiBub3QgYnVnX2lkOgorICAgICAgICAgICAgbG9nKCJCdWcgSUQgbm90IHBhc3NlZCwg
YW5kIGJ1ZyB1cmwgcGFyc2luZyBmcm9tIENoYW5nZUxvZ3Mgbm90IHlldCBzdXBwb3J0ZWQuICBO
byBidWdzIHdpbGwgYmUgdXBkYXRlZC9yZW9wZW5lZCBhZnRlciB0aGUgcm9sbG91dC4iKQorCisg
ICAgICAgIHNlbGYuY3JlYXRlX2NoYW5nZWxvZ3NfZm9yX3JldmVydCh0b29sLnNjbSgpLCByZXZp
c2lvbikKKworICAgICAgICBjb21tZW50X3RleHQgPSBXZWJLaXRTY3JpcHRzLmJ1aWxkX2FuZF9j
b21taXQodG9vbC5zY20oKSwgb3B0aW9ucykKKworICAgICAgICBpZiBidWdfaWQ6CisgICAgICAg
ICAgICB0b29sLmJ1Z3MucmVvcGVuX2J1ZyhidWdfaWQsIGNvbW1lbnRfdGV4dCkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGxvZyhjb21tZW50X3RleHQpCisgICAgICAgICAgICBsb2coIk5v
IGJ1Z3Mgd2VyZSB1cGRhdGVkIG9yIHJlLW9wZW5lZCB0byByZWZsZWN0IHRoaXMgcm9sbG91dC4i
KQogCiBjbGFzcyBDcmVhdGVCdWcoQ29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpA
QCAtNTUxLDYgKzYyMSw3IEBAIGNsYXNzIEJ1Z3ppbGxhVG9vbDoKICAgICAgICAgICAgIHsgJ25h
bWUnIDogJ29ic29sZXRlLWF0dGFjaG1lbnRzJywgJ29iamVjdCcgOiBPYnNvbGV0ZUF0dGFjaG1l
bnRzT25CdWcoKSB9LAogICAgICAgICAgICAgeyAnbmFtZScgOiAncG9zdC1kaWZmJywgJ29iamVj
dCcgOiBQb3N0RGlmZkFzUGF0Y2hUb0J1ZygpIH0sCiAgICAgICAgICAgICB7ICduYW1lJyA6ICdw
b3N0LWNvbW1pdHMnLCAnb2JqZWN0JyA6IFBvc3RDb21taXRzQXNQYXRjaGVzVG9CdWcoKSB9LAor
ICAgICAgICAgICAgeyAnbmFtZScgOiAncm9sbG91dCcsICdvYmplY3QnIDogUm9sbG91dENvbW1p
dCgpIH0sCiAgICAgICAgIF0KICAgICAgICAgCiAgICAgICAgIHNlbGYuZ2xvYmFsX29wdGlvbl9w
YXJzZXIgPSBIZWxwUHJpbnRpbmdPcHRpb25QYXJzZXIodXNhZ2U9c2VsZi51c2FnZV9saW5lKCks
IGZvcm1hdHRlcj1Ob25XcmFwcGluZ0VwaWxvZ0luZGVudGVkSGVscEZvcm1hdHRlcigpLCBlcGls
b2c9c2VsZi5jb21tYW5kc191c2FnZSgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL2J1Z3ppbGxhLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3pp
bGxhLnB5CmluZGV4IDM3OTc3MWUuLjc3OTk2ODEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvYnVnemlsbGEucHkKQEAgLTQxNSwzICs0MTUsMTcgQEAgY2xhc3MgQnVnemlsbGE6CiAgICAg
ICAgIHNlbGYuYnJvd3NlclsnYnVnX3N0YXR1cyddID0gWydSRVNPTFZFRCddCiAgICAgICAgIHNl
bGYuYnJvd3NlclsncmVzb2x1dGlvbiddID0gWydGSVhFRCddCiAgICAgICAgIHNlbGYuYnJvd3Nl
ci5zdWJtaXQoKQorCisgICAgZGVmIHJlb3Blbl9idWcoc2VsZiwgYnVnX2lkLCBjb21tZW50X3Rl
eHQpOgorICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZSgpCisKKyAgICAgICAgbG9nKCJSZS1vcGVu
aW5nIGJ1ZyAlcyIgJSBidWdfaWQpCisgICAgICAgIGxvZyhjb21tZW50X3RleHQpICMgQnVnemls
bGEgcmVxdWlyZXMgYSBjb21tZW50IHdoZW4gcmUtb3BlbmluZyBhIGJ1Zywgc28gd2Uga25vdyBp
dCB3aWxsIG5ldmVyIGJlIE5vbmUuCisgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgorICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5icm93c2VyLm9wZW4oc2VsZi5idWdfdXJsX2Zvcl9i
dWdfaWQoYnVnX2lkKSkKKyAgICAgICAgc2VsZi5icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9ImNo
YW5nZWZvcm0iKQorICAgICAgICBzZWxmLmJyb3dzZXJbJ2J1Z19zdGF0dXMnXSA9IFsnUkVPUEVO
RUQnXQorICAgICAgICBzZWxmLmJyb3dzZXJbJ2NvbW1lbnQnXSA9IGNvbW1lbnRfdGV4dAorICAg
ICAgICBzZWxmLmJyb3dzZXIuc3VibWl0KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5Cmlu
ZGV4IDI5NmRlNDYuLmMyYzU2NTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9zY20ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weQpAQCAt
MTg1LDYgKzE4NSwxMiBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToK
ICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBs
ZW1lbnQiCiAKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKKyAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1l
bnQiCisgICAgCisgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQi
CisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAg
ICAgCkBAIC0yODQsNiArMjkwLDEzIEBAIGNsYXNzIFNWTihTQ00pOgogICAgIGRlZiBjcmVhdGVf
cGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKHNlbGYuc2NyaXB0
X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSkKIAorICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmYo
c2VsZiwgcmV2aXNpb24pOgorICAgICAgICAjICctYyAtcmV2aXNpb24nIGFwcGxpZXMgdGhlIGlu
dmVyc2UgZGlmZiBvZiAncmV2aXNpb24nCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoInN2biBt
ZXJnZSAtYyAtJXMiICUgcmV2aXNpb24pCisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZp
bGVfcGF0aHMpOgorICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCIgIi5qb2luKFsnc3ZuJywgJ3Jl
dmVydCddICsgZmlsZV9wYXRocykpCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxm
LCBtZXNzYWdlKToKICAgICAgICAgaWYgc2VsZi5kcnlydW46CiAgICAgICAgICAgICByZXR1cm4g
IkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuIgpAQCAtMzQ4LDYgKzM2MSwyNSBAQCBjbGFzcyBH
aXQoU0NNKToKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJ0hFQUQnXSkKIAorICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgor
ICAgICAgICAjIGdpdCBzdm4gZmluZC1yZXYgYWx3YXlzIGV4aXRzIDAsIGV2ZW4gd2hlbiB0aGUg
cmV2aXNpb24gaXMgbm90IGZvdW5kLgorICAgICAgICByZXR1cm4gY2xzLnJ1bl9jb21tYW5kKFsn
Z2l0JywgJ3N2bicsICdmaW5kLXJldicsICdyJXMnICUgcmV2aXNpb25dKQorCisgICAgZGVmIGFw
cGx5X3JldmVyc2VfZGlmZihzZWxmLCByZXZpc2lvbik6CisgICAgICAgICMgQXNzdW1lIHRoZSBy
ZXZpc2lvbiBpcyBhbiBzdm4gcmV2aXNpb24uCisgICAgICAgIGdpdF9jb21taXQgPSBzZWxmLmdp
dF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24ocmV2aXNpb24pCisgICAgICAgIGxvZygiRm91bmQg
bWF0Y2hpbmcgZ2l0LWNvbW1pdCAlcyBmb3Igc3ZuIHJldmlzaW9uICVzIiAlIChnaXRfY29tbWl0
LCByZXZpc2lvbikpCisgICAgICAgIGlmIG5vdCBnaXRfY29tbWl0OgorICAgICAgICAgICAgcmFp
c2UgU2NyaXB0RXJyb3IoJ0ZhaWxlZCB0byBmaW5kIGdpdCBjb21taXQgZm9yIHJldmlzaW9uICVz
LCBnaXQgc3ZuIGxvZyBvdXRwdXQ6ICIlcyInICUgKHJldmlzaW9uLCBnaXRfY29tbWl0KSkKKyAg
ICAgICAgCisgICAgICAgICMgSSB0aGluayB0aGlzIHdpbGwgYWx3YXlzIGZhaWwgZHVlIHRvIENo
YW5nZUxvZ3MuCisgICAgICAgIHByaW50IHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAncmV2ZXJ0
JywgJy0tbm8tY29tbWl0JywgZ2l0X2NvbW1pdF0sIHJhaXNlX29uX2ZhaWx1cmU9RmFsc2UpCisg
ICAgICAgIHNlbGYucnVuX2NvbW1hbmQoInJlc29sdmUtQ2hhbmdlTG9ncyIpCisKKyAgICBkZWYg
cmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgorICAgICAgICBzZWxmLnJ1bl9jb21tYW5k
KFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCisKICAgICBkZWYgY29t
bWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgc2VsZi5jb21taXRfbG9j
YWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKICAgICAgICAgcmV0dXJuIHNlbGYucHVzaF9sb2Nh
bF9jb21taXRzX3RvX3NlcnZlcigp
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34639</attachid>
            <date>2009-08-11 23:16:13 -0700</date>
            <delta_ts>2009-08-19 14:55:28 -0700</delta_ts>
            <desc>Updated to ToT</desc>
            <filename>bug-26715-20090811231612.patch</filename>
            <type>text/plain</type>
            <size>9564</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkMDM5ZWM2Li5iNDNmZDJhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDct
MTcgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIFRoaXMgd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1lLCBidXQgcmVx
dWlyZXMgc29tZQorICAgICAgICBiYWJ5LXNpdHRpbmcuICAicm9sbG91dCIgaXMgbm90IHJlYWR5
IGZvciBnZW5lcmFsIHVzYWdlCisgICAgICAgIGJ1dCBJIHRoaW5rIGl0J3Mgd29ydGggY29tbWl0
dGluZyBhcy1pcyBzbyB0aGF0IG90aGVyCisgICAgICAgIGJyYXZlIHNvdWxzIGxpa2UgRGF2ZSBM
ZXZpbiBhbmQgRGF2ZSBLaWx6ZXIgY2FuIHRyeSBpdC4KKworICAgICAgICAqIFNjcmlwdHMvYnVn
emlsbGEtdG9vbDoKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHk6CisgICAg
ICAgICogU2NyaXB0cy9tb2R1bGVzL3NjbS5weToKKwogMjAwOS0wOC0xMSAgSm9obiBHcmVnZyAg
PGpvaG5ueWdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hv
d2lhay4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCBhNThlOTk1Li4yYzM4MjNmIDEw
MDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC01Nyw3ICs1Nyw3IEBAIGRlZiBwbHVyYWxp
emUobm91biwgY291bnQpOgogICAgIHJldHVybiAiJWQgJXMiICUgKGNvdW50LCBub3VuKQogCiBk
ZWYgdmlld19zb3VyY2VfdXJsKHJldmlzaW9uX251bWJlcik6Ci0gICAgIHJldHVybiAiaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvJXMiICUgcmV2aXNpb25fbnVtYmVyCisgICAgcmV0
dXJuICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8lcyIgJSByZXZpc2lvbl9udW1i
ZXIKIAogIyBUaGVzZSBjb3VsZCBiZSBwdXQgaW4gc29tZSBzb3J0IG9mIGNoYW5nZWxvZ3MucHku
CiBkZWYgbGF0ZXN0X2NoYW5nZWxvZ19lbnRyeShjaGFuZ2Vsb2dfcGF0aCk6CkBAIC04Niw2ICs4
NiwyMiBAQCBkZWYgbGF0ZXN0X2NoYW5nZWxvZ19lbnRyeShjaGFuZ2Vsb2dfcGF0aCk6CiAgICAg
IyBXZSBuZXZlciBmb3VuZCBhIGRhdGUgbGluZSEKICAgICByZXR1cm4gTm9uZQogCitkZWYgdXBk
YXRlX2NoYW5nZWxvZ19mb3JfcmV2ZXJ0KGNoYW5nZWxvZ19wYXRoLCByZXZpc2lvbik6CisgICAg
cmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxzZQorICAgICMgaW5wbGFjZT0xIGNyZWF0ZXMgYSBi
YWNrdXAgZmlsZSBhbmQgcmUtZGlyZWN0cyBzdGRvdXQgdG8gdGhlIGZpbGUKKyAgICBmb3IgbGlu
ZSBpbiBmaWxlaW5wdXQuRmlsZUlucHV0KGNoYW5nZWxvZ19wYXRoLCBpbnBsYWNlPTEpOgorICAg
ICAgICBpZiByZS5zZWFyY2goJ1Jldmlld2VkIGJ5JywgbGluZSk6CisgICAgICAgICAgICBwcmlu
dCBsaW5lLnJlcGxhY2UoIlJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpIiwgIk5vIHJldmlldywg
cm9sbGluZyBvdXQgciVzIiAlIHJldmlzaW9uKSwKKyAgICAgICAgICAgIHByaW50ICIgICAgICAg
ICVzXG4iICUgdmlld19zb3VyY2VfdXJsKHJldmlzaW9uKQorICAgICAgICAgICAgIyBSZW1vdmUg
YWxsIHRoZSBDaGFuZ2VMb2cgYm9pbGVyIHBsYXRlIGJldHdlZW4gdGhlIFJldmlld2VkIGJ5IGxp
bmUgYW5kIHRoZSBmaXJzdCBjaGFuZ2VkIGZpbGUuCisgICAgICAgICAgICByZW1vdmluZ19ib2ls
ZXJwbGF0ZSA9IFRydWUKKyAgICAgICAgZWxpZiByZW1vdmluZ19ib2lsZXJwbGF0ZSBhbmQgcmUu
c2VhcmNoKCJcKiIsIGxpbmUpOiAjIGVhY2ggY2hhbmdlZCBmaWxlIGlzIHByZWNlZGVkIGJ5IGEg
KgorICAgICAgICAgICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxzZQorICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgCisgICAgICAgIGlmIG5vdCByZW1vdmluZ19ib2lsZXJwbGF0ZToKKyAg
ICAgICAgICAgIHByaW50IGxpbmUsCisKIGRlZiBzZXRfcmV2aWV3ZXJfaW5fY2hhbmdlbG9nKGNo
YW5nZWxvZ19wYXRoLCByZXZpZXdlcik6CiAgICAgIyBpbnBsYWNlPTEgY3JlYXRlcyBhIGJhY2t1
cCBmaWxlIGFuZCByZS1kaXJlY3RzIHN0ZG91dCB0byB0aGUgZmlsZQogICAgIGZvciBsaW5lIGlu
IGZpbGVpbnB1dC5GaWxlSW5wdXQoY2hhbmdlbG9nX3BhdGgsIGlucGxhY2U9MSk6CkBAIC0xODYs
MTAgKzIwMiw5IEBAIGNsYXNzIEFwcGx5UGF0Y2hlc0Zyb21CdWcoQ29tbWFuZCk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwogICAgICAgICAgICAgbWFrZV9v
cHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InVwZGF0ZSIs
IGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBi
ZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tZm9y
Y2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1
bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBw
YXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1pdHMpIiksCi0gICAgICAgICAg
ICBtYWtlX29wdGlvbigiLS1uby1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJj
bGVhbiIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgY2hlY2sgaWYgdGhlIHdvcmtpbmcgZGly
ZWN0b3J5IGlzIGNsZWFuIGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIiksCiAgICAgICAgICAgICBt
YWtlX29wdGlvbigiLS1sb2NhbC1jb21taXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJs
b2NhbF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYWtlIGEgbG9jYWwgY29tbWl0IGZv
ciBlYWNoIGFwcGxpZWQgcGF0Y2giKSwKICAgICAgICAgXQorICAgICAgICBvcHRpb25zICs9IFdl
YktpdExhbmRpbmdTY3JpcHRzLmNsZWFuaW5nX29wdGlvbnMoKQogICAgICAgICBDb21tYW5kLl9f
aW5pdF9fKHNlbGYsICdBcHBsaWVzIGFsbCBwYXRjaGVzIG9uIGEgYnVnIHRvIHRoZSBsb2NhbCB3
b3JraW5nIGRpcmVjdG9yeSB3aXRob3V0IGNvbW1pdHRpbmcuJywgJ0JVR0lEJywgb3B0aW9ucz1v
cHRpb25zKQogCiAgICAgQHN0YXRpY21ldGhvZApAQCAtNDkwLDYgKzUwNSw0OCBAQCBjbGFzcyBQ
b3N0Q29tbWl0c0FzUGF0Y2hlc1RvQnVnKENvbW1hbmQpOgogICAgICAgICAgICAgdG9vbC5idWdz
LmFkZF9wYXRjaF90b19idWcoYnVnX2lkLCBkaWZmX2ZpbGUsIGRlc2NyaXB0aW9uLCBjb21tZW50
X3RleHQsIG1hcmtfZm9yX3Jldmlldz1vcHRpb25zLnJldmlldykKIAogCitjbGFzcyBSb2xsb3V0
Q29tbWl0KENvbW1hbmQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgb3B0aW9u
cyA9IFdlYktpdExhbmRpbmdTY3JpcHRzLmxhbmRfb3B0aW9ucygpCisgICAgICAgIG9wdGlvbnMg
Kz0gV2ViS2l0TGFuZGluZ1NjcmlwdHMuY2xlYW5pbmdfb3B0aW9ucygpCisgICAgICAgIENvbW1h
bmQuX19pbml0X18oc2VsZiwgJ1JldmVydHMgdGhlIGdpdmVuIHJldmlzaW9uIGFuZCBjb21taXRz
IHRoZSByZXZlcnQsIG9wdGlvbmFsbHkgcmUtb3BlbnMgdGhlIGJ1Zy4nLCAnUkVWSVNJT04gW0JV
R0lEXScsIG9wdGlvbnM9b3B0aW9ucykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY3Jl
YXRlX2NoYW5nZWxvZ3NfZm9yX3JldmVydChzY20sIHJldmlzaW9uKToKKyAgICAgICAgIyBGaXJz
dCwgZGlzY2FyZCB0aGUgQ2hhbmdlTG9nIGNoYW5nZXMgZnJvbSB0aGUgcm9sbG91dC4KKyAgICAg
ICAgY2hhbmdlbG9nX3BhdGhzID0gbW9kaWZpZWRfY2hhbmdlbG9ncyhzY20pCisgICAgICAgIHNj
bS5yZXZlcnRfZmlsZXMoY2hhbmdlbG9nX3BhdGhzKQorCisgICAgICAgICMgU2Vjb25kLCBtYWtl
IG5ldyBDaGFuZ2VMb2cgZW50cmllcyBmb3IgdGhpcyByb2xsb3V0LgorICAgICAgICAjIFRoaXMg
Y291bGQgbW92ZSB0byBwcmVwYXJlLUNoYW5nZUxvZyBieSBhZGRpbmcgYSAtLXJldmVydD0gb3B0
aW9uLgorICAgICAgICBXZWJLaXRMYW5kaW5nU2NyaXB0cy5ydW5fd2Via2l0X3NjcmlwdCgicHJl
cGFyZS1DaGFuZ2VMb2ciKQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdlbG9n
X3BhdGhzOgorICAgICAgICAgICAgdXBkYXRlX2NoYW5nZWxvZ19mb3JfcmV2ZXJ0KGNoYW5nZWxv
Z19wYXRoLCByZXZpc2lvbikKKworICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3Ms
IHRvb2wpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIGVycm9yKCJSRVZJU0lP
TiBpcyByZXF1aXJlZCwgc2VlIC0taGVscC4iKQorICAgICAgICByZXZpc2lvbiA9IGFyZ3NbMF0K
KyAgICAgICAgYnVnX2lkID0gYXJnc1sxXSBpZiBsZW4oYXJncykgPiAxIGVsc2UgTm9uZQorICAg
ICAgICAKKyAgICAgICAgV2ViS2l0TGFuZGluZ1NjcmlwdHMuc2V0dXBfZm9yX2xhbmRpbmcodG9v
bC5zY20oKSwgb3B0aW9ucykKKyAgICAgICAgCisgICAgICAgIHRvb2wuc2NtKCkudXBkYXRlX3dl
YmtpdCgpCisgICAgICAgIHRvb2wuc2NtKCkuYXBwbHlfcmV2ZXJzZV9kaWZmKHJldmlzaW9uKQor
ICAgICAgICAjIFdlIHNob3VsZCBwYXJzZSB0aGUgYWZmZWN0ZWQgYnVnIG51bWJlcnMgb3V0IG9m
IHRoZSBDaGFuZ2VMb2cgZGlmZnMgaW5zdGVhZCBvZiB1c2luZyBhIGNvbW1hbmRsaW5lIGFyZy4K
KyAgICAgICAgaWYgbm90IGJ1Z19pZDoKKyAgICAgICAgICAgIGxvZygiQnVnIElEIG5vdCBwYXNz
ZWQsIGFuZCBidWcgdXJsIHBhcnNpbmcgZnJvbSBDaGFuZ2VMb2dzIG5vdCB5ZXQgc3VwcG9ydGVk
LiAgTm8gYnVncyB3aWxsIGJlIHVwZGF0ZWQvcmVvcGVuZWQgYWZ0ZXIgdGhlIHJvbGxvdXQuIikK
KworICAgICAgICBzZWxmLmNyZWF0ZV9jaGFuZ2Vsb2dzX2Zvcl9yZXZlcnQodG9vbC5zY20oKSwg
cmV2aXNpb24pCisKKyAgICAgICAgY29tbWVudF90ZXh0ID0gV2ViS2l0TGFuZGluZ1NjcmlwdHMu
YnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgpLCBvcHRpb25zKQorCisgICAgICAgIGlmIGJ1Z19p
ZDoKKyAgICAgICAgICAgIHRvb2wuYnVncy5yZW9wZW5fYnVnKGJ1Z19pZCwgY29tbWVudF90ZXh0
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nKGNvbW1lbnRfdGV4dCkKKyAgICAgICAg
ICAgIGxvZygiTm8gYnVncyB3ZXJlIHVwZGF0ZWQgb3IgcmUtb3BlbmVkIHRvIHJlZmxlY3QgdGhp
cyByb2xsb3V0LiIpCisKIGNsYXNzIENyZWF0ZUJ1ZyhDb21tYW5kKToKICAgICBkZWYgX19pbml0
X18oc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBbCkBAIC01OTQsNiArNjUxLDcgQEAgY2xhc3Mg
QnVnemlsbGFUb29sOgogICAgICAgICAgICAgeyAnbmFtZScgOiAnb2Jzb2xldGUtYXR0YWNobWVu
dHMnLCAnb2JqZWN0JyA6IE9ic29sZXRlQXR0YWNobWVudHNPbkJ1ZygpIH0sCiAgICAgICAgICAg
ICB7ICduYW1lJyA6ICdwb3N0LWRpZmYnLCAnb2JqZWN0JyA6IFBvc3REaWZmQXNQYXRjaFRvQnVn
KCkgfSwKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ3Bvc3QtY29tbWl0cycsICdvYmplY3QnIDog
UG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZygpIH0sCisgICAgICAgICAgICB7ICduYW1lJyA6ICdy
b2xsb3V0JywgJ29iamVjdCcgOiBSb2xsb3V0Q29tbWl0KCkgfSwKICAgICAgICAgXQogCiAgICAg
ICAgIHNlbGYuZ2xvYmFsX29wdGlvbl9wYXJzZXIgPSBIZWxwUHJpbnRpbmdPcHRpb25QYXJzZXIo
dXNhZ2U9c2VsZi51c2FnZV9saW5lKCksIGZvcm1hdHRlcj1Ob25XcmFwcGluZ0VwaWxvZ0luZGVu
dGVkSGVscEZvcm1hdHRlcigpLCBlcGlsb2c9c2VsZi5jb21tYW5kc191c2FnZSgpKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CmluZGV4IDFlZWJlOWQuLjIzZmYzOGQgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKQEAgLTM4NSwzICszODUsMTcg
QEAgY2xhc3MgQnVnemlsbGE6CiAgICAgICAgIHNlbGYuYnJvd3NlclsnYnVnX3N0YXR1cyddID0g
WydSRVNPTFZFRCddCiAgICAgICAgIHNlbGYuYnJvd3NlclsncmVzb2x1dGlvbiddID0gWydGSVhF
RCddCiAgICAgICAgIHNlbGYuYnJvd3Nlci5zdWJtaXQoKQorCisgICAgZGVmIHJlb3Blbl9idWco
c2VsZiwgYnVnX2lkLCBjb21tZW50X3RleHQpOgorICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZSgp
CisKKyAgICAgICAgbG9nKCJSZS1vcGVuaW5nIGJ1ZyAlcyIgJSBidWdfaWQpCisgICAgICAgIGxv
Zyhjb21tZW50X3RleHQpICMgQnVnemlsbGEgcmVxdWlyZXMgYSBjb21tZW50IHdoZW4gcmUtb3Bl
bmluZyBhIGJ1Zywgc28gd2Uga25vdyBpdCB3aWxsIG5ldmVyIGJlIE5vbmUuCisgICAgICAgIGlm
IHNlbGYuZHJ5cnVuOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5icm93c2Vy
Lm9wZW4oc2VsZi5idWdfdXJsX2Zvcl9idWdfaWQoYnVnX2lkKSkKKyAgICAgICAgc2VsZi5icm93
c2VyLnNlbGVjdF9mb3JtKG5hbWU9ImNoYW5nZWZvcm0iKQorICAgICAgICBzZWxmLmJyb3dzZXJb
J2J1Z19zdGF0dXMnXSA9IFsnUkVPUEVORUQnXQorICAgICAgICBzZWxmLmJyb3dzZXJbJ2NvbW1l
bnQnXSA9IGNvbW1lbnRfdGV4dAorICAgICAgICBzZWxmLmJyb3dzZXIuc3VibWl0KCkKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvc2NtLnB5CmluZGV4IGVjMWYzNjIuLjhkNDIxNTggMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9tb2R1bGVzL3NjbS5weQpAQCAtMTc3LDYgKzE3NywxMiBAQCBjbGFzcyBTQ006CiAgICAg
ZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
ciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9k
aWZmKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwg
InN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisgICAgCisgICAgZGVmIHJldmVydF9maWxlcyhz
ZWxmLCBmaWxlX3BhdGhzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1
YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNs
YXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAgICAgCkBAIC0yNzYsNiArMjgyLDEzIEBAIGNsYXNzIFNW
TihTQ00pOgogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxm
LnJ1bl9jb21tYW5kKHNlbGYuc2NyaXB0X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSkKIAorICAg
IGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICAjICctYyAt
cmV2aXNpb24nIGFwcGxpZXMgdGhlIGludmVyc2UgZGlmZiBvZiAncmV2aXNpb24nCisgICAgICAg
IHNlbGYucnVuX2NvbW1hbmQoInN2biBtZXJnZSAtYyAtJXMiICUgcmV2aXNpb24pCisKKyAgICBk
ZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgorICAgICAgICBzZWxmLnJ1bl9jb21t
YW5kKCIgIi5qb2luKFsnc3ZuJywgJ3JldmVydCddICsgZmlsZV9wYXRocykpCisKICAgICBkZWYg
Y29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgaWYgc2VsZi5kcnly
dW46CiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuIgpAQCAt
MzQwLDYgKzM1MywyNSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNl
bGYpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJ0hF
QUQnXSkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3Jl
dmlzaW9uKGNscywgcmV2aXNpb24pOgorICAgICAgICAjIGdpdCBzdm4gZmluZC1yZXYgYWx3YXlz
IGV4aXRzIDAsIGV2ZW4gd2hlbiB0aGUgcmV2aXNpb24gaXMgbm90IGZvdW5kLgorICAgICAgICBy
ZXR1cm4gY2xzLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdmaW5kLXJldicsICdyJXMnICUg
cmV2aXNpb25dKQorCisgICAgZGVmIGFwcGx5X3JldmVyc2VfZGlmZihzZWxmLCByZXZpc2lvbik6
CisgICAgICAgICMgQXNzdW1lIHRoZSByZXZpc2lvbiBpcyBhbiBzdm4gcmV2aXNpb24uCisgICAg
ICAgIGdpdF9jb21taXQgPSBzZWxmLmdpdF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24ocmV2aXNp
b24pCisgICAgICAgIGxvZygiRm91bmQgbWF0Y2hpbmcgZ2l0LWNvbW1pdCAlcyBmb3Igc3ZuIHJl
dmlzaW9uICVzIiAlIChnaXRfY29tbWl0LCByZXZpc2lvbikpCisgICAgICAgIGlmIG5vdCBnaXRf
Y29tbWl0OgorICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ0ZhaWxlZCB0byBmaW5kIGdp
dCBjb21taXQgZm9yIHJldmlzaW9uICVzLCBnaXQgc3ZuIGxvZyBvdXRwdXQ6ICIlcyInICUgKHJl
dmlzaW9uLCBnaXRfY29tbWl0KSkKKyAgICAgICAgCisgICAgICAgICMgSSB0aGluayB0aGlzIHdp
bGwgYWx3YXlzIGZhaWwgZHVlIHRvIENoYW5nZUxvZ3MuCisgICAgICAgIHByaW50IHNlbGYucnVu
X2NvbW1hbmQoWydnaXQnLCAncmV2ZXJ0JywgJy0tbm8tY29tbWl0JywgZ2l0X2NvbW1pdF0sIHJh
aXNlX29uX2ZhaWx1cmU9RmFsc2UpCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoInJlc29sdmUt
Q2hhbmdlTG9ncyIpCisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgor
ICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZp
bGVfcGF0aHMpCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToK
ICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKICAgICAg
ICAgcmV0dXJuIHNlbGYucHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcigp
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35147</attachid>
            <date>2009-08-19 14:55:33 -0700</date>
            <delta_ts>2009-09-10 14:11:58 -0700</delta_ts>
            <desc>Update rollout support</desc>
            <filename>bug-26715-20090819145532.patch</filename>
            <type>text/plain</type>
            <size>25317</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiNmQ2MThkLi43Y2Q3N2RhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDgt
MTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIFRoaXMgd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1lLCBidXQgcmVx
dWlyZXMgc29tZQorICAgICAgICBiYWJ5LXNpdHRpbmcuICAicm9sbG91dCIgaXMgbm90IHJlYWR5
IGZvciBnZW5lcmFsIHVzYWdlCisgICAgICAgIGJ1dCBJIHRoaW5rIGl0J3Mgd29ydGggY29tbWl0
dGluZyBhcy1pcyBzbyB0aGF0IG90aGVyCisgICAgICAgIGJyYXZlIHNvdWxzIGxpa2UgRGF2ZSBM
ZXZpbiBhbmQgRGF2ZSBLaWx6ZXIgY2FuIHRyeSBpdC4KKworICAgICAgICAqIFNjcmlwdHMvYnVn
emlsbGEtdG9vbDoKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHk6CisgICAg
ICAgICogU2NyaXB0cy9tb2R1bGVzL3NjbS5weToKKwogMjAwOS0wOC0xOCAgQnJpYW4gV2VpbnN0
ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVy
IEh1bnQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKaW5kZXggYTMxZmFjNS4uN2I2MTg5OSAx
MDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbApAQCAtMzAsNyArMzAsNiBAQAogIwogIyBBIHRv
b2wgZm9yIGF1dG9tYXRpbmcgZGVhbGluZyB3aXRoIGJ1Z3ppbGxhLCBwb3N0aW5nIHBhdGNoZXMs
IGNvbW1pdHRpbmcgcGF0Y2hlcywgZXRjLgogCi1pbXBvcnQgZmlsZWlucHV0ICMgaW5wbGFjZSBm
aWxlIGVkaXRpbmcgZm9yIHNldF9yZXZpZXdlcl9pbl9jaGFuZ2Vsb2cKIGltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgU3RyaW5nSU8gIyBmb3IgYWRkX3BhdGNoX3RvX2J1ZyBmaWxlIHdyYXBw
ZXJzCkBAIC00MSw2ICs0MCw3IEBAIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlciwg
SW5kZW50ZWRIZWxwRm9ybWF0dGVyLCBTVVBQUkVTU19VU0FHRSwgbWFrZV9vCiAKICMgSW1wb3J0
IFdlYktpdC1zcGVjaWZpYyBtb2R1bGVzLgogZnJvbSBtb2R1bGVzLmJ1Z3ppbGxhIGltcG9ydCBC
dWd6aWxsYQorZnJvbSBtb2R1bGVzLmNoYW5nZWxvZ3MgaW1wb3J0IENoYW5nZUxvZywgdmlld19z
b3VyY2VfdXJsCiBmcm9tIG1vZHVsZXMubG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogZnJvbSBt
b2R1bGVzLnNjbSBpbXBvcnQgQ29tbWl0TWVzc2FnZSwgZGV0ZWN0X3NjbV9zeXN0ZW0sIFNjcmlw
dEVycm9yCiBmcm9tIG1vZHVsZXMuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90CkBAIC01Nyw0MSAr
NTcsNiBAQCBkZWYgcGx1cmFsaXplKG5vdW4sIGNvdW50KToKICAgICAgICAgbm91biA9IHBsdXJh
bChub3VuKQogICAgIHJldHVybiAiJWQgJXMiICUgKGNvdW50LCBub3VuKQogCi1kZWYgdmlld19z
b3VyY2VfdXJsKHJldmlzaW9uX251bWJlcik6Ci0gICAgIHJldHVybiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvJXMiICUgcmV2aXNpb25fbnVtYmVyCi0KLSMgVGhlc2UgY291bGQg
YmUgcHV0IGluIHNvbWUgc29ydCBvZiBjaGFuZ2Vsb2dzLnB5LgotZGVmIGxhdGVzdF9jaGFuZ2Vs
b2dfZW50cnkoY2hhbmdlbG9nX3BhdGgpOgotICAgICMgZS5nLiAyMDA5LTA2LTAzICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KLSAgICBjaGFuZ2Vsb2dfZGF0ZV9saW5lX3JlZ2V4cCA9
IHJlLmNvbXBpbGUoJ14oXGR7NH0tXGR7Mn0tXGR7Mn0pJyAjIENvbnN1bWUgdGhlIGRhdGUuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnXHMrKC4rKVxzKycgIyBDb25zdW1l
IHRoZSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzwoW148Pl0r
KT4kJykgIyBBbmQgZmluYWxseSB0aGUgZW1haWwgYWRkcmVzcy4KLSAgICAKLSAgICBlbnRyeV9s
aW5lcyA9IFtdCi0gICAgY2hhbmdlbG9nID0gb3BlbihjaGFuZ2Vsb2dfcGF0aCkKLSAgICB0cnk6
Ci0gICAgICAgIGxvZygiUGFyc2luZyBDaGFuZ2VMb2c6ICIgKyBjaGFuZ2Vsb2dfcGF0aCkKLSAg
ICAgICAgIyBUaGUgZmlyc3QgbGluZSBzaG91bGQgYmUgYSBkYXRlIGxpbmUuCi0gICAgICAgIGZp
cnN0X2xpbmUgPSBjaGFuZ2Vsb2cucmVhZGxpbmUoKQotICAgICAgICBpZiBub3QgY2hhbmdlbG9n
X2RhdGVfbGluZV9yZWdleHAubWF0Y2goZmlyc3RfbGluZSk6Ci0gICAgICAgICAgICByZXR1cm4g
Tm9uZQotICAgICAgICBlbnRyeV9saW5lcy5hcHBlbmQoZmlyc3RfbGluZSkKLSAgICAgICAgCi0g
ICAgICAgIGZvciBsaW5lIGluIGNoYW5nZWxvZzoKLSAgICAgICAgICAgICMgSWYgd2UndmUgaGl0
IHRoZSBuZXh0IGVudHJ5LCByZXR1cm4uCi0gICAgICAgICAgICBpZiBjaGFuZ2Vsb2dfZGF0ZV9s
aW5lX3JlZ2V4cC5tYXRjaChsaW5lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJycuam9pbihl
bnRyeV9saW5lcykKLSAgICAgICAgICAgIGVudHJ5X2xpbmVzLmFwcGVuZChsaW5lKQotICAgIGZp
bmFsbHk6Ci0gICAgICAgIGNoYW5nZWxvZy5jbG9zZSgpCi0gICAgIyBXZSBuZXZlciBmb3VuZCBh
IGRhdGUgbGluZSEKLSAgICByZXR1cm4gTm9uZQotCi1kZWYgc2V0X3Jldmlld2VyX2luX2NoYW5n
ZWxvZyhjaGFuZ2Vsb2dfcGF0aCwgcmV2aWV3ZXIpOgotICAgICMgaW5wbGFjZT0xIGNyZWF0ZXMg
YSBiYWNrdXAgZmlsZSBhbmQgcmUtZGlyZWN0cyBzdGRvdXQgdG8gdGhlIGZpbGUKLSAgICBmb3Ig
bGluZSBpbiBmaWxlaW5wdXQuRmlsZUlucHV0KGNoYW5nZWxvZ19wYXRoLCBpbnBsYWNlPTEpOgot
ICAgICAgICBwcmludCBsaW5lLnJlcGxhY2UoIk5PQk9EWSAoT09QUyEpIiwgcmV2aWV3ZXIuZW5j
b2RlKCJ1dGYtOCIpKSwgIyBUcmFpbGluZyBjb21tYSBzdXBwcmVzc2VzIHByaW50aW5nIG5ld2xp
bmUKLQogZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2NtKToKICAgICBjaGFuZ2Vsb2dfcGF0aHMg
PSBbXQogICAgIHBhdGhzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQpAQCAtMTAwLDggKzY1LDcgQEAg
ZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2NtKToKICAgICAgICAgICAgIGNoYW5nZWxvZ19wYXRo
cy5hcHBlbmQocGF0aCkKICAgICByZXR1cm4gY2hhbmdlbG9nX3BhdGhzCiAKLWRlZiBwYXJzZV9i
dWdfaWQoY29tbWl0X21lc3NhZ2UpOgotICAgIG1lc3NhZ2UgPSBjb21taXRfbWVzc2FnZS5tZXNz
YWdlKCkKK2RlZiBwYXJzZV9idWdfaWQobWVzc2FnZSk6CiAgICAgbWF0Y2ggPSByZS5zZWFyY2go
Imh0dHBcOi8vd2Via2l0XC5vcmcvYi8oP1A8YnVnX2lkPlxkKykiLCBtZXNzYWdlKQogICAgIGlm
IG1hdGNoOgogICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ2J1Z19pZCcpCkBAIC0xMTgsMTIg
KzgyLDEzIEBAIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2NtKToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb250cmlidXRp
bmcuaHRtbCIpCiAKICAgICBjaGFuZ2Vsb2dfbWVzc2FnZXMgPSBbXQotICAgIGZvciBwYXRoIGlu
IGNoYW5nZWxvZ19wYXRoczoKLSAgICAgICAgY2hhbmdlbG9nX2VudHJ5ID0gbGF0ZXN0X2NoYW5n
ZWxvZ19lbnRyeShwYXRoKQorICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0
aHM6CisgICAgICAgIGxvZygiUGFyc2luZyBDaGFuZ2VMb2c6ICVzIiAlIGNoYW5nZWxvZ19wYXRo
KQorICAgICAgICBjaGFuZ2Vsb2dfZW50cnkgPSBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLmxh
dGVzdF9lbnRyeSgpCiAgICAgICAgIGlmIG5vdCBjaGFuZ2Vsb2dfZW50cnk6Ci0gICAgICAgICAg
ICBlcnJvcigiRmFpbGVkIHRvIHBhcnNlIENoYW5nZUxvZzogIiArIG9zLnBhdGguYWJzcGF0aChw
YXRoKSkKKyAgICAgICAgICAgIGVycm9yKCJGYWlsZWQgdG8gcGFyc2UgQ2hhbmdlTG9nOiAiICsg
b3MucGF0aC5hYnNwYXRoKGNoYW5nZWxvZ19wYXRoKSkKICAgICAgICAgY2hhbmdlbG9nX21lc3Nh
Z2VzLmFwcGVuZChjaGFuZ2Vsb2dfZW50cnkpCi0gICAgCisKICAgICAjIEZJWE1FOiBXZSBzaG91
bGQgc29ydCBhbmQgbGFiZWwgdGhlIENoYW5nZUxvZyBtZXNzYWdlcyBsaWtlIGNvbW1pdC1sb2ct
ZWRpdG9yIGRvZXMuCiAgICAgcmV0dXJuIENvbW1pdE1lc3NhZ2UoJycuam9pbihjaGFuZ2Vsb2df
bWVzc2FnZXMpLnNwbGl0bGluZXMoKSkKIApAQCAtMTg3LDEwICsxNTIsOSBAQCBjbGFzcyBBcHBs
eVBhdGNoZXNGcm9tQnVnKENvbW1hbmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAg
ICAgb3B0aW9ucyA9IFsKICAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLXVwZGF0ZSIsIGFj
dGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJ1cGRhdGUiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRv
bid0IHVwZGF0ZSB0aGUgd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMi
KSwKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLWZvcmNlLWNsZWFuIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVzdD0iZm9yY2VfY2xlYW4iLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJDbGVhbiB3
b3JraW5nIGRpcmVjdG9yeSBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyAocmVtb3ZlcyBsb2NhbCBj
aGFuZ2VzIGFuZCBjb21taXRzKSIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tY2xl
YW4iLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY2xlYW4iLCBkZWZhdWx0PVRydWUsIGhl
bHA9IkRvbid0IGNoZWNrIGlmIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiBiZWZvcmUg
YXBwbHlpbmcgcGF0Y2hlcyIpLAogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbG9jYWwtY29t
bWl0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ibG9jYWxfY29tbWl0IiwgZGVmYXVsdD1G
YWxzZSwgaGVscD0iTWFrZSBhIGxvY2FsIGNvbW1pdCBmb3IgZWFjaCBhcHBsaWVkIHBhdGNoIiks
CiAgICAgICAgIF0KKyAgICAgICAgb3B0aW9ucyArPSBXZWJLaXRMYW5kaW5nU2NyaXB0cy5jbGVh
bmluZ19vcHRpb25zKCkKICAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAnQXBwbGllcyBh
bGwgcGF0Y2hlcyBvbiBhIGJ1ZyB0byB0aGUgbG9jYWwgd29ya2luZyBkaXJlY3Rvcnkgd2l0aG91
dCBjb21taXR0aW5nLicsICdCVUdJRCcsIG9wdGlvbnM9b3B0aW9ucykKIAogICAgIEBzdGF0aWNt
ZXRob2QKQEAgLTMzNCw4ICsyOTgsOCBAQCBjbGFzcyBMYW5kQW5kVXBkYXRlQnVnKENvbW1hbmQp
OgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgY2hhbmdlbG9ncyA9IG1vZGlmaWVkX2No
YW5nZWxvZ3ModG9vbC5zY20oKSkKLSAgICAgICAgZm9yIGNoYW5nZWxvZyBpbiBjaGFuZ2Vsb2dz
OgotICAgICAgICAgICAgc2V0X3Jldmlld2VyX2luX2NoYW5nZWxvZyhjaGFuZ2Vsb2csIHJldmll
d2VyKQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdlbG9nczoKKyAgICAgICAg
ICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkuc2V0X3Jldmlld2VyKHJldmlld2VyKQogCiAg
ICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIGJ1Z19p
ZCA9IGFyZ3NbMF0gaWYgbGVuKGFyZ3MpIGVsc2UgTm9uZQpAQCAtNDk5LDcgKzQ2Myw3IEBAIGNs
YXNzIFBvc3RDb21taXRzQXNQYXRjaGVzVG9CdWcoQ29tbWFuZCk6CiAgICAgICAgICAgICAjIHRo
ZSBDaGFuZ2VMb2dzIHNob3VsZCBoYXZlIHRoZSBidWcgaWQsIGJ1dCB0aGUgbG9jYWwgY29tbWl0
IG1lc3NhZ2UgbWlnaHQgbm90LgogICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSB0b29sLnNj
bSgpLmNvbW1pdF9tZXNzYWdlX2Zvcl9sb2NhbF9jb21taXQoY29tbWl0X2lkKQogCi0gICAgICAg
ICAgICBidWdfaWQgPSBvcHRpb25zLmJ1Z19pZCBvciBwYXJzZV9idWdfaWQoY29tbWl0X21lc3Nh
Z2UpCisgICAgICAgICAgICBidWdfaWQgPSBvcHRpb25zLmJ1Z19pZCBvciBwYXJzZV9idWdfaWQo
Y29tbWl0X21lc3NhZ2UubWVzc2FnZSgpKQogICAgICAgICAgICAgaWYgbm90IGJ1Z19pZDoKICAg
ICAgICAgICAgICAgICBsb2coIlNraXBwaW5nICVzOiBObyBidWcgaWQgZm91bmQgaW4gY29tbWl0
IGxvZyBvciBzcGVjaWZpZWQgd2l0aCAtLWJ1Zy1pZC4iICUgY29tbWl0X2lkKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCkBAIC01MjAsNiArNDg0LDU2IEBAIGNsYXNzIFBvc3RDb21taXRzQXNQ
YXRjaGVzVG9CdWcoQ29tbWFuZCk6CiAgICAgICAgICAgICB0b29sLmJ1Z3MuYWRkX3BhdGNoX3Rv
X2J1ZyhidWdfaWQsIGRpZmZfZmlsZSwgZGVzY3JpcHRpb24sIGNvbW1lbnRfdGV4dCwgbWFya19m
b3JfcmV2aWV3PW9wdGlvbnMucmV2aWV3KQogCiAKK2NsYXNzIFJvbGxvdXRDb21taXQoQ29tbWFu
ZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBvcHRpb25zID0gV2ViS2l0TGFu
ZGluZ1NjcmlwdHMubGFuZF9vcHRpb25zKCkKKyAgICAgICAgb3B0aW9ucyArPSBXZWJLaXRMYW5k
aW5nU2NyaXB0cy5jbGVhbmluZ19vcHRpb25zKCkKKyAgICAgICAgQ29tbWFuZC5fX2luaXRfXyhz
ZWxmLCAnUmV2ZXJ0cyB0aGUgZ2l2ZW4gcmV2aXNpb24gYW5kIGNvbW1pdHMgdGhlIHJldmVydCwg
b3B0aW9uYWxseSByZS1vcGVucyB0aGUgYnVnLicsICdSRVZJU0lPTiBbQlVHSURdJywgb3B0aW9u
cz1vcHRpb25zKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjcmVhdGVfY2hhbmdlbG9n
c19mb3JfcmV2ZXJ0KHNjbSwgcmV2aXNpb24pOgorICAgICAgICAjIEZpcnN0LCBkaXNjYXJkIHRo
ZSBDaGFuZ2VMb2cgY2hhbmdlcyBmcm9tIHRoZSByb2xsb3V0LgorICAgICAgICBjaGFuZ2Vsb2df
cGF0aHMgPSBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNjbSkKKyAgICAgICAgc2NtLnJldmVydF9maWxl
cyhjaGFuZ2Vsb2dfcGF0aHMpCisKKyAgICAgICAgIyBTZWNvbmQsIG1ha2UgbmV3IENoYW5nZUxv
ZyBlbnRyaWVzIGZvciB0aGlzIHJvbGxvdXQuCisgICAgICAgICMgVGhpcyBjb3VsZCBtb3ZlIHRv
IHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0tcmV2ZXJ0PSBvcHRpb24uCisgICAgICAg
IFdlYktpdExhbmRpbmdTY3JpcHRzLnJ1bl93ZWJraXRfc2NyaXB0KCJwcmVwYXJlLUNoYW5nZUxv
ZyIpCisgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CisgICAg
ICAgICAgICBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLnVwZGF0ZV9mb3JfcmV2ZXJ0KHJldmlz
aW9uKQorCisgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAg
ICAgIGlmIG5vdCBhcmdzOgorICAgICAgICAgICAgZXJyb3IoIlJFVklTSU9OIGlzIHJlcXVpcmVk
LCBzZWUgLS1oZWxwLiIpCisgICAgICAgIHJldmlzaW9uID0gYXJnc1swXQorICAgICAgICBidWdf
aWQgPSBhcmdzWzFdIGlmIGxlbihhcmdzKSA+IDEgZWxzZSBOb25lCisgICAgICAgIAorICAgICAg
ICBXZWJLaXRMYW5kaW5nU2NyaXB0cy5zZXR1cF9mb3JfbGFuZGluZyh0b29sLnNjbSgpLCBvcHRp
b25zKQorICAgICAgICAKKyAgICAgICAgdG9vbC5zY20oKS51cGRhdGVfd2Via2l0KCkKKyAgICAg
ICAgdG9vbC5zY20oKS5hcHBseV9yZXZlcnNlX2RpZmYocmV2aXNpb24pCisgICAgICAgICMgV2Ug
c2hvdWxkIHBhcnNlIHRoZSBhZmZlY3RlZCBidWcgbnVtYmVycyBvdXQgb2YgdGhlIENoYW5nZUxv
ZyBkaWZmcyBpbnN0ZWFkIG9mIHVzaW5nIGEgY29tbWFuZGxpbmUgYXJnLgorICAgICAgICBpZiBu
b3QgYnVnX2lkOgorICAgICAgICAgICAgb3JpZ2luYWxfZGlmZiA9IHRvb2wuc2NtKCkucGF0Y2hf
Zm9yX3JldmlzaW9uKHJldmlzaW9uKQorICAgICAgICAgICAgbG9nKCJCdWcgSUQgbm90IHBhc3Nl
ZCwgcGFyc2luZyBmcm9tIGRpZmYuIikKKyAgICAgICAgICAgIGJ1Z19pZCA9IHBhcnNlX2J1Z19p
ZChvcmlnaW5hbF9kaWZmKQorCisgICAgICAgIGlmIGJ1Z19pZDoKKyAgICAgICAgICAgIGxvZygi
V2lsbCByZS1vcGVuIGJ1ZyAlcyIgJSBidWdfaWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBsb2coIk5vIEJ1ZyBJRCBwYXNzZWQgYW5kIGZhaWxlZCB0byBwYXJzZSBmcm9tIGRpZmYuICBO
byBidWdzIHdpbGwgYmUgdXBkYXRlZC9yZW9wZW5lZCBhZnRlciB0aGUgcm9sbG91dC4iKQorCisg
ICAgICAgIHNlbGYuY3JlYXRlX2NoYW5nZWxvZ3NfZm9yX3JldmVydCh0b29sLnNjbSgpLCByZXZp
c2lvbikKKworICAgICAgICBjb21tZW50X3RleHQgPSBXZWJLaXRMYW5kaW5nU2NyaXB0cy5idWls
ZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCisKKyAgICAgICAgaWYgYnVnX2lkOgor
ICAgICAgICAgICAgdG9vbC5idWdzLnJlb3Blbl9idWcoYnVnX2lkLCBjb21tZW50X3RleHQpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2coY29tbWVudF90ZXh0KQorICAgICAgICAgICAg
bG9nKCJObyBidWdzIHdlcmUgdXBkYXRlZCBvciByZS1vcGVuZWQgdG8gcmVmbGVjdCB0aGlzIHJv
bGxvdXQuIikKKworCiBjbGFzcyBDcmVhdGVCdWcoQ29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwpAQCAtNjQ1LDYgKzY1OSw3IEBAIGNsYXNzIEJ1
Z3ppbGxhVG9vbDoKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ3Bvc3QtZGlmZicsICdvYmplY3Qn
IDogUG9zdERpZmZBc1BhdGNoVG9CdWcoKSB9LAogICAgICAgICAgICAgeyAnbmFtZScgOiAncG9z
dC1jb21taXRzJywgJ29iamVjdCcgOiBQb3N0Q29tbWl0c0FzUGF0Y2hlc1RvQnVnKCkgfSwKICAg
ICAgICAgICAgIHsgJ25hbWUnIDogJ3RyZWUtc3RhdHVzJywgJ29iamVjdCcgOiBDaGVja1RyZWVT
dGF0dXMoKSB9LAorICAgICAgICAgICAgeyAnbmFtZScgOiAncm9sbG91dCcsICdvYmplY3QnIDog
Um9sbG91dENvbW1pdCgpIH0sCiAgICAgICAgIF0KIAogICAgICAgICBzZWxmLmdsb2JhbF9vcHRp
b25fcGFyc2VyID0gSGVscFByaW50aW5nT3B0aW9uUGFyc2VyKHVzYWdlPXNlbGYudXNhZ2VfbGlu
ZSgpLCBmb3JtYXR0ZXI9Tm9uV3JhcHBpbmdFcGlsb2dJbmRlbnRlZEhlbHBGb3JtYXR0ZXIoKSwg
ZXBpbG9nPXNlbGYuY29tbWFuZHNfdXNhZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9i
dWd6aWxsYS5weQppbmRleCAwY2RiMTMwLi45MTc5NjdlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL2J1Z3ppbGxhLnB5CkBAIC00MTksMyArNDE5LDE3IEBAIGNsYXNzIEJ1Z3ppbGxhOgog
ICAgICAgICBzZWxmLmJyb3dzZXJbJ2J1Z19zdGF0dXMnXSA9IFsnUkVTT0xWRUQnXQogICAgICAg
ICBzZWxmLmJyb3dzZXJbJ3Jlc29sdXRpb24nXSA9IFsnRklYRUQnXQogICAgICAgICBzZWxmLmJy
b3dzZXIuc3VibWl0KCkKKworICAgIGRlZiByZW9wZW5fYnVnKHNlbGYsIGJ1Z19pZCwgY29tbWVu
dF90ZXh0KToKKyAgICAgICAgc2VsZi5hdXRoZW50aWNhdGUoKQorCisgICAgICAgIGxvZygiUmUt
b3BlbmluZyBidWcgJXMiICUgYnVnX2lkKQorICAgICAgICBsb2coY29tbWVudF90ZXh0KSAjIEJ1
Z3ppbGxhIHJlcXVpcmVzIGEgY29tbWVudCB3aGVuIHJlLW9wZW5pbmcgYSBidWcsIHNvIHdlIGtu
b3cgaXQgd2lsbCBuZXZlciBiZSBOb25lLgorICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKKyAgICAg
ICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKHNlbGYuYnVnX3VybF9m
b3JfYnVnX2lkKGJ1Z19pZCkpCisgICAgICAgIHNlbGYuYnJvd3Nlci5zZWxlY3RfZm9ybShuYW1l
PSJjaGFuZ2Vmb3JtIikKKyAgICAgICAgc2VsZi5icm93c2VyWydidWdfc3RhdHVzJ10gPSBbJ1JF
T1BFTkVEJ10KKyAgICAgICAgc2VsZi5icm93c2VyWydjb21tZW50J10gPSBjb21tZW50X3RleHQK
KyAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvY2hhbmdlbG9ncy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jaGFuZ2Vsb2dzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MWMw
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY2hhbmdl
bG9ncy5weQpAQCAtMCwwICsxLDkyIEBACisjIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIFdlYktp
dCdzIFB5dGhvbiBtb2R1bGUgZm9yIHBhcnNpbmcgYW5kIG1vZGlmeWluZyBDaGFuZ2VMb2cgZmls
ZXMKKworaW1wb3J0IGZpbGVpbnB1dCAjIGlucGxhY2UgZmlsZSBlZGl0aW5nIGZvciBzZXRfcmV2
aWV3ZXJfaW5fY2hhbmdlbG9nCitpbXBvcnQgcmUKKworIyBUaGlzIGRvZXNuJ3QgcmVhbGx5IGJl
bG9uZyBpbiB0aGlzIGZpbGUsIGJ1dCB3ZSBkb24ndCBoYXZlIGEgYmV0dGVyIGhvbWUgZm9yIGl0
IHlldC4KKyMgTWF5YmUgZXZlbnR1YWxseSBhIHdlYmtpdF9jb25maWcucHk/CitkZWYgdmlld19z
b3VyY2VfdXJsKHJldmlzaW9uX251bWJlcik6CisgICAgcmV0dXJuICJodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8lcyIgJSByZXZpc2lvbl9udW1iZXIKKworCitjbGFzcyBDaGFuZ2VM
b2c6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICBzZWxmLnBhdGggPSBw
YXRoCisKKyAgICAjIGUuZy4gMjAwOS0wNi0wMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5v
cmc+CisgICAgZGF0ZV9saW5lX3JlZ2V4cCA9IHJlLmNvbXBpbGUoJ14oXGR7NH0tXGR7Mn0tXGR7
Mn0pJyAjIENvbnN1bWUgdGhlIGRhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsgJ1xzKyguKylccysnICMgQ29uc3VtZSB0aGUgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKyAnPChbXjw+XSspPiQnKSAjIEFuZCBmaW5hbGx5IHRoZSBlbWFpbCBhZGRy
ZXNzLgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfcGFyc2VfbGF0ZXN0X2VudHJ5X2Zy
b21fZmlsZShjaGFuZ2Vsb2dfZmlsZSk6CisgICAgICAgIGVudHJ5X2xpbmVzID0gW10KKyAgICAg
ICAgIyBUaGUgZmlyc3QgbGluZSBzaG91bGQgYmUgYSBkYXRlIGxpbmUuCisgICAgICAgIGZpcnN0
X2xpbmUgPSBjaGFuZ2Vsb2dfZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGlmIG5vdCBDaGFuZ2VM
b2cuZGF0ZV9saW5lX3JlZ2V4cC5tYXRjaChmaXJzdF9saW5lKToKKyAgICAgICAgICAgIHJldHVy
biBOb25lCisgICAgICAgIGVudHJ5X2xpbmVzLmFwcGVuZChmaXJzdF9saW5lKQorCisgICAgICAg
IGZvciBsaW5lIGluIGNoYW5nZWxvZ19maWxlOgorICAgICAgICAgICAgIyBJZiB3ZSd2ZSBoaXQg
dGhlIG5leHQgZW50cnksIHJldHVybi4KKyAgICAgICAgICAgIGlmIENoYW5nZUxvZy5kYXRlX2xp
bmVfcmVnZXhwLm1hdGNoKGxpbmUpOgorICAgICAgICAgICAgICAgIHJldHVybiAnJy5qb2luKGVu
dHJ5X2xpbmVzWzA6LTFdKSAjIFJlbW92ZSB0aGUgZXh0cmEgbmV3bGluZSBhdCB0aGUgZW5kCisg
ICAgICAgICAgICBlbnRyeV9saW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgcmV0dXJuIE5vbmUg
IyBXZSBuZXZlciBmb3VuZCBhIGRhdGUgbGluZSEKKworICAgIGRlZiBsYXRlc3RfZW50cnkoc2Vs
Zik6CisgICAgICAgIGNoYW5nZWxvZ19maWxlID0gb3BlbihzZWxmLnBhdGgpCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZV9sYXRlc3RfZW50cnlfZnJvbV9maWxl
KGNoYW5nZWxvZ19maWxlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY2hhbmdlbG9n
X2ZpbGUuY2xvc2UoKQorCisgICAgZGVmIHVwZGF0ZV9mb3JfcmV2ZXJ0KHNlbGYsIHJldmlzaW9u
KToKKyAgICAgICAgcmV2aWV3ZWRfYnlfcmVnZXhwID0gcmUuY29tcGlsZSgnUmV2aWV3ZWQgYnkg
Tk9CT0RZIFwoT09QUyFcKVwuJykKKyAgICAgICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUgPSBGYWxz
ZQorICAgICAgICAjIGlucGxhY2U9MSBjcmVhdGVzIGEgYmFja3VwIGZpbGUgYW5kIHJlLWRpcmVj
dHMgc3Rkb3V0IHRvIHRoZSBmaWxlCisgICAgICAgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5GaWxl
SW5wdXQoc2VsZi5wYXRoLCBpbnBsYWNlPTEpOgorICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHJl
dmlld2VkX2J5X3JlZ2V4cCwgbGluZSk6CisgICAgICAgICAgICAgICAgcHJpbnQgcmUuc3ViKHJl
dmlld2VkX2J5X3JlZ2V4cCwgIk5vIHJldmlldywgcm9sbGluZyBvdXQgciVzLiIgJSByZXZpc2lv
biwgbGluZSksCisgICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgJXNcbiIgJSB2aWV3X3Nv
dXJjZV91cmwocmV2aXNpb24pCisgICAgICAgICAgICAgICAgIyBSZW1vdmUgYWxsIHRoZSBDaGFu
Z2VMb2cgYm9pbGVyIHBsYXRlIGJldHdlZW4gdGhlIFJldmlld2VkIGJ5IGxpbmUgYW5kIHRoZSBm
aXJzdCBjaGFuZ2VkIGZpbGUuCisgICAgICAgICAgICAgICAgcmVtb3ZpbmdfYm9pbGVycGxhdGUg
PSBUcnVlCisgICAgICAgICAgICBlbGlmIHJlbW92aW5nX2JvaWxlcnBsYXRlOgorICAgICAgICAg
ICAgICAgIGlmIGxpbmUuZmluZCgnKicpID49IDAgOiAjIGVhY2ggY2hhbmdlZCBmaWxlIGlzIHBy
ZWNlZGVkIGJ5IGEgKgorICAgICAgICAgICAgICAgICAgICByZW1vdmluZ19ib2lsZXJwbGF0ZSA9
IEZhbHNlCisKKyAgICAgICAgICAgIGlmIG5vdCByZW1vdmluZ19ib2lsZXJwbGF0ZToKKyAgICAg
ICAgICAgICAgICBwcmludCBsaW5lLAorCisgICAgZGVmIHNldF9yZXZpZXdlcihzZWxmLCByZXZp
ZXdlcik6CisgICAgICAgICMgaW5wbGFjZT0xIGNyZWF0ZXMgYSBiYWNrdXAgZmlsZSBhbmQgcmUt
ZGlyZWN0cyBzdGRvdXQgdG8gdGhlIGZpbGUKKyAgICAgICAgZm9yIGxpbmUgaW4gZmlsZWlucHV0
LkZpbGVJbnB1dChzZWxmLnBhdGgsIGlucGxhY2U9MSk6CisgICAgICAgICAgICBwcmludCBsaW5l
LnJlcGxhY2UoIk5PQk9EWSAoT09QUyEpIiwgcmV2aWV3ZXIuZW5jb2RlKCJ1dGYtOCIpKSwgIyBU
cmFpbGluZyBjb21tYSBzdXBwcmVzc2VzIHByaW50aW5nIG5ld2xpbmUKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jaGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NoYW5nZWxvZ3NfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQxNGNiNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jaGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEs
MTQ1IEBACisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGNoYW5nZWxvZ3Mg
aW1wb3J0ICoKKworaW1wb3J0IG9zCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gU3RyaW5nSU8gaW1w
b3J0IFN0cmluZ0lPCisKK2NsYXNzIENoYW5nZUxvZ3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KworICAgIF9leGFtcGxlX2VudHJ5ID0gJycnMjAwOS0wOC0xNyAgUGV0ZXIgS2FzdGluZyAgPHBr
YXN0aW5nQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RldmUgRmFsa2VuYnVy
Zy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjcz
MjMKKyAgICAgICAgT25seSBhZGQgQ3lnd2luIHRvIHRoZSBwYXRoIHdoZW4gaXQgaXNuJ3QgYWxy
ZWFkeSB0aGVyZS4gIFRoaXMgYXZvaWRzCisgICAgICAgIGNhdXNpbmcgcHJvYmxlbXMgZm9yIHBl
b3BsZSB3aG8gcHVycG9zZWZ1bGx5IGhhdmUgbm9uLUN5Z3dpbiB2ZXJzaW9ucyBvZgorICAgICAg
ICBleGVjdXRhYmxlcyBsaWtlIHN2biBpbiBmcm9udCBvZiB0aGUgQ3lnd2luIG9uZXMgaW4gdGhl
aXIgcGF0aHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
dmNwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9JbWFnZURpZmYudmNwcm9qOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0TmV0c2NhcGVQbHVnaW4vVGVzdE5ldHNj
YXBlUGx1Z2luLnZjcHJvajoKKycnJworCisgICAgIyBNb3JlIGV4YW1wbGUgdGV4dCB0aGFuIHdl
IG5lZWQuICBFdmVudHVhbGx5IHdlIG5lZWQgdG8gc3VwcG9ydCBwYXJzaW5nIHRoaXMgYWxsIGFu
ZCB3cml0ZSB0ZXN0cyBmb3IgdGhlIHBhcnNpbmcuCisgICAgX2V4YW1wbGVfY2hhbmdlbG9nID0g
JycnMjAwOS0wOC0xNyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzI4MzkzPiBjaGVjay13ZWJraXQtc3R5bGU6IGFkZCBj
aGVjayBmb3IgdXNlIG9mIHN0ZDo6bWF4KCkvc3RkOjptaW4oKSBpbnN0ZWFkIG9mIE1BWCgpL01J
TigpCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCisKKyAgICAgICAgKiBTY3Jp
cHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5OgorICAgICAgICAoX0VSUk9SX0NBVEVHT1JJRVMpOiBB
ZGRlZCAncnVudGltZS9tYXhfbWluX21hY3JvcycuCisgICAgICAgIChjaGVja19tYXhfbWluX21h
Y3Jvcyk6IEFkZGVkLiAgUmV0dXJucyBsZXZlbCA0IGVycm9yIHdoZW4gTUFYKCkKKyAgICAgICAg
YW5kIE1JTigpIG1hY3JvcyBhcmUgdXNlZCBpbiBoZWFkZXIgZmlsZXMgYW5kIEMrKyBzb3VyY2Ug
ZmlsZXMuCisgICAgICAgIChjaGVja19zdHlsZSk6IEFkZGVkIGNhbGwgdG8gY2hlY2tfbWF4X21p
bl9tYWNyb3MoKS4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlX3VuaXR0ZXN0
LnB5OiBBZGRlZCB1bml0IHRlc3RzLgorICAgICAgICAodGVzdF9tYXhfbWFjcm8pOiBBZGRlZC4K
KyAgICAgICAgKHRlc3RfbWluX21hY3JvKTogQWRkZWQuCisKKzIwMDktMDgtMTYgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBCYWNrZWQgb3V0IHI0NzM0MyB3
aGljaCB3YXMgbWlzdGFrZW5seSBjb21taXR0ZWQKKworICAgICAgICAqIFNjcmlwdHMvYnVnemls
bGEtdG9vbDoKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc2NtLnB5OgorCisyMDA5LTA2LTE4
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSdWJiZXIgc3RhbXBl
ZCBieSBNYXJrIFJvd2UuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWVXaW5kb3cubW06CisgICAgICAgICgtW0R1bXBSZW5kZXJUcmVlV2luZG93IGNsb3NlXSk6
IFJlc29sdmVkIGNyYXNoZXMgc2VlbiBkdXJpbmcgcmVncmVzc2lvbgorICAgICAgICB0ZXN0cy4g
VGhlIGNsb3NlIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9uIGEgd2luZG93IHRoYXQncyBhbHJlYWR5
IGNsb3NlZAorICAgICAgICBzbyB3ZSBjYW4ndCBhc3NlcnQgaGVyZS4KKworPT0gUm9sbGVkIG92
ZXIgdG8gQ2hhbmdlTG9nLTIwMDktMDYtMTYgPT0KKycnJworCisgICAgZGVmIHRlc3RfbGF0ZXN0
X2VudHJ5X3BhcnNlKHNlbGYpOgorICAgICAgICBjaGFuZ2Vsb2dfY29udGVudHMgPSAiJXNcbiVz
IiAlIChzZWxmLl9leGFtcGxlX2VudHJ5LCBzZWxmLl9leGFtcGxlX2NoYW5nZWxvZykKKyAgICAg
ICAgY2hhbmdlbG9nX2ZpbGUgPSBTdHJpbmdJTyhjaGFuZ2Vsb2dfY29udGVudHMpCisgICAgICAg
IGxhdGVzdF9lbnRyeSA9IENoYW5nZUxvZy5fcGFyc2VfbGF0ZXN0X2VudHJ5X2Zyb21fZmlsZShj
aGFuZ2Vsb2dfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fZXhhbXBsZV9l
bnRyeSwgbGF0ZXN0X2VudHJ5KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfd3JpdGVf
dG1wX2ZpbGVfd2l0aF9jb250ZW50cyhjb250ZW50cyk6CisgICAgICAgIChmaWxlX2Rlc2NyaXB0
b3IsIGZpbGVfcGF0aCkgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkgIyBOYW1lZFRlbXBvcmFyeUZpbGUg
YWx3YXlzIGRlbGV0ZXMgdGhlIGZpbGUgb24gY2xvc2UgaW4gcHl0aG9uIDwgMi42CisgICAgICAg
IGZpbGUgPSBvcy5mZG9wZW4oZmlsZV9kZXNjcmlwdG9yLCAndycpCisgICAgICAgIGZpbGUud3Jp
dGUoY29udGVudHMpCisgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICByZXR1cm4gZmlsZV9w
YXRoCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9yZWFkX2ZpbGVfY29udGVudHMoZmls
ZV9wYXRoKToKKyAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9wYXRoKQorICAgICAgICBjb250ZW50
cyA9IGZpbGUucmVhZCgpCisgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICByZXR1cm4gY29u
dGVudHMKKworICAgIF9uZXdfZW50cnlfYm9pbGVycGxhdGUgPSAnJycyMDA5LTA4LTE5ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwg
KE9PUFMhKQorCisgICAgICAgICogU2NyaXB0cy9idWd6aWxsYS10b29sOgorJycnCisKKyAgICBk
ZWYgdGVzdF9zZXRfcmV2aWV3ZXIoc2VsZik6CisgICAgICAgIGNoYW5nZWxvZ19jb250ZW50cyA9
ICIlc1xuJXMiICUgKHNlbGYuX25ld19lbnRyeV9ib2lsZXJwbGF0ZSwgc2VsZi5fZXhhbXBsZV9j
aGFuZ2Vsb2cpCisgICAgICAgIGNoYW5nZWxvZ19wYXRoID0gc2VsZi5fd3JpdGVfdG1wX2ZpbGVf
d2l0aF9jb250ZW50cyhjaGFuZ2Vsb2dfY29udGVudHMpCisgICAgICAgIHJldmlld2VyX25hbWUg
PSAnVGVzdCBSZXZpZXdlcicKKyAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS5zZXRf
cmV2aWV3ZXIocmV2aWV3ZXJfbmFtZSkKKyAgICAgICAgYWN0dWFsX2NvbnRlbnRzID0gc2VsZi5f
cmVhZF9maWxlX2NvbnRlbnRzKGNoYW5nZWxvZ19wYXRoKQorICAgICAgICBleHBlY3RlZF9jb250
ZW50cyA9IGNoYW5nZWxvZ19jb250ZW50cy5yZXBsYWNlKCdOT0JPRFkgKE9PUFMhKScsIHJldmll
d2VyX25hbWUpCisgICAgICAgIG9zLnJlbW92ZShjaGFuZ2Vsb2dfcGF0aCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoYWN0dWFsX2NvbnRlbnRzLCBleHBlY3RlZF9jb250ZW50cykKKworICAg
IF9leHBlY3RlZF9yZXZlcnRfZW50cnkgPSAnJycyMDA5LTA4LTE5ICBFcmljIFNlaWRlbCAgPGVy
aWNAd2Via2l0Lm9yZz4KKworICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IHIxMjM0NS4K
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIzNDUKKworICAgICAg
ICAqIFNjcmlwdHMvYnVnemlsbGEtdG9vbDoKKycnJworCisgICAgZGVmIHRlc3RfdXBkYXRlX2Zv
cl9yZXZlcnQoc2VsZik6CisgICAgICAgIGNoYW5nZWxvZ19jb250ZW50cyA9ICIlc1xuJXMiICUg
KHNlbGYuX25ld19lbnRyeV9ib2lsZXJwbGF0ZSwgc2VsZi5fZXhhbXBsZV9jaGFuZ2Vsb2cpCisg
ICAgICAgIGNoYW5nZWxvZ19wYXRoID0gc2VsZi5fd3JpdGVfdG1wX2ZpbGVfd2l0aF9jb250ZW50
cyhjaGFuZ2Vsb2dfY29udGVudHMpCisgICAgICAgIGNoYW5nZWxvZyA9IENoYW5nZUxvZyhjaGFu
Z2Vsb2dfcGF0aCkKKyAgICAgICAgY2hhbmdlbG9nLnVwZGF0ZV9mb3JfcmV2ZXJ0KDEyMzQ1KQor
ICAgICAgICBhY3R1YWxfZW50cnkgPSBjaGFuZ2Vsb2cubGF0ZXN0X2VudHJ5KCkKKyAgICAgICAg
b3MucmVtb3ZlKGNoYW5nZWxvZ19wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1
YWxfZW50cnksIHNlbGYuX2V4cGVjdGVkX3JldmVydF9lbnRyeSkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2Nt
LnB5CmluZGV4IGQ2ZDI0NDYuLmYyMzUzNjcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9zY20ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5w
eQpAQCAtMTc3LDYgKzE3NywxNSBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGNyZWF0ZV9wYXRjaChz
ZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVz
dCBpbXBsZW1lbnQiCiAKKyAgICBkZWYgcGF0Y2hfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9u
KToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBp
bXBsZW1lbnQiCisKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToK
KyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBs
ZW1lbnQiCisgICAgCisgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKKyAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1l
bnQiCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQi
CiAgICAgCkBAIC0yNzYsOSArMjg1LDE3IEBAIGNsYXNzIFNWTihTQ00pOgogICAgIGRlZiBjcmVh
dGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKHNlbGYuc2Ny
aXB0X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSkKIAorICAgIGRlZiBhcHBseV9yZXZlcnNlX2Rp
ZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICAjICctYyAtcmV2aXNpb24nIGFwcGxpZXMgdGhl
IGludmVyc2UgZGlmZiBvZiAncmV2aXNpb24nCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoInN2
biBtZXJnZSAtYyAtJXMiICUgcmV2aXNpb24pCisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYs
IGZpbGVfcGF0aHMpOgorICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCIgIi5qb2luKFsnc3ZuJywg
J3JldmVydCddICsgZmlsZV9wYXRocykpCisKICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlKToKICAgICAgICAgaWYgc2VsZi5kcnlydW46Ci0gICAgICAgICAgICByZXR1
cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuIgorICAgICAgICAgICAgIyBSZXR1cm4gYSBz
dHJpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJz
ZSB0aGlzIG91dHB1dCB3aWxsIHN1Y2NlZWQuCisgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4s
IG5vIGNvbW1pdC5cbkNvbW1pdHRlZCByZXZpc2lvbiAwLiIKICAgICAgICAgc2VsZi51cGRhdGVf
d2Via2l0KCkgIyBVcGRhdGUgYmVmb3JlIGNvbW1pdHRpbmcgdG8gYXZvaWQgb3V0LW9mLWRhdGUg
dHJlZSBlcnJvcnMuCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2Nv
bW1pdCcsICctbScsIG1lc3NhZ2VdKQogCkBAIC0zNDMsNiArMzYwLDI5IEBAIGNsYXNzIEdpdChT
Q00pOgogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1
bl9jb21tYW5kKFsnZ2l0JywgJ2RpZmYnLCAnSEVBRCddKQogCisgICAgQGNsYXNzbWV0aG9kCisg
ICAgZGVmIGdpdF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24oY2xzLCByZXZpc2lvbik6CisgICAg
ICAgICMgZ2l0IHN2biBmaW5kLXJldiBhbHdheXMgZXhpdHMgMCwgZXZlbiB3aGVuIHRoZSByZXZp
c2lvbiBpcyBub3QgZm91bmQuCisgICAgICAgIHJldHVybiBjbHMucnVuX2NvbW1hbmQoWydnaXQn
LCAnc3ZuJywgJ2ZpbmQtcmV2JywgJ3IlcycgJSByZXZpc2lvbl0pCisKKyAgICBkZWYgcGF0Y2hf
Zm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgZ2l0X2NvbW1pdCA9IHNlbGYu
Z2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgcmV0dXJuIHNl
bGYuY3JlYXRlX3BhdGNoX2Zyb21fbG9jYWxfY29tbWl0KGdpdF9jb21taXQpCisKKyAgICBkZWYg
YXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgIyBBc3N1bWUgdGhl
IHJldmlzaW9uIGlzIGFuIHN2biByZXZpc2lvbi4KKyAgICAgICAgZ2l0X2NvbW1pdCA9IHNlbGYu
Z2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgbG9nKCJGb3Vu
ZCBtYXRjaGluZyBnaXQtY29tbWl0ICVzIGZvciBzdm4gcmV2aXNpb24gJXMiICUgKGdpdF9jb21t
aXQsIHJldmlzaW9uKSkKKyAgICAgICAgaWYgbm90IGdpdF9jb21taXQ6CisgICAgICAgICAgICBy
YWlzZSBTY3JpcHRFcnJvcignRmFpbGVkIHRvIGZpbmQgZ2l0IGNvbW1pdCBmb3IgcmV2aXNpb24g
JXMsIGdpdCBzdm4gbG9nIG91dHB1dDogIiVzIicgJSAocmV2aXNpb24sIGdpdF9jb21taXQpKQor
ICAgICAgICAKKyAgICAgICAgIyBJIHRoaW5rIHRoaXMgd2lsbCBhbHdheXMgZmFpbCBkdWUgdG8g
Q2hhbmdlTG9ncy4KKyAgICAgICAgcHJpbnQgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdyZXZl
cnQnLCAnLS1uby1jb21taXQnLCBnaXRfY29tbWl0XSwgcmFpc2Vfb25fZmFpbHVyZT1GYWxzZSkK
KyAgICAgICAgc2VsZi5ydW5fY29tbWFuZCgicmVzb2x2ZS1DaGFuZ2VMb2dzIikKKworICAgIGRl
ZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CisgICAgICAgIHNlbGYucnVuX2NvbW1h
bmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnSEVBRCddICsgZmlsZV9wYXRocykKKwogICAgIGRlZiBj
b21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBzZWxmLmNvbW1pdF9s
b2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQogICAgICAgICBzZWxmLnVwZGF0ZV93ZWJraXQo
KSAjIFVwZGF0ZSBiZWZvcmUgY29tbWl0dGluZyB0byBhdm9pZCBvdXQtb2YtZGF0ZSB0cmVlIGVy
cm9ycy4KQEAgLTM2MSw3ICs0MDEsOCBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgCiAgICAg
ZGVmIHB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIGlmIHNlbGYu
ZHJ5cnVuOgotICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0LiIK
KyAgICAgICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQg
c28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgorICAg
ICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0LlxuQ29tbWl0dGVkIHIw
IgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnZGNvbW1p
dCddKQogCiAgICAgIyBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXJndW1l
bnQgZm9ybWF0czoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11
bml0dGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzCmluZGV4
IDJhN2Y2NmQuLmJmNzJkMzEgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdl
YmtpdC11bml0dGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0
ZXN0cwpAQCAtMzEsNiArMzEsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBtb2R1bGVzLmJ1
Z3ppbGxhX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMuYnVpbGRib3RfdW5pdHRlc3Qg
aW1wb3J0ICoKK2Zyb20gbW9kdWxlcy5jaGFuZ2Vsb2dzX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9t
IG1vZHVsZXMuY29tbWl0dGVyc191bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmNwcF9z
dHlsZV91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmRpZmZfcGFyc2VyX3VuaXR0ZXN0
IGltcG9ydCAq
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39377</attachid>
            <date>2009-09-10 14:12:02 -0700</date>
            <delta_ts>2009-09-10 14:16:25 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-26715-20090910141201.patch</filename>
            <type>text/plain</type>
            <size>9353</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzODMyMjRlLi5jNGU3YWYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDkt
MTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIFRoaXMgd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1lLCBidXQgSSBk
b24ndCB0cnVzdCBpdCBmb3IgZ2VuZXJhbCB1c2FnZS4KKyAgICAgICAgYnVnemlsbGEtdG9vbCBy
b2xsb3V0IHdpbGwgZG8gdGhlIHJvbGxvdXQgbG9jYWxseSBhbmQgbGVhdmUgdGhlIGRpZmYgZm9y
IHlvdSB0byB2ZXJpZnkgYW5kIGNvbW1pdC4KKyAgICAgICAgVGhlIC0tY29tcGxldGUtcm9sbG91
dCBvcHRpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGxhbmQgYW5kIHVwZGF0ZSB0aGUgYnVnLgorICAg
ICAgICBFdmVudHVhbGx5IC0tY29tcGxldGUtcm9sbG91dCB3aWxsIGJlIGRlZmF1bHQsIGJ1dCB0
aGF0IHdpbGwgcmVxdWlyZSBtb3JlIHRlc3RpbmcuCisKKyAgICAgICAgVGhpcyBmaXJzdCBwYXNz
IGlzIGdvb2QgZW5vdWdoIGZvciBvdGhlcnMgdG8gdHJ5IGFuZCBmaWxlIGJ1Z3MgYWJvdXQuCisK
KyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxhLXRvb2w6CisgICAgICAgICogU2NyaXB0cy9tb2R1
bGVzL2J1Z3ppbGxhLnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9zY20ucHk6CisKIDIw
MDktMDktMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5j
b20+CiAKICAgICAgICAgW0dUS10gRXZlbnRTZW5kZXIgZG9lcyBub3QgcHJvcGVybHkgY29udmVy
dCBzb21lIGtleURvd24gc3RyaW5ncwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9i
dWd6aWxsYS10b29sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCmluZGV4IDYx
MTkyNDMuLjAyYTM4OTkgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEt
dG9vbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKQEAgLTU0Miw2ICs1
NDIsNjMgQEAgY2xhc3MgUG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZyhDb21tYW5kKToKICAgICAg
ICAgICAgIHRvb2wuYnVncy5hZGRfcGF0Y2hfdG9fYnVnKGJ1Z19pZCwgZGlmZl9maWxlLCBkZXNj
cmlwdGlvbiwgY29tbWVudF90ZXh0LCBtYXJrX2Zvcl9yZXZpZXc9b3B0aW9ucy5yZXZpZXcpCiAK
IAorY2xhc3MgUm9sbG91dENvbW1pdChDb21tYW5kKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6
CisgICAgICAgIG9wdGlvbnMgPSBXZWJLaXRMYW5kaW5nU2NyaXB0cy5sYW5kX29wdGlvbnMoKQor
ICAgICAgICBvcHRpb25zICs9IFdlYktpdExhbmRpbmdTY3JpcHRzLmNsZWFuaW5nX29wdGlvbnMo
KQorICAgICAgICBvcHRpb25zLmFwcGVuZChtYWtlX29wdGlvbigiLS1jb21wbGV0ZS1yb2xsb3V0
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iY29tcGxldGVfcm9sbG91dCIsIGhlbHA9IkV4
cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBjb21wbGV0ZSB1bnN1cGVydmlzZWQgcm9sbG91dHMsIGlu
Y2x1ZGluZyByZS1vcGVuaW5nIHRoZSBidWcuICBOb3QgcmVjb21tZW5kZWQuIikpCisgICAgICAg
IENvbW1hbmQuX19pbml0X18oc2VsZiwgJ1JldmVydHMgdGhlIGdpdmVuIHJldmlzaW9uIGFuZCBj
b21taXRzIHRoZSByZXZlcnQgYW5kIHJlLW9wZW5zIHRoZSBvcmlnaW5hbCBidWcuJywgJ1JFVklT
SU9OIFtCVUdJRF0nLCBvcHRpb25zPW9wdGlvbnMpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAg
ZGVmIF9jcmVhdGVfY2hhbmdlbG9nc19mb3JfcmV2ZXJ0KHNjbSwgcmV2aXNpb24pOgorICAgICAg
ICAjIEZpcnN0LCBkaXNjYXJkIHRoZSBDaGFuZ2VMb2cgY2hhbmdlcyBmcm9tIHRoZSByb2xsb3V0
LgorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNjbSkKKyAg
ICAgICAgc2NtLnJldmVydF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMpCisKKyAgICAgICAgIyBTZWNv
bmQsIG1ha2UgbmV3IENoYW5nZUxvZyBlbnRyaWVzIGZvciB0aGlzIHJvbGxvdXQuCisgICAgICAg
ICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0tcmV2
ZXJ0PSBvcHRpb24uCisgICAgICAgIFdlYktpdExhbmRpbmdTY3JpcHRzLnJ1bl93ZWJraXRfc2Ny
aXB0KCJwcmVwYXJlLUNoYW5nZUxvZyIpCisgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBj
aGFuZ2Vsb2dfcGF0aHM6CisgICAgICAgICAgICBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLnVw
ZGF0ZV9mb3JfcmV2ZXJ0KHJldmlzaW9uKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBf
cGFyc2VfYnVnX2lkX2Zyb21fcmV2aXNpb25fZGlmZih0b29sLCByZXZpc2lvbik6CisgICAgICAg
IG9yaWdpbmFsX2RpZmYgPSB0b29sLnNjbSgpLmRpZmZfZm9yX3JldmlzaW9uKHJldmlzaW9uKQor
ICAgICAgICBidWdfaWQgPSBwYXJzZV9idWdfaWQob3JpZ2luYWxfZGlmZikKKworICAgICAgICBp
ZiBidWdfaWQ6CisgICAgICAgICAgICBsb2coIldpbGwgcmUtb3BlbiBidWcgJXMiICUgYnVnX2lk
KQorICAgICAgICAgICAgcmV0dXJuIGJ1Z19pZAorICAgICAgICBsb2coIkZhaWxlZCB0byBwYXJz
ZSBidWcgbnVtYmVyIGZyb20gZGlmZi4gIE5vIGJ1Z3Mgd2lsbCBiZSB1cGRhdGVkL3Jlb3BlbmVk
IGFmdGVyIHRoZSByb2xsb3V0LiIpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9yZW9w
ZW5fYnVnX2FmdGVyX3JvbGxvdXQodG9vbCwgYnVnX2lkLCBjb21tZW50X3RleHQpOgorICAgICAg
ICBpZiBidWdfaWQ6CisgICAgICAgICAgICB0b29sLmJ1Z3MucmVvcGVuX2J1ZyhidWdfaWQsIGNv
bW1lbnRfdGV4dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZyhjb21tZW50X3RleHQp
CisgICAgICAgICAgICBsb2coIk5vIGJ1Z3Mgd2VyZSB1cGRhdGVkIG9yIHJlLW9wZW5lZCB0byBy
ZWZsZWN0IHRoaXMgcm9sbG91dC4iKQorCisgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywg
YXJncywgdG9vbCk6CisgICAgICAgIGlmIG5vdCBhcmdzOgorICAgICAgICAgICAgZXJyb3IoIlJF
VklTSU9OIGlzIHJlcXVpcmVkLCBzZWUgLS1oZWxwLiIpCisgICAgICAgIHJldmlzaW9uID0gYXJn
c1swXQorICAgICAgICBidWdfaWQgPSBzZWxmLl9wYXJzZV9idWdfaWRfZnJvbV9yZXZpc2lvbl9k
aWZmKHRvb2wsIHJldmlzaW9uKQorCisgICAgICAgIFdlYktpdExhbmRpbmdTY3JpcHRzLnNldHVw
X2Zvcl9sYW5kaW5nKHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgIHRvb2wuc2NtKCkudXBk
YXRlX3dlYmtpdCgpCisgICAgICAgIHRvb2wuc2NtKCkuYXBwbHlfcmV2ZXJzZV9kaWZmKHJldmlz
aW9uKQorICAgICAgICBzZWxmLl9jcmVhdGVfY2hhbmdlbG9nc19mb3JfcmV2ZXJ0KHRvb2wuc2Nt
KCksIHJldmlzaW9uKQorCisgICAgICAgICMgRklYTUU6IEZ1bGx5IGF1dG9tYXRlZCByb2xsb3V0
IGlzIG5vdCAxMDAlIGlkaW90LXByb29mIHlldCwgc28gZm9yIG5vdyBqdXN0IGxvZyB3aXRoIGlu
c3RydWN0aW9ucyBvbiBob3cgdG8gY29tcGxldGUgdGhlIHJvbGxvdXQuCisgICAgICAgICMgT25j
ZSB3ZSB0cnVzdCByb2xsb3V0IHdlIHdpbGwgcmVtb3ZlIHRoaXMgb3B0aW9uLgorICAgICAgICBp
ZiBub3Qgb3B0aW9ucy5jb21wbGV0ZV9yb2xsb3V0OgorICAgICAgICAgICAgbG9nKCJSb2xsb3V0
IHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuUGxlYXNlIHZlcmlmeSB0aGUgcm9sbG91dCBkaWZm
IGFuZCB1c2UgJ2J1Z3ppbGxhLXRvb2wgbGFuZC1kaWZmICVzJyB0byBjb21taXQgdGhlIHJvbGxv
dXQuIiAlIGJ1Z19pZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9
IFdlYktpdExhbmRpbmdTY3JpcHRzLmJ1aWxkX2FuZF9jb21taXQodG9vbC5zY20oKSwgb3B0aW9u
cykKKyAgICAgICAgICAgIHNlbGYuX3Jlb3Blbl9idWdfYWZ0ZXJfcm9sbG91dCh0b29sLCBidWdf
aWQsIGNvbW1lbnRfdGV4dCkKKworCiBjbGFzcyBDcmVhdGVCdWcoQ29tbWFuZCk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwpAQCAtNzY3LDYgKzgyNCw3IEBA
IGNsYXNzIEJ1Z3ppbGxhVG9vbDoKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ3Bvc3QtY29tbWl0
cycsICdvYmplY3QnIDogUG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZygpIH0sCiAgICAgICAgICAg
ICB7ICduYW1lJyA6ICd0cmVlLXN0YXR1cycsICdvYmplY3QnIDogQ2hlY2tUcmVlU3RhdHVzKCkg
fSwKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ2NvbW1pdC1xdWV1ZScsICdvYmplY3QnIDogTGFu
ZFBhdGNoZXNGcm9tQ29tbWl0UXVldWUoKSB9LAorICAgICAgICAgICAgeyAnbmFtZScgOiAncm9s
bG91dCcsICdvYmplY3QnIDogUm9sbG91dENvbW1pdCgpIH0sCiAgICAgICAgIF0KIAogICAgICAg
ICBzZWxmLmdsb2JhbF9vcHRpb25fcGFyc2VyID0gSGVscFByaW50aW5nT3B0aW9uUGFyc2VyKHVz
YWdlPXNlbGYudXNhZ2VfbGluZSgpLCBmb3JtYXR0ZXI9Tm9uV3JhcHBpbmdFcGlsb2dJbmRlbnRl
ZEhlbHBGb3JtYXR0ZXIoKSwgZXBpbG9nPXNlbGYuY29tbWFuZHNfdXNhZ2UoKSkKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQppbmRleCA4MWUzNTQ3Li42MmJlNzk5IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CkBAIC00NTQsMyArNDU0LDE3IEBA
IGNsYXNzIEJ1Z3ppbGxhOgogICAgICAgICBzZWxmLmJyb3dzZXJbJ2J1Z19zdGF0dXMnXSA9IFsn
UkVTT0xWRUQnXQogICAgICAgICBzZWxmLmJyb3dzZXJbJ3Jlc29sdXRpb24nXSA9IFsnRklYRUQn
XQogICAgICAgICBzZWxmLmJyb3dzZXIuc3VibWl0KCkKKworICAgIGRlZiByZW9wZW5fYnVnKHNl
bGYsIGJ1Z19pZCwgY29tbWVudF90ZXh0KToKKyAgICAgICAgc2VsZi5hdXRoZW50aWNhdGUoKQor
CisgICAgICAgIGxvZygiUmUtb3BlbmluZyBidWcgJXMiICUgYnVnX2lkKQorICAgICAgICBsb2co
Y29tbWVudF90ZXh0KSAjIEJ1Z3ppbGxhIHJlcXVpcmVzIGEgY29tbWVudCB3aGVuIHJlLW9wZW5p
bmcgYSBidWcsIHNvIHdlIGtub3cgaXQgd2lsbCBuZXZlciBiZSBOb25lLgorICAgICAgICBpZiBz
ZWxmLmRyeXJ1bjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuYnJvd3Nlci5v
cGVuKHNlbGYuYnVnX3VybF9mb3JfYnVnX2lkKGJ1Z19pZCkpCisgICAgICAgIHNlbGYuYnJvd3Nl
ci5zZWxlY3RfZm9ybShuYW1lPSJjaGFuZ2Vmb3JtIikKKyAgICAgICAgc2VsZi5icm93c2VyWydi
dWdfc3RhdHVzJ10gPSBbJ1JFT1BFTkVEJ10KKyAgICAgICAgc2VsZi5icm93c2VyWydjb21tZW50
J10gPSBjb21tZW50X3RleHQKKyAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9tb2R1bGVzL3NjbS5weQppbmRleCA0NjA2OGU3Li43ODY3MGFmIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9zY20ucHkKQEAgLTE4Niw2ICsxODYsMTUgQEAgY2xhc3MgU0NNOgogICAgIGRl
ZiBjcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Is
ICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCisgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9u
KHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1
YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNl
bGYsIHJldmlzaW9uKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNs
YXNzZXMgbXVzdCBpbXBsZW1lbnQiCisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVf
cGF0aHMpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBt
dXN0IGltcGxlbWVudCIKKwogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0
IGltcGxlbWVudCIKIApAQCAtMjkxLDkgKzMwMCwyMCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICBk
ZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChz
ZWxmLnNjcmlwdF9wYXRoKCJzdm4tY3JlYXRlLXBhdGNoIiksIGN3ZD1zZWxmLmNoZWNrb3V0X3Jv
b3QpCiAKKyAgICBkZWYgZGlmZl9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAg
ICBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2RpZmYnLCAnLWMnLCByZXZpc2lvbl0pCisKKyAg
ICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgIyAnLWMg
LXJldmlzaW9uJyBhcHBsaWVzIHRoZSBpbnZlcnNlIGRpZmYgb2YgJ3JldmlzaW9uJworICAgICAg
ICBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ21lcmdlJywgJy1jJywgJy0lcycgJSByZXZpc2lv
bl0pCisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgorICAgICAgICBz
ZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ3JldmVydCddICsgZmlsZV9wYXRocykKKwogICAgIGRl
ZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBpZiBzZWxmLmRy
eXJ1bjoKLSAgICAgICAgICAgIHJldHVybiAiRHJ5IHJ1biwgbm8gcmVtb3RlIGNvbW1pdC4iCisg
ICAgICAgICAgICAjIFJldHVybiBhIHN0cmluZyB3aGljaCBsb29rcyBsaWtlIGEgY29tbWl0IHNv
IHRoYXQgdGhpbmdzIHdoaWNoIHBhcnNlIHRoaXMgb3V0cHV0IHdpbGwgc3VjY2VlZC4KKyAgICAg
ICAgICAgIHJldHVybiAiRHJ5IHJ1biwgbm8gY29tbWl0LlxuQ29tbWl0dGVkIHJldmlzaW9uIDAu
IgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ3N2bicsICdjb21taXQnLCAnLW0n
LCBtZXNzYWdlXSkKIAogICAgIGRlZiBzdm5fY29tbWl0X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24p
OgpAQCAtMzgwLDYgKzQwMCwyOSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgY3JlYXRlX3Bh
dGNoKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZm
JywgJ0hFQUQnXSkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnaXRfY29tbWl0X2Zyb21f
c3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgorICAgICAgICAjIGdpdCBzdm4gZmluZC1yZXYg
YWx3YXlzIGV4aXRzIDAsIGV2ZW4gd2hlbiB0aGUgcmV2aXNpb24gaXMgbm90IGZvdW5kLgorICAg
ICAgICByZXR1cm4gY2xzLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdmaW5kLXJldicsICdy
JXMnICUgcmV2aXNpb25dKQorCisgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlz
aW9uKToKKyAgICAgICAgZ2l0X2NvbW1pdCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZp
c2lvbihyZXZpc2lvbikKKyAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX3BhdGNoX2Zyb21fbG9j
YWxfY29tbWl0KGdpdF9jb21taXQpCisKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYs
IHJldmlzaW9uKToKKyAgICAgICAgIyBBc3N1bWUgdGhlIHJldmlzaW9uIGlzIGFuIHN2biByZXZp
c2lvbi4KKyAgICAgICAgZ2l0X2NvbW1pdCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZp
c2lvbihyZXZpc2lvbikKKyAgICAgICAgbG9nKCJGb3VuZCBtYXRjaGluZyBnaXQtY29tbWl0ICVz
IGZvciBzdm4gcmV2aXNpb24gJXMiICUgKGdpdF9jb21taXQsIHJldmlzaW9uKSkKKyAgICAgICAg
aWYgbm90IGdpdF9jb21taXQ6CisgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcignRmFpbGVk
IHRvIGZpbmQgZ2l0IGNvbW1pdCBmb3IgcmV2aXNpb24gJXMsIGdpdCBzdm4gbG9nIG91dHB1dDog
IiVzIicgJSAocmV2aXNpb24sIGdpdF9jb21taXQpKQorICAgICAgICAKKyAgICAgICAgIyBJIHRo
aW5rIHRoaXMgd2lsbCBhbHdheXMgZmFpbCBkdWUgdG8gQ2hhbmdlTG9ncy4KKyAgICAgICAgcHJp
bnQgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdyZXZlcnQnLCAnLS1uby1jb21taXQnLCBnaXRf
Y29tbWl0XSwgcmFpc2Vfb25fZmFpbHVyZT1GYWxzZSkKKyAgICAgICAgc2VsZi5ydW5fY29tbWFu
ZCgicmVzb2x2ZS1DaGFuZ2VMb2dzIikKKworICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmls
ZV9wYXRocyk6CisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAn
SEVBRCddICsgZmlsZV9wYXRocykKKwogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UpOgogICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNz
YWdlKQogICAgICAgICByZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKCkK
QEAgLTQwNCw3ICs0NDcsOCBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgCiAgICAgZGVmIHB1
c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZHJ5cnVu
OgotICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0LiIKKyAgICAg
ICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhh
dCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgorICAgICAgICAg
ICAgcmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0LlxuQ29tbWl0dGVkIHIwIgogICAg
ICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnZGNvbW1pdCddKQog
CiAgICAgIyBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXJndW1lbnQgZm9y
bWF0czo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39379</attachid>
            <date>2009-09-10 14:16:29 -0700</date>
            <delta_ts>2009-09-10 14:18:04 -0700</delta_ts>
            <desc>Works well enough for others to start to use</desc>
            <filename>bug-26715-20090910141628.patch</filename>
            <type>text/plain</type>
            <size>9418</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzODMyMjRlLi5jNGU3YWYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDkt
MTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIFRoaXMgd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1lLCBidXQgSSBk
b24ndCB0cnVzdCBpdCBmb3IgZ2VuZXJhbCB1c2FnZS4KKyAgICAgICAgYnVnemlsbGEtdG9vbCBy
b2xsb3V0IHdpbGwgZG8gdGhlIHJvbGxvdXQgbG9jYWxseSBhbmQgbGVhdmUgdGhlIGRpZmYgZm9y
IHlvdSB0byB2ZXJpZnkgYW5kIGNvbW1pdC4KKyAgICAgICAgVGhlIC0tY29tcGxldGUtcm9sbG91
dCBvcHRpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGxhbmQgYW5kIHVwZGF0ZSB0aGUgYnVnLgorICAg
ICAgICBFdmVudHVhbGx5IC0tY29tcGxldGUtcm9sbG91dCB3aWxsIGJlIGRlZmF1bHQsIGJ1dCB0
aGF0IHdpbGwgcmVxdWlyZSBtb3JlIHRlc3RpbmcuCisKKyAgICAgICAgVGhpcyBmaXJzdCBwYXNz
IGlzIGdvb2QgZW5vdWdoIGZvciBvdGhlcnMgdG8gdHJ5IGFuZCBmaWxlIGJ1Z3MgYWJvdXQuCisK
KyAgICAgICAgKiBTY3JpcHRzL2J1Z3ppbGxhLXRvb2w6CisgICAgICAgICogU2NyaXB0cy9tb2R1
bGVzL2J1Z3ppbGxhLnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9zY20ucHk6CisKIDIw
MDktMDktMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5j
b20+CiAKICAgICAgICAgW0dUS10gRXZlbnRTZW5kZXIgZG9lcyBub3QgcHJvcGVybHkgY29udmVy
dCBzb21lIGtleURvd24gc3RyaW5ncwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9i
dWd6aWxsYS10b29sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCmluZGV4IDYx
MTkyNDMuLjYxNjA2YzYgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEt
dG9vbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKQEAgLTU0Miw2ICs1
NDIsNjMgQEAgY2xhc3MgUG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZyhDb21tYW5kKToKICAgICAg
ICAgICAgIHRvb2wuYnVncy5hZGRfcGF0Y2hfdG9fYnVnKGJ1Z19pZCwgZGlmZl9maWxlLCBkZXNj
cmlwdGlvbiwgY29tbWVudF90ZXh0LCBtYXJrX2Zvcl9yZXZpZXc9b3B0aW9ucy5yZXZpZXcpCiAK
IAorY2xhc3MgUm9sbG91dENvbW1pdChDb21tYW5kKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6
CisgICAgICAgIG9wdGlvbnMgPSBXZWJLaXRMYW5kaW5nU2NyaXB0cy5sYW5kX29wdGlvbnMoKQor
ICAgICAgICBvcHRpb25zICs9IFdlYktpdExhbmRpbmdTY3JpcHRzLmNsZWFuaW5nX29wdGlvbnMo
KQorICAgICAgICBvcHRpb25zLmFwcGVuZChtYWtlX29wdGlvbigiLS1jb21wbGV0ZS1yb2xsb3V0
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iY29tcGxldGVfcm9sbG91dCIsIGhlbHA9IkV4
cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBjb21wbGV0ZSB1bnN1cGVydmlzZWQgcm9sbG91dHMsIGlu
Y2x1ZGluZyByZS1vcGVuaW5nIHRoZSBidWcuICBOb3QgcmVjb21tZW5kZWQuIikpCisgICAgICAg
IENvbW1hbmQuX19pbml0X18oc2VsZiwgJ1JldmVydHMgdGhlIGdpdmVuIHJldmlzaW9uIGFuZCBj
b21taXRzIHRoZSByZXZlcnQgYW5kIHJlLW9wZW5zIHRoZSBvcmlnaW5hbCBidWcuJywgJ1JFVklT
SU9OIFtCVUdJRF0nLCBvcHRpb25zPW9wdGlvbnMpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAg
ZGVmIF9jcmVhdGVfY2hhbmdlbG9nc19mb3JfcmV2ZXJ0KHNjbSwgcmV2aXNpb24pOgorICAgICAg
ICAjIEZpcnN0LCBkaXNjYXJkIHRoZSBDaGFuZ2VMb2cgY2hhbmdlcyBmcm9tIHRoZSByb2xsb3V0
LgorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNjbSkKKyAg
ICAgICAgc2NtLnJldmVydF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMpCisKKyAgICAgICAgIyBTZWNv
bmQsIG1ha2UgbmV3IENoYW5nZUxvZyBlbnRyaWVzIGZvciB0aGlzIHJvbGxvdXQuCisgICAgICAg
ICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0tcmV2
ZXJ0PSBvcHRpb24uCisgICAgICAgIFdlYktpdExhbmRpbmdTY3JpcHRzLnJ1bl93ZWJraXRfc2Ny
aXB0KCJwcmVwYXJlLUNoYW5nZUxvZyIpCisgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBj
aGFuZ2Vsb2dfcGF0aHM6CisgICAgICAgICAgICBDaGFuZ2VMb2coY2hhbmdlbG9nX3BhdGgpLnVw
ZGF0ZV9mb3JfcmV2ZXJ0KHJldmlzaW9uKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBf
cGFyc2VfYnVnX2lkX2Zyb21fcmV2aXNpb25fZGlmZih0b29sLCByZXZpc2lvbik6CisgICAgICAg
IG9yaWdpbmFsX2RpZmYgPSB0b29sLnNjbSgpLmRpZmZfZm9yX3JldmlzaW9uKHJldmlzaW9uKQor
ICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lkKG9yaWdpbmFsX2RpZmYpCisKKyAgICBAc3RhdGlj
bWV0aG9kCisgICAgZGVmIF9yZW9wZW5fYnVnX2FmdGVyX3JvbGxvdXQodG9vbCwgYnVnX2lkLCBj
b21tZW50X3RleHQpOgorICAgICAgICBpZiBidWdfaWQ6CisgICAgICAgICAgICB0b29sLmJ1Z3Mu
cmVvcGVuX2J1ZyhidWdfaWQsIGNvbW1lbnRfdGV4dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGxvZyhjb21tZW50X3RleHQpCisgICAgICAgICAgICBsb2coIk5vIGJ1Z3Mgd2VyZSB1cGRh
dGVkIG9yIHJlLW9wZW5lZCB0byByZWZsZWN0IHRoaXMgcm9sbG91dC4iKQorCisgICAgZGVmIGV4
ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIGlmIG5vdCBhcmdzOgor
ICAgICAgICAgICAgZXJyb3IoIlJFVklTSU9OIGlzIHJlcXVpcmVkLCBzZWUgLS1oZWxwLiIpCisg
ICAgICAgIHJldmlzaW9uID0gYXJnc1swXQorICAgICAgICBidWdfaWQgPSBzZWxmLl9wYXJzZV9i
dWdfaWRfZnJvbV9yZXZpc2lvbl9kaWZmKHRvb2wsIHJldmlzaW9uKQorICAgICAgICBpZiBvcHRp
b25zLmNvbXBsZXRlX3JvbGxvdXQ6CisgICAgICAgICAgICBpZiBidWdfaWQ6CisgICAgICAgICAg
ICAgICAgbG9nKCJXaWxsIHJlLW9wZW4gYnVnICVzIGFmdGVyIHJvbGxvdXQuIiAlIGJ1Z19pZCkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gcGFyc2Ug
YnVnIG51bWJlciBmcm9tIGRpZmYuICBObyBidWdzIHdpbGwgYmUgdXBkYXRlZC9yZW9wZW5lZCBh
ZnRlciB0aGUgcm9sbG91dC4iKQorCisgICAgICAgIFdlYktpdExhbmRpbmdTY3JpcHRzLnNldHVw
X2Zvcl9sYW5kaW5nKHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAgICAgIHRvb2wuc2NtKCkudXBk
YXRlX3dlYmtpdCgpCisgICAgICAgIHRvb2wuc2NtKCkuYXBwbHlfcmV2ZXJzZV9kaWZmKHJldmlz
aW9uKQorICAgICAgICBzZWxmLl9jcmVhdGVfY2hhbmdlbG9nc19mb3JfcmV2ZXJ0KHRvb2wuc2Nt
KCksIHJldmlzaW9uKQorCisgICAgICAgICMgRklYTUU6IEZ1bGx5IGF1dG9tYXRlZCByb2xsb3V0
IGlzIG5vdCAxMDAlIGlkaW90LXByb29mIHlldCwgc28gZm9yIG5vdyBqdXN0IGxvZyB3aXRoIGlu
c3RydWN0aW9ucyBvbiBob3cgdG8gY29tcGxldGUgdGhlIHJvbGxvdXQuCisgICAgICAgICMgT25j
ZSB3ZSB0cnVzdCByb2xsb3V0IHdlIHdpbGwgcmVtb3ZlIHRoaXMgb3B0aW9uLgorICAgICAgICBp
ZiBub3Qgb3B0aW9ucy5jb21wbGV0ZV9yb2xsb3V0OgorICAgICAgICAgICAgbG9nKCJcbk5PVEU6
IFJvbGxvdXQgc3VwcG9ydCBpcyBleHBlcmltZW50YWwuXG5QbGVhc2UgdmVyaWZ5IHRoZSByb2xs
b3V0IGRpZmYgYW5kIHVzZSAnYnVnemlsbGEtdG9vbCBsYW5kLWRpZmYgJXMnIHRvIGNvbW1pdCB0
aGUgcm9sbG91dC4iICUgYnVnX2lkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29tbWVu
dF90ZXh0ID0gV2ViS2l0TGFuZGluZ1NjcmlwdHMuYnVpbGRfYW5kX2NvbW1pdCh0b29sLnNjbSgp
LCBvcHRpb25zKQorICAgICAgICAgICAgc2VsZi5fcmVvcGVuX2J1Z19hZnRlcl9yb2xsb3V0KHRv
b2wsIGJ1Z19pZCwgY29tbWVudF90ZXh0KQorCisKIGNsYXNzIENyZWF0ZUJ1ZyhDb21tYW5kKToK
ICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBbCkBAIC03NjcsNiAr
ODI0LDcgQEAgY2xhc3MgQnVnemlsbGFUb29sOgogICAgICAgICAgICAgeyAnbmFtZScgOiAncG9z
dC1jb21taXRzJywgJ29iamVjdCcgOiBQb3N0Q29tbWl0c0FzUGF0Y2hlc1RvQnVnKCkgfSwKICAg
ICAgICAgICAgIHsgJ25hbWUnIDogJ3RyZWUtc3RhdHVzJywgJ29iamVjdCcgOiBDaGVja1RyZWVT
dGF0dXMoKSB9LAogICAgICAgICAgICAgeyAnbmFtZScgOiAnY29tbWl0LXF1ZXVlJywgJ29iamVj
dCcgOiBMYW5kUGF0Y2hlc0Zyb21Db21taXRRdWV1ZSgpIH0sCisgICAgICAgICAgICB7ICduYW1l
JyA6ICdyb2xsb3V0JywgJ29iamVjdCcgOiBSb2xsb3V0Q29tbWl0KCkgfSwKICAgICAgICAgXQog
CiAgICAgICAgIHNlbGYuZ2xvYmFsX29wdGlvbl9wYXJzZXIgPSBIZWxwUHJpbnRpbmdPcHRpb25Q
YXJzZXIodXNhZ2U9c2VsZi51c2FnZV9saW5lKCksIGZvcm1hdHRlcj1Ob25XcmFwcGluZ0VwaWxv
Z0luZGVudGVkSGVscEZvcm1hdHRlcigpLCBlcGlsb2c9c2VsZi5jb21tYW5kc191c2FnZSgpKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CmluZGV4IDgxZTM1NDcuLjYyYmU3
OTkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKQEAgLTQ1NCwzICs0
NTQsMTcgQEAgY2xhc3MgQnVnemlsbGE6CiAgICAgICAgIHNlbGYuYnJvd3NlclsnYnVnX3N0YXR1
cyddID0gWydSRVNPTFZFRCddCiAgICAgICAgIHNlbGYuYnJvd3NlclsncmVzb2x1dGlvbiddID0g
WydGSVhFRCddCiAgICAgICAgIHNlbGYuYnJvd3Nlci5zdWJtaXQoKQorCisgICAgZGVmIHJlb3Bl
bl9idWcoc2VsZiwgYnVnX2lkLCBjb21tZW50X3RleHQpOgorICAgICAgICBzZWxmLmF1dGhlbnRp
Y2F0ZSgpCisKKyAgICAgICAgbG9nKCJSZS1vcGVuaW5nIGJ1ZyAlcyIgJSBidWdfaWQpCisgICAg
ICAgIGxvZyhjb21tZW50X3RleHQpICMgQnVnemlsbGEgcmVxdWlyZXMgYSBjb21tZW50IHdoZW4g
cmUtb3BlbmluZyBhIGJ1Zywgc28gd2Uga25vdyBpdCB3aWxsIG5ldmVyIGJlIE5vbmUuCisgICAg
ICAgIGlmIHNlbGYuZHJ5cnVuOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5i
cm93c2VyLm9wZW4oc2VsZi5idWdfdXJsX2Zvcl9idWdfaWQoYnVnX2lkKSkKKyAgICAgICAgc2Vs
Zi5icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9ImNoYW5nZWZvcm0iKQorICAgICAgICBzZWxmLmJy
b3dzZXJbJ2J1Z19zdGF0dXMnXSA9IFsnUkVPUEVORUQnXQorICAgICAgICBzZWxmLmJyb3dzZXJb
J2NvbW1lbnQnXSA9IGNvbW1lbnRfdGV4dAorICAgICAgICBzZWxmLmJyb3dzZXIuc3VibWl0KCkK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CmluZGV4IDQ2MDY4ZTcuLjc4NjcwYWYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weQpAQCAtMTg2LDYgKzE4NiwxNSBAQCBjbGFzcyBTQ006
CiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKKyAgICBkZWYgZGlmZl9mb3Jf
cmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKworICAgIGRlZiBhcHBseV9yZXZlcnNl
X2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
LCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKworICAgIGRlZiByZXZlcnRfZmlsZXMoc2Vs
ZiwgZmlsZV9wYXRocyk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJj
bGFzc2VzIG11c3QgaW1wbGVtZW50IgorCiAgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2Vs
ZiwgbWVzc2FnZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFz
c2VzIG11c3QgaW1wbGVtZW50IgogCkBAIC0yOTEsOSArMzAwLDIwIEBAIGNsYXNzIFNWTihTQ00p
OgogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9j
b21tYW5kKHNlbGYuc2NyaXB0X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSwgY3dkPXNlbGYuY2hl
Y2tvdXRfcm9vdCkKIAorICAgIGRlZiBkaWZmX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6
CisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnZGlmZicsICctYycsIHJldmlzaW9u
XSkKKworICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAg
ICAjICctYyAtcmV2aXNpb24nIGFwcGxpZXMgdGhlIGludmVyc2UgZGlmZiBvZiAncmV2aXNpb24n
CisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbWVyZ2UnLCAnLWMnLCAnLSVzJyAl
IHJldmlzaW9uXSkKKworICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6Cisg
ICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAncmV2ZXJ0J10gKyBmaWxlX3BhdGhzKQor
CiAgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIGlm
IHNlbGYuZHJ5cnVuOgotICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29t
bWl0LiIKKyAgICAgICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBj
b21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVk
LgorICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyBjb21taXQuXG5Db21taXR0ZWQgcmV2
aXNpb24gMC4iCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2NvbW1p
dCcsICctbScsIG1lc3NhZ2VdKQogCiAgICAgZGVmIHN2bl9jb21taXRfbG9nKHNlbGYsIHN2bl9y
ZXZpc2lvbik6CkBAIC0zODAsNiArNDAwLDI5IEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBj
cmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0
JywgJ2RpZmYnLCAnSEVBRCddKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdpdF9jb21t
aXRfZnJvbV9zdm5fcmV2aXNpb24oY2xzLCByZXZpc2lvbik6CisgICAgICAgICMgZ2l0IHN2biBm
aW5kLXJldiBhbHdheXMgZXhpdHMgMCwgZXZlbiB3aGVuIHRoZSByZXZpc2lvbiBpcyBub3QgZm91
bmQuCisgICAgICAgIHJldHVybiBjbHMucnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2ZpbmQt
cmV2JywgJ3IlcycgJSByZXZpc2lvbl0pCisKKyAgICBkZWYgZGlmZl9mb3JfcmV2aXNpb24oc2Vs
ZiwgcmV2aXNpb24pOgorICAgICAgICBnaXRfY29tbWl0ID0gc2VsZi5naXRfY29tbWl0X2Zyb21f
c3ZuX3JldmlzaW9uKHJldmlzaW9uKQorICAgICAgICByZXR1cm4gc2VsZi5jcmVhdGVfcGF0Y2hf
ZnJvbV9sb2NhbF9jb21taXQoZ2l0X2NvbW1pdCkKKworICAgIGRlZiBhcHBseV9yZXZlcnNlX2Rp
ZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICAjIEFzc3VtZSB0aGUgcmV2aXNpb24gaXMgYW4g
c3ZuIHJldmlzaW9uLgorICAgICAgICBnaXRfY29tbWl0ID0gc2VsZi5naXRfY29tbWl0X2Zyb21f
c3ZuX3JldmlzaW9uKHJldmlzaW9uKQorICAgICAgICBsb2coIkZvdW5kIG1hdGNoaW5nIGdpdC1j
b21taXQgJXMgZm9yIHN2biByZXZpc2lvbiAlcyIgJSAoZ2l0X2NvbW1pdCwgcmV2aXNpb24pKQor
ICAgICAgICBpZiBub3QgZ2l0X2NvbW1pdDoKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9y
KCdGYWlsZWQgdG8gZmluZCBnaXQgY29tbWl0IGZvciByZXZpc2lvbiAlcywgZ2l0IHN2biBsb2cg
b3V0cHV0OiAiJXMiJyAlIChyZXZpc2lvbiwgZ2l0X2NvbW1pdCkpCisgICAgICAgIAorICAgICAg
ICAjIEkgdGhpbmsgdGhpcyB3aWxsIGFsd2F5cyBmYWlsIGR1ZSB0byBDaGFuZ2VMb2dzLgorICAg
ICAgICBwcmludCBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3JldmVydCcsICctLW5vLWNvbW1p
dCcsIGdpdF9jb21taXRdLCByYWlzZV9vbl9mYWlsdXJlPUZhbHNlKQorICAgICAgICBzZWxmLnJ1
bl9jb21tYW5kKCJyZXNvbHZlLUNoYW5nZUxvZ3MiKQorCisgICAgZGVmIHJldmVydF9maWxlcyhz
ZWxmLCBmaWxlX3BhdGhzKToKKyAgICAgICAgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdjaGVj
a291dCcsICdIRUFEJ10gKyBmaWxlX3BhdGhzKQorCiAgICAgZGVmIGNvbW1pdF93aXRoX21lc3Nh
Z2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNz
YWdlKG1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19z
ZXJ2ZXIoKQpAQCAtNDA0LDcgKzQ0Nyw4IEBAIGNsYXNzIEdpdChTQ00pOgogICAgICAgICAKICAg
ICBkZWYgcHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcihzZWxmKToKICAgICAgICAgaWYgc2Vs
Zi5kcnlydW46Ci0gICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQu
IgorICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGNvbW1p
dCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3aWxsIHN1Y2NlZWQuCisg
ICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuXG5Db21taXR0ZWQg
cjAiCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdkY29t
bWl0J10pCiAKICAgICAjIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhcmd1
bWVudCBmb3JtYXRzOg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39381</attachid>
            <date>2009-09-10 14:18:09 -0700</date>
            <delta_ts>2009-09-10 17:29:33 -0700</delta_ts>
            <desc>Make ChangeLog less pessimistic</desc>
            <filename>bug-26715-20090910141808.patch</filename>
            <type>text/plain</type>
            <size>9338</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzODMyMjRlLi5hNDkxZTg2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDkt
MTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgcm9sbG91dCB3aWxsIGRvIHRoZSByb2xs
b3V0IGxvY2FsbHkgYW5kIGxlYXZlIHRoZSBkaWZmIGZvciB5b3UgdG8gdmVyaWZ5IGFuZCBjb21t
aXQuCisgICAgICAgIFRoZSAtLWNvbXBsZXRlLXJvbGxvdXQgb3B0aW9uIHdpbGwgYXV0b21hdGlj
YWxseSBsYW5kIGFuZCB1cGRhdGUgdGhlIGJ1Zy4KKyAgICAgICAgRXZlbnR1YWxseSAtLWNvbXBs
ZXRlLXJvbGxvdXQgd2lsbCBiZSBkZWZhdWx0LCBidXQgdGhhdCB3aWxsIHJlcXVpcmUgbW9yZSB0
ZXN0aW5nLgorCisgICAgICAgIFRoaXMgZmlyc3QgcGFzcyBpcyBnb29kIGVub3VnaCBmb3Igb3Ro
ZXJzIHRvIHRyeSBhbmQgZmlsZSBidWdzIGFib3V0LgorCisgICAgICAgICogU2NyaXB0cy9idWd6
aWxsYS10b29sOgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL21vZHVsZXMvc2NtLnB5OgorCiAyMDA5LTA5LTEwICBNYXJ0aW4gUm9iaW5z
b24gIDxtYXJ0aW4uamFtZXMucm9iaW5zb25AZ21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIEV2
ZW50U2VuZGVyIGRvZXMgbm90IHByb3Blcmx5IGNvbnZlcnQgc29tZSBrZXlEb3duIHN0cmluZ3MK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCA2MTE5MjQzLi42MTYwNmM2IDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC01NDIsNiArNTQyLDYzIEBAIGNsYXNzIFBvc3RDb21t
aXRzQXNQYXRjaGVzVG9CdWcoQ29tbWFuZCk6CiAgICAgICAgICAgICB0b29sLmJ1Z3MuYWRkX3Bh
dGNoX3RvX2J1ZyhidWdfaWQsIGRpZmZfZmlsZSwgZGVzY3JpcHRpb24sIGNvbW1lbnRfdGV4dCwg
bWFya19mb3JfcmV2aWV3PW9wdGlvbnMucmV2aWV3KQogCiAKK2NsYXNzIFJvbGxvdXRDb21taXQo
Q29tbWFuZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBvcHRpb25zID0gV2Vi
S2l0TGFuZGluZ1NjcmlwdHMubGFuZF9vcHRpb25zKCkKKyAgICAgICAgb3B0aW9ucyArPSBXZWJL
aXRMYW5kaW5nU2NyaXB0cy5jbGVhbmluZ19vcHRpb25zKCkKKyAgICAgICAgb3B0aW9ucy5hcHBl
bmQobWFrZV9vcHRpb24oIi0tY29tcGxldGUtcm9sbG91dCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlc3Q9ImNvbXBsZXRlX3JvbGxvdXQiLCBoZWxwPSJFeHBlcmltZW50YWwgc3VwcG9ydCBmb3Ig
Y29tcGxldGUgdW5zdXBlcnZpc2VkIHJvbGxvdXRzLCBpbmNsdWRpbmcgcmUtb3BlbmluZyB0aGUg
YnVnLiAgTm90IHJlY29tbWVuZGVkLiIpKQorICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYs
ICdSZXZlcnRzIHRoZSBnaXZlbiByZXZpc2lvbiBhbmQgY29tbWl0cyB0aGUgcmV2ZXJ0IGFuZCBy
ZS1vcGVucyB0aGUgb3JpZ2luYWwgYnVnLicsICdSRVZJU0lPTiBbQlVHSURdJywgb3B0aW9ucz1v
cHRpb25zKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfY3JlYXRlX2NoYW5nZWxvZ3Nf
Zm9yX3JldmVydChzY20sIHJldmlzaW9uKToKKyAgICAgICAgIyBGaXJzdCwgZGlzY2FyZCB0aGUg
Q2hhbmdlTG9nIGNoYW5nZXMgZnJvbSB0aGUgcm9sbG91dC4KKyAgICAgICAgY2hhbmdlbG9nX3Bh
dGhzID0gbW9kaWZpZWRfY2hhbmdlbG9ncyhzY20pCisgICAgICAgIHNjbS5yZXZlcnRfZmlsZXMo
Y2hhbmdlbG9nX3BhdGhzKQorCisgICAgICAgICMgU2Vjb25kLCBtYWtlIG5ldyBDaGFuZ2VMb2cg
ZW50cmllcyBmb3IgdGhpcyByb2xsb3V0LgorICAgICAgICAjIFRoaXMgY291bGQgbW92ZSB0byBw
cmVwYXJlLUNoYW5nZUxvZyBieSBhZGRpbmcgYSAtLXJldmVydD0gb3B0aW9uLgorICAgICAgICBX
ZWJLaXRMYW5kaW5nU2NyaXB0cy5ydW5fd2Via2l0X3NjcmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ci
KQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdlbG9nX3BhdGhzOgorICAgICAg
ICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS51cGRhdGVfZm9yX3JldmVydChyZXZpc2lv
bikKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3BhcnNlX2J1Z19pZF9mcm9tX3Jldmlz
aW9uX2RpZmYodG9vbCwgcmV2aXNpb24pOgorICAgICAgICBvcmlnaW5hbF9kaWZmID0gdG9vbC5z
Y20oKS5kaWZmX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgcmV0dXJuIHBhcnNlX2J1
Z19pZChvcmlnaW5hbF9kaWZmKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfcmVvcGVu
X2J1Z19hZnRlcl9yb2xsb3V0KHRvb2wsIGJ1Z19pZCwgY29tbWVudF90ZXh0KToKKyAgICAgICAg
aWYgYnVnX2lkOgorICAgICAgICAgICAgdG9vbC5idWdzLnJlb3Blbl9idWcoYnVnX2lkLCBjb21t
ZW50X3RleHQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2coY29tbWVudF90ZXh0KQor
ICAgICAgICAgICAgbG9nKCJObyBidWdzIHdlcmUgdXBkYXRlZCBvciByZS1vcGVuZWQgdG8gcmVm
bGVjdCB0aGlzIHJvbGxvdXQuIikKKworICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFy
Z3MsIHRvb2wpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIGVycm9yKCJSRVZJ
U0lPTiBpcyByZXF1aXJlZCwgc2VlIC0taGVscC4iKQorICAgICAgICByZXZpc2lvbiA9IGFyZ3Nb
MF0KKyAgICAgICAgYnVnX2lkID0gc2VsZi5fcGFyc2VfYnVnX2lkX2Zyb21fcmV2aXNpb25fZGlm
Zih0b29sLCByZXZpc2lvbikKKyAgICAgICAgaWYgb3B0aW9ucy5jb21wbGV0ZV9yb2xsb3V0Ogor
ICAgICAgICAgICAgaWYgYnVnX2lkOgorICAgICAgICAgICAgICAgIGxvZygiV2lsbCByZS1vcGVu
IGJ1ZyAlcyBhZnRlciByb2xsb3V0LiIgJSBidWdfaWQpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIHBhcnNlIGJ1ZyBudW1iZXIgZnJvbSBkaWZmLiAg
Tm8gYnVncyB3aWxsIGJlIHVwZGF0ZWQvcmVvcGVuZWQgYWZ0ZXIgdGhlIHJvbGxvdXQuIikKKwor
ICAgICAgICBXZWJLaXRMYW5kaW5nU2NyaXB0cy5zZXR1cF9mb3JfbGFuZGluZyh0b29sLnNjbSgp
LCBvcHRpb25zKQorICAgICAgICB0b29sLnNjbSgpLnVwZGF0ZV93ZWJraXQoKQorICAgICAgICB0
b29sLnNjbSgpLmFwcGx5X3JldmVyc2VfZGlmZihyZXZpc2lvbikKKyAgICAgICAgc2VsZi5fY3Jl
YXRlX2NoYW5nZWxvZ3NfZm9yX3JldmVydCh0b29sLnNjbSgpLCByZXZpc2lvbikKKworICAgICAg
ICAjIEZJWE1FOiBGdWxseSBhdXRvbWF0ZWQgcm9sbG91dCBpcyBub3QgMTAwJSBpZGlvdC1wcm9v
ZiB5ZXQsIHNvIGZvciBub3cganVzdCBsb2cgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGNv
bXBsZXRlIHRoZSByb2xsb3V0LgorICAgICAgICAjIE9uY2Ugd2UgdHJ1c3Qgcm9sbG91dCB3ZSB3
aWxsIHJlbW92ZSB0aGlzIG9wdGlvbi4KKyAgICAgICAgaWYgbm90IG9wdGlvbnMuY29tcGxldGVf
cm9sbG91dDoKKyAgICAgICAgICAgIGxvZygiXG5OT1RFOiBSb2xsb3V0IHN1cHBvcnQgaXMgZXhw
ZXJpbWVudGFsLlxuUGxlYXNlIHZlcmlmeSB0aGUgcm9sbG91dCBkaWZmIGFuZCB1c2UgJ2J1Z3pp
bGxhLXRvb2wgbGFuZC1kaWZmICVzJyB0byBjb21taXQgdGhlIHJvbGxvdXQuIiAlIGJ1Z19pZCkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9IFdlYktpdExhbmRpbmdT
Y3JpcHRzLmJ1aWxkX2FuZF9jb21taXQodG9vbC5zY20oKSwgb3B0aW9ucykKKyAgICAgICAgICAg
IHNlbGYuX3Jlb3Blbl9idWdfYWZ0ZXJfcm9sbG91dCh0b29sLCBidWdfaWQsIGNvbW1lbnRfdGV4
dCkKKworCiBjbGFzcyBDcmVhdGVCdWcoQ29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYp
OgogICAgICAgICBvcHRpb25zID0gWwpAQCAtNzY3LDYgKzgyNCw3IEBAIGNsYXNzIEJ1Z3ppbGxh
VG9vbDoKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ3Bvc3QtY29tbWl0cycsICdvYmplY3QnIDog
UG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZygpIH0sCiAgICAgICAgICAgICB7ICduYW1lJyA6ICd0
cmVlLXN0YXR1cycsICdvYmplY3QnIDogQ2hlY2tUcmVlU3RhdHVzKCkgfSwKICAgICAgICAgICAg
IHsgJ25hbWUnIDogJ2NvbW1pdC1xdWV1ZScsICdvYmplY3QnIDogTGFuZFBhdGNoZXNGcm9tQ29t
bWl0UXVldWUoKSB9LAorICAgICAgICAgICAgeyAnbmFtZScgOiAncm9sbG91dCcsICdvYmplY3Qn
IDogUm9sbG91dENvbW1pdCgpIH0sCiAgICAgICAgIF0KIAogICAgICAgICBzZWxmLmdsb2JhbF9v
cHRpb25fcGFyc2VyID0gSGVscFByaW50aW5nT3B0aW9uUGFyc2VyKHVzYWdlPXNlbGYudXNhZ2Vf
bGluZSgpLCBmb3JtYXR0ZXI9Tm9uV3JhcHBpbmdFcGlsb2dJbmRlbnRlZEhlbHBGb3JtYXR0ZXIo
KSwgZXBpbG9nPXNlbGYuY29tbWFuZHNfdXNhZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9idWd6aWxsYS5weQppbmRleCA4MWUzNTQ3Li42MmJlNzk5IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CkBAIC00NTQsMyArNDU0LDE3IEBAIGNsYXNzIEJ1Z3ppbGxh
OgogICAgICAgICBzZWxmLmJyb3dzZXJbJ2J1Z19zdGF0dXMnXSA9IFsnUkVTT0xWRUQnXQogICAg
ICAgICBzZWxmLmJyb3dzZXJbJ3Jlc29sdXRpb24nXSA9IFsnRklYRUQnXQogICAgICAgICBzZWxm
LmJyb3dzZXIuc3VibWl0KCkKKworICAgIGRlZiByZW9wZW5fYnVnKHNlbGYsIGJ1Z19pZCwgY29t
bWVudF90ZXh0KToKKyAgICAgICAgc2VsZi5hdXRoZW50aWNhdGUoKQorCisgICAgICAgIGxvZygi
UmUtb3BlbmluZyBidWcgJXMiICUgYnVnX2lkKQorICAgICAgICBsb2coY29tbWVudF90ZXh0KSAj
IEJ1Z3ppbGxhIHJlcXVpcmVzIGEgY29tbWVudCB3aGVuIHJlLW9wZW5pbmcgYSBidWcsIHNvIHdl
IGtub3cgaXQgd2lsbCBuZXZlciBiZSBOb25lLgorICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKKyAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKHNlbGYuYnVnX3Vy
bF9mb3JfYnVnX2lkKGJ1Z19pZCkpCisgICAgICAgIHNlbGYuYnJvd3Nlci5zZWxlY3RfZm9ybShu
YW1lPSJjaGFuZ2Vmb3JtIikKKyAgICAgICAgc2VsZi5icm93c2VyWydidWdfc3RhdHVzJ10gPSBb
J1JFT1BFTkVEJ10KKyAgICAgICAgc2VsZi5icm93c2VyWydjb21tZW50J10gPSBjb21tZW50X3Rl
eHQKKyAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3Nj
bS5weQppbmRleCA0NjA2OGU3Li43ODY3MGFmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvc2NtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20u
cHkKQEAgLTE4Niw2ICsxODYsMTUgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBjcmVhdGVfcGF0Y2go
c2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11
c3QgaW1wbGVtZW50IgogCisgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9u
KToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBp
bXBsZW1lbnQiCisKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToK
KyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBs
ZW1lbnQiCisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgorICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIK
KwogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIApA
QCAtMjkxLDkgKzMwMCwyMCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICBkZWYgY3JlYXRlX3BhdGNo
KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChzZWxmLnNjcmlwdF9wYXRo
KCJzdm4tY3JlYXRlLXBhdGNoIiksIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpCiAKKyAgICBkZWYg
ZGlmZl9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICBzZWxmLnJ1bl9jb21t
YW5kKFsnc3ZuJywgJ2RpZmYnLCAnLWMnLCByZXZpc2lvbl0pCisKKyAgICBkZWYgYXBwbHlfcmV2
ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgIyAnLWMgLXJldmlzaW9uJyBhcHBs
aWVzIHRoZSBpbnZlcnNlIGRpZmYgb2YgJ3JldmlzaW9uJworICAgICAgICBzZWxmLnJ1bl9jb21t
YW5kKFsnc3ZuJywgJ21lcmdlJywgJy1jJywgJy0lcycgJSByZXZpc2lvbl0pCisKKyAgICBkZWYg
cmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgorICAgICAgICBzZWxmLnJ1bl9jb21tYW5k
KFsnc3ZuJywgJ3JldmVydCddICsgZmlsZV9wYXRocykKKwogICAgIGRlZiBjb21taXRfd2l0aF9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKLSAgICAgICAg
ICAgIHJldHVybiAiRHJ5IHJ1biwgbm8gcmVtb3RlIGNvbW1pdC4iCisgICAgICAgICAgICAjIFJl
dHVybiBhIHN0cmluZyB3aGljaCBsb29rcyBsaWtlIGEgY29tbWl0IHNvIHRoYXQgdGhpbmdzIHdo
aWNoIHBhcnNlIHRoaXMgb3V0cHV0IHdpbGwgc3VjY2VlZC4KKyAgICAgICAgICAgIHJldHVybiAi
RHJ5IHJ1biwgbm8gY29tbWl0LlxuQ29tbWl0dGVkIHJldmlzaW9uIDAuIgogICAgICAgICByZXR1
cm4gc2VsZi5ydW5fY29tbWFuZChbJ3N2bicsICdjb21taXQnLCAnLW0nLCBtZXNzYWdlXSkKIAog
ICAgIGRlZiBzdm5fY29tbWl0X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24pOgpAQCAtMzgwLDYgKzQw
MCwyOSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgogICAg
ICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJ0hFQUQnXSkKIAor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKGNs
cywgcmV2aXNpb24pOgorICAgICAgICAjIGdpdCBzdm4gZmluZC1yZXYgYWx3YXlzIGV4aXRzIDAs
IGV2ZW4gd2hlbiB0aGUgcmV2aXNpb24gaXMgbm90IGZvdW5kLgorICAgICAgICByZXR1cm4gY2xz
LnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdmaW5kLXJldicsICdyJXMnICUgcmV2aXNpb25d
KQorCisgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAg
Z2l0X2NvbW1pdCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikK
KyAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX3BhdGNoX2Zyb21fbG9jYWxfY29tbWl0KGdpdF9j
b21taXQpCisKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKKyAg
ICAgICAgIyBBc3N1bWUgdGhlIHJldmlzaW9uIGlzIGFuIHN2biByZXZpc2lvbi4KKyAgICAgICAg
Z2l0X2NvbW1pdCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikK
KyAgICAgICAgbG9nKCJGb3VuZCBtYXRjaGluZyBnaXQtY29tbWl0ICVzIGZvciBzdm4gcmV2aXNp
b24gJXMiICUgKGdpdF9jb21taXQsIHJldmlzaW9uKSkKKyAgICAgICAgaWYgbm90IGdpdF9jb21t
aXQ6CisgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcignRmFpbGVkIHRvIGZpbmQgZ2l0IGNv
bW1pdCBmb3IgcmV2aXNpb24gJXMsIGdpdCBzdm4gbG9nIG91dHB1dDogIiVzIicgJSAocmV2aXNp
b24sIGdpdF9jb21taXQpKQorICAgICAgICAKKyAgICAgICAgIyBJIHRoaW5rIHRoaXMgd2lsbCBh
bHdheXMgZmFpbCBkdWUgdG8gQ2hhbmdlTG9ncy4KKyAgICAgICAgcHJpbnQgc2VsZi5ydW5fY29t
bWFuZChbJ2dpdCcsICdyZXZlcnQnLCAnLS1uby1jb21taXQnLCBnaXRfY29tbWl0XSwgcmFpc2Vf
b25fZmFpbHVyZT1GYWxzZSkKKyAgICAgICAgc2VsZi5ydW5fY29tbWFuZCgicmVzb2x2ZS1DaGFu
Z2VMb2dzIikKKworICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CisgICAg
ICAgIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnSEVBRCddICsgZmlsZV9w
YXRocykKKwogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAg
ICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQogICAgICAgICBy
ZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKCkKQEAgLTQwNCw3ICs0NDcs
OCBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgCiAgICAgZGVmIHB1c2hfbG9jYWxfY29tbWl0
c190b19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgotICAgICAgICAgICAg
cmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0LiIKKyAgICAgICAgICAgICMgUmV0dXJu
IGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2gg
cGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgorICAgICAgICAgICAgcmV0dXJuICJEcnkg
cnVuLCBubyByZW1vdGUgY29tbWl0LlxuQ29tbWl0dGVkIHIwIgogICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnZGNvbW1pdCddKQogCiAgICAgIyBUaGlzIGZ1
bmN0aW9uIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXJndW1lbnQgZm9ybWF0czo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39397</attachid>
            <date>2009-09-10 17:29:46 -0700</date>
            <delta_ts>2009-09-10 17:30:46 -0700</delta_ts>
            <desc>Add a bunch of testing code for abarth</desc>
            <filename>bug-26715-20090910172945.patch</filename>
            <type>text/plain</type>
            <size>12430</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCA2MTYwNmM2Li5jYjNlNjk3IDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC01OSwxNCArNTksNiBAQCBkZWYgcGx1cmFsaXplKG5v
dW4sIGNvdW50KToKICAgICAgICAgbm91biA9IHBsdXJhbChub3VuKQogICAgIHJldHVybiAiJWQg
JXMiICUgKGNvdW50LCBub3VuKQogCi1kZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzY20pOgotICAg
IGNoYW5nZWxvZ19wYXRocyA9IFtdCi0gICAgcGF0aHMgPSBzY20uY2hhbmdlZF9maWxlcygpCi0g
ICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUocGF0aCkg
PT0gIkNoYW5nZUxvZyI6Ci0gICAgICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMuYXBwZW5kKHBhdGgp
Ci0gICAgcmV0dXJuIGNoYW5nZWxvZ19wYXRocwotCiBkZWYgcGFyc2VfYnVnX2lkKG1lc3NhZ2Up
OgogICAgIG1hdGNoID0gcmUuc2VhcmNoKCJodHRwXDovL3dlYmtpdFwub3JnL2IvKD9QPGJ1Z19p
ZD5cZCspIiwgbWVzc2FnZSkKICAgICBpZiBtYXRjaDoKQEAgLTc2LDggKzY4LDggQEAgZGVmIHBh
cnNlX2J1Z19pZChtZXNzYWdlKToKICAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCdidWdfaWQn
KQogICAgIHJldHVybiBOb25lCiAKLWRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
c2NtKToKLSAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNjbSkKK2Rl
ZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoKToKKyAgICBjaGFuZ2Vsb2dfcGF0aHMg
PSBzY20ubW9kaWZpZWRfY2hhbmdlbG9ncygpCiAgICAgaWYgbm90IGxlbihjaGFuZ2Vsb2dfcGF0
aHMpOgogICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiRm91bmQgbm8gbW9kaWZpZWQgQ2hhbmdl
TG9ncywgY2Fubm90IGNyZWF0ZSBhIGNvbW1pdCBtZXNzYWdlLlxuIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQWxsIGNoYW5nZXMgcmVxdWlyZSBhIENoYW5nZUxvZy4gIFNlZTpcbiIKQEAg
LTE4Niw4ICsxNzgsNyBAQCBkZWYgYnVnX2NvbW1lbnRfZnJvbV9zdm5fcmV2aXNpb24oc3ZuX3Jl
dmlzaW9uKToKICAgICByZXR1cm4gIkNvbW1pdHRlZCByJXM6IDwlcz4iICUgKHN2bl9yZXZpc2lv
biwgdmlld19zb3VyY2VfdXJsKHN2bl9yZXZpc2lvbikpCiAKIGRlZiBidWdfY29tbWVudF9mcm9t
X2NvbW1pdF90ZXh0KHNjbSwgY29tbWl0X3RleHQpOgotICAgIG1hdGNoID0gcmUuc2VhcmNoKHNj
bS5jb21taXRfc3VjY2Vzc19yZWdleHAoKSwgY29tbWl0X3RleHQsIHJlLk1VTFRJTElORSkKLSAg
ICBzdm5fcmV2aXNpb24gPSBtYXRjaC5ncm91cCgnc3ZuX3JldmlzaW9uJykKKyAgICBzdm5fcmV2
aXNpb24gPSBzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpCiAg
ICAgcmV0dXJuIGJ1Z19jb21tZW50X2Zyb21fc3ZuX3JldmlzaW9uKHN2bl9yZXZpc2lvbikKIAog
CkBAIC0zMDIsOCArMjkzLDcgQEAgY2xhc3MgTGFuZEFuZFVwZGF0ZUJ1ZyhDb21tYW5kKToKICAg
ICAgICAgICAgIGxvZygiRmFpbGVkIHRvIGd1ZXNzIHJldmlld2VyIGZyb20gYnVnICVzIGFuZCAt
LXJldmlld2VyPSBub3QgcHJvdmlkZWQuICBOb3QgdXBkYXRpbmcgQ2hhbmdlTG9ncyB3aXRoIHJl
dmlld2VyLiIgJSBidWdfaWQpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBjaGFuZ2Vs
b2dzID0gbW9kaWZpZWRfY2hhbmdlbG9ncyh0b29sLnNjbSgpKQotICAgICAgICBmb3IgY2hhbmdl
bG9nX3BhdGggaW4gY2hhbmdlbG9nczoKKyAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIHRv
b2wuc2NtKCkubW9kaWZpZWRfY2hhbmdlbG9ncygpOgogICAgICAgICAgICAgQ2hhbmdlTG9nKGNo
YW5nZWxvZ19wYXRoKS5zZXRfcmV2aWV3ZXIocmV2aWV3ZXIpCiAKICAgICBkZWYgZXhlY3V0ZShz
ZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKQEAgLTU1Miw3ICs1NDIsNyBAQCBjbGFzcyBSb2xs
b3V0Q29tbWl0KENvbW1hbmQpOgogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2NyZWF0ZV9j
aGFuZ2Vsb2dzX2Zvcl9yZXZlcnQoc2NtLCByZXZpc2lvbik6CiAgICAgICAgICMgRmlyc3QsIGRp
c2NhcmQgdGhlIENoYW5nZUxvZyBjaGFuZ2VzIGZyb20gdGhlIHJvbGxvdXQuCi0gICAgICAgIGNo
YW5nZWxvZ19wYXRocyA9IG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2NtKQorICAgICAgICBjaGFuZ2Vs
b2dfcGF0aHMgPSBzY20ubW9kaWZpZWRfY2hhbmdlbG9ncygpCiAgICAgICAgIHNjbS5yZXZlcnRf
ZmlsZXMoY2hhbmdlbG9nX3BhdGhzKQogCiAgICAgICAgICMgU2Vjb25kLCBtYWtlIG5ldyBDaGFu
Z2VMb2cgZW50cmllcyBmb3IgdGhpcyByb2xsb3V0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL3NjbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20u
cHkKaW5kZXggNzg2NzBhZi4uMTgyOTE2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL3NjbS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5
CkBAIC0xNTMsNiArMTUzLDE5IEBAIGNsYXNzIFNDTToKICAgICAgICAgICAgIHJldHVybiBtYXRj
aC5ncm91cCgnc3ZuX3JldmlzaW9uJykKICAgICAgICAgcmV0dXJuIHN2bl9yZXZpc2lvbgogCisg
ICAgZGVmIHN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KHNlbGYsIGNvbW1pdF90ZXh0KToK
KyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goc2VsZi5jb21taXRfc3VjY2Vzc19yZWdleHAoKSwg
Y29tbWl0X3RleHQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCdz
dm5fcmV2aXNpb24nKQorCisgICAgIyBDaGFuZ2VMb2ctc3BlY2lmaWMgY29kZSBkb2Vzbid0IHJl
YWxseSBiZWxvbmcgaW4gc2NtLnB5LCBidXQgdGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHVzZWZ1bC4K
KyAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKKyAgICAgICAgY2hhbmdlbG9nX3Bh
dGhzID0gW10KKyAgICAgICAgcGF0aHMgPSBzZWxmLmNoYW5nZWRfZmlsZXMoKQorICAgICAgICBm
b3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUocGF0aCkg
PT0gIkNoYW5nZUxvZyI6CisgICAgICAgICAgICAgICAgY2hhbmdlbG9nX3BhdGhzLmFwcGVuZChw
YXRoKQorICAgICAgICByZXR1cm4gY2hhbmdlbG9nX3BhdGhzCisKICAgICBAc3RhdGljbWV0aG9k
CiAgICAgZGVmIGluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpOgogICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKQEAgLTIzNSwxNiAr
MjQ4LDIwIEBAIGNsYXNzIFNWTihTQ00pOgogICAgIGRlZiBpbl93b3JraW5nX2RpcmVjdG9yeShw
YXRoKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHBhdGgsICcu
c3ZuJykpCiAgICAgCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBmaW5kX3V1aWQocGF0aCk6
Ci0gICAgICAgIGlmIG5vdCBTVk4uaW5fd29ya2luZ19kaXJlY3RvcnkocGF0aCk6CisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIGZpbmRfdXVpZChjbHMsIHBhdGgpOgorICAgICAgICBpZiBub3Qg
Y2xzLmluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgaW5mbyA9IFNWTi5ydW5fY29tbWFuZChbJ3N2bicsICdpbmZvJywgcGF0aF0pCi0g
ICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCJeUmVwb3NpdG9yeSBVVUlEOiAoP1A8dXVpZD4uKykk
IiwgaW5mbywgcmUuTVVMVElMSU5FKQorICAgICAgICByZXR1cm4gY2xzLnZhbHVlX2Zyb21fc3Zu
X2luZm8ocGF0aCwgJ1JlcG9zaXRvcnkgVVVJRCcpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBk
ZWYgdmFsdWVfZnJvbV9zdm5faW5mbyhjbHMsIHBhdGgsIGZpZWxkX25hbWUpOgorICAgICAgICBp
bmZvX291dHB1dCA9IGNscy5ydW5fY29tbWFuZChbJ3N2bicsICdpbmZvJywgcGF0aF0pCisgICAg
ICAgIG1hdGNoID0gcmUuc2VhcmNoKCJeJXM6ICg/UDx2YWx1ZT4uKykkIiAlIGZpZWxkX25hbWUs
IGluZm9fb3V0cHV0LCByZS5NVUxUSUxJTkUpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCdzdm4gaW5mbyBkaWQgbm90IGNvbnRhaW4gYSBVVUlE
LicpCi0gICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgndXVpZCcpCi0gICAgCisgICAgICAgICAg
ICByYWlzZSBTY3JpcHRFcnJvcignc3ZuIGluZm8gZGlkIG5vdCBjb250YWluIGEgJXMuJyAlIGZp
ZWxkX25hbWUpCisgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgndmFsdWUnKQorCiAgICAgQHN0
YXRpY21ldGhvZAogICAgIGRlZiBmaW5kX2NoZWNrb3V0X3Jvb3QocGF0aCk6CiAgICAgICAgIHV1
aWQgPSBTVk4uZmluZF91dWlkKHBhdGgpCkBAIC0yNjAsNyArMjc3LDcgQEAgY2xhc3MgU1ZOKFND
TSk6CiAgICAgICAgICAgICAocGF0aCwgbGFzdF9jb21wb25lbnQpID0gb3MucGF0aC5zcGxpdChw
YXRoKQogICAgICAgICAgICAgaWYgbGFzdF9wYXRoID09IHBhdGg6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLSAgICAKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgY29tbWl0X3N1
Y2Nlc3NfcmVnZXhwKCk6CiAgICAgICAgIHJldHVybiAiXkNvbW1pdHRlZCByZXZpc2lvbiAoP1A8
c3ZuX3JldmlzaW9uPlxkKylcLiQiCkBAIC0zMDMsOSArMzIwLDEyIEBAIGNsYXNzIFNWTihTQ00p
OgogICAgIGRlZiBkaWZmX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHNl
bGYucnVuX2NvbW1hbmQoWydzdm4nLCAnZGlmZicsICctYycsIHJldmlzaW9uXSkKIAorICAgIGRl
ZiBfcmVwb3NpdG9yeV91cmwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlX2Zyb21f
c3ZuX2luZm8oc2VsZi5jaGVja291dF9yb290LCAnVVJMJykKKwogICAgIGRlZiBhcHBseV9yZXZl
cnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgogICAgICAgICAjICctYyAtcmV2aXNpb24nIGFwcGxp
ZXMgdGhlIGludmVyc2UgZGlmZiBvZiAncmV2aXNpb24nCi0gICAgICAgIHNlbGYucnVuX2NvbW1h
bmQoWydzdm4nLCAnbWVyZ2UnLCAnLWMnLCAnLSVzJyAlIHJldmlzaW9uXSkKKyAgICAgICAgc2Vs
Zi5ydW5fY29tbWFuZChbJ3N2bicsICdtZXJnZScsICctLW5vbi1pbnRlcmFjdGl2ZScsICctYycs
ICctJXMnICUgcmV2aXNpb24sIHNlbGYuX3JlcG9zaXRvcnlfdXJsKCldKQogCiAgICAgZGVmIHJl
dmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgc2VsZi5ydW5fY29tbWFuZChb
J3N2bicsICdyZXZlcnQnXSArIGZpbGVfcGF0aHMpCkBAIC0zMTcsMjQgKzMzNywxMyBAQCBjbGFz
cyBTVk4oU0NNKToKICAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnY29t
bWl0JywgJy1tJywgbWVzc2FnZV0pCiAKICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3Zu
X3JldmlzaW9uKToKLSAgICAgICAgc3ZuX3JldmlzaW9uID0gc2VsZi5zdHJpcF9yX2Zyb21fc3Zu
X3JldmlzaW9uKHN2bl9yZXZpc2lvbikKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQo
Wydzdm4nLCAnbG9nJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy1yJywgc3ZuX3JldmlzaW9uXSk7
CisgICAgICAgIHN2bl9yZXZpc2lvbiA9IHNlbGYuc3RyaXBfcl9mcm9tX3N2bl9yZXZpc2lvbihz
dHIoc3ZuX3JldmlzaW9uKSkKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydzdm4n
LCAnbG9nJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcmV2aXNpb24nLCBzdm5fcmV2aXNpb25d
KTsKIAogICAgIGRlZiBsYXN0X3N2bl9jb21taXRfbG9nKHNlbGYpOgotICAgICAgICBzdm5fcmV2
aXNpb24gPSBOb25lCi0gICAgICAgIG91dHB1dCA9IHNlbGYucnVuX2NvbW1hbmQoWydzdm52ZXJz
aW9uJywgJy1jJ10pCi0KLSAgICAgICAgaWYgcmUubWF0Y2goIl5cZCsiLCBvdXRwdXQpOgotICAg
ICAgICAgICAgc3ZuX3JldmlzaW9uID0gb3V0cHV0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBtYXRjaCA9IHJlLm1hdGNoKCJeKFxkKyk6KD9QPGxhc3Rfc3ZuX3JldmlzaW9uPlxkKykiLCBv
dXRwdXQpCi0gICAgICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgICAgICBzdm5fcmV2aXNp
b24gPSBtYXRjaC5ncm91cCgnbGFzdF9zdm5fcmV2aXNpb24nKQotCi0gICAgICAgIGlmIG5vdCBz
dm5fcmV2aXNpb246Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcignQ291bGQgbm90IGZp
bmQgbGFzdCByZXZpc2lvbiBjb21taXR0ZWQgdG8gc3ZuIHdvcmtpbmcgZGlyZWN0b3J5LicpCi0K
LSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbG9nJywgJy0tbm9uLWlu
dGVyYWN0aXZlJywgJy1yJywgc3ZuX3JldmlzaW9uXSkKKyAgICAgICAgIyBCQVNFIGlzIHRoZSBj
aGVja291dCByZXZpc2lvbiwgSEVBRCBpcyB0aGUgcmVtb3RlIHJlcG9zaXRvcnkgcmV2aXNpb24K
KyAgICAgICAgIyBodHRwOi8vc3ZuYm9vay5yZWQtYmVhbi5jb20vZW4vMS4wL2NoMDNzMDMuaHRt
bAorICAgICAgICByZXR1cm4gc2VsZi5zdm5fY29tbWl0X2xvZygnQkFTRScpCiAKICMgQWxsIGdp
dC1zcGVjaWZpYyBsb2dpYyBzaG91bGQgZ28gaGVyZS4KIGNsYXNzIEdpdChTQ00pOgpAQCAtNDEy
LDEzICs0MjEsMTcgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgZGVmIGFwcGx5X3JldmVyc2VfZGlm
ZihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgICMgQXNzdW1lIHRoZSByZXZpc2lvbiBpcyBhbiBz
dm4gcmV2aXNpb24uCiAgICAgICAgIGdpdF9jb21taXQgPSBzZWxmLmdpdF9jb21taXRfZnJvbV9z
dm5fcmV2aXNpb24ocmV2aXNpb24pCi0gICAgICAgIGxvZygiRm91bmQgbWF0Y2hpbmcgZ2l0LWNv
bW1pdCAlcyBmb3Igc3ZuIHJldmlzaW9uICVzIiAlIChnaXRfY29tbWl0LCByZXZpc2lvbikpCiAg
ICAgICAgIGlmIG5vdCBnaXRfY29tbWl0OgogICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3Io
J0ZhaWxlZCB0byBmaW5kIGdpdCBjb21taXQgZm9yIHJldmlzaW9uICVzLCBnaXQgc3ZuIGxvZyBv
dXRwdXQ6ICIlcyInICUgKHJldmlzaW9uLCBnaXRfY29tbWl0KSkKLSAgICAgICAgCisKICAgICAg
ICAgIyBJIHRoaW5rIHRoaXMgd2lsbCBhbHdheXMgZmFpbCBkdWUgdG8gQ2hhbmdlTG9ncy4KLSAg
ICAgICAgcHJpbnQgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdyZXZlcnQnLCAnLS1uby1jb21t
aXQnLCBnaXRfY29tbWl0XSwgcmFpc2Vfb25fZmFpbHVyZT1GYWxzZSkKLSAgICAgICAgc2VsZi5y
dW5fY29tbWFuZCgicmVzb2x2ZS1DaGFuZ2VMb2dzIikKKyAgICAgICAgIyBGSVhNRTogV2UgbmVl
ZCB0byBkZXRlYyBzcGVjaWZpYyBmYWlsdXJlIGNvbmRpdGlvbnMgYW5kIGhhbmRsZSB0aGVtLgor
ICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3JldmVydCcsICctLW5vLWNvbW1pdCcs
IGdpdF9jb21taXRdLCByYWlzZV9vbl9mYWlsdXJlPUZhbHNlKQorCisgICAgICAgICMgRml4IGFu
eSBDaGFuZ2VMb2dzIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2Vs
Zi5tb2RpZmllZF9jaGFuZ2Vsb2dzKCkKKyAgICAgICAgaWYgbGVuKGNoYW5nZWxvZ19wYXRocyk6
CisgICAgICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFtzZWxmLnNjcmlwdF9wYXRoKCdyZXNvbHZl
LUNoYW5nZUxvZ3MnKV0gKyBjaGFuZ2Vsb2dfcGF0aHMpCiAKICAgICBkZWYgcmV2ZXJ0X2ZpbGVz
KHNlbGYsIGZpbGVfcGF0aHMpOgogICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2No
ZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL3NjbV91bml0dGVzdC5weQppbmRleCAxOTdmMDU1Li4wYWRlOWFlIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvbW9kdWxlcy9zY21fdW5pdHRlc3QucHkKQEAgLTI4LDYgKzI4LDcgQEAKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBzdGF0CiBpbXBvcnQg
c3VicHJvY2VzcwogaW1wb3J0IHRlbXBmaWxlCkBAIC01NCw2ICs1NSwxMiBAQCBkZWYgd3JpdGVf
aW50b19maWxlX2F0X3BhdGgoZmlsZV9wYXRoLCBjb250ZW50cyk6CiAgICAgZmlsZS53cml0ZShj
b250ZW50cykKICAgICBmaWxlLmNsb3NlKCkKIAorZGVmIHJlYWRfZnJvbV9wYXRoKGZpbGVfcGF0
aCk6CisgICAgZmlsZSA9IG9wZW4oZmlsZV9wYXRoLCAncicpCisgICAgY29udGVudHMgPSBmaWxl
LnJlYWQoKQorICAgIGZpbGUuY2xvc2UoKQorICAgIHJldHVybiBjb250ZW50cworCiAjIEV4aXN0
cyB0byBzaGFyZSBzdm4gcmVwb3NpdG9yeSBjcmVhdGlvbiBjb2RlIGJldHdlZW4gdGhlIGdpdCBh
bmQgc3ZuIHRlc3RzCiBjbGFzcyBTVk5UZXN0UmVwb3NpdG9yeToKICAgICBAc3RhdGljbWV0aG9k
CkBAIC03MiwxNiArNzksMTkgQEAgY2xhc3MgU1ZOVGVzdFJlcG9zaXRvcnk6CiAgICAgICAgIAog
ICAgICAgICBydW4oWydzdm4nLCAnY29tbWl0JywgJy0tcXVpZXQnLCAnLS1tZXNzYWdlJywgJ3Nl
Y29uZCBjb21taXQnXSkKICAgICAgICAgCi0gICAgICAgIHRlc3RfZmlsZS53cml0ZSgidGVzdDMi
KQorICAgICAgICB0ZXN0X2ZpbGUud3JpdGUoInRlc3QzXG4iKQogICAgICAgICB0ZXN0X2ZpbGUu
Zmx1c2goKQogICAgICAgICAKICAgICAgICAgcnVuKFsnc3ZuJywgJ2NvbW1pdCcsICctLXF1aWV0
JywgJy0tbWVzc2FnZScsICd0aGlyZCBjb21taXQnXSkKIAotICAgICAgICB0ZXN0X2ZpbGUud3Jp
dGUoInRlc3Q0IikKKyAgICAgICAgdGVzdF9maWxlLndyaXRlKCJ0ZXN0NFxuIikKICAgICAgICAg
dGVzdF9maWxlLmNsb3NlKCkKLSAgICAgICAgCisKICAgICAgICAgcnVuKFsnc3ZuJywgJ2NvbW1p
dCcsICctLXF1aWV0JywgJy0tbWVzc2FnZScsICdmb3VydGggY29tbWl0J10pCiAKKyAgICAgICAg
IyBzdm4gZG9lcyBub3Qgc2VlbSB0byB1cGRhdGUgYWZ0ZXIgY29tbWl0IGFzIEkgd291bGQgZXhw
ZWN0LgorICAgICAgICBydW4oWydzdm4nLCAndXBkYXRlJ10pCisKICAgICBAY2xhc3NtZXRob2QK
ICAgICBkZWYgc2V0dXAoY2xzLCB0ZXN0X29iamVjdCk6CiAgICAgICAgIHRlc3Rfb2JqZWN0Lm9y
aWdpbmFsX3BhdGggPSBvcy5wYXRoLmFic3BhdGgoJy4nKQpAQCAtMTIyLDEyICsxMzIsMzEgQEAg
Y2xhc3MgU0NNVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIG9zLm1rZGlyKG9zLnBh
dGguZGlybmFtZShsb2NhbF9zY3JpcHRzX2RpcmVjdG9yeSkpCiAgICAgICAgIG9zLnN5bWxpbmso
d2Via2l0X3NjcmlwdHNfZGlyZWN0b3J5LCBsb2NhbF9zY3JpcHRzX2RpcmVjdG9yeSkKIAorICAg
ICMgVGVzdHMgd2hpY2ggYm90aCBHaXRUZXN0IGFuZCBTVk5UZXN0IHNob3VsZCBydW4uCisgICAg
IyBGSVhNRTogVGhlcmUgbXVzdCBiZSBhIHNpbXBsZXIgd2F5IHRvIGFkZCB0aGVzZSB3L28gYWRk
aW5nIGEgd3JhcHBlciBtZXRob2QgdG8gYm90aCBzdWJjbGFzc2VzCisgICAgZGVmIF9zaGFyZWRf
dGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYpOgorICAgICAgICB3cml0ZV9pbnRvX2ZpbGVf
YXRfcGF0aCgndGVzdF9maWxlJywgJ21vcmUgdGVzdCBjb250ZW50JykKKyAgICAgICAgY29tbWl0
X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCdhbm90aGVyIHRlc3QgY29tbWl0
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9j
b21taXRfdGV4dChjb21taXRfdGV4dCksICc1JykKKworICAgICAgICBzZWxmLnNjbS5kcnlydW4g
PSBUcnVlCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnc3Rp
bGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNv
bW1pdF93aXRoX21lc3NhZ2UoJ3lldCBhbm90aGVyIHRlc3QgY29tbWl0JykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21t
aXRfdGV4dCksICcwJykKKworICAgIGRlZiBfc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKHNlbGYp
OgorICAgICAgICBzZWxmLl9zZXR1cF93ZWJraXR0b29sc19zY3JpcHRzX3N5bWxpbmsoc2VsZi5z
Y20pICMgR2l0J3MgYXBwbHlfcmV2ZXJzZV9kaWZmIHVzZXMgcmVzb2x2ZS1DaGFuZ2VMb2dzCisg
ICAgICAgICMgT25seSB0ZXN0IHRoZSBzaW1wbGUgY2FzZSwgYXMgYW55IG90aGVyIHdpbGwgZW5k
IHVwIHdpdGggY29uZmxpY3QgbWFya2Vycy4KKyAgICAgICAgc2VsZi5zY20uYXBwbHlfcmV2ZXJz
ZV9kaWZmKCc0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkX2Zyb21fcGF0aCgndGVz
dF9maWxlJyksICJ0ZXN0MXRlc3QydGVzdDNcbiIpCisKIAogY2xhc3MgU1ZOVGVzdChTQ01UZXN0
KToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgU1ZOVGVzdFJlcG9zaXRvcnkuc2V0
dXAoc2VsZikKICAgICAgICAgb3MuY2hkaXIoc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkKKyAgICAg
ICAgc2VsZi5zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVja291dF9wYXRoKQog
CiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBTVk5UZXN0UmVwb3NpdG9yeS50ZWFy
X2Rvd24oc2VsZikKQEAgLTE3Miw2ICsyMDEsMTggQEAgY2xhc3MgU1ZOVGVzdChTQ01UZXN0KToK
ICAgICAgICAgc2VsZi5fc2V0dXBfd2Via2l0dG9vbHNfc2NyaXB0c19zeW1saW5rKHNjbSkKICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5hcHBseV9wYXRjaCwgcGF0
Y2gsIGZvcmNlPVRydWUpCiAKKyAgICBkZWYgdGVzdF9jb21taXRfbG9ncyhzZWxmKToKKyAgICAg
ICAgIyBDb21taXRzIGhhdmUgZGF0ZXMgYW5kIHVzZXJuYW1lcyBpbiB0aGVtLCBzbyB3ZSBjYW4n
dCBqdXN0IGRpcmVjdCBjb21wYXJlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KCdmb3VydGggY29tbWl0Jywgc2VsZi5zY20ubGFzdF9zdm5fY29tbWl0X2xvZygpKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaCgnc2Vjb25kIGNvbW1pdCcsIHNlbGYuc2NtLnN2
bl9jb21taXRfbG9nKDIpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF90ZXh0X3BhcnNpbmcoc2Vs
Zik6CisgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2UoKQorCisg
ICAgZGVmIHRlc3RfcmV2ZXJzZV9kaWZmKHNlbGYpOgorICAgICAgICBzZWxmLl9zaGFyZWRfdGVz
dF9yZXZlcnNlX2RpZmYoKQorCisKIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAKICAgICBkZWYg
X3NldHVwX2dpdF9jbG9uZV9vZl9zdm5fcmVwb3NpdG9yeShzZWxmKToKQEAgLTE4Niw2ICsyMjcs
NyBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAgICAgICBTVk5UZXN0UmVwb3NpdG9yeS5z
ZXR1cChzZWxmKQogICAgICAgICBzZWxmLl9zZXR1cF9naXRfY2xvbmVfb2Zfc3ZuX3JlcG9zaXRv
cnkoKQogICAgICAgICBvcy5jaGRpcihzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBz
ZWxmLnNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCiAKICAg
ICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIFNWTlRlc3RSZXBvc2l0b3J5LnRlYXJfZG93
bihzZWxmKQpAQCAtMjUyLDYgKzI5NCwxMSBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAg
ICAgICBzZWxmLl9zZXR1cF93ZWJraXR0b29sc19zY3JpcHRzX3N5bWxpbmsoc2NtKQogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmFwcGx5X3BhdGNoLCBwYXRjaCwg
Zm9yY2U9VHJ1ZSkKIAorICAgIGRlZiB0ZXN0X2NvbW1pdF90ZXh0X3BhcnNpbmcoc2VsZik6Cisg
ICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2UoKQorCisgICAgZGVm
IHRlc3RfcmV2ZXJzZV9kaWZmKHNlbGYpOgorICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9yZXZl
cnNlX2RpZmYoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1h
aW4oKQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39398</attachid>
            <date>2009-09-10 17:30:54 -0700</date>
            <delta_ts>2009-09-10 17:40:11 -0700</delta_ts>
            <desc>Final patch with a bunch of extra testing</desc>
            <filename>bug-26715-20090910173052.patch</filename>
            <type>text/plain</type>
            <size>19310</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzODMyMjRlLi5hNDkxZTg2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDkt
MTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgcm9sbG91dCB3aWxsIGRvIHRoZSByb2xs
b3V0IGxvY2FsbHkgYW5kIGxlYXZlIHRoZSBkaWZmIGZvciB5b3UgdG8gdmVyaWZ5IGFuZCBjb21t
aXQuCisgICAgICAgIFRoZSAtLWNvbXBsZXRlLXJvbGxvdXQgb3B0aW9uIHdpbGwgYXV0b21hdGlj
YWxseSBsYW5kIGFuZCB1cGRhdGUgdGhlIGJ1Zy4KKyAgICAgICAgRXZlbnR1YWxseSAtLWNvbXBs
ZXRlLXJvbGxvdXQgd2lsbCBiZSBkZWZhdWx0LCBidXQgdGhhdCB3aWxsIHJlcXVpcmUgbW9yZSB0
ZXN0aW5nLgorCisgICAgICAgIFRoaXMgZmlyc3QgcGFzcyBpcyBnb29kIGVub3VnaCBmb3Igb3Ro
ZXJzIHRvIHRyeSBhbmQgZmlsZSBidWdzIGFib3V0LgorCisgICAgICAgICogU2NyaXB0cy9idWd6
aWxsYS10b29sOgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL21vZHVsZXMvc2NtLnB5OgorCiAyMDA5LTA5LTEwICBNYXJ0aW4gUm9iaW5z
b24gIDxtYXJ0aW4uamFtZXMucm9iaW5zb25AZ21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIEV2
ZW50U2VuZGVyIGRvZXMgbm90IHByb3Blcmx5IGNvbnZlcnQgc29tZSBrZXlEb3duIHN0cmluZ3MK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbCBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCA2MTE5MjQzLi5jYjNlNjk3IDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC01OSwxNCArNTksNiBAQCBkZWYgcGx1cmFsaXplKG5v
dW4sIGNvdW50KToKICAgICAgICAgbm91biA9IHBsdXJhbChub3VuKQogICAgIHJldHVybiAiJWQg
JXMiICUgKGNvdW50LCBub3VuKQogCi1kZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzY20pOgotICAg
IGNoYW5nZWxvZ19wYXRocyA9IFtdCi0gICAgcGF0aHMgPSBzY20uY2hhbmdlZF9maWxlcygpCi0g
ICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUocGF0aCkg
PT0gIkNoYW5nZUxvZyI6Ci0gICAgICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMuYXBwZW5kKHBhdGgp
Ci0gICAgcmV0dXJuIGNoYW5nZWxvZ19wYXRocwotCiBkZWYgcGFyc2VfYnVnX2lkKG1lc3NhZ2Up
OgogICAgIG1hdGNoID0gcmUuc2VhcmNoKCJodHRwXDovL3dlYmtpdFwub3JnL2IvKD9QPGJ1Z19p
ZD5cZCspIiwgbWVzc2FnZSkKICAgICBpZiBtYXRjaDoKQEAgLTc2LDggKzY4LDggQEAgZGVmIHBh
cnNlX2J1Z19pZChtZXNzYWdlKToKICAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCdidWdfaWQn
KQogICAgIHJldHVybiBOb25lCiAKLWRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
c2NtKToKLSAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNjbSkKK2Rl
ZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoKToKKyAgICBjaGFuZ2Vsb2dfcGF0aHMg
PSBzY20ubW9kaWZpZWRfY2hhbmdlbG9ncygpCiAgICAgaWYgbm90IGxlbihjaGFuZ2Vsb2dfcGF0
aHMpOgogICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiRm91bmQgbm8gbW9kaWZpZWQgQ2hhbmdl
TG9ncywgY2Fubm90IGNyZWF0ZSBhIGNvbW1pdCBtZXNzYWdlLlxuIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQWxsIGNoYW5nZXMgcmVxdWlyZSBhIENoYW5nZUxvZy4gIFNlZTpcbiIKQEAg
LTE4Niw4ICsxNzgsNyBAQCBkZWYgYnVnX2NvbW1lbnRfZnJvbV9zdm5fcmV2aXNpb24oc3ZuX3Jl
dmlzaW9uKToKICAgICByZXR1cm4gIkNvbW1pdHRlZCByJXM6IDwlcz4iICUgKHN2bl9yZXZpc2lv
biwgdmlld19zb3VyY2VfdXJsKHN2bl9yZXZpc2lvbikpCiAKIGRlZiBidWdfY29tbWVudF9mcm9t
X2NvbW1pdF90ZXh0KHNjbSwgY29tbWl0X3RleHQpOgotICAgIG1hdGNoID0gcmUuc2VhcmNoKHNj
bS5jb21taXRfc3VjY2Vzc19yZWdleHAoKSwgY29tbWl0X3RleHQsIHJlLk1VTFRJTElORSkKLSAg
ICBzdm5fcmV2aXNpb24gPSBtYXRjaC5ncm91cCgnc3ZuX3JldmlzaW9uJykKKyAgICBzdm5fcmV2
aXNpb24gPSBzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpCiAg
ICAgcmV0dXJuIGJ1Z19jb21tZW50X2Zyb21fc3ZuX3JldmlzaW9uKHN2bl9yZXZpc2lvbikKIAog
CkBAIC0zMDIsOCArMjkzLDcgQEAgY2xhc3MgTGFuZEFuZFVwZGF0ZUJ1ZyhDb21tYW5kKToKICAg
ICAgICAgICAgIGxvZygiRmFpbGVkIHRvIGd1ZXNzIHJldmlld2VyIGZyb20gYnVnICVzIGFuZCAt
LXJldmlld2VyPSBub3QgcHJvdmlkZWQuICBOb3QgdXBkYXRpbmcgQ2hhbmdlTG9ncyB3aXRoIHJl
dmlld2VyLiIgJSBidWdfaWQpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBjaGFuZ2Vs
b2dzID0gbW9kaWZpZWRfY2hhbmdlbG9ncyh0b29sLnNjbSgpKQotICAgICAgICBmb3IgY2hhbmdl
bG9nX3BhdGggaW4gY2hhbmdlbG9nczoKKyAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIHRv
b2wuc2NtKCkubW9kaWZpZWRfY2hhbmdlbG9ncygpOgogICAgICAgICAgICAgQ2hhbmdlTG9nKGNo
YW5nZWxvZ19wYXRoKS5zZXRfcmV2aWV3ZXIocmV2aWV3ZXIpCiAKICAgICBkZWYgZXhlY3V0ZShz
ZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKQEAgLTU0Miw2ICs1MzIsNjMgQEAgY2xhc3MgUG9z
dENvbW1pdHNBc1BhdGNoZXNUb0J1ZyhDb21tYW5kKToKICAgICAgICAgICAgIHRvb2wuYnVncy5h
ZGRfcGF0Y2hfdG9fYnVnKGJ1Z19pZCwgZGlmZl9maWxlLCBkZXNjcmlwdGlvbiwgY29tbWVudF90
ZXh0LCBtYXJrX2Zvcl9yZXZpZXc9b3B0aW9ucy5yZXZpZXcpCiAKIAorY2xhc3MgUm9sbG91dENv
bW1pdChDb21tYW5kKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIG9wdGlvbnMg
PSBXZWJLaXRMYW5kaW5nU2NyaXB0cy5sYW5kX29wdGlvbnMoKQorICAgICAgICBvcHRpb25zICs9
IFdlYktpdExhbmRpbmdTY3JpcHRzLmNsZWFuaW5nX29wdGlvbnMoKQorICAgICAgICBvcHRpb25z
LmFwcGVuZChtYWtlX29wdGlvbigiLS1jb21wbGV0ZS1yb2xsb3V0IiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgZGVzdD0iY29tcGxldGVfcm9sbG91dCIsIGhlbHA9IkV4cGVyaW1lbnRhbCBzdXBwb3J0
IGZvciBjb21wbGV0ZSB1bnN1cGVydmlzZWQgcm9sbG91dHMsIGluY2x1ZGluZyByZS1vcGVuaW5n
IHRoZSBidWcuICBOb3QgcmVjb21tZW5kZWQuIikpCisgICAgICAgIENvbW1hbmQuX19pbml0X18o
c2VsZiwgJ1JldmVydHMgdGhlIGdpdmVuIHJldmlzaW9uIGFuZCBjb21taXRzIHRoZSByZXZlcnQg
YW5kIHJlLW9wZW5zIHRoZSBvcmlnaW5hbCBidWcuJywgJ1JFVklTSU9OIFtCVUdJRF0nLCBvcHRp
b25zPW9wdGlvbnMpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9jcmVhdGVfY2hhbmdl
bG9nc19mb3JfcmV2ZXJ0KHNjbSwgcmV2aXNpb24pOgorICAgICAgICAjIEZpcnN0LCBkaXNjYXJk
IHRoZSBDaGFuZ2VMb2cgY2hhbmdlcyBmcm9tIHRoZSByb2xsb3V0LgorICAgICAgICBjaGFuZ2Vs
b2dfcGF0aHMgPSBzY20ubW9kaWZpZWRfY2hhbmdlbG9ncygpCisgICAgICAgIHNjbS5yZXZlcnRf
ZmlsZXMoY2hhbmdlbG9nX3BhdGhzKQorCisgICAgICAgICMgU2Vjb25kLCBtYWtlIG5ldyBDaGFu
Z2VMb2cgZW50cmllcyBmb3IgdGhpcyByb2xsb3V0LgorICAgICAgICAjIFRoaXMgY291bGQgbW92
ZSB0byBwcmVwYXJlLUNoYW5nZUxvZyBieSBhZGRpbmcgYSAtLXJldmVydD0gb3B0aW9uLgorICAg
ICAgICBXZWJLaXRMYW5kaW5nU2NyaXB0cy5ydW5fd2Via2l0X3NjcmlwdCgicHJlcGFyZS1DaGFu
Z2VMb2ciKQorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gY2hhbmdlbG9nX3BhdGhzOgor
ICAgICAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS51cGRhdGVfZm9yX3JldmVydChy
ZXZpc2lvbikKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3BhcnNlX2J1Z19pZF9mcm9t
X3JldmlzaW9uX2RpZmYodG9vbCwgcmV2aXNpb24pOgorICAgICAgICBvcmlnaW5hbF9kaWZmID0g
dG9vbC5zY20oKS5kaWZmX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgcmV0dXJuIHBh
cnNlX2J1Z19pZChvcmlnaW5hbF9kaWZmKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBf
cmVvcGVuX2J1Z19hZnRlcl9yb2xsb3V0KHRvb2wsIGJ1Z19pZCwgY29tbWVudF90ZXh0KToKKyAg
ICAgICAgaWYgYnVnX2lkOgorICAgICAgICAgICAgdG9vbC5idWdzLnJlb3Blbl9idWcoYnVnX2lk
LCBjb21tZW50X3RleHQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2coY29tbWVudF90
ZXh0KQorICAgICAgICAgICAgbG9nKCJObyBidWdzIHdlcmUgdXBkYXRlZCBvciByZS1vcGVuZWQg
dG8gcmVmbGVjdCB0aGlzIHJvbGxvdXQuIikKKworICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlv
bnMsIGFyZ3MsIHRvb2wpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIGVycm9y
KCJSRVZJU0lPTiBpcyByZXF1aXJlZCwgc2VlIC0taGVscC4iKQorICAgICAgICByZXZpc2lvbiA9
IGFyZ3NbMF0KKyAgICAgICAgYnVnX2lkID0gc2VsZi5fcGFyc2VfYnVnX2lkX2Zyb21fcmV2aXNp
b25fZGlmZih0b29sLCByZXZpc2lvbikKKyAgICAgICAgaWYgb3B0aW9ucy5jb21wbGV0ZV9yb2xs
b3V0OgorICAgICAgICAgICAgaWYgYnVnX2lkOgorICAgICAgICAgICAgICAgIGxvZygiV2lsbCBy
ZS1vcGVuIGJ1ZyAlcyBhZnRlciByb2xsb3V0LiIgJSBidWdfaWQpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIHBhcnNlIGJ1ZyBudW1iZXIgZnJvbSBk
aWZmLiAgTm8gYnVncyB3aWxsIGJlIHVwZGF0ZWQvcmVvcGVuZWQgYWZ0ZXIgdGhlIHJvbGxvdXQu
IikKKworICAgICAgICBXZWJLaXRMYW5kaW5nU2NyaXB0cy5zZXR1cF9mb3JfbGFuZGluZyh0b29s
LnNjbSgpLCBvcHRpb25zKQorICAgICAgICB0b29sLnNjbSgpLnVwZGF0ZV93ZWJraXQoKQorICAg
ICAgICB0b29sLnNjbSgpLmFwcGx5X3JldmVyc2VfZGlmZihyZXZpc2lvbikKKyAgICAgICAgc2Vs
Zi5fY3JlYXRlX2NoYW5nZWxvZ3NfZm9yX3JldmVydCh0b29sLnNjbSgpLCByZXZpc2lvbikKKwor
ICAgICAgICAjIEZJWE1FOiBGdWxseSBhdXRvbWF0ZWQgcm9sbG91dCBpcyBub3QgMTAwJSBpZGlv
dC1wcm9vZiB5ZXQsIHNvIGZvciBub3cganVzdCBsb2cgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93
IHRvIGNvbXBsZXRlIHRoZSByb2xsb3V0LgorICAgICAgICAjIE9uY2Ugd2UgdHJ1c3Qgcm9sbG91
dCB3ZSB3aWxsIHJlbW92ZSB0aGlzIG9wdGlvbi4KKyAgICAgICAgaWYgbm90IG9wdGlvbnMuY29t
cGxldGVfcm9sbG91dDoKKyAgICAgICAgICAgIGxvZygiXG5OT1RFOiBSb2xsb3V0IHN1cHBvcnQg
aXMgZXhwZXJpbWVudGFsLlxuUGxlYXNlIHZlcmlmeSB0aGUgcm9sbG91dCBkaWZmIGFuZCB1c2Ug
J2J1Z3ppbGxhLXRvb2wgbGFuZC1kaWZmICVzJyB0byBjb21taXQgdGhlIHJvbGxvdXQuIiAlIGJ1
Z19pZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9IFdlYktpdExh
bmRpbmdTY3JpcHRzLmJ1aWxkX2FuZF9jb21taXQodG9vbC5zY20oKSwgb3B0aW9ucykKKyAgICAg
ICAgICAgIHNlbGYuX3Jlb3Blbl9idWdfYWZ0ZXJfcm9sbG91dCh0b29sLCBidWdfaWQsIGNvbW1l
bnRfdGV4dCkKKworCiBjbGFzcyBDcmVhdGVCdWcoQ29tbWFuZCk6CiAgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwpAQCAtNzY3LDYgKzgxNCw3IEBAIGNsYXNzIEJ1
Z3ppbGxhVG9vbDoKICAgICAgICAgICAgIHsgJ25hbWUnIDogJ3Bvc3QtY29tbWl0cycsICdvYmpl
Y3QnIDogUG9zdENvbW1pdHNBc1BhdGNoZXNUb0J1ZygpIH0sCiAgICAgICAgICAgICB7ICduYW1l
JyA6ICd0cmVlLXN0YXR1cycsICdvYmplY3QnIDogQ2hlY2tUcmVlU3RhdHVzKCkgfSwKICAgICAg
ICAgICAgIHsgJ25hbWUnIDogJ2NvbW1pdC1xdWV1ZScsICdvYmplY3QnIDogTGFuZFBhdGNoZXNG
cm9tQ29tbWl0UXVldWUoKSB9LAorICAgICAgICAgICAgeyAnbmFtZScgOiAncm9sbG91dCcsICdv
YmplY3QnIDogUm9sbG91dENvbW1pdCgpIH0sCiAgICAgICAgIF0KIAogICAgICAgICBzZWxmLmds
b2JhbF9vcHRpb25fcGFyc2VyID0gSGVscFByaW50aW5nT3B0aW9uUGFyc2VyKHVzYWdlPXNlbGYu
dXNhZ2VfbGluZSgpLCBmb3JtYXR0ZXI9Tm9uV3JhcHBpbmdFcGlsb2dJbmRlbnRlZEhlbHBGb3Jt
YXR0ZXIoKSwgZXBpbG9nPXNlbGYuY29tbWFuZHNfdXNhZ2UoKSkKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9idWd6aWxsYS5weQppbmRleCA4MWUzNTQ3Li42MmJlNzk5IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CkBAIC00NTQsMyArNDU0LDE3IEBAIGNsYXNzIEJ1
Z3ppbGxhOgogICAgICAgICBzZWxmLmJyb3dzZXJbJ2J1Z19zdGF0dXMnXSA9IFsnUkVTT0xWRUQn
XQogICAgICAgICBzZWxmLmJyb3dzZXJbJ3Jlc29sdXRpb24nXSA9IFsnRklYRUQnXQogICAgICAg
ICBzZWxmLmJyb3dzZXIuc3VibWl0KCkKKworICAgIGRlZiByZW9wZW5fYnVnKHNlbGYsIGJ1Z19p
ZCwgY29tbWVudF90ZXh0KToKKyAgICAgICAgc2VsZi5hdXRoZW50aWNhdGUoKQorCisgICAgICAg
IGxvZygiUmUtb3BlbmluZyBidWcgJXMiICUgYnVnX2lkKQorICAgICAgICBsb2coY29tbWVudF90
ZXh0KSAjIEJ1Z3ppbGxhIHJlcXVpcmVzIGEgY29tbWVudCB3aGVuIHJlLW9wZW5pbmcgYSBidWcs
IHNvIHdlIGtub3cgaXQgd2lsbCBuZXZlciBiZSBOb25lLgorICAgICAgICBpZiBzZWxmLmRyeXJ1
bjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKHNlbGYu
YnVnX3VybF9mb3JfYnVnX2lkKGJ1Z19pZCkpCisgICAgICAgIHNlbGYuYnJvd3Nlci5zZWxlY3Rf
Zm9ybShuYW1lPSJjaGFuZ2Vmb3JtIikKKyAgICAgICAgc2VsZi5icm93c2VyWydidWdfc3RhdHVz
J10gPSBbJ1JFT1BFTkVEJ10KKyAgICAgICAgc2VsZi5icm93c2VyWydjb21tZW50J10gPSBjb21t
ZW50X3RleHQKKyAgICAgICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL3NjbS5weQppbmRleCA0NjA2OGU3Li4xODI5MTZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9zY20ucHkKQEAgLTE1Myw2ICsxNTMsMTkgQEAgY2xhc3MgU0NNOgogICAgICAgICAgICAgcmV0
dXJuIG1hdGNoLmdyb3VwKCdzdm5fcmV2aXNpb24nKQogICAgICAgICByZXR1cm4gc3ZuX3Jldmlz
aW9uCiAKKyAgICBkZWYgc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoc2VsZiwgY29tbWl0
X3RleHQpOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChzZWxmLmNvbW1pdF9zdWNjZXNzX3Jl
Z2V4cCgpLCBjb21taXRfdGV4dCwgcmUuTVVMVElMSU5FKQorICAgICAgICByZXR1cm4gbWF0Y2gu
Z3JvdXAoJ3N2bl9yZXZpc2lvbicpCisKKyAgICAjIENoYW5nZUxvZy1zcGVjaWZpYyBjb2RlIGRv
ZXNuJ3QgcmVhbGx5IGJlbG9uZyBpbiBzY20ucHksIGJ1dCB0aGlzIGZ1bmN0aW9uIGlzIHZlcnkg
dXNlZnVsLgorICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYpOgorICAgICAgICBjaGFu
Z2Vsb2dfcGF0aHMgPSBbXQorICAgICAgICBwYXRocyA9IHNlbGYuY2hhbmdlZF9maWxlcygpCisg
ICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFt
ZShwYXRoKSA9PSAiQ2hhbmdlTG9nIjoKKyAgICAgICAgICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMu
YXBwZW5kKHBhdGgpCisgICAgICAgIHJldHVybiBjaGFuZ2Vsb2dfcGF0aHMKKwogICAgIEBzdGF0
aWNtZXRob2QKICAgICBkZWYgaW5fd29ya2luZ19kaXJlY3RvcnkocGF0aCk6CiAgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgpAQCAt
MTg2LDYgKzE5OSwxNSBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToK
ICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBs
ZW1lbnQiCiAKKyAgICBkZWYgZGlmZl9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVu
dCIKKworICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIK
KworICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CisgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgorCiAgICAg
ZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCkBAIC0yMjYs
MTYgKzI0OCwyMCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICBkZWYgaW5fd29ya2luZ19kaXJlY3Rv
cnkocGF0aCk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihwYXRo
LCAnLnN2bicpKQogICAgIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZmluZF91dWlkKHBh
dGgpOgotICAgICAgICBpZiBub3QgU1ZOLmluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpOgorICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX3V1aWQoY2xzLCBwYXRoKToKKyAgICAgICAgaWYg
bm90IGNscy5pbl93b3JraW5nX2RpcmVjdG9yeShwYXRoKToKICAgICAgICAgICAgIHJldHVybiBO
b25lCi0gICAgICAgIGluZm8gPSBTVk4ucnVuX2NvbW1hbmQoWydzdm4nLCAnaW5mbycsIHBhdGhd
KQotICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXlJlcG9zaXRvcnkgVVVJRDogKD9QPHV1aWQ+
LispJCIsIGluZm8sIHJlLk1VTFRJTElORSkKKyAgICAgICAgcmV0dXJuIGNscy52YWx1ZV9mcm9t
X3N2bl9pbmZvKHBhdGgsICdSZXBvc2l0b3J5IFVVSUQnKQorCisgICAgQGNsYXNzbWV0aG9kCisg
ICAgZGVmIHZhbHVlX2Zyb21fc3ZuX2luZm8oY2xzLCBwYXRoLCBmaWVsZF9uYW1lKToKKyAgICAg
ICAgaW5mb19vdXRwdXQgPSBjbHMucnVuX2NvbW1hbmQoWydzdm4nLCAnaW5mbycsIHBhdGhdKQor
ICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXiVzOiAoP1A8dmFsdWU+LispJCIgJSBmaWVsZF9u
YW1lLCBpbmZvX291dHB1dCwgcmUuTVVMVElMSU5FKQogICAgICAgICBpZiBub3QgbWF0Y2g6Ci0g
ICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcignc3ZuIGluZm8gZGlkIG5vdCBjb250YWluIGEg
VVVJRC4nKQotICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ3V1aWQnKQotICAgIAorICAgICAg
ICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ3N2biBpbmZvIGRpZCBub3QgY29udGFpbiBhICVzLicg
JSBmaWVsZF9uYW1lKQorICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ3ZhbHVlJykKKwogICAg
IEBzdGF0aWNtZXRob2QKICAgICBkZWYgZmluZF9jaGVja291dF9yb290KHBhdGgpOgogICAgICAg
ICB1dWlkID0gU1ZOLmZpbmRfdXVpZChwYXRoKQpAQCAtMjUxLDcgKzI3Nyw3IEBAIGNsYXNzIFNW
TihTQ00pOgogICAgICAgICAgICAgKHBhdGgsIGxhc3RfY29tcG9uZW50KSA9IG9zLnBhdGguc3Bs
aXQocGF0aCkKICAgICAgICAgICAgIGlmIGxhc3RfcGF0aCA9PSBwYXRoOgogICAgICAgICAgICAg
ICAgIHJldHVybiBOb25lCi0gICAgCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGNvbW1p
dF9zdWNjZXNzX3JlZ2V4cCgpOgogICAgICAgICByZXR1cm4gIl5Db21taXR0ZWQgcmV2aXNpb24g
KD9QPHN2bl9yZXZpc2lvbj5cZCspXC4kIgpAQCAtMjkxLDMwICszMTcsMzMgQEAgY2xhc3MgU1ZO
KFNDTSk6CiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYu
cnVuX2NvbW1hbmQoc2VsZi5zY3JpcHRfcGF0aCgic3ZuLWNyZWF0ZS1wYXRjaCIpLCBjd2Q9c2Vs
Zi5jaGVja291dF9yb290KQogCisgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlz
aW9uKToKKyAgICAgICAgc2VsZi5ydW5fY29tbWFuZChbJ3N2bicsICdkaWZmJywgJy1jJywgcmV2
aXNpb25dKQorCisgICAgZGVmIF9yZXBvc2l0b3J5X3VybChzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYudmFsdWVfZnJvbV9zdm5faW5mbyhzZWxmLmNoZWNrb3V0X3Jvb3QsICdVUkwnKQorCisg
ICAgZGVmIGFwcGx5X3JldmVyc2VfZGlmZihzZWxmLCByZXZpc2lvbik6CisgICAgICAgICMgJy1j
IC1yZXZpc2lvbicgYXBwbGllcyB0aGUgaW52ZXJzZSBkaWZmIG9mICdyZXZpc2lvbicKKyAgICAg
ICAgc2VsZi5ydW5fY29tbWFuZChbJ3N2bicsICdtZXJnZScsICctLW5vbi1pbnRlcmFjdGl2ZScs
ICctYycsICctJXMnICUgcmV2aXNpb24sIHNlbGYuX3JlcG9zaXRvcnlfdXJsKCldKQorCisgICAg
ZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKKyAgICAgICAgc2VsZi5ydW5fY29t
bWFuZChbJ3N2bicsICdyZXZlcnQnXSArIGZpbGVfcGF0aHMpCisKICAgICBkZWYgY29tbWl0X3dp
dGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgaWYgc2VsZi5kcnlydW46Ci0gICAg
ICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuIgorICAgICAgICAgICAg
IyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5n
cyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3aWxsIHN1Y2NlZWQuCisgICAgICAgICAgICByZXR1
cm4gIkRyeSBydW4sIG5vIGNvbW1pdC5cbkNvbW1pdHRlZCByZXZpc2lvbiAwLiIKICAgICAgICAg
cmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnY29tbWl0JywgJy1tJywgbWVzc2FnZV0p
CiAKICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToKLSAgICAgICAg
c3ZuX3JldmlzaW9uID0gc2VsZi5zdHJpcF9yX2Zyb21fc3ZuX3JldmlzaW9uKHN2bl9yZXZpc2lv
bikKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbG9nJywgJy0tbm9u
LWludGVyYWN0aXZlJywgJy1yJywgc3ZuX3JldmlzaW9uXSk7CisgICAgICAgIHN2bl9yZXZpc2lv
biA9IHNlbGYuc3RyaXBfcl9mcm9tX3N2bl9yZXZpc2lvbihzdHIoc3ZuX3JldmlzaW9uKSkKKyAg
ICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbG9nJywgJy0tbm9uLWludGVy
YWN0aXZlJywgJy0tcmV2aXNpb24nLCBzdm5fcmV2aXNpb25dKTsKIAogICAgIGRlZiBsYXN0X3N2
bl9jb21taXRfbG9nKHNlbGYpOgotICAgICAgICBzdm5fcmV2aXNpb24gPSBOb25lCi0gICAgICAg
IG91dHB1dCA9IHNlbGYucnVuX2NvbW1hbmQoWydzdm52ZXJzaW9uJywgJy1jJ10pCi0KLSAgICAg
ICAgaWYgcmUubWF0Y2goIl5cZCsiLCBvdXRwdXQpOgotICAgICAgICAgICAgc3ZuX3JldmlzaW9u
ID0gb3V0cHV0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCJe
KFxkKyk6KD9QPGxhc3Rfc3ZuX3JldmlzaW9uPlxkKykiLCBvdXRwdXQpCi0gICAgICAgICAgICBp
ZiBtYXRjaDoKLSAgICAgICAgICAgICAgICBzdm5fcmV2aXNpb24gPSBtYXRjaC5ncm91cCgnbGFz
dF9zdm5fcmV2aXNpb24nKQotCi0gICAgICAgIGlmIG5vdCBzdm5fcmV2aXNpb246Ci0gICAgICAg
ICAgICByYWlzZSBTY3JpcHRFcnJvcignQ291bGQgbm90IGZpbmQgbGFzdCByZXZpc2lvbiBjb21t
aXR0ZWQgdG8gc3ZuIHdvcmtpbmcgZGlyZWN0b3J5LicpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuX2NvbW1hbmQoWydzdm4nLCAnbG9nJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy1yJywgc3Zu
X3JldmlzaW9uXSkKKyAgICAgICAgIyBCQVNFIGlzIHRoZSBjaGVja291dCByZXZpc2lvbiwgSEVB
RCBpcyB0aGUgcmVtb3RlIHJlcG9zaXRvcnkgcmV2aXNpb24KKyAgICAgICAgIyBodHRwOi8vc3Zu
Ym9vay5yZWQtYmVhbi5jb20vZW4vMS4wL2NoMDNzMDMuaHRtbAorICAgICAgICByZXR1cm4gc2Vs
Zi5zdm5fY29tbWl0X2xvZygnQkFTRScpCiAKICMgQWxsIGdpdC1zcGVjaWZpYyBsb2dpYyBzaG91
bGQgZ28gaGVyZS4KIGNsYXNzIEdpdChTQ00pOgpAQCAtMzgwLDYgKzQwOSwzMyBAQCBjbGFzcyBH
aXQoU0NNKToKICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJ0hFQUQnXSkKIAorICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgor
ICAgICAgICAjIGdpdCBzdm4gZmluZC1yZXYgYWx3YXlzIGV4aXRzIDAsIGV2ZW4gd2hlbiB0aGUg
cmV2aXNpb24gaXMgbm90IGZvdW5kLgorICAgICAgICByZXR1cm4gY2xzLnJ1bl9jb21tYW5kKFsn
Z2l0JywgJ3N2bicsICdmaW5kLXJldicsICdyJXMnICUgcmV2aXNpb25dKQorCisgICAgZGVmIGRp
ZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgZ2l0X2NvbW1pdCA9IHNl
bGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgcmV0dXJu
IHNlbGYuY3JlYXRlX3BhdGNoX2Zyb21fbG9jYWxfY29tbWl0KGdpdF9jb21taXQpCisKKyAgICBk
ZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgIyBBc3N1bWUg
dGhlIHJldmlzaW9uIGlzIGFuIHN2biByZXZpc2lvbi4KKyAgICAgICAgZ2l0X2NvbW1pdCA9IHNl
bGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgaWYgbm90
IGdpdF9jb21taXQ6CisgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcignRmFpbGVkIHRvIGZp
bmQgZ2l0IGNvbW1pdCBmb3IgcmV2aXNpb24gJXMsIGdpdCBzdm4gbG9nIG91dHB1dDogIiVzIicg
JSAocmV2aXNpb24sIGdpdF9jb21taXQpKQorCisgICAgICAgICMgSSB0aGluayB0aGlzIHdpbGwg
YWx3YXlzIGZhaWwgZHVlIHRvIENoYW5nZUxvZ3MuCisgICAgICAgICMgRklYTUU6IFdlIG5lZWQg
dG8gZGV0ZWMgc3BlY2lmaWMgZmFpbHVyZSBjb25kaXRpb25zIGFuZCBoYW5kbGUgdGhlbS4KKyAg
ICAgICAgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdyZXZlcnQnLCAnLS1uby1jb21taXQnLCBn
aXRfY29tbWl0XSwgcmFpc2Vfb25fZmFpbHVyZT1GYWxzZSkKKworICAgICAgICAjIEZpeCBhbnkg
Q2hhbmdlTG9ncyBpZiBuZWNlc3NhcnkuCisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYu
bW9kaWZpZWRfY2hhbmdlbG9ncygpCisgICAgICAgIGlmIGxlbihjaGFuZ2Vsb2dfcGF0aHMpOgor
ICAgICAgICAgICAgc2VsZi5ydW5fY29tbWFuZChbc2VsZi5zY3JpcHRfcGF0aCgncmVzb2x2ZS1D
aGFuZ2VMb2dzJyldICsgY2hhbmdlbG9nX3BhdGhzKQorCisgICAgZGVmIHJldmVydF9maWxlcyhz
ZWxmLCBmaWxlX3BhdGhzKToKKyAgICAgICAgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdjaGVj
a291dCcsICdIRUFEJ10gKyBmaWxlX3BhdGhzKQorCiAgICAgZGVmIGNvbW1pdF93aXRoX21lc3Nh
Z2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNz
YWdlKG1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19z
ZXJ2ZXIoKQpAQCAtNDA0LDcgKzQ2MCw4IEBAIGNsYXNzIEdpdChTQ00pOgogICAgICAgICAKICAg
ICBkZWYgcHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcihzZWxmKToKICAgICAgICAgaWYgc2Vs
Zi5kcnlydW46Ci0gICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQu
IgorICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGNvbW1p
dCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3aWxsIHN1Y2NlZWQuCisg
ICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIHJlbW90ZSBjb21taXQuXG5Db21taXR0ZWQg
cjAiCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdkY29t
bWl0J10pCiAKICAgICAjIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhcmd1
bWVudCBmb3JtYXRzOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3Nj
bV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY21fdW5pdHRlc3Qu
cHkKaW5kZXggMTk3ZjA1NS4uMGFkZTlhZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL3NjbV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvc2NtX3VuaXR0ZXN0LnB5CkBAIC0yOCw2ICsyOCw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGlt
cG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3RhdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9y
dCB0ZW1wZmlsZQpAQCAtNTQsNiArNTUsMTIgQEAgZGVmIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRo
KGZpbGVfcGF0aCwgY29udGVudHMpOgogICAgIGZpbGUud3JpdGUoY29udGVudHMpCiAgICAgZmls
ZS5jbG9zZSgpCiAKK2RlZiByZWFkX2Zyb21fcGF0aChmaWxlX3BhdGgpOgorICAgIGZpbGUgPSBv
cGVuKGZpbGVfcGF0aCwgJ3InKQorICAgIGNvbnRlbnRzID0gZmlsZS5yZWFkKCkKKyAgICBmaWxl
LmNsb3NlKCkKKyAgICByZXR1cm4gY29udGVudHMKKwogIyBFeGlzdHMgdG8gc2hhcmUgc3ZuIHJl
cG9zaXRvcnkgY3JlYXRpb24gY29kZSBiZXR3ZWVuIHRoZSBnaXQgYW5kIHN2biB0ZXN0cwogY2xh
c3MgU1ZOVGVzdFJlcG9zaXRvcnk6CiAgICAgQHN0YXRpY21ldGhvZApAQCAtNzIsMTYgKzc5LDE5
IEBAIGNsYXNzIFNWTlRlc3RSZXBvc2l0b3J5OgogICAgICAgICAKICAgICAgICAgcnVuKFsnc3Zu
JywgJ2NvbW1pdCcsICctLXF1aWV0JywgJy0tbWVzc2FnZScsICdzZWNvbmQgY29tbWl0J10pCiAg
ICAgICAgIAotICAgICAgICB0ZXN0X2ZpbGUud3JpdGUoInRlc3QzIikKKyAgICAgICAgdGVzdF9m
aWxlLndyaXRlKCJ0ZXN0M1xuIikKICAgICAgICAgdGVzdF9maWxlLmZsdXNoKCkKICAgICAgICAg
CiAgICAgICAgIHJ1bihbJ3N2bicsICdjb21taXQnLCAnLS1xdWlldCcsICctLW1lc3NhZ2UnLCAn
dGhpcmQgY29tbWl0J10pCiAKLSAgICAgICAgdGVzdF9maWxlLndyaXRlKCJ0ZXN0NCIpCisgICAg
ICAgIHRlc3RfZmlsZS53cml0ZSgidGVzdDRcbiIpCiAgICAgICAgIHRlc3RfZmlsZS5jbG9zZSgp
Ci0gICAgICAgIAorCiAgICAgICAgIHJ1bihbJ3N2bicsICdjb21taXQnLCAnLS1xdWlldCcsICct
LW1lc3NhZ2UnLCAnZm91cnRoIGNvbW1pdCddKQogCisgICAgICAgICMgc3ZuIGRvZXMgbm90IHNl
ZW0gdG8gdXBkYXRlIGFmdGVyIGNvbW1pdCBhcyBJIHdvdWxkIGV4cGVjdC4KKyAgICAgICAgcnVu
KFsnc3ZuJywgJ3VwZGF0ZSddKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldHVwKGNs
cywgdGVzdF9vYmplY3QpOgogICAgICAgICB0ZXN0X29iamVjdC5vcmlnaW5hbF9wYXRoID0gb3Mu
cGF0aC5hYnNwYXRoKCcuJykKQEAgLTEyMiwxMiArMTMyLDMxIEBAIGNsYXNzIFNDTVRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmRpcm5hbWUobG9jYWxf
c2NyaXB0c19kaXJlY3RvcnkpKQogICAgICAgICBvcy5zeW1saW5rKHdlYmtpdF9zY3JpcHRzX2Rp
cmVjdG9yeSwgbG9jYWxfc2NyaXB0c19kaXJlY3RvcnkpCiAKKyAgICAjIFRlc3RzIHdoaWNoIGJv
dGggR2l0VGVzdCBhbmQgU1ZOVGVzdCBzaG91bGQgcnVuLgorICAgICMgRklYTUU6IFRoZXJlIG11
c3QgYmUgYSBzaW1wbGVyIHdheSB0byBhZGQgdGhlc2Ugdy9vIGFkZGluZyBhIHdyYXBwZXIgbWV0
aG9kIHRvIGJvdGggc3ViY2xhc3NlcworICAgIGRlZiBfc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhf
bWVzc2FnZShzZWxmKToKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmls
ZScsICdtb3JlIHRlc3QgY29udGVudCcpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20u
Y29tbWl0X3dpdGhfbWVzc2FnZSgnYW5vdGhlciB0ZXN0IGNvbW1pdCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0
X3RleHQpLCAnNScpCisKKyAgICAgICAgc2VsZi5zY20uZHJ5cnVuID0gVHJ1ZQorICAgICAgICB3
cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250
ZW50JykKKyAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdl
KCd5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnMCcpCisK
KyAgICBkZWYgX3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5f
c2V0dXBfd2Via2l0dG9vbHNfc2NyaXB0c19zeW1saW5rKHNlbGYuc2NtKSAjIEdpdCdzIGFwcGx5
X3JldmVyc2VfZGlmZiB1c2VzIHJlc29sdmUtQ2hhbmdlTG9ncworICAgICAgICAjIE9ubHkgdGVz
dCB0aGUgc2ltcGxlIGNhc2UsIGFzIGFueSBvdGhlciB3aWxsIGVuZCB1cCB3aXRoIGNvbmZsaWN0
IG1hcmtlcnMuCisgICAgICAgIHNlbGYuc2NtLmFwcGx5X3JldmVyc2VfZGlmZignNCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZF9mcm9tX3BhdGgoJ3Rlc3RfZmlsZScpLCAidGVzdDF0
ZXN0MnRlc3QzXG4iKQorCiAKIGNsYXNzIFNWTlRlc3QoU0NNVGVzdCk6CiAKICAgICBkZWYgc2V0
VXAoc2VsZik6CiAgICAgICAgIFNWTlRlc3RSZXBvc2l0b3J5LnNldHVwKHNlbGYpCiAgICAgICAg
IG9zLmNoZGlyKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkKIAogICAgIGRlZiB0ZWFyRG93
bihzZWxmKToKICAgICAgICAgU1ZOVGVzdFJlcG9zaXRvcnkudGVhcl9kb3duKHNlbGYpCkBAIC0x
NzIsNiArMjAxLDE4IEBAIGNsYXNzIFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuX3Nl
dHVwX3dlYmtpdHRvb2xzX3NjcmlwdHNfc3ltbGluayhzY20pCiAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uYXBwbHlfcGF0Y2gsIHBhdGNoLCBmb3JjZT1UcnVlKQog
CisgICAgZGVmIHRlc3RfY29tbWl0X2xvZ3Moc2VsZik6CisgICAgICAgICMgQ29tbWl0cyBoYXZl
IGRhdGVzIGFuZCB1c2VybmFtZXMgaW4gdGhlbSwgc28gd2UgY2FuJ3QganVzdCBkaXJlY3QgY29t
cGFyZS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaCgnZm91cnRoIGNvbW1pdCcs
IHNlbGYuc2NtLmxhc3Rfc3ZuX2NvbW1pdF9sb2coKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2goJ3NlY29uZCBjb21taXQnLCBzZWxmLnNjbS5zdm5fY29tbWl0X2xvZygyKSkp
CisKKyAgICBkZWYgdGVzdF9jb21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgorICAgICAgICBzZWxm
Ll9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKCkKKworICAgIGRlZiB0ZXN0X3JldmVy
c2VfZGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkK
KworCiBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogCiAgICAgZGVmIF9zZXR1cF9naXRfY2xvbmVf
b2Zfc3ZuX3JlcG9zaXRvcnkoc2VsZik6CkBAIC0xODYsNiArMjI3LDcgQEAgY2xhc3MgR2l0VGVz
dChTQ01UZXN0KToKICAgICAgICAgU1ZOVGVzdFJlcG9zaXRvcnkuc2V0dXAoc2VsZikKICAgICAg
ICAgc2VsZi5fc2V0dXBfZ2l0X2Nsb25lX29mX3N2bl9yZXBvc2l0b3J5KCkKICAgICAgICAgb3Mu
Y2hkaXIoc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5zY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQogCiAgICAgZGVmIHRlYXJEb3duKHNl
bGYpOgogICAgICAgICBTVk5UZXN0UmVwb3NpdG9yeS50ZWFyX2Rvd24oc2VsZikKQEAgLTI1Miw2
ICsyOTQsMTEgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5fc2V0dXBf
d2Via2l0dG9vbHNfc2NyaXB0c19zeW1saW5rKHNjbSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoU2NyaXB0RXJyb3IsIHNjbS5hcHBseV9wYXRjaCwgcGF0Y2gsIGZvcmNlPVRydWUpCiAKKyAg
ICBkZWYgdGVzdF9jb21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl9zaGFy
ZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKCkKKworICAgIGRlZiB0ZXN0X3JldmVyc2VfZGlm
ZihzZWxmKToKKyAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkKIAogaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCk=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39400</attachid>
            <date>2009-09-10 17:40:18 -0700</date>
            <delta_ts>2009-09-11 09:54:50 -0700</delta_ts>
            <desc>Document all the extra testing in the ChangeLog</desc>
            <filename>bug-26715-20090910174017.patch</filename>
            <type>text/plain</type>
            <size>20565</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzODMyMjRlLi5mNjYzOTBjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMDktMDkt
MTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgc2hvdWxkIGF1dG9tYXRl
IHJvbGxvdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjcxNQorCisgICAgICAgIGJ1Z3ppbGxhLXRvb2wgcm9sbG91dCB3aWxsIGRvIHRoZSByb2xs
b3V0IGxvY2FsbHkgYW5kIGxlYXZlIHRoZSBkaWZmIGZvciB5b3UgdG8gdmVyaWZ5IGFuZCBjb21t
aXQuCisgICAgICAgIFRoZSAtLWNvbXBsZXRlLXJvbGxvdXQgb3B0aW9uIHdpbGwgYXV0b21hdGlj
YWxseSBsYW5kIGFuZCB1cGRhdGUgdGhlIGJ1Zy4KKyAgICAgICAgRXZlbnR1YWxseSAtLWNvbXBs
ZXRlLXJvbGxvdXQgd2lsbCBiZSBkZWZhdWx0LCBidXQgdGhhdCB3aWxsIHJlcXVpcmUgbW9yZSB0
ZXN0aW5nLgorCisgICAgICAgIFRoaXMgZmlyc3QgcGFzcyBpcyBnb29kIGVub3VnaCBmb3Igb3Ro
ZXJzIHRvIHRyeSBhbmQgZmlsZSBidWdzIGFib3V0LgorCisgICAgICAgICogU2NyaXB0cy9idWd6
aWxsYS10b29sOgorICAgICAgICAgLSBNb3ZlIG1vZGlmaWVkX2NoYW5nZWxvZ3MgaW50byBzY20u
cHkuCisgICAgICAgICAtIE1vdmUgc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQgbG9naWMg
aW50byBzY20ucHkuCisgICAgICAgICAtIEFkZCBSb2xsb3V0Q29tbWl0IGNvbW1hbmQuCisgICAg
ICAgICogU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5OgorICAgICAgICAgLSBBZGQgcmVvcGVu
X2J1ZyBjb21tYW5kIHVzZWQgYnkgUm9sbG91dENvbW1pdC4KKyAgICAgICAgKiBTY3JpcHRzL21v
ZHVsZXMvc2NtLnB5OgorICAgICAgICAgLSBBZGQgZnVuY3Rpb25zIHRvIHN1cHBvcnQgUm9sbG91
dENvbW1pdC4KKyAgICAgICAgIC0gQWJzdHJhY3QgZmluZF91dWlkIGludG8gdmFsdWVfZnJvbV9z
dm5faW5mbyBzbyBpdCBjYW4gYmUgcmUtdXNlZCBmb3IgX3JlcG9zaXRvcnlfdXJsIChuZWVkZWQg
Ynkgc3ZuIG1lcmdlKS4KKyAgICAgICAgIC0gQWRkIGEgc3RyKCkgY2FsbCBzbyB0aGF0IHN2bl9j
b21taXRfbG9nIGNhbiB0YWtlIGEgbnVtZXJpYyBhcmd1bWVudC4KKyAgICAgICAgIC0gUmVtb3Zl
IGEgYnVuY2ggb2YgdmVyeSBzbG93IGNvZGUgZnJvbSBsYXN0X3N2bl9jb21taXRfbG9nIGFuZCB1
c2VkIHRoZSBidWlsdC1pbiAnQkFTRScgYWxpYXMgaW5zdGVhZC4KKyAgICAgICAgIC0gTWFkZSBk
cnlfcnVuIGNvbW1pdHMgcmV0dXJuIHNvbWV0aGluZyB0aGF0IHN2bl9yZXZpc2lvbl9mcm9tX2Nv
bW1pdF90ZXh0IGNhbiBwYXJzZS4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0
ZXN0LnB5OgorICAgICAgICAgLSBBZGQgcmVhZF9mcm9tX3BhdGggZm9yIGVhc3kgZmlsZSByZWFk
aW5nLgorICAgICAgICAgLSBQdXQgdGVzdDQgb24gYSBuZXcgbGluZSB0byBtYWtlIHJldmVydHMg
d29yayB3L28gY29uZmxpY3QuCisgICAgICAgICAtIEFkZCBhbiAic3ZuIHVwZGF0ZSIgY2FsbCBz
byB0aGF0IHRoZSBjaGVja291dCByZXZpc2lvbiBtYXRjaGVzIHRoZSBzZXJ2ZXIgcmV2aXNpb24u
CisgICAgICAgICAtIEFkZCB0ZXN0cyBmb3Igc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQu
CisgICAgICAgICAtIEFkZCBhIHNpbXBsZSB0ZXN0IGZvciBhcHBseV9yZXZlcnNlX2RpZmYuCisg
ICAgICAgICAtIEFkZCBhIG5ldyBzZWxmLnNjbSBtZW1iZXIgYW5kIHVzZSBpdCBpbiB0aGUgbmV3
IHRlc3RzIChldmVudHVhbGx5IG90aGVyIHRlc3RzIGNhbiB1c2UgaXQgdG9vKS4KKyAgICAgICAg
IC0gQWRkIHRlc3QgZm9yIHN2bl9jb21taXRfbG9nIHRvIG1ha2Ugc3VyZSBteSAnQkFTRScgY2hh
bmdlIGFib3ZlIHdvcmtlZCBhcyBleHBlY3RlZC4KKwogMjAwOS0wOS0xMCAgTWFydGluIFJvYmlu
c29uICA8bWFydGluLmphbWVzLnJvYmluc29uQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBF
dmVudFNlbmRlciBkb2VzIG5vdCBwcm9wZXJseSBjb252ZXJ0IHNvbWUga2V5RG93biBzdHJpbmdz
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wgYi9XZWJLaXRU
b29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKaW5kZXggNjExOTI0My4uY2IzZTY5NyAxMDA3NTUK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvYnVnemlsbGEtdG9vbApAQCAtNTksMTQgKzU5LDYgQEAgZGVmIHBsdXJhbGl6ZShu
b3VuLCBjb3VudCk6CiAgICAgICAgIG5vdW4gPSBwbHVyYWwobm91bikKICAgICByZXR1cm4gIiVk
ICVzIiAlIChjb3VudCwgbm91bikKIAotZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2NtKToKLSAg
ICBjaGFuZ2Vsb2dfcGF0aHMgPSBbXQotICAgIHBhdGhzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQot
ICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgp
ID09ICJDaGFuZ2VMb2ciOgotICAgICAgICAgICAgY2hhbmdlbG9nX3BhdGhzLmFwcGVuZChwYXRo
KQotICAgIHJldHVybiBjaGFuZ2Vsb2dfcGF0aHMKLQogZGVmIHBhcnNlX2J1Z19pZChtZXNzYWdl
KToKICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiaHR0cFw6Ly93ZWJraXRcLm9yZy9iLyg/UDxidWdf
aWQ+XGQrKSIsIG1lc3NhZ2UpCiAgICAgaWYgbWF0Y2g6CkBAIC03Niw4ICs2OCw4IEBAIGRlZiBw
YXJzZV9idWdfaWQobWVzc2FnZSk6CiAgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgnYnVnX2lk
JykKICAgICByZXR1cm4gTm9uZQogCi1kZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0
KHNjbSk6Ci0gICAgY2hhbmdlbG9nX3BhdGhzID0gbW9kaWZpZWRfY2hhbmdlbG9ncyhzY20pCitk
ZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KCk6CisgICAgY2hhbmdlbG9nX3BhdGhz
ID0gc2NtLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQogICAgIGlmIG5vdCBsZW4oY2hhbmdlbG9nX3Bh
dGhzKToKICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoIkZvdW5kIG5vIG1vZGlmaWVkIENoYW5n
ZUxvZ3MsIGNhbm5vdCBjcmVhdGUgYSBjb21taXQgbWVzc2FnZS5cbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkFsbCBjaGFuZ2VzIHJlcXVpcmUgYSBDaGFuZ2VMb2cuICBTZWU6XG4iCkBA
IC0xODYsOCArMTc4LDcgQEAgZGVmIGJ1Z19jb21tZW50X2Zyb21fc3ZuX3JldmlzaW9uKHN2bl9y
ZXZpc2lvbik6CiAgICAgcmV0dXJuICJDb21taXR0ZWQgciVzOiA8JXM+IiAlIChzdm5fcmV2aXNp
b24sIHZpZXdfc291cmNlX3VybChzdm5fcmV2aXNpb24pKQogCiBkZWYgYnVnX2NvbW1lbnRfZnJv
bV9jb21taXRfdGV4dChzY20sIGNvbW1pdF90ZXh0KToKLSAgICBtYXRjaCA9IHJlLnNlYXJjaChz
Y20uY29tbWl0X3N1Y2Nlc3NfcmVnZXhwKCksIGNvbW1pdF90ZXh0LCByZS5NVUxUSUxJTkUpCi0g
ICAgc3ZuX3JldmlzaW9uID0gbWF0Y2guZ3JvdXAoJ3N2bl9yZXZpc2lvbicpCisgICAgc3ZuX3Jl
dmlzaW9uID0gc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KQog
ICAgIHJldHVybiBidWdfY29tbWVudF9mcm9tX3N2bl9yZXZpc2lvbihzdm5fcmV2aXNpb24pCiAK
IApAQCAtMzAyLDggKzI5Myw3IEBAIGNsYXNzIExhbmRBbmRVcGRhdGVCdWcoQ29tbWFuZCk6CiAg
ICAgICAgICAgICBsb2coIkZhaWxlZCB0byBndWVzcyByZXZpZXdlciBmcm9tIGJ1ZyAlcyBhbmQg
LS1yZXZpZXdlcj0gbm90IHByb3ZpZGVkLiAgTm90IHVwZGF0aW5nIENoYW5nZUxvZ3Mgd2l0aCBy
ZXZpZXdlci4iICUgYnVnX2lkKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgY2hhbmdl
bG9ncyA9IG1vZGlmaWVkX2NoYW5nZWxvZ3ModG9vbC5zY20oKSkKLSAgICAgICAgZm9yIGNoYW5n
ZWxvZ19wYXRoIGluIGNoYW5nZWxvZ3M6CisgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiB0
b29sLnNjbSgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKToKICAgICAgICAgICAgIENoYW5nZUxvZyhj
aGFuZ2Vsb2dfcGF0aCkuc2V0X3Jldmlld2VyKHJldmlld2VyKQogCiAgICAgZGVmIGV4ZWN1dGUo
c2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CkBAIC01NDIsNiArNTMyLDYzIEBAIGNsYXNzIFBv
c3RDb21taXRzQXNQYXRjaGVzVG9CdWcoQ29tbWFuZCk6CiAgICAgICAgICAgICB0b29sLmJ1Z3Mu
YWRkX3BhdGNoX3RvX2J1ZyhidWdfaWQsIGRpZmZfZmlsZSwgZGVzY3JpcHRpb24sIGNvbW1lbnRf
dGV4dCwgbWFya19mb3JfcmV2aWV3PW9wdGlvbnMucmV2aWV3KQogCiAKK2NsYXNzIFJvbGxvdXRD
b21taXQoQ29tbWFuZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBvcHRpb25z
ID0gV2ViS2l0TGFuZGluZ1NjcmlwdHMubGFuZF9vcHRpb25zKCkKKyAgICAgICAgb3B0aW9ucyAr
PSBXZWJLaXRMYW5kaW5nU2NyaXB0cy5jbGVhbmluZ19vcHRpb25zKCkKKyAgICAgICAgb3B0aW9u
cy5hcHBlbmQobWFrZV9vcHRpb24oIi0tY29tcGxldGUtcm9sbG91dCIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsIGRlc3Q9ImNvbXBsZXRlX3JvbGxvdXQiLCBoZWxwPSJFeHBlcmltZW50YWwgc3VwcG9y
dCBmb3IgY29tcGxldGUgdW5zdXBlcnZpc2VkIHJvbGxvdXRzLCBpbmNsdWRpbmcgcmUtb3Blbmlu
ZyB0aGUgYnVnLiAgTm90IHJlY29tbWVuZGVkLiIpKQorICAgICAgICBDb21tYW5kLl9faW5pdF9f
KHNlbGYsICdSZXZlcnRzIHRoZSBnaXZlbiByZXZpc2lvbiBhbmQgY29tbWl0cyB0aGUgcmV2ZXJ0
IGFuZCByZS1vcGVucyB0aGUgb3JpZ2luYWwgYnVnLicsICdSRVZJU0lPTiBbQlVHSURdJywgb3B0
aW9ucz1vcHRpb25zKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfY3JlYXRlX2NoYW5n
ZWxvZ3NfZm9yX3JldmVydChzY20sIHJldmlzaW9uKToKKyAgICAgICAgIyBGaXJzdCwgZGlzY2Fy
ZCB0aGUgQ2hhbmdlTG9nIGNoYW5nZXMgZnJvbSB0aGUgcm9sbG91dC4KKyAgICAgICAgY2hhbmdl
bG9nX3BhdGhzID0gc2NtLm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQorICAgICAgICBzY20ucmV2ZXJ0
X2ZpbGVzKGNoYW5nZWxvZ19wYXRocykKKworICAgICAgICAjIFNlY29uZCwgbWFrZSBuZXcgQ2hh
bmdlTG9nIGVudHJpZXMgZm9yIHRoaXMgcm9sbG91dC4KKyAgICAgICAgIyBUaGlzIGNvdWxkIG1v
dmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5nIGEgLS1yZXZlcnQ9IG9wdGlvbi4KKyAg
ICAgICAgV2ViS2l0TGFuZGluZ1NjcmlwdHMucnVuX3dlYmtpdF9zY3JpcHQoInByZXBhcmUtQ2hh
bmdlTG9nIikKKyAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIGNoYW5nZWxvZ19wYXRoczoK
KyAgICAgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkudXBkYXRlX2Zvcl9yZXZlcnQo
cmV2aXNpb24pCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9wYXJzZV9idWdfaWRfZnJv
bV9yZXZpc2lvbl9kaWZmKHRvb2wsIHJldmlzaW9uKToKKyAgICAgICAgb3JpZ2luYWxfZGlmZiA9
IHRvb2wuc2NtKCkuZGlmZl9mb3JfcmV2aXNpb24ocmV2aXNpb24pCisgICAgICAgIHJldHVybiBw
YXJzZV9idWdfaWQob3JpZ2luYWxfZGlmZikKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
X3Jlb3Blbl9idWdfYWZ0ZXJfcm9sbG91dCh0b29sLCBidWdfaWQsIGNvbW1lbnRfdGV4dCk6Cisg
ICAgICAgIGlmIGJ1Z19pZDoKKyAgICAgICAgICAgIHRvb2wuYnVncy5yZW9wZW5fYnVnKGJ1Z19p
ZCwgY29tbWVudF90ZXh0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nKGNvbW1lbnRf
dGV4dCkKKyAgICAgICAgICAgIGxvZygiTm8gYnVncyB3ZXJlIHVwZGF0ZWQgb3IgcmUtb3BlbmVk
IHRvIHJlZmxlY3QgdGhpcyByb2xsb3V0LiIpCisKKyAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRp
b25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgaWYgbm90IGFyZ3M6CisgICAgICAgICAgICBlcnJv
cigiUkVWSVNJT04gaXMgcmVxdWlyZWQsIHNlZSAtLWhlbHAuIikKKyAgICAgICAgcmV2aXNpb24g
PSBhcmdzWzBdCisgICAgICAgIGJ1Z19pZCA9IHNlbGYuX3BhcnNlX2J1Z19pZF9mcm9tX3Jldmlz
aW9uX2RpZmYodG9vbCwgcmV2aXNpb24pCisgICAgICAgIGlmIG9wdGlvbnMuY29tcGxldGVfcm9s
bG91dDoKKyAgICAgICAgICAgIGlmIGJ1Z19pZDoKKyAgICAgICAgICAgICAgICBsb2coIldpbGwg
cmUtb3BlbiBidWcgJXMgYWZ0ZXIgcm9sbG91dC4iICUgYnVnX2lkKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBsb2coIkZhaWxlZCB0byBwYXJzZSBidWcgbnVtYmVyIGZyb20g
ZGlmZi4gIE5vIGJ1Z3Mgd2lsbCBiZSB1cGRhdGVkL3Jlb3BlbmVkIGFmdGVyIHRoZSByb2xsb3V0
LiIpCisKKyAgICAgICAgV2ViS2l0TGFuZGluZ1NjcmlwdHMuc2V0dXBfZm9yX2xhbmRpbmcodG9v
bC5zY20oKSwgb3B0aW9ucykKKyAgICAgICAgdG9vbC5zY20oKS51cGRhdGVfd2Via2l0KCkKKyAg
ICAgICAgdG9vbC5zY20oKS5hcHBseV9yZXZlcnNlX2RpZmYocmV2aXNpb24pCisgICAgICAgIHNl
bGYuX2NyZWF0ZV9jaGFuZ2Vsb2dzX2Zvcl9yZXZlcnQodG9vbC5zY20oKSwgcmV2aXNpb24pCisK
KyAgICAgICAgIyBGSVhNRTogRnVsbHkgYXV0b21hdGVkIHJvbGxvdXQgaXMgbm90IDEwMCUgaWRp
b3QtcHJvb2YgeWV0LCBzbyBmb3Igbm93IGp1c3QgbG9nIHdpdGggaW5zdHJ1Y3Rpb25zIG9uIGhv
dyB0byBjb21wbGV0ZSB0aGUgcm9sbG91dC4KKyAgICAgICAgIyBPbmNlIHdlIHRydXN0IHJvbGxv
dXQgd2Ugd2lsbCByZW1vdmUgdGhpcyBvcHRpb24uCisgICAgICAgIGlmIG5vdCBvcHRpb25zLmNv
bXBsZXRlX3JvbGxvdXQ6CisgICAgICAgICAgICBsb2coIlxuTk9URTogUm9sbG91dCBzdXBwb3J0
IGlzIGV4cGVyaW1lbnRhbC5cblBsZWFzZSB2ZXJpZnkgdGhlIHJvbGxvdXQgZGlmZiBhbmQgdXNl
ICdidWd6aWxsYS10b29sIGxhbmQtZGlmZiAlcycgdG8gY29tbWl0IHRoZSByb2xsb3V0LiIgJSBi
dWdfaWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21tZW50X3RleHQgPSBXZWJLaXRM
YW5kaW5nU2NyaXB0cy5idWlsZF9hbmRfY29tbWl0KHRvb2wuc2NtKCksIG9wdGlvbnMpCisgICAg
ICAgICAgICBzZWxmLl9yZW9wZW5fYnVnX2FmdGVyX3JvbGxvdXQodG9vbCwgYnVnX2lkLCBjb21t
ZW50X3RleHQpCisKKwogY2xhc3MgQ3JlYXRlQnVnKENvbW1hbmQpOgogICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IFsKQEAgLTc2Nyw2ICs4MTQsNyBAQCBjbGFzcyBC
dWd6aWxsYVRvb2w6CiAgICAgICAgICAgICB7ICduYW1lJyA6ICdwb3N0LWNvbW1pdHMnLCAnb2Jq
ZWN0JyA6IFBvc3RDb21taXRzQXNQYXRjaGVzVG9CdWcoKSB9LAogICAgICAgICAgICAgeyAnbmFt
ZScgOiAndHJlZS1zdGF0dXMnLCAnb2JqZWN0JyA6IENoZWNrVHJlZVN0YXR1cygpIH0sCiAgICAg
ICAgICAgICB7ICduYW1lJyA6ICdjb21taXQtcXVldWUnLCAnb2JqZWN0JyA6IExhbmRQYXRjaGVz
RnJvbUNvbW1pdFF1ZXVlKCkgfSwKKyAgICAgICAgICAgIHsgJ25hbWUnIDogJ3JvbGxvdXQnLCAn
b2JqZWN0JyA6IFJvbGxvdXRDb21taXQoKSB9LAogICAgICAgICBdCiAKICAgICAgICAgc2VsZi5n
bG9iYWxfb3B0aW9uX3BhcnNlciA9IEhlbHBQcmludGluZ09wdGlvblBhcnNlcih1c2FnZT1zZWxm
LnVzYWdlX2xpbmUoKSwgZm9ybWF0dGVyPU5vbldyYXBwaW5nRXBpbG9nSW5kZW50ZWRIZWxwRm9y
bWF0dGVyKCksIGVwaWxvZz1zZWxmLmNvbW1hbmRzX3VzYWdlKCkpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvYnVnemlsbGEucHkKaW5kZXggODFlMzU0Ny4uNjJiZTc5OSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQpAQCAtNDU0LDMgKzQ1NCwxNyBAQCBjbGFzcyBC
dWd6aWxsYToKICAgICAgICAgc2VsZi5icm93c2VyWydidWdfc3RhdHVzJ10gPSBbJ1JFU09MVkVE
J10KICAgICAgICAgc2VsZi5icm93c2VyWydyZXNvbHV0aW9uJ10gPSBbJ0ZJWEVEJ10KICAgICAg
ICAgc2VsZi5icm93c2VyLnN1Ym1pdCgpCisKKyAgICBkZWYgcmVvcGVuX2J1ZyhzZWxmLCBidWdf
aWQsIGNvbW1lbnRfdGV4dCk6CisgICAgICAgIHNlbGYuYXV0aGVudGljYXRlKCkKKworICAgICAg
ICBsb2coIlJlLW9wZW5pbmcgYnVnICVzIiAlIGJ1Z19pZCkKKyAgICAgICAgbG9nKGNvbW1lbnRf
dGV4dCkgIyBCdWd6aWxsYSByZXF1aXJlcyBhIGNvbW1lbnQgd2hlbiByZS1vcGVuaW5nIGEgYnVn
LCBzbyB3ZSBrbm93IGl0IHdpbGwgbmV2ZXIgYmUgTm9uZS4KKyAgICAgICAgaWYgc2VsZi5kcnly
dW46CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLmJyb3dzZXIub3BlbihzZWxm
LmJ1Z191cmxfZm9yX2J1Z19pZChidWdfaWQpKQorICAgICAgICBzZWxmLmJyb3dzZXIuc2VsZWN0
X2Zvcm0obmFtZT0iY2hhbmdlZm9ybSIpCisgICAgICAgIHNlbGYuYnJvd3NlclsnYnVnX3N0YXR1
cyddID0gWydSRU9QRU5FRCddCisgICAgICAgIHNlbGYuYnJvd3NlclsnY29tbWVudCddID0gY29t
bWVudF90ZXh0CisgICAgICAgIHNlbGYuYnJvd3Nlci5zdWJtaXQoKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9zY20ucHkKaW5kZXggNDYwNjhlNy4uMTgyOTE2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvc2NtLnB5CkBAIC0xNTMsNiArMTUzLDE5IEBAIGNsYXNzIFNDTToKICAgICAgICAgICAgIHJl
dHVybiBtYXRjaC5ncm91cCgnc3ZuX3JldmlzaW9uJykKICAgICAgICAgcmV0dXJuIHN2bl9yZXZp
c2lvbgogCisgICAgZGVmIHN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KHNlbGYsIGNvbW1p
dF90ZXh0KToKKyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goc2VsZi5jb21taXRfc3VjY2Vzc19y
ZWdleHAoKSwgY29tbWl0X3RleHQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgcmV0dXJuIG1hdGNo
Lmdyb3VwKCdzdm5fcmV2aXNpb24nKQorCisgICAgIyBDaGFuZ2VMb2ctc3BlY2lmaWMgY29kZSBk
b2Vzbid0IHJlYWxseSBiZWxvbmcgaW4gc2NtLnB5LCBidXQgdGhpcyBmdW5jdGlvbiBpcyB2ZXJ5
IHVzZWZ1bC4KKyAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKKyAgICAgICAgY2hh
bmdlbG9nX3BhdGhzID0gW10KKyAgICAgICAgcGF0aHMgPSBzZWxmLmNoYW5nZWRfZmlsZXMoKQor
ICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5h
bWUocGF0aCkgPT0gIkNoYW5nZUxvZyI6CisgICAgICAgICAgICAgICAgY2hhbmdlbG9nX3BhdGhz
LmFwcGVuZChwYXRoKQorICAgICAgICByZXR1cm4gY2hhbmdlbG9nX3BhdGhzCisKICAgICBAc3Rh
dGljbWV0aG9kCiAgICAgZGVmIGluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKQEAg
LTE4Niw2ICsxOTksMTUgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6
CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1w
bGVtZW50IgogCisgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1l
bnQiCisKKyAgICBkZWYgYXBwbHlfcmV2ZXJzZV9kaWZmKHNlbGYsIHJldmlzaW9uKToKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQi
CisKKyAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgorICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKwogICAg
IGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIApAQCAtMjI2
LDE2ICsyNDgsMjAgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgZGVmIGluX3dvcmtpbmdfZGlyZWN0
b3J5KHBhdGgpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocGF0
aCwgJy5zdm4nKSkKICAgICAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGZpbmRfdXVpZChw
YXRoKToKLSAgICAgICAgaWYgbm90IFNWTi5pbl93b3JraW5nX2RpcmVjdG9yeShwYXRoKToKKyAg
ICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF91dWlkKGNscywgcGF0aCk6CisgICAgICAgIGlm
IG5vdCBjbHMuaW5fd29ya2luZ19kaXJlY3RvcnkocGF0aCk6CiAgICAgICAgICAgICByZXR1cm4g
Tm9uZQotICAgICAgICBpbmZvID0gU1ZOLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2luZm8nLCBwYXRo
XSkKLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIl5SZXBvc2l0b3J5IFVVSUQ6ICg/UDx1dWlk
Pi4rKSQiLCBpbmZvLCByZS5NVUxUSUxJTkUpCisgICAgICAgIHJldHVybiBjbHMudmFsdWVfZnJv
bV9zdm5faW5mbyhwYXRoLCAnUmVwb3NpdG9yeSBVVUlEJykKKworICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiB2YWx1ZV9mcm9tX3N2bl9pbmZvKGNscywgcGF0aCwgZmllbGRfbmFtZSk6CisgICAg
ICAgIGluZm9fb3V0cHV0ID0gY2xzLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2luZm8nLCBwYXRoXSkK
KyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIl4lczogKD9QPHZhbHVlPi4rKSQiICUgZmllbGRf
bmFtZSwgaW5mb19vdXRwdXQsIHJlLk1VTFRJTElORSkKICAgICAgICAgaWYgbm90IG1hdGNoOgot
ICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ3N2biBpbmZvIGRpZCBub3QgY29udGFpbiBh
IFVVSUQuJykKLSAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCd1dWlkJykKLSAgICAKKyAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCdzdm4gaW5mbyBkaWQgbm90IGNvbnRhaW4gYSAlcy4n
ICUgZmllbGRfbmFtZSkKKyAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCd2YWx1ZScpCisKICAg
ICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGZpbmRfY2hlY2tvdXRfcm9vdChwYXRoKToKICAgICAg
ICAgdXVpZCA9IFNWTi5maW5kX3V1aWQocGF0aCkKQEAgLTI1MSw3ICsyNzcsNyBAQCBjbGFzcyBT
Vk4oU0NNKToKICAgICAgICAgICAgIChwYXRoLCBsYXN0X2NvbXBvbmVudCkgPSBvcy5wYXRoLnNw
bGl0KHBhdGgpCiAgICAgICAgICAgICBpZiBsYXN0X3BhdGggPT0gcGF0aDoKICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgIAorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBjb21t
aXRfc3VjY2Vzc19yZWdleHAoKToKICAgICAgICAgcmV0dXJuICJeQ29tbWl0dGVkIHJldmlzaW9u
ICg/UDxzdm5fcmV2aXNpb24+XGQrKVwuJCIKQEAgLTI5MSwzMCArMzE3LDMzIEBAIGNsYXNzIFNW
TihTQ00pOgogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxm
LnJ1bl9jb21tYW5kKHNlbGYuc2NyaXB0X3BhdGgoInN2bi1jcmVhdGUtcGF0Y2giKSwgY3dkPXNl
bGYuY2hlY2tvdXRfcm9vdCkKIAorICAgIGRlZiBkaWZmX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZp
c2lvbik6CisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnZGlmZicsICctYycsIHJl
dmlzaW9uXSkKKworICAgIGRlZiBfcmVwb3NpdG9yeV91cmwoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLnZhbHVlX2Zyb21fc3ZuX2luZm8oc2VsZi5jaGVja291dF9yb290LCAnVVJMJykKKwor
ICAgIGRlZiBhcHBseV9yZXZlcnNlX2RpZmYoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICAjICct
YyAtcmV2aXNpb24nIGFwcGxpZXMgdGhlIGludmVyc2UgZGlmZiBvZiAncmV2aXNpb24nCisgICAg
ICAgIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbWVyZ2UnLCAnLS1ub24taW50ZXJhY3RpdmUn
LCAnLWMnLCAnLSVzJyAlIHJldmlzaW9uLCBzZWxmLl9yZXBvc2l0b3J5X3VybCgpXSkKKworICAg
IGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CisgICAgICAgIHNlbGYucnVuX2Nv
bW1hbmQoWydzdm4nLCAncmV2ZXJ0J10gKyBmaWxlX3BhdGhzKQorCiAgICAgZGVmIGNvbW1pdF93
aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgotICAg
ICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0LiIKKyAgICAgICAgICAg
ICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGlu
Z3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgorICAgICAgICAgICAgcmV0
dXJuICJEcnkgcnVuLCBubyBjb21taXQuXG5Db21taXR0ZWQgcmV2aXNpb24gMC4iCiAgICAgICAg
IHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2NvbW1pdCcsICctbScsIG1lc3NhZ2Vd
KQogCiAgICAgZGVmIHN2bl9jb21taXRfbG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6Ci0gICAgICAg
IHN2bl9yZXZpc2lvbiA9IHNlbGYuc3RyaXBfcl9mcm9tX3N2bl9yZXZpc2lvbihzdm5fcmV2aXNp
b24pCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2xvZycsICctLW5v
bi1pbnRlcmFjdGl2ZScsICctcicsIHN2bl9yZXZpc2lvbl0pOworICAgICAgICBzdm5fcmV2aXNp
b24gPSBzZWxmLnN0cmlwX3JfZnJvbV9zdm5fcmV2aXNpb24oc3RyKHN2bl9yZXZpc2lvbikpCisg
ICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2xvZycsICctLW5vbi1pbnRl
cmFjdGl2ZScsICctLXJldmlzaW9uJywgc3ZuX3JldmlzaW9uXSk7CiAKICAgICBkZWYgbGFzdF9z
dm5fY29tbWl0X2xvZyhzZWxmKToKLSAgICAgICAgc3ZuX3JldmlzaW9uID0gTm9uZQotICAgICAg
ICBvdXRwdXQgPSBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZudmVyc2lvbicsICctYyddKQotCi0gICAg
ICAgIGlmIHJlLm1hdGNoKCJeXGQrIiwgb3V0cHV0KToKLSAgICAgICAgICAgIHN2bl9yZXZpc2lv
biA9IG91dHB1dAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgi
XihcZCspOig/UDxsYXN0X3N2bl9yZXZpc2lvbj5cZCspIiwgb3V0cHV0KQotICAgICAgICAgICAg
aWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgc3ZuX3JldmlzaW9uID0gbWF0Y2guZ3JvdXAoJ2xh
c3Rfc3ZuX3JldmlzaW9uJykKLQotICAgICAgICBpZiBub3Qgc3ZuX3JldmlzaW9uOgotICAgICAg
ICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGxhc3QgcmV2aXNpb24gY29t
bWl0dGVkIHRvIHN2biB3b3JraW5nIGRpcmVjdG9yeS4nKQotCi0gICAgICAgIHJldHVybiBzZWxm
LnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2xvZycsICctLW5vbi1pbnRlcmFjdGl2ZScsICctcicsIHN2
bl9yZXZpc2lvbl0pCisgICAgICAgICMgQkFTRSBpcyB0aGUgY2hlY2tvdXQgcmV2aXNpb24sIEhF
QUQgaXMgdGhlIHJlbW90ZSByZXBvc2l0b3J5IHJldmlzaW9uCisgICAgICAgICMgaHR0cDovL3N2
bmJvb2sucmVkLWJlYW4uY29tL2VuLzEuMC9jaDAzczAzLmh0bWwKKyAgICAgICAgcmV0dXJuIHNl
bGYuc3ZuX2NvbW1pdF9sb2coJ0JBU0UnKQogCiAjIEFsbCBnaXQtc3BlY2lmaWMgbG9naWMgc2hv
dWxkIGdvIGhlcmUuCiBjbGFzcyBHaXQoU0NNKToKQEAgLTM4MCw2ICs0MDksMzMgQEAgY2xhc3Mg
R2l0KFNDTSk6CiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAgcmV0dXJuIHNl
bGYucnVuX2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICdIRUFEJ10pCiAKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihjbHMsIHJldmlzaW9uKToK
KyAgICAgICAgIyBnaXQgc3ZuIGZpbmQtcmV2IGFsd2F5cyBleGl0cyAwLCBldmVuIHdoZW4gdGhl
IHJldmlzaW9uIGlzIG5vdCBmb3VuZC4KKyAgICAgICAgcmV0dXJuIGNscy5ydW5fY29tbWFuZChb
J2dpdCcsICdzdm4nLCAnZmluZC1yZXYnLCAnciVzJyAlIHJldmlzaW9uXSkKKworICAgIGRlZiBk
aWZmX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CisgICAgICAgIGdpdF9jb21taXQgPSBz
ZWxmLmdpdF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24ocmV2aXNpb24pCisgICAgICAgIHJldHVy
biBzZWxmLmNyZWF0ZV9wYXRjaF9mcm9tX2xvY2FsX2NvbW1pdChnaXRfY29tbWl0KQorCisgICAg
ZGVmIGFwcGx5X3JldmVyc2VfZGlmZihzZWxmLCByZXZpc2lvbik6CisgICAgICAgICMgQXNzdW1l
IHRoZSByZXZpc2lvbiBpcyBhbiBzdm4gcmV2aXNpb24uCisgICAgICAgIGdpdF9jb21taXQgPSBz
ZWxmLmdpdF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24ocmV2aXNpb24pCisgICAgICAgIGlmIG5v
dCBnaXRfY29tbWl0OgorICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoJ0ZhaWxlZCB0byBm
aW5kIGdpdCBjb21taXQgZm9yIHJldmlzaW9uICVzLCBnaXQgc3ZuIGxvZyBvdXRwdXQ6ICIlcyIn
ICUgKHJldmlzaW9uLCBnaXRfY29tbWl0KSkKKworICAgICAgICAjIEkgdGhpbmsgdGhpcyB3aWxs
IGFsd2F5cyBmYWlsIGR1ZSB0byBDaGFuZ2VMb2dzLgorICAgICAgICAjIEZJWE1FOiBXZSBuZWVk
IHRvIGRldGVjIHNwZWNpZmljIGZhaWx1cmUgY29uZGl0aW9ucyBhbmQgaGFuZGxlIHRoZW0uCisg
ICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAncmV2ZXJ0JywgJy0tbm8tY29tbWl0Jywg
Z2l0X2NvbW1pdF0sIHJhaXNlX29uX2ZhaWx1cmU9RmFsc2UpCisKKyAgICAgICAgIyBGaXggYW55
IENoYW5nZUxvZ3MgaWYgbmVjZXNzYXJ5LgorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxm
Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoKQorICAgICAgICBpZiBsZW4oY2hhbmdlbG9nX3BhdGhzKToK
KyAgICAgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoW3NlbGYuc2NyaXB0X3BhdGgoJ3Jlc29sdmUt
Q2hhbmdlTG9ncycpXSArIGNoYW5nZWxvZ19wYXRocykKKworICAgIGRlZiByZXZlcnRfZmlsZXMo
c2VsZiwgZmlsZV9wYXRocyk6CisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnY2hl
Y2tvdXQnLCAnSEVBRCddICsgZmlsZV9wYXRocykKKwogICAgIGRlZiBjb21taXRfd2l0aF9tZXNz
YWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVz
c2FnZShtZXNzYWdlKQogICAgICAgICByZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9f
c2VydmVyKCkKQEAgLTQwNCw3ICs0NjAsOCBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgCiAg
ICAgZGVmIHB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIGlmIHNl
bGYuZHJ5cnVuOgotICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0
LiIKKyAgICAgICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21t
aXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgor
ICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyByZW1vdGUgY29tbWl0LlxuQ29tbWl0dGVk
IHIwIgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnZGNv
bW1pdCddKQogCiAgICAgIyBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXJn
dW1lbnQgZm9ybWF0czoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9z
Y21fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0
LnB5CmluZGV4IDE5N2YwNTUuLjBhZGU5YWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9zY21fdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL3NjbV91bml0dGVzdC5weQpAQCAtMjgsNiArMjgsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBp
bXBvcnQgb3MKK2ltcG9ydCByZQogaW1wb3J0IHN0YXQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBv
cnQgdGVtcGZpbGUKQEAgLTU0LDYgKzU1LDEyIEBAIGRlZiB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0
aChmaWxlX3BhdGgsIGNvbnRlbnRzKToKICAgICBmaWxlLndyaXRlKGNvbnRlbnRzKQogICAgIGZp
bGUuY2xvc2UoKQogCitkZWYgcmVhZF9mcm9tX3BhdGgoZmlsZV9wYXRoKToKKyAgICBmaWxlID0g
b3BlbihmaWxlX3BhdGgsICdyJykKKyAgICBjb250ZW50cyA9IGZpbGUucmVhZCgpCisgICAgZmls
ZS5jbG9zZSgpCisgICAgcmV0dXJuIGNvbnRlbnRzCisKICMgRXhpc3RzIHRvIHNoYXJlIHN2biBy
ZXBvc2l0b3J5IGNyZWF0aW9uIGNvZGUgYmV0d2VlbiB0aGUgZ2l0IGFuZCBzdm4gdGVzdHMKIGNs
YXNzIFNWTlRlc3RSZXBvc2l0b3J5OgogICAgIEBzdGF0aWNtZXRob2QKQEAgLTcyLDE2ICs3OSwx
OSBAQCBjbGFzcyBTVk5UZXN0UmVwb3NpdG9yeToKICAgICAgICAgCiAgICAgICAgIHJ1bihbJ3N2
bicsICdjb21taXQnLCAnLS1xdWlldCcsICctLW1lc3NhZ2UnLCAnc2Vjb25kIGNvbW1pdCddKQog
ICAgICAgICAKLSAgICAgICAgdGVzdF9maWxlLndyaXRlKCJ0ZXN0MyIpCisgICAgICAgIHRlc3Rf
ZmlsZS53cml0ZSgidGVzdDNcbiIpCiAgICAgICAgIHRlc3RfZmlsZS5mbHVzaCgpCiAgICAgICAg
IAogICAgICAgICBydW4oWydzdm4nLCAnY29tbWl0JywgJy0tcXVpZXQnLCAnLS1tZXNzYWdlJywg
J3RoaXJkIGNvbW1pdCddKQogCi0gICAgICAgIHRlc3RfZmlsZS53cml0ZSgidGVzdDQiKQorICAg
ICAgICB0ZXN0X2ZpbGUud3JpdGUoInRlc3Q0XG4iKQogICAgICAgICB0ZXN0X2ZpbGUuY2xvc2Uo
KQotICAgICAgICAKKwogICAgICAgICBydW4oWydzdm4nLCAnY29tbWl0JywgJy0tcXVpZXQnLCAn
LS1tZXNzYWdlJywgJ2ZvdXJ0aCBjb21taXQnXSkKIAorICAgICAgICAjIHN2biBkb2VzIG5vdCBz
ZWVtIHRvIHVwZGF0ZSBhZnRlciBjb21taXQgYXMgSSB3b3VsZCBleHBlY3QuCisgICAgICAgIHJ1
bihbJ3N2bicsICd1cGRhdGUnXSkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXR1cChj
bHMsIHRlc3Rfb2JqZWN0KToKICAgICAgICAgdGVzdF9vYmplY3Qub3JpZ2luYWxfcGF0aCA9IG9z
LnBhdGguYWJzcGF0aCgnLicpCkBAIC0xMjIsMTIgKzEzMiwzMSBAQCBjbGFzcyBTQ01UZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5kaXJuYW1lKGxvY2Fs
X3NjcmlwdHNfZGlyZWN0b3J5KSkKICAgICAgICAgb3Muc3ltbGluayh3ZWJraXRfc2NyaXB0c19k
aXJlY3RvcnksIGxvY2FsX3NjcmlwdHNfZGlyZWN0b3J5KQogCisgICAgIyBUZXN0cyB3aGljaCBi
b3RoIEdpdFRlc3QgYW5kIFNWTlRlc3Qgc2hvdWxkIHJ1bi4KKyAgICAjIEZJWE1FOiBUaGVyZSBt
dXN0IGJlIGEgc2ltcGxlciB3YXkgdG8gYWRkIHRoZXNlIHcvbyBhZGRpbmcgYSB3cmFwcGVyIG1l
dGhvZCB0byBib3RoIHN1YmNsYXNzZXMKKyAgICBkZWYgX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRo
X21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2Zp
bGUnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2Nt
LmNvbW1pdF93aXRoX21lc3NhZ2UoJ2Fub3RoZXIgdGVzdCBjb21taXQnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1p
dF90ZXh0KSwgJzUnKQorCisgICAgICAgIHNlbGYuc2NtLmRyeXJ1biA9IFRydWUKKyAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdzdGlsbCBtb3JlIHRlc3QgY29u
dGVudCcpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2Fn
ZSgneWV0IGFub3RoZXIgdGVzdCBjb21taXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzAnKQor
CisgICAgZGVmIF9zaGFyZWRfdGVzdF9yZXZlcnNlX2RpZmYoc2VsZik6CisgICAgICAgIHNlbGYu
X3NldHVwX3dlYmtpdHRvb2xzX3NjcmlwdHNfc3ltbGluayhzZWxmLnNjbSkgIyBHaXQncyBhcHBs
eV9yZXZlcnNlX2RpZmYgdXNlcyByZXNvbHZlLUNoYW5nZUxvZ3MKKyAgICAgICAgIyBPbmx5IHRl
c3QgdGhlIHNpbXBsZSBjYXNlLCBhcyBhbnkgb3RoZXIgd2lsbCBlbmQgdXAgd2l0aCBjb25mbGlj
dCBtYXJrZXJzLgorICAgICAgICBzZWxmLnNjbS5hcHBseV9yZXZlcnNlX2RpZmYoJzQnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRfZnJvbV9wYXRoKCd0ZXN0X2ZpbGUnKSwgInRlc3Qx
dGVzdDJ0ZXN0M1xuIikKKwogCiBjbGFzcyBTVk5UZXN0KFNDTVRlc3QpOgogCiAgICAgZGVmIHNl
dFVwKHNlbGYpOgogICAgICAgICBTVk5UZXN0UmVwb3NpdG9yeS5zZXR1cChzZWxmKQogICAgICAg
ICBvcy5jaGRpcihzZWxmLnN2bl9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLnNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCiAKICAgICBkZWYgdGVhckRv
d24oc2VsZik6CiAgICAgICAgIFNWTlRlc3RSZXBvc2l0b3J5LnRlYXJfZG93bihzZWxmKQpAQCAt
MTcyLDYgKzIwMSwxOCBAQCBjbGFzcyBTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLl9z
ZXR1cF93ZWJraXR0b29sc19zY3JpcHRzX3N5bWxpbmsoc2NtKQogICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmFwcGx5X3BhdGNoLCBwYXRjaCwgZm9yY2U9VHJ1ZSkK
IAorICAgIGRlZiB0ZXN0X2NvbW1pdF9sb2dzKHNlbGYpOgorICAgICAgICAjIENvbW1pdHMgaGF2
ZSBkYXRlcyBhbmQgdXNlcm5hbWVzIGluIHRoZW0sIHNvIHdlIGNhbid0IGp1c3QgZGlyZWN0IGNv
bXBhcmUuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2goJ2ZvdXJ0aCBjb21taXQn
LCBzZWxmLnNjbS5sYXN0X3N2bl9jb21taXRfbG9nKCkpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUocmUuc2VhcmNoKCdzZWNvbmQgY29tbWl0Jywgc2VsZi5zY20uc3ZuX2NvbW1pdF9sb2coMikp
KQorCisgICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFyc2luZyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSgpCisKKyAgICBkZWYgdGVzdF9yZXZl
cnNlX2RpZmYoc2VsZik6CisgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZigp
CisKKwogY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKIAogICAgIGRlZiBfc2V0dXBfZ2l0X2Nsb25l
X29mX3N2bl9yZXBvc2l0b3J5KHNlbGYpOgpAQCAtMTg2LDYgKzIyNyw3IEBAIGNsYXNzIEdpdFRl
c3QoU0NNVGVzdCk6CiAgICAgICAgIFNWTlRlc3RSZXBvc2l0b3J5LnNldHVwKHNlbGYpCiAgICAg
ICAgIHNlbGYuX3NldHVwX2dpdF9jbG9uZV9vZl9zdm5fcmVwb3NpdG9yeSgpCiAgICAgICAgIG9z
LmNoZGlyKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuc2NtID0gZGV0ZWN0
X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKIAogICAgIGRlZiB0ZWFyRG93bihz
ZWxmKToKICAgICAgICAgU1ZOVGVzdFJlcG9zaXRvcnkudGVhcl9kb3duKHNlbGYpCkBAIC0yNTIs
NiArMjk0LDExIEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuX3NldHVw
X3dlYmtpdHRvb2xzX3NjcmlwdHNfc3ltbGluayhzY20pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFNjcmlwdEVycm9yLCBzY20uYXBwbHlfcGF0Y2gsIHBhdGNoLCBmb3JjZT1UcnVlKQogCisg
ICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFyc2luZyhzZWxmKToKKyAgICAgICAgc2VsZi5fc2hh
cmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSgpCisKKyAgICBkZWYgdGVzdF9yZXZlcnNlX2Rp
ZmYoc2VsZik6CisgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZigpCiAKIGlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigp
</data>

          </attachment>
      

    </bug>

</bugzilla>