<?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>135929</bug_id>
          
          <creation_ts>2014-08-13 19:29:20 -0700</creation_ts>
          <short_desc>import-w3c-tests doesn&apos;t handle relative paths to support files in ref files correctly</short_desc>
          <delta_ts>2014-09-11 13:16:26 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>136745</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rebecca Hauck">rhauck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>bjonesbe</cc>
    
    <cc>commit-queue</cc>
    
    <cc>glenn</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1029011</commentid>
    <comment_count>0</comment_count>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2014-08-13 19:29:20 -0700</bug_when>
    <thetext>I discovered this when importing the W3C CSS Shapes test suite, so it&apos;s easy to repro by just re-importing that.

Most of the W3C tests live in reference/ subdirectory and they are imported into the same directory as the test with the -expected.html suffix to conform to WebKit&apos;s conventions. When they contain relative paths to support files (images, css files, scripts), those path must be updated so they&apos;re relative to the new location. This was working at one point, but must have broken somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033111</commentid>
    <comment_count>1</comment_count>
      <attachid>237605</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2014-09-03 18:31:28 -0700</bug_when>
    <thetext>Created attachment 237605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033112</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-03 18:34:21 -0700</bug_when>
    <thetext>Attachment 237605 did not pass style-queue:


ERROR: Tools/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033242</commentid>
    <comment_count>3</comment_count>
      <attachid>237605</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-09-04 11:06:58 -0700</bug_when>
    <thetext>Comment on attachment 237605
Patch

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

&gt; Tools/ChangeLog:8
&gt; +	The recent refactor of the W3C test repo falsified a bunch of assmumptions that

Fix the indentation here. (The style bot also complained. :-)

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:40
&gt; +def convert_for_webkit(new_path, filename, refrelpath, host=Host()):

Nit: I don&apos;t really like the name refrelpath. I think for consistency with resources_relpath below, this should at least be ref_relpath. reference_relpath would be better, I think. (I&apos;d really like refernce_relative_path, but relpath is used in a bunch of places already, so probably best to stick with that for now.) It&apos;s up to you if you change it.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:174
&gt; +                if attr_name == &apos;src&apos; and  not attr_value.startswith(&apos;data:&apos;):

Do you ever want to replace if you have a URL scheme at all? For example, if you have http: or file:, you probably don&apos;t want to do the replacement, either.

Also, shouldn&apos;t you be checking the scheme in the case of a url() in convert_relative_reffile_paths()? It seems like a helper function to actually do the replacement (or not if you have a path that doesn&apos;t need a replacement) would be a good idea.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:103
&gt; +                    test_info[&apos;refrelpath&apos;] = self.filesystem.relpath(self.filename, ref_file).replace(&apos;../&apos;, &apos;&apos;, 1).replace(testfile[1], &apos;&apos;)

Why do you remove the first &apos;../&apos;?

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:-137
&gt; -        &quot;&quot;&quot; Searches the file for all paths specified in url()&apos;s, href or src attributes.&quot;&quot;&quot;

Why did you remove the search for href attributes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033503</commentid>
    <comment_count>4</comment_count>
      <attachid>237703</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2014-09-05 11:48:22 -0700</bug_when>
    <thetext>Created attachment 237703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033512</commentid>
    <comment_count>5</comment_count>
      <attachid>237605</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2014-09-05 12:11:15 -0700</bug_when>
    <thetext>Comment on attachment 237605
Patch

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

&gt;&gt; Tools/ChangeLog:8
&gt;&gt; +	The recent refactor of the W3C test repo falsified a bunch of assmumptions that
&gt; 
&gt; Fix the indentation here. (The style bot also complained. :-)

Fixed in new patch.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:40
&gt;&gt; +def convert_for_webkit(new_path, filename, refrelpath, host=Host()):
&gt; 
&gt; Nit: I don&apos;t really like the name refrelpath. I think for consistency with resources_relpath below, this should at least be ref_relpath. reference_relpath would be better, I think. (I&apos;d really like refernce_relative_path, but relpath is used in a bunch of places already, so probably best to stick with that for now.) It&apos;s up to you if you change it.

In the new patch I&apos;ve changed this to be reference_relpath to be consistent with resources_relpath. I&apos;m also now passing in a reference_support dictionary here with 2 keys- reference_relpath and reference_support_files to the replacement code will replace them specifically rather than using regex&apos;s.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:174
&gt;&gt; +                if attr_name == &apos;src&apos; and  not attr_value.startswith(&apos;data:&apos;):
&gt; 
&gt; Do you ever want to replace if you have a URL scheme at all? For example, if you have http: or file:, you probably don&apos;t want to do the replacement, either.
&gt; 
&gt; Also, shouldn&apos;t you be checking the scheme in the case of a url() in convert_relative_reffile_paths()? It seems like a helper function to actually do the replacement (or not if you have a path that doesn&apos;t need a replacement) would be a good idea.

In the new patch, the converter gets the full list of ref support paths, so instead of this check, I check if the attr_value is any of the support file paths. Similar thing in convert_relative_reffile_paths. Also, I&apos;ve expanded the list of tags that can have src attributes. May be overkill, but it&apos;s harmless.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:103
&gt;&gt; +                    test_info[&apos;refrelpath&apos;] = self.filesystem.relpath(self.filename, ref_file).replace(&apos;../&apos;, &apos;&apos;, 1).replace(testfile[1], &apos;&apos;)
&gt; 
&gt; Why do you remove the first &apos;../&apos;?

Because filesystem.relpath (which is os.relpath) assumes that its arguments are directories. In the new patch, I&apos;ve changed the call to relpath to be on each file&apos;s parent dir to avoid this confusion.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:-137
&gt;&gt; -        &quot;&quot;&quot; Searches the file for all paths specified in url()&apos;s, href or src attributes.&quot;&quot;&quot;
&gt; 
&gt; Why did you remove the search for href attributes?

I assumed that hrefs are only in metadata and the only place where there&apos;s an actual path to a file in metadata is for reference files, which are retrieved and handled specifically through their rel=match attribute. I guess there could be a path in an a href though, so I put this back in the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033898</commentid>
    <comment_count>6</comment_count>
      <attachid>237703</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-09-08 11:09:13 -0700</bug_when>
    <thetext>Comment on attachment 237703
Patch

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

I like this structure better than the first one, but I think you have a bug in here with using an undefined variable (and then lots of naming and formatting comments)

&gt; Tools/ChangeLog:9
&gt; +        were made when this script was originally writted re: relative paths in ref files.

s/writted/written
Nit: s/re:/with respect to/

&gt; Tools/ChangeLog:10
&gt; +        This patch updates paths in ref files if they move relative to the test file.       

Nit: This patch updates import-w3c-tests to update paths in ref files if they move relative to the test file.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:40
&gt; +def convert_for_webkit(new_path, filename, reference_support, host=Host()):

This needs a better name than &quot;reference_support&quot;, I&apos;m really not sure what the variable is for or what it contains from the name.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:133
&gt; +        for path in self.reference_support[&apos;reference_support_files&apos;]:

Why not just call this &quot;files&quot; instead of &quot;reference_support_files&quot;?

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:136
&gt; +                # FIXME: See comment convert_attributes_if_needed re: WebKit bug #136577. Same applies here.
&gt; +                new_path = re.sub(self.reference_support[&apos;reference_relpath&apos;], &apos;&apos;, path, 1)

Instead of having to point to convert_attributes_if_needed, you should create a function to do the replacement and have one comment in that function.

eg: new_path = self.convert_support_file_path(path)

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:139
&gt; +        return converted

This variable is undefined here, since it&apos;s only mentioned in the nested if statement above.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:150
&gt; +        if self.reference_support is not None and self.reference_support != {}:
&gt; +            converted = self.convert_reference_relpaths(converted[1])
&gt; +            return converted
&gt; +        else:
&gt; +            return converted[1]

All the negations are hard to read, so I&apos;d do this the other way around, and webkit style says that you don&apos;t use an else when it isn&apos;t needed because of a return:

if self.reference_support is None or self.reference_support == {}:
    return converted[1]

return self.convert_reference_relpaths(converted[1])

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:186
&gt; +                    # FIXME: The following line of code assumes that the reference file originated
&gt; +                    # in a subdirectory of the test file&apos;s parent directory and that it is being
&gt; +                    # imported up N levels to be the same directory as the test. Hence, we&apos;re
&gt; +                    # removing the relpath from the attr_value here. This won&apos;t work if the
&gt; +                    # reference file originated in a directory above the test file and is imported
&gt; +                    # down N levels. This scenario occurs many times in the CSS test repo, but
&gt; +                    # it happens to be one single shared reference file that many of the css21
&gt; +                    # tests share from a common ancestor directory. In all of these cases,
&gt; +                    # the original ref file and the test file&apos;s parent dir both have the
&gt; +                    # same relative path to the ref file&apos;s support file, so the new location
&gt; +                    # of the ref file is a lateral move and everything &apos;just works&apos;.  Ideally,
&gt; +                    # the import script should do the right thing wherever the the ref file
&gt; +                    # originates, but this is an edge case and highly unlikely.
&gt; +                    # Logged as Webkit bug #135677.
&gt; +                    new_path = re.sub(self.reference_support[&apos;reference_relpath&apos;], &apos;&apos;, attr_value, 1)

I&apos;d move the comment and re.sub to it&apos;s own function and call that here. Eg: new_path = self.convert_support_file_path(attr_value)

Also in the comment, instead of saying &quot;Logged as WebKit bug #135677&quot;, put a URL to the tracker, like http://webkit.org/b/135677

This is more of a nit, but I think you could make the comment shorter, and just have the full explanation in the bug, since most readers of the code won&apos;t need the full explanation. Maybe something like &quot;FIXME: This doesn&apos;t handle an edge case where simply removing the relative path doesn&apos;t work. See http://webkit.org/b/135677 for details.&quot;

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:102
&gt; +                    test_info[&apos;reference_support&apos;] = {&apos;reference_relpath&apos;: reference_relpath, &apos;reference_support_files&apos;: reference_support_files}

I&apos;d rename this like so:
test_info[&apos;reference_support_info&apos;] = {&apos;reference_relpath&apos;: reference_relpath, &apos;files&apos;: reference_support_files}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034223</commentid>
    <comment_count>7</comment_count>
      <attachid>237877</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2014-09-09 18:57:24 -0700</bug_when>
    <thetext>Created attachment 237877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034310</commentid>
    <comment_count>8</comment_count>
      <attachid>237877</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-09-10 08:29:06 -0700</bug_when>
    <thetext>Comment on attachment 237877
Patch

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

r=me, but please make the following updates before landing

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:149
&gt; +        else:

WebKit style is to omit this else.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:172
&gt; +                if attr_name == &apos;src&apos; and attr_value in self.reference_support_info[&apos;files&apos;]:
&gt; +                    converted = self.convert_reference_relpaths(attr_value)

You&apos;re walking through reference_support_info[&apos;files&apos;] twice in this situation. Either remove the check here (&quot;and attr_value in self.reference_support_info[&apos;files&apos;]&quot;), or create a more specific helper function to do the replacement, and call that both from here and from convert_reference_relpaths.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:141
&gt; +            if not(path.startswith(&apos;http:&apos;)) and not(path.startswith(&apos;mailto:&apos;)) and not(path.startswith(&apos;data:&apos;)):

This is fragile, I think it would be better to do:

uri_scheme_pattern = re.compile(r&quot;[A-Za-z][A-Za-z+.-]*:&quot;);
if uri_scheme_pattern.match(path):

I got the pattern from: http://tools.ietf.org/html/rfc3986#section-3.1
It will also match paths that start with a windows drive letter, but I&apos;m pretty sure that such platform specific paths won&apos;t end up in the W3C repos. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034446</commentid>
    <comment_count>9</comment_count>
      <attachid>237914</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2014-09-10 15:50:00 -0700</bug_when>
    <thetext>Created attachment 237914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034448</commentid>
    <comment_count>10</comment_count>
      <attachid>237914</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-09-10 16:00:09 -0700</bug_when>
    <thetext>Comment on attachment 237914
Patch

You didn&apos;t put my name in the ChangeLog as reviewed by, so I&apos;m r+&apos;ing again so that the CQ will do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034469</commentid>
    <comment_count>11</comment_count>
      <attachid>237914</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-10 17:01:55 -0700</bug_when>
    <thetext>Comment on attachment 237914
Patch

Clearing flags on attachment: 237914

Committed r173498: &lt;http://trac.webkit.org/changeset/173498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034470</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-10 17:01:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034621</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-09-11 09:37:17 -0700</bug_when>
    <thetext>This patch broke the &quot;test-webkitpy&quot; phase.

[1300/1433] webkitpy.w3c.test_converter_unittest.W3CTestConverterTest.test_convert_for_webkit_harness_only erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py&quot;, line 103, in test_convert_for_webkit_harness_only
      converter = _W3CTestConverter(fake_dir_path, DUMMY_FILENAME)
  TypeError: __init__() takes at least 4 arguments (3 given)
  
[1304/1433] webkitpy.w3c.test_converter_unittest.W3CTestConverterTest.test_convert_prefixed_properties erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py&quot;, line 271, in test_convert_prefixed_properties
      converter = _W3CTestConverter(DUMMY_PATH, DUMMY_FILENAME)
  TypeError: __init__() takes at least 4 arguments (3 given)
  
[1308/1433] webkitpy.w3c.test_converter_unittest.W3CTestConverterTest.test_convert_test_harness_paths erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py&quot;, line 194, in test_convert_test_harness_paths
      converter = _W3CTestConverter(fake_dir_path, DUMMY_FILENAME)
  TypeError: __init__() takes at least 4 arguments (3 given)
  
[1316/1433] webkitpy.w3c.test_parser_unittest.TestParserTest.test_analyze_jstest erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py&quot;, line 150, in test_analyze_jstest
      test_info = parser.analyze_test(test_contents=test_html)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 77, in analyze_test
      matches = self.reference_links_of_type(&apos;match&apos;) + self.reference_links_of_type(&apos;mismatch&apos;)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 112, in reference_links_of_type
      return self.test_doc.findAll(rel=reftest_type)
  AttributeError: &apos;NoneType&apos; object has no attribute &apos;findAll&apos;
  
[1320/1433] webkitpy.w3c.test_parser_unittest.TestParserTest.test_analyze_pixel_test_all_false erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py&quot;, line 208, in test_analyze_pixel_test_all_false
      test_info = parser.analyze_test(test_contents=test_html)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 77, in analyze_test
      matches = self.reference_links_of_type(&apos;match&apos;) + self.reference_links_of_type(&apos;mismatch&apos;)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 112, in reference_links_of_type
      return self.test_doc.findAll(rel=reftest_type)
  AttributeError: &apos;NoneType&apos; object has no attribute &apos;findAll&apos;
  
[1324/1433] webkitpy.w3c.test_parser_unittest.TestParserTest.test_analyze_pixel_test_all_true erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py&quot;, line 179, in test_analyze_pixel_test_all_true
      test_info = parser.analyze_test(test_contents=test_html)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 77, in analyze_test
      matches = self.reference_links_of_type(&apos;match&apos;) + self.reference_links_of_type(&apos;mismatch&apos;)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 112, in reference_links_of_type
      return self.test_doc.findAll(rel=reftest_type)
  AttributeError: &apos;NoneType&apos; object has no attribute &apos;findAll&apos;
  
[1328/1433] webkitpy.w3c.test_parser_unittest.TestParserTest.test_analyze_test_reftest_match_and_mismatch erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py&quot;, line 96, in test_analyze_test_reftest_match_and_mismatch
      test_info = parser.analyze_test(test_contents=test_html)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 77, in analyze_test
      matches = self.reference_links_of_type(&apos;match&apos;) + self.reference_links_of_type(&apos;mismatch&apos;)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 112, in reference_links_of_type
      return self.test_doc.findAll(rel=reftest_type)
  AttributeError: &apos;NoneType&apos; object has no attribute &apos;findAll&apos;
  
[1332/1433] webkitpy.w3c.test_parser_unittest.TestParserTest.test_analyze_test_reftest_multiple_matches erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py&quot;, line 70, in test_analyze_test_reftest_multiple_matches
      test_info = parser.analyze_test(test_contents=test_html)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 77, in analyze_test
      matches = self.reference_links_of_type(&apos;match&apos;) + self.reference_links_of_type(&apos;mismatch&apos;)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 112, in reference_links_of_type
      return self.test_doc.findAll(rel=reftest_type)
  AttributeError: &apos;NoneType&apos; object has no attribute &apos;findAll&apos;
  
[1336/1433] webkitpy.w3c.test_parser_unittest.TestParserTest.test_analyze_test_reftest_with_ref_support_Files erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py&quot;, line 130, in test_analyze_test_reftest_with_ref_support_Files
      test_info = parser.analyze_test(test_contents=test_html, ref_contents=ref_html)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 77, in analyze_test
      matches = self.reference_links_of_type(&apos;match&apos;) + self.reference_links_of_type(&apos;mismatch&apos;)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 112, in reference_links_of_type
      return self.test_doc.findAll(rel=reftest_type)
  AttributeError: &apos;NoneType&apos; object has no attribute &apos;findAll&apos;
  
[1421/1433] webkitpy.w3c.test_converter_unittest.W3CTestConverterTest.test_convert_for_webkit_harness_and_properties erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py&quot;, line 168, in test_convert_for_webkit_harness_and_properties
      converter = _W3CTestConverter(fake_dir_path, DUMMY_FILENAME)
  TypeError: __init__() takes at least 4 arguments (3 given)
  
[1422/1433] webkitpy.w3c.test_converter_unittest.W3CTestConverterTest.test_convert_for_webkit_nothing_to_convert erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py&quot;, line 81, in test_convert_for_webkit_nothing_to_convert
      converter = _W3CTestConverter(DUMMY_PATH, DUMMY_FILENAME)
  TypeError: __init__() takes at least 4 arguments (3 given)
  
[1423/1433] webkitpy.w3c.test_converter_unittest.W3CTestConverterTest.test_convert_for_webkit_properties_only erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py&quot;, line 131, in test_convert_for_webkit_properties_only
      converter = _W3CTestConverter(fake_dir_path, DUMMY_FILENAME)
  TypeError: __init__() takes at least 4 arguments (3 given)
  
[1424/1433] webkitpy.w3c.test_converter_unittest.W3CTestConverterTest.test_read_prefixed_property_list erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py&quot;, line 56, in test_read_prefixed_property_list
      converter = _W3CTestConverter(DUMMY_PATH, DUMMY_FILENAME)
  TypeError: __init__() takes at least 4 arguments (3 given)
  
[1427/1433] webkitpy.w3c.test_parser_unittest.TestParserTest.test_analyze_test_reftest_one_match erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py&quot;, line 49, in test_analyze_test_reftest_one_match
      test_info = parser.analyze_test(test_contents=test_html)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 77, in analyze_test
      matches = self.reference_links_of_type(&apos;match&apos;) + self.reference_links_of_type(&apos;mismatch&apos;)
    File &quot;/Volumes/Data/slave/mavericks-debug-tests-wk2/build/Tools/Scripts/webkitpy/w3c/test_parser.py&quot;, line 112, in reference_links_of_type
      return self.test_doc.findAll(rel=reftest_type)
  AttributeError: &apos;NoneType&apos; object has no attribute &apos;findAll&apos;
  
[1427/1433] webkitpy.common.system.executive_unittest.ExecutiveTest.serial_test_kill_process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034625</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-11 09:43:02 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 136745</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034659</commentid>
    <comment_count>15</comment_count>
      <attachid>237971</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2014-09-11 11:41:35 -0700</bug_when>
    <thetext>Created attachment 237971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034698</commentid>
    <comment_count>16</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-09-11 13:16:26 -0700</bug_when>
    <thetext>Bug 136752 should fix the tests.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237605</attachid>
            <date>2014-09-03 18:31:28 -0700</date>
            <delta_ts>2014-09-05 12:11:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135929-20140903183222.patch</filename>
            <type>text/plain</type>
            <size>14220</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMjIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODc3NDllZTBmMTIyNjJlYjg0YWNlYWE5MjlmOWNhYzM2
OGY3ZTEyOS4uNDEwYzdlNWVkOGZmY2E1MDdjNDZmNTk0ZDRmZDQ4NDUwMDZjNmU5NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE0LTA5LTAzICBSZWJlY2NhIEhhdWNrICA8cmhhdWNrQGFkb2JlLmNvbT4KKworICAg
ICAgICBpbXBvcnQtdzNjLXRlc3RzIGRvZXNuJ3QgaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIHN1
cHBvcnQgZmlsZXMgaW4gcmVmIGZpbGVzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKwlUaGUgcmVjZW50IHJlZmFjdG9yIG9mIHRoZSBXM0MgdGVzdCBy
ZXBvIGZhbHNpZmllZCBhIGJ1bmNoIG9mIGFzc211bXB0aW9ucyB0aGF0CisgICAgICAgIHdlcmUg
bWFkZSB3aGVuIHRoaXMgc2NyaXB0IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZWQgcmU6IHJlbGF0aXZl
IHBhdGhzIGluIHJlZiBmaWxlcy4KKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIHBhdGhzIGlu
IHJlZiBmaWxlcyBpZiB0aGV5IG1vdmUgcmVsYXRpdmUgdG8gdGhlIHRlc3QgZmlsZS4gICAgICAg
IAorCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weToK
KyAgICAgICAgKGNvbnZlcnRfZm9yX3dlYmtpdCk6CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRl
ci5fX2luaXRfXyk6CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRlci5jb252ZXJ0X3JlbGF0aXZl
X3JlZmZpbGVfcGF0aHMpOgorICAgICAgICAoX1czQ1Rlc3RDb252ZXJ0ZXIuY29udmVydF9zdHls
ZV9kYXRhKToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfYXR0cmlidXRlc19p
Zl9uZWVkZWQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIu
cHk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuZmluZF9pbXBvcnRhYmxlX3Rlc3RzKToKKyAgICAg
ICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfcGFyc2VyLnB5OgorICAgICAgICAoVGVzdFBhcnNlci5sb2FkX2ZpbGUpOgor
ICAgICAgICAoVGVzdFBhcnNlci5hbmFseXplX3Rlc3QpOgorICAgICAgICAoVGVzdFBhcnNlci5z
dXBwb3J0X2ZpbGVzKToKKwogMjAxNC0wOS0wMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2luXSBSZXZpc2UgdGVzdCBlbnZpcm9ubWVudCBmb3IgV2lu
ZG93cyBidWlsZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
Y29udmVydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIu
cHkKaW5kZXggMmJiMDQ1NmYzNGI3ZWVkOGQwZWYxMjVlMGE0NTVkZjkwMjE5YTk5Ny4uOWY0NDk5
OGJlYzMzNGJlMTVhYmE3OTM5YTlmMTU4MjkyMDQxMTU4NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkKQEAgLTM3LDEyICszNywxMiBAQCBmcm9tIEhU
TUxQYXJzZXIgaW1wb3J0IEhUTUxQYXJzZXIKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKIAogCi1kZWYgY29udmVydF9mb3Jfd2Via2l0KG5ld19wYXRoLCBmaWxlbmFtZSwgaG9z
dD1Ib3N0KCkpOgorZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWUsIHJl
ZnJlbHBhdGgsIGhvc3Q9SG9zdCgpKToKICAgICAiIiIgQ29udmVydHMgYSBmaWxlJ3MgfGNvbnRl
bnRzfCBzbyBpdCB3aWxsIGZ1bmN0aW9uIGNvcnJlY3RseSBpbiBpdHMgfG5ld19wYXRofCBpbiBX
ZWJraXQuCiAKICAgICBSZXR1cm5zIHRoZSBsaXN0IG9mIG1vZGlmaWVkIHByb3BlcnRpZXMgYW5k
IHRoZSBtb2RpZmllZCB0ZXh0IGlmIHRoZSBmaWxlIHdhcyBtb2RpZmVkLCBOb25lIG90aGVyd2lz
ZS4iIiIKICAgICBjb250ZW50cyA9IGhvc3QuZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKGZp
bGVuYW1lKQotICAgIGNvbnZlcnRlciA9IF9XM0NUZXN0Q29udmVydGVyKG5ld19wYXRoLCBmaWxl
bmFtZSwgaG9zdCkKKyAgICBjb252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihuZXdfcGF0aCwg
ZmlsZW5hbWUsIHJlZnJlbHBhdGgsIGhvc3QpCiAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5j
c3MnKToKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlci5hZGRfd2Via2l0X3ByZWZpeF90b191bnBy
ZWZpeGVkX3Byb3BlcnRpZXMoY29udGVudHMpCiAgICAgZWxzZToKQEAgLTUyLDcgKzUyLDcgQEAg
ZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWUsIGhvc3Q9SG9zdCgpKToK
IAogCiBjbGFzcyBfVzNDVGVzdENvbnZlcnRlcihIVE1MUGFyc2VyKToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbmV3X3BhdGgsIGZpbGVuYW1lLCBob3N0PUhvc3QoKSk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5ld19wYXRoLCBmaWxlbmFtZSwgcmVmcmVscGF0aCwgaG9zdD1Ib3N0KCkpOgog
ICAgICAgICBIVE1MUGFyc2VyLl9faW5pdF9fKHNlbGYpCiAKICAgICAgICAgc2VsZi5faG9zdCA9
IGhvc3QKQEAgLTY0LDYgKzY0LDcgQEAgY2xhc3MgX1czQ1Rlc3RDb252ZXJ0ZXIoSFRNTFBhcnNl
cik6CiAgICAgICAgIHNlbGYuaW5fc3R5bGVfdGFnID0gRmFsc2UKICAgICAgICAgc2VsZi5zdHls
ZV9kYXRhID0gW10KICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCisgICAgICAgIHNl
bGYucmVmcmVscGF0aCA9IHJlZnJlbHBhdGgKIAogICAgICAgICByZXNvdXJjZXNfcGF0aCA9IHNl
bGYucGF0aF9mcm9tX3dlYmtpdF9yb290KCdMYXlvdXRUZXN0cycsICdyZXNvdXJjZXMnKQogICAg
ICAgICByZXNvdXJjZXNfcmVscGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVscGF0aChyZXNvdXJj
ZXNfcGF0aCwgbmV3X3BhdGgpCkBAIC0xMjYsMTEgKzEyNywzMSBAQCBjbGFzcyBfVzNDVGVzdENv
bnZlcnRlcihIVE1MUGFyc2VyKToKICAgICAgICAgIyBGSVhNRTogSGFuZGxlIHRoZSBKUyB2ZXJz
aW9ucyBvZiB0aGVzZSBwcm9wZXJ0aWVzIGFuZCBHZXRDb21wdXRlZFN0eWxlLCB0b28uCiAgICAg
ICAgIHJldHVybiAoY29udmVydGVkX3Byb3BlcnRpZXMsICcnLmpvaW4odGV4dF9jaHVua3MpKQog
CisgICAgZGVmIGNvbnZlcnRfcmVsYXRpdmVfcmVmZmlsZV9wYXRocyhzZWxmLCB0ZXh0KToKKyAg
ICAgICAgIiIiIFNlYXJjaGVzIHx0ZXh0fCBmb3IgaW5zdGFuY2VzIG9mIHByb3BlcnRpZXMgd2l0
aCB1cmwoKSB2YWx1ZXMgYW5kIHVwZGF0ZXMgdGhlIHJlbGF0aXZlIHBhdGggdG8gYmUgY29ycmVj
dCBmb3IgdGhlIG5ldyByZWYgZmlsZSBsb2NhdGlvbiIiIgorCisgICAgICAgIHVybF9wYXR0ZXJu
ID0gcmUuY29tcGlsZSgndXJsXCguKlwpJykKKworICAgICAgICB0ZXh0X2NodW5rcyA9IFtdCisg
ICAgICAgIGN1cl9wb3MgPSAwCisgICAgICAgIGZvciB1cmwgaW4gdXJsX3BhdHRlcm4uZmluZGl0
ZXIodGV4dCk6CisgICAgICAgICAgICB1cGRhdGVkX3BhdGggPSB1cmwuZ3JvdXAoMCkucmVwbGFj
ZShzZWxmLnJlZnJlbHBhdGgsICcnLCAxKQorICAgICAgICAgICAgdGV4dF9jaHVua3MuZXh0ZW5k
KFt0ZXh0W2N1cl9wb3M6dXJsLnN0YXJ0KCldLCB1cGRhdGVkX3BhdGhdKQorICAgICAgICAgICAg
Y3VyX3BvcyA9IHVybC5lbmQoKQorICAgICAgICB0ZXh0X2NodW5rcy5hcHBlbmQodGV4dFtjdXJf
cG9zOl0pCisKKyAgICAgICAgcmV0dXJuICcnLmpvaW4odGV4dF9jaHVua3MpCisKICAgICBkZWYg
Y29udmVydF9zdHlsZV9kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgICBjb252ZXJ0ZWQgPSBzZWxm
LmFkZF93ZWJraXRfcHJlZml4X3RvX3VucHJlZml4ZWRfcHJvcGVydGllcyhkYXRhKQogICAgICAg
ICBpZiBjb252ZXJ0ZWRbMF06CiAgICAgICAgICAgICBzZWxmLmNvbnZlcnRlZF9wcm9wZXJ0aWVz
LmV4dGVuZChsaXN0KGNvbnZlcnRlZFswXSkpCi0gICAgICAgIHJldHVybiBjb252ZXJ0ZWRbMV0K
KworICAgICAgICBpZiBzZWxmLnJlZnJlbHBhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBj
b252ZXJ0ZWQgPSBzZWxmLmNvbnZlcnRfcmVsYXRpdmVfcmVmZmlsZV9wYXRocyhjb252ZXJ0ZWRb
MV0pCisgICAgICAgICAgICByZXR1cm4gY29udmVydGVkCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICByZXR1cm4gY29udmVydGVkWzFdCiAKICAgICBkZWYgY29udmVydF9hdHRyaWJ1dGVzX2lm
X25lZWRlZChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICAgY29udmVydGVkID0gc2VsZi5nZXRf
c3RhcnR0YWdfdGV4dCgpCkBAIC0xNDgsNiArMTY5LDEyIEBAIGNsYXNzIF9XM0NUZXN0Q29udmVy
dGVyKEhUTUxQYXJzZXIpOgogICAgICAgICAgICAgICAgIG5ld19zdHlsZSA9IHNlbGYuY29udmVy
dF9zdHlsZV9kYXRhKGF0dHJbMV0pCiAgICAgICAgICAgICAgICAgY29udmVydGVkID0gcmUuc3Vi
KGF0dHJbMV0sIG5ld19zdHlsZSwgY29udmVydGVkKQogCisgICAgICAgIGlmIHRhZyBpbiAoJ3Nj
cmlwdCcsICdpbWcnKSBhbmQgc2VsZi5yZWZyZWxwYXRoIGlzIG5vdCBOb25lIGFuZCAgc2VsZi5y
ZWZyZWxwYXRoICE9ICcnOgorICAgICAgICAgICAgZm9yIGF0dHJfbmFtZSwgYXR0cl92YWx1ZSBp
biBhdHRyczoKKyAgICAgICAgICAgICAgICBpZiBhdHRyX25hbWUgPT0gJ3NyYycgYW5kICBub3Qg
YXR0cl92YWx1ZS5zdGFydHN3aXRoKCdkYXRhOicpOgorICAgICAgICAgICAgICAgICAgICBuZXdf
cGF0aCA9IHJlLnN1YihzZWxmLnJlZnJlbHBhdGgsICcnLCBhdHRyX3ZhbHVlLCAxKQorICAgICAg
ICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSByZS5zdWIoYXR0cl92YWx1ZSwgbmV3X3BhdGgsIGNv
bnZlcnRlZCkKKwogICAgICAgICBzZWxmLmNvbnZlcnRlZF9kYXRhLmFwcGVuZChjb252ZXJ0ZWQp
CiAKICAgICBkZWYgaGFuZGxlX3N0YXJ0dGFnKHNlbGYsIHRhZywgYXR0cnMpOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKaW5kZXggNDI4ZDgyM2FkMjg4ZGUw
NjNmNzE1ZDMyZDY5ZjVjZjEyMDg2NTNjYy4uM2FkNDVhZDgwZmNiZTZhYjQwOTA0ZTkwYThjODVl
NThlNDgwODgzOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9p
bXBvcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVy
LnB5CkBAIC0yMDcsMjEgKzIwNyw5IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgICAgICByZWZfZmlsZSA9IG9zLnBhdGguc3BsaXRleHQodGVzdF9iYXNlbmFt
ZSlbMF0gKyAnLWV4cGVjdGVkJwogICAgICAgICAgICAgICAgICAgICByZWZfZmlsZSArPSBvcy5w
YXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5hbWUpWzFdCiAKLSAgICAgICAgICAgICAgICAgICAgY29w
eV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVm
X2ZpbGV9KQorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogdGVz
dF9pbmZvWydyZWZlcmVuY2UnXSwgJ2Rlc3QnOiByZWZfZmlsZSwgJ3JlbHBhdGgnOiB0ZXN0X2lu
Zm9bJ3JlZnJlbHBhdGgnXX0pCiAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQo
eydzcmMnOiB0ZXN0X2luZm9bJ3Rlc3QnXSwgJ2Rlc3QnOiBmaWxlbmFtZX0pCiAKLSAgICAgICAg
ICAgICAgICAgICAgIyBVcGRhdGUgYW55IHN1cHBvcnQgZmlsZXMgdGhhdCBuZWVkIHRvIG1vdmUg
YXMgd2VsbCB0byByZW1haW4gcmVsYXRpdmUgdG8gdGhlIC1leHBlY3RlZCBmaWxlLgotICAgICAg
ICAgICAgICAgICAgICBpZiAncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciBzdXBwb3J0X2ZpbGUgaW4gdGVzdF9pbmZvWydyZWZzdXBw
b3J0J106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKHRlc3RfaW5mb1sncmVmZXJlbmNlJ10pLCBzdXBwb3J0X2Zp
bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLm5v
cm1wYXRoKHNvdXJjZV9maWxlKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVw
IHRoZSBkZXN0IGFzIGl0IHdhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX2NvcHkg
PSB7J3NyYyc6IHNvdXJjZV9maWxlLCAnZGVzdCc6IHN1cHBvcnRfZmlsZX0KLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMgT25seSBhZGQgaXQgb25jZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIG5vdCh0b19jb3B5IGluIGNvcHlfbGlzdCk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQodG9fY29weSkKICAgICAgICAgICAgICAg
ICBlbGlmICdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCk6CiAgICAgICAgICAgICAgICAgICAg
IGpzdGVzdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICB0b3RhbF90ZXN0cyArPSAxCkBAIC0y
MzAsMTEgKzIxOCw2IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICB0b3RhbF90ZXN0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5h
cHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCiAKLSAgICAgICAgICAg
IGlmIG5vdCB0b3RhbF90ZXN0czoKLSAgICAgICAgICAgICAgICAjIFdlIGNhbiBza2lwIHRoZSBz
dXBwb3J0IGRpcmVjdG9yeSBpZiBubyB0ZXN0cyB3ZXJlIGZvdW5kLgotICAgICAgICAgICAgICAg
IGlmICdzdXBwb3J0JyBpbiBkaXJzOgotICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgn
c3VwcG9ydCcpCi0KICAgICAgICAgICAgIGlmIGNvcHlfbGlzdDoKICAgICAgICAgICAgICAgICAj
IE9ubHkgYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBsaXN0IGlmIHRoZXJlJ3Mgc29tZXRoaW5n
IHRvIGltcG9ydAogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0X2xpc3QuYXBwZW5kKHsnZGly
bmFtZSc6IHJvb3QsICdjb3B5X2xpc3QnOiBjb3B5X2xpc3QsCkBAIC0yODIsNiArMjY1LDEwIEBA
IGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQogCiAgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRo
LCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkKKyAgICAgICAgICAgICAgICBpZiAncmVscGF0aCcgaW4g
ZmlsZV90b19jb3B5LmtleXMoKSBhbmQgZmlsZV90b19jb3B5WydyZWxwYXRoJ10gIT0gJyc6Cisg
ICAgICAgICAgICAgICAgICAgIHJlZnJlbHBhdGggPSBmaWxlX3RvX2NvcHlbJ3JlbHBhdGgnXQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJlZnJlbHBhdGggPSBO
b25lCiAKICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJu
YW1lKG5ld19maWxlcGF0aCkpKToKICAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMob3Mu
cGF0aC5kaXJuYW1lKG5ld19maWxlcGF0aCkpCkBAIC0zMDAsMTAgKzI4NywxMSBAQCBjbGFzcyBU
ZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBtaW1ldHlwZSA9IG1pbWV0eXBl
cy5ndWVzc190eXBlKG9yaWdfZmlsZXBhdGgpCiAgICAgICAgICAgICAgICAgaWYgJ2h0bWwnIGlu
IHN0cihtaW1ldHlwZVswXSkgb3IgJ3htbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSAgb3IgJ2Nzcycg
aW4gc3RyKG1pbWV0eXBlWzBdKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3Bh
dGgsIGZpbGVuYW1lPW9yaWdfZmlsZXBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBjb252
ZXJ0ZWRfZmlsZSA9IGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19m
aWxlcGF0aCwgcmVmcmVscGF0aD1yZWZyZWxwYXRoKQogICAgICAgICAgICAgICAgICAgICBleGNl
cHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm4oJ0ZhaWxlZCBjb252ZXJ0aW5n
ICVzJywgb3JpZ19maWxlcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9jb252
ZXJzaW9uX2ZpbGVzLmFwcGVuZChvcmlnX2ZpbGVwYXRoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgY29udmVydGVkX2ZpbGUgPSBOb25lCiAKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNv
bnZlcnRlZF9maWxlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9y
aWdfZmlsZXBhdGgsIG5ld19maWxlcGF0aCkgICMgVGhlIGZpbGUgd2FzIHVubW9kaWZpZWQuCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5CmluZGV4IGJiNjZmZGFlNjNi
N2YyNWIwNmFhYjY4NjZhZjNkMWVmMDlmZmE4NzAuLmE3OTk3YzllNmQ3MWJlZjI0MjIyZDlhMTky
ZDI4OGQ0MTNmNjFhM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfcGFyc2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2Vy
LnB5CkBAIC00OSwzNyArNDksMzEgQEAgY2xhc3MgVGVzdFBhcnNlcihvYmplY3QpOgogICAgICAg
ICBzZWxmLnJlZl9kb2MgPSBOb25lCiAgICAgICAgIHNlbGYubG9hZF9maWxlKGZpbGVuYW1lKQog
Ci0gICAgZGVmIGxvYWRfZmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAgZGVmIGxvYWRfZmlsZShz
ZWxmLCBmaWxlbmFtZSwgaXNfcmVmPUZhbHNlKToKICAgICAgICAgaWYgc2VsZi5maWxlc3lzdGVt
LmlzZmlsZShmaWxlbmFtZSk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi50ZXN0X2RvYyA9IFBhcnNlcihzZWxmLmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShmaWxl
bmFtZSkpCisgICAgICAgICAgICAgICAgZG9jID0gUGFyc2VyKHNlbGYuZmlsZXN5c3RlbS5yZWFk
X2JpbmFyeV9maWxlKGZpbGVuYW1lKSkKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAg
ICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gaWYgd2UgY2FuJ3QgcGFyc2UgdGhl
IGZpbGUuCiAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIHBhcnNlICVzIiwg
ZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyBpcyBOb25lCisgICAgICAg
ICAgICAgICAgZG9jID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc2VsZi5m
aWxlc3lzdGVtLmlzZGlyKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBGaWd1
cmUgb3V0IHdoYXQgaXMgdHJpZ2dlcmluZyB0aGlzIGFuZCB3aGF0IHRvIGRvIGFib3V0IGl0Lgog
ICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIlRyeWluZyB0byBsb2FkICVzLCB3aGljaCBpcyBh
IGRpcmVjdG9yeSIsIGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyA9IE5vbmUK
LSAgICAgICAgc2VsZi5yZWZfZG9jID0gTm9uZQorICAgICAgICAgICAgZG9jID0gTm9uZQorCisg
ICAgICAgIGlmIGlzX3JlZjoKKyAgICAgICAgICAgIHNlbGYucmVmX2RvYyA9IGRvYworICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyA9IGRvYwogCiAgICAgZGVmIGFuYWx5
emVfdGVzdChzZWxmLCB0ZXN0X2NvbnRlbnRzPU5vbmUsIHJlZl9jb250ZW50cz1Ob25lKToKICAg
ICAgICAgIiIiIEFuYWx5emVzIGEgZmlsZSB0byBkZXRlcm1pbmUgaWYgaXQncyBhIHRlc3QsIHdo
YXQgdHlwZSBvZiB0ZXN0LCBhbmQgd2hhdCByZWZlcmVuY2Ugb3Igc3VwcG9ydCBmaWxlcyBpdCBy
ZXF1aXJlcy4gUmV0dXJucyBhbGwgb2YgdGhlIHRlc3QgaW5mbyAiIiIKIAogICAgICAgICB0ZXN0
X2luZm8gPSBOb25lCiAKLSAgICAgICAgaWYgdGVzdF9jb250ZW50cyBpcyBOb25lIGFuZCBzZWxm
LnRlc3RfZG9jIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gdGVzdF9pbmZvCi0KLSAgICAg
ICAgaWYgdGVzdF9jb250ZW50cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGVzdF9k
b2MgPSBQYXJzZXIodGVzdF9jb250ZW50cykKLQotICAgICAgICBpZiByZWZfY29udGVudHMgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBQYXJzZXIocmVmX2NvbnRlbnRz
KQotCiAgICAgICAgICMgRmlyc3QgY2hlY2sgaWYgaXQncyBhIHJlZnRlc3QKLQogICAgICAgICBt
YXRjaGVzID0gc2VsZi5yZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZSgnbWF0Y2gnKSArIHNlbGYucmVm
ZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21pc21hdGNoJykKICAgICAgICAgaWYgbWF0Y2hlczoKICAg
ICAgICAgICAgIGlmIGxlbihtYXRjaGVzKSA+IDE6CkBAIC05NSwyOSArODksMTggQEAgY2xhc3Mg
VGVzdFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAg
ICAgICAgIGlmIHNlbGYucmVmX2RvYyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYucmVm
X2RvYyA9IHNlbGYubG9hZF9maWxlKHJlZl9maWxlKQorICAgICAgICAgICAgICAgIHNlbGYubG9h
ZF9maWxlKHJlZl9maWxlLCBUcnVlKQogCiAgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3Qn
OiBzZWxmLmZpbGVuYW1lLCAncmVmZXJlbmNlJzogcmVmX2ZpbGV9CiAKLSAgICAgICAgICAgICMg
SWYgdGhlIHJlZiBmaWxlIHBhdGggaXMgcmVsYXRpdmUsIHdlIG5lZWQgdG8gY2hlY2sgaXQgZm9y
Ci0gICAgICAgICAgICAjIHJlbGF0aXZlIHBhdGhzIGFsc28gYmVjYXVzZSB3aGVuIGl0IGxhbmRz
IGluIFdlYktpdCwgaXQgd2lsbCBiZQotICAgICAgICAgICAgIyBtb3ZlZCBkb3duIGludG8gdGhl
IHRlc3QgZGlyLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBOb3RlOiBUaGUgdGVzdCBm
aWxlcyB0aGVtc2VsdmVzIGFyZSBub3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxlcwotICAgICAg
ICAgICAgIyBvdXRzaWRlIHRoZWlyIGRpcmVjdG9yaWVzIGFzIHRoZSBjb252ZW50aW9uIGluIHRo
ZSBDU1NXRyBpcyB0bwotICAgICAgICAgICAgIyBwdXQgYWxsIHN1cHBvcnQgZmlsZXMgaW4gdGhl
IHNhbWUgZGlyIG9yIHN1YmRpciBhcyB0aGUgdGVzdC4KLSAgICAgICAgICAgICMKLSAgICAgICAg
ICAgICMgQWxsIG5vbi10ZXN0IGZpbGVzIGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5IHRyZWUgYXJl
IG5vcm1hbGx5Ci0gICAgICAgICAgICAjIGNvcGllZCBhcyBwYXJ0IG9mIHRoZSBpbXBvcnQgYXMg
dGhleSBhcmUgYXNzdW1lZCB0byBiZSByZXF1aXJlZAotICAgICAgICAgICAgIyBzdXBwb3J0IGZp
bGVzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAqQnV0KiwgdGhlcmUgaXMgZXhhY3Rs
eSBvbmUgY2FzZSBpbiB0aGUgZW50aXJlIGNzczIuMSBzdWl0ZSB3aGVyZQotICAgICAgICAgICAg
IyBhIHRlc3QgZGVwZW5kcyBvbiBhIGZpbGUgdGhhdCBsaXZlcyBpbiBhIGRpZmZlcmVudCBkaXJl
Y3RvcnksCi0gICAgICAgICAgICAjIHdoaWNoIGRlcGVuZHMgb24gYW5vdGhlciBmaWxlIHRoYXQg
bGl2ZXMgb3V0c2lkZSBvZiBpdHMKLSAgICAgICAgICAgICMgZGlyZWN0b3J5LiBUaGlzIGNvZGUg
Y292ZXJzIHRoYXQgY2FzZSA6KQotICAgICAgICAgICAgaWYgbWF0Y2hlc1swXVsnaHJlZiddLnN0
YXJ0c3dpdGgoJy4uJyk6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydF9maWxlcyA9IHNlbGYuc3Vw
cG9ydF9maWxlcyhzZWxmLnJlZl9kb2MpCi0gICAgICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZz
dXBwb3J0J10gPSBzdXBwb3J0X2ZpbGVzCisgICAgICAgICAgICAjIElmIHRoZSByZWYgZmlsZSBk
b2VzIG5vdCBsaXZlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgdGVzdCBmaWxlLCBjaGVj
ayBpdCBmb3Igc3VwcG9ydCBmaWxlcworICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZzdXBwb3J0
J10gPSBbXQorICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZyZWxwYXRoJ10gPSAnJworICAgICAg
ICAgICAgaWYgc2VsZi5maWxlc3lzdGVtLmRpcm5hbWUocmVmX2ZpbGUpICE9IHNlbGYuZmlsZXN5
c3RlbS5kaXJuYW1lKHNlbGYuZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIHRlc3RfaW5mb1sn
cmVmc3VwcG9ydCddID0gc2VsZi5zdXBwb3J0X2ZpbGVzKHNlbGYucmVmX2RvYykKKyAgICAgICAg
ICAgICAgICBpZiBsZW4odGVzdF9pbmZvWydyZWZzdXBwb3J0J10pID4gMDoKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdGZpbGUgPSBzZWxmLmZpbGVzeXN0ZW0uc3BsaXQoc2VsZi5maWxlbmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZyZWxwYXRoJ10gPSBzZWxmLmZpbGVz
eXN0ZW0ucmVscGF0aChzZWxmLmZpbGVuYW1lLCByZWZfZmlsZSkucmVwbGFjZSgnLi4vJywgJycs
IDEpLnJlcGxhY2UodGVzdGZpbGVbMV0sICcnKQogCiAgICAgICAgIGVsaWYgc2VsZi5pc19qc3Rl
c3QoKToKICAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWUsICdq
c3Rlc3QnOiBUcnVlfQpAQCAtMTM0LDE0ICsxMTcsMTMgQEAgY2xhc3MgVGVzdFBhcnNlcihvYmpl
Y3QpOgogICAgICAgICByZXR1cm4gYm9vbChzZWxmLnRlc3RfZG9jLmZpbmQoc3JjPXJlLmNvbXBp
bGUoJ1tcJ1wiL10/L3Jlc291cmNlcy90ZXN0aGFybmVzcycpKSkKIAogICAgIGRlZiBzdXBwb3J0
X2ZpbGVzKHNlbGYsIGRvYyk6Ci0gICAgICAgICIiIiBTZWFyY2hlcyB0aGUgZmlsZSBmb3IgYWxs
IHBhdGhzIHNwZWNpZmllZCBpbiB1cmwoKSdzLCBocmVmIG9yIHNyYyBhdHRyaWJ1dGVzLiIiIgor
ICAgICAgICAiIiIgU2VhcmNoZXMgdGhlIGZpbGUgZm9yIGFsbCBwYXRocyBzcGVjaWZpZWQgaW4g
dXJsKCkncyBvciBzcmMgYXR0cmlidXRlcy4iIiIKICAgICAgICAgc3VwcG9ydF9maWxlcyA9IFtd
CiAKICAgICAgICAgaWYgZG9jIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gc3VwcG9ydF9m
aWxlcwogCiAgICAgICAgIGVsZW1lbnRzX3dpdGhfc3JjX2F0dHJpYnV0ZXMgPSBkb2MuZmluZEFs
bChzcmM9cmUuY29tcGlsZSgnLionKSkKLSAgICAgICAgZWxlbWVudHNfd2l0aF9ocmVmX2F0dHJp
YnV0ZXMgPSBkb2MuZmluZEFsbChocmVmPXJlLmNvbXBpbGUoJy4qJykpCiAKICAgICAgICAgdXJs
X3BhdHRlcm4gPSByZS5jb21waWxlKCd1cmxcKC4qXCknKQogICAgICAgICB1cmxzID0gW10KQEAg
LTE1MiwxMSArMTM0LDEwIEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAg
IHVybHMuYXBwZW5kKHVybCkKIAogICAgICAgICBzcmNfcGF0aHMgPSBbc3JjX3RhZ1snc3JjJ10g
Zm9yIHNyY190YWcgaW4gZWxlbWVudHNfd2l0aF9zcmNfYXR0cmlidXRlc10KLSAgICAgICAgaHJl
Zl9wYXRocyA9IFtocmVmX3RhZ1snaHJlZiddIGZvciBocmVmX3RhZyBpbiBlbGVtZW50c193aXRo
X2hyZWZfYXR0cmlidXRlc10KIAotICAgICAgICBwYXRocyA9IHNyY19wYXRocyArIGhyZWZfcGF0
aHMgKyB1cmxzCisgICAgICAgIHBhdGhzID0gc3JjX3BhdGhzICsgdXJscwogICAgICAgICBmb3Ig
cGF0aCBpbiBwYXRoczoKLSAgICAgICAgICAgIGlmIG5vdChwYXRoLnN0YXJ0c3dpdGgoJ2h0dHA6
JykpIGFuZCBub3QocGF0aC5zdGFydHN3aXRoKCdtYWlsdG86JykpOgorICAgICAgICAgICAgaWYg
bm90KHBhdGguc3RhcnRzd2l0aCgnaHR0cDonKSkgYW5kIG5vdChwYXRoLnN0YXJ0c3dpdGgoJ2Rh
dGE6JykpOgogICAgICAgICAgICAgICAgIHN1cHBvcnRfZmlsZXMuYXBwZW5kKHBhdGgpCiAKICAg
ICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237703</attachid>
            <date>2014-09-05 11:48:22 -0700</date>
            <delta_ts>2014-09-09 18:57:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135929-20140905114921.patch</filename>
            <type>text/plain</type>
            <size>14987</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMjIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODc3NDllZTBmMTIyNjJlYjg0YWNlYWE5MjlmOWNhYzM2
OGY3ZTEyOS4uN2YwOGE3MzFlMzQ4NGNjNTllYjBkMDM4MmY3MjEwODUzYjE0Y2NiMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDE0LTA5LTA1ICBSZWJlY2NhIEhhdWNrICA8cmhhdWNrQGFkb2JlLmNvbT4KKworICAg
ICAgICBpbXBvcnQtdzNjLXRlc3RzIGRvZXNuJ3QgaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIHN1
cHBvcnQgZmlsZXMgaW4gcmVmIGZpbGVzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgCisgICAgICAgIFRoZSByZWNlbnQgcmVmYWN0b3Igb2YgdGhlIFcz
QyB0ZXN0IHJlcG8gZmFsc2lmaWVkIGEgYnVuY2ggb2YgYXNzbXVtcHRpb25zIHRoYXQKKyAgICAg
ICAgd2VyZSBtYWRlIHdoZW4gdGhpcyBzY3JpcHQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlZCByZTog
cmVsYXRpdmUgcGF0aHMgaW4gcmVmIGZpbGVzLgorICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMg
cGF0aHMgaW4gcmVmIGZpbGVzIGlmIHRoZXkgbW92ZSByZWxhdGl2ZSB0byB0aGUgdGVzdCBmaWxl
LiAgICAgICAKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVy
LnB5OgorICAgICAgICAoY29udmVydF9mb3Jfd2Via2l0KToKKyAgICAgICAgKF9XM0NUZXN0Q29u
dmVydGVyLl9faW5pdF9fKToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfcmVm
ZXJlbmNlX3JlbHBhdGhzKToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfc3R5
bGVfZGF0YSk6CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRlci5jb252ZXJ0X2F0dHJpYnV0ZXNf
aWZfbmVlZGVkKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVy
LnB5OgorICAgICAgICAoVGVzdEltcG9ydGVyLmZpbmRfaW1wb3J0YWJsZV90ZXN0cyk6CisgICAg
ICAgIChUZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3czYy90ZXN0X3BhcnNlci5weToKKyAgICAgICAgKFRlc3RQYXJzZXIubG9hZF9maWxlKToK
KyAgICAgICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIu
c3VwcG9ydF9maWxlcyk6CisKIDIwMTQtMDktMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gUmV2aXNlIHRlc3QgZW52aXJvbm1lbnQgZm9yIFdp
bmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X2NvbnZlcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVy
LnB5CmluZGV4IDJiYjA0NTZmMzRiN2VlZDhkMGVmMTI1ZTBhNDU1ZGY5MDIxOWE5OTcuLmJmMTcy
OTljZjM0NGQwNmI3YzJkYjNiN2NkZGYwOGM4ZTZhOTg4NmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CkBAIC0zNywxMiArMzcsMTIgQEAgZnJvbSBI
VE1MUGFyc2VyIGltcG9ydCBIVE1MUGFyc2VyCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCiAKIAotZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWUsIGhv
c3Q9SG9zdCgpKToKK2RlZiBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lLCBy
ZWZlcmVuY2Vfc3VwcG9ydCwgaG9zdD1Ib3N0KCkpOgogICAgICIiIiBDb252ZXJ0cyBhIGZpbGUn
cyB8Y29udGVudHN8IHNvIGl0IHdpbGwgZnVuY3Rpb24gY29ycmVjdGx5IGluIGl0cyB8bmV3X3Bh
dGh8IGluIFdlYmtpdC4KIAogICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgbW9kaWZpZWQgcHJvcGVy
dGllcyBhbmQgdGhlIG1vZGlmaWVkIHRleHQgaWYgdGhlIGZpbGUgd2FzIG1vZGlmZWQsIE5vbmUg
b3RoZXJ3aXNlLiIiIgogICAgIGNvbnRlbnRzID0gaG9zdC5maWxlc3lzdGVtLnJlYWRfYmluYXJ5
X2ZpbGUoZmlsZW5hbWUpCi0gICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIobmV3X3Bh
dGgsIGZpbGVuYW1lLCBob3N0KQorICAgIGNvbnZlcnRlciA9IF9XM0NUZXN0Q29udmVydGVyKG5l
d19wYXRoLCBmaWxlbmFtZSwgcmVmZXJlbmNlX3N1cHBvcnQsIGhvc3QpCiAgICAgaWYgZmlsZW5h
bWUuZW5kc3dpdGgoJy5jc3MnKToKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlci5hZGRfd2Via2l0
X3ByZWZpeF90b191bnByZWZpeGVkX3Byb3BlcnRpZXMoY29udGVudHMpCiAgICAgZWxzZToKQEAg
LTUyLDcgKzUyLDcgQEAgZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWUs
IGhvc3Q9SG9zdCgpKToKIAogCiBjbGFzcyBfVzNDVGVzdENvbnZlcnRlcihIVE1MUGFyc2VyKToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbmV3X3BhdGgsIGZpbGVuYW1lLCBob3N0PUhvc3QoKSk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5ld19wYXRoLCBmaWxlbmFtZSwgcmVmZXJlbmNlX3N1
cHBvcnQsIGhvc3Q9SG9zdCgpKToKICAgICAgICAgSFRNTFBhcnNlci5fX2luaXRfXyhzZWxmKQog
CiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIF9XM0NU
ZXN0Q29udmVydGVyKEhUTUxQYXJzZXIpOgogICAgICAgICBzZWxmLmluX3N0eWxlX3RhZyA9IEZh
bHNlCiAgICAgICAgIHNlbGYuc3R5bGVfZGF0YSA9IFtdCiAgICAgICAgIHNlbGYuZmlsZW5hbWUg
PSBmaWxlbmFtZQorICAgICAgICBzZWxmLnJlZmVyZW5jZV9zdXBwb3J0ID0gcmVmZXJlbmNlX3N1
cHBvcnQKIAogICAgICAgICByZXNvdXJjZXNfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9y
b290KCdMYXlvdXRUZXN0cycsICdyZXNvdXJjZXMnKQogICAgICAgICByZXNvdXJjZXNfcmVscGF0
aCA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVscGF0aChyZXNvdXJjZXNfcGF0aCwgbmV3X3BhdGgpCkBA
IC0xMjYsMTEgKzEyNywyNyBAQCBjbGFzcyBfVzNDVGVzdENvbnZlcnRlcihIVE1MUGFyc2VyKToK
ICAgICAgICAgIyBGSVhNRTogSGFuZGxlIHRoZSBKUyB2ZXJzaW9ucyBvZiB0aGVzZSBwcm9wZXJ0
aWVzIGFuZCBHZXRDb21wdXRlZFN0eWxlLCB0b28uCiAgICAgICAgIHJldHVybiAoY29udmVydGVk
X3Byb3BlcnRpZXMsICcnLmpvaW4odGV4dF9jaHVua3MpKQogCisgICAgZGVmIGNvbnZlcnRfcmVm
ZXJlbmNlX3JlbHBhdGhzKHNlbGYsIHRleHQpOgorICAgICAgICAiIiIgU2VhcmNoZXMgfHRleHR8
IGZvciBpbnN0YW5jZXMgb2YgcmVmZXJlbmNlX3N1cHBvcnRfZmlsZXMgYW5kIHVwZGF0ZXMgdGhl
IHJlbGF0aXZlIHBhdGggdG8gYmUgY29ycmVjdCBmb3IgdGhlIG5ldyByZWYgZmlsZSBsb2NhdGlv
biIiIgorCisgICAgICAgIGZvciBwYXRoIGluIHNlbGYucmVmZXJlbmNlX3N1cHBvcnRbJ3JlZmVy
ZW5jZV9zdXBwb3J0X2ZpbGVzJ106CisgICAgICAgICAgICBpZiB0ZXh0LmZpbmQocGF0aCkgIT0g
LTE6CisgICAgICAgICAgICAgICAgIyBGSVhNRTogU2VlIGNvbW1lbnQgY29udmVydF9hdHRyaWJ1
dGVzX2lmX25lZWRlZCByZTogV2ViS2l0IGJ1ZyAjMTM2NTc3LiBTYW1lIGFwcGxpZXMgaGVyZS4K
KyAgICAgICAgICAgICAgICBuZXdfcGF0aCA9IHJlLnN1YihzZWxmLnJlZmVyZW5jZV9zdXBwb3J0
WydyZWZlcmVuY2VfcmVscGF0aCddLCAnJywgcGF0aCwgMSkKKyAgICAgICAgICAgICAgICBjb252
ZXJ0ZWQgPSByZS5zdWIocGF0aCwgbmV3X3BhdGgsIHRleHQpCisKKyAgICAgICAgcmV0dXJuIGNv
bnZlcnRlZAorCiAgICAgZGVmIGNvbnZlcnRfc3R5bGVfZGF0YShzZWxmLCBkYXRhKToKICAgICAg
ICAgY29udmVydGVkID0gc2VsZi5hZGRfd2Via2l0X3ByZWZpeF90b191bnByZWZpeGVkX3Byb3Bl
cnRpZXMoZGF0YSkKICAgICAgICAgaWYgY29udmVydGVkWzBdOgogICAgICAgICAgICAgc2VsZi5j
b252ZXJ0ZWRfcHJvcGVydGllcy5leHRlbmQobGlzdChjb252ZXJ0ZWRbMF0pKQotICAgICAgICBy
ZXR1cm4gY29udmVydGVkWzFdCisKKyAgICAgICAgaWYgc2VsZi5yZWZlcmVuY2Vfc3VwcG9ydCBp
cyBub3QgTm9uZSBhbmQgc2VsZi5yZWZlcmVuY2Vfc3VwcG9ydCAhPSB7fToKKyAgICAgICAgICAg
IGNvbnZlcnRlZCA9IHNlbGYuY29udmVydF9yZWZlcmVuY2VfcmVscGF0aHMoY29udmVydGVkWzFd
KQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZAorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRlZFsxXQogCiAgICAgZGVmIGNvbnZlcnRfYXR0cmlidXRlc19pZl9u
ZWVkZWQoc2VsZiwgdGFnLCBhdHRycyk6CiAgICAgICAgIGNvbnZlcnRlZCA9IHNlbGYuZ2V0X3N0
YXJ0dGFnX3RleHQoKQpAQCAtMTQ4LDYgKzE2NSwyNyBAQCBjbGFzcyBfVzNDVGVzdENvbnZlcnRl
cihIVE1MUGFyc2VyKToKICAgICAgICAgICAgICAgICBuZXdfc3R5bGUgPSBzZWxmLmNvbnZlcnRf
c3R5bGVfZGF0YShhdHRyWzFdKQogICAgICAgICAgICAgICAgIGNvbnZlcnRlZCA9IHJlLnN1Yihh
dHRyWzFdLCBuZXdfc3R5bGUsIGNvbnZlcnRlZCkKIAorICAgICAgICBzcmNfdGFncyA9ICgnc2Ny
aXB0JywgJ2ltZycsICdmcmFtZScsICdpZnJhbWUnLCAnaW5wdXQnLCAnbGF5ZXInLCAndGV4dGFy
ZWEnLCAndmlkZW8nLCAnYXVkaW8nKQorICAgICAgICBpZiB0YWcgaW4gc3JjX3RhZ3MgYW5kIHNl
bGYucmVmZXJlbmNlX3N1cHBvcnQgaXMgbm90IE5vbmUgYW5kICBzZWxmLnJlZmVyZW5jZV9zdXBw
b3J0ICE9IHt9OgorICAgICAgICAgICAgZm9yIGF0dHJfbmFtZSwgYXR0cl92YWx1ZSBpbiBhdHRy
czoKKyAgICAgICAgICAgICAgICBpZiBhdHRyX25hbWUgPT0gJ3NyYycgYW5kIGF0dHJfdmFsdWUg
aW4gc2VsZi5yZWZlcmVuY2Vfc3VwcG9ydFsncmVmZXJlbmNlX3N1cHBvcnRfZmlsZXMnXToKKyAg
ICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVGhlIGZvbGxvd2luZyBsaW5lIG9mIGNvZGUgYXNz
dW1lcyB0aGF0IHRoZSByZWZlcmVuY2UgZmlsZSBvcmlnaW5hdGVkCisgICAgICAgICAgICAgICAg
ICAgICMgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgdGhlIHRlc3QgZmlsZSdzIHBhcmVudCBkaXJlY3Rv
cnkgYW5kIHRoYXQgaXQgaXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgIyBpbXBvcnRlZCB1
cCBOIGxldmVscyB0byBiZSB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHRlc3QuIEhlbmNlLCB3
ZSdyZQorICAgICAgICAgICAgICAgICAgICAjIHJlbW92aW5nIHRoZSByZWxwYXRoIGZyb20gdGhl
IGF0dHJfdmFsdWUgaGVyZS4gVGhpcyB3b24ndCB3b3JrIGlmIHRoZQorICAgICAgICAgICAgICAg
ICAgICAjIHJlZmVyZW5jZSBmaWxlIG9yaWdpbmF0ZWQgaW4gYSBkaXJlY3RvcnkgYWJvdmUgdGhl
IHRlc3QgZmlsZSBhbmQgaXMgaW1wb3J0ZWQKKyAgICAgICAgICAgICAgICAgICAgIyBkb3duIE4g
bGV2ZWxzLiBUaGlzIHNjZW5hcmlvIG9jY3VycyBtYW55IHRpbWVzIGluIHRoZSBDU1MgdGVzdCBy
ZXBvLCBidXQKKyAgICAgICAgICAgICAgICAgICAgIyBpdCBoYXBwZW5zIHRvIGJlIG9uZSBzaW5n
bGUgc2hhcmVkIHJlZmVyZW5jZSBmaWxlIHRoYXQgbWFueSBvZiB0aGUgY3NzMjEKKyAgICAgICAg
ICAgICAgICAgICAgIyB0ZXN0cyBzaGFyZSBmcm9tIGEgY29tbW9uIGFuY2VzdG9yIGRpcmVjdG9y
eS4gSW4gYWxsIG9mIHRoZXNlIGNhc2VzLAorICAgICAgICAgICAgICAgICAgICAjIHRoZSBvcmln
aW5hbCByZWYgZmlsZSBhbmQgdGhlIHRlc3QgZmlsZSdzIHBhcmVudCBkaXIgYm90aCBoYXZlIHRo
ZQorICAgICAgICAgICAgICAgICAgICAjIHNhbWUgcmVsYXRpdmUgcGF0aCB0byB0aGUgcmVmIGZp
bGUncyBzdXBwb3J0IGZpbGUsIHNvIHRoZSBuZXcgbG9jYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgIyBvZiB0aGUgcmVmIGZpbGUgaXMgYSBsYXRlcmFsIG1vdmUgYW5kIGV2ZXJ5dGhpbmcgJ2p1
c3Qgd29ya3MnLiAgSWRlYWxseSwKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgaW1wb3J0IHNj
cmlwdCBzaG91bGQgZG8gdGhlIHJpZ2h0IHRoaW5nIHdoZXJldmVyIHRoZSB0aGUgcmVmIGZpbGUK
KyAgICAgICAgICAgICAgICAgICAgIyBvcmlnaW5hdGVzLCBidXQgdGhpcyBpcyBhbiBlZGdlIGNh
c2UgYW5kIGhpZ2hseSB1bmxpa2VseS4KKyAgICAgICAgICAgICAgICAgICAgIyBMb2dnZWQgYXMg
V2Via2l0IGJ1ZyAjMTM1Njc3LgorICAgICAgICAgICAgICAgICAgICBuZXdfcGF0aCA9IHJlLnN1
YihzZWxmLnJlZmVyZW5jZV9zdXBwb3J0WydyZWZlcmVuY2VfcmVscGF0aCddLCAnJywgYXR0cl92
YWx1ZSwgMSkKKyAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gcmUuc3ViKGF0dHJfdmFs
dWUsIG5ld19wYXRoLCBjb252ZXJ0ZWQpCisKICAgICAgICAgc2VsZi5jb252ZXJ0ZWRfZGF0YS5h
cHBlbmQoY29udmVydGVkKQogCiAgICAgZGVmIGhhbmRsZV9zdGFydHRhZyhzZWxmLCB0YWcsIGF0
dHJzKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CmluZGV4
IDQyOGQ4MjNhZDI4OGRlMDYzZjcxNWQzMmQ2OWY1Y2YxMjA4NjUzY2MuLjljNmRhN2M4MDE4MjRl
ZWFlOGJiZDFhMTFiOWIzOTg2MTM1OGUzM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9pbXBvcnRlci5weQpAQCAtMjA3LDIxICsyMDcsOSBAQCBjbGFzcyBUZXN0SW1wb3J0
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBvcy5wYXRoLnNwbGl0
ZXh0KHRlc3RfYmFzZW5hbWUpWzBdICsgJy1leHBlY3RlZCcKICAgICAgICAgICAgICAgICAgICAg
cmVmX2ZpbGUgKz0gb3MucGF0aC5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1lKVsxXQogCi0gICAgICAg
ICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3JlZmVyZW5j
ZSddLCAnZGVzdCc6IHJlZl9maWxlfSkKKyAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFw
cGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmX2ZpbGUsICdy
ZWZlcmVuY2Vfc3VwcG9ydCc6IHRlc3RfaW5mb1sncmVmZXJlbmNlX3N1cHBvcnQnXX0pCiAgICAg
ICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3Rlc3Qn
XSwgJ2Rlc3QnOiBmaWxlbmFtZX0pCiAKLSAgICAgICAgICAgICAgICAgICAgIyBVcGRhdGUgYW55
IHN1cHBvcnQgZmlsZXMgdGhhdCBuZWVkIHRvIG1vdmUgYXMgd2VsbCB0byByZW1haW4gcmVsYXRp
dmUgdG8gdGhlIC1leHBlY3RlZCBmaWxlLgotICAgICAgICAgICAgICAgICAgICBpZiAncmVmc3Vw
cG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBz
dXBwb3J0X2ZpbGUgaW4gdGVzdF9pbmZvWydyZWZzdXBwb3J0J106Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHRl
c3RfaW5mb1sncmVmZXJlbmNlJ10pLCBzdXBwb3J0X2ZpbGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLm5vcm1wYXRoKHNvdXJjZV9maWxlKQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBkZXN0IGFzIGl0IHdhcwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvX2NvcHkgPSB7J3NyYyc6IHNvdXJjZV9maWxlLCAn
ZGVzdCc6IHN1cHBvcnRfZmlsZX0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT25s
eSBhZGQgaXQgb25jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCh0b19jb3B5
IGluIGNvcHlfbGlzdCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlz
dC5hcHBlbmQodG9fY29weSkKICAgICAgICAgICAgICAgICBlbGlmICdqc3Rlc3QnIGluIHRlc3Rf
aW5mby5rZXlzKCk6CiAgICAgICAgICAgICAgICAgICAgIGpzdGVzdHMgKz0gMQogICAgICAgICAg
ICAgICAgICAgICB0b3RhbF90ZXN0cyArPSAxCkBAIC0yMzAsMTEgKzIxOCw2IEBAIGNsYXNzIFRl
c3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICB0b3RhbF90ZXN0cyArPSAx
CiAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwg
J2Rlc3QnOiBmaWxlbmFtZX0pCiAKLSAgICAgICAgICAgIGlmIG5vdCB0b3RhbF90ZXN0czoKLSAg
ICAgICAgICAgICAgICAjIFdlIGNhbiBza2lwIHRoZSBzdXBwb3J0IGRpcmVjdG9yeSBpZiBubyB0
ZXN0cyB3ZXJlIGZvdW5kLgotICAgICAgICAgICAgICAgIGlmICdzdXBwb3J0JyBpbiBkaXJzOgot
ICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnc3VwcG9ydCcpCi0KICAgICAgICAgICAg
IGlmIGNvcHlfbGlzdDoKICAgICAgICAgICAgICAgICAjIE9ubHkgYWRkIHRoaXMgZGlyZWN0b3J5
IHRvIHRoZSBsaXN0IGlmIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGltcG9ydAogICAgICAgICAgICAg
ICAgIHNlbGYuaW1wb3J0X2xpc3QuYXBwZW5kKHsnZGlybmFtZSc6IHJvb3QsICdjb3B5X2xpc3Qn
OiBjb3B5X2xpc3QsCkBAIC0yODIsNiArMjY1LDEwIEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgbmV3
X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkK
KyAgICAgICAgICAgICAgICBpZiAncmVmZXJlbmNlX3N1cHBvcnQnIGluIGZpbGVfdG9fY29weS5r
ZXlzKCkgYW5kIGZpbGVfdG9fY29weVsncmVmZXJlbmNlX3N1cHBvcnQnXSAhPSB7fToKKyAgICAg
ICAgICAgICAgICAgICAgcmVmZXJlbmNlX3N1cHBvcnQgPSBmaWxlX3RvX2NvcHlbJ3JlZmVyZW5j
ZV9zdXBwb3J0J10KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBy
ZWZlcmVuY2Vfc3VwcG9ydCA9IE5vbmUKIAogICAgICAgICAgICAgICAgIGlmIG5vdChvcy5wYXRo
LmV4aXN0cyhvcy5wYXRoLmRpcm5hbWUobmV3X2ZpbGVwYXRoKSkpOgogICAgICAgICAgICAgICAg
ICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUobmV3X2ZpbGVwYXRoKSkKQEAgLTMwMCwx
MCArMjg3LDExIEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAg
IG1pbWV0eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUob3JpZ19maWxlcGF0aCkKICAgICAgICAg
ICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciAneG1sJyBpbiBzdHIobWlt
ZXR5cGVbMF0pICBvciAnY3NzJyBpbiBzdHIobWltZXR5cGVbMF0pOgogICAgICAgICAgICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRfZmlsZSA9IGNvbnZl
cnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVydF9mb3Jfd2Via2l0KG5ld19w
YXRoLCBmaWxlbmFtZT1vcmlnX2ZpbGVwYXRoLCByZWZlcmVuY2Vfc3VwcG9ydD1yZWZlcmVuY2Vf
c3VwcG9ydCkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAg
ICAgICAgX2xvZy53YXJuKCdGYWlsZWQgY29udmVydGluZyAlcycsIG9yaWdfZmlsZXBhdGgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRfY29udmVyc2lvbl9maWxlcy5hcHBlbmQob3Jp
Z19maWxlcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gTm9u
ZQogCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0ZWRfZmlsZToKICAgICAgICAg
ICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcmlnX2ZpbGVwYXRoLCBuZXdfZmlsZXBh
dGgpICAjIFRoZSBmaWxlIHdhcyB1bm1vZGlmaWVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X3BhcnNlci5weQppbmRleCBiYjY2ZmRhZTYzYjdmMjViMDZhYWI2ODY2YWYzZDFlZjA5
ZmZhODcwLi4wYzIwNTY0YWYwMDU3OTZhZTA1YWFiYjA4YmY0YTBiNTBjYzI1NGEzIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpAQCAtNDksMzcgKzQ5LDMxIEBA
IGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5yZWZfZG9jID0gTm9uZQog
ICAgICAgICBzZWxmLmxvYWRfZmlsZShmaWxlbmFtZSkKIAotICAgIGRlZiBsb2FkX2ZpbGUoc2Vs
ZiwgZmlsZW5hbWUpOgorICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwgZmlsZW5hbWUsIGlzX3JlZj1G
YWxzZSk6CiAgICAgICAgIGlmIHNlbGYuZmlsZXN5c3RlbS5pc2ZpbGUoZmlsZW5hbWUpOgogICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYudGVzdF9kb2MgPSBQYXJzZXIoc2Vs
Zi5maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUoZmlsZW5hbWUpKQorICAgICAgICAgICAgICAg
IGRvYyA9IFBhcnNlcihzZWxmLmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShmaWxlbmFtZSkp
CiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91
dCB3aGF0IHRvIGRvIGlmIHdlIGNhbid0IHBhcnNlIHRoZSBmaWxlLgogICAgICAgICAgICAgICAg
IF9sb2cuZXJyb3IoIkZhaWxlZCB0byBwYXJzZSAlcyIsIGZpbGVuYW1lKQotICAgICAgICAgICAg
ICAgIHNlbGYudGVzdF9kb2MgaXMgTm9uZQorICAgICAgICAgICAgICAgIGRvYyA9IE5vbmUKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZXN5c3RlbS5pc2RpcihmaWxlbmFt
ZSk6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCB3aGF0IGlzIHRyaWdnZXJp
bmcgdGhpcyBhbmQgd2hhdCB0byBkbyBhYm91dCBpdC4KICAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCJUcnlpbmcgdG8gbG9hZCAlcywgd2hpY2ggaXMgYSBkaXJlY3RvcnkiLCBmaWxlbmFtZSkK
LSAgICAgICAgICAgIHNlbGYudGVzdF9kb2MgPSBOb25lCi0gICAgICAgIHNlbGYucmVmX2RvYyA9
IE5vbmUKKyAgICAgICAgICAgIGRvYyA9IE5vbmUKKworICAgICAgICBpZiBpc19yZWY6CisgICAg
ICAgICAgICBzZWxmLnJlZl9kb2MgPSBkb2MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bGYudGVzdF9kb2MgPSBkb2MKIAogICAgIGRlZiBhbmFseXplX3Rlc3Qoc2VsZiwgdGVzdF9jb250
ZW50cz1Ob25lLCByZWZfY29udGVudHM9Tm9uZSk6CiAgICAgICAgICIiIiBBbmFseXplcyBhIGZp
bGUgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYSB0ZXN0LCB3aGF0IHR5cGUgb2YgdGVzdCwgYW5kIHdo
YXQgcmVmZXJlbmNlIG9yIHN1cHBvcnQgZmlsZXMgaXQgcmVxdWlyZXMuIFJldHVybnMgYWxsIG9m
IHRoZSB0ZXN0IGluZm8gIiIiCiAKICAgICAgICAgdGVzdF9pbmZvID0gTm9uZQogCi0gICAgICAg
IGlmIHRlc3RfY29udGVudHMgaXMgTm9uZSBhbmQgc2VsZi50ZXN0X2RvYyBpcyBOb25lOgotICAg
ICAgICAgICAgcmV0dXJuIHRlc3RfaW5mbwotCi0gICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnRlc3RfZG9jID0gUGFyc2VyKHRlc3RfY29udGVu
dHMpCi0KLSAgICAgICAgaWYgcmVmX2NvbnRlbnRzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
c2VsZi5yZWZfZG9jID0gUGFyc2VyKHJlZl9jb250ZW50cykKLQogICAgICAgICAjIEZpcnN0IGNo
ZWNrIGlmIGl0J3MgYSByZWZ0ZXN0Ci0KICAgICAgICAgbWF0Y2hlcyA9IHNlbGYucmVmZXJlbmNl
X2xpbmtzX29mX3R5cGUoJ21hdGNoJykgKyBzZWxmLnJlZmVyZW5jZV9saW5rc19vZl90eXBlKCdt
aXNtYXRjaCcpCiAgICAgICAgIGlmIG1hdGNoZXM6CiAgICAgICAgICAgICBpZiBsZW4obWF0Y2hl
cykgPiAxOgpAQCAtOTUsMjkgKzg5LDE3IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgICAgICBpZiBzZWxmLnJlZl9kb2Mg
aXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBzZWxmLmxvYWRfZmlsZShy
ZWZfZmlsZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWRfZmlsZShyZWZfZmlsZSwgVHJ1ZSkK
IAogICAgICAgICAgICAgdGVzdF9pbmZvID0geyd0ZXN0Jzogc2VsZi5maWxlbmFtZSwgJ3JlZmVy
ZW5jZSc6IHJlZl9maWxlfQogCi0gICAgICAgICAgICAjIElmIHRoZSByZWYgZmlsZSBwYXRoIGlz
IHJlbGF0aXZlLCB3ZSBuZWVkIHRvIGNoZWNrIGl0IGZvcgotICAgICAgICAgICAgIyByZWxhdGl2
ZSBwYXRocyBhbHNvIGJlY2F1c2Ugd2hlbiBpdCBsYW5kcyBpbiBXZWJLaXQsIGl0IHdpbGwgYmUK
LSAgICAgICAgICAgICMgbW92ZWQgZG93biBpbnRvIHRoZSB0ZXN0IGRpci4KLSAgICAgICAgICAg
ICMKLSAgICAgICAgICAgICMgTm90ZTogVGhlIHRlc3QgZmlsZXMgdGhlbXNlbHZlcyBhcmUgbm90
IGNoZWNrZWQgZm9yIHN1cHBvcnQgZmlsZXMKLSAgICAgICAgICAgICMgb3V0c2lkZSB0aGVpciBk
aXJlY3RvcmllcyBhcyB0aGUgY29udmVudGlvbiBpbiB0aGUgQ1NTV0cgaXMgdG8KLSAgICAgICAg
ICAgICMgcHV0IGFsbCBzdXBwb3J0IGZpbGVzIGluIHRoZSBzYW1lIGRpciBvciBzdWJkaXIgYXMg
dGhlIHRlc3QuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIEFsbCBub24tdGVzdCBmaWxl
cyBpbiB0aGUgdGVzdCdzIGRpcmVjdG9yeSB0cmVlIGFyZSBub3JtYWxseQotICAgICAgICAgICAg
IyBjb3BpZWQgYXMgcGFydCBvZiB0aGUgaW1wb3J0IGFzIHRoZXkgYXJlIGFzc3VtZWQgdG8gYmUg
cmVxdWlyZWQKLSAgICAgICAgICAgICMgc3VwcG9ydCBmaWxlcy4KLSAgICAgICAgICAgICMKLSAg
ICAgICAgICAgICMgKkJ1dCosIHRoZXJlIGlzIGV4YWN0bHkgb25lIGNhc2UgaW4gdGhlIGVudGly
ZSBjc3MyLjEgc3VpdGUgd2hlcmUKLSAgICAgICAgICAgICMgYSB0ZXN0IGRlcGVuZHMgb24gYSBm
aWxlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LAotICAgICAgICAgICAgIyB3
aGljaCBkZXBlbmRzIG9uIGFub3RoZXIgZmlsZSB0aGF0IGxpdmVzIG91dHNpZGUgb2YgaXRzCi0g
ICAgICAgICAgICAjIGRpcmVjdG9yeS4gVGhpcyBjb2RlIGNvdmVycyB0aGF0IGNhc2UgOikKLSAg
ICAgICAgICAgIGlmIG1hdGNoZXNbMF1bJ2hyZWYnXS5zdGFydHN3aXRoKCcuLicpOgotICAgICAg
ICAgICAgICAgIHN1cHBvcnRfZmlsZXMgPSBzZWxmLnN1cHBvcnRfZmlsZXMoc2VsZi5yZWZfZG9j
KQotICAgICAgICAgICAgICAgIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddID0gc3VwcG9ydF9maWxl
cworICAgICAgICAgICAgIyBJZiB0aGUgcmVmIGZpbGUgZG9lcyBub3QgbGl2ZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkgYXMgdGhlIHRlc3QgZmlsZSwgY2hlY2sgaXQgZm9yIHN1cHBvcnQgZmlsZXMK
KyAgICAgICAgICAgIHRlc3RfaW5mb1sncmVmZXJlbmNlX3N1cHBvcnQnXSA9IHt9CisgICAgICAg
ICAgICBpZiBzZWxmLmZpbGVzeXN0ZW0uZGlybmFtZShyZWZfZmlsZSkgIT0gc2VsZi5maWxlc3lz
dGVtLmRpcm5hbWUoc2VsZi5maWxlbmFtZSk6CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlX3N1
cHBvcnRfZmlsZXMgPSBzZWxmLnN1cHBvcnRfZmlsZXMoc2VsZi5yZWZfZG9jKQorICAgICAgICAg
ICAgICAgIGlmIGxlbihyZWZlcmVuY2Vfc3VwcG9ydF9maWxlcykgPiAwOgorICAgICAgICAgICAg
ICAgICAgICByZWZlcmVuY2VfcmVscGF0aCA9IHNlbGYuZmlsZXN5c3RlbS5yZWxwYXRoKHNlbGYu
ZmlsZXN5c3RlbS5kaXJuYW1lKHNlbGYuZmlsZW5hbWUpLCBzZWxmLmZpbGVzeXN0ZW0uZGlybmFt
ZShyZWZfZmlsZSkpICsgc2VsZi5maWxlc3lzdGVtLnNlcAorICAgICAgICAgICAgICAgICAgICB0
ZXN0X2luZm9bJ3JlZmVyZW5jZV9zdXBwb3J0J10gPSB7J3JlZmVyZW5jZV9yZWxwYXRoJzogcmVm
ZXJlbmNlX3JlbHBhdGgsICdyZWZlcmVuY2Vfc3VwcG9ydF9maWxlcyc6IHJlZmVyZW5jZV9zdXBw
b3J0X2ZpbGVzfQogCiAgICAgICAgIGVsaWYgc2VsZi5pc19qc3Rlc3QoKToKICAgICAgICAgICAg
IHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWUsICdqc3Rlc3QnOiBUcnVlfQpAQCAt
MTU2LDcgKzEzOCw3IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKIAogICAgICAgICBwYXRo
cyA9IHNyY19wYXRocyArIGhyZWZfcGF0aHMgKyB1cmxzCiAgICAgICAgIGZvciBwYXRoIGluIHBh
dGhzOgotICAgICAgICAgICAgaWYgbm90KHBhdGguc3RhcnRzd2l0aCgnaHR0cDonKSkgYW5kIG5v
dChwYXRoLnN0YXJ0c3dpdGgoJ21haWx0bzonKSk6CisgICAgICAgICAgICBpZiBub3QocGF0aC5z
dGFydHN3aXRoKCdodHRwOicpKSBhbmQgbm90KHBhdGguc3RhcnRzd2l0aCgnbWFpbHRvOicpKSBh
bmQgbm90KHBhdGguc3RhcnRzd2l0aCgnZGF0YTonKSk6CiAgICAgICAgICAgICAgICAgc3VwcG9y
dF9maWxlcy5hcHBlbmQocGF0aCkKIAogICAgICAgICByZXR1cm4gc3VwcG9ydF9maWxlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237877</attachid>
            <date>2014-09-09 18:57:24 -0700</date>
            <delta_ts>2014-09-10 15:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135929-20140909185833.patch</filename>
            <type>text/plain</type>
            <size>13770</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMjIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODc3NDllZTBmMTIyNjJlYjg0YWNlYWE5MjlmOWNhYzM2
OGY3ZTEyOS4uNGE5NjFiMTBjZDY0YjNjODYyNWQyMzE2MGFhOTY0OWI1ZTk1NGUxYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE0LTA5LTA5ICBSZWJlY2NhIEhhdWNrICA8cmhhdWNrQGFkb2JlLmNvbT4KKworICAg
ICAgICBpbXBvcnQtdzNjLXRlc3RzIGRvZXNuJ3QgaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIHN1
cHBvcnQgZmlsZXMgaW4gcmVmIGZpbGVzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHJlY2VudCByZWZhY3RvciBvZiB0aGUgVzND
IHRlc3QgcmVwbyBmYWxzaWZpZWQgYSBidW5jaCBvZiBhc3NtdW1wdGlvbnMgdGhhdAorICAgICAg
ICB3ZXJlIG1hZGUgd2hlbiB0aGlzIHNjcmlwdCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIHdpdGgg
cmVzcGVjdCB0byByZWxhdGl2ZSBwYXRocworICAgICAgICBpbiByZWYgZmlsZXMuIFRoaXMgcGF0
Y2ggdXBkYXRlcyBpbXBvcnQtdzNjLXRlc3RzIHRvIHVwZGF0ZSBwYXRocyBpbiByZWYgZmlsZXMg
aWYKKyAgICAgICAgdGhleSBtb3ZlIHJlbGF0aXZlIHRvIHRoZSB0ZXN0IGZpbGUuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weToKKyAgICAgICAgKGNv
bnZlcnRfZm9yX3dlYmtpdCk6CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRlci5fX2luaXRfXyk6
CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRlci5jb252ZXJ0X3JlZmVyZW5jZV9yZWxwYXRocyk6
CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRlci5jb252ZXJ0X3N0eWxlX2RhdGEpOgorICAgICAg
ICAoX1czQ1Rlc3RDb252ZXJ0ZXIuY29udmVydF9hdHRyaWJ1dGVzX2lmX25lZWRlZCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weToKKyAgICAgICAgKFRl
c3RJbXBvcnRlci5maW5kX2ltcG9ydGFibGVfdGVzdHMpOgorICAgICAgICAoVGVzdEltcG9ydGVy
LmltcG9ydF90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJz
ZXIucHk6CisgICAgICAgIChUZXN0UGFyc2VyLmxvYWRfZmlsZSk6CisgICAgICAgIChUZXN0UGFy
c2VyLmFuYWx5emVfdGVzdCk6CisgICAgICAgIChUZXN0UGFyc2VyLnN1cHBvcnRfZmlsZXMpOgor
CiAyMDE0LTA5LTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtXaW5dIFJldmlzZSB0ZXN0IGVudmlyb25tZW50IGZvciBXaW5kb3dzIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQppbmRleCAyYmIwNDU2
ZjM0YjdlZWQ4ZDBlZjEyNWUwYTQ1NWRmOTAyMTlhOTk3Li4wZTE2MGViZTY0MjU4Yjg3YmFmMGUw
NDAxY2E0MmZjNWM3NTZkZmFhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2NvbnZlcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X2NvbnZlcnRlci5weQpAQCAtMzcsMTIgKzM3LDEyIEBAIGZyb20gSFRNTFBhcnNlciBpbXBvcnQg
SFRNTFBhcnNlcgogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKLWRlZiBj
b252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lLCBob3N0PUhvc3QoKSk6CitkZWYg
Y29udmVydF9mb3Jfd2Via2l0KG5ld19wYXRoLCBmaWxlbmFtZSwgcmVmZXJlbmNlX3N1cHBvcnRf
aW5mbywgaG9zdD1Ib3N0KCkpOgogICAgICIiIiBDb252ZXJ0cyBhIGZpbGUncyB8Y29udGVudHN8
IHNvIGl0IHdpbGwgZnVuY3Rpb24gY29ycmVjdGx5IGluIGl0cyB8bmV3X3BhdGh8IGluIFdlYmtp
dC4KIAogICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgbW9kaWZpZWQgcHJvcGVydGllcyBhbmQgdGhl
IG1vZGlmaWVkIHRleHQgaWYgdGhlIGZpbGUgd2FzIG1vZGlmZWQsIE5vbmUgb3RoZXJ3aXNlLiIi
IgogICAgIGNvbnRlbnRzID0gaG9zdC5maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUoZmlsZW5h
bWUpCi0gICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIobmV3X3BhdGgsIGZpbGVuYW1l
LCBob3N0KQorICAgIGNvbnZlcnRlciA9IF9XM0NUZXN0Q29udmVydGVyKG5ld19wYXRoLCBmaWxl
bmFtZSwgcmVmZXJlbmNlX3N1cHBvcnRfaW5mbywgaG9zdCkKICAgICBpZiBmaWxlbmFtZS5lbmRz
d2l0aCgnLmNzcycpOgogICAgICAgICByZXR1cm4gY29udmVydGVyLmFkZF93ZWJraXRfcHJlZml4
X3RvX3VucHJlZml4ZWRfcHJvcGVydGllcyhjb250ZW50cykKICAgICBlbHNlOgpAQCAtNTIsNyAr
NTIsNyBAQCBkZWYgY29udmVydF9mb3Jfd2Via2l0KG5ld19wYXRoLCBmaWxlbmFtZSwgaG9zdD1I
b3N0KCkpOgogCiAKIGNsYXNzIF9XM0NUZXN0Q29udmVydGVyKEhUTUxQYXJzZXIpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBuZXdfcGF0aCwgZmlsZW5hbWUsIGhvc3Q9SG9zdCgpKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmV3X3BhdGgsIGZpbGVuYW1lLCByZWZlcmVuY2Vfc3VwcG9ydF9p
bmZvLCBob3N0PUhvc3QoKSk6CiAgICAgICAgIEhUTUxQYXJzZXIuX19pbml0X18oc2VsZikKIAog
ICAgICAgICBzZWxmLl9ob3N0ID0gaG9zdApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBfVzNDVGVz
dENvbnZlcnRlcihIVE1MUGFyc2VyKToKICAgICAgICAgc2VsZi5pbl9zdHlsZV90YWcgPSBGYWxz
ZQogICAgICAgICBzZWxmLnN0eWxlX2RhdGEgPSBbXQogICAgICAgICBzZWxmLmZpbGVuYW1lID0g
ZmlsZW5hbWUKKyAgICAgICAgc2VsZi5yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvID0gcmVmZXJlbmNl
X3N1cHBvcnRfaW5mbwogCiAgICAgICAgIHJlc291cmNlc19wYXRoID0gc2VsZi5wYXRoX2Zyb21f
d2Via2l0X3Jvb3QoJ0xheW91dFRlc3RzJywgJ3Jlc291cmNlcycpCiAgICAgICAgIHJlc291cmNl
c19yZWxwYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5yZWxwYXRoKHJlc291cmNlc19wYXRoLCBuZXdf
cGF0aCkKQEAgLTEyNiwxMSArMTI3LDI3IEBAIGNsYXNzIF9XM0NUZXN0Q29udmVydGVyKEhUTUxQ
YXJzZXIpOgogICAgICAgICAjIEZJWE1FOiBIYW5kbGUgdGhlIEpTIHZlcnNpb25zIG9mIHRoZXNl
IHByb3BlcnRpZXMgYW5kIEdldENvbXB1dGVkU3R5bGUsIHRvby4KICAgICAgICAgcmV0dXJuIChj
b252ZXJ0ZWRfcHJvcGVydGllcywgJycuam9pbih0ZXh0X2NodW5rcykpCiAKKyAgICBkZWYgY29u
dmVydF9yZWZlcmVuY2VfcmVscGF0aHMoc2VsZiwgdGV4dCk6CisgICAgICAgICIiIiBTZWFyY2hl
cyB8dGV4dHwgZm9yIGluc3RhbmNlcyBvZiBmaWxlcyBpbiByZWZlcmVuY2Vfc3VwcG9ydF9pbmZv
IGFuZCB1cGRhdGVzIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGJlIGNvcnJlY3QgZm9yIHRoZSBuZXcg
cmVmIGZpbGUgbG9jYXRpb24iIiIKKyAgICAgICAgY29udmVydGVkID0gdGV4dAorICAgICAgICBm
b3IgcGF0aCBpbiBzZWxmLnJlZmVyZW5jZV9zdXBwb3J0X2luZm9bJ2ZpbGVzJ106CisgICAgICAg
ICAgICBpZiB0ZXh0LmZpbmQocGF0aCkgIT0gLTE6CisgICAgICAgICAgICAgICAgIyBGSVhNRTog
VGhpcyBkb2Vzbid0IGhhbmRsZSBhbiBlZGdlIGNhc2Ugd2hlcmUgc2ltcGx5IHJlbW92aW5nIHRo
ZSByZWxhdGl2ZSBwYXRoIGRvZXNuJ3Qgd29yay4KKyAgICAgICAgICAgICAgICAjIFNlZSBodHRw
Oi8vd2Via2l0Lm9yZy9iLzEzNTY3NyBmb3IgZGV0YWlscy4KKyAgICAgICAgICAgICAgICBuZXdf
cGF0aCA9IHJlLnN1YihzZWxmLnJlZmVyZW5jZV9zdXBwb3J0X2luZm9bJ3JlZmVyZW5jZV9yZWxw
YXRoJ10sICcnLCBwYXRoLCAxKQorICAgICAgICAgICAgICAgIGNvbnZlcnRlZCA9IHJlLnN1Yihw
YXRoLCBuZXdfcGF0aCwgdGV4dCkKKworICAgICAgICByZXR1cm4gY29udmVydGVkCisKICAgICBk
ZWYgY29udmVydF9zdHlsZV9kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgICBjb252ZXJ0ZWQgPSBz
ZWxmLmFkZF93ZWJraXRfcHJlZml4X3RvX3VucHJlZml4ZWRfcHJvcGVydGllcyhkYXRhKQogICAg
ICAgICBpZiBjb252ZXJ0ZWRbMF06CiAgICAgICAgICAgICBzZWxmLmNvbnZlcnRlZF9wcm9wZXJ0
aWVzLmV4dGVuZChsaXN0KGNvbnZlcnRlZFswXSkpCi0gICAgICAgIHJldHVybiBjb252ZXJ0ZWRb
MV0KKworICAgICAgICBpZiBzZWxmLnJlZmVyZW5jZV9zdXBwb3J0X2luZm8gaXMgTm9uZSBvciBz
ZWxmLnJlZmVyZW5jZV9zdXBwb3J0X2luZm8gPT0ge306CisgICAgICAgICAgICByZXR1cm4gY29u
dmVydGVkWzFdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0
X3JlZmVyZW5jZV9yZWxwYXRocyhjb252ZXJ0ZWRbMV0pCiAKICAgICBkZWYgY29udmVydF9hdHRy
aWJ1dGVzX2lmX25lZWRlZChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICAgY29udmVydGVkID0g
c2VsZi5nZXRfc3RhcnR0YWdfdGV4dCgpCkBAIC0xNDgsNiArMTY1LDEyIEBAIGNsYXNzIF9XM0NU
ZXN0Q29udmVydGVyKEhUTUxQYXJzZXIpOgogICAgICAgICAgICAgICAgIG5ld19zdHlsZSA9IHNl
bGYuY29udmVydF9zdHlsZV9kYXRhKGF0dHJbMV0pCiAgICAgICAgICAgICAgICAgY29udmVydGVk
ID0gcmUuc3ViKGF0dHJbMV0sIG5ld19zdHlsZSwgY29udmVydGVkKQogCisgICAgICAgIHNyY190
YWdzID0gKCdzY3JpcHQnLCAnaW1nJywgJ2ZyYW1lJywgJ2lmcmFtZScsICdpbnB1dCcsICdsYXll
cicsICd0ZXh0YXJlYScsICd2aWRlbycsICdhdWRpbycpCisgICAgICAgIGlmIHRhZyBpbiBzcmNf
dGFncyBhbmQgc2VsZi5yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvIGlzIG5vdCBOb25lIGFuZCAgc2Vs
Zi5yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvICE9IHt9OgorICAgICAgICAgICAgZm9yIGF0dHJfbmFt
ZSwgYXR0cl92YWx1ZSBpbiBhdHRyczoKKyAgICAgICAgICAgICAgICBpZiBhdHRyX25hbWUgPT0g
J3NyYycgYW5kIGF0dHJfdmFsdWUgaW4gc2VsZi5yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvWydmaWxl
cyddOgorICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBzZWxmLmNvbnZlcnRfcmVmZXJl
bmNlX3JlbHBhdGhzKGF0dHJfdmFsdWUpCisKICAgICAgICAgc2VsZi5jb252ZXJ0ZWRfZGF0YS5h
cHBlbmQoY29udmVydGVkKQogCiAgICAgZGVmIGhhbmRsZV9zdGFydHRhZyhzZWxmLCB0YWcsIGF0
dHJzKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CmluZGV4
IDQyOGQ4MjNhZDI4OGRlMDYzZjcxNWQzMmQ2OWY1Y2YxMjA4NjUzY2MuLmQwYTE5NDUxZTQ3YzNj
NDg3NDA1NzY2NWRjNzQ4ZTIzZWUyODIyNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9pbXBvcnRlci5weQpAQCAtMjA3LDIxICsyMDcsOSBAQCBjbGFzcyBUZXN0SW1wb3J0
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBvcy5wYXRoLnNwbGl0
ZXh0KHRlc3RfYmFzZW5hbWUpWzBdICsgJy1leHBlY3RlZCcKICAgICAgICAgICAgICAgICAgICAg
cmVmX2ZpbGUgKz0gb3MucGF0aC5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1lKVsxXQogCi0gICAgICAg
ICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3JlZmVyZW5j
ZSddLCAnZGVzdCc6IHJlZl9maWxlfSkKKyAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFw
cGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmX2ZpbGUsICdy
ZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJzogdGVzdF9pbmZvWydyZWZlcmVuY2Vfc3VwcG9ydF9pbmZv
J119KQogICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogdGVzdF9p
bmZvWyd0ZXN0J10sICdkZXN0JzogZmlsZW5hbWV9KQogCi0gICAgICAgICAgICAgICAgICAgICMg
VXBkYXRlIGFueSBzdXBwb3J0IGZpbGVzIHRoYXQgbmVlZCB0byBtb3ZlIGFzIHdlbGwgdG8gcmVt
YWluIHJlbGF0aXZlIHRvIHRoZSAtZXhwZWN0ZWQgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAg
aWYgJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmb3Igc3VwcG9ydF9maWxlIGluIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddKSwgc3VwcG9ydF9maWxlKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5ub3JtcGF0aChzb3VyY2Vf
ZmlsZSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgS2VlcCB0aGUgZGVzdCBhcyBp
dCB3YXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19jb3B5ID0geydzcmMnOiBzb3Vy
Y2VfZmlsZSwgJ2Rlc3QnOiBzdXBwb3J0X2ZpbGV9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjIE9ubHkgYWRkIGl0IG9uY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBu
b3QodG9fY29weSBpbiBjb3B5X2xpc3QpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3B5X2xpc3QuYXBwZW5kKHRvX2NvcHkpCiAgICAgICAgICAgICAgICAgZWxpZiAnanN0ZXN0
JyBpbiB0ZXN0X2luZm8ua2V5cygpOgogICAgICAgICAgICAgICAgICAgICBqc3Rlc3RzICs9IDEK
ICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQpAQCAtMjMwLDExICsyMTgsNiBA
QCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgdG90YWxf
dGVzdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzog
ZnVsbHBhdGgsICdkZXN0JzogZmlsZW5hbWV9KQogCi0gICAgICAgICAgICBpZiBub3QgdG90YWxf
dGVzdHM6Ci0gICAgICAgICAgICAgICAgIyBXZSBjYW4gc2tpcCB0aGUgc3VwcG9ydCBkaXJlY3Rv
cnkgaWYgbm8gdGVzdHMgd2VyZSBmb3VuZC4KLSAgICAgICAgICAgICAgICBpZiAnc3VwcG9ydCcg
aW4gZGlyczoKLSAgICAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ3N1cHBvcnQnKQotCiAg
ICAgICAgICAgICBpZiBjb3B5X2xpc3Q6CiAgICAgICAgICAgICAgICAgIyBPbmx5IGFkZCB0aGlz
IGRpcmVjdG9yeSB0byB0aGUgbGlzdCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKICAg
ICAgICAgICAgICAgICBzZWxmLmltcG9ydF9saXN0LmFwcGVuZCh7J2Rpcm5hbWUnOiByb290LCAn
Y29weV9saXN0JzogY29weV9saXN0LApAQCAtMjgyLDYgKzI2NSwxMCBAQCBjbGFzcyBUZXN0SW1w
b3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAg
ICAgICAgIG5ld19maWxlcGF0aCA9IG9zLnBhdGguam9pbihuZXdfcGF0aCwgZmlsZV90b19jb3B5
WydkZXN0J10pCisgICAgICAgICAgICAgICAgaWYgJ3JlZmVyZW5jZV9zdXBwb3J0X2luZm8nIGlu
IGZpbGVfdG9fY29weS5rZXlzKCkgYW5kIGZpbGVfdG9fY29weVsncmVmZXJlbmNlX3N1cHBvcnRf
aW5mbyddICE9IHt9OgorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2Vfc3VwcG9ydF9pbmZv
ID0gZmlsZV90b19jb3B5WydyZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJ10KKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2Vfc3VwcG9ydF9pbmZvID0gTm9u
ZQogCiAgICAgICAgICAgICAgICAgaWYgbm90KG9zLnBhdGguZXhpc3RzKG9zLnBhdGguZGlybmFt
ZShuZXdfZmlsZXBhdGgpKSk6CiAgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBh
dGguZGlybmFtZShuZXdfZmlsZXBhdGgpKQpAQCAtMzAwLDEwICsyODcsMTEgQEAgY2xhc3MgVGVz
dEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMu
Z3Vlc3NfdHlwZShvcmlnX2ZpbGVwYXRoKQogICAgICAgICAgICAgICAgIGlmICdodG1sJyBpbiBz
dHIobWltZXR5cGVbMF0pIG9yICd4bWwnIGluIHN0cihtaW1ldHlwZVswXSkgIG9yICdjc3MnIGlu
IHN0cihtaW1ldHlwZVswXSk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVydF9mb3Jfd2Via2l0KG5ld19wYXRo
LCBmaWxlbmFtZT1vcmlnX2ZpbGVwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udmVy
dGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdfZmls
ZXBhdGgsIHJlZmVyZW5jZV9zdXBwb3J0X2luZm89cmVmZXJlbmNlX3N1cHBvcnRfaW5mbykKICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgICAgICAgX2xvZy53
YXJuKCdGYWlsZWQgY29udmVydGluZyAlcycsIG9yaWdfZmlsZXBhdGgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWlsZWRfY29udmVyc2lvbl9maWxlcy5hcHBlbmQob3JpZ19maWxlcGF0aCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gTm9uZQogCiAgICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0ZWRfZmlsZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIHNodXRpbC5jb3B5ZmlsZShvcmlnX2ZpbGVwYXRoLCBuZXdfZmlsZXBhdGgpICAjIFRoZSBm
aWxlIHdhcyB1bm1vZGlmaWVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9wYXJzZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNl
ci5weQppbmRleCBiYjY2ZmRhZTYzYjdmMjViMDZhYWI2ODY2YWYzZDFlZjA5ZmZhODcwLi5lOTRk
YjcyYzQ3ODAxYTJmMmI5ZmVkMjc3ZmFkODExNzA2N2MzN2Q1IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpAQCAtNDksMzcgKzQ5LDMxIEBAIGNsYXNzIFRlc3RQ
YXJzZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5yZWZfZG9jID0gTm9uZQogICAgICAgICBzZWxm
LmxvYWRfZmlsZShmaWxlbmFtZSkKIAotICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwgZmlsZW5hbWUp
OgorICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwgZmlsZW5hbWUsIGlzX3JlZj1GYWxzZSk6CiAgICAg
ICAgIGlmIHNlbGYuZmlsZXN5c3RlbS5pc2ZpbGUoZmlsZW5hbWUpOgogICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIHNlbGYudGVzdF9kb2MgPSBQYXJzZXIoc2VsZi5maWxlc3lzdGVt
LnJlYWRfYmluYXJ5X2ZpbGUoZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIGRvYyA9IFBhcnNl
cihzZWxmLmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShmaWxlbmFtZSkpCiAgICAgICAgICAg
ICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCB3aGF0IHRvIGRv
IGlmIHdlIGNhbid0IHBhcnNlIHRoZSBmaWxlLgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Io
IkZhaWxlZCB0byBwYXJzZSAlcyIsIGZpbGVuYW1lKQotICAgICAgICAgICAgICAgIHNlbGYudGVz
dF9kb2MgaXMgTm9uZQorICAgICAgICAgICAgICAgIGRvYyA9IE5vbmUKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIGlmIHNlbGYuZmlsZXN5c3RlbS5pc2RpcihmaWxlbmFtZSk6CiAgICAgICAg
ICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCB3aGF0IGlzIHRyaWdnZXJpbmcgdGhpcyBhbmQg
d2hhdCB0byBkbyBhYm91dCBpdC4KICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCJUcnlpbmcg
dG8gbG9hZCAlcywgd2hpY2ggaXMgYSBkaXJlY3RvcnkiLCBmaWxlbmFtZSkKLSAgICAgICAgICAg
IHNlbGYudGVzdF9kb2MgPSBOb25lCi0gICAgICAgIHNlbGYucmVmX2RvYyA9IE5vbmUKKyAgICAg
ICAgICAgIGRvYyA9IE5vbmUKKworICAgICAgICBpZiBpc19yZWY6CisgICAgICAgICAgICBzZWxm
LnJlZl9kb2MgPSBkb2MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudGVzdF9kb2Mg
PSBkb2MKIAogICAgIGRlZiBhbmFseXplX3Rlc3Qoc2VsZiwgdGVzdF9jb250ZW50cz1Ob25lLCBy
ZWZfY29udGVudHM9Tm9uZSk6CiAgICAgICAgICIiIiBBbmFseXplcyBhIGZpbGUgdG8gZGV0ZXJt
aW5lIGlmIGl0J3MgYSB0ZXN0LCB3aGF0IHR5cGUgb2YgdGVzdCwgYW5kIHdoYXQgcmVmZXJlbmNl
IG9yIHN1cHBvcnQgZmlsZXMgaXQgcmVxdWlyZXMuIFJldHVybnMgYWxsIG9mIHRoZSB0ZXN0IGlu
Zm8gIiIiCiAKICAgICAgICAgdGVzdF9pbmZvID0gTm9uZQogCi0gICAgICAgIGlmIHRlc3RfY29u
dGVudHMgaXMgTm9uZSBhbmQgc2VsZi50ZXN0X2RvYyBpcyBOb25lOgotICAgICAgICAgICAgcmV0
dXJuIHRlc3RfaW5mbwotCi0gICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBzZWxmLnRlc3RfZG9jID0gUGFyc2VyKHRlc3RfY29udGVudHMpCi0KLSAgICAg
ICAgaWYgcmVmX2NvbnRlbnRzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5yZWZfZG9j
ID0gUGFyc2VyKHJlZl9jb250ZW50cykKLQogICAgICAgICAjIEZpcnN0IGNoZWNrIGlmIGl0J3Mg
YSByZWZ0ZXN0Ci0KICAgICAgICAgbWF0Y2hlcyA9IHNlbGYucmVmZXJlbmNlX2xpbmtzX29mX3R5
cGUoJ21hdGNoJykgKyBzZWxmLnJlZmVyZW5jZV9saW5rc19vZl90eXBlKCdtaXNtYXRjaCcpCiAg
ICAgICAgIGlmIG1hdGNoZXM6CiAgICAgICAgICAgICBpZiBsZW4obWF0Y2hlcykgPiAxOgpAQCAt
OTUsMjkgKzg5LDE3IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQogCiAgICAgICAgICAgICBpZiBzZWxmLnJlZl9kb2MgaXMgTm9uZToKLSAg
ICAgICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBzZWxmLmxvYWRfZmlsZShyZWZfZmlsZSkKKyAg
ICAgICAgICAgICAgICBzZWxmLmxvYWRfZmlsZShyZWZfZmlsZSwgVHJ1ZSkKIAogICAgICAgICAg
ICAgdGVzdF9pbmZvID0geyd0ZXN0Jzogc2VsZi5maWxlbmFtZSwgJ3JlZmVyZW5jZSc6IHJlZl9m
aWxlfQogCi0gICAgICAgICAgICAjIElmIHRoZSByZWYgZmlsZSBwYXRoIGlzIHJlbGF0aXZlLCB3
ZSBuZWVkIHRvIGNoZWNrIGl0IGZvcgotICAgICAgICAgICAgIyByZWxhdGl2ZSBwYXRocyBhbHNv
IGJlY2F1c2Ugd2hlbiBpdCBsYW5kcyBpbiBXZWJLaXQsIGl0IHdpbGwgYmUKLSAgICAgICAgICAg
ICMgbW92ZWQgZG93biBpbnRvIHRoZSB0ZXN0IGRpci4KLSAgICAgICAgICAgICMKLSAgICAgICAg
ICAgICMgTm90ZTogVGhlIHRlc3QgZmlsZXMgdGhlbXNlbHZlcyBhcmUgbm90IGNoZWNrZWQgZm9y
IHN1cHBvcnQgZmlsZXMKLSAgICAgICAgICAgICMgb3V0c2lkZSB0aGVpciBkaXJlY3RvcmllcyBh
cyB0aGUgY29udmVudGlvbiBpbiB0aGUgQ1NTV0cgaXMgdG8KLSAgICAgICAgICAgICMgcHV0IGFs
bCBzdXBwb3J0IGZpbGVzIGluIHRoZSBzYW1lIGRpciBvciBzdWJkaXIgYXMgdGhlIHRlc3QuCi0g
ICAgICAgICAgICAjCi0gICAgICAgICAgICAjIEFsbCBub24tdGVzdCBmaWxlcyBpbiB0aGUgdGVz
dCdzIGRpcmVjdG9yeSB0cmVlIGFyZSBub3JtYWxseQotICAgICAgICAgICAgIyBjb3BpZWQgYXMg
cGFydCBvZiB0aGUgaW1wb3J0IGFzIHRoZXkgYXJlIGFzc3VtZWQgdG8gYmUgcmVxdWlyZWQKLSAg
ICAgICAgICAgICMgc3VwcG9ydCBmaWxlcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMg
KkJ1dCosIHRoZXJlIGlzIGV4YWN0bHkgb25lIGNhc2UgaW4gdGhlIGVudGlyZSBjc3MyLjEgc3Vp
dGUgd2hlcmUKLSAgICAgICAgICAgICMgYSB0ZXN0IGRlcGVuZHMgb24gYSBmaWxlIHRoYXQgbGl2
ZXMgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LAotICAgICAgICAgICAgIyB3aGljaCBkZXBlbmRz
IG9uIGFub3RoZXIgZmlsZSB0aGF0IGxpdmVzIG91dHNpZGUgb2YgaXRzCi0gICAgICAgICAgICAj
IGRpcmVjdG9yeS4gVGhpcyBjb2RlIGNvdmVycyB0aGF0IGNhc2UgOikKLSAgICAgICAgICAgIGlm
IG1hdGNoZXNbMF1bJ2hyZWYnXS5zdGFydHN3aXRoKCcuLicpOgotICAgICAgICAgICAgICAgIHN1
cHBvcnRfZmlsZXMgPSBzZWxmLnN1cHBvcnRfZmlsZXMoc2VsZi5yZWZfZG9jKQotICAgICAgICAg
ICAgICAgIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddID0gc3VwcG9ydF9maWxlcworICAgICAgICAg
ICAgIyBJZiB0aGUgcmVmIGZpbGUgZG9lcyBub3QgbGl2ZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkg
YXMgdGhlIHRlc3QgZmlsZSwgY2hlY2sgaXQgZm9yIHN1cHBvcnQgZmlsZXMKKyAgICAgICAgICAg
IHRlc3RfaW5mb1sncmVmZXJlbmNlX3N1cHBvcnRfaW5mbyddID0ge30KKyAgICAgICAgICAgIGlm
IHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKHJlZl9maWxlKSAhPSBzZWxmLmZpbGVzeXN0ZW0uZGly
bmFtZShzZWxmLmZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICByZWZlcmVuY2Vfc3VwcG9ydF9m
aWxlcyA9IHNlbGYuc3VwcG9ydF9maWxlcyhzZWxmLnJlZl9kb2MpCisgICAgICAgICAgICAgICAg
aWYgbGVuKHJlZmVyZW5jZV9zdXBwb3J0X2ZpbGVzKSA+IDA6CisgICAgICAgICAgICAgICAgICAg
IHJlZmVyZW5jZV9yZWxwYXRoID0gc2VsZi5maWxlc3lzdGVtLnJlbHBhdGgoc2VsZi5maWxlc3lz
dGVtLmRpcm5hbWUoc2VsZi5maWxlbmFtZSksIHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKHJlZl9m
aWxlKSkgKyBzZWxmLmZpbGVzeXN0ZW0uc2VwCisgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5m
b1sncmVmZXJlbmNlX3N1cHBvcnRfaW5mbyddID0geydyZWZlcmVuY2VfcmVscGF0aCc6IHJlZmVy
ZW5jZV9yZWxwYXRoLCAnZmlsZXMnOiByZWZlcmVuY2Vfc3VwcG9ydF9maWxlc30KIAogICAgICAg
ICBlbGlmIHNlbGYuaXNfanN0ZXN0KCk6CiAgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3Qn
OiBzZWxmLmZpbGVuYW1lLCAnanN0ZXN0JzogVHJ1ZX0KQEAgLTE1Niw3ICsxMzgsNyBAQCBjbGFz
cyBUZXN0UGFyc2VyKG9iamVjdCk6CiAKICAgICAgICAgcGF0aHMgPSBzcmNfcGF0aHMgKyBocmVm
X3BhdGhzICsgdXJscwogICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKLSAgICAgICAgICAgIGlm
IG5vdChwYXRoLnN0YXJ0c3dpdGgoJ2h0dHA6JykpIGFuZCBub3QocGF0aC5zdGFydHN3aXRoKCdt
YWlsdG86JykpOgorICAgICAgICAgICAgaWYgbm90KHBhdGguc3RhcnRzd2l0aCgnaHR0cDonKSkg
YW5kIG5vdChwYXRoLnN0YXJ0c3dpdGgoJ21haWx0bzonKSkgYW5kIG5vdChwYXRoLnN0YXJ0c3dp
dGgoJ2RhdGE6JykpOgogICAgICAgICAgICAgICAgIHN1cHBvcnRfZmlsZXMuYXBwZW5kKHBhdGgp
CiAKICAgICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237914</attachid>
            <date>2014-09-10 15:50:00 -0700</date>
            <delta_ts>2014-09-11 11:41:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135929-20140910155111.patch</filename>
            <type>text/plain</type>
            <size>13702</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMjIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODc3NDllZTBmMTIyNjJlYjg0YWNlYWE5MjlmOWNhYzM2
OGY3ZTEyOS4uNTUyNWQ5M2JmMTU1NmNjZTA1MGYxMThmODY4OGRmMWZhY2YwMGFhMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE0LTA5LTEwICBSZWJlY2NhIEhhdWNrICA8cmhhdWNrQGFkb2JlLmNvbT4KKworICAg
ICAgICBpbXBvcnQtdzNjLXRlc3RzIGRvZXNuJ3QgaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIHN1
cHBvcnQgZmlsZXMgaW4gcmVmIGZpbGVzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHJlY2VudCByZWZhY3RvciBvZiB0aGUgVzND
IHRlc3QgcmVwbyBmYWxzaWZpZWQgYSBidW5jaCBvZiBhc3NtdW1wdGlvbnMgdGhhdAorICAgICAg
ICB3ZXJlIG1hZGUgd2hlbiB0aGlzIHNjcmlwdCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIHdpdGgg
cmVzcGVjdCB0byByZWxhdGl2ZSBwYXRocworICAgICAgICBpbiByZWYgZmlsZXMuIFRoaXMgcGF0
Y2ggdXBkYXRlcyBpbXBvcnQtdzNjLXRlc3RzIHRvIHVwZGF0ZSBwYXRocyBpbiByZWYgZmlsZXMg
aWYKKyAgICAgICAgdGhleSBtb3ZlIHJlbGF0aXZlIHRvIHRoZSB0ZXN0IGZpbGUuCisKKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5OgorICAgICAgICAo
Y29udmVydF9mb3Jfd2Via2l0KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLl9faW5pdF9f
KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfcmVmZXJlbmNlX3JlbHBhdGhz
KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfc3R5bGVfZGF0YSk6CisgICAg
ICAgIChfVzNDVGVzdENvbnZlcnRlci5jb252ZXJ0X2F0dHJpYnV0ZXNfaWZfbmVlZGVkKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OgorICAgICAgICAo
VGVzdEltcG9ydGVyLmZpbmRfaW1wb3J0YWJsZV90ZXN0cyk6CisgICAgICAgIChUZXN0SW1wb3J0
ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3Bh
cnNlci5weToKKyAgICAgICAgKFRlc3RQYXJzZXIubG9hZF9maWxlKToKKyAgICAgICAgKFRlc3RQ
YXJzZXIuYW5hbHl6ZV90ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuc3VwcG9ydF9maWxlcyk6
CisKIDIwMTQtMDktMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dpbl0gUmV2aXNlIHRlc3QgZW52aXJvbm1lbnQgZm9yIFdpbmRvd3MgYnVpbGQuCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CmluZGV4IDJiYjA0
NTZmMzRiN2VlZDhkMGVmMTI1ZTBhNDU1ZGY5MDIxOWE5OTcuLjVjY2JkNmYyZjZmNTE3MzJjMGU1
ZGE4MzM4NjVmNzQ3MjBiZjRiYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfY29udmVydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfY29udmVydGVyLnB5CkBAIC0zNywxMiArMzcsMTIgQEAgZnJvbSBIVE1MUGFyc2VyIGltcG9y
dCBIVE1MUGFyc2VyCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAotZGVm
IGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWUsIGhvc3Q9SG9zdCgpKToKK2Rl
ZiBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lLCByZWZlcmVuY2Vfc3VwcG9y
dF9pbmZvLCBob3N0PUhvc3QoKSk6CiAgICAgIiIiIENvbnZlcnRzIGEgZmlsZSdzIHxjb250ZW50
c3wgc28gaXQgd2lsbCBmdW5jdGlvbiBjb3JyZWN0bHkgaW4gaXRzIHxuZXdfcGF0aHwgaW4gV2Vi
a2l0LgogCiAgICAgUmV0dXJucyB0aGUgbGlzdCBvZiBtb2RpZmllZCBwcm9wZXJ0aWVzIGFuZCB0
aGUgbW9kaWZpZWQgdGV4dCBpZiB0aGUgZmlsZSB3YXMgbW9kaWZlZCwgTm9uZSBvdGhlcndpc2Uu
IiIiCiAgICAgY29udGVudHMgPSBob3N0LmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShmaWxl
bmFtZSkKLSAgICBjb252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihuZXdfcGF0aCwgZmlsZW5h
bWUsIGhvc3QpCisgICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIobmV3X3BhdGgsIGZp
bGVuYW1lLCByZWZlcmVuY2Vfc3VwcG9ydF9pbmZvLCBob3N0KQogICAgIGlmIGZpbGVuYW1lLmVu
ZHN3aXRoKCcuY3NzJyk6CiAgICAgICAgIHJldHVybiBjb252ZXJ0ZXIuYWRkX3dlYmtpdF9wcmVm
aXhfdG9fdW5wcmVmaXhlZF9wcm9wZXJ0aWVzKGNvbnRlbnRzKQogICAgIGVsc2U6CkBAIC01Miw3
ICs1Miw3IEBAIGRlZiBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lLCBob3N0
PUhvc3QoKSk6CiAKIAogY2xhc3MgX1czQ1Rlc3RDb252ZXJ0ZXIoSFRNTFBhcnNlcik6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5ld19wYXRoLCBmaWxlbmFtZSwgaG9zdD1Ib3N0KCkpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuZXdfcGF0aCwgZmlsZW5hbWUsIHJlZmVyZW5jZV9zdXBwb3J0
X2luZm8sIGhvc3Q9SG9zdCgpKToKICAgICAgICAgSFRNTFBhcnNlci5fX2luaXRfXyhzZWxmKQog
CiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIF9XM0NU
ZXN0Q29udmVydGVyKEhUTUxQYXJzZXIpOgogICAgICAgICBzZWxmLmluX3N0eWxlX3RhZyA9IEZh
bHNlCiAgICAgICAgIHNlbGYuc3R5bGVfZGF0YSA9IFtdCiAgICAgICAgIHNlbGYuZmlsZW5hbWUg
PSBmaWxlbmFtZQorICAgICAgICBzZWxmLnJlZmVyZW5jZV9zdXBwb3J0X2luZm8gPSByZWZlcmVu
Y2Vfc3VwcG9ydF9pbmZvCiAKICAgICAgICAgcmVzb3VyY2VzX3BhdGggPSBzZWxmLnBhdGhfZnJv
bV93ZWJraXRfcm9vdCgnTGF5b3V0VGVzdHMnLCAncmVzb3VyY2VzJykKICAgICAgICAgcmVzb3Vy
Y2VzX3JlbHBhdGggPSBzZWxmLl9maWxlc3lzdGVtLnJlbHBhdGgocmVzb3VyY2VzX3BhdGgsIG5l
d19wYXRoKQpAQCAtMTI2LDExICsxMjcsMjcgQEAgY2xhc3MgX1czQ1Rlc3RDb252ZXJ0ZXIoSFRN
TFBhcnNlcik6CiAgICAgICAgICMgRklYTUU6IEhhbmRsZSB0aGUgSlMgdmVyc2lvbnMgb2YgdGhl
c2UgcHJvcGVydGllcyBhbmQgR2V0Q29tcHV0ZWRTdHlsZSwgdG9vLgogICAgICAgICByZXR1cm4g
KGNvbnZlcnRlZF9wcm9wZXJ0aWVzLCAnJy5qb2luKHRleHRfY2h1bmtzKSkKIAorICAgIGRlZiBj
b252ZXJ0X3JlZmVyZW5jZV9yZWxwYXRocyhzZWxmLCB0ZXh0KToKKyAgICAgICAgIiIiIFNlYXJj
aGVzIHx0ZXh0fCBmb3IgaW5zdGFuY2VzIG9mIGZpbGVzIGluIHJlZmVyZW5jZV9zdXBwb3J0X2lu
Zm8gYW5kIHVwZGF0ZXMgdGhlIHJlbGF0aXZlIHBhdGggdG8gYmUgY29ycmVjdCBmb3IgdGhlIG5l
dyByZWYgZmlsZSBsb2NhdGlvbiIiIgorICAgICAgICBjb252ZXJ0ZWQgPSB0ZXh0CisgICAgICAg
IGZvciBwYXRoIGluIHNlbGYucmVmZXJlbmNlX3N1cHBvcnRfaW5mb1snZmlsZXMnXToKKyAgICAg
ICAgICAgIGlmIHRleHQuZmluZChwYXRoKSAhPSAtMToKKyAgICAgICAgICAgICAgICAjIEZJWE1F
OiBUaGlzIGRvZXNuJ3QgaGFuZGxlIGFuIGVkZ2UgY2FzZSB3aGVyZSBzaW1wbHkgcmVtb3Zpbmcg
dGhlIHJlbGF0aXZlIHBhdGggZG9lc24ndCB3b3JrLgorICAgICAgICAgICAgICAgICMgU2VlIGh0
dHA6Ly93ZWJraXQub3JnL2IvMTM1Njc3IGZvciBkZXRhaWxzLgorICAgICAgICAgICAgICAgIG5l
d19wYXRoID0gcmUuc3ViKHNlbGYucmVmZXJlbmNlX3N1cHBvcnRfaW5mb1sncmVmZXJlbmNlX3Jl
bHBhdGgnXSwgJycsIHBhdGgsIDEpCisgICAgICAgICAgICAgICAgY29udmVydGVkID0gcmUuc3Vi
KHBhdGgsIG5ld19wYXRoLCB0ZXh0KQorCisgICAgICAgIHJldHVybiBjb252ZXJ0ZWQKKwogICAg
IGRlZiBjb252ZXJ0X3N0eWxlX2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgIGNvbnZlcnRlZCA9
IHNlbGYuYWRkX3dlYmtpdF9wcmVmaXhfdG9fdW5wcmVmaXhlZF9wcm9wZXJ0aWVzKGRhdGEpCiAg
ICAgICAgIGlmIGNvbnZlcnRlZFswXToKICAgICAgICAgICAgIHNlbGYuY29udmVydGVkX3Byb3Bl
cnRpZXMuZXh0ZW5kKGxpc3QoY29udmVydGVkWzBdKSkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRl
ZFsxXQorCisgICAgICAgIGlmIHNlbGYucmVmZXJlbmNlX3N1cHBvcnRfaW5mbyBpcyBOb25lIG9y
IHNlbGYucmVmZXJlbmNlX3N1cHBvcnRfaW5mbyA9PSB7fToKKyAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0ZWRbMV0KKworICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3JlZmVyZW5jZV9yZWxw
YXRocyhjb252ZXJ0ZWRbMV0pCiAKICAgICBkZWYgY29udmVydF9hdHRyaWJ1dGVzX2lmX25lZWRl
ZChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICAgY29udmVydGVkID0gc2VsZi5nZXRfc3RhcnR0
YWdfdGV4dCgpCkBAIC0xNDgsNiArMTY1LDEyIEBAIGNsYXNzIF9XM0NUZXN0Q29udmVydGVyKEhU
TUxQYXJzZXIpOgogICAgICAgICAgICAgICAgIG5ld19zdHlsZSA9IHNlbGYuY29udmVydF9zdHls
ZV9kYXRhKGF0dHJbMV0pCiAgICAgICAgICAgICAgICAgY29udmVydGVkID0gcmUuc3ViKGF0dHJb
MV0sIG5ld19zdHlsZSwgY29udmVydGVkKQogCisgICAgICAgIHNyY190YWdzID0gKCdzY3JpcHQn
LCAnaW1nJywgJ2ZyYW1lJywgJ2lmcmFtZScsICdpbnB1dCcsICdsYXllcicsICd0ZXh0YXJlYScs
ICd2aWRlbycsICdhdWRpbycpCisgICAgICAgIGlmIHRhZyBpbiBzcmNfdGFncyBhbmQgc2VsZi5y
ZWZlcmVuY2Vfc3VwcG9ydF9pbmZvIGlzIG5vdCBOb25lIGFuZCAgc2VsZi5yZWZlcmVuY2Vfc3Vw
cG9ydF9pbmZvICE9IHt9OgorICAgICAgICAgICAgZm9yIGF0dHJfbmFtZSwgYXR0cl92YWx1ZSBp
biBhdHRyczoKKyAgICAgICAgICAgICAgICBpZiBhdHRyX25hbWUgPT0gJ3NyYyc6CisgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRlZCA9IHNlbGYuY29udmVydF9yZWZlcmVuY2VfcmVscGF0aHMo
YXR0cl92YWx1ZSkKKwogICAgICAgICBzZWxmLmNvbnZlcnRlZF9kYXRhLmFwcGVuZChjb252ZXJ0
ZWQpCiAKICAgICBkZWYgaGFuZGxlX3N0YXJ0dGFnKHNlbGYsIHRhZywgYXR0cnMpOgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKaW5kZXggNDI4ZDgyM2FkMjg4
ZGUwNjNmNzE1ZDMyZDY5ZjVjZjEyMDg2NTNjYy4uZDBhMTk0NTFlNDdjM2M0ODc0MDU3NjY1ZGM3
NDhlMjNlZTI4MjI2YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9pbXBvcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9y
dGVyLnB5CkBAIC0yMDcsMjEgKzIwNyw5IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgog
ICAgICAgICAgICAgICAgICAgICByZWZfZmlsZSA9IG9zLnBhdGguc3BsaXRleHQodGVzdF9iYXNl
bmFtZSlbMF0gKyAnLWV4cGVjdGVkJwogICAgICAgICAgICAgICAgICAgICByZWZfZmlsZSArPSBv
cy5wYXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5hbWUpWzFdCiAKLSAgICAgICAgICAgICAgICAgICAg
Y29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0Jzog
cmVmX2ZpbGV9KQorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzog
dGVzdF9pbmZvWydyZWZlcmVuY2UnXSwgJ2Rlc3QnOiByZWZfZmlsZSwgJ3JlZmVyZW5jZV9zdXBw
b3J0X2luZm8nOiB0ZXN0X2luZm9bJ3JlZmVyZW5jZV9zdXBwb3J0X2luZm8nXX0pCiAgICAgICAg
ICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3Rlc3QnXSwg
J2Rlc3QnOiBmaWxlbmFtZX0pCiAKLSAgICAgICAgICAgICAgICAgICAgIyBVcGRhdGUgYW55IHN1
cHBvcnQgZmlsZXMgdGhhdCBuZWVkIHRvIG1vdmUgYXMgd2VsbCB0byByZW1haW4gcmVsYXRpdmUg
dG8gdGhlIC1leHBlY3RlZCBmaWxlLgotICAgICAgICAgICAgICAgICAgICBpZiAncmVmc3VwcG9y
dCcgaW4gdGVzdF9pbmZvLmtleXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdXBw
b3J0X2ZpbGUgaW4gdGVzdF9pbmZvWydyZWZzdXBwb3J0J106Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHRlc3Rf
aW5mb1sncmVmZXJlbmNlJ10pLCBzdXBwb3J0X2ZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLm5vcm1wYXRoKHNvdXJjZV9maWxlKQotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBkZXN0IGFzIGl0IHdhcwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvX2NvcHkgPSB7J3NyYyc6IHNvdXJjZV9maWxlLCAnZGVz
dCc6IHN1cHBvcnRfZmlsZX0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT25seSBh
ZGQgaXQgb25jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCh0b19jb3B5IGlu
IGNvcHlfbGlzdCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5h
cHBlbmQodG9fY29weSkKICAgICAgICAgICAgICAgICBlbGlmICdqc3Rlc3QnIGluIHRlc3RfaW5m
by5rZXlzKCk6CiAgICAgICAgICAgICAgICAgICAgIGpzdGVzdHMgKz0gMQogICAgICAgICAgICAg
ICAgICAgICB0b3RhbF90ZXN0cyArPSAxCkBAIC0yMzAsMTEgKzIxOCw2IEBAIGNsYXNzIFRlc3RJ
bXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICB0b3RhbF90ZXN0cyArPSAxCiAg
ICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rl
c3QnOiBmaWxlbmFtZX0pCiAKLSAgICAgICAgICAgIGlmIG5vdCB0b3RhbF90ZXN0czoKLSAgICAg
ICAgICAgICAgICAjIFdlIGNhbiBza2lwIHRoZSBzdXBwb3J0IGRpcmVjdG9yeSBpZiBubyB0ZXN0
cyB3ZXJlIGZvdW5kLgotICAgICAgICAgICAgICAgIGlmICdzdXBwb3J0JyBpbiBkaXJzOgotICAg
ICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnc3VwcG9ydCcpCi0KICAgICAgICAgICAgIGlm
IGNvcHlfbGlzdDoKICAgICAgICAgICAgICAgICAjIE9ubHkgYWRkIHRoaXMgZGlyZWN0b3J5IHRv
IHRoZSBsaXN0IGlmIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGltcG9ydAogICAgICAgICAgICAgICAg
IHNlbGYuaW1wb3J0X2xpc3QuYXBwZW5kKHsnZGlybmFtZSc6IHJvb3QsICdjb3B5X2xpc3QnOiBj
b3B5X2xpc3QsCkBAIC0yODIsNiArMjY1LDEwIEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgbmV3X2Zp
bGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkKKyAg
ICAgICAgICAgICAgICBpZiAncmVmZXJlbmNlX3N1cHBvcnRfaW5mbycgaW4gZmlsZV90b19jb3B5
LmtleXMoKSBhbmQgZmlsZV90b19jb3B5WydyZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJ10gIT0ge306
CisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZV9zdXBwb3J0X2luZm8gPSBmaWxlX3RvX2Nv
cHlbJ3JlZmVyZW5jZV9zdXBwb3J0X2luZm8nXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZV9zdXBwb3J0X2luZm8gPSBOb25lCiAKICAgICAgICAg
ICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxlcGF0
aCkpKToKICAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKG5l
d19maWxlcGF0aCkpCkBAIC0zMDAsMTAgKzI4NywxMSBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICBtaW1ldHlwZSA9IG1pbWV0eXBlcy5ndWVzc190eXBlKG9y
aWdfZmlsZXBhdGgpCiAgICAgICAgICAgICAgICAgaWYgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVsw
XSkgb3IgJ3htbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSAgb3IgJ2NzcycgaW4gc3RyKG1pbWV0eXBl
WzBdKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udmVydGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lPW9y
aWdfZmlsZXBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRfZmlsZSA9IGNv
bnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCwgcmVmZXJl
bmNlX3N1cHBvcnRfaW5mbz1yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvKQogICAgICAgICAgICAgICAg
ICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm4oJ0ZhaWxlZCBj
b252ZXJ0aW5nICVzJywgb3JpZ19maWxlcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIGZh
aWxlZF9jb252ZXJzaW9uX2ZpbGVzLmFwcGVuZChvcmlnX2ZpbGVwYXRoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBOb25lCiAKICAgICAgICAgICAgICAgICAgICAg
aWYgbm90IGNvbnZlcnRlZF9maWxlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNv
cHlmaWxlKG9yaWdfZmlsZXBhdGgsIG5ld19maWxlcGF0aCkgICMgVGhlIGZpbGUgd2FzIHVubW9k
aWZpZWQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5CmluZGV4IGJi
NjZmZGFlNjNiN2YyNWIwNmFhYjY4NjZhZjNkMWVmMDlmZmE4NzAuLjQ0ZjhjN2FjYTZlOTNmMjQ2
MjBiNzQ0YzQ4OWEwNWI5YjU0MTk0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfcGFyc2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfcGFyc2VyLnB5CkBAIC00OSwzNyArNDksMzEgQEAgY2xhc3MgVGVzdFBhcnNlcihvYmplY3Qp
OgogICAgICAgICBzZWxmLnJlZl9kb2MgPSBOb25lCiAgICAgICAgIHNlbGYubG9hZF9maWxlKGZp
bGVuYW1lKQogCi0gICAgZGVmIGxvYWRfZmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAgZGVmIGxv
YWRfZmlsZShzZWxmLCBmaWxlbmFtZSwgaXNfcmVmPUZhbHNlKToKICAgICAgICAgaWYgc2VsZi5m
aWxlc3lzdGVtLmlzZmlsZShmaWxlbmFtZSk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi50ZXN0X2RvYyA9IFBhcnNlcihzZWxmLmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlf
ZmlsZShmaWxlbmFtZSkpCisgICAgICAgICAgICAgICAgZG9jID0gUGFyc2VyKHNlbGYuZmlsZXN5
c3RlbS5yZWFkX2JpbmFyeV9maWxlKGZpbGVuYW1lKSkKICAgICAgICAgICAgIGV4Y2VwdDoKICAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gaWYgd2UgY2FuJ3Qg
cGFyc2UgdGhlIGZpbGUuCiAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIHBh
cnNlICVzIiwgZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyBpcyBOb25l
CisgICAgICAgICAgICAgICAgZG9jID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
aWYgc2VsZi5maWxlc3lzdGVtLmlzZGlyKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICAjIEZJ
WE1FOiBGaWd1cmUgb3V0IHdoYXQgaXMgdHJpZ2dlcmluZyB0aGlzIGFuZCB3aGF0IHRvIGRvIGFi
b3V0IGl0LgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIlRyeWluZyB0byBsb2FkICVzLCB3
aGljaCBpcyBhIGRpcmVjdG9yeSIsIGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi50ZXN0X2Rv
YyA9IE5vbmUKLSAgICAgICAgc2VsZi5yZWZfZG9jID0gTm9uZQorICAgICAgICAgICAgZG9jID0g
Tm9uZQorCisgICAgICAgIGlmIGlzX3JlZjoKKyAgICAgICAgICAgIHNlbGYucmVmX2RvYyA9IGRv
YworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyA9IGRvYwogCiAgICAg
ZGVmIGFuYWx5emVfdGVzdChzZWxmLCB0ZXN0X2NvbnRlbnRzPU5vbmUsIHJlZl9jb250ZW50cz1O
b25lKToKICAgICAgICAgIiIiIEFuYWx5emVzIGEgZmlsZSB0byBkZXRlcm1pbmUgaWYgaXQncyBh
IHRlc3QsIHdoYXQgdHlwZSBvZiB0ZXN0LCBhbmQgd2hhdCByZWZlcmVuY2Ugb3Igc3VwcG9ydCBm
aWxlcyBpdCByZXF1aXJlcy4gUmV0dXJucyBhbGwgb2YgdGhlIHRlc3QgaW5mbyAiIiIKIAogICAg
ICAgICB0ZXN0X2luZm8gPSBOb25lCiAKLSAgICAgICAgaWYgdGVzdF9jb250ZW50cyBpcyBOb25l
IGFuZCBzZWxmLnRlc3RfZG9jIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gdGVzdF9pbmZv
Ci0KLSAgICAgICAgaWYgdGVzdF9jb250ZW50cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNl
bGYudGVzdF9kb2MgPSBQYXJzZXIodGVzdF9jb250ZW50cykKLQotICAgICAgICBpZiByZWZfY29u
dGVudHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBQYXJzZXIocmVm
X2NvbnRlbnRzKQotCiAgICAgICAgICMgRmlyc3QgY2hlY2sgaWYgaXQncyBhIHJlZnRlc3QKLQog
ICAgICAgICBtYXRjaGVzID0gc2VsZi5yZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZSgnbWF0Y2gnKSAr
IHNlbGYucmVmZXJlbmNlX2xpbmtzX29mX3R5cGUoJ21pc21hdGNoJykKICAgICAgICAgaWYgbWF0
Y2hlczoKICAgICAgICAgICAgIGlmIGxlbihtYXRjaGVzKSA+IDE6CkBAIC05NSwyOSArODksMTcg
QEAgY2xhc3MgVGVzdFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25l
CiAKICAgICAgICAgICAgIGlmIHNlbGYucmVmX2RvYyBpcyBOb25lOgotICAgICAgICAgICAgICAg
IHNlbGYucmVmX2RvYyA9IHNlbGYubG9hZF9maWxlKHJlZl9maWxlKQorICAgICAgICAgICAgICAg
IHNlbGYubG9hZF9maWxlKHJlZl9maWxlLCBUcnVlKQogCiAgICAgICAgICAgICB0ZXN0X2luZm8g
PSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAncmVmZXJlbmNlJzogcmVmX2ZpbGV9CiAKLSAgICAg
ICAgICAgICMgSWYgdGhlIHJlZiBmaWxlIHBhdGggaXMgcmVsYXRpdmUsIHdlIG5lZWQgdG8gY2hl
Y2sgaXQgZm9yCi0gICAgICAgICAgICAjIHJlbGF0aXZlIHBhdGhzIGFsc28gYmVjYXVzZSB3aGVu
IGl0IGxhbmRzIGluIFdlYktpdCwgaXQgd2lsbCBiZQotICAgICAgICAgICAgIyBtb3ZlZCBkb3du
IGludG8gdGhlIHRlc3QgZGlyLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBOb3RlOiBU
aGUgdGVzdCBmaWxlcyB0aGVtc2VsdmVzIGFyZSBub3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxl
cwotICAgICAgICAgICAgIyBvdXRzaWRlIHRoZWlyIGRpcmVjdG9yaWVzIGFzIHRoZSBjb252ZW50
aW9uIGluIHRoZSBDU1NXRyBpcyB0bwotICAgICAgICAgICAgIyBwdXQgYWxsIHN1cHBvcnQgZmls
ZXMgaW4gdGhlIHNhbWUgZGlyIG9yIHN1YmRpciBhcyB0aGUgdGVzdC4KLSAgICAgICAgICAgICMK
LSAgICAgICAgICAgICMgQWxsIG5vbi10ZXN0IGZpbGVzIGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5
IHRyZWUgYXJlIG5vcm1hbGx5Ci0gICAgICAgICAgICAjIGNvcGllZCBhcyBwYXJ0IG9mIHRoZSBp
bXBvcnQgYXMgdGhleSBhcmUgYXNzdW1lZCB0byBiZSByZXF1aXJlZAotICAgICAgICAgICAgIyBz
dXBwb3J0IGZpbGVzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAqQnV0KiwgdGhlcmUg
aXMgZXhhY3RseSBvbmUgY2FzZSBpbiB0aGUgZW50aXJlIGNzczIuMSBzdWl0ZSB3aGVyZQotICAg
ICAgICAgICAgIyBhIHRlc3QgZGVwZW5kcyBvbiBhIGZpbGUgdGhhdCBsaXZlcyBpbiBhIGRpZmZl
cmVudCBkaXJlY3RvcnksCi0gICAgICAgICAgICAjIHdoaWNoIGRlcGVuZHMgb24gYW5vdGhlciBm
aWxlIHRoYXQgbGl2ZXMgb3V0c2lkZSBvZiBpdHMKLSAgICAgICAgICAgICMgZGlyZWN0b3J5LiBU
aGlzIGNvZGUgY292ZXJzIHRoYXQgY2FzZSA6KQotICAgICAgICAgICAgaWYgbWF0Y2hlc1swXVsn
aHJlZiddLnN0YXJ0c3dpdGgoJy4uJyk6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydF9maWxlcyA9
IHNlbGYuc3VwcG9ydF9maWxlcyhzZWxmLnJlZl9kb2MpCi0gICAgICAgICAgICAgICAgdGVzdF9p
bmZvWydyZWZzdXBwb3J0J10gPSBzdXBwb3J0X2ZpbGVzCisgICAgICAgICAgICAjIElmIHRoZSBy
ZWYgZmlsZSBkb2VzIG5vdCBsaXZlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgdGVzdCBm
aWxlLCBjaGVjayBpdCBmb3Igc3VwcG9ydCBmaWxlcworICAgICAgICAgICAgdGVzdF9pbmZvWydy
ZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJ10gPSB7fQorICAgICAgICAgICAgaWYgc2VsZi5maWxlc3lz
dGVtLmRpcm5hbWUocmVmX2ZpbGUpICE9IHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKHNlbGYuZmls
ZW5hbWUpOgorICAgICAgICAgICAgICAgIHJlZmVyZW5jZV9zdXBwb3J0X2ZpbGVzID0gc2VsZi5z
dXBwb3J0X2ZpbGVzKHNlbGYucmVmX2RvYykKKyAgICAgICAgICAgICAgICBpZiBsZW4ocmVmZXJl
bmNlX3N1cHBvcnRfZmlsZXMpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlX3Jl
bHBhdGggPSBzZWxmLmZpbGVzeXN0ZW0ucmVscGF0aChzZWxmLmZpbGVzeXN0ZW0uZGlybmFtZShz
ZWxmLmZpbGVuYW1lKSwgc2VsZi5maWxlc3lzdGVtLmRpcm5hbWUocmVmX2ZpbGUpKSArIHNlbGYu
ZmlsZXN5c3RlbS5zZXAKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZlcmVuY2Vf
c3VwcG9ydF9pbmZvJ10gPSB7J3JlZmVyZW5jZV9yZWxwYXRoJzogcmVmZXJlbmNlX3JlbHBhdGgs
ICdmaWxlcyc6IHJlZmVyZW5jZV9zdXBwb3J0X2ZpbGVzfQogCiAgICAgICAgIGVsaWYgc2VsZi5p
c19qc3Rlc3QoKToKICAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5h
bWUsICdqc3Rlc3QnOiBUcnVlfQpAQCAtMTU2LDcgKzEzOCw4IEBAIGNsYXNzIFRlc3RQYXJzZXIo
b2JqZWN0KToKIAogICAgICAgICBwYXRocyA9IHNyY19wYXRocyArIGhyZWZfcGF0aHMgKyB1cmxz
CiAgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAgICAgICAgaWYgbm90KHBhdGguc3Rh
cnRzd2l0aCgnaHR0cDonKSkgYW5kIG5vdChwYXRoLnN0YXJ0c3dpdGgoJ21haWx0bzonKSk6Cisg
ICAgICAgICAgICB1cmlfc2NoZW1lX3BhdHRlcm4gPSByZS5jb21waWxlKHIiW0EtWmEtel1bQS1a
YS16Ky4tXSo6IikKKyAgICAgICAgICAgIGlmIHVyaV9zY2hlbWVfcGF0dGVybi5tYXRjaChwYXRo
KToKICAgICAgICAgICAgICAgICBzdXBwb3J0X2ZpbGVzLmFwcGVuZChwYXRoKQogCiAgICAgICAg
IHJldHVybiBzdXBwb3J0X2ZpbGVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237971</attachid>
            <date>2014-09-11 11:41:35 -0700</date>
            <delta_ts>2014-09-11 12:36:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135929-20140911114249.patch</filename>
            <type>text/plain</type>
            <size>18003</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMjIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODc3NDllZTBmMTIyNjJlYjg0YWNlYWE5MjlmOWNhYzM2
OGY3ZTEyOS4uMWI2MzFmYTkxZTBmNzk2NmQxMDIyMmQxNzZkODAyMjZkYWU4ZTg0YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDE0LTA5LTExICBSZWJlY2NhIEhhdWNrICA8cmhhdWNrQGFkb2JlLmNvbT4KKworICAg
ICAgICBpbXBvcnQtdzNjLXRlc3RzIGRvZXNuJ3QgaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIHN1
cHBvcnQgZmlsZXMgaW4gcmVmIGZpbGVzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QmVtIEpvbmVzLUJleS4KKworICAgICAgICBUaGUgcmVjZW50IHJlZmFjdG9yIG9mIHRoZSBXM0Mg
dGVzdCByZXBvIGZhbHNpZmllZCBhIGJ1bmNoIG9mIGFzc211bXB0aW9ucyB0aGF0CisgICAgICAg
IHdlcmUgbWFkZSB3aGVuIHRoaXMgc2NyaXB0IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gd2l0aCBy
ZXNwZWN0IHRvIHJlbGF0aXZlIHBhdGhzCisgICAgICAgIGluIHJlZiBmaWxlcy4gVGhpcyBwYXRj
aCB1cGRhdGVzIGltcG9ydC13M2MtdGVzdHMgdG8gdXBkYXRlIHBhdGhzIGluIHJlZiBmaWxlcyBp
ZgorICAgICAgICB0aGV5IG1vdmUgcmVsYXRpdmUgdG8gdGhlIHRlc3QgZmlsZS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5OgorICAgICAgICAoY29u
dmVydF9mb3Jfd2Via2l0KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLl9faW5pdF9fKToK
KyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfcmVmZXJlbmNlX3JlbHBhdGhzKToK
KyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfc3R5bGVfZGF0YSk6CisgICAgICAg
IChfVzNDVGVzdENvbnZlcnRlci5jb252ZXJ0X2F0dHJpYnV0ZXNfaWZfbmVlZGVkKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weToKKyAg
ICAgICAgKFczQ1Rlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfcmVhZF9wcmVmaXhlZF9wcm9wZXJ0eV9s
aXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5Ogor
ICAgICAgICAoVGVzdEltcG9ydGVyLmZpbmRfaW1wb3J0YWJsZV90ZXN0cyk6CisgICAgICAgIChU
ZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X3BhcnNlci5weToKKyAgICAgICAgKFRlc3RQYXJzZXIubG9hZF9maWxlKToKKyAgICAg
ICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuc3VwcG9y
dF9maWxlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXJfdW5p
dHRlc3QucHk6CisKIDIwMTQtMDktMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dpbl0gUmV2aXNlIHRlc3QgZW52aXJvbm1lbnQgZm9yIFdpbmRvd3Mg
YnVpbGQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZl
cnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5Cmlu
ZGV4IDJiYjA0NTZmMzRiN2VlZDhkMGVmMTI1ZTBhNDU1ZGY5MDIxOWE5OTcuLjVjY2JkNmYyZjZm
NTE3MzJjMGU1ZGE4MzM4NjVmNzQ3MjBiZjRiYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CkBAIC0zNywxMiArMzcsMTIgQEAgZnJvbSBIVE1MUGFy
c2VyIGltcG9ydCBIVE1MUGFyc2VyCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18p
CiAKIAotZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWUsIGhvc3Q9SG9z
dCgpKToKK2RlZiBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lLCByZWZlcmVu
Y2Vfc3VwcG9ydF9pbmZvLCBob3N0PUhvc3QoKSk6CiAgICAgIiIiIENvbnZlcnRzIGEgZmlsZSdz
IHxjb250ZW50c3wgc28gaXQgd2lsbCBmdW5jdGlvbiBjb3JyZWN0bHkgaW4gaXRzIHxuZXdfcGF0
aHwgaW4gV2Via2l0LgogCiAgICAgUmV0dXJucyB0aGUgbGlzdCBvZiBtb2RpZmllZCBwcm9wZXJ0
aWVzIGFuZCB0aGUgbW9kaWZpZWQgdGV4dCBpZiB0aGUgZmlsZSB3YXMgbW9kaWZlZCwgTm9uZSBv
dGhlcndpc2UuIiIiCiAgICAgY29udGVudHMgPSBob3N0LmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlf
ZmlsZShmaWxlbmFtZSkKLSAgICBjb252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihuZXdfcGF0
aCwgZmlsZW5hbWUsIGhvc3QpCisgICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIobmV3
X3BhdGgsIGZpbGVuYW1lLCByZWZlcmVuY2Vfc3VwcG9ydF9pbmZvLCBob3N0KQogICAgIGlmIGZp
bGVuYW1lLmVuZHN3aXRoKCcuY3NzJyk6CiAgICAgICAgIHJldHVybiBjb252ZXJ0ZXIuYWRkX3dl
YmtpdF9wcmVmaXhfdG9fdW5wcmVmaXhlZF9wcm9wZXJ0aWVzKGNvbnRlbnRzKQogICAgIGVsc2U6
CkBAIC01Miw3ICs1Miw3IEBAIGRlZiBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVu
YW1lLCBob3N0PUhvc3QoKSk6CiAKIAogY2xhc3MgX1czQ1Rlc3RDb252ZXJ0ZXIoSFRNTFBhcnNl
cik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5ld19wYXRoLCBmaWxlbmFtZSwgaG9zdD1Ib3N0
KCkpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuZXdfcGF0aCwgZmlsZW5hbWUsIHJlZmVyZW5j
ZV9zdXBwb3J0X2luZm8sIGhvc3Q9SG9zdCgpKToKICAgICAgICAgSFRNTFBhcnNlci5fX2luaXRf
XyhzZWxmKQogCiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CkBAIC02NCw2ICs2NCw3IEBAIGNs
YXNzIF9XM0NUZXN0Q29udmVydGVyKEhUTUxQYXJzZXIpOgogICAgICAgICBzZWxmLmluX3N0eWxl
X3RhZyA9IEZhbHNlCiAgICAgICAgIHNlbGYuc3R5bGVfZGF0YSA9IFtdCiAgICAgICAgIHNlbGYu
ZmlsZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLnJlZmVyZW5jZV9zdXBwb3J0X2luZm8g
PSByZWZlcmVuY2Vfc3VwcG9ydF9pbmZvCiAKICAgICAgICAgcmVzb3VyY2VzX3BhdGggPSBzZWxm
LnBhdGhfZnJvbV93ZWJraXRfcm9vdCgnTGF5b3V0VGVzdHMnLCAncmVzb3VyY2VzJykKICAgICAg
ICAgcmVzb3VyY2VzX3JlbHBhdGggPSBzZWxmLl9maWxlc3lzdGVtLnJlbHBhdGgocmVzb3VyY2Vz
X3BhdGgsIG5ld19wYXRoKQpAQCAtMTI2LDExICsxMjcsMjcgQEAgY2xhc3MgX1czQ1Rlc3RDb252
ZXJ0ZXIoSFRNTFBhcnNlcik6CiAgICAgICAgICMgRklYTUU6IEhhbmRsZSB0aGUgSlMgdmVyc2lv
bnMgb2YgdGhlc2UgcHJvcGVydGllcyBhbmQgR2V0Q29tcHV0ZWRTdHlsZSwgdG9vLgogICAgICAg
ICByZXR1cm4gKGNvbnZlcnRlZF9wcm9wZXJ0aWVzLCAnJy5qb2luKHRleHRfY2h1bmtzKSkKIAor
ICAgIGRlZiBjb252ZXJ0X3JlZmVyZW5jZV9yZWxwYXRocyhzZWxmLCB0ZXh0KToKKyAgICAgICAg
IiIiIFNlYXJjaGVzIHx0ZXh0fCBmb3IgaW5zdGFuY2VzIG9mIGZpbGVzIGluIHJlZmVyZW5jZV9z
dXBwb3J0X2luZm8gYW5kIHVwZGF0ZXMgdGhlIHJlbGF0aXZlIHBhdGggdG8gYmUgY29ycmVjdCBm
b3IgdGhlIG5ldyByZWYgZmlsZSBsb2NhdGlvbiIiIgorICAgICAgICBjb252ZXJ0ZWQgPSB0ZXh0
CisgICAgICAgIGZvciBwYXRoIGluIHNlbGYucmVmZXJlbmNlX3N1cHBvcnRfaW5mb1snZmlsZXMn
XToKKyAgICAgICAgICAgIGlmIHRleHQuZmluZChwYXRoKSAhPSAtMToKKyAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBUaGlzIGRvZXNuJ3QgaGFuZGxlIGFuIGVkZ2UgY2FzZSB3aGVyZSBzaW1wbHkg
cmVtb3ZpbmcgdGhlIHJlbGF0aXZlIHBhdGggZG9lc24ndCB3b3JrLgorICAgICAgICAgICAgICAg
ICMgU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTM1Njc3IGZvciBkZXRhaWxzLgorICAgICAgICAg
ICAgICAgIG5ld19wYXRoID0gcmUuc3ViKHNlbGYucmVmZXJlbmNlX3N1cHBvcnRfaW5mb1sncmVm
ZXJlbmNlX3JlbHBhdGgnXSwgJycsIHBhdGgsIDEpCisgICAgICAgICAgICAgICAgY29udmVydGVk
ID0gcmUuc3ViKHBhdGgsIG5ld19wYXRoLCB0ZXh0KQorCisgICAgICAgIHJldHVybiBjb252ZXJ0
ZWQKKwogICAgIGRlZiBjb252ZXJ0X3N0eWxlX2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgIGNv
bnZlcnRlZCA9IHNlbGYuYWRkX3dlYmtpdF9wcmVmaXhfdG9fdW5wcmVmaXhlZF9wcm9wZXJ0aWVz
KGRhdGEpCiAgICAgICAgIGlmIGNvbnZlcnRlZFswXToKICAgICAgICAgICAgIHNlbGYuY29udmVy
dGVkX3Byb3BlcnRpZXMuZXh0ZW5kKGxpc3QoY29udmVydGVkWzBdKSkKLSAgICAgICAgcmV0dXJu
IGNvbnZlcnRlZFsxXQorCisgICAgICAgIGlmIHNlbGYucmVmZXJlbmNlX3N1cHBvcnRfaW5mbyBp
cyBOb25lIG9yIHNlbGYucmVmZXJlbmNlX3N1cHBvcnRfaW5mbyA9PSB7fToKKyAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0ZWRbMV0KKworICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3JlZmVy
ZW5jZV9yZWxwYXRocyhjb252ZXJ0ZWRbMV0pCiAKICAgICBkZWYgY29udmVydF9hdHRyaWJ1dGVz
X2lmX25lZWRlZChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICAgY29udmVydGVkID0gc2VsZi5n
ZXRfc3RhcnR0YWdfdGV4dCgpCkBAIC0xNDgsNiArMTY1LDEyIEBAIGNsYXNzIF9XM0NUZXN0Q29u
dmVydGVyKEhUTUxQYXJzZXIpOgogICAgICAgICAgICAgICAgIG5ld19zdHlsZSA9IHNlbGYuY29u
dmVydF9zdHlsZV9kYXRhKGF0dHJbMV0pCiAgICAgICAgICAgICAgICAgY29udmVydGVkID0gcmUu
c3ViKGF0dHJbMV0sIG5ld19zdHlsZSwgY29udmVydGVkKQogCisgICAgICAgIHNyY190YWdzID0g
KCdzY3JpcHQnLCAnaW1nJywgJ2ZyYW1lJywgJ2lmcmFtZScsICdpbnB1dCcsICdsYXllcicsICd0
ZXh0YXJlYScsICd2aWRlbycsICdhdWRpbycpCisgICAgICAgIGlmIHRhZyBpbiBzcmNfdGFncyBh
bmQgc2VsZi5yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvIGlzIG5vdCBOb25lIGFuZCAgc2VsZi5yZWZl
cmVuY2Vfc3VwcG9ydF9pbmZvICE9IHt9OgorICAgICAgICAgICAgZm9yIGF0dHJfbmFtZSwgYXR0
cl92YWx1ZSBpbiBhdHRyczoKKyAgICAgICAgICAgICAgICBpZiBhdHRyX25hbWUgPT0gJ3NyYyc6
CisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZCA9IHNlbGYuY29udmVydF9yZWZlcmVuY2Vf
cmVscGF0aHMoYXR0cl92YWx1ZSkKKwogICAgICAgICBzZWxmLmNvbnZlcnRlZF9kYXRhLmFwcGVu
ZChjb252ZXJ0ZWQpCiAKICAgICBkZWYgaGFuZGxlX3N0YXJ0dGFnKHNlbGYsIHRhZywgYXR0cnMp
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91
bml0dGVzdC5weQppbmRleCBkMjBlMTg5YzFhOTk3NGQ4Mzk1NzEzMmM4ZWM4MTRmNTgzZjk5ZGI4
Li5iMGM0NjliMDk2MzBkMGJkMjExYzkyNmRlMjIxYmE3YTcxYTRiYjI1IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQpA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXM0NUZXN0Q29udmVydGVyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICIiIiBUZXN0cyB0aGF0IHRoZSBjdXJyZW50IGxpc3Qgb2YgcHJvcGVy
dGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBsb2FkIGNvcnJlY3RseSAiIiIKIAog
ICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgYmUgcGFzc2luZyBpbiBhIE1vY2tIb3N0IGhlcmUg
Li4uCi0gICAgICAgIGNvbnZlcnRlciA9IF9XM0NUZXN0Q29udmVydGVyKERVTU1ZX1BBVEgsIERV
TU1ZX0ZJTEVOQU1FKQorICAgICAgICBjb252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihEVU1N
WV9QQVRILCBEVU1NWV9GSUxFTkFNRSwgTm9uZSkKICAgICAgICAgcHJvcF9saXN0ID0gY29udmVy
dGVyLnByZWZpeGVkX3Byb3BlcnRpZXMKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb3BfbGlz
dCwgJ05vIHByZWZpeGVkIHByb3BlcnRpZXMgZm91bmQnKQogCkBAIC03OCw3ICs3OCw3IEBAIENP
TlRFTlQgT0YgVEVTVAogPC9ib2R5PgogPC9odG1sPgogIiIiCi0gICAgICAgIGNvbnZlcnRlciA9
IF9XM0NUZXN0Q29udmVydGVyKERVTU1ZX1BBVEgsIERVTU1ZX0ZJTEVOQU1FKQorICAgICAgICBj
b252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihEVU1NWV9QQVRILCBEVU1NWV9GSUxFTkFNRSwg
Tm9uZSkKIAogICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5jYXB0dXJl
X291dHB1dCgpCkBAIC0xMDAsNyArMTAwLDcgQEAgQ09OVEVOVCBPRiBURVNUCiA8L2hlYWQ+CiAi
IiIKICAgICAgICAgZmFrZV9kaXJfcGF0aCA9IHNlbGYuZmFrZV9kaXJfcGF0aCgiaGFybmVzc29u
bHkiKQotICAgICAgICBjb252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihmYWtlX2Rpcl9wYXRo
LCBEVU1NWV9GSUxFTkFNRSkKKyAgICAgICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIo
ZmFrZV9kaXJfcGF0aCwgRFVNTVlfRklMRU5BTUUsIE5vbmUpCiAgICAgICAgIGNvbnZlcnRlci5m
ZWVkKHRlc3RfaHRtbCkKICAgICAgICAgY29udmVydGVyLmNsb3NlKCkKICAgICAgICAgY29udmVy
dGVkID0gY29udmVydGVyLm91dHB1dCgpCkBAIC0xMjgsNyArMTI4LDcgQEAgQ09OVEVOVCBPRiBU
RVNUCiA8L2h0bWw+CiAiIiIKICAgICAgICAgZmFrZV9kaXJfcGF0aCA9IHNlbGYuZmFrZV9kaXJf
cGF0aCgnaGFybmVzc2FuZHByb3BzJykKLSAgICAgICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252
ZXJ0ZXIoZmFrZV9kaXJfcGF0aCwgRFVNTVlfRklMRU5BTUUpCisgICAgICAgIGNvbnZlcnRlciA9
IF9XM0NUZXN0Q29udmVydGVyKGZha2VfZGlyX3BhdGgsIERVTU1ZX0ZJTEVOQU1FLCBOb25lKQog
ICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlX3Rlc3RfY29udGVudChjb252ZXJ0
ZXIucHJlZml4ZWRfcHJvcGVydGllcywgMSwgdGVzdF9odG1sKQogCiAgICAgICAgIG9jID0gT3V0
cHV0Q2FwdHVyZSgpCkBAIC0xNjUsNyArMTY1LDcgQEAgQ09OVEVOVCBPRiBURVNUCiA8L2h0bWw+
CiAiIiIKICAgICAgICAgZmFrZV9kaXJfcGF0aCA9IHNlbGYuZmFrZV9kaXJfcGF0aCgnaGFybmVz
c2FuZHByb3BzJykKLSAgICAgICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIoZmFrZV9k
aXJfcGF0aCwgRFVNTVlfRklMRU5BTUUpCisgICAgICAgIGNvbnZlcnRlciA9IF9XM0NUZXN0Q29u
dmVydGVyKGZha2VfZGlyX3BhdGgsIERVTU1ZX0ZJTEVOQU1FLCBOb25lKQogCiAgICAgICAgIG9j
ID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKQEAgLTE5MSw3
ICsxOTEsNyBAQCBDT05URU5UIE9GIFRFU1QKIDwvaGVhZD4KICIiIgogICAgICAgICBmYWtlX2Rp
cl9wYXRoID0gc2VsZi5mYWtlX2Rpcl9wYXRoKCd0ZXN0aGFybmVzc3BhdGhzJykKLSAgICAgICAg
Y29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIoZmFrZV9kaXJfcGF0aCwgRFVNTVlfRklMRU5B
TUUpCisgICAgICAgIGNvbnZlcnRlciA9IF9XM0NUZXN0Q29udmVydGVyKGZha2VfZGlyX3BhdGgs
IERVTU1ZX0ZJTEVOQU1FLCBOb25lKQogCiAgICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCiAg
ICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKQEAgLTI2OCw3ICsyNjgsNyBAQCBDT05URU5UIE9G
IFRFU1QKIF1dPjwvc3R5bGU+CiA8L2h0bWw+CiAiIiIKLSAgICAgICAgY29udmVydGVyID0gX1cz
Q1Rlc3RDb252ZXJ0ZXIoRFVNTVlfUEFUSCwgRFVNTVlfRklMRU5BTUUpCisgICAgICAgIGNvbnZl
cnRlciA9IF9XM0NUZXN0Q29udmVydGVyKERVTU1ZX1BBVEgsIERVTU1ZX0ZJTEVOQU1FLCBOb25l
KQogICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlX3Rlc3RfY29udGVudChjb252
ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcywgMjAsIHRlc3RfaHRtbCkKIAogICAgICAgICBvYyA9
IE91dHB1dENhcHR1cmUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0
ZXIucHkKaW5kZXggNDI4ZDgyM2FkMjg4ZGUwNjNmNzE1ZDMyZDY5ZjVjZjEyMDg2NTNjYy4uZDBh
MTk0NTFlNDdjM2M0ODc0MDU3NjY1ZGM3NDhlMjNlZTI4MjI2YiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBAIC0yMDcsMjEgKzIwNyw5IEBAIGNsYXNz
IFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICByZWZfZmlsZSA9IG9z
LnBhdGguc3BsaXRleHQodGVzdF9iYXNlbmFtZSlbMF0gKyAnLWV4cGVjdGVkJwogICAgICAgICAg
ICAgICAgICAgICByZWZfZmlsZSArPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5hbWUpWzFd
CiAKLSAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5m
b1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmX2ZpbGV9KQorICAgICAgICAgICAgICAgICAgICBj
b3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogdGVzdF9pbmZvWydyZWZlcmVuY2UnXSwgJ2Rlc3QnOiBy
ZWZfZmlsZSwgJ3JlZmVyZW5jZV9zdXBwb3J0X2luZm8nOiB0ZXN0X2luZm9bJ3JlZmVyZW5jZV9z
dXBwb3J0X2luZm8nXX0pCiAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydz
cmMnOiB0ZXN0X2luZm9bJ3Rlc3QnXSwgJ2Rlc3QnOiBmaWxlbmFtZX0pCiAKLSAgICAgICAgICAg
ICAgICAgICAgIyBVcGRhdGUgYW55IHN1cHBvcnQgZmlsZXMgdGhhdCBuZWVkIHRvIG1vdmUgYXMg
d2VsbCB0byByZW1haW4gcmVsYXRpdmUgdG8gdGhlIC1leHBlY3RlZCBmaWxlLgotICAgICAgICAg
ICAgICAgICAgICBpZiAncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciBzdXBwb3J0X2ZpbGUgaW4gdGVzdF9pbmZvWydyZWZzdXBwb3J0
J106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKHRlc3RfaW5mb1sncmVmZXJlbmNlJ10pLCBzdXBwb3J0X2ZpbGUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLm5vcm1w
YXRoKHNvdXJjZV9maWxlKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIHRo
ZSBkZXN0IGFzIGl0IHdhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX2NvcHkgPSB7
J3NyYyc6IHNvdXJjZV9maWxlLCAnZGVzdCc6IHN1cHBvcnRfZmlsZX0KLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgT25seSBhZGQgaXQgb25jZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIG5vdCh0b19jb3B5IGluIGNvcHlfbGlzdCk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQodG9fY29weSkKICAgICAgICAgICAgICAgICBl
bGlmICdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCk6CiAgICAgICAgICAgICAgICAgICAgIGpz
dGVzdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICB0b3RhbF90ZXN0cyArPSAxCkBAIC0yMzAs
MTEgKzIxOCw2IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAg
ICAgICB0b3RhbF90ZXN0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBl
bmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCiAKLSAgICAgICAgICAgIGlm
IG5vdCB0b3RhbF90ZXN0czoKLSAgICAgICAgICAgICAgICAjIFdlIGNhbiBza2lwIHRoZSBzdXBw
b3J0IGRpcmVjdG9yeSBpZiBubyB0ZXN0cyB3ZXJlIGZvdW5kLgotICAgICAgICAgICAgICAgIGlm
ICdzdXBwb3J0JyBpbiBkaXJzOgotICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnc3Vw
cG9ydCcpCi0KICAgICAgICAgICAgIGlmIGNvcHlfbGlzdDoKICAgICAgICAgICAgICAgICAjIE9u
bHkgYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBsaXN0IGlmIHRoZXJlJ3Mgc29tZXRoaW5nIHRv
IGltcG9ydAogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0X2xpc3QuYXBwZW5kKHsnZGlybmFt
ZSc6IHJvb3QsICdjb3B5X2xpc3QnOiBjb3B5X2xpc3QsCkBAIC0yODIsNiArMjY1LDEwIEBAIGNs
YXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog
CiAgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBm
aWxlX3RvX2NvcHlbJ2Rlc3QnXSkKKyAgICAgICAgICAgICAgICBpZiAncmVmZXJlbmNlX3N1cHBv
cnRfaW5mbycgaW4gZmlsZV90b19jb3B5LmtleXMoKSBhbmQgZmlsZV90b19jb3B5WydyZWZlcmVu
Y2Vfc3VwcG9ydF9pbmZvJ10gIT0ge306CisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZV9z
dXBwb3J0X2luZm8gPSBmaWxlX3RvX2NvcHlbJ3JlZmVyZW5jZV9zdXBwb3J0X2luZm8nXQorICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZV9zdXBwb3J0
X2luZm8gPSBOb25lCiAKICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3Mu
cGF0aC5kaXJuYW1lKG5ld19maWxlcGF0aCkpKToKICAgICAgICAgICAgICAgICAgICAgb3MubWFr
ZWRpcnMob3MucGF0aC5kaXJuYW1lKG5ld19maWxlcGF0aCkpCkBAIC0zMDAsMTAgKzI4NywxMSBA
QCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBtaW1ldHlwZSA9
IG1pbWV0eXBlcy5ndWVzc190eXBlKG9yaWdfZmlsZXBhdGgpCiAgICAgICAgICAgICAgICAgaWYg
J2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkgb3IgJ3htbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSAg
b3IgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToKICAgICAgICAgICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBjb252ZXJ0X2Zvcl93ZWJr
aXQobmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdfZmlsZXBhdGgpCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb252ZXJ0ZWRfZmlsZSA9IGNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5h
bWU9b3JpZ19maWxlcGF0aCwgcmVmZXJlbmNlX3N1cHBvcnRfaW5mbz1yZWZlcmVuY2Vfc3VwcG9y
dF9pbmZvKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBfbG9nLndhcm4oJ0ZhaWxlZCBjb252ZXJ0aW5nICVzJywgb3JpZ19maWxlcGF0aCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9jb252ZXJzaW9uX2ZpbGVzLmFwcGVuZChvcmln
X2ZpbGVwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBOb25l
CiAKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNvbnZlcnRlZF9maWxlOgogICAgICAgICAg
ICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9yaWdfZmlsZXBhdGgsIG5ld19maWxlcGF0
aCkgICMgVGhlIGZpbGUgd2FzIHVubW9kaWZpZWQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfcGFyc2VyLnB5CmluZGV4IGJiNjZmZGFlNjNiN2YyNWIwNmFhYjY4NjZhZjNkMWVmMDlm
ZmE4NzAuLmQ1NWYxMDQ5ZDQxYzFhZGVmOWE5ZTAwMDQyNzhmZWI1NDIyMWZiODYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5CkBAIC00OSwyMCArNDksMjQgQEAg
Y2xhc3MgVGVzdFBhcnNlcihvYmplY3QpOgogICAgICAgICBzZWxmLnJlZl9kb2MgPSBOb25lCiAg
ICAgICAgIHNlbGYubG9hZF9maWxlKGZpbGVuYW1lKQogCi0gICAgZGVmIGxvYWRfZmlsZShzZWxm
LCBmaWxlbmFtZSk6CisgICAgZGVmIGxvYWRfZmlsZShzZWxmLCBmaWxlbmFtZSwgaXNfcmVmPUZh
bHNlKToKICAgICAgICAgaWYgc2VsZi5maWxlc3lzdGVtLmlzZmlsZShmaWxlbmFtZSk6CiAgICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyA9IFBhcnNlcihzZWxm
LmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShmaWxlbmFtZSkpCisgICAgICAgICAgICAgICAg
ZG9jID0gUGFyc2VyKHNlbGYuZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKGZpbGVuYW1lKSkK
ICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0
IHdoYXQgdG8gZG8gaWYgd2UgY2FuJ3QgcGFyc2UgdGhlIGZpbGUuCiAgICAgICAgICAgICAgICAg
X2xvZy5lcnJvcigiRmFpbGVkIHRvIHBhcnNlICVzIiwgZmlsZW5hbWUpCi0gICAgICAgICAgICAg
ICAgc2VsZi50ZXN0X2RvYyBpcyBOb25lCisgICAgICAgICAgICAgICAgZG9jID0gTm9uZQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc2VsZi5maWxlc3lzdGVtLmlzZGlyKGZpbGVuYW1l
KToKICAgICAgICAgICAgICAgICAjIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQgaXMgdHJpZ2dlcmlu
ZyB0aGlzIGFuZCB3aGF0IHRvIGRvIGFib3V0IGl0LgogICAgICAgICAgICAgICAgIF9sb2cuZXJy
b3IoIlRyeWluZyB0byBsb2FkICVzLCB3aGljaCBpcyBhIGRpcmVjdG9yeSIsIGZpbGVuYW1lKQot
ICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyA9IE5vbmUKLSAgICAgICAgc2VsZi5yZWZfZG9jID0g
Tm9uZQorICAgICAgICAgICAgZG9jID0gTm9uZQorCisgICAgICAgIGlmIGlzX3JlZjoKKyAgICAg
ICAgICAgIHNlbGYucmVmX2RvYyA9IGRvYworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vs
Zi50ZXN0X2RvYyA9IGRvYwogCiAgICAgZGVmIGFuYWx5emVfdGVzdChzZWxmLCB0ZXN0X2NvbnRl
bnRzPU5vbmUsIHJlZl9jb250ZW50cz1Ob25lKToKICAgICAgICAgIiIiIEFuYWx5emVzIGEgZmls
ZSB0byBkZXRlcm1pbmUgaWYgaXQncyBhIHRlc3QsIHdoYXQgdHlwZSBvZiB0ZXN0LCBhbmQgd2hh
dCByZWZlcmVuY2Ugb3Igc3VwcG9ydCBmaWxlcyBpdCByZXF1aXJlcy4gUmV0dXJucyBhbGwgb2Yg
dGhlIHRlc3QgaW5mbyAiIiIKQEAgLTcxLDE1ICs3NSwxMiBAQCBjbGFzcyBUZXN0UGFyc2VyKG9i
amVjdCk6CiAKICAgICAgICAgaWYgdGVzdF9jb250ZW50cyBpcyBOb25lIGFuZCBzZWxmLnRlc3Rf
ZG9jIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gdGVzdF9pbmZvCi0KICAgICAgICAgaWYg
dGVzdF9jb250ZW50cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYudGVzdF9kb2MgPSBQ
YXJzZXIodGVzdF9jb250ZW50cykKLQogICAgICAgICBpZiByZWZfY29udGVudHMgaXMgbm90IE5v
bmU6CiAgICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBQYXJzZXIocmVmX2NvbnRlbnRzKQogCiAg
ICAgICAgICMgRmlyc3QgY2hlY2sgaWYgaXQncyBhIHJlZnRlc3QKLQogICAgICAgICBtYXRjaGVz
ID0gc2VsZi5yZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZSgnbWF0Y2gnKSArIHNlbGYucmVmZXJlbmNl
X2xpbmtzX29mX3R5cGUoJ21pc21hdGNoJykKICAgICAgICAgaWYgbWF0Y2hlczoKICAgICAgICAg
ICAgIGlmIGxlbihtYXRjaGVzKSA+IDE6CkBAIC05NSwyOSArOTYsMTcgQEAgY2xhc3MgVGVzdFBh
cnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgICAg
IGlmIHNlbGYucmVmX2RvYyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYucmVmX2RvYyA9
IHNlbGYubG9hZF9maWxlKHJlZl9maWxlKQorICAgICAgICAgICAgICAgIHNlbGYubG9hZF9maWxl
KHJlZl9maWxlLCBUcnVlKQogCiAgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxm
LmZpbGVuYW1lLCAncmVmZXJlbmNlJzogcmVmX2ZpbGV9CiAKLSAgICAgICAgICAgICMgSWYgdGhl
IHJlZiBmaWxlIHBhdGggaXMgcmVsYXRpdmUsIHdlIG5lZWQgdG8gY2hlY2sgaXQgZm9yCi0gICAg
ICAgICAgICAjIHJlbGF0aXZlIHBhdGhzIGFsc28gYmVjYXVzZSB3aGVuIGl0IGxhbmRzIGluIFdl
YktpdCwgaXQgd2lsbCBiZQotICAgICAgICAgICAgIyBtb3ZlZCBkb3duIGludG8gdGhlIHRlc3Qg
ZGlyLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBOb3RlOiBUaGUgdGVzdCBmaWxlcyB0
aGVtc2VsdmVzIGFyZSBub3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxlcwotICAgICAgICAgICAg
IyBvdXRzaWRlIHRoZWlyIGRpcmVjdG9yaWVzIGFzIHRoZSBjb252ZW50aW9uIGluIHRoZSBDU1NX
RyBpcyB0bwotICAgICAgICAgICAgIyBwdXQgYWxsIHN1cHBvcnQgZmlsZXMgaW4gdGhlIHNhbWUg
ZGlyIG9yIHN1YmRpciBhcyB0aGUgdGVzdC4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMg
QWxsIG5vbi10ZXN0IGZpbGVzIGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5IHRyZWUgYXJlIG5vcm1h
bGx5Ci0gICAgICAgICAgICAjIGNvcGllZCBhcyBwYXJ0IG9mIHRoZSBpbXBvcnQgYXMgdGhleSBh
cmUgYXNzdW1lZCB0byBiZSByZXF1aXJlZAotICAgICAgICAgICAgIyBzdXBwb3J0IGZpbGVzLgot
ICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAqQnV0KiwgdGhlcmUgaXMgZXhhY3RseSBvbmUg
Y2FzZSBpbiB0aGUgZW50aXJlIGNzczIuMSBzdWl0ZSB3aGVyZQotICAgICAgICAgICAgIyBhIHRl
c3QgZGVwZW5kcyBvbiBhIGZpbGUgdGhhdCBsaXZlcyBpbiBhIGRpZmZlcmVudCBkaXJlY3Rvcnks
Ci0gICAgICAgICAgICAjIHdoaWNoIGRlcGVuZHMgb24gYW5vdGhlciBmaWxlIHRoYXQgbGl2ZXMg
b3V0c2lkZSBvZiBpdHMKLSAgICAgICAgICAgICMgZGlyZWN0b3J5LiBUaGlzIGNvZGUgY292ZXJz
IHRoYXQgY2FzZSA6KQotICAgICAgICAgICAgaWYgbWF0Y2hlc1swXVsnaHJlZiddLnN0YXJ0c3dp
dGgoJy4uJyk6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydF9maWxlcyA9IHNlbGYuc3VwcG9ydF9m
aWxlcyhzZWxmLnJlZl9kb2MpCi0gICAgICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZzdXBwb3J0
J10gPSBzdXBwb3J0X2ZpbGVzCisgICAgICAgICAgICAjIElmIHRoZSByZWYgZmlsZSBkb2VzIG5v
dCBsaXZlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgdGVzdCBmaWxlLCBjaGVjayBpdCBm
b3Igc3VwcG9ydCBmaWxlcworICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZlcmVuY2Vfc3VwcG9y
dF9pbmZvJ10gPSB7fQorICAgICAgICAgICAgaWYgc2VsZi5maWxlc3lzdGVtLmRpcm5hbWUocmVm
X2ZpbGUpICE9IHNlbGYuZmlsZXN5c3RlbS5kaXJuYW1lKHNlbGYuZmlsZW5hbWUpOgorICAgICAg
ICAgICAgICAgIHJlZmVyZW5jZV9zdXBwb3J0X2ZpbGVzID0gc2VsZi5zdXBwb3J0X2ZpbGVzKHNl
bGYucmVmX2RvYykKKyAgICAgICAgICAgICAgICBpZiBsZW4ocmVmZXJlbmNlX3N1cHBvcnRfZmls
ZXMpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlX3JlbHBhdGggPSBzZWxmLmZp
bGVzeXN0ZW0ucmVscGF0aChzZWxmLmZpbGVzeXN0ZW0uZGlybmFtZShzZWxmLmZpbGVuYW1lKSwg
c2VsZi5maWxlc3lzdGVtLmRpcm5hbWUocmVmX2ZpbGUpKSArIHNlbGYuZmlsZXN5c3RlbS5zZXAK
KyAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJ10g
PSB7J3JlZmVyZW5jZV9yZWxwYXRoJzogcmVmZXJlbmNlX3JlbHBhdGgsICdmaWxlcyc6IHJlZmVy
ZW5jZV9zdXBwb3J0X2ZpbGVzfQogCiAgICAgICAgIGVsaWYgc2VsZi5pc19qc3Rlc3QoKToKICAg
ICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWUsICdqc3Rlc3QnOiBU
cnVlfQpAQCAtMTU2LDcgKzE0NSw4IEBAIGNsYXNzIFRlc3RQYXJzZXIob2JqZWN0KToKIAogICAg
ICAgICBwYXRocyA9IHNyY19wYXRocyArIGhyZWZfcGF0aHMgKyB1cmxzCiAgICAgICAgIGZvciBw
YXRoIGluIHBhdGhzOgotICAgICAgICAgICAgaWYgbm90KHBhdGguc3RhcnRzd2l0aCgnaHR0cDon
KSkgYW5kIG5vdChwYXRoLnN0YXJ0c3dpdGgoJ21haWx0bzonKSk6CisgICAgICAgICAgICB1cmlf
c2NoZW1lX3BhdHRlcm4gPSByZS5jb21waWxlKHIiW0EtWmEtel1bQS1aYS16Ky4tXSo6IikKKyAg
ICAgICAgICAgIGlmIG5vdCB1cmlfc2NoZW1lX3BhdHRlcm4ubWF0Y2gocGF0aCk6CiAgICAgICAg
ICAgICAgICAgc3VwcG9ydF9maWxlcy5hcHBlbmQocGF0aCkKIAogICAgICAgICByZXR1cm4gc3Vw
cG9ydF9maWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9w
YXJzZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNl
cl91bml0dGVzdC5weQppbmRleCA3ZmIwYzViMDRhNzRiYjAxYmNjZmQ0MGFhMmQ2ZmU5Y2YxNmQx
ZGY3Li43MmZkMzBlYWZkOTM4NTIxZGMyZWY3NTg2YWU4NzRiMGZiYzY3MTg5IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weQpAQCAt
MTMzLDggKzEzMyw4IEBAIGNsYXNzIFRlc3RQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlk
IG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVu
Y2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dp
dGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUg
c2hvdWxkIGJlIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGxlbih0ZXN0X2luZm9bJ3JlZnN1cHBvcnQnXSksIDMsICd0aGVyZSBzaG91
bGQgYmUgMyBzdXBwb3J0IGZpbGVzIGluIHRoaXMgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCdyZWZlcmVuY2Vfc3VwcG9ydF9pbmZvJyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
dGhlcmUgc2hvdWxkIGJlIHJlZmVyZW5jZV9zdXBwb3J0X2luZm8gZm9yIHRoaXMgdGVzdCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbih0ZXN0X2luZm9bJ3JlZmVyZW5jZV9zdXBwb3J0
X2luZm8nXVsnZmlsZXMnXSksIDMsICd0aGVyZSBzaG91bGQgYmUgMyBzdXBwb3J0IGZpbGVzIGlu
IHRoaXMgcmVmZXJlbmNlJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0
ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBhbmFseXplZCBhcyBh
IGpzdGVzdCcpCiAKICAgICBkZWYgdGVzdF9hbmFseXplX2pzdGVzdChzZWxmKToK
</data>

          </attachment>
      

    </bug>

</bugzilla>