<?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>37565</bug_id>
          
          <creation_ts>2010-04-14 00:32:52 -0700</creation_ts>
          <short_desc>new-run-webkit-tests needs a shared TestExpectations between all WebKit ports</short_desc>
          <delta_ts>2013-02-14 16:58:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>NRWT</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Glenn Adams">glenn</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>dpranke</cc>
    
    <cc>evan</cc>
    
    <cc>jbadics</cc>
    
    <cc>kadam</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>tony</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212289</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-14 00:32:52 -0700</bug_when>
    <thetext>new-run-webkit-tests needs a shared test_expectations between all ports

Some tests in WebKit&apos;s repository need to be marked SLOW.  They need to be marked slow for all ports.  Seems the best way to do that is with a common text_expectations file.

I&apos;m not sure the current architecture is designed to support such.  This might require a bit of work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212446</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-14 11:18:35 -0700</bug_when>
    <thetext>The test_expectations and port/ structure was designed to share test_expectations.txt files where possible, but there is a tradeoff between sharing results across all ports and sharing results across a few ports (e.g., if we were to share text_expectations.txt between WebKit Mac and Chromium Mac, then we would have to refer to port-specific diffs as &quot;MAC&quot; and &quot;CHROMIUM-MAC&quot;. This may make people unhappy).

I think it&apos;s more of a social question than a technical question. Technically, sharing a single file would require us to have a common set of test_platform_names() used by all the ports, and changing the path to the test_expectations file to use it.

One other alternative we could do would be to support multiple test_expectations files, and perhaps have a &quot;generic&quot; file that didn&apos;t have port-specific or platform-specific expectations. This would perhaps only apply to SLOW tests and CRASHes (and could maybe be used for REBASELINE).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212467</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-14 11:37:10 -0700</bug_when>
    <thetext>Sorry, I wasn&apos;t clear.  I meant supporting multiple test_expectations.txt files, with a hierarchy.

Both:
LayoutTests/platform/test_expectations.txt
and
LayoutTests/platform/mac/test_expectations.txt

I&apos;m just not sure how the layering would work.  If a more specific expectation is given in a more specific file do we override the old expectation?  Add to it?  When do we warn about duplicate expectations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212470</commentid>
    <comment_count>3</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-04-14 11:40:10 -0700</bug_when>
    <thetext>The danger of a hierarchy is that you have non-local effects with your edits.  Say something starts failing on a &quot;core&quot; port, so it&apos;s marked fail there; now all pieces that derive from it are suddenly expected-fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212475</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-14 11:43:20 -0700</bug_when>
    <thetext>The current solution is OK, we just end up with a lot of boilerplate at the top of every port file for marking tests as slow or flaky (since a bunch of them are on all ports).  It makes bringing up additional ports on new-run-webkit-tests challenging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213873</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-04-18 18:09:28 -0700</bug_when>
    <thetext>Note that we do effectively already have a multi-level set of expectations on the Chromium ports, since we support having both upstream and downstream files which are effectively just concatenated. We could do this for WebKit as well - have a generic and a platform file and cat them together, and bail out on conflicts. 

This would require us to never add an entry to the generic file if a platform might override it, but maybe that&apos;s okay?

Implementing something where the platform can override a generic result would be more complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213913</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 22:26:35 -0700</bug_when>
    <thetext>I think what we have now (duplicating SLOW tests through all ports is OK.

I think that having a model where we couldn&apos;t ever &quot;override&quot; in ports, but rather had to copy any values we wanted to override to all ports would be strictly better than what we have today.

Eventually maybe we&apos;d make something more sophisticated, not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654010</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-20 16:52:40 -0700</bug_when>
    <thetext>We now support cascading expectations, so we should be able to implement this.

Note that we don&apos;t support more-specific expectations overriding less-specific expectations, and we don&apos;t necessarily support the same list of keywords across ports, so the only way this would work at the moment is if the top-level file only contained tests that had the same expectations across all ports regardless of configuration (or if they were all in the same configuration).

Possible examples:

1) tests that are slow but pass everywhere
2) tests that crash, timeout or should be skipped everywhere
3) tests that crash, timout or should be skipped only in debug mode (e.g., a check that fires everywhere)
4) tests that fail with the same TEXT failure everywhere (?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831216</commentid>
    <comment_count>8</comment_count>
      <attachid>187924</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-12 13:44:51 -0800</bug_when>
    <thetext>Created attachment 187924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831224</commentid>
    <comment_count>9</comment_count>
      <attachid>187924</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-02-12 13:53:33 -0800</bug_when>
    <thetext>Comment on attachment 187924
Patch

I would expect this file to live in LayoutTests/TestExpectation, not LayoutTests/platform/TestExpectations, but this is a minor thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831240</commentid>
    <comment_count>10</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-12 14:07:16 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 187924 [details])
&gt; I would expect this file to live in LayoutTests/TestExpectation, not LayoutTests/platform/TestExpectations, but this is a minor thing.

I started to implement it that way per your prior suggestion on webkit-dev on this thread; however, I found it required many more changes due to assumptions by various code that all expectation files live under the platform directory. It would have made the patch rather more complicated to put there.

I would suggest we start with this simpler approach (under platform), start using it a bit, and the re-visit the question of whether it would work better at one level up, in which case we could move in a follow-on patch.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831273</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-02-12 14:38:31 -0800</bug_when>
    <thetext>It&apos;s hard for me to say without having really knowing what the code changes  necessary to move it out of platform/ would be. I&apos;m kinda surprised that there&apos;d be much difference.

I don&apos;t think we should be trying to minimize the changes to the code and sacrifice user convenience for this, and I do think creating the file and then moving it would be kind of inconvenient, so therefore I&apos;m not a fan of landing this and planning to move it later. 

This means that we should probably either take the bigger hit now to the code, or just land this as-is. Do you have any of your earlier work still around so I can get a sense of more of the details? If not, maybe I should spend at least a little time trying to implement it myself so I can get a better sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831279</commentid>
    <comment_count>12</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-12 14:45:49 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; It&apos;s hard for me to say without having really knowing what the code changes  necessary to move it out of platform/ would be. I&apos;m kinda surprised that there&apos;d be much difference.
&gt; 
&gt; I don&apos;t think we should be trying to minimize the changes to the code and sacrifice user convenience for this, and I do think creating the file and then moving it would be kind of inconvenient, so therefore I&apos;m not a fan of landing this and planning to move it later. 
&gt; 
&gt; This means that we should probably either take the bigger hit now to the code, or just land this as-is. Do you have any of your earlier work still around so I can get a sense of more of the details? If not, maybe I should spend at least a little time trying to implement it myself so I can get a better sense.

Nope, I nuked it. In the current patch, you will notice that by using an empty string as the search path entry for constructing the result of expectation_files() that it makes it very straightforward to introduce the generic expectations file. One way to address that would be to add a post-processing phase for every implementation of expectations_files() that rewrites &quot;/platform/TestExpectations&quot; as &quot;/TestExpectations&quot;.

I could give that a shot if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831285</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-02-12 14:47:46 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; It&apos;s hard for me to say without having really knowing what the code changes  necessary to move it out of platform/ would be. I&apos;m kinda surprised that there&apos;d be much difference.
&gt; &gt; 
&gt; &gt; I don&apos;t think we should be trying to minimize the changes to the code and sacrifice user convenience for this, and I do think creating the file and then moving it would be kind of inconvenient, so therefore I&apos;m not a fan of landing this and planning to move it later. 
&gt; &gt; 
&gt; &gt; This means that we should probably either take the bigger hit now to the code, or just land this as-is. Do you have any of your earlier work still around so I can get a sense of more of the details? If not, maybe I should spend at least a little time trying to implement it myself so I can get a better sense.
&gt; 
&gt; Nope, I nuked it. In the current patch, you will notice that by using an empty string as the search path entry for constructing the result of expectation_files() that it makes it very straightforward to introduce the generic expectations file. One way to address that would be to add a post-processing phase for every implementation of expectations_files() that rewrites &quot;/platform/TestExpectations&quot; as &quot;/TestExpectations&quot;.
&gt; 
&gt; I could give that a shot if you like.

Yeah, I saw that and wasn&apos;t a big fan of that approach either, it&apos;s kinda mysterious.

I wonder if this is another good motivator for me to attempt to refactor that code again and get everybody using more common logic for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831288</commentid>
    <comment_count>14</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-12 14:54:43 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; It&apos;s hard for me to say without having really knowing what the code changes  necessary to move it out of platform/ would be. I&apos;m kinda surprised that there&apos;d be much difference.
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think we should be trying to minimize the changes to the code and sacrifice user convenience for this, and I do think creating the file and then moving it would be kind of inconvenient, so therefore I&apos;m not a fan of landing this and planning to move it later. 
&gt; &gt; &gt; 
&gt; &gt; &gt; This means that we should probably either take the bigger hit now to the code, or just land this as-is. Do you have any of your earlier work still around so I can get a sense of more of the details? If not, maybe I should spend at least a little time trying to implement it myself so I can get a better sense.
&gt; &gt; 
&gt; &gt; Nope, I nuked it. In the current patch, you will notice that by using an empty string as the search path entry for constructing the result of expectation_files() that it makes it very straightforward to introduce the generic expectations file. One way to address that would be to add a post-processing phase for every implementation of expectations_files() that rewrites &quot;/platform/TestExpectations&quot; as &quot;/TestExpectations&quot;.
&gt; &gt; 
&gt; &gt; I could give that a shot if you like.
&gt; 
&gt; Yeah, I saw that and wasn&apos;t a big fan of that approach either, it&apos;s kinda mysterious.
&gt; 
&gt; I wonder if this is another good motivator for me to attempt to refactor that code again and get everybody using more common logic for this.

Well, I have to admit that I found the current code rather in need of refactoring. For example, every port (except WinPort) overrides expectations_files(), while WinPort relies on the base class (Port) implementation. Further, pretty much all of these implementations appear to be doing the same thing but in slightly different ways.

My preference would be to land this patch (after I add the post-processing step as suggested above), and then you (or someone else with enough interest) could do the refactoring per time available.

Right now, I actually have a need for the generic expectations file, so I&apos;d like to see it landed sooner than perhaps may be required if a rewrite is performed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831291</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-02-12 14:56:10 -0800</bug_when>
    <thetext>let me take a more detailed look this afternoon and get back to you. I&apos;d prefer not to land this patch until then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831295</commentid>
    <comment_count>16</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-12 14:57:03 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; let me take a more detailed look this afternoon and get back to you. I&apos;d prefer not to land this patch until then.

ok, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831355</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-02-12 15:33:48 -0800</bug_when>
    <thetext>Okay, I took a quick-ish look. I think the thing to do is to rename the existing implementations of expectation_files() to _port_specific_expectation_files(), and provide a generic implementation in base.py that returns [self.relative_test_filename(&apos;TestExpectations&apos;)] + self._port_specific_expectation_files(), and then update the tests.

The path_to_test_expectations_file() will still return the &quot;default&quot; port-specific file, and the rebaselining commands in webkit-patch will still be broken w/ multiple files, but I&apos;m not sure that the changes I&apos;m describing here will really make these things worse - we really just need to fix bug 95390.

At any rate, I think the changes described above should work, should be no bigger than your current patch, and should be fairly forward-going. Does this make sense, and do you want to take a stab at it, or would you prefer me to do it (I probably won&apos;t be able to get to it until later this evening)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831441</commentid>
    <comment_count>18</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-12 17:04:25 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Okay, I took a quick-ish look. I think the thing to do is to rename the existing implementations of expectation_files() to _port_specific_expectation_files(), and provide a generic implementation in base.py that returns [self.relative_test_filename(&apos;TestExpectations&apos;)] + self._port_specific_expectation_files(), and then update the tests.
&gt; 
&gt; The path_to_test_expectations_file() will still return the &quot;default&quot; port-specific file, and the rebaselining commands in webkit-patch will still be broken w/ multiple files, but I&apos;m not sure that the changes I&apos;m describing here will really make these things worse - we really just need to fix bug 95390.
&gt; 
&gt; At any rate, I think the changes described above should work, should be no bigger than your current patch, and should be fairly forward-going. Does this make sense, and do you want to take a stab at it, or would you prefer me to do it (I probably won&apos;t be able to get to it until later this evening)?

sounds good; i&apos;ll handle it then update patch later today</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832211</commentid>
    <comment_count>19</comment_count>
      <attachid>188151</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-13 12:40:51 -0800</bug_when>
    <thetext>Created attachment 188151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832320</commentid>
    <comment_count>20</comment_count>
      <attachid>188151</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-02-13 14:03:10 -0800</bug_when>
    <thetext>Comment on attachment 188151
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/rebaseline.py:155
&gt; +            expectations = TestExpectations(port, include_generic=False, include_overrides=False)

interesting. I missed that this was doing include_overrides=False before. I don&apos;t like having to add include_generic, but it is consistent and does make some things easier. I think this is fine for now until I can clean up how rebaselining handles the cascade as a whole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833087</commentid>
    <comment_count>21</comment_count>
      <attachid>188151</attachid>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-14 08:12:19 -0800</bug_when>
    <thetext>Comment on attachment 188151
Patch

i believe this is ready for CQ; the mac-ews fail appears to be unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833571</commentid>
    <comment_count>22</comment_count>
      <attachid>188151</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 16:58:03 -0800</bug_when>
    <thetext>Comment on attachment 188151
Patch

Clearing flags on attachment: 188151

Committed r142941: &lt;http://trac.webkit.org/changeset/142941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833572</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 16:58:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187924</attachid>
            <date>2013-02-12 13:44:51 -0800</date>
            <delta_ts>2013-02-13 12:40:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37565-20130212144120.patch</filename>
            <type>text/plain</type>
            <size>13614</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTc4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWUyMTY4MTA2MWJkZDM1M2YxMzM3YTIwYzZlNzhiYjQx
NmU1NTM1YS4uY2EyOTk5MzQ5YzYyZWU5NDU5OWQ3NTk0OGM5MTkwMjJmYjRkNjIwYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDEzLTAyLTEyICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgbmV3LXJ1bi13ZWJraXQtdGVzdHMgbmVlZHMgYSBzaGFyZWQgdGVzdF9leHBlY3RhdGlvbnMu
dHh0IGJldHdlZW4gYWxsIFdlYktpdCBwb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgZ2VuZXJpYyBUZXN0RXhwZWN0YXRpb25zIGZp
bGUgdGhhdCBhcHBsaWVzIGFzIGEgZmFsbGJhY2sgZm9yIGFsbCBwb3J0cywgdGhlIGxvY2F0aW9u
IG9mIHdoaWNoCisgICAgICAgIGlzIExheW91dFRlc3RzL3BsYXRmb3JtL1Rlc3RFeHBlY3RhdGlv
bnMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHk6CisgICAgICAgIChQb3J0LnBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVjdGF0aW9uc19maWxl
KToKKyAgICAgICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5leHBlY3RhdGlvbnNfZmlsZXMpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5OgorICAg
ICAgICAoRWZsUG9ydC5leHBlY3RhdGlvbnNfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3RrUG9ydC5leHBlY3Rh
dGlvbnNfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZ3RrX3VuaXR0ZXN0LnB5OgorICAgICAgICAoR3RrUG9ydFRlc3QudGVzdF9leHBlY3RhdGlv
bnNfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5leHBlY3RhdGlvbnNfZmlsZXMpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAg
ICAgICAgKFBvcnRUZXN0Q2FzZS50ZXN0X2V4cGVjdGF0aW9uc19vcmRlcmluZyk6CisgICAgICAg
ICh0ZXN0X2V4cGVjdGF0aW9uc19maWxlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9xdC5weToKKyAgICAgICAgKFF0UG9ydC5leHBlY3RhdGlvbnNfZmls
ZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5p
dHRlc3QucHk6CisgICAgICAgIChRdFBvcnRUZXN0LnRlc3RfZXhwZWN0YXRpb25zX2ZpbGVzKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVz
dC5weToKKyAgICAgICAgKFdpblBvcnRUZXN0LnRlc3RfZXhwZWN0YXRpb25zX2ZpbGVzKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllc191bml0dGVzdC5w
eToKKyAgICAgICAgKFByaW50RXhwZWN0YXRpb25zVGVzdC50ZXN0X3BhdGhzKToKKwogMjAxMy0w
Mi0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEaXNhYmxl
IGRlbGV0ZSBidXR0b24gY29udHJvbGxlciBvbiBub24tTWFjIHBvcnRzIGFuZCBkZWxldGUgRWRp
dG9yQ2xpZW50OjpzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZDQ1YjIwZjNjZmVkZmU3
OWJhZmI3YmIyNGEwNzU2MDAwMzU1ZWU2Yy4uY2E3ZTBiMDZlOThiZDIxY2RiNWJjNTJlYmI2MWU2
YjcwYzkzMjk1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQpAQCAtODA2LDYgKzgwNiwxMCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLl9vcHRpb25zLmVuc3VyZV92YWx1ZShuYW1lLCBkZWZhdWx0X3Zh
bHVlKQogCiAgICAgQG1lbW9pemVkCisgICAgZGVmIHBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVj
dGF0aW9uc19maWxlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCcnKSwgJ1Rlc3RFeHBlY3RhdGlvbnMnKQorCisg
ICAgQG1lbW9pemVkCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxm
KToKICAgICAgICAgIiIiVXBkYXRlIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyB0byB0aGUgcGFzc2Vk
LWluIHN0cmluZy4KIApAQCAtMTA3Myw3ICsxMDc3LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgIGRlZiBleHBlY3RhdGlvbnNfZmlsZXMoc2VsZik6CiAgICAgICAgICMgVW5saWtlIGJhc2Vs
aW5lX3NlYXJjaF9wYXRoLCB3ZSBvbmx5IHdhbnQgdG8gc2VhcmNoIFtXSzItUE9SVCwgUE9SVC1W
RVJTSU9OLCBQT1JUXSBhbmQgYW55IGRpcmVjdG9yaWVzCiAgICAgICAgICMgaW5jbHVkZWQgdmlh
IC0tYWRkaXRpb25hbC1wbGF0Zm9ybS1kaXJlY3RvcnksIG5vdCB0aGUgZnVsbCBjYXNhZGUuCi0g
ICAgICAgIHNlYXJjaF9wYXRocyA9IFtzZWxmLnBvcnRfbmFtZV0KKyAgICAgICAgc2VhcmNoX3Bh
dGhzID0gWycnLCBzZWxmLnBvcnRfbmFtZV0KIAogICAgICAgICBub25fd2syX25hbWUgPSBzZWxm
Lm5hbWUoKS5yZXBsYWNlKCctd2syJywgJycpCiAgICAgICAgIGlmIG5vbl93azJfbmFtZSAhPSBz
ZWxmLnBvcnRfbmFtZToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZWZsLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9lZmwucHkKaW5kZXggZjg2NzNjYTRlMWUwMTE5ZjNjY2MxNjNkNmYyYWNiMjk0ZTJhZTk5
Mi4uYmRlNmNhNjM4YzUyMTMyZTIxNTk3Y2NiM2I0OWEzOGI3MDBiZjg0YiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkKQEAgLTExNCw3ICsx
MTQsMTAgQEAgY2xhc3MgRWZsUG9ydChQb3J0KToKIAogICAgIGRlZiBleHBlY3RhdGlvbnNfZmls
ZXMoc2VsZik6CiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0aGUg
ZGVmYXVsdCBhbGdvcml0aG0gaGVyZS4KLSAgICAgICAgcmV0dXJuIGxpc3QocmV2ZXJzZWQoW3Nl
bGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChwKSwgJ1Rlc3RF
eHBlY3RhdGlvbnMnKSBmb3IgcCBpbiBzZWxmLl9zZWFyY2hfcGF0aHMoKV0pKQorICAgICAgICBw
YXRocyA9IHNlbGYuX3NlYXJjaF9wYXRocygpCisgICAgICAgICMgQWRkIGdlbmVyaWMgZXhwZWN0
YXRpb25zLgorICAgICAgICBwYXRocy5hcHBlbmQoJycpCisgICAgICAgIHJldHVybiBsaXN0KHJl
dmVyc2VkKFtzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgo
cCksICdUZXN0RXhwZWN0YXRpb25zJykgZm9yIHAgaW4gcGF0aHNdKSkKIAogICAgIGRlZiBzaG93
X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYsIHJlc3VsdHNfZmlsZW5hbWUpOgogICAgICAgICAjIEZJ
WE1FOiBXZSBzaG91bGQgZmluZCBhIHdheSB0byBzaGFyZSB0aGlzIGltcGxtZW50YXRpb24gd2l0
aCBHdGssCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2d0ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3Rr
LnB5CmluZGV4IGRlNmJlZDU2OGU3MTMxZGNlNmM4YjdkYjU2ZThlYTljNjUyNjE2YWQuLmQ1YzRl
MGUyM2JmYTU3ZGUzZjFmOTRkYTYwNmUzZjFlMjhkMTU3MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CkBAIC0xMTIsNyArMTEyLDEwIEBA
IGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWFyY2hfcGF0aHMKIAogICAg
IGRlZiBleHBlY3RhdGlvbnNfZmlsZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHApLCAnVGVzdEV4cGVjdGF0
aW9ucycpIGZvciBwIGluIHJldmVyc2VkKHNlbGYuX3NlYXJjaF9wYXRocygpKV0KKyAgICAgICAg
cGF0aHMgPSBzZWxmLl9zZWFyY2hfcGF0aHMoKQorICAgICAgICAjIEFkZCBnZW5lcmljIGV4cGVj
dGF0aW9ucy4KKyAgICAgICAgcGF0aHMuYXBwZW5kKCcnKQorICAgICAgICByZXR1cm4gW3NlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChwKSwgJ1Rlc3RFeHBl
Y3RhdGlvbnMnKSBmb3IgcCBpbiByZXZlcnNlZChwYXRocyldCiAKICAgICAjIEZJWE1FOiBXZSBz
aG91bGQgZmluZCBhIHdheSB0byBzaGFyZSB0aGlzIGltcGxtZW50YXRpb24gd2l0aCBHdGssCiAg
ICAgIyBvciB0ZWFjaCBydW4tbGF1bmNoZXIgaG93IHRvIGNhbGwgcnVuLXNhZmFyaSBhbmQgbW92
ZSB0aGlzIGRvd24gdG8gUG9ydC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkKaW5kZXggNzVhZTUzNTAzOTVkOGIx
ZjVkZjM5NWFiYzNkMjM5NTExYTM1ZTkyNi4uZWIxNzcwODM5Mzc1YzcyNDAxOGYxNjFhMTY0OWQy
NTljM2E3MjJjMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9ndGtfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkKQEAgLTUyLDEwICs1MiwxMCBAQCBjbGFzcyBH
dGtQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9l
eHBlY3RhdGlvbnNfZmlsZXMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKSwgWycv
bW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucycs
ICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmV4cGVjdGF0aW9uc19maWxl
cygpLCBbJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL1Rlc3RFeHBlY3RhdGlv
bnMnLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMnLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMS9UZXN0
RXhwZWN0YXRpb25zJ10pCiAKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9
TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCksIFsnL21vY2stY2hlY2tvdXQvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMnLCAnL21vY2stY2hlY2tvdXQvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMnLCAnL21vY2stY2hlY2tvdXQv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zJ10pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKSwgWycvbW9jay1jaGVj
a291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9UZXN0RXhwZWN0YXRpb25zJywgJy9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zJywgJy9tb2NrLWNo
ZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zJywgJy9tb2Nr
LWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucydd
KQogCiAgICAgZGVmIHRlc3Rfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKICAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tYWMucHkKaW5kZXggMzBiMzI1NWRiZDY4Yzc2MDlkNTRmYTNiOGZmMTYz
YzA4YzdjYTY2OC4uNTQxZmE2YTcyMTYxOTU4NDQwYmI0ZGI5MGMzNjhmODkyMTFhODhhMyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAg
LTgzLDcgKzgzLDEwIEBAIGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0KToKICAgICAgICAgcmV0dXJu
IG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZmFsbGJhY2tfbmFtZXMpCiAKICAgICBk
ZWYgZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYpOgotICAgICAgICByZXR1cm4gcmV2ZXJzZWQoW3Nl
bGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChkKSwgJ1Rlc3RF
eHBlY3RhdGlvbnMnKSBmb3IgZCBpbiBzZWxmLmJhc2VsaW5lX3NlYXJjaF9wYXRoKCldKQorICAg
ICAgICBwYXRocyA9IHNlbGYuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKQorICAgICAgICAjIEFkZCBn
ZW5lcmljIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgcGF0aHMuYXBwZW5kKCcnKQorICAgICAgICBy
ZXR1cm4gbGlzdChyZXZlcnNlZChbc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9i
YXNlbGluZV9wYXRoKHApLCAnVGVzdEV4cGVjdGF0aW9ucycpIGZvciBwIGluIHBhdGhzXSkpCiAK
ICAgICBkZWYgc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lPU5vbmUp
OgogICAgICAgICBlbnYgPSBzdXBlcihNYWNQb3J0LCBzZWxmKS5zZXR1cF9lbnZpcm9uX2Zvcl9z
ZXJ2ZXIoc2VydmVyX25hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKaW5kZXggODVhODAzNmRkNTgyMzFh
NzdiNjMxYzNkOTc4Y2M1YmQ1Y2UxNmU5My4uODI2MDkyZWM0OTEwOGU3ZDc2ZDc5OGJkMjdiODAx
YzljMzZkNmM4NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpAQCAtNDI0LDcgKzQyNCw4IEBAIGNsYXNz
IFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGZvciBwYXRoIGluIHBv
cnQuZXhwZWN0YXRpb25zX2ZpbGVzKCk6CiAgICAgICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndy
aXRlX3RleHRfZmlsZShwYXRoLCAnJykKICAgICAgICAgb3JkZXJlZF9kaWN0ID0gcG9ydC5leHBl
Y3RhdGlvbnNfZGljdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX3Rl
c3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgb3JkZXJlZF9kaWN0LmtleXMoKVswXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVjdGF0aW9uc19m
aWxlKCksIG9yZGVyZWRfZGljdC5rZXlzKClbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKSwgb3JkZXJlZF9kaWN0LmtleXMo
KVsxXSkKIAogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoYWRkaXRpb25hbF9leHBlY3Rh
dGlvbnM9WycvdG1wL2ZvbycsICcvdG1wL2JhciddKQogICAgICAgICBwb3J0ID0gc2VsZi5tYWtl
X3BvcnQob3B0aW9ucz1vcHRpb25zKQpAQCAtNTA3LDE3ICs1MDgsMTcgQEAgY2xhc3MgUG9ydFRl
c3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZGVmIHBsYXRmb3JtX2RpcnMocG9y
dCk6CiAgICAgICAgICAgICByZXR1cm4gW3BvcnQuaG9zdC5maWxlc3lzdGVtLmJhc2VuYW1lKHBv
cnQuaG9zdC5maWxlc3lzdGVtLmRpcm5hbWUoZikpIGZvciBmIGluIHBvcnQuZXhwZWN0YXRpb25z
X2ZpbGVzKCldCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGF0Zm9ybV9kaXJzKHBvcnQp
LCBbJ3Rlc3R3ZWJraXRwb3J0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhdGZvcm1f
ZGlycyhwb3J0KSwgWydwbGF0Zm9ybScsICd0ZXN0d2Via2l0cG9ydCddKQogCiAgICAgICAgIHBv
cnQgPSBUZXN0V2ViS2l0UG9ydChwb3J0X25hbWU9InRlc3R3ZWJraXRwb3J0LXZlcnNpb24iKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYXRmb3JtX2RpcnMocG9ydCksIFsndGVzdHdlYmtp
dHBvcnQnLCAndGVzdHdlYmtpdHBvcnQtdmVyc2lvbiddKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBsYXRmb3JtX2RpcnMocG9ydCksIFsncGxhdGZvcm0nLCAndGVzdHdlYmtpdHBvcnQnLCAn
dGVzdHdlYmtpdHBvcnQtdmVyc2lvbiddKQogCiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9y
dChwb3J0X25hbWU9InRlc3R3ZWJraXRwb3J0LXZlcnNpb24td2syIikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwbGF0Zm9ybV9kaXJzKHBvcnQpLCBbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3
ZWJraXRwb3J0LXZlcnNpb24nLCAnd2syJywgJ3Rlc3R3ZWJraXRwb3J0LXdrMiddKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBsYXRmb3JtX2RpcnMocG9ydCksIFsncGxhdGZvcm0nLCAndGVz
dHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBvcnQtdmVyc2lvbicsICd3azInLCAndGVzdHdlYmtp
dHBvcnQtd2syJ10pCiAKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KHBvcnRfbmFtZT0i
dGVzdHdlYmtpdHBvcnQtdmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cHRpb25zPU1vY2tPcHRpb25zKGFkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5PVsiaW50ZXJu
YWwtdGVzdHdlYmtpdHBvcnQiXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhdGZvcm1f
ZGlycyhwb3J0KSwgWyd0ZXN0d2Via2l0cG9ydCcsICd0ZXN0d2Via2l0cG9ydC12ZXJzaW9uJywg
J2ludGVybmFsLXRlc3R3ZWJraXRwb3J0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxh
dGZvcm1fZGlycyhwb3J0KSwgWydwbGF0Zm9ybScsICd0ZXN0d2Via2l0cG9ydCcsICd0ZXN0d2Vi
a2l0cG9ydC12ZXJzaW9uJywgJ2ludGVybmFsLXRlc3R3ZWJraXRwb3J0J10pCiAKICAgICBkZWYg
dGVzdF9yb290X29wdGlvbihzZWxmKToKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CmluZGV4
IDM4Yjc3MTAxYmE4NmIwNjRhNGY2ZTZjZmE0NzIwZDIxNzJkMmI2YjEuLmM3OTc5ODEzODhhNDYx
ZTI5MTc0YTcwMDFiOGNkMDdmOTliNDNmY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5weQpAQCAtMTUxLDYgKzE1MSw4IEBAIGNsYXNzIFF0UG9y
dChQb3J0KToKICAgICAgICAgcGF0aHMgPSBzZWxmLl9zZWFyY2hfcGF0aHMoKQogICAgICAgICBp
ZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgogICAgICAgICAgICAgcGF0
aHMuYXBwZW5kKCd3azInKQorICAgICAgICAjIEFkZCBnZW5lcmljIGV4cGVjdGF0aW9ucy4KKyAg
ICAgICAgcGF0aHMuYXBwZW5kKCcnKQogCiAgICAgICAgICMgZXhwZWN0YXRpb25zX2ZpbGVzKCkg
dXNlcyB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluIF9zZWFyY2hfcGF0aHMgcmV2ZXJzZWQuCiAg
ICAgICAgICMgZS5nLiBxdCAtPiBxdC1saW51eCAtPiBxdC00LjgKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5CmluZGV4
IDM4ZWRmMGFmNjRlZDgzYzYzYTk2MTY1MDcxMTliMjM2OTIwMmE5MzEuLjA3ZmUwZWQ1MDcyOTgw
ZDZlOGNhY2VlZTMwYzExNGU4ZTE0YzE2NmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdF91bml0dGVzdC5weQpAQCAtOTcsOCArOTcs
OSBAQCBjbGFzcyBRdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICAg
ICAgICAgIGV4cGVjdGF0aW9uc19jYXNlID0gZGVlcGNvcHkoY2FzZSkKICAgICAgICAgICAgIGlm
IGV4cGVjdGF0aW9uc19jYXNlWyd1c2Vfd2Via2l0MiddOgogICAgICAgICAgICAgICAgIGV4cGVj
dGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXS5hcHBlbmQoIndrMiIpCisgICAgICAgICAgICBl
eHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10uYXBwZW5kKCcnKQogICAgICAgICAgICAg
ZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddLnJldmVyc2UoKQotICAgICAgICAgICAg
ZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddID0gbWFwKGxhbWJkYSBwYXRoOiAnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vJXMvVGVzdEV4cGVjdGF0aW9ucycgJSAo
cGF0aCksIGV4cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXSkKKyAgICAgICAgICAgIGV4
cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXSA9IG1hcChsYW1iZGEgcGF0aDogJy9tb2Nr
LWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL1Rlc3RFeHBlY3RhdGlvbnMnIGlmIG5vdCBw
YXRoIGVsc2UgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtLyVzL1Rlc3RFeHBl
Y3RhdGlvbnMnICUgKHBhdGgpLCBleHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10pCiAg
ICAgICAgICAgICBzZWxmLl9hc3NlcnRfZXhwZWN0YXRpb25zX2ZpbGVzKCoqZXhwZWN0YXRpb25z
X2Nhc2UpCiAKICAgICBkZWYgdGVzdF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYpOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91
bml0dGVzdC5weQppbmRleCA5MDI3Y2ViYjEwMjRkM2VkYzcyNDI0ODNjZWJiNTEyODgxZmQ2NzA3
Li5lNzc2ODdjMDIxOTZjYWJkNWM3NTE0MjM3YTUyZTY2NTIyYTk3OWEyIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVz
dC5weQpAQCAtMTA1LDUgKzEwNSw1IEBAIGNsYXNzIFdpblBvcnRUZXN0KHBvcnRfdGVzdGNhc2Uu
UG9ydFRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9ydW50aW1lX2Zl
YXR1cmVfbGlzdCgpLCBbJ2ZvbycsICdiYXInXSkKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9u
c19maWxlcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tYWtlX3Bv
cnQoKS5leHBlY3RhdGlvbnNfZmlsZXMoKSksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVy
PVRydWUsIGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnKSkuZXhwZWN0YXRpb25zX2ZpbGVzKCkpLCA0
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLm1ha2VfcG9ydCgpLmV4cGVjdGF0
aW9uc19maWxlcygpKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tYWtl
X3BvcnQob3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1ZSwgY29uZmln
dXJhdGlvbj0nUmVsZWFzZScpKS5leHBlY3RhdGlvbnNfZmlsZXMoKSksIDUpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllc191bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0
LnB5CmluZGV4IDFmNGIzN2U2ODQyOTdiNjM2Yjk0NjdmNDExYTJhZTVlYzVmNDk3MmUuLmZhYzll
OTY0NTZjYWYxZmIxZWNjMGI5ODc1YTViNzY4YTZiZWMyMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5CkBA
IC0yMjMsNyArMjIzLDggQEAgY2xhc3MgUHJpbnRFeHBlY3RhdGlvbnNUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3BhdGhzKHNlbGYpOgogICAgICAgICBzZWxmLnJ1bl90
ZXN0KFtdLAotICAgICAgICAgICAgICAgICAgICAgICgnTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVz
dC9UZXN0RXhwZWN0YXRpb25zXG4nCisgICAgICAgICAgICAgICAgICAgICAgKCdMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9UZXN0RXhwZWN0YXRpb25zXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdM
YXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0L1Rlc3RFeHBlY3RhdGlvbnNcbicKICAgICAgICAgICAg
ICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3Qtd2luLXhwL1Rlc3RFeHBlY3Rh
dGlvbnNcbicpLAogICAgICAgICAgICAgICAgICAgICAgIHBhdGhzPVRydWUpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188151</attachid>
            <date>2013-02-13 12:40:51 -0800</date>
            <delta_ts>2013-02-14 16:58:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37565-20130213133719.patch</filename>
            <type>text/plain</type>
            <size>25030</size>
            <attacher name="Glenn Adams">glenn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTc4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWUyMTY4MTA2MWJkZDM1M2YxMzM3YTIwYzZlNzhiYjQx
NmU1NTM1YS4uNmQxZjQxM2Y0Nzk4N2YzZTQ2ODhlMzA4YmU4MGI5ZTk2NTFjZTAzMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUw
IEBACisyMDEzLTAyLTEzICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CisKKyAgICAg
ICAgbmV3LXJ1bi13ZWJraXQtdGVzdHMgbmVlZHMgYSBzaGFyZWQgVGVzdEV4cGVjdGF0aW9ucyBi
ZXR3ZWVuIGFsbCBXZWJLaXQgcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM3NTY1CisKKyAgICAgICAgSW50cm9kdWNlIGdlbmVyaWMgVGVzdEV4
cGVjdGF0aW9ucyBmaWxlIHRoYXQgYXBwbGllcyBhcyBhIGZhbGxiYWNrIGZvciBhbGwgcG9ydHMs
IHRoZSBsb2NhdGlvbiBvZiB3aGljaAorICAgICAgICBpcyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weToKKyAgICAgICAgKEZha2VQb3J0LnBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVj
dGF0aW9uc19maWxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9t
b2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zLl9f
aW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHk6CisgICAgICAgIChQb3J0LnBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVjdGF0aW9uc19m
aWxlKToKKyAgICAgICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5fcG9ydF9zcGVjaWZpY19leHBl
Y3RhdGlvbnNfZmlsZXMpOgorICAgICAgICAoUG9ydC5leHBlY3RhdGlvbnNfZmlsZXMpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6Cisg
ICAgICAgIChDaHJvbWl1bVBvcnQuX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2Fu
ZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9wb3J0X3NwZWNpZmljX2V4
cGVjdGF0aW9uc19maWxlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAoQ2hyb21pdW1Qb3J0
VGVzdENhc2UudGVzdF9leHBlY3RhdGlvbnNfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZWZsLnB5OgorICAgICAgICAoRWZsUG9ydC5fcG9ydF9z
cGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3RrUG9ydC5fcG9ydF9zcGVjaWZp
Y19leHBlY3RhdGlvbnNfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0LnB5OgorICAgICAgICAoR3RrUG9ydFRlc3QudGVzdF9l
eHBlY3RhdGlvbnNfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5fcG9ydF9zcGVjaWZpY19leHBlY3Rh
dGlvbnNfZmlsZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvcG9ydF90ZXN0Y2FzZS5weToKKyAgICAgICAgKFBvcnRUZXN0Q2FzZS50ZXN0X2V4cGVjdGF0
aW9uc19vcmRlcmluZyk6CisgICAgICAgICh0ZXN0X2V4cGVjdGF0aW9uc19maWxlcyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5weToKKyAgICAgICAg
KFF0UG9ydC5fcG9ydF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHk6CisgICAgICAg
IChRdFBvcnRUZXN0LnRlc3RfZXhwZWN0YXRpb25zX2ZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weToKKyAgICAgICAgKFdp
blBvcnRUZXN0LnRlc3RfZXhwZWN0YXRpb25zX2ZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllc191bml0dGVzdC5weToKKyAgICAgICAgKFByaW50
RXhwZWN0YXRpb25zVGVzdC50ZXN0X3BhdGhzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weToKKyAgICAgICAgKFJlYmFzZWxpbmVUZXN0Ll91
cGRhdGVfZXhwZWN0YXRpb25zX2ZpbGUpOgorCiAyMDEzLTAyLTExICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERpc2FibGUgZGVsZXRlIGJ1dHRvbiBjb250cm9s
bGVyIG9uIG5vbi1NYWMgcG9ydHMgYW5kIGRlbGV0ZSBFZGl0b3JDbGllbnQ6OnNob3VsZFNob3dE
ZWxldGVJbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5
CmluZGV4IDg5YWRlMTkzMzEwYmYwMTVhZTNkNjhhODcwZTA2MzJmNjUzZmVlMjIuLjQ3MjgwMjky
YTU1OWIzYmY4MDk3MzUxNjU2MDI0MmNjNTFjZjZkZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xpbnRfdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4
cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtNTksNiArNTksOCBAQCBjbGFzcyBGYWtlUG9ydChv
YmplY3QpOgogICAgIGRlZiBnZXRfb3B0aW9uKHNlbGYsIF8sIHZhbCk6CiAgICAgICAgIHJldHVy
biB2YWwKIAorICAgIGRlZiBwYXRoX3RvX2dlbmVyaWNfdGVzdF9leHBlY3RhdGlvbnNfZmlsZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuICcnCiAKIGNsYXNzIEZha2VGYWN0b3J5KG9iamVjdCk6CiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRzKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0
aW9ucy5weQppbmRleCBkYThlYmJiNjM2ZjVkYzdlZWU0NzUwMGI2MGJmNzljYTRmYTVkZmYxLi5m
NWM5NzdlNTdhMDA0ODNhMjdlYWViY2UzN2Y5NzA2MjRmYjRmYTY3IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
ZXhwZWN0YXRpb25zLnB5CkBAIC04NDIsNyArODQyLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9u
cyhvYmplY3QpOgogICAgICMgRklYTUU6IFRoaXMgY29uc3RydWN0b3IgZG9lcyB0b28gbXVjaCB3
b3JrLiBXZSBzaG91bGQgbW92ZSB0aGUgYWN0dWFsIHBhcnNpbmcgb2YKICAgICAjIHRoZSBleHBl
Y3RhdGlvbnMgaW50byBzZXBhcmF0ZSByb3V0aW5lcyBzbyB0aGF0IGxpbnRpbmcgYW5kIGhhbmRs
aW5nIG92ZXJyaWRlcwogICAgICMgY2FuIGJlIGNvbnRyb2xsZWQgc2VwYXJhdGVseSwgYW5kIHRo
ZSBjb25zdHJ1Y3RvciBjYW4gYmUgbW9yZSBvZiBhIG5vLW9wLgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwb3J0LCB0ZXN0cz1Ob25lLCBpbmNsdWRlX292ZXJyaWRlcz1UcnVlLCBleHBlY3RhdGlv
bnNfdG9fbGludD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgdGVzdHM9Tm9u
ZSwgaW5jbHVkZV9nZW5lcmljPVRydWUsIGluY2x1ZGVfb3ZlcnJpZGVzPVRydWUsIGV4cGVjdGF0
aW9uc190b19saW50PU5vbmUpOgogICAgICAgICBzZWxmLl9mdWxsX3Rlc3RfbGlzdCA9IHRlc3Rz
CiAgICAgICAgIHNlbGYuX3Rlc3RfY29uZmlnID0gcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKQog
ICAgICAgICBzZWxmLl9pc19saW50X21vZGUgPSBleHBlY3RhdGlvbnNfdG9fbGludCBpcyBub3Qg
Tm9uZQpAQCAtODUwLDE2ICs4NTAsMzIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9ucyhvYmplY3Qp
OgogICAgICAgICBzZWxmLl9wYXJzZXIgPSBUZXN0RXhwZWN0YXRpb25QYXJzZXIocG9ydCwgdGVz
dHMsIHNlbGYuX2lzX2xpbnRfbW9kZSkKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAg
ICAgc2VsZi5fc2tpcHBlZF90ZXN0c193YXJuaW5ncyA9IFtdCisgICAgICAgIHNlbGYuX2V4cGVj
dGF0aW9ucyA9IFtdCiAKICAgICAgICAgZXhwZWN0YXRpb25zX2RpY3QgPSBleHBlY3RhdGlvbnNf
dG9fbGludCBvciBwb3J0LmV4cGVjdGF0aW9uc19kaWN0KCkKLSAgICAgICAgc2VsZi5fZXhwZWN0
YXRpb25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKGV4cGVjdGF0aW9uc19kaWN0LmtleXMoKVswXSwg
ZXhwZWN0YXRpb25zX2RpY3QudmFsdWVzKClbMF0pCi0gICAgICAgIHNlbGYuX2FkZF9leHBlY3Rh
dGlvbnMoc2VsZi5fZXhwZWN0YXRpb25zKQogCi0gICAgICAgIGlmIGxlbihleHBlY3RhdGlvbnNf
ZGljdCkgPiAxIGFuZCBpbmNsdWRlX292ZXJyaWRlczoKLSAgICAgICAgICAgIGZvciBuYW1lIGlu
IGV4cGVjdGF0aW9uc19kaWN0LmtleXMoKVsxOl06Ci0gICAgICAgICAgICAgICAgZXhwZWN0YXRp
b25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKG5hbWUsIGV4cGVjdGF0aW9uc19kaWN0W25hbWVdKQor
ICAgICAgICBleHBlY3RhdGlvbnNfZGljdF9pbmRleCA9IDAKKyAgICAgICAgIyBQb3B1bGF0ZSBn
ZW5lcmljIGV4cGVjdGF0aW9ucyAoaWYgZW5hYmxlZCBieSBpbmNsdWRlX2dlbmVyaWMpLgorICAg
ICAgICBpZiBwb3J0LnBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkgaW4g
ZXhwZWN0YXRpb25zX2RpY3Q6CisgICAgICAgICAgICBpZiBpbmNsdWRlX2dlbmVyaWM6CisgICAg
ICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKGV4cGVjdGF0aW9u
c19kaWN0LmtleXMoKVtleHBlY3RhdGlvbnNfZGljdF9pbmRleF0sIGV4cGVjdGF0aW9uc19kaWN0
LnZhbHVlcygpW2V4cGVjdGF0aW9uc19kaWN0X2luZGV4XSkKICAgICAgICAgICAgICAgICBzZWxm
Ll9hZGRfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9ucykKICAgICAgICAgICAgICAgICBzZWxmLl9l
eHBlY3RhdGlvbnMgKz0gZXhwZWN0YXRpb25zCisgICAgICAgICAgICBleHBlY3RhdGlvbnNfZGlj
dF9pbmRleCArPSAxCisKKyAgICAgICAgIyBQb3B1bGF0ZSBkZWZhdWx0IHBvcnQgZXhwZWN0YXRp
b25zIChhbHdheXMgZW5hYmxlZCkuCisgICAgICAgIGlmIGxlbihleHBlY3RhdGlvbnNfZGljdCkg
PiBleHBlY3RhdGlvbnNfZGljdF9pbmRleDoKKyAgICAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNl
bGYuX3BhcnNlci5wYXJzZShleHBlY3RhdGlvbnNfZGljdC5rZXlzKClbZXhwZWN0YXRpb25zX2Rp
Y3RfaW5kZXhdLCBleHBlY3RhdGlvbnNfZGljdC52YWx1ZXMoKVtleHBlY3RhdGlvbnNfZGljdF9p
bmRleF0pCisgICAgICAgICAgICBzZWxmLl9hZGRfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9ucykK
KyAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyArPSBleHBlY3RhdGlvbnMKKyAgICAgICAg
ICAgIGV4cGVjdGF0aW9uc19kaWN0X2luZGV4ICs9IDEKKworICAgICAgICAjIFBvcHVsYXRlIG92
ZXJyaWRlIGV4cGVjdGF0aW9ucyAoaWYgZW5hYmxlZCBieSBpbmNsdWRlX292ZXJyaWRlcykuCisg
ICAgICAgIHdoaWxlIGxlbihleHBlY3RhdGlvbnNfZGljdCkgPiBleHBlY3RhdGlvbnNfZGljdF9p
bmRleCBhbmQgaW5jbHVkZV9vdmVycmlkZXM6CisgICAgICAgICAgICBleHBlY3RhdGlvbnMgPSBz
ZWxmLl9wYXJzZXIucGFyc2UoZXhwZWN0YXRpb25zX2RpY3Qua2V5cygpW2V4cGVjdGF0aW9uc19k
aWN0X2luZGV4XSwgZXhwZWN0YXRpb25zX2RpY3QudmFsdWVzKClbZXhwZWN0YXRpb25zX2RpY3Rf
aW5kZXhdKQorICAgICAgICAgICAgc2VsZi5fYWRkX2V4cGVjdGF0aW9ucyhleHBlY3RhdGlvbnMp
CisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgKz0gZXhwZWN0YXRpb25zCisgICAgICAg
ICAgICBleHBlY3RhdGlvbnNfZGljdF9pbmRleCArPSAxCiAKICAgICAgICAgIyBGSVhNRTogbW92
ZSBpZ25vcmVfdGVzdHMgaW50byBwb3J0LnNraXBwZWRfbGF5b3V0X3Rlc3RzKCkKICAgICAgICAg
c2VsZi5hZGRfc2tpcHBlZF90ZXN0cyhwb3J0LnNraXBwZWRfbGF5b3V0X3Rlc3RzKHRlc3RzKS51
bmlvbihzZXQocG9ydC5nZXRfb3B0aW9uKCdpZ25vcmVfdGVzdHMnLCBbXSkpKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCBkNDVi
MjBmM2NmZWRmZTc5YmFmYjdiYjI0YTA3NTYwMDAzNTVlZTZjLi5lYjI2YzZiN2Q2MjE0ZjEyYzA1
ZGM1OGIzZTU5ZDRhMjUyNWM2YWJlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC04MDYsNiArODA2LDEwIEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX29wdGlvbnMuZW5zdXJlX3ZhbHVlKG5hbWUs
IGRlZmF1bHRfdmFsdWUpCiAKICAgICBAbWVtb2l6ZWQKKyAgICBkZWYgcGF0aF90b19nZW5lcmlj
X3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9maWxl
c3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdUZXN0RXhwZWN0YXRpb25zJykK
KworICAgIEBtZW1vaXplZAogICAgIGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUo
c2VsZik6CiAgICAgICAgICIiIlVwZGF0ZSB0aGUgdGVzdCBleHBlY3RhdGlvbnMgdG8gdGhlIHBh
c3NlZC1pbiBzdHJpbmcuCiAKQEAgLTEwNzAsNyArMTA3NCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0
KToKICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoImFkZGl0aW9uYWxfZXhwZWN0YXRpb25z
IHBhdGggJyVzJyBkb2VzIG5vdCBleGlzdCIgJSBwYXRoKQogICAgICAgICByZXR1cm4gZXhwZWN0
YXRpb25zCiAKLSAgICBkZWYgZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYpOgorICAgIGRlZiBfcG9y
dF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMoc2VsZik6CiAgICAgICAgICMgVW5saWtlIGJh
c2VsaW5lX3NlYXJjaF9wYXRoLCB3ZSBvbmx5IHdhbnQgdG8gc2VhcmNoIFtXSzItUE9SVCwgUE9S
VC1WRVJTSU9OLCBQT1JUXSBhbmQgYW55IGRpcmVjdG9yaWVzCiAgICAgICAgICMgaW5jbHVkZWQg
dmlhIC0tYWRkaXRpb25hbC1wbGF0Zm9ybS1kaXJlY3RvcnksIG5vdCB0aGUgZnVsbCBjYXNhZGUu
CiAgICAgICAgIHNlYXJjaF9wYXRocyA9IFtzZWxmLnBvcnRfbmFtZV0KQEAgLTEwODgsNiArMTA5
Miw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gW3NlbGYuX2ZpbGVz
eXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChkKSwgJ1Rlc3RFeHBlY3RhdGlv
bnMnKSBmb3IgZCBpbiBzZWFyY2hfcGF0aHNdCiAKKyAgICBkZWYgZXhwZWN0YXRpb25zX2ZpbGVz
KHNlbGYpOgorICAgICAgICByZXR1cm4gW3NlbGYucGF0aF90b19nZW5lcmljX3Rlc3RfZXhwZWN0
YXRpb25zX2ZpbGUoKV0gKyBzZWxmLl9wb3J0X3NwZWNpZmljX2V4cGVjdGF0aW9uc19maWxlcygp
CisKICAgICBkZWYgcmVwb3NpdG9yeV9wYXRocyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyBh
IGxpc3Qgb2YgKHJlcG9zaXRvcnlfbmFtZSwgcmVwb3NpdG9yeV9wYXRoKSB0dXBsZXMgb2YgaXRz
IGRlcGVuZGluZyBjb2RlIGJhc2UuCiAgICAgICAgIEJ5IGRlZmF1bHQgaXQgcmV0dXJucyBhIGxp
c3QgdGhhdCBvbmx5IGNvbnRhaW5zIGEgKCd3ZWJraXQnLCA8d2Via2l0UmVwb3NzaXRvcnlQYXRo
PikgdHVwbGUuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCAwOTA2YTdkZDQ4OTUyM2U1ZTczNTZiNTNhNGUwMmQ4
YWJlNzI0ZDBmLi43ZmJhYmJjZmExM2QzNmZmNTA0ODJiM2IxMmI3ZDhkY2IzNDk0NjQ4IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkKQEAgLTM0OSw3ICszNDksNyBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAgICAg
ZGVmIHdhcm5faWZfYnVnX21pc3NpbmdfaW5fdGVzdF9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAg
ICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYpOgorICAg
IGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMoc2VsZik6CiAgICAgICAgIHBh
dGhzID0gW3NlbGYucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCldCiAgICAgICAgIHNr
aWFfZXhwZWN0YXRpb25zX3BhdGggPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdza2lh
JywgJ3NraWFfdGVzdF9leHBlY3RhdGlvbnMudHh0JykKICAgICAgICAgIyBGSVhNRTogd2Ugc2hv
dWxkIHByb2JhYmx5IHdhcm4gaWYgdGhpcyBmaWxlIGlzIG1pc3NpbmcgaW4gc29tZSBzaXR1YXRp
b25zLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IDE3MjgzNWRmYWE3ZWQ1OWYzMDBhMDRh
ZGY2MzYzN2EwNzJhM2UyZTMuLmVhMmU5Y2I1YjZkZWM4MzZiNDI0ZGE2MzljOWI2ZDQ1NzVjZmY3
YTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTIzNCwxMiArMjM0LDEyIEBAIGNsYXNz
IENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiBleHBlY3Rh
dGlvbnNfZmlsZXMoc2VsZik6CisgICAgZGVmIF9wb3J0X3NwZWNpZmljX2V4cGVjdGF0aW9uc19m
aWxlcyhzZWxmKToKICAgICAgICAgIyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1hbmRy
b2lkL1Rlc3RFeHBlY3RhdGlvbnMgc2hvdWxkIGNvbnRhaW4gb25seSB0aGUgcnVsZXMgdG8KICAg
ICAgICAgIyBza2lwIHRlc3RzIGZvciB0aGUgZmVhdHVyZXMgbm90IHN1cHBvcnRlZCBvciBub3Qg
dGVzdGFibGUgb24gQW5kcm9pZC4KICAgICAgICAgIyBPdGhlciBydWxlcyBzaG91bGQgYmUgaW4g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucy4KICAgICAgICAg
YW5kcm9pZF9leHBlY3RhdGlvbnNfZmlsZSA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdM
YXlvdXRUZXN0cycsICdwbGF0Zm9ybScsICdjaHJvbWl1bS1hbmRyb2lkJywgJ1Rlc3RFeHBlY3Rh
dGlvbnMnKQotICAgICAgICByZXR1cm4gc3VwZXIoQ2hyb21pdW1BbmRyb2lkUG9ydCwgc2VsZiku
ZXhwZWN0YXRpb25zX2ZpbGVzKCkgKyBbYW5kcm9pZF9leHBlY3RhdGlvbnNfZmlsZV0KKyAgICAg
ICAgcmV0dXJuIHN1cGVyKENocm9taXVtQW5kcm9pZFBvcnQsIHNlbGYpLl9wb3J0X3NwZWNpZmlj
X2V4cGVjdGF0aW9uc19maWxlcygpICsgW2FuZHJvaWRfZXhwZWN0YXRpb25zX2ZpbGVdCiAKICAg
ICBkZWYgcmVxdWlyZXNfaHR0cF9zZXJ2ZXIoc2VsZik6CiAgICAgICAgICIiIkNocm9taXVtIEFu
ZHJvaWQgcnVucyB0ZXN0cyBvbiBkZXZpY2VzLCBhbmQgdXNlcyB0aGUgSFRUUCBzZXJ2ZXIgdG8K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5weQppbmRleCA0ZDYzMzM3ZTMxYjg3YjU2
ZTcxNzgzYzU0ZmRkZjRiNGE4NmM1YzlkLi5mMTUxY2VkN2QxYjAyY2MyODQyODRiMTFmMWUyN2Zj
ZDEzNDljMDBjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9wb3J0X3Rlc3RjYXNlLnB5CkBAIC0xNzYs
NiArMTc2LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0VGVzdENhc2UocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdENhc2UpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBwb3J0
LnBvcnRfbmFtZSA9ICdjaHJvbWl1bScKIAorICAgICAgICBnZW5lcmljX3BhdGggPSBwb3J0LnBh
dGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKICAgICAgICAgZXhwZWN0YXRp
b25zX3BhdGggPSBwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpCiAgICAgICAg
IGNocm9taXVtX292ZXJyaWRlc19wYXRoID0gcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgK
ICAgICAgICAgICAgICd3ZWJraXQnLCAndG9vbHMnLCAnbGF5b3V0X3Rlc3RzJywgJ3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCcpCkBAIC0xODUsMTUgKzE4NiwxNSBAQCBjbGFzcyBDaHJvbWl1bVBvcnRU
ZXN0Q2FzZShwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQuX2ZpbGVz
eXN0ZW0ud3JpdGVfdGV4dF9maWxlKHNraWFfb3ZlcnJpZGVzX3BhdGgsICdkdW1tYXkgdGV4dCcp
CiAKICAgICAgICAgcG9ydC5fb3B0aW9ucy5idWlsZGVyX25hbWUgPSAnRFVNTVlfQlVJTERFUl9O
QU1FJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCks
IFtleHBlY3RhdGlvbnNfcGF0aCwgc2tpYV9vdmVycmlkZXNfcGF0aCwgY2hyb21pdW1fb3ZlcnJp
ZGVzX3BhdGhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZXhwZWN0YXRpb25zX2Zp
bGVzKCksIFtnZW5lcmljX3BhdGgsIGV4cGVjdGF0aW9uc19wYXRoLCBza2lhX292ZXJyaWRlc19w
YXRoLCBjaHJvbWl1bV9vdmVycmlkZXNfcGF0aF0pCiAKICAgICAgICAgcG9ydC5fb3B0aW9ucy5i
dWlsZGVyX25hbWUgPSAnYnVpbGRlciAoZGVwcyknCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKSwgW2V4cGVjdGF0aW9uc19wYXRoLCBza2lhX292ZXJy
aWRlc19wYXRoLCBjaHJvbWl1bV9vdmVycmlkZXNfcGF0aF0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocG9ydC5leHBlY3RhdGlvbnNfZmlsZXMoKSwgW2dlbmVyaWNfcGF0aCwgZXhwZWN0YXRp
b25zX3BhdGgsIHNraWFfb3ZlcnJpZGVzX3BhdGgsIGNocm9taXVtX292ZXJyaWRlc19wYXRoXSkK
IAogICAgICAgICAjIEEgYnVpbGRlciB3aGljaCBkb2VzIE5PVCBvYnNlcnZlIHRoZSBDaHJvbWl1
bSB0ZXN0X2V4cGVjdGF0aW9ucywKICAgICAgICAgIyBidXQgc3RpbGwgb2JzZXJ2ZXMgdGhlIFNr
aWEgdGVzdF9leHBlY3RhdGlvbnMuLi4KICAgICAgICAgcG9ydC5fb3B0aW9ucy5idWlsZGVyX25h
bWUgPSAnYnVpbGRlcicKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmV4cGVjdGF0aW9u
c19maWxlcygpLCBbZXhwZWN0YXRpb25zX3BhdGgsIHNraWFfb3ZlcnJpZGVzX3BhdGhdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCksIFtnZW5lcmlj
X3BhdGgsIGV4cGVjdGF0aW9uc19wYXRoLCBza2lhX292ZXJyaWRlc19wYXRoXSkKIAogICAgIGRl
ZiB0ZXN0X2V4cGVjdGF0aW9uc19vcmRlcmluZyhzZWxmKToKICAgICAgICAgIyBzaW5jZSB3ZSBk
b24ndCBpbXBsZW1lbnQgc2VsZi5wb3J0X25hbWUgaW4gQ2hyb21pdW1Qb3J0LgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9lZmwucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2VmbC5weQppbmRleCBmODY3M2Nh
NGUxZTAxMTlmM2NjYzE2M2Q2ZjJhY2IyOTRlMmFlOTkyLi5kY2NkMDFkY2I2ZWNjODAwMDExMjc1
ZWM5MGQyZjQzOTg2YzZkYWNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2VmbC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2VmbC5weQpAQCAtMTEyLDcgKzExMiw3IEBAIGNsYXNzIEVmbFBvcnQoUG9y
dCk6CiAgICAgZGVmIGRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAg
IHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3NlYXJjaF9wYXRo
cygpKQogCi0gICAgZGVmIGV4cGVjdGF0aW9uc19maWxlcyhzZWxmKToKKyAgICBkZWYgX3BvcnRf
c3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBXZSBz
aG91bGQgYmUgYWJsZSB0byB1c2UgdGhlIGRlZmF1bHQgYWxnb3JpdGhtIGhlcmUuCiAgICAgICAg
IHJldHVybiBsaXN0KHJldmVyc2VkKFtzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0
X2Jhc2VsaW5lX3BhdGgocCksICdUZXN0RXhwZWN0YXRpb25zJykgZm9yIHAgaW4gc2VsZi5fc2Vh
cmNoX3BhdGhzKCldKSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9ndGsucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2d0ay5weQppbmRleCBkZTZiZWQ1NjhlNzEzMWRjZTZjOGI3ZGI1NmU4ZWE5YzY1MjYx
NmFkLi5jOTQzNzhlZWQ4N2MyMDc3ZDM2YTViZDRlNzAwNjM0Yzg3ZjJiYzg5IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQpAQCAtMTExLDcg
KzExMSw3IEBAIGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAgICAgIHNlYXJjaF9wYXRocy5leHRl
bmQoc2VsZi5nZXRfb3B0aW9uKCJhZGRpdGlvbmFsX3BsYXRmb3JtX2RpcmVjdG9yeSIsIFtdKSkK
ICAgICAgICAgcmV0dXJuIHNlYXJjaF9wYXRocwogCi0gICAgZGVmIGV4cGVjdGF0aW9uc19maWxl
cyhzZWxmKToKKyAgICBkZWYgX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYp
OgogICAgICAgICByZXR1cm4gW3NlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFz
ZWxpbmVfcGF0aChwKSwgJ1Rlc3RFeHBlY3RhdGlvbnMnKSBmb3IgcCBpbiByZXZlcnNlZChzZWxm
Ll9zZWFyY2hfcGF0aHMoKSldCiAKICAgICAjIEZJWE1FOiBXZSBzaG91bGQgZmluZCBhIHdheSB0
byBzaGFyZSB0aGlzIGltcGxtZW50YXRpb24gd2l0aCBHdGssCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CmluZGV4
IDc1YWU1MzUwMzk1ZDhiMWY1ZGYzOTVhYmMzZDIzOTUxMWEzNWU5MjYuLmMyOGZlZDQ0NjM2MWY4
YzVkNmU2MzQ2YTY3MTI5ZDE3ZDE4NWZmODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CkBAIC01MiwxMCAr
NTIsMTAgQEAgY2xhc3MgR3RrUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgog
CiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYpOgogICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZXhwZWN0YXRp
b25zX2ZpbGVzKCksIFsnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMnLCAnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
LXdrMS9UZXN0RXhwZWN0YXRpb25zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5l
eHBlY3RhdGlvbnNfZmlsZXMoKSwgWycvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zJywgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zJywgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azEvVGVzdEV4cGVjdGF0aW9ucyddKQogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChv
cHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1UcnVlKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LmV4cGVjdGF0aW9uc19maWxlcygpLCBbJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zJywgJy9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zJywgJy9tb2NrLWNo
ZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucyddKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCksIFsnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucycsICcvbW9jay1jaGVja291
dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucycsICcvbW9jay1jaGVj
a291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucycsICcvbW9jay1j
aGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMnXSkK
IAogICAgIGRlZiB0ZXN0X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZik6CiAgICAgICAgIHBv
cnQgPSBzZWxmLm1ha2VfcG9ydCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IDMwYjMyNTVkYmQ2OGM3NjA5ZDU0ZmEzYjhmZjE2M2Mw
OGM3Y2E2NjguLjFjYmI4NmQzMmY2MzhiZTNlOTZlMDcwOWE0MTdjZWIzMjc4OTc5YTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CkBAIC04
Miw4ICs4Miw4IEBAIGNsYXNzIE1hY1BvcnQoQXBwbGVQb3J0KToKICAgICAgICAgICAgIGZhbGxi
YWNrX25hbWVzID0gW3NlbGYuX3drMl9wb3J0X25hbWUoKSwgJ3drMiddICsgZmFsbGJhY2tfbmFt
ZXMKICAgICAgICAgcmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZmFsbGJh
Y2tfbmFtZXMpCiAKLSAgICBkZWYgZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gcmV2ZXJzZWQoW3NlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxp
bmVfcGF0aChkKSwgJ1Rlc3RFeHBlY3RhdGlvbnMnKSBmb3IgZCBpbiBzZWxmLmJhc2VsaW5lX3Nl
YXJjaF9wYXRoKCldKQorICAgIGRlZiBfcG9ydF9zcGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMo
c2VsZik6CisgICAgICAgIHJldHVybiBsaXN0KHJldmVyc2VkKFtzZWxmLl9maWxlc3lzdGVtLmpv
aW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgocCksICdUZXN0RXhwZWN0YXRpb25zJykgZm9y
IHAgaW4gc2VsZi5iYXNlbGluZV9zZWFyY2hfcGF0aCgpXSkpCiAKICAgICBkZWYgc2V0dXBfZW52
aXJvbl9mb3Jfc2VydmVyKHNlbGYsIHNlcnZlcl9uYW1lPU5vbmUpOgogICAgICAgICBlbnYgPSBz
dXBlcihNYWNQb3J0LCBzZWxmKS5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VydmVyX25hbWUp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Bv
cnRfdGVzdGNhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3BvcnRfdGVzdGNhc2UucHkKaW5kZXggODVhODAzNmRkNTgyMzFhNzdiNjMxYzNkOTc4Y2M1YmQ1
Y2UxNmU5My4uZGY0ODBkNDQ2MmQ1YTYyMDRlZGMwNDYzNmYyMTllYzYyZmJiOTVkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3Rj
YXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9y
dF90ZXN0Y2FzZS5weQpAQCAtNDI0LDcgKzQyNCw4IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGZvciBwYXRoIGluIHBvcnQuZXhwZWN0YXRpb25zX2Zp
bGVzKCk6CiAgICAgICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRo
LCAnJykKICAgICAgICAgb3JkZXJlZF9kaWN0ID0gcG9ydC5leHBlY3RhdGlvbnNfZGljdCgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2Zp
bGUoKSwgb3JkZXJlZF9kaWN0LmtleXMoKVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0LnBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCksIG9yZGVyZWRfZGlj
dC5rZXlzKClbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX3Rlc3Rf
ZXhwZWN0YXRpb25zX2ZpbGUoKSwgb3JkZXJlZF9kaWN0LmtleXMoKVsxXSkKIAogICAgICAgICBv
cHRpb25zID0gTW9ja09wdGlvbnMoYWRkaXRpb25hbF9leHBlY3RhdGlvbnM9WycvdG1wL2Zvbycs
ICcvdG1wL2JhciddKQogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1vcHRp
b25zKQpAQCAtNTA3LDE3ICs1MDgsMTcgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgZGVmIHBsYXRmb3JtX2RpcnMocG9ydCk6CiAgICAgICAgICAgICBy
ZXR1cm4gW3BvcnQuaG9zdC5maWxlc3lzdGVtLmJhc2VuYW1lKHBvcnQuaG9zdC5maWxlc3lzdGVt
LmRpcm5hbWUoZikpIGZvciBmIGluIHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCldCiAKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwbGF0Zm9ybV9kaXJzKHBvcnQpLCBbJ3Rlc3R3ZWJraXRwb3J0
J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhdGZvcm1fZGlycyhwb3J0KSwgWydMYXlv
dXRUZXN0cycsICd0ZXN0d2Via2l0cG9ydCddKQogCiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0
UG9ydChwb3J0X25hbWU9InRlc3R3ZWJraXRwb3J0LXZlcnNpb24iKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBsYXRmb3JtX2RpcnMocG9ydCksIFsndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdl
YmtpdHBvcnQtdmVyc2lvbiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYXRmb3JtX2Rp
cnMocG9ydCksIFsnTGF5b3V0VGVzdHMnLCAndGVzdHdlYmtpdHBvcnQnLCAndGVzdHdlYmtpdHBv
cnQtdmVyc2lvbiddKQogCiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChwb3J0X25hbWU9
InRlc3R3ZWJraXRwb3J0LXZlcnNpb24td2syIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
bGF0Zm9ybV9kaXJzKHBvcnQpLCBbJ3Rlc3R3ZWJraXRwb3J0JywgJ3Rlc3R3ZWJraXRwb3J0LXZl
cnNpb24nLCAnd2syJywgJ3Rlc3R3ZWJraXRwb3J0LXdrMiddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBsYXRmb3JtX2RpcnMocG9ydCksIFsnTGF5b3V0VGVzdHMnLCAndGVzdHdlYmtpdHBv
cnQnLCAndGVzdHdlYmtpdHBvcnQtdmVyc2lvbicsICd3azInLCAndGVzdHdlYmtpdHBvcnQtd2sy
J10pCiAKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KHBvcnRfbmFtZT0idGVzdHdlYmtp
dHBvcnQtdmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPU1v
Y2tPcHRpb25zKGFkZGl0aW9uYWxfcGxhdGZvcm1fZGlyZWN0b3J5PVsiaW50ZXJuYWwtdGVzdHdl
YmtpdHBvcnQiXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhdGZvcm1fZGlycyhwb3J0
KSwgWyd0ZXN0d2Via2l0cG9ydCcsICd0ZXN0d2Via2l0cG9ydC12ZXJzaW9uJywgJ2ludGVybmFs
LXRlc3R3ZWJraXRwb3J0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhdGZvcm1fZGly
cyhwb3J0KSwgWydMYXlvdXRUZXN0cycsICd0ZXN0d2Via2l0cG9ydCcsICd0ZXN0d2Via2l0cG9y
dC12ZXJzaW9uJywgJ2ludGVybmFsLXRlc3R3ZWJraXRwb3J0J10pCiAKICAgICBkZWYgdGVzdF9y
b290X29wdGlvbihzZWxmKToKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CmluZGV4IDM4Yjc3
MTAxYmE4NmIwNjRhNGY2ZTZjZmE0NzIwZDIxNzJkMmI2YjEuLjAzMmY4ZWE5Mjk3ZGZiMDFkZjk4
M2Y4NDllZTEwZTg2MjZiMDAyYjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9xdC5weQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIFF0UG9ydChQb3J0
KToKICAgICBkZWYgZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKICAgICAgICAg
cmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2VsZi5fc2VhcmNoX3BhdGhz
KCkpCiAKLSAgICBkZWYgZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYpOgorICAgIGRlZiBfcG9ydF9z
cGVjaWZpY19leHBlY3RhdGlvbnNfZmlsZXMoc2VsZik6CiAgICAgICAgIHBhdGhzID0gc2VsZi5f
c2VhcmNoX3BhdGhzKCkKICAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9y
dW5uZXInKToKICAgICAgICAgICAgIHBhdGhzLmFwcGVuZCgnd2syJykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0X3VuaXR0ZXN0LnB5Cmlu
ZGV4IDM4ZWRmMGFmNjRlZDgzYzYzYTk2MTY1MDcxMTliMjM2OTIwMmE5MzEuLjNiZmViOGNiYzM3
MjY3YjkyMDU4YWExZjY1M2JhNTk4NzU5Yzg0NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdF91bml0dGVzdC5weQpAQCAtOTcsOCAr
OTcsOSBAQCBjbGFzcyBRdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAg
ICAgICAgICAgIGV4cGVjdGF0aW9uc19jYXNlID0gZGVlcGNvcHkoY2FzZSkKICAgICAgICAgICAg
IGlmIGV4cGVjdGF0aW9uc19jYXNlWyd1c2Vfd2Via2l0MiddOgogICAgICAgICAgICAgICAgIGV4
cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXS5hcHBlbmQoIndrMiIpCisgICAgICAgICAg
ICBleHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10uYXBwZW5kKCcnKQogICAgICAgICAg
ICAgZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddLnJldmVyc2UoKQotICAgICAgICAg
ICAgZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddID0gbWFwKGxhbWJkYSBwYXRoOiAn
L21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vJXMvVGVzdEV4cGVjdGF0aW9ucycg
JSAocGF0aCksIGV4cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXSkKKyAgICAgICAgICAg
IGV4cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXSA9IG1hcChsYW1iZGEgcGF0aDogJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMnIGlmIG5vdCBwYXRoIGVs
c2UgJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtLyVzL1Rlc3RFeHBlY3RhdGlv
bnMnICUgKHBhdGgpLCBleHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10pCiAgICAgICAg
ICAgICBzZWxmLl9hc3NlcnRfZXhwZWN0YXRpb25zX2ZpbGVzKCoqZXhwZWN0YXRpb25zX2Nhc2Up
CiAKICAgICBkZWYgdGVzdF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYpOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW5fdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVz
dC5weQppbmRleCA5MDI3Y2ViYjEwMjRkM2VkYzcyNDI0ODNjZWJiNTEyODgxZmQ2NzA3Li5lNzc2
ODdjMDIxOTZjYWJkNWM3NTE0MjM3YTUyZTY2NTIyYTk3OWEyIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbl91bml0dGVzdC5weQpA
QCAtMTA1LDUgKzEwNSw1IEBAIGNsYXNzIFdpblBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRl
c3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9ydW50aW1lX2ZlYXR1cmVf
bGlzdCgpLCBbJ2ZvbycsICdiYXInXSkKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19maWxl
cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tYWtlX3BvcnQoKS5l
eHBlY3RhdGlvbnNfZmlsZXMoKSksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNl
bGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUs
IGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnKSkuZXhwZWN0YXRpb25zX2ZpbGVzKCkpLCA0KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLm1ha2VfcG9ydCgpLmV4cGVjdGF0aW9uc19m
aWxlcygpKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tYWtlX3BvcnQo
b3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9VHJ1ZSwgY29uZmlndXJhdGlv
bj0nUmVsZWFzZScpKS5leHBlY3RhdGlvbnNfZmlsZXMoKSksIDUpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllc191bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDFmNGIzN2U2ODQyOTdiNjM2Yjk0NjdmNDExYTJhZTVlYzVmNDk3MmUuLmI5NGIwMzE0ZWVm
NDE3MjQ2Y2UzYTczMTVjMjVmMTRkMWViMTQyOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzX3VuaXR0ZXN0LnB5CkBAIC0yMjMs
NyArMjIzLDggQEAgY2xhc3MgUHJpbnRFeHBlY3RhdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgIGRlZiB0ZXN0X3BhdGhzKHNlbGYpOgogICAgICAgICBzZWxmLnJ1bl90ZXN0KFtd
LAotICAgICAgICAgICAgICAgICAgICAgICgnTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdC9UZXN0
RXhwZWN0YXRpb25zXG4nCisgICAgICAgICAgICAgICAgICAgICAgKCdMYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0
Zm9ybS90ZXN0L1Rlc3RFeHBlY3RhdGlvbnNcbicKICAgICAgICAgICAgICAgICAgICAgICAgJ0xh
eW91dFRlc3RzL3BsYXRmb3JtL3Rlc3Qtd2luLXhwL1Rlc3RFeHBlY3RhdGlvbnNcbicpLAogICAg
ICAgICAgICAgICAgICAgICAgIHBhdGhzPVRydWUpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKaW5kZXggOTBlMWM1NmUxMDdlNDJj
YTQyZWRmY2JiNmRiMTA0NzU4YzNkOWQyNi4uYjZlNDA4ZDUyMDRkNjMzM2ViY2ZlYTUzMjM1YWEz
YzUwODczNTE4NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3JlYmFzZWxpbmUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3JlYmFzZWxpbmUucHkKQEAgLTE1Miw3ICsxNTIsNyBAQCBjbGFzcyBSZWJhc2VsaW5lVGVz
dChBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgogICAgICAgICAgICAgcGF0aCA9IHBvcnQu
cGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKICAgICAgICAgICAgIGxvY2sgPSBzZWxm
Ll90b29sLm1ha2VfZmlsZV9sb2NrKHBhdGggKyAnLmxvY2snKQogICAgICAgICAgICAgbG9jay5h
Y3F1aXJlX2xvY2soKQotICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gVGVzdEV4cGVjdGF0aW9u
cyhwb3J0LCBpbmNsdWRlX292ZXJyaWRlcz1GYWxzZSkKKyAgICAgICAgICAgIGV4cGVjdGF0aW9u
cyA9IFRlc3RFeHBlY3RhdGlvbnMocG9ydCwgaW5jbHVkZV9nZW5lcmljPUZhbHNlLCBpbmNsdWRl
X292ZXJyaWRlcz1GYWxzZSkKICAgICAgICAgICAgIGZvciB0ZXN0X2NvbmZpZ3VyYXRpb24gaW4g
cG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpOgogICAgICAgICAgICAgICAgIGlmIHRlc3Rf
Y29uZmlndXJhdGlvbi52ZXJzaW9uID09IHBvcnQudGVzdF9jb25maWd1cmF0aW9uKCkudmVyc2lv
bjoKICAgICAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zU3RyaW5nID0gZXhwZWN0YXRpb25z
LnJlbW92ZV9jb25maWd1cmF0aW9uX2Zyb21fdGVzdCh0ZXN0X25hbWUsIHRlc3RfY29uZmlndXJh
dGlvbikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAxNDhlODllYjA0NjQ3YTliNzZjY2E3YjQ3ZjY1NWYxOTI0YTY2YjEyLi5l
YTRhYmUzMTM3N2Y0NDY5NWZlNTBkNmM5M2MyNGRhYTU4OTAwN2QxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTMtMDItMTMgIEdsZW5uIEFkYW1zICA8Z2xlbm5Ac2t5bmF2LmNvbT4KKworICAg
ICAgICBuZXctcnVuLXdlYmtpdC10ZXN0cyBuZWVkcyBhIHNoYXJlZCBUZXN0RXhwZWN0YXRpb25z
IGJldHdlZW4gYWxsIFdlYktpdCBwb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1NjUKKworICAgICAgICBJbnRyb2R1Y2UgZ2VuZXJpYyBUZXN0
RXhwZWN0YXRpb25zIGZpbGUgdGhhdCBhcHBsaWVzIGFzIGEgZmFsbGJhY2sgZm9yIGFsbCBwb3J0
cywgdGhlIGxvY2F0aW9uIG9mIHdoaWNoCisgICAgICAgIGlzIExheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOiBBZGRlZC4KKwogMjAxMy0wMi0xMSAgS2Vpc2hpIEhhdHRv
cmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTQwNzc4KTpD
YWxlbmRhciBQaWNrZXIgYnV0dG9ucyBhcmUgd3Jvbmcgd2hlbiBydGwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlOTAzYWFkNWE5YjgxZTBiNTg2NDk3YmQ1ODZhMWVlMzVmM2ViOWEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0wLDAgKzEs
MyBAQAorIyBUaGlzIGZpbGUgY29udGFpbnMgZ2VuZXJpYyB0ZXN0IGV4cGVjdGF0aW9ucyB0aGF0
IGFwcGx5IHRvIGFsbCBwb3J0cyBvZiBXZWJLaXQuCisjCisjIFNlZSBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL3dpa2kvVGVzdEV4cGVjdGF0aW9ucyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlz
IGZpbGUuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>