<?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>58272</bug_id>
          
          <creation_ts>2011-04-11 14:39:20 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: --results-directory is relative to builddir, not $PWD</short_desc>
          <delta_ts>2011-04-13 10:23:19 -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>PC</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>58290</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>maruel</cc>
    
    <cc>nsylvain</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>383544</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-11 14:39:20 -0700</bug_when>
    <thetext>For reasons that are probably lost in the mists of time, new-run-webkit-tests appears to treat --results-directory as relative to the build directory, not the current working directory. This seems kinda odd to me, but more importantly, is inconsistent with the way old-run-webkit-tests works.

It looks like the chromium bots end up actually using the same location the webkit.org bots use, by using &quot;../../layout-test-results&quot; instead of &quot;layout-test-results&quot;. 

I think it makes sense to change NRWT to match ORWT, but the patches to do so need to be a little hacky to work in coordination with changing the chromium bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383547</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-11 14:40:23 -0700</bug_when>
    <thetext>Marc-Antoine, Nicholas - Can you think of any reason to keep NRWT&apos;s current logic? Currently the chromium bots use a wrapper around NRWT anyway, so they can always pass in whatever logic they need to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383735</commentid>
    <comment_count>2</comment_count>
      <attachid>89137</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-11 18:17:42 -0700</bug_when>
    <thetext>Created attachment 89137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384084</commentid>
    <comment_count>3</comment_count>
      <attachid>89137</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-12 10:02:04 -0700</bug_when>
    <thetext>Comment on attachment 89137
Patch

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

&gt; Tools/ChangeLog:14
&gt; +        This patch includes a hack to treat a value of &apos;..&apos; as special
&gt; +        to keep the Chromium bots from breaking; the hack can be removed
&gt; +        once the bots have been updated.

Is it possible to just have the bots use an absolute dir?

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:575
&gt; +            option_val = getattr(self._options, &apos;results_directory&apos;)

self._options.results_directory seems a bit clearer.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:172
&gt; -        return self._build_path(self.get_option(&apos;results_directory&apos;))
&gt; +        return self._build_path(&apos;layout-test-results&apos;)

Is this the default for ORWT?  I thought it just put results in /tmp/layout-test-results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384088</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-12 10:08:21 -0700</bug_when>
    <thetext>I really like moving the results directory away from /tmp/layout-test-results and making it per-checkout.  But that doesn&apos;t have to be as part of the ORWT-&gt;NRWT conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384098</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-12 10:15:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 89137 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89137&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:14
&gt; &gt; +        This patch includes a hack to treat a value of &apos;..&apos; as special
&gt; &gt; +        to keep the Chromium bots from breaking; the hack can be removed
&gt; &gt; +        once the bots have been updated.
&gt; 
&gt; Is it possible to just have the bots use an absolute dir?
&gt; 

The currently running NRWT code does not support absolute dirs, so even if we changed the bots it wouldn&apos;t work right. More importantly, I think we try to avoid absolute dirs on the bots since the paths have things like the bot name embedded in them.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:575
&gt; &gt; +            option_val = getattr(self._options, &apos;results_directory&apos;)
&gt; 
&gt; self._options.results_directory seems a bit clearer.
&gt; 

It would be, but it won&apos;t work if options.results_directory doesn&apos;t exist (which it doesn&apos;t in some of the unit tests).

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:172
&gt; &gt; -        return self._build_path(self.get_option(&apos;results_directory&apos;))
&gt; &gt; +        return self._build_path(&apos;layout-test-results&apos;)
&gt; 
&gt; Is this the default for ORWT?  I thought it just put results in /tmp/layout-test-results.

ORWT does put things in /tmp. As Eric says, that seems like a misfeature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384099</commentid>
    <comment_count>6</comment_count>
      <attachid>89137</attachid>
    <who name="Marc-Antoine Ruel">maruel</who>
    <bug_when>2011-04-12 10:16:01 -0700</bug_when>
    <thetext>Comment on attachment 89137
Patch

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

&gt;&gt; Tools/ChangeLog:14
&gt;&gt; +        once the bots have been updated.
&gt; 
&gt; Is it possible to just have the bots use an absolute dir?

Maybe it would be the simplest solution?

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:575
&gt;&gt; +            option_val = getattr(self._options, &apos;results_directory&apos;)
&gt; 
&gt; self._options.results_directory seems a bit clearer.

results_directory = self._options.results_directory or self.default_results_directory()

is a one liner. :)

&gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:333
&gt; +        return &apos;/tmp/layout-test-results&apos;

Pardon my ignorance, what blocks from using tempfile.mkdtemp()? I agree with Eric it&apos;s probably out of scope of this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384103</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-12 10:18:26 -0700</bug_when>
    <thetext>ORWT has written layout tests to /tmp/layout-test-results for as long as I can remember... which is at least 6 years now. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384105</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-12 10:19:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/test.py:333
&gt; &gt; +        return &apos;/tmp/layout-test-results&apos;
&gt; 
&gt; Pardon my ignorance, what blocks from using tempfile.mkdtemp()? I agree with Eric it&apos;s probably out of scope of this change.

When run locally on a developer workstation, it&apos;s useful to leave the
results lying around in some easily findable place. At least on the
mac, tempfile.mkdtemp() puts in things in a weirdly named directory
under /var/tmp, so I don&apos;t think this would be a usability improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384164</commentid>
    <comment_count>9</comment_count>
      <attachid>89137</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-12 11:03:28 -0700</bug_when>
    <thetext>Comment on attachment 89137
Patch

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

&gt;&gt;&gt;&gt; Tools/ChangeLog:14
&gt;&gt;&gt;&gt; +        once the bots have been updated.
&gt;&gt;&gt; 
&gt;&gt;&gt; Is it possible to just have the bots use an absolute dir?
&gt;&gt; 
&gt;&gt; The currently running NRWT code does not support absolute dirs, so even if we changed the bots it wouldn&apos;t work right. More importantly, I think we try to avoid absolute dirs on the bots since the paths have things like the bot name embedded in them.
&gt; 
&gt; Maybe it would be the simplest solution?

It&apos;s fine for the code to generate the absolute dir to be in the layout_test_wrapper.py, the script that launches NRWT.  We don&apos;t have to hard code paths into config files.

&gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:575
&gt;&gt;&gt;&gt; +            option_val = getattr(self._options, &apos;results_directory&apos;)
&gt;&gt;&gt; 
&gt;&gt;&gt; self._options.results_directory seems a bit clearer.
&gt;&gt; 
&gt;&gt; It would be, but it won&apos;t work if options.results_directory doesn&apos;t exist (which it doesn&apos;t in some of the unit tests).
&gt; 
&gt; results_directory = self._options.results_directory or self.default_results_directory()
&gt; 
&gt; is a one liner. :)

If it doesn&apos;t exist, won&apos;t getattr also throw an AttributeError?  Did you mean getattr(self._options, &apos;results_directory&apos;, None)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384189</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-12 11:32:27 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 89137 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89137&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Tools/ChangeLog:14
&gt; &gt;&gt;&gt;&gt; +        once the bots have been updated.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Is it possible to just have the bots use an absolute dir?
&gt; &gt;&gt; 
&gt; &gt;&gt; The currently running NRWT code does not support absolute dirs, so even if we changed the bots it wouldn&apos;t work right. More importantly, I think we try to avoid absolute dirs on the bots since the paths have things like the bot name embedded in them.
&gt; &gt; 
&gt; &gt; Maybe it would be the simplest solution?
&gt; 
&gt; It&apos;s fine for the code to generate the absolute dir to be in the layout_test_wrapper.py, the script that launches NRWT.  We don&apos;t have to hard code paths into config files.

Sure, we could do that. Regardless, it won&apos;t work in the current NRWT code, so I&apos;m not sure that I see much of an improvement? I suppose we could modify NRWT to accept absolute paths, then modify the chromium bot code to change the location, and then either modify NRWT again to change how it interpreted relative paths (or change the webkit.org bot code to use absolute paths).

It seems easier to me to make the changes as describe in the patch, though.

&gt; 
&gt; &gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:575
&gt; &gt;&gt;&gt;&gt; +            option_val = getattr(self._options, &apos;results_directory&apos;)
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; self._options.results_directory seems a bit clearer.
&gt; &gt;&gt; 
&gt; &gt;&gt; It would be, but it won&apos;t work if options.results_directory doesn&apos;t exist (which it doesn&apos;t in some of the unit tests).
&gt; &gt; 
&gt; &gt; results_directory = self._options.results_directory or self.default_results_directory()
&gt; &gt; 
&gt; &gt; is a one liner. :)
&gt; 
&gt; If it doesn&apos;t exist, won&apos;t getattr also throw an AttributeError?  Did you mean getattr(self._options, &apos;results_directory&apos;, None)?

Ah, you&apos;re right. It needs a third parameter of None. That&apos;s lame. I figured it defaulted to None like get() does on dicts. Will fix once we decide if we want to change anything else, so I only have to post one new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384219</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-12 11:56:01 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Sure, we could do that. Regardless, it won&apos;t work in the current NRWT code, so I&apos;m not sure that I see much of an improvement? I suppose we could modify NRWT to accept absolute paths, then modify the chromium bot code to change the location, and then either modify NRWT again to change how it interpreted relative paths (or change the webkit.org bot code to use absolute paths).

The benefit to doing it in this order is we don&apos;t have to check in the relative path hack.  This has a couple benefits:

- something unexpected coming up (pulled off to work on a critical bug, hit by a bus, etc) and the third step gets delayed for some reason
- someone happens to be reading the code before the third step gets checked in and is confused</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384229</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-12 12:08:35 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Sure, we could do that. Regardless, it won&apos;t work in the current NRWT code, so I&apos;m not sure that I see much of an improvement? I suppose we could modify NRWT to accept absolute paths, then modify the chromium bot code to change the location, and then either modify NRWT again to change how it interpreted relative paths (or change the webkit.org bot code to use absolute paths).
&gt; 
&gt; The benefit to doing it in this order is we don&apos;t have to check in the relative path hack.  This has a couple benefits:
&gt; 
&gt; - something unexpected coming up (pulled off to work on a critical bug, hit by a bus, etc) and the third step gets delayed for some reason
&gt; - someone happens to be reading the code before the third step gets checked in and is confused

Okay. I think this adds a layer of unnecessary complication (by modifying the buildbot code to use absolute paths), but I&apos;ll do it your way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384230</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-12 12:09:26 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Okay. I think this adds a layer of unnecessary complication (by modifying the buildbot code to use absolute paths), but I&apos;ll do it your way.

[ Sigh. I wish you could edit change comments in bugzilla ].

I meant to add that I don&apos;t feel that strongly about this, which is why I&apos;ll do it your way since you do seem to have a preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384256</commentid>
    <comment_count>14</comment_count>
      <attachid>89246</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-12 12:40:59 -0700</bug_when>
    <thetext>Created attachment 89246
rebase, use port.get_option() instead of getattr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384394</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-12 14:35:04 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=89246) [details]
&gt; rebase, use port.get_option() instead of getattr

It&apos;s not clear to me if you want this reviewed or not.  In comment #13, you said you&apos;d rewrite without the relative path hack, but this patch has r? and the relative path hack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384402</commentid>
    <comment_count>16</comment_count>
      <attachid>89246</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-12 14:50:49 -0700</bug_when>
    <thetext>Comment on attachment 89246
rebase, use port.get_option() instead of getattr

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

Sorry, I was just confused.  I was thinking you would just fix absolute paths, then fix the bots, then land this patch.  This is fine too.

&gt; Tools/ChangeLog:14
&gt; +        This patch includes a hack to treat a value of &apos;..&apos; as special
&gt; +        to keep the Chromium bots from breaking; the hack can be removed
&gt; +        once the bots have been updated.

Remove this comment since it&apos;s no longer accurate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384411</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-12 15:02:25 -0700</bug_when>
    <thetext>Committed r83646: &lt;http://trac.webkit.org/changeset/83646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384983</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-13 10:23:19 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Committed r83646: &lt;http://trac.webkit.org/changeset/83646&gt;

Fixed in http://trac.webkit.org/changeset/83749</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89137</attachid>
            <date>2011-04-11 18:17:42 -0700</date>
            <delta_ts>2011-04-12 12:40:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58272-20110411181741.patch</filename>
            <type>text/plain</type>
            <size>12148</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM0NzcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkODQwYjkzYjUwMzU0YmFmNWQ1NmY5NGNiNmQ2MDRhN2Jk
MzhhZmZiLi4zMDY4NzVlOGFlNzEwZGY3ZTI5OTgyNDE5NWYzZGM0MzFiMWY5YjRlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzAg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBuZXct
cnVuLXdlYmtpdC10ZXN0czogLS1yZXN1bHRzLWRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byBidWls
ZGRpciwgbm90ICRQV0QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4MjcyCisKKyAgICAgICAgTlJXVCB3YXMgaW50ZXJwcmV0aW5nIHRoZSAtLXJlc3Vs
dHMtZGlyZWN0b3J5IGNtZCBsaW5lIGFyZyBhcworICAgICAgICByZWxhdGl2ZSB0byB0aGUgYnVp
bGQgZGlyZWN0b3J5LCBub3QgdGhlIGN1cnJlbnQgd29ya2luZworICAgICAgICBkaXJlY3Rvcnkg
KE9SV1QgdXNlcyB0aGUgbGF0dGVyLCB3aGljaCBpcyBtdWNoIG1vcmUgaW50dWl0aXZlKS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgYSBoYWNrIHRvIHRyZWF0IGEgdmFs
dWUgb2YgJy4uJyBhcyBzcGVjaWFsCisgICAgICAgIHRvIGtlZXAgdGhlIENocm9taXVtIGJvdHMg
ZnJvbSBicmVha2luZzsgdGhlIGhhY2sgY2FuIGJlIHJlbW92ZWQKKyAgICAgICAgb25jZSB0aGUg
Ym90cyBoYXZlIGJlZW4gdXBkYXRlZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToK
KworMjAxMS0wNC0xMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBuZXctcnVuLXdlYmtp
dC10ZXN0czogdXBkYXRlIGNvZGUgdG8gdXNlIHBvcnQucmVzdWx0c19kaXJlY3RvcnkoKSBpbnN0
ZWFkIG9mIG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MjkwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA4ODVjOTNmN2RjMThhOWU4ZGFl
ZWY2M2Q0ODFjZWQ5MGQyMjgwYWFiLi41NTQ1OWM0ODM2ZTZhNWE2ZmFmMGE3N2JjMDgwOTMxMDA3
Mzc2ZWUxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5CkBAIC0xMzksNiArMTM5LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3Vy
YXRpb24oKQogICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24gPSBOb25lCiAgICAgICAg
IHNlbGYuX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSAobXVsdGlwcm9jZXNzaW5nIGlz
IG5vdCBOb25lKQorICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IE5vbmUKIAogICAg
IGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRo
ZSBudW1iZXIgb2YgRHVtcFJlbmRlclRyZWUgaW5zdGFuY2VzIHRvIHVzZSBmb3IgdGhpcwpAQCAt
NTY5LDggKzU3MCwxNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxm
Ll9maWxlc3lzdGVtLm5vcm1wYXRoKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90
ZXN0c19kaXIoKSwgdGVzdF9uYW1lKSkKIAogICAgIGRlZiByZXN1bHRzX2RpcmVjdG9yeShzZWxm
KToKLSAgICAgICAgIiIiQWJzb2x1dGUgcGF0aCB0byB0aGUgcGxhY2UgdG8gc3RvcmUgdGhlIHRl
c3QgcmVzdWx0cy4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5y
ZXN1bHRzX2RpcmVjdG9yeScpCisgICAgICAgICIiIkFic29sdXRlIHBhdGggdG8gdGhlIHBsYWNl
IHRvIHN0b3JlIHRoZSB0ZXN0IHJlc3VsdHMgKHVzZXMgLS1yZXN1bHRzLWRpcmVjdG9yeSkuIiIi
CisgICAgICAgIGlmIG5vdCBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeToKKyAgICAgICAgICAgIG9w
dGlvbl92YWwgPSBnZXRhdHRyKHNlbGYuX29wdGlvbnMsICdyZXN1bHRzX2RpcmVjdG9yeScpCisg
ICAgICAgICAgICBpZiBub3Qgb3B0aW9uX3ZhbDoKKyAgICAgICAgICAgICAgICBvcHRpb25fdmFs
ID0gc2VsZi5kZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5KCkKKyAgICAgICAgICAgIHNlbGYuX3Jl
c3VsdHNfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5hYnNwYXRoKG9wdGlvbl92YWwpCisg
ICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeQorCisgICAgZGVmIGRlZmF1bHRf
cmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIkFic29sdXRlIHBhdGggdG8gdGhl
IGRlZmF1bHQgcGxhY2UgdG8gc3RvcmUgdGhlIHRlc3QgcmVzdWx0cy4iIiIKKyAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6
CiAgICAgICAgICIiIlBlcmZvcm0gcG9ydC1zcGVjaWZpYyB3b3JrIGF0IHRoZSBiZWdpbm5pbmcg
b2YgYSB0ZXN0IHJ1bi4iIiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQppbmRleCAzNzdkYmE4YWYzY2YxNmNl
NDdkMzQzMjBjYTFlNzllNGExYmUyNTYwLi42YzU3Y2YzOGUyNTE4OTFiOTg4YThjYzZjZGVhNTlm
YzliZjE0MGE0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CkBAIC0yNzQsNyArMjc0LDcgQEAgY2xhc3Mg
VmlydHVhbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFZpcnR1
YWwocG9ydC5jcmVhdGVfZHJpdmVyLCAwKQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9y
dC5kaWZmX2ltYWdlLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9y
dC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0Vmly
dHVhbChwb3J0LnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwo
cG9ydC5kZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5KQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1
YWwocG9ydC50ZXN0X2V4cGVjdGF0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBv
cnQuX3BhdGhfdG9fYXBhY2hlKQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9ydC5fcGF0
aF90b19hcGFjaGVfY29uZmlnX2ZpbGUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCAzOWVmNDFmOTFkYzE2MGU0MDI3
ZjdmNWE2OTI3MzY2M2Q0YzNhN2NhLi5mNWQ3NDBmZDZiZGNmYjFjZmQ2Njc4Nzc0YTU4ZTRkMzU3
MTdlNzMwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW0ucHkKQEAgLTIwMCwxNCArMjAwLDI4IEBAIGNsYXNzIENocm9taXVtUG9y
dChiYXNlLlBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2Uo
J0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywKICAgICAgICAgICAgICdjaHJvbWl1bScsICd0ZXN0
X2V4cGVjdGF0aW9ucy50eHQnKQogCi0gICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgor
ICAgIGRlZiBkZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywK
ICAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwKLSAgICAg
ICAgICAgICAgICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCisgICAgICAg
ICAgICAgICAgJ2xheW91dC10ZXN0LXJlc3VsdHMnKQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9u
RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRp
b24oJ2NvbmZpZ3VyYXRpb24nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuZ2V0X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdsYXlvdXQtdGVzdC1yZXN1bHRzJykKKworICAgIGRlZiByZXN1
bHRzX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgbmVl
ZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIENocm9taXVtCisgICAgICAgICMgYnVpbGRi
b3RzIHVudGlsIHRoZWlyIHNjcmlwdHMgY2FuIGJlIHVwZGF0ZWQuIE9uY2UgdGhleSBoYXZlIGJl
ZW4sCisgICAgICAgICMgdGhpcyByb3V0aW5lIGNhbiBiZSBkZWxldGVkIGFuZCB3ZSBjYW4gdXNl
IHRoZSBiYXNlIGNsYXNzLgorICAgICAgICAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTgyNzIgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgICAgaWYgbm90IHNl
bGYuX3Jlc3VsdHNfZGlyZWN0b3J5OgorICAgICAgICAgICAgb3B0aW9uX3ZhbCA9IGdldGF0dHIo
c2VsZi5fb3B0aW9ucywgJ3Jlc3VsdHNfZGlyZWN0b3J5JykKKyAgICAgICAgICAgIGlmIG9wdGlv
bl92YWwgYW5kIG9wdGlvbl92YWwuc3RhcnRzd2l0aCgnLi4nKToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbl92YWwpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHJldHVybiBzdXBlcihDaHJvbWl1bVBvcnQsIHNlbGYpLnJlc3VsdHNfZGly
ZWN0b3J5KHNlbGYpCisgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeQogCiAg
ICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgogICAgICAgICAjIERlbGV0ZSB0aGUgZGlzayBj
YWNoZSBpZiBhbnkgdG8gZW5zdXJlIGEgY2xlYW4gdGVzdCBydW4uCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkK
aW5kZXggYjVmOTRlZDdhOGRkMmEwN2U2YTQ2OGYwMjRjYjgyZDM5ZTE3ZmRlZC4uMzllYTQ2M2U1
MWM4MWU4MTk3ZjZiYWE3OTY0NDcyYzNjN2RiYjU1MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpAQCAt
MzgsOCArMzgsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgbXVsdGlwcm9jZXNzaW5nID0g
Tm9uZQogCiBmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IG1vY2t0b29sCi1tb2NrX29wdGlvbnMg
PSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhyZXN1bHRzX2RpcmVjdG9yeT0nbGF5b3V0LXRlc3QtcmVz
dWx0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfYXBhY2hlPVRy
dWUsCittb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucyh1c2VfYXBhY2hlPVRydWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPSdSZWxl
YXNlJykKIAogIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdXNlZCBmb3IgYWxsIHBvcnRzLCBub3Qg
anVzdCBXZWJLaXQgTWFjLiBTZWUKQEAgLTYwLDEwICs1OSw3IEBAIGNsYXNzIFBvcnRUZXN0Q2Fz
ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGlmIG5vdCBtYWtlcjoKICAgICAgICAgICAg
IHJldHVybiBOb25lCiAKLSAgICAgICAgcG9ydCA9IG1ha2VyKG9wdGlvbnM9b3B0aW9ucykKLSAg
ICAgICAgaWYgaGFzYXR0cihvcHRpb25zLCAicmVzdWx0c19kaXJlY3RvcnkiKToKLSAgICAgICAg
ICAgIHBvcnQuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkgPSBwb3J0LnJlc3VsdHNfZGlyZWN0
b3J5KCkKLSAgICAgICAgcmV0dXJuIHBvcnQKKyAgICAgICAgcmV0dXJuIG1ha2VyKG9wdGlvbnM9
b3B0aW9ucykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfd29ya2VyX21vZGVsKHNlbGYpOgogICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDQ4NDJjNDNiY2Q3MDA4Y2E5ZWY1YmQ4
NmNjMjlkNjMyNjQwZDE2NmUuLjQ5MDI4YzQ5YTNjODMxZGZkMDBmOTgzNjg4OTZhYTI5OTIzOTUx
NmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3QucHkKQEAgLTMyOSwxMSArMzI5LDggQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAg
ICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBk
ZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeToKLSAgICAgICAgICAgIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5ID0gc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKCcvdG1wJywKLSAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHRpb24o
J3Jlc3VsdHNfZGlyZWN0b3J5JykpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHRzX2RpcmVj
dG9yeQorICAgIGRlZiBkZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBy
ZXR1cm4gJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cycKIAogICAgIGRlZiBzZXR1cF90ZXN0X3J1
bihzZWxmKToKICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBjZmQ4YTM0NTE3ZGZiZmZiMWI0YjUyZThi
ZTdhMWZiZjA0ZTgyNGUzLi40MzA2MTEzZDJkN2UxNTBlYjg4NmNiOWI1NTg1YWExNmNiNmJhMDg3
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dl
YmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dl
YmtpdC5weQpAQCAtMTY2LDEwICsxNjYsMTAgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQp
OgogICAgICAgICBzcC5zdG9wKCkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgZGVmIHJl
c3VsdHNfZGlyZWN0b3J5KHNlbGYpOgorICAgIGRlZiBkZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5
KHNlbGYpOgogICAgICAgICAjIFJlc3VsdHMgYXJlIHN0b3JlIHJlbGF0aXZlIHRvIHRoZSBidWls
dCBwcm9kdWN0cyB0byBtYWtlIGl0IGVhc3kKICAgICAgICAgIyB0byBoYXZlIG11bHRpcGxlIGNv
cGllcyBvZiB3ZWJraXQgY2hlY2tlZCBvdXQgYW5kIGJ1aWx0LgotICAgICAgICByZXR1cm4gc2Vs
Zi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCisgICAg
ICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdsYXlvdXQtdGVzdC1yZXN1bHRzJykKIAogICAg
IGRlZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgIyBUaGlzIHBvcnQgZG9lc24ndCBy
ZXF1aXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggNDVl
YTBiYzYwMTVkYjBlZTQyMTc0YTE3M2UwOWQ3YWJjMzI5YzJjOS4uNjc0NDg5MmI4OGM2YTNkNzI0
ZjdkZWYyYTY5MjgzNWIwODRkYzViNCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0xNTIsMTIgKzE1Miw2
IEBAIGRlZiBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0X29iaiwgb3B0aW9ucyk6CiAgICAg
aWYgbm90IG9wdGlvbnMudXNlX2FwYWNoZToKICAgICAgICAgb3B0aW9ucy51c2VfYXBhY2hlID0g
c3lzLnBsYXRmb3JtIGluICgnZGFyd2luJywgJ2xpbnV4MicpCiAKLSAgICBpZiBub3QgcG9ydF9v
YmouX2ZpbGVzeXN0ZW0uaXNhYnMob3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSk6Ci0gICAgICAg
ICMgVGhpcyBub3JtYWxpemVzIHRoZSBwYXRoIHRvIHRoZSBidWlsZCBkaXIuCi0gICAgICAgICMg
RklYTUU6IGhvdyB0aGlzIGhhcHBlbnMgaXMgbm90IGF0IGFsbCBvYnZpb3VzOyB0aGlzIGlzIGEg
ZHVtYgotICAgICAgICAjIGludGVyZmFjZSBhbmQgc2hvdWxkIGJlIGNsZWFuZWQgdXAuCi0gICAg
ICAgIG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkgPSBwb3J0X29iai5yZXN1bHRzX2RpcmVjdG9y
eSgpCi0KICAgICBpZiBub3Qgb3B0aW9ucy50aW1lX291dF9tczoKICAgICAgICAgaWYgb3B0aW9u
cy5jb25maWd1cmF0aW9uID09ICJEZWJ1ZyI6CiAgICAgICAgICAgICBvcHRpb25zLnRpbWVfb3V0
X21zID0gc3RyKDIgKiB0ZXN0X3J1bm5lci5UZXN0UnVubmVyLkRFRkFVTFRfVEVTVF9USU1FT1VU
X01TKQpAQCAtMjg4LDEwICsyODIsNyBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUpOgogICAg
ICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS10b2xlcmFuY2UiLAogICAgICAgICAgICAgaGVs
cD0iSWdub3JlIGltYWdlIGRpZmZlcmVuY2VzIGxlc3MgdGhhbiB0aGlzIHBlcmNlbnRhZ2UgKHNv
bWUgIgogICAgICAgICAgICAgICAgICJwb3J0cyBtYXkgaWdub3JlIHRoaXMgb3B0aW9uKSIsIHR5
cGU9ImZsb2F0IiksCi0gICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXJlc3VsdHMtZGly
ZWN0b3J5IiwKLSAgICAgICAgICAgIGRlZmF1bHQ9ImxheW91dC10ZXN0LXJlc3VsdHMiLAotICAg
ICAgICAgICAgaGVscD0iT3V0cHV0IHJlc3VsdHMgZGlyZWN0b3J5IHNvdXJjZSBkaXIsIHJlbGF0
aXZlIHRvIERlYnVnIG9yICIKLSAgICAgICAgICAgICAgICAgIlJlbGVhc2UiKSwKKyAgICAgICAg
b3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcmVzdWx0cy1kaXJlY3RvcnkiLCBoZWxwPSJMb2NhdGlv
biBvZiB0ZXN0IHJlc3VsdHMiKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tYnVp
bGQtZGlyZWN0b3J5IiwKICAgICAgICAgICAgIGhlbHA9IlBhdGggdG8gdGhlIGRpcmVjdG9yeSB1
bmRlciB3aGljaCBidWlsZCBmaWxlcyBhcmUga2VwdCAoc2hvdWxkIG5vdCBpbmNsdWRlIGNvbmZp
Z3VyYXRpb24pIiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW5ldy1iYXNlbGlu
ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQpp
bmRleCAwOTMzNjUzOTViNmExYjUwNWEzZjFmM2Y4NTRhY2RmYmNhNGE3YWZkLi5jMGU1NTk2OTZl
MWEwYzdjODM0MzM0NGIyYWIwZTI2OTgxN2M3M2M2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5p
dHRlc3QucHkKQEAgLTM1LDYgKzM1LDcgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0
YXRlbWVudAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBvcwogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGhyZWFkCkBAIC00
NjYsOSArNDY3LDE0IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgIyBXZSBydW4gYSBjb25maWd1cmF0aW9uIHRoYXQgc2hvdWxkIGZhaWwsIHRvIGdlbmVyYXRl
IG91dHB1dCwgdGhlbgogICAgICAgICAjIGxvb2sgZm9yIHdoYXQgdGhlIG91dHB1dCByZXN1bHRz
IHVybCB3YXMuCiAKLSAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsn
LS1yZXN1bHRzLWRpcmVjdG9yeT1mb28nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RzX2luY2x1ZGVkPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodXNlci5vcGVuZWRfdXJscywgWycvdG1wL2Zvby9yZXN1bHRzLmh0bWwnXSkKKyAgICAgICAg
b3JpZ19nZXRjd2QgPSBvcy5nZXRjd2QKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZ2V0
Y3dkID0gbGFtYmRhOiAnL3RtcC9jd2QvJworICAgICAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNl
ciA9IGxvZ2dpbmdfcnVuKFsnLS1yZXN1bHRzLWRpcmVjdG9yeT1mb28nXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19pbmNsdWRlZD1UcnVlKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLm9wZW5lZF91cmxzLCBbJy90bXAvY3dk
L2Zvby9yZXN1bHRzLmh0bWwnXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmdl
dGN3ZCA9IG9yaWdfZ2V0Y3dkCiAKICAgICAjIFRoZXNlIG5leHQgdGVzdHMgdGVzdCB0aGF0IHdl
IHJ1biB0aGUgdGVzdHMgaW4gYXNjZW5kaW5nIGFscGhhYmV0aWNhbAogICAgICMgb3JkZXIgcGVy
IGRpcmVjdG9yeS4gSFRUUCB0ZXN0cyBhcmUgc2hhcmRlZCBzZXBhcmF0ZWx5IGZyb20gb3RoZXIg
dGVzdHMsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89246</attachid>
            <date>2011-04-12 12:40:59 -0700</date>
            <delta_ts>2011-04-12 14:50:49 -0700</delta_ts>
            <desc>rebase, use port.get_option() instead of getattr</desc>
            <filename>bug-58272-20110412124058.patch</filename>
            <type>text/plain</type>
            <size>12036</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM0NzcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMjMwNzZiMGE2NWY1ZWQyYzIxMDc2MjJiZjA2MjJmZGJj
NWQ0ZGYxLi43ZDMxNGFiMTlmZTEyZDBmYzdmYzY1MTViZTk4OGU2MzY4ZGRjNThhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzAg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBuZXct
cnVuLXdlYmtpdC10ZXN0czogLS1yZXN1bHRzLWRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byBidWls
ZGRpciwgbm90ICRQV0QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4MjcyCisKKyAgICAgICAgTlJXVCB3YXMgaW50ZXJwcmV0aW5nIHRoZSAtLXJlc3Vs
dHMtZGlyZWN0b3J5IGNtZCBsaW5lIGFyZyBhcworICAgICAgICByZWxhdGl2ZSB0byB0aGUgYnVp
bGQgZGlyZWN0b3J5LCBub3QgdGhlIGN1cnJlbnQgd29ya2luZworICAgICAgICBkaXJlY3Rvcnkg
KE9SV1QgdXNlcyB0aGUgbGF0dGVyLCB3aGljaCBpcyBtdWNoIG1vcmUgaW50dWl0aXZlKS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgYSBoYWNrIHRvIHRyZWF0IGEgdmFs
dWUgb2YgJy4uJyBhcyBzcGVjaWFsCisgICAgICAgIHRvIGtlZXAgdGhlIENocm9taXVtIGJvdHMg
ZnJvbSBicmVha2luZzsgdGhlIGhhY2sgY2FuIGJlIHJlbW92ZWQKKyAgICAgICAgb25jZSB0aGUg
Ym90cyBoYXZlIGJlZW4gdXBkYXRlZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToK
KworMjAxMS0wNC0xMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBuZXctcnVuLXdlYmtp
dC10ZXN0czogdXBkYXRlIGNvZGUgdG8gdXNlIHBvcnQucmVzdWx0c19kaXJlY3RvcnkoKSBpbnN0
ZWFkIG9mIG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MjkwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA4ODVjOTNmN2RjMThhOWU4ZGFl
ZWY2M2Q0ODFjZWQ5MGQyMjgwYWFiLi40MzAxMjRiNjg0OGUwOTBhNDNjM2FiZGE0ZGIwMDZiMDBi
NDk0OWIyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5CkBAIC0xMzksNiArMTM5LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3Vy
YXRpb24oKQogICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24gPSBOb25lCiAgICAgICAg
IHNlbGYuX211bHRpcHJvY2Vzc2luZ19pc19hdmFpbGFibGUgPSAobXVsdGlwcm9jZXNzaW5nIGlz
IG5vdCBOb25lKQorICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IE5vbmUKIAogICAg
IGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRo
ZSBudW1iZXIgb2YgRHVtcFJlbmRlclRyZWUgaW5zdGFuY2VzIHRvIHVzZSBmb3IgdGhpcwpAQCAt
NTY5LDggKzU3MCwxNSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxm
Ll9maWxlc3lzdGVtLm5vcm1wYXRoKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90
ZXN0c19kaXIoKSwgdGVzdF9uYW1lKSkKIAogICAgIGRlZiByZXN1bHRzX2RpcmVjdG9yeShzZWxm
KToKLSAgICAgICAgIiIiQWJzb2x1dGUgcGF0aCB0byB0aGUgcGxhY2UgdG8gc3RvcmUgdGhlIHRl
c3QgcmVzdWx0cy4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5y
ZXN1bHRzX2RpcmVjdG9yeScpCisgICAgICAgICIiIkFic29sdXRlIHBhdGggdG8gdGhlIHBsYWNl
IHRvIHN0b3JlIHRoZSB0ZXN0IHJlc3VsdHMgKHVzZXMgLS1yZXN1bHRzLWRpcmVjdG9yeSkuIiIi
CisgICAgICAgIGlmIG5vdCBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeToKKyAgICAgICAgICAgIG9w
dGlvbl92YWwgPSBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5Jykgb3Igc2VsZi5k
ZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5KCkKKyAgICAgICAgICAgIHNlbGYuX3Jlc3VsdHNfZGly
ZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5hYnNwYXRoKG9wdGlvbl92YWwpCisgICAgICAgIHJl
dHVybiBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeQorCisgICAgZGVmIGRlZmF1bHRfcmVzdWx0c19k
aXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIkFic29sdXRlIHBhdGggdG8gdGhlIGRlZmF1bHQg
cGxhY2UgdG8gc3RvcmUgdGhlIHRlc3QgcmVzdWx0cy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcigpCiAKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAg
ICIiIlBlcmZvcm0gcG9ydC1zcGVjaWZpYyB3b3JrIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSB0ZXN0
IHJ1bi4iIiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQppbmRleCAzNzdkYmE4YWYzY2YxNmNlNDdkMzQzMjBj
YTFlNzllNGExYmUyNTYwLi42YzU3Y2YzOGUyNTE4OTFiOTg4YThjYzZjZGVhNTlmYzliZjE0MGE0
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2VfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlX3VuaXR0ZXN0LnB5CkBAIC0yNzQsNyArMjc0LDcgQEAgY2xhc3MgVmlydHVhbFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9ydC5j
cmVhdGVfZHJpdmVyLCAwKQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9ydC5kaWZmX2lt
YWdlLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9ydC5wYXRoX3Rv
X3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VmlydHVhbChwb3J0
LnJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9ydC5kZWZh
dWx0X3Jlc3VsdHNfZGlyZWN0b3J5KQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9ydC50
ZXN0X2V4cGVjdGF0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBvcnQuX3BhdGhf
dG9fYXBhY2hlKQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9ydC5fcGF0aF90b19hcGFj
aGVfY29uZmlnX2ZpbGUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCAzOWVmNDFmOTFkYzE2MGU0MDI3ZjdmNWE2OTI3
MzY2M2Q0YzNhN2NhLi4zYmM1NDBlZTZkYmY3M2NiOWVlY2YyZTg3NTA5ZjllNzFlMTI0ZDRiIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW0ucHkKQEAgLTIwMCwxNCArMjAwLDI4IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBv
cnQpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRl
c3RzJywgJ3BsYXRmb3JtJywKICAgICAgICAgICAgICdjaHJvbWl1bScsICd0ZXN0X2V4cGVjdGF0
aW9ucy50eHQnKQogCi0gICAgZGVmIHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgorICAgIGRlZiBk
ZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywKICAgICAgICAg
ICAgICAgICBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwKLSAgICAgICAgICAgICAg
ICBzZWxmLmdldF9vcHRpb24oJ3Jlc3VsdHNfZGlyZWN0b3J5JykpCisgICAgICAgICAgICAgICAg
J2xheW91dC10ZXN0LXJlc3VsdHMnKQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CiAg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZp
Z3VyYXRpb24nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0
X29wdGlvbigncmVzdWx0c19kaXJlY3RvcnknKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdsYXlvdXQtdGVzdC1yZXN1bHRzJykKKworICAgIGRlZiByZXN1bHRzX2RpcmVj
dG9yeShzZWxmKToKKyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgbmVlZGVkIGZvciBj
b21wYXRpYmlsaXR5IHdpdGggdGhlIENocm9taXVtCisgICAgICAgICMgYnVpbGRib3RzIHVudGls
IHRoZWlyIHNjcmlwdHMgY2FuIGJlIHVwZGF0ZWQuIE9uY2UgdGhleSBoYXZlIGJlZW4sCisgICAg
ICAgICMgdGhpcyByb3V0aW5lIGNhbiBiZSBkZWxldGVkIGFuZCB3ZSBjYW4gdXNlIHRoZSBiYXNl
IGNsYXNzLgorICAgICAgICAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTgyNzIgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgICAgaWYgbm90IHNlbGYuX3Jlc3Vs
dHNfZGlyZWN0b3J5OgorICAgICAgICAgICAgb3B0aW9uX3ZhbCA9IHNlbGYuZ2V0X29wdGlvbign
cmVzdWx0c19kaXJlY3RvcnknKQorICAgICAgICAgICAgaWYgb3B0aW9uX3ZhbCBhbmQgbm90IHNl
bGYuX2ZpbGVzeXN0ZW0uaXNhYnMob3B0aW9uX3ZhbCk6CisgICAgICAgICAgICAgICAgc2VsZi5f
cmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29u
ZmlndXJhdGlvbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25fdmFsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3VwZXIoQ2hyb21pdW1Qb3J0LCBzZWxmKS5yZXN1bHRzX2RpcmVjdG9y
eShzZWxmKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkKIAogICAgIGRl
ZiBzZXR1cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgIyBEZWxldGUgdGhlIGRpc2sgY2FjaGUg
aWYgYW55IHRvIGVuc3VyZSBhIGNsZWFuIHRlc3QgcnVuLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CmluZGV4
IGI1Zjk0ZWQ3YThkZDJhMDdlNmE0NjhmMDI0Y2I4MmQzOWUxN2ZkZWQuLjM5ZWE0NjNlNTFjODFl
ODE5N2Y2YmFhNzk2NDQ3MmMzYzdkYmI1NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTM4LDgg
KzM4LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUK
IAogZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbAotbW9ja19vcHRpb25zID0gbW9j
a3Rvb2wuTW9ja09wdGlvbnMocmVzdWx0c19kaXJlY3Rvcnk9J2xheW91dC10ZXN0LXJlc3VsdHMn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2FwYWNoZT1UcnVlLAor
bW9ja19vcHRpb25zID0gbW9ja3Rvb2wuTW9ja09wdGlvbnModXNlX2FwYWNoZT1UcnVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj0nUmVsZWFzZScp
CiAKICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVzZWQgZm9yIGFsbCBwb3J0cywgbm90IGp1c3Qg
V2ViS2l0IE1hYy4gU2VlCkBAIC02MCwxMCArNTksNyBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBpZiBub3QgbWFrZXI6CiAgICAgICAgICAgICByZXR1
cm4gTm9uZQogCi0gICAgICAgIHBvcnQgPSBtYWtlcihvcHRpb25zPW9wdGlvbnMpCi0gICAgICAg
IGlmIGhhc2F0dHIob3B0aW9ucywgInJlc3VsdHNfZGlyZWN0b3J5Iik6Ci0gICAgICAgICAgICBw
b3J0Ll9vcHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5ID0gcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgp
Ci0gICAgICAgIHJldHVybiBwb3J0CisgICAgICAgIHJldHVybiBtYWtlcihvcHRpb25zPW9wdGlv
bnMpCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3dvcmtlcl9tb2RlbChzZWxmKToKICAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRleCA0ODQyYzQzYmNkNzAwOGNhOWVmNWJkODZjYzI5
ZDYzMjY0MGQxNjZlLi40OTAyOGM0OWEzYzgzMWRmZDAwZjk4MzY4ODk2YWEyOTkyMzk1MTZkIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5
CkBAIC0zMjksMTEgKzMyOSw4IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVm
IF9wYXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIHJl
c3VsdHNfZGlyZWN0b3J5KHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fcmVzdWx0c19kaXJl
Y3Rvcnk6Ci0gICAgICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVz
eXN0ZW0uam9pbignL3RtcCcsCi0gICAgICAgICAgICAgICAgc2VsZi5nZXRfb3B0aW9uKCdyZXN1
bHRzX2RpcmVjdG9yeScpKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0c19kaXJlY3RvcnkK
KyAgICBkZWYgZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgcmV0dXJu
ICcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMnCiAKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2Vs
Zik6CiAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggY2ZkOGEzNDUxN2RmYmZmYjFiNGI1MmU4YmU3YTFm
YmYwNGU4MjRlMy4uNDMwNjExM2QyZDdlMTUwZWI4ODZjYjliNTU4NWFhMTZjYjZiYTA4NyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKQEAgLTE2NiwxMCArMTY2LDEwIEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAg
ICAgICAgc3Auc3RvcCgpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIGRlZiByZXN1bHRz
X2RpcmVjdG9yeShzZWxmKToKKyAgICBkZWYgZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeShzZWxm
KToKICAgICAgICAgIyBSZXN1bHRzIGFyZSBzdG9yZSByZWxhdGl2ZSB0byB0aGUgYnVpbHQgcHJv
ZHVjdHMgdG8gbWFrZSBpdCBlYXN5CiAgICAgICAgICMgdG8gaGF2ZSBtdWx0aXBsZSBjb3BpZXMg
b2Ygd2Via2l0IGNoZWNrZWQgb3V0IGFuZCBidWlsdC4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdyZXN1bHRzX2RpcmVjdG9yeScpKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnbGF5b3V0LXRlc3QtcmVzdWx0cycpCiAKICAgICBkZWYg
c2V0dXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgICMgVGhpcyBwb3J0IGRvZXNuJ3QgcmVxdWly
ZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDQ1ZWEwYmM2
MDE1ZGIwZWU0MjE3NGExNzNlMDlkN2FiYzMyOWMyYzkuLjY3NDQ4OTJiODhjNmEzZDcyNGY3ZGVm
MmE2OTI4MzViMDg0ZGM1YjQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMTUyLDEyICsxNTIsNiBAQCBk
ZWYgX3NldF91cF9kZXJpdmVkX29wdGlvbnMocG9ydF9vYmosIG9wdGlvbnMpOgogICAgIGlmIG5v
dCBvcHRpb25zLnVzZV9hcGFjaGU6CiAgICAgICAgIG9wdGlvbnMudXNlX2FwYWNoZSA9IHN5cy5w
bGF0Zm9ybSBpbiAoJ2RhcndpbicsICdsaW51eDInKQogCi0gICAgaWYgbm90IHBvcnRfb2JqLl9m
aWxlc3lzdGVtLmlzYWJzKG9wdGlvbnMucmVzdWx0c19kaXJlY3RvcnkpOgotICAgICAgICAjIFRo
aXMgbm9ybWFsaXplcyB0aGUgcGF0aCB0byB0aGUgYnVpbGQgZGlyLgotICAgICAgICAjIEZJWE1F
OiBob3cgdGhpcyBoYXBwZW5zIGlzIG5vdCBhdCBhbGwgb2J2aW91czsgdGhpcyBpcyBhIGR1bWIK
LSAgICAgICAgIyBpbnRlcmZhY2UgYW5kIHNob3VsZCBiZSBjbGVhbmVkIHVwLgotICAgICAgICBv
cHRpb25zLnJlc3VsdHNfZGlyZWN0b3J5ID0gcG9ydF9vYmoucmVzdWx0c19kaXJlY3RvcnkoKQot
CiAgICAgaWYgbm90IG9wdGlvbnMudGltZV9vdXRfbXM6CiAgICAgICAgIGlmIG9wdGlvbnMuY29u
ZmlndXJhdGlvbiA9PSAiRGVidWciOgogICAgICAgICAgICAgb3B0aW9ucy50aW1lX291dF9tcyA9
IHN0cigyICogdGVzdF9ydW5uZXIuVGVzdFJ1bm5lci5ERUZBVUxUX1RFU1RfVElNRU9VVF9NUykK
QEAgLTI4OCwxMCArMjgyLDcgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAg
b3B0cGFyc2UubWFrZV9vcHRpb24oIi0tdG9sZXJhbmNlIiwKICAgICAgICAgICAgIGhlbHA9Ikln
bm9yZSBpbWFnZSBkaWZmZXJlbmNlcyBsZXNzIHRoYW4gdGhpcyBwZXJjZW50YWdlIChzb21lICIK
ICAgICAgICAgICAgICAgICAicG9ydHMgbWF5IGlnbm9yZSB0aGlzIG9wdGlvbikiLCB0eXBlPSJm
bG9hdCIpLAotICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1yZXN1bHRzLWRpcmVjdG9y
eSIsCi0gICAgICAgICAgICBkZWZhdWx0PSJsYXlvdXQtdGVzdC1yZXN1bHRzIiwKLSAgICAgICAg
ICAgIGhlbHA9Ik91dHB1dCByZXN1bHRzIGRpcmVjdG9yeSBzb3VyY2UgZGlyLCByZWxhdGl2ZSB0
byBEZWJ1ZyBvciAiCi0gICAgICAgICAgICAgICAgICJSZWxlYXNlIiksCisgICAgICAgIG9wdHBh
cnNlLm1ha2Vfb3B0aW9uKCItLXJlc3VsdHMtZGlyZWN0b3J5IiwgaGVscD0iTG9jYXRpb24gb2Yg
dGVzdCByZXN1bHRzIiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWJ1aWxkLWRp
cmVjdG9yeSIsCiAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIHRoZSBkaXJlY3RvcnkgdW5kZXIg
d2hpY2ggYnVpbGQgZmlsZXMgYXJlIGtlcHQgKHNob3VsZCBub3QgaW5jbHVkZSBjb25maWd1cmF0
aW9uKSIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1uZXctYmFzZWxpbmUiLCBh
Y3Rpb249InN0b3JlX3RydWUiLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXgg
MDkzMzY1Mzk1YjZhMWI1MDVhM2YxZjNmODU0YWNkZmJjYTRhN2FmZC4uYTY0OTFlOTZhYzQ0ZDFh
MTM2ZTBmNzc1ZjM4NzA5NDQxYWU3M2E2YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0
LnB5CkBAIC0zNSw2ICszNSw3IEBAIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1l
bnQKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsb2dnaW5nCitpbXBv
cnQgb3MKIGltcG9ydCBRdWV1ZQogaW1wb3J0IHN5cwogaW1wb3J0IHRocmVhZApAQCAtNDY1LDEw
ICs0NjYsMTIgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0
ZXN0X3Jlc3VsdHNfZGlyZWN0b3J5X3JlbGF0aXZlKHNlbGYpOgogICAgICAgICAjIFdlIHJ1biBh
IGNvbmZpZ3VyYXRpb24gdGhhdCBzaG91bGQgZmFpbCwgdG8gZ2VuZXJhdGUgb3V0cHV0LCB0aGVu
CiAgICAgICAgICMgbG9vayBmb3Igd2hhdCB0aGUgb3V0cHV0IHJlc3VsdHMgdXJsIHdhcy4KLQor
ICAgICAgICBmcyA9IHBvcnQudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBmcy5tYXli
ZV9tYWtlX2RpcmVjdG9yeSgnL3RtcC9jd2QnKQorICAgICAgICBmcy5jaGRpcignL3RtcC9jd2Qn
KQogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oWyctLXJlc3VsdHMt
ZGlyZWN0b3J5PWZvbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLm9w
ZW5lZF91cmxzLCBbJy90bXAvZm9vL3Jlc3VsdHMuaHRtbCddKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgZmlsZXN5c3RlbT1m
cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyLm9wZW5lZF91cmxzLCBbJy90bXAvY3dk
L2Zvby9yZXN1bHRzLmh0bWwnXSkKIAogICAgICMgVGhlc2UgbmV4dCB0ZXN0cyB0ZXN0IHRoYXQg
d2UgcnVuIHRoZSB0ZXN0cyBpbiBhc2NlbmRpbmcgYWxwaGFiZXRpY2FsCiAgICAgIyBvcmRlciBw
ZXIgZGlyZWN0b3J5LiBIVFRQIHRlc3RzIGFyZSBzaGFyZGVkIHNlcGFyYXRlbHkgZnJvbSBvdGhl
ciB0ZXN0cywK
</data>
<flag name="review"
          id="81897"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>