<?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>111513</bug_id>
          
          <creation_ts>2013-03-05 19:51:06 -0800</creation_ts>
          <short_desc>Create a script to import W3C tests</short_desc>
          <delta_ts>2013-05-18 10:48:18 -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>115681</dependson>
    
    <dependson>115682</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rebecca Hauck">rhauck</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bradrini</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>glenn</cc>
    
    <cc>jberlin</cc>
    
    <cc>kvserr</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>848399</commentid>
    <comment_count>0</comment_count>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-05 19:51:06 -0800</bug_when>
    <thetext>We need an automated way to import W3C tests into WebKit. Both Webkit and the W3C support reftests, but they are in slightly different formats. The W3C defines the test:reference mappings using metadata in the test file while Webkit relies on a filenaming convention. Further, for CSS tests, many properties require the -webkit prefix and the W3C does not accept tests with prefixed properties.  We need a script to handle these conversions to make W3C tests compliant with the Webkit Way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850121</commentid>
    <comment_count>1</comment_count>
      <attachid>192007</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-07 08:35:43 -0800</bug_when>
    <thetext>Created attachment 192007
Patch for the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850269</commentid>
    <comment_count>2</comment_count>
      <attachid>192044</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-07 10:46:07 -0800</bug_when>
    <thetext>Created attachment 192044
Fixed changelog - added newlines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850493</commentid>
    <comment_count>3</comment_count>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-07 14:33:40 -0800</bug_when>
    <thetext>The chromium tests failures here appear to be unrelated to my changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850544</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-07 15:35:27 -0800</bug_when>
    <thetext>These scripts are missing BSD copyright headers. Also, can we somehow turn them into webkitpy modules like command or step?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850547</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-07 15:36:32 -0800</bug_when>
    <thetext>Turning them into webkitpy modules will allow us to easily test both scripts, which is of our interest if we&apos;re trying to automate the importation process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850559</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-07 15:43:40 -0800</bug_when>
    <thetext>Rebecca, thanks for the scripts. They look like a great start.

It would be very useful to have examples of how to run these scripts somewhere, either here in the bug, on the wiki page, or in the ChangeLog.

There&apos;s at least two different classes of review feedback we can give here. The first is the simple feedback on the python style, to try and get this to mesh with the rest of the webkitpy. As Ryosuke points out, we need to add in the standard copyright headers, and it would be good to try and move much of this logic into modules so that we can write tests for them as appropriate.

The second, and much more important IMO is to work out some of the high-level steps and decisions over how we will actually import the tests. I would actually prefer to focus on that sort of feedback first, as there&apos;s not a lot of point in cleaning up the style until we are sure the scripts do what we want.

I&apos;m still chewing through the patch (and want to play with it locally) so I don&apos;t have any of the second class of feedback yet, but will shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850592</commentid>
    <comment_count>7</comment_count>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-07 16:15:43 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Turning them into webkitpy modules will allow us to easily test both scripts, which is of our interest if we&apos;re trying to automate the importation process.

Ok, good point. And my apologies. I&apos;m fairly new to Python :) I actually hadn&apos;t seen the Webkit Python guidelines until just now, so I can modify accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850593</commentid>
    <comment_count>8</comment_count>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-07 16:17:56 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Rebecca, thanks for the scripts. They look like a great start.
&gt; 
&gt; It would be very useful to have examples of how to run these scripts somewhere, either here in the bug, on the wiki page, or in the ChangeLog.
&gt; 
&gt; There&apos;s at least two different classes of review feedback we can give here. The first is the simple feedback on the python style, to try and get this to mesh with the rest of the webkitpy. As Ryosuke points out, we need to add in the standard copyright headers, and it would be good to try and move much of this logic into modules so that we can write tests for them as appropriate.
&gt; 
&gt; The second, and much more important IMO is to work out some of the high-level steps and decisions over how we will actually import the tests. I would actually prefer to focus on that sort of feedback first, as there&apos;s not a lot of point in cleaning up the style until we are sure the scripts do what we want.
&gt; 
&gt; I&apos;m still chewing through the patch (and want to play with it locally) so I don&apos;t have any of the second class of feedback yet, but will shortly.


Yeah I agree there are two tracks of feedback and also prefer to keep them second. I&apos;m also more interested in the feedback on the import details.  I&apos;m fairly new to Python, so in meantime, I&apos;ll read the WK Python guidelines so I&apos;ll be ready to make those changes too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850653</commentid>
    <comment_count>9</comment_count>
      <attachid>192111</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-07 17:00:06 -0800</bug_when>
    <thetext>Created attachment 192111
one line fix for something silly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850764</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-07 19:20:17 -0800</bug_when>
    <thetext>Okay, so here&apos;s an initial round of feedback ...

1. r- at the very least to add the copyright info

2. as we discussed on #irc, I think we should merge these two scripts. I don&apos;t think that users necessarily should need to be aware of the need to generate manifest files.

3. ideally, this should work for anything in (at least) the CSSWG repo (by which I am referring to http://hg.csswg.org/test). I don&apos;t know if something broke in the patch you just uploaded, but it seems like I can&apos;t even run these scripts over the approved/css3-background dir that I could with the first patch. Should this work over the whole repo?

4. I think we&apos;ll need to get some sort of consensus on webkit-dev over how we want to import test suites before we land this and start importing things. If we have different people importing different sub directories into different parts of the tree, keeping things up to date could get very painful (we&apos;d need to build a mapping of w3c directory to webkit directory somewhere).

I&apos;m kinda thinking maybe we should try to put all of the tests in the entire csswg repo under LayoutTests/w3c/csswg or something.

Another potential option (with fairly obvious downsides) would be to actually clone or mirror the repo somewhere (either under LayoutTests/w3c or someplace outside of LayoutTests altogether).

Since these are kind of two parallel discussions, what I&apos;d like to do is assume a strawman process for purposes of &quot;importing&quot; the tests such that we can run NRWT over them, but *not actually plan to check in imported tests yet*.

That way we can make progress on the import scripts and the code reviews while we debate the higher-level process.

Sound good? I&apos;m open to other approaches, but I&apos;m probably not going to be a fan of landing these scripts so that we can import individual directories in an ad-hoc / manual way in the mean time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851303</commentid>
    <comment_count>11</comment_count>
      <attachid>192111</attachid>
    <who name="Mihai Balan">mibalan</who>
    <bug_when>2013-03-08 10:24:00 -0800</bug_when>
    <thetext>Comment on attachment 192111
one line fix for something silly

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

I also think that the two scripts should be merged. I can&apos;t quite see a scenario where I&apos;d really want to use just one of the scripts. Sure, the separation allows avoiding some duplicate work but I think this could be done in the one-script scenario, too.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:29
&gt; +                    self.matches.append(attrs[i+1][1])

Are there any guarantees that the next attribute in the attrs list is the actual value we want to use?
Since the HTML tag does not force the order of a tag&apos;s attribute, there might be tests where the href attribute on a link element is not necessarily following the rel attribute, or where the rel attribute is the last one in the list (and thus doing attrs[i+1] will yield an IndexError)

Ditto for the next &quot;if&quot;.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:41
&gt; +    print &quot;prefixes in the test suite, open the manifest, uncomment prefixed.properties, and set its value&quot;

Is the syntax of these manifest files documented somewhere?
I&apos;d like these instructions to be a little more explicit - right now they seem to vague to me.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:56
&gt; +        testPath = sys.argv[1]

As there&apos;s no advanced processing of the parameters going on, I&apos;d rather drop the testPath global variable and make the scanTestDir() method accept sys.argv[1] as a parameter.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:59
&gt; +

Don&apos;t leave empty lines between a block start (e.g. function def, &apos;for&apos; start) and the block body (e.g. function body, &apos;for&apos; body, etc.)

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:61
&gt; +    ignoreFiles = [&quot;-ref&quot;, &quot;-notref&quot;, &quot;.css&quot;, &quot;.js&quot;, &quot;.png&quot;, &quot;.jpg&quot;, &quot;.jpeg&quot;, &quot;.DS_Store&quot;, &quot;.mf&quot;, &quot;.log&quot;]

If these are just used as parameters to other functions, I&apos;d rather have them as script constants/variables.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:69
&gt; +            if not shouldIgnore(filename, ignoreFiles):

(It&apos;s more a matter of personal taste but) I think methods should be defined before using them (re: shouldIgnore(), findReferences(), writeManifest() )

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:74
&gt; +                #    print &quot;No reference files found in &quot; + filename

Why is this commented out? I think it&apos;s useful info.
Also, if this should be gone, the above if is useless ( list.extend() will work just as well with an empty list).

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:79
&gt; +        for dirname in dirs:

I might be missing something obvious, but does your script recurse through directories?
If it doesn&apos;t, I don&apos;t think you need this piece of code anymore.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:95
&gt; +    #print &quot;Reading &quot; + testFile

A nice to have would be to enable this kind of progress message via a -v/--verbose flag passed to the script.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:120
&gt; +    # TODO Should I add a flag to make automatically overwriting optional?

As far as I&apos;m concerned, defaulting to overwrite is good enough.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:122
&gt; +        os.remove(manifestFile)

Why do this? open(FILE, &quot;w&quot;) truncates the file if it exists.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:138
&gt; +    for reftest in reftestList:

While this form is correct, too, the for should be in the else block and not in the same block with the if/else block.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:143
&gt; +main()

The main() call should be inside a check like this:

if __name__ == &quot;__main__&quot;:
    main()

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:146
&gt; +    

You should have at most one empty line at the end of the file

&gt; Tools/Scripts/import-w3c-tests:41
&gt; +importList = []

Maybe I&apos;m nitpicking here, but choose one naming scheme and stick to it :) (either camelCase or underscore_notation)

&gt; Tools/Scripts/import-w3c-tests:53
&gt; +    importTests()

I&apos;d rather have the function names contain whole words (Directory vs. Dir, Arguments vs. Args, Destination vs. Dest)

&gt; Tools/Scripts/import-w3c-tests:56
&gt; +

I recommend using optparse ( http://docs.python.org/2/library/optparse.html ) instead of manually parsing the arguments. It&apos;s a lot nicer, clearer and  solves both the parsing of the arguments and the displaying of the usage for the script.

&gt; Tools/Scripts/import-w3c-tests:139
&gt; +    

Ditto ^^ about blank lines between function declaration and function body.

&gt; Tools/Scripts/import-w3c-tests:149
&gt; +    global changeset

I&apos;d rather have getChangeset() return a changeset and have this return value assigned to the global changeset value in the calling function than manipulating the global variable like this.

The same applies to the other uses of global variables (where feasible).

&gt; Tools/Scripts/import-w3c-tests:157
&gt; +        # Oh well, we tried

Shouldn&apos;t we also log something, maybe asking the user to install hg?

&gt; Tools/Scripts/import-w3c-tests:162
&gt; +    global test_status

Ditto L149

&gt; Tools/Scripts/import-w3c-tests:179
&gt; +        

Ditto about empty lines between for/if/else and their corresponding code blocks.

&gt; Tools/Scripts/import-w3c-tests:213
&gt; +               not(fullpath in skipList): 

I&apos;d &quot;rephrase&quot; this if with affirmative conditions (e.g. if filename.startWith() or filename.endswith() or ...). This would also allow to drop the line breaks and have the whole condition on just one line.

&gt; Tools/Scripts/import-w3c-tests:258
&gt; +    tmpTestList = []

Wouldn&apos;t it be better (faster, clearer) to check for duplicates at the end of the function? Rather than using this temporary duplicate list?

&gt; Tools/Scripts/import-w3c-tests:335
&gt; +                newFilePath = newFilePath.replace(&quot;xht&quot;, &quot;xhtml&quot;)

Why is this needed?

&gt; Tools/Scripts/import-w3c-tests:431
&gt; +def verbose(msg):

A matter of personal preference, but I think it would be nicer to have just one log function, that could receive a &apos;verbose&apos; parameter and log or not the message, based on the presence of the -v command line argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851371</commentid>
    <comment_count>12</comment_count>
      <attachid>192111</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-08 11:44:11 -0800</bug_when>
    <thetext>Comment on attachment 192111
one line fix for something silly

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

Here&apos;s some general high-level comments about writing Python code in a manner more resembling the rest of WebKit&apos;s python code :) :

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:16
&gt; +from HTMLParser import HTMLParser

I don&apos;t think the HTMLParser library is particularly robust. We generally use BeautifulSoup for parsing HTML in webkitpy.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:35
&gt; +def main():

Generally speaking, we don&apos;t tend to use a lot of free (file-level) functions in webkit python code. The top-level executable scripts (in Tools/Scripts) tend to be very short wrappers around modules that live under Tools/Scripts/webkitpy. Even there, we usually hang functions off of classes and objects, unless the functions are pure (have no side effects).

&gt;&gt; Tools/Scripts/generate-w3c-testsuite-manifest:56
&gt;&gt; +        testPath = sys.argv[1]
&gt; 
&gt; As there&apos;s no advanced processing of the parameters going on, I&apos;d rather drop the testPath global variable and make the scanTestDir() method accept sys.argv[1] as a parameter.

In webkitpy we invariably use the optparse module for option parsing and usage messages. Please look into that rather than rolling your own parsing.

&gt;&gt; Tools/Scripts/generate-w3c-testsuite-manifest:61
&gt;&gt; +    ignoreFiles = [&quot;-ref&quot;, &quot;-notref&quot;, &quot;.css&quot;, &quot;.js&quot;, &quot;.png&quot;, &quot;.jpg&quot;, &quot;.jpeg&quot;, &quot;.DS_Store&quot;, &quot;.mf&quot;, &quot;.log&quot;]
&gt; 
&gt; If these are just used as parameters to other functions, I&apos;d rather have them as script constants/variables.

script-level (global) constants are fine, but we don&apos;t like mutable globals; they&apos;re much harder to test and mock-out.

&gt; Tools/Scripts/generate-w3c-testsuite-manifest:96
&gt; +    f = open(testFilePath)

Also, as far as making things more webkitpy-like goes, we frown on direct access to os-level services like open(). Please look into the Host abstraction in webkitpy/common/host, and the FileSystem and Executive abstractions in webkitpy/common/system . We have all this stuff so that it is much easier to write unit tests for our code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860398</commentid>
    <comment_count>13</comment_count>
      <attachid>194275</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-21 09:03:50 -0700</bug_when>
    <thetext>Created attachment 194275
new patch to incorporate feedback

Ok, this has been completely revised to incorporate all the feedback here - split into modules + classes, unit tests added.  There is no longer a manifest file and no longer a manual step. The vendor prefixing is now handled by loading the latest list from the Webkit source and looking for those properties in the tests. The parsing and conversion code has tests, but I probably still need to add tests for the actual import code that needs real directories of W3C tests to work. I wasn&apos;t sure how to do that and would like the reviewer&apos;s input. There is at least one test for importing a directory with no tests in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860524</commentid>
    <comment_count>14</comment_count>
      <attachid>194309</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-21 11:54:29 -0700</bug_when>
    <thetext>Created attachment 194309
updated patch - previous patch was missing a local uncommitted change

previous patch was missing a local change - otherwise, same the comment:

new patch to incorporate feedback 

Ok, this has been completely revised to incorporate all the feedback here - split into modules + classes, unit tests added.  There is no longer a manifest file and no longer a manual step. The vendor prefixing is now handled by loading the latest list from the Webkit source and looking for those properties in the tests. The parsing and conversion code has tests, but I probably still need to add tests for the actual import code that needs real directories of W3C tests to work. I wasn&apos;t sure how to do that and would like the reviewer&apos;s input. There is at least one test for importing a directory with no tests in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860542</commentid>
    <comment_count>15</comment_count>
      <attachid>194309</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-21 12:06:14 -0700</bug_when>
    <thetext>Comment on attachment 194309
updated patch - previous patch was missing a local uncommitted change

retracting, not yet ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860625</commentid>
    <comment_count>16</comment_count>
      <attachid>194324</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-03-21 13:31:10 -0700</bug_when>
    <thetext>Created attachment 194324
Now ready for review

Last change before getting review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860977</commentid>
    <comment_count>17</comment_count>
      <attachid>194324</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-03-21 18:33:34 -0700</bug_when>
    <thetext>Comment on attachment 194324
Now ready for review

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

This is a *lot* closer to webkitpy style ... thank you! I&apos;ve only done a cursory pass over this so far, so here&apos;s some minor stylistic nits. I wouldn&apos;t bother making the changes yet until I can do a substantive review, but it looks like you&apos;re on the right path.

&gt; Tools/ChangeLog:5
&gt; +        You must have checked log the W3C repository to your local drive.

You largely appear to repeat the same text down in test_importer.py, so I&apos;d just refer to that instead of copying it here.

nit: &quot;checked out&quot;, not &quot;checked log&quot; :)

&gt; Tools/ChangeLog:39
&gt; +        - All files are converted to work in WebKit:

I think (as I suspect you do also) we will all be happier down the road the closer we can get to the &quot;conversion&quot; process being a no-op. Perhaps we should file separate bugs to track each issue we find as they come up. Here&apos;s a few comments in the meantime ...

&gt; Tools/ChangeLog:40
&gt; +            1. .xht extensions are changed to .xhtml to make new-run-webkit-tests happy

we should probably just make new-run-webkit-tests recognize .xht .

&gt; Tools/ChangeLog:46
&gt; +               new-run-webkit-tests expects

do we have any guesses as to how many extra copies of tests this creates? It might be more reasonable to insert shim -expected.html files that do redirects or iframe the actual references. This would probably require some buy-in from webkit-dev, so copies are good for now.

&gt; Tools/ChangeLog:64
&gt; +        Reviewed by NOBODY (OOPS!).

lines 61-64 should be at the top of the changelog, right under your name.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:3
&gt; +# Copyright (C) 2010 Apple Inc. All rights reserved.

Presumably this should be (c) 2013 Adobe ...

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:25
&gt; +from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup as Parser

why &quot;as Parser&quot; ?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:26
&gt; +############################################################################################################

this should be a docstring rather than a comment. If you do that, then &apos;pydoc webkitpy.w3c.test_importer&apos; will print this automatically :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883398</commentid>
    <comment_count>18</comment_count>
      <attachid>194324</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-01 01:04:25 -0700</bug_when>
    <thetext>Comment on attachment 194324
Now ready for review

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

Okay, as per our discussion over IM/IRC earlier today, I think it makes sense to land this and iterate as soon as we can, even if the code isn&apos;t ideal. The scripts shouldn&apos;t break anything else or affect anyone&apos;s checkout in particular.

Please address as many of the stylistic nits as you can (especially the copyright and changelog info). Don&apos;t worry about cleaning up the tests too much. Re-post another patch just so we can be sure it&apos;ll still apply against the tree and we should be able to land something soon.

Thanks for bearing with me during the long delay!

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:125
&gt; +        @return True if changes were made

We don&apos;t usually use javadoc-style @param/@return notation for parameters. We would probably do something more like:

def convert_testharness_paths(self, doc, new_path):
   &quot;&quot;&quot;Update links to testharness.js in the BeautifulSoup |doc| to point to the copy in |new_path|. Returns whether the document was modified.&quot;&quot;&quot;

I.e., you can get a lot terser. A &quot;proper&quot; pythonic docstring has a one-line summary, then a blank line, then the rest of the string, but we don&apos;t tend to stick to this that carefully and favor shorter docstrings (or none at all) where they&apos;re not really needed.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:3
&gt; +# Copyright (C) 2010 Apple Inc. All rights reserved.

update copyright here as well.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:77
&gt; +&quot;&quot;&quot;

There&apos;s a lot of boilerplate text in these tests, and it&apos;s hard to tell which parts of the string are relevant and change from test to test. We should try to wrap the test html in a generator function or something.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:3
&gt; +# Copyright (C) 2010 Apple Inc. All rights reserved.

update the copyright.

&gt; Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:3
&gt; +# Copyright (C) 2010 Apple Inc. All rights reserved.

update.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:3
&gt; +# Copyright (C) 2010 Apple Inc. All rights reserved.

update.

&gt; Tools/Scripts/webkitpy/w3c/test_parser_unittest.py:3
&gt; +# Copyright (C) 2010 Apple Inc. All rights reserved.

:).

&gt; Tools/Scripts/webkitpy/w3c/test_parser_unittest.py:98
&gt; +&quot;&quot;&quot;

same comments about repeat blocks of text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883704</commentid>
    <comment_count>19</comment_count>
      <attachid>200295</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-05-01 18:31:37 -0700</bug_when>
    <thetext>Created attachment 200295
Incorporated Dirk&apos;s feedback

Ok, I think I covered everyting - fixed the pydoc comments, removed unnecessary text from tests, cleaned up the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883722</commentid>
    <comment_count>20</comment_count>
      <attachid>200295</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-01 22:16:36 -0700</bug_when>
    <thetext>Comment on attachment 200295
Incorporated Dirk&apos;s feedback

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

Looks pretty good, so I&apos;m R+&apos;ing it with a few more nits. Feel free to fix those and land w/o another review. Once we do that, if you want to use this script to import specific subdirs I think that&apos;s great but we should probably do so on an ad-hoc basis into someplace *other* than where we might want the long-term location of the whole w3 repo to be.

In other words, if we end up wanting to put the w3c&apos;s tests in LayoutTests/w3c/... , don&apos;t import submitted/adobe/regions (or whatever) into LayoutTests/w3c/submitted/adobe/regions directly. You should probably have me review the first import or two just to see how it goes.

Thanks so much for working on this!

&gt; Tools/Scripts/import-w3c-tests:3
&gt; +# Copyright (C) 2010 Apple Inc. All rights reserved.

copyright :)

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:31
&gt; +from webkitpy.thirdparty.BeautifulSoup import Tag

nit: list the standard modules first, then the stuff from webkitpy.thirdparty. Also, you can (and should) do &quot;import BeautifulSoup, Tag&quot;

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

nit: don&apos;t put a blank line here.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:109
&gt; +

nit: don&apos;t put blank lines between your method declarations and the body of the methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883783</commentid>
    <comment_count>21</comment_count>
      <attachid>200314</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-05-02 07:16:00 -0700</bug_when>
    <thetext>Created attachment 200314
Fixed that last few minor nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883809</commentid>
    <comment_count>22</comment_count>
      <attachid>200319</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-05-02 09:03:18 -0700</bug_when>
    <thetext>Created attachment 200319
Added Dirk Pranke as reviewer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883821</commentid>
    <comment_count>23</comment_count>
      <attachid>200319</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-02 10:04:17 -0700</bug_when>
    <thetext>Comment on attachment 200319
Added Dirk Pranke as reviewer

Rejecting attachment 200319 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 200319, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
angeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/Scripts/import-w3c-tests
patch: **** Only garbage was found in the patch input.
fatal: pathspec &apos;Tools/Scripts/webkitpy/w3c/__init__.py&apos; did not match any files
Failed to git add Tools/Scripts/webkitpy/w3c/__init__.py. at /Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply line 448.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Dirk Pranke&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/357160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884291</commentid>
    <comment_count>24</comment_count>
      <attachid>200462</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-05-03 12:30:44 -0700</bug_when>
    <thetext>Created attachment 200462
Attempting to fix the __init__.py issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884293</commentid>
    <comment_count>25</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-03 12:32:17 -0700</bug_when>
    <thetext>Note that you should be able to verify that the patch is okay by running &apos;webkit-patch apply-attachment&apos; on the attachment. (Of course, not on the same branch that you just uploaded the patch from).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884452</commentid>
    <comment_count>26</comment_count>
      <attachid>200462</attachid>
    <who name="Rebecca Hauck">rhauck</who>
    <bug_when>2013-05-03 18:38:37 -0700</bug_when>
    <thetext>Comment on attachment 200462
Attempting to fix the __init__.py issue

EWS all green - hopefully this one works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884453</commentid>
    <comment_count>27</comment_count>
      <attachid>200462</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-03 18:39:35 -0700</bug_when>
    <thetext>Comment on attachment 200462
Attempting to fix the __init__.py issue

let&apos;s find out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884457</commentid>
    <comment_count>28</comment_count>
      <attachid>200462</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-03 19:06:37 -0700</bug_when>
    <thetext>Comment on attachment 200462
Attempting to fix the __init__.py issue

Clearing flags on attachment: 200462

Committed r149547: &lt;http://trac.webkit.org/changeset/149547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884458</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-03 19:06:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884462</commentid>
    <comment_count>30</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-03 19:14:06 -0700</bug_when>
    <thetext>yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884518</commentid>
    <comment_count>31</comment_count>
      <attachid>200462</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-04 03:11:21 -0700</bug_when>
    <thetext>Comment on attachment 200462
Attempting to fix the __init__.py issue

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

The webkitpy.w3c.test_importer_unittest.TestImporterTest.test_ImportDirWithNoTests unit test is failing after the patch landed in r149547.
http://trac.webkit.org/changeset/149547

A couple of problems are noted in the inline comments.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:190
&gt; +                print &apos;converting &apos; + unprefixed_prop + &apos; -&gt; &apos; + prefixed_prop

Printing the progress messages through the print statement causes unnecessary output when running the tests. Using Python loggers (i.e. _log.info and similar) instead would be much better, capturing the output of the tests. This isn&apos;t critical, but it is rather annoying.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:345
&gt; +                    if options.no_overwrite is True and os.path.exists(new_filepath):

The unit test fails here due to no global options object available. Referencing self.options instead fixes this.
The alternative would be to define the global options object, as done in test_parser_unittest.py.

&gt; Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:47
&gt; +        importer = TestImporter(dir_with_no_tests, None)

If switched to using self.options to check for the no_overwrite option in TestImporter.import_tests, you can pass a MockOptions object as the options parameter. For instance, MockOptions(no_overwrite=False) should do the trick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884520</commentid>
    <comment_count>32</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-04 03:20:55 -0700</bug_when>
    <thetext>I&apos;ve just now noted that when the unit tests do pass (after addressing the options object issues), the LayoutTests/csswg/s directory is populated with most of the files under Source/WebCore/css.

I don&apos;t think it&apos;s a good idea to have the unit test operate on the source checkout instead of a mock filesystem representation (which is indeed noted as a TODO item in the test_importer_unittest.py file).

I&apos;d recommend disabling this specific unit test until the testing moves onto a mocked filesystem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884572</commentid>
    <comment_count>33</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-04 13:45:07 -0700</bug_when>
    <thetext>I didn&apos;t actually run the tests to notice the problems, so this is a failure on my part. You&apos;re absolutely correct that the tests should not log to stdout (at least not w/o having called OutputCapture().capture_output() first), and definitely not be writing to the real filesystem. 

We should disable the tests until at least the latter is fixed. I will try to get to this today or tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885494</commentid>
    <comment_count>34</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-06 16:19:32 -0700</bug_when>
    <thetext>I briefly looked into disabling these tests, but there are so many of them and test_converter_unittest.py is spitting out a bunch of stuff as well. I’m going to roll out the patch for now since nobody has been dependent on this tool yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885501</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 16:39:07 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 115681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887100</commentid>
    <comment_count>36</comment_count>
      <attachid>201279</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-09 15:02:45 -0700</bug_when>
    <thetext>Created attachment 201279
cleaned-up patch for relanding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887102</commentid>
    <comment_count>37</comment_count>
      <attachid>201281</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-09 15:03:43 -0700</bug_when>
    <thetext>Created attachment 201281
delta from patch that landed initially, for ease of review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887105</commentid>
    <comment_count>38</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-09 15:05:50 -0700</bug_when>
    <thetext>benjaminp, rniwa, can one of you take a look at the revised patch? (Just looking at the delta attachment should be fine, since that shows the changes from the version I R+&apos;ed/landed initially).

As I note in the ChangeLog, this code still isn&apos;t ideal as it&apos;s not yet using any of the webkitpy system abstractions (host, filesystem, etc.). If it&apos;s okay, I&apos;d like to land the patch as-is and then incrementally clean up the code to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887131</commentid>
    <comment_count>39</comment_count>
      <attachid>201279</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-09 15:51:34 -0700</bug_when>
    <thetext>Comment on attachment 201279
cleaned-up patch for relanding

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

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:43
&gt; +class TestConverter(object):

This class name doesn’t tell us what we’re converting from and into but maybe it’s okay since it’s inside webkitpy/w3c.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:55
&gt; +        f = open(os.path.join(os.path.sep, WEBKIT_ROOT, SOURCE_SUBDIR, WEBCORE_SUBDIR,
&gt; +                                           CSS_SUBDIR, CSS_PROPERTY_NAMES_IN))

We need to share more code with the rest of webkitpy.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:65
&gt; +                    continue

Nit: wrong indentation. continue must be exactly 4 spaces to the right of line.split.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:76
&gt; +        f = open(filename)
&gt; +        contents = f.read()
&gt; +        f.close()

Why are we not using FileSystem instead?

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:101
&gt; +        if len(converted[0]) &gt; 0 or jstest is True:
&gt; +            return converted
&gt; +        else:
&gt; +            return None

No else clause after return. Also, I would have used tertiary here as in:
return converted if converted[0] or jstest else None

Also, we shouldn’t be comparing len() with 0 since len is never negative.
Furthermore, len is completely unnecessary.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:112
&gt; +        if len(testharness_tags) != 0:

Nit: we shouldn’t be comparing with 0. Also, we prefer early exit.
So do:
if not testharness_tags:
    return False

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:116
&gt; +            resources_path = os.path.join(os.path.sep, WEBKIT_ROOT, LAYOUT_TESTS_DIRECTORY, RESOURCES_DIRECTORY)
&gt; +            resources_relpath = os.path.relpath(resources_path, new_path)

It seems like we need a helper function to make a path relative to LayoutTests.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:148
&gt; +            # Get the text whether in a style tag or style attribute

It’s better to define a helper method to do this (you can even do nested functions) rather than adding a comment like this.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:151
&gt; +                if len(tag.contents) == 0:

Nit: again, we we don’t need len.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:158
&gt; +            # Scrub it for props requiring prefixes

This comment simply repeats what the code says. Please remove it.
Better yet, clarify why we’re doing it.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:161
&gt; +            # Rewrite tag only if changes were made

Ditto about repeating the code.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:162
&gt; +            if len(scrubbed_style[0]) &gt; 0:

Nit: len(~) &gt; 0 -&gt; ~.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:165
&gt; +                # Build a new tag with the modified text

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:169
&gt; +                # Update the doc with the new tag

Ditto. All these comments are adding so much noise to the code.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:179
&gt; +        # Spin through the whole list of prefixed properties

Again, this comment adds nothing beyond what the line below tells me.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:182
&gt; +            # Pull the prefix off

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:194
&gt; +        # TODO: Handle the JS versions of these properties, too.

Nit: We use FIXME, not TODO.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:201
&gt; +        # Replace the previous tag with the new one

Again, this comment simply repeats the code and the method name.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:31
&gt; +import os
&gt; +from random import randint
&gt; +import re

two imports (without from) should probably appear next to each other.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:46
&gt; +        # Get the full list of prefixed properties

Why are we adding this comment instead of renaming prop_list to all_prefixed_properties?

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:50
&gt; +        # Verify we got properties back

This comment repeats the code beneath it again.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:53
&gt; +        # Verify they&apos;re all prefixed

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:80
&gt; +        # Try to convert the html

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:88
&gt; +        # Verify nothing was converted

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:101
&gt; +        # Create path to a fake test directory

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:105
&gt; +                                              test_converter.LAYOUT_TESTS_DIRECTORY,
&gt; +                                              test_converter.CSS_SUBDIR,
&gt; +                                              &apos;harnessonly&apos;)

Wrong indentation. All subsequent lines should appear exactly 4 spaces to the right of test_path =.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:116
&gt; +        # Convert the html
&gt; +        converted = converter.convert_for_webkit(test_path, contents=test_html, filename=&apos;somefile.html&apos;)
&gt; +
&gt; +        # Verify a conversion happened
&gt; +        self.assertNotEqual(converted, None, &apos;test was not converted&apos;)
&gt; +
&gt; +        # Verify that both the harness paths were converted correctly
&gt; +        self.verifyTestHarnessPaths(converted[1], test_path, 1, 1)
&gt; +
&gt; +        # Verify no properties were converted

Ditto about comments.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:140
&gt; +        # Create path to a fake test directory

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:144
&gt; +        test_path = os.path.join(os.path.sep, test_converter.WEBKIT_ROOT,
&gt; +                                              test_converter.LAYOUT_TESTS_DIRECTORY,
&gt; +                                              test_converter.CSS_SUBDIR,
&gt; +                                              &apos;harnessandprops&apos;)

Ditto about indentation.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:160
&gt; +        # Generate &amp; insert the test properties into the test_html
&gt; +        test_content = self.generateTestContent(converter.prefixed_properties, 2, test_html)
&gt; +
&gt; +        # Convert the html
&gt; +        oc = OutputCapture()
&gt; +        oc.capture_output()
&gt; +        try:
&gt; +            converted = converter.convert_for_webkit(test_path, contents=test_content[1], filename=&apos;somefile.html&apos;)
&gt; +        finally:
&gt; +            oc.restore_output()
&gt; +
&gt; +        # Verify a conversion happened
&gt; +        self.assertNotEqual(converted, None, &apos;test was not converted&apos;)
&gt; +
&gt; +        # Verify that both the harness paths and properties were all converted correctly

Ditto about comments. And dittos about indentation and comments for all subsequent tests.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:126
&gt; +    parser.add_option(&apos;-n&apos;, &apos;--no-overwrite&apos;,
&gt; +                      #action=&apos;store_true&apos;,
&gt; +                      default=False,
&gt; +                      help=&apos;Flag to prevent duplicate test files from overwriting existing tests. By default, they will be overwritten&apos;)

Wrong indentation. Subsequent lines should be exactly 4 spaces to the right of parser.add_option.
Also, we don’t normally add commented out line.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:130
&gt; +                      action=&apos;store_true&apos;,
&gt; +                      default=False,
&gt; +                      help=&apos;Import all tests including reftests, JS tests, and manual/pixel tests. By default, only reftests and JS tests are imported&apos;)

Ditto about indentations.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:142
&gt; +    # Make sure the w3c test directory exists

Again, all these comments that simply repeat the code are adding so much noise.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:149
&gt; +    if import_dir.find(APPROVED) == -1 and \
&gt; +       import_dir.find(SUBMITTED) == -1:

It seems like these two lines can fit in one line. If not, then the number of spaces for the indentation is wrong.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:151
&gt; +        # If not pointed directly to the approved directory or to any submitted
&gt; +        # directory, check for a submitted subdirectory and go with that

This is a what comment again. I’d like to know why we do that since I can already tell what it does from the code.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:188
&gt; +        except:
&gt; +            # Oh well, we tried
&gt; +            self.changeset = &apos;Not Available&apos;

Can we output the message attached to the exception?
Also please remove the comment.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:213
&gt; +            for filename in files:

It seems like the content of this for loop can be extracted as a helper function.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:219
&gt; +                if &apos;html&apos; in str(mimetype[0]) or &apos;xml&apos; in str(mimetype[0]):

Or inside this if.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:249
&gt; +                        # If there are ref support files, the destination is should now be relative to the
&gt; +                        # test file and new location of the ref file

Again, this is what comment. We should explain whit should be relative to the test file instead.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:257
&gt; +                                # Build the correct source path
&gt; +                                source_file = os.path.join(os.path.dirname(test_info[&apos;reference&apos;]), support_file)
&gt; +                                source_file = os.path.normpath(source_file)
&gt; +                                # Keep the dest as it was
&gt; +                                to_copy = {&apos;src&apos;: source_file, &apos;dest&apos;: support_file}
&gt; +                                # Only add it once

All these comments seem unnecessary.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:271
&gt; +                # Ignore dotfiles and random perl scripts that are in some dirs
&gt; +                elif not(filename.startswith(&apos;.&apos;)) and not(filename.endswith(&apos;.pl&apos;)):

Why are we not doing this first? Presumably checking the filename is faster than guessing the mime type, right?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:274
&gt; +            if total_tests == 0:

Nit: Don’t compare  with 0.
Do “if not total_tests” instead.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:280
&gt; +                if len(copy_list) &gt; 0:

Nit: len(~) &gt; 0 -&gt; ~

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:283
&gt; +                                            &apos;reftests&apos;: reftests, &apos;jstests&apos;: jstests, &apos;total_tests&apos;: total_tests})

Nit: wrong indentation.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:289
&gt; +        if len(self.import_list) &gt; 0:

Nit: len(~) &gt; 0 -&gt; ~

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:305
&gt; +            if len(dir_to_copy[&apos;copy_list&apos;]) &gt; 0:

Ditto. Again, we can extract a helper function here.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:315
&gt; +                # Append the new subpath to the destination_directory
&gt; +                new_path = os.path.join(self.destination_directory, new_subpath)
&gt; +
&gt; +                # Create the destination subdirectories if not there

More useless comments.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:327
&gt; +                    # Shouldn&apos;t be any directories on the list, but check to be safe
&gt; +                    if os.path.isdir(orig_filepath):
&gt; +                        continue

Why don’t we assert instead?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:330
&gt; +                    # Don&apos;t choke if the file can&apos;t be found
&gt; +                    if not(os.path.exists(orig_filepath)):

Why do we ever encounter this case? Also, this if can be merged with the previous if.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:334
&gt; +                    # Append the correct destination filename

Nit: Repeats the code.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:340
&gt; +                    # Make the directories needed

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:344
&gt; +                    # Don&apos;t overwrite existing tests if specified

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:348
&gt; +                        # TODO: Maybe doing a file diff is in order here for existing files?

Use FIXME.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:355
&gt; +                    # TODO: Eventually, so should js when support is added for this type of conversion

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:359
&gt; +                    if &apos;html&apos; in str(mimetype[0]) or \
&gt; +                       &apos;xml&apos; in str(mimetype[0])  or \
&gt; +                       &apos;css&apos; in str(mimetype[0]):

It seems like we can fit in one line. If not, then we have a wrong indentation here as well.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:368
&gt; +                            # Write out the converted test

Nit: Repeats the code.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:378
&gt; +                # Take care of anything that may have been removed since the last import

“Take care” is vague. What/how are we taking care of?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:379
&gt; +                self.remove_deleted_files(new_path, copied_files)

What does remove_delete_files mean?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:381
&gt; +                # Drop some info about what just happened here

Nit: Repeats the code.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:395
&gt; +        # The test status is in the path, so grab it
&gt; +        self.get_test_status()

I don’t understand what these two lines of code are doing at all.
Why is a function named self.get_test_status() not returning anything, and we’re calling it here for what reason?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:409
&gt; +    def get_test_status(self):
&gt; +        &quot;&quot;&quot; Sets the test status to either &apos;approved&apos; or &apos;submitted&apos; &quot;&quot;&quot;

I don’t think we should call this function get_test_status if it merely updates the internal state.
Why don’t we simply use @memoized and make this function return the status and get rid of self.test_status?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:441
&gt; +        # Loop through and remove them all

Nit: Repeats the code.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:443
&gt; +            print &apos;Deleting file removed from the W3C repo:&apos; + deleted_file

Nit: Use “,” instead of “+” here and elsewhere.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:467
&gt; +        if len(prop_list) == 0:

Nit: len(~) == 0 -&gt; not ~.

&gt; Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:50
&gt; +        dir_with_no_tests = os.path.join(os.path.sep, test_converter.WEBKIT_ROOT,
&gt; +                                                      test_converter.SOURCE_SUBDIR,
&gt; +                                                      test_converter.WEBCORE_SUBDIR,
&gt; +                                                      test_converter.CSS_SUBDIR)

Nit: wrong indentation.

&gt; Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:62
&gt; +    # TODO: Need more tests, but what to use for valid source directory? Make it on the fly

Nit: use FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887136</commentid>
    <comment_count>40</comment_count>
      <attachid>201279</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-09 16:00:34 -0700</bug_when>
    <thetext>Comment on attachment 201279
cleaned-up patch for relanding

Attachment 201279 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/395046

New failing tests:
svg/batik/filters/feTile.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887137</commentid>
    <comment_count>41</comment_count>
      <attachid>201298</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-09 16:00:38 -0700</bug_when>
    <thetext>Created attachment 201298
Archive of layout-test-results from webkit-ews-05 for mac-mountainlion

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: webkit-ews-05  Port: mac-mountainlion  Platform: Mac OS X 10.8.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887141</commentid>
    <comment_count>42</comment_count>
      <attachid>201279</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-09 16:06:41 -0700</bug_when>
    <thetext>Comment on attachment 201279
cleaned-up patch for relanding

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

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:50
&gt; +            f = open(file_to_parse)
&gt; +            html = f.read()
&gt; +            f.close()

This duplicates the code in TestConverter.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:64
&gt; +        if test_contents is not None:

Nit:
if test_contents:

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:67
&gt; +        if ref_contents is not None:

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:72
&gt; +        if len(matches) != 0:

Nit: Don’t compare with 0.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:103
&gt; +        elif self.options[&apos;all&apos;] is True and \
&gt; +             not(&apos;-ref&apos; in self.filename) and \
&gt; +             not(&apos;reference&apos; in self.filename):

It seems like all of this fit in one line. If not, then we have a wrong indentation.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:107
&gt; +        # Courtesy check and warning if there are any mismatches
&gt; +        mismatches = self.get_reftests(False)

We do! r- because of this.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:108
&gt; +        if len(mismatches) != 0:

Nit: Don’t compare with 0.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:119
&gt; +        if find_match:
&gt; +            return self.test_doc.findAll(rel=&apos;match&apos;)
&gt; +        else:
&gt; +            return self.test_doc.findAll(rel=&apos;mismatch&apos;)

Why not
return self.test_doc.findAll(rel=‘match’ if find_match else &apos;mismatch’)

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:127
&gt; +        if self.test_doc.find(src=re.compile(&apos;[\&apos;\&quot;/]?/resources/testharness&apos;)) is None:
&gt; +            return False
&gt; +        else:
&gt; +            return True

return not self.test_doc.find(src=re.compile(&apos;[\&apos;\&quot;/]?/resources/testharness’)).

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:141
&gt; +        # Look for tags with src or href attributes
&gt; +        src_attrs = doc.findAll(src=re.compile(&apos;.*&apos;))
&gt; +        href_attrs = doc.findAll(href=re.compile(&apos;.*&apos;))
&gt; +
&gt; +        # Look for urls

These two comments repeat the code.

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

Fit in one line.

&gt; Tools/Scripts/webkitpy/w3c/test_parser_unittest.py:53
&gt; +        # Verify the correct test info was found

Nit: Repeat the code, and ditto elsewhere in the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887202</commentid>
    <comment_count>43</comment_count>
      <attachid>201312</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-09 19:09:23 -0700</bug_when>
    <thetext>Created attachment 201312
update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887203</commentid>
    <comment_count>44</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-09 19:10:15 -0700</bug_when>
    <thetext>Lots of cleanup; the code should at least resemble webkitpy style now, although there&apos;s a few more minor things still to convert over.

Please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889494</commentid>
    <comment_count>45</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-15 13:46:25 -0700</bug_when>
    <thetext>rniwa, benjaminp, can one of you take another look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890708</commentid>
    <comment_count>46</comment_count>
      <attachid>201312</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-17 15:43:54 -0700</bug_when>
    <thetext>Comment on attachment 201312
update w/ review feedback

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

Some minor comments:

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:42
&gt; +        self.host = Host()
&gt; +        self.filesystem = self.host.filesystem
&gt; +        self._webkit_root = __file__.split(self.filesystem.sep + &apos;Tools&apos;)[0]
&gt; +        self.prefixed_properties = self.load_prefixed_prop_list()

Why only one name prefixed with _?

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:48
&gt; +        &quot;&quot;&quot; Reads the current list of CSS properties requiring the -webkit- prefix from Source/WebCore/CSS/CSSPropertyNames.in and stores them in an instance variable &quot;&quot;&quot;

I would not put the full path, just CSSPropertyNames.in.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:52
&gt; +        # Open CSSPropertyNames.in to get the current list of things requiring prefixes

Missing period.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:55
&gt; +            # Look for anything with the -webkit- prefix

Missing period.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:56
&gt; +            match = re.search(&apos;^-webkit-[\w|-]*&apos;, line)

Not sure why you use re.search() and not re.match() here.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:59
&gt; +                # Ignore the ones where both the prefixed and non-prefixed property
&gt; +                # are supported - denoted by -webkit-some-property = some-property

Missing period.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:60
&gt; +                if len(line.split(&apos;=&apos;)) == 2 and line.split(&apos;=&apos;)[1].strip() in line.split(&apos;=&apos;)[0].strip():

put &quot;line.split(&apos;=&apos;)&quot; in a temporary variable and you can greatly simplify the expression.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:71
&gt; +        if contents is None and filename is None:
&gt; +            return None

if not contents and not filename: ?

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:161
&gt; +            pattern = &apos;([\s{]|^)&apos; + unprefixed_prop + &apos;(\s+:|:)&apos;

Maybe &apos;([\s{]|^)(%s)(\s+:|:)&apos; % foobar to make that regexp easier to read?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890711</commentid>
    <comment_count>47</comment_count>
      <attachid>201312</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-17 15:55:18 -0700</bug_when>
    <thetext>Comment on attachment 201312
update w/ review feedback

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

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:42
&gt;&gt; +        self.prefixed_properties = self.load_prefixed_prop_list()
&gt; 
&gt; Why only one name prefixed with _?

It&apos;s conceivable that host, filesystem, and prefixed_properties are public, but I know (having added) that _webkit_root isn&apos;t. That said, I don&apos;t have a great answer. I will go through and make everything that doesn&apos;t need to be pubilc private.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:48
&gt;&gt; +        &quot;&quot;&quot; Reads the current list of CSS properties requiring the -webkit- prefix from Source/WebCore/CSS/CSSPropertyNames.in and stores them in an instance variable &quot;&quot;&quot;
&gt; 
&gt; I would not put the full path, just CSSPropertyNames.in.

Sure, will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:52
&gt;&gt; +        # Open CSSPropertyNames.in to get the current list of things requiring prefixes
&gt; 
&gt; Missing period.

Will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:55
&gt;&gt; +            # Look for anything with the -webkit- prefix
&gt; 
&gt; Missing period.

Will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:56
&gt;&gt; +            match = re.search(&apos;^-webkit-[\w|-]*&apos;, line)
&gt; 
&gt; Not sure why you use re.search() and not re.match() here.

there&apos;s probably no good reason. I will change it to re.match().

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:59
&gt;&gt; +                # are supported - denoted by -webkit-some-property = some-property
&gt; 
&gt; Missing period.

will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:60
&gt;&gt; +                if len(line.split(&apos;=&apos;)) == 2 and line.split(&apos;=&apos;)[1].strip() in line.split(&apos;=&apos;)[0].strip():
&gt; 
&gt; put &quot;line.split(&apos;=&apos;)&quot; in a temporary variable and you can greatly simplify the expression.

good suggestion.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:71
&gt;&gt; +            return None
&gt; 
&gt; if not contents and not filename: ?

contents=&apos;&apos; would actually be a legal value, but looking at it again, it&apos;s probably safe to exit early even if it is. It looks like contents= is only used for unit-testing, and we should probably refactor this routine accordingly so that we&apos;re not using optional parameters and branches here.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:161
&gt;&gt; +            pattern = &apos;([\s{]|^)&apos; + unprefixed_prop + &apos;(\s+:|:)&apos;
&gt; 
&gt; Maybe &apos;([\s{]|^)(%s)(\s+:|:)&apos; % foobar to make that regexp easier to read?

I&apos;m not sure that that&apos;s any easier to read to me, and that would introduce a new match group (though I think you don&apos;t need the () around the %s).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890726</commentid>
    <comment_count>48</comment_count>
      <attachid>201312</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-17 16:15:43 -0700</bug_when>
    <thetext>Comment on attachment 201312
update w/ review feedback

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

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:41
&gt; +        self._webkit_root = __file__.split(self.filesystem.sep + &apos;Tools&apos;)[0]

Why aren&apos;t we using scm.checkout_root? We should at least have a FIXME.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:48
&gt; +    def load_prefixed_prop_list(self):
&gt; +        &quot;&quot;&quot; Reads the current list of CSS properties requiring the -webkit- prefix from Source/WebCore/CSS/CSSPropertyNames.in and stores them in an instance variable &quot;&quot;&quot;

Why do we need this comment?
Why can&apos;t we rename the method to load_webkit_prefixed_css_property_list?

Also, we shouldn&apos;t abbreviate property as prop.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:53
&gt; +        contents = self.filesystem.read_text_file(self.path_from_webkit_root(&apos;Source&apos;, &apos;WebCore&apos;, &apos;css&apos;, &apos;CssPropertyNames.in&apos;))

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:71
&gt; +        if contents is None and filename is None:
&gt; +            return None

Explicitly comparing to None seems bogus. We should simply do &quot;if not contents and not filename&quot; instead.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:73
&gt; +        if contents is None:

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:76
&gt; +        # Handle plain old CSS files

If comment doesn&apos;t add any value.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:118
&gt; +        converted_props = []

We should spell out properties.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:136
&gt; +            scrubbed_style = self.scrub_unprefixed_props(style_text)

I would much prefer calling these as: add_webkit_prefix_to_unprefix_properties and prefixed_style_text or modified_style_text.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:150
&gt; +    def scrub_unprefixed_props(self, text):
&gt; +        &quot;&quot;&quot; Searches |text| for instances of properties requiring the -webkit- prefix and adds the prefix. Returns the list of converted properties and the modified string &quot;&quot;&quot;

This method-level comment is redundant once we rename the method to add_webkit_prefix_to_unprefix_properties.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:163
&gt; +                print &apos;converting &apos; + unprefixed_prop + &apos; -&gt; &apos; + prefixed_prop

Do: &quot;converting %s -&gt; %s&quot; % (unprefixed_prop, prefixed_prop)

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:45
&gt; +    def testLoadPrefixedPropList(self):

Why is this camelCase&apos;d? And ditto for other tests.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:293
&gt; +        self.assertEquals(len(converted.findAll(src=orig_path_pattern)), 0,
&gt; +                          &apos;testharness src path was not converted&apos;)
&gt; +        self.assertEquals(len(converted.findAll(href=orig_path_pattern)), 0,
&gt; +                          &apos;testharness href path was not converted&apos;)

Wrong indentation. Indent by 4 spaces.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:295
&gt; +        # Get the new relpath from the tester dir

This comment should be removed.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:298
&gt; +        # Verify it&apos;s in all the right places

This comment doesn&apos;t add any value because &quot;right places&quot; are not obvious.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:303
&gt; +        self.assertEquals(len(converted.findAll(src=relpath_pattern)), num_src_paths,
&gt; +                          &apos;testharness src relative path not correct&apos;)
&gt; +        self.assertEquals(len(converted.findAll(href=relpath_pattern)), num_href_paths,
&gt; +                          &apos;testharness href relative path not correct&apos;)

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:306
&gt; +    def verifyPrefixedProperties(self, converted, test_properties):
&gt; +        &quot;&quot;&quot; Verifies a list of test_properties were converted correctly &quot;&quot;&quot;

Again, camelCase shouldn&apos;t be used and we should rename the test to be more descriptive and remove the comment.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:308
&gt; +        # Verify that the number of test properties equals the number that were converted

This comment repeats the code.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:311
&gt; +        # Verify they&apos;re all in the converted document

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:320
&gt; +        # Grab a random bunch of 20 unique properties requiring prefixes to test with

We shouldn&apos;t be randomly picking properties to test. r- because of this.

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:323
&gt; +            idx = random.randint(0, len(full_prop_list) - 1)

What does idx mean?

&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:324
&gt; +            if not(full_prop_list[idx] in test_properties):

Why not &quot;full_prop_list[idx] not in test_properties&quot;

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:130
&gt; +    parser.add_option(&apos;-n&apos;, &apos;--no-overwrite&apos;,
&gt; +                      dest=&apos;overwrite&apos;,
&gt; +                      action=&apos;store_false&apos;,
&gt; +                      default=True,
&gt; +                      help=&apos;Flag to prevent duplicate test files from overwriting existing tests. By default, they will be overwritten&apos;)
&gt; +    parser.add_option(&apos;-a&apos;, &apos;--all&apos;,
&gt; +                      action=&apos;store_true&apos;,
&gt; +                      default=False,
&gt; +                      help=&apos;Import all tests including reftests, JS tests, and manual/pixel tests. By default, only reftests and JS tests are imported&apos;)
&gt; +

Wrong indentations.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:178
&gt; +    def get_changeset(self):

This should be renamed to something like load_tip_changeset.
Per style guideline, get_ prefix should be used for functions with an out argument.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:188
&gt; +    def scan_source_directory(self, directory):
&gt; +        &quot;&quot;&quot; Walks the |directory| looking for HTML files that are importable tests. &quot;&quot;&quot;

Why can&apos;t we just rename this function find_importable_tests and get rid of the comment?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:213
&gt; +                if filename.startswith(&apos;.&apos;) or filename.endswith(&apos;.pl&apos;):
&gt; +                    continue  # For some reason the w3c repo contains random perl scripts we don&apos;t care about.

It seems like the whole block inside this for should be a separate function.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:271
&gt; +                    self.import_list.append({&apos;dirname&apos;: root, &apos;copy_list&apos;: copy_list,
&gt; +                                             &apos;reftests&apos;: reftests, &apos;jstests&apos;: jstests, &apos;total_tests&apos;: total_tests})

Wrong indentation.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:274
&gt; +    def import_tests(self):
&gt; +        &quot;&quot;&quot; Copies and converts the full list of importable tests into Webkit and logs what was imported in each directory &quot;&quot;&quot;

I don&apos;t think this comment is useful because &quot;importing tests&quot; in this context implies all of that.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:332
&gt; +                    # TODO: Maybe doing a file diff is in order here for existing files?
&gt; +                    #       In other words, there&apos;s no sense in overwriting identical files, but
&gt; +                    #       there&apos;s no harm in copying the identical thing.

s/TODO/FIXME/. Also comments shouldn&apos;t be indented inside like this.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:334
&gt; +                    print &apos;Importing: &apos; + orig_filepath
&gt; +                    print &apos;       As: &apos; + new_filepath

&quot;:&apos;, &quot; instead of &quot;: &apos; +&quot;

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:337
&gt; +                # TODO: Eventually, so should js when support is added for this type of conversion

Ditto.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:344
&gt; +                    if not converted_file:
&gt; +                        shutil.copyfile(orig_filepath, new_filepath)  # The file was unmodified.

This comment repeats the code.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:381
&gt; +        &quot;&quot;&quot; Sets the test status to either &apos;approved&apos; or &apos;submitted&apos; &quot;&quot;&quot;

I don&apos;t think this comment is useful.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:385
&gt; +        if self.source_directory.find(&apos;approved&apos;) != -1:

What happens if someone added a directory named preapproved? You probably need to filesystem.split and then find &apos;approved&apos; token inside the list.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:387
&gt; +        elif self.source_directory.find(&apos;submitted&apos;) != -1:

Same problem.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:398
&gt; +        if not(os.path.exists(import_log_file)):

No parenthesis for not.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:405
&gt; +            list_idx = contents.index(&apos;List of files:\n&apos;) + 1

We shouldn&apos;t abbreviate index as idx.

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:407
&gt; +            previous_file_list = map(lambda s: s.strip(), previous_file_list)

Please don&apos;t use one letter variable like s. file?

&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:433
&gt; +        import_log.write(&apos;The tests in this directory were imported from the W3C repository.\n&apos;)
&gt; +        import_log.write(&apos;Do NOT modify these tests directly in Webkit. Instead, push changes to the W3C CSS repo:\n\n&apos;)
&gt; +        import_log.write(&apos;http://hg.csswg.org/test\n\n&apos;)
&gt; +        import_log.write(&apos;Then run the Tools/Scripts/import-w3c-tests in Webkit to reimport\n\n&apos;)
&gt; +        import_log.write(&apos;Do NOT modify or remove this file\n\n&apos;)
&gt; +        import_log.write(&apos;------------------------------------------------------------------------\n&apos;)
&gt; +        import_log.write(&apos;Last Import: &apos; + now.strftime(&apos;%Y-%m-%d %H:%M&apos;) + &apos;\n&apos;)
&gt; +        import_log.write(&apos;W3C Mercurial changeset: &apos; + self.changeset + &apos;\n&apos;)
&gt; +        import_log.write(&apos;Test status at time of import: &apos; + self.test_status + &apos;\n&apos;)
&gt; +        import_log.write(&apos;------------------------------------------------------------------------\n&apos;)
&gt; +        import_log.write(&apos;Properties requiring vendor prefixes:\n&apos;)

Why are we not using triple-quotes here?

&gt; Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:41
&gt; +    def test_ImportDirWithNoTests(self):

No camelCase.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:110
&gt; +    def get_reftests(self, rel):
&gt; +        &quot;&quot;&quot; Searches for all reference links in the file, by looking for a rel of either &quot;match&quot; or &quot;mismatch&quot;.&quot;&quot;&quot;

The method should be renamed to find_all_link_elements_with_rel, and the comment should be removed
because rel can be anything, and the function is generic enough that it can return any element with rel attribute.
I would much prefer for this function to return href of a link element instead though.
Nevertheless, the comment is inaccurate.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:114
&gt; +        &quot;&quot;&quot; Searches the file for usage of W3C-style testharness paths &quot;&quot;&quot;

This comment should be removed.

&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:125
&gt; +        src_attrs = doc.findAll(src=re.compile(&apos;.*&apos;))
&gt; +        href_attrs = doc.findAll(href=re.compile(&apos;.*&apos;))

These variables should be renamed to elements_with_src_attribute and elements_with_href_attribute

&gt; Tools/Scripts/webkitpy/w3c/test_parser_unittest.py:42
&gt; +    def test_analyzeTestReftestOneMatch(self):

No camelCase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890736</commentid>
    <comment_count>49</comment_count>
      <attachid>201312</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-17 16:35:20 -0700</bug_when>
    <thetext>Comment on attachment 201312
update w/ review feedback

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

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:41
&gt;&gt; +        self._webkit_root = __file__.split(self.filesystem.sep + &apos;Tools&apos;)[0]
&gt; 
&gt; Why aren&apos;t we using scm.checkout_root? We should at least have a FIXME.

Hm. There was a reason I didn&apos;t want to (or couldn&apos;t) use checkout_root here, but I&apos;m forgetting what it is at the moment. I&apos;ll look into it again.

&gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:48
&gt;&gt;&gt;&gt; +        &quot;&quot;&quot; Reads the current list of CSS properties requiring the -webkit- prefix from Source/WebCore/CSS/CSSPropertyNames.in and stores them in an instance variable &quot;&quot;&quot;
&gt;&gt;&gt; 
&gt;&gt;&gt; I would not put the full path, just CSSPropertyNames.in.
&gt;&gt; 
&gt;&gt; Sure, will fix.
&gt; 
&gt; Why do we need this comment?
&gt; Why can&apos;t we rename the method to load_webkit_prefixed_css_property_list?
&gt; 
&gt; Also, we shouldn&apos;t abbreviate property as prop.

The comment is useful to indicate that we&apos;re getting the list from a particular filename, but I&apos;ll delete it since you seem so against it.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:76
&gt;&gt; +        # Handle plain old CSS files
&gt; 
&gt; If comment doesn&apos;t add any value.

will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:118
&gt;&gt; +        converted_props = []
&gt; 
&gt; We should spell out properties.

will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:136
&gt;&gt; +            scrubbed_style = self.scrub_unprefixed_props(style_text)
&gt; 
&gt; I would much prefer calling these as: add_webkit_prefix_to_unprefix_properties and prefixed_style_text or modified_style_text.

ok.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:150
&gt;&gt; +        &quot;&quot;&quot; Searches |text| for instances of properties requiring the -webkit- prefix and adds the prefix. Returns the list of converted properties and the modified string &quot;&quot;&quot;
&gt; 
&gt; This method-level comment is redundant once we rename the method to add_webkit_prefix_to_unprefix_properties.

ok.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:163
&gt;&gt; +                print &apos;converting &apos; + unprefixed_prop + &apos; -&gt; &apos; + prefixed_prop
&gt; 
&gt; Do: &quot;converting %s -&gt; %s&quot; % (unprefixed_prop, prefixed_prop)

will change, though I don&apos;t know why you think that&apos;s particularly better. not everything needs to be a format string.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:45
&gt;&gt; +    def testLoadPrefixedPropList(self):
&gt; 
&gt; Why is this camelCase&apos;d? And ditto for other tests.

will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:293
&gt;&gt; +                          &apos;testharness href path was not converted&apos;)
&gt; 
&gt; Wrong indentation. Indent by 4 spaces.

will change, but this isn&apos;t the wrong indentation. This is legal PEP-8 (you and I have had this discussion before).

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:295
&gt;&gt; +        # Get the new relpath from the tester dir
&gt; 
&gt; This comment should be removed.

ok.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:298
&gt;&gt; +        # Verify it&apos;s in all the right places
&gt; 
&gt; This comment doesn&apos;t add any value because &quot;right places&quot; are not obvious.

ok.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:308
&gt;&gt; +        # Verify that the number of test properties equals the number that were converted
&gt; 
&gt; This comment repeats the code.

I believe these comments are useful, but fine ...

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:320
&gt;&gt; +        # Grab a random bunch of 20 unique properties requiring prefixes to test with
&gt; 
&gt; We shouldn&apos;t be randomly picking properties to test. r- because of this.

What would you prefer? the full list? A hard-coded subset?

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:323
&gt;&gt; +            idx = random.randint(0, len(full_prop_list) - 1)
&gt; 
&gt; What does idx mean?

index. I will spell it out, but that&apos;s a fairly common abbreviation.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter_unittest.py:324
&gt;&gt; +            if not(full_prop_list[idx] in test_properties):
&gt; 
&gt; Why not &quot;full_prop_list[idx] not in test_properties&quot;

I will change it to that but I don&apos;t see that that is any better ...

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:130
&gt;&gt; +
&gt; 
&gt; Wrong indentations.

See comments above.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:178
&gt;&gt; +    def get_changeset(self):
&gt; 
&gt; This should be renamed to something like load_tip_changeset.
&gt; Per style guideline, get_ prefix should be used for functions with an out argument.

Will change.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:188
&gt;&gt; +        &quot;&quot;&quot; Walks the |directory| looking for HTML files that are importable tests. &quot;&quot;&quot;
&gt; 
&gt; Why can&apos;t we just rename this function find_importable_tests and get rid of the comment?

Will change.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:213
&gt;&gt; +                    continue  # For some reason the w3c repo contains random perl scripts we don&apos;t care about.
&gt; 
&gt; It seems like the whole block inside this for should be a separate function.

I noted this in my previous comments. The &quot;continue&quot;s in the loop make pulling this into a single function unwieldly, so I would prefer to leave as-is and potentially refactor later.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:274
&gt;&gt; +        &quot;&quot;&quot; Copies and converts the full list of importable tests into Webkit and logs what was imported in each directory &quot;&quot;&quot;
&gt; 
&gt; I don&apos;t think this comment is useful because &quot;importing tests&quot; in this context implies all of that.

I don&apos;t believe that&apos;s implied. I&apos;m leaving this as-is.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:332
&gt;&gt; +                    #       there&apos;s no harm in copying the identical thing.
&gt; 
&gt; s/TODO/FIXME/. Also comments shouldn&apos;t be indented inside like this.

Whoops, missed that one.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:334
&gt;&gt; +                    print &apos;       As: &apos; + new_filepath
&gt; 
&gt; &quot;:&apos;, &quot; instead of &quot;: &apos; +&quot;

Ok.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:344
&gt;&gt; +                        shutil.copyfile(orig_filepath, new_filepath)  # The file was unmodified.
&gt; 
&gt; This comment repeats the code.

I don&apos;t think so. I&apos;ll leave the comment as is.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:381
&gt;&gt; +        &quot;&quot;&quot; Sets the test status to either &apos;approved&apos; or &apos;submitted&apos; &quot;&quot;&quot;
&gt; 
&gt; I don&apos;t think this comment is useful.

I think it is.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:385
&gt;&gt; +        if self.source_directory.find(&apos;approved&apos;) != -1:
&gt; 
&gt; What happens if someone added a directory named preapproved? You probably need to filesystem.split and then find &apos;approved&apos; token inside the list.

Will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:398
&gt;&gt; +        if not(os.path.exists(import_log_file)):
&gt; 
&gt; No parenthesis for not.

Will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:405
&gt;&gt; +            list_idx = contents.index(&apos;List of files:\n&apos;) + 1
&gt; 
&gt; We shouldn&apos;t abbreviate index as idx.

Will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:407
&gt;&gt; +            previous_file_list = map(lambda s: s.strip(), previous_file_list)
&gt; 
&gt; Please don&apos;t use one letter variable like s. file?

Will fix. &apos;file&apos; is a reserved word in python (or at least shadows a builtin function), but I&apos;ll pick something else.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:433
&gt;&gt; +        import_log.write(&apos;Properties requiring vendor prefixes:\n&apos;)
&gt; 
&gt; Why are we not using triple-quotes here?

I&apos;m not a fan of triple quotes, and we have seveeral lines in here where values are getting interpolated. This is fine.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:41
&gt;&gt; +    def test_ImportDirWithNoTests(self):
&gt; 
&gt; No camelCase.

Will fix.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:110
&gt;&gt; +        &quot;&quot;&quot; Searches for all reference links in the file, by looking for a rel of either &quot;match&quot; or &quot;mismatch&quot;.&quot;&quot;&quot;
&gt; 
&gt; The method should be renamed to find_all_link_elements_with_rel, and the comment should be removed
&gt; because rel can be anything, and the function is generic enough that it can return any element with rel attribute.
&gt; I would much prefer for this function to return href of a link element instead though.
&gt; Nevertheless, the comment is inaccurate.

The comment isn&apos;t inaccurate, it describes the legal values for the input parameter. You are getting the interface confused with the implementation (which happens to rely on the underlying rel= attribute matching). I will change the parameter name to something like &apos;reftest_type&apos; to make that clearer.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:114
&gt;&gt; +        &quot;&quot;&quot; Searches the file for usage of W3C-style testharness paths &quot;&quot;&quot;
&gt; 
&gt; This comment should be removed.

I think it&apos;s useful to have a comment about how this is implemented. I will reword it slightly.

&gt;&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:125
&gt;&gt; +        href_attrs = doc.findAll(href=re.compile(&apos;.*&apos;))
&gt; 
&gt; These variables should be renamed to elements_with_src_attribute and elements_with_href_attribute

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890761</commentid>
    <comment_count>50</comment_count>
      <attachid>201312</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-17 17:59:40 -0700</bug_when>
    <thetext>Comment on attachment 201312
update w/ review feedback

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:150
&gt;&gt;&gt; +        &quot;&quot;&quot; Searches |text| for instances of properties requiring the -webkit- prefix and adds the prefix. Returns the list of converted properties and the modified string &quot;&quot;&quot;
&gt;&gt; 
&gt;&gt; This method-level comment is redundant once we rename the method to add_webkit_prefix_to_unprefix_properties.
&gt; 
&gt; ok.

Actually, I don&apos;t think it&apos;s redundant, since the return value is non-obvious.

&gt;&gt;&gt; Tools/Scripts/webkitpy/w3c/test_importer.py:274
&gt;&gt;&gt; +        &quot;&quot;&quot; Copies and converts the full list of importable tests into Webkit and logs what was imported in each directory &quot;&quot;&quot;
&gt;&gt; 
&gt;&gt; I don&apos;t think this comment is useful because &quot;importing tests&quot; in this context implies all of that.
&gt; 
&gt; I don&apos;t believe that&apos;s implied. I&apos;m leaving this as-is.

I take it back. Deleted.

&gt;&gt;&gt; Tools/Scripts/webkitpy/w3c/test_parser.py:110
&gt;&gt;&gt; +        &quot;&quot;&quot; Searches for all reference links in the file, by looking for a rel of either &quot;match&quot; or &quot;mismatch&quot;.&quot;&quot;&quot;
&gt;&gt; 
&gt;&gt; The method should be renamed to find_all_link_elements_with_rel, and the comment should be removed
&gt;&gt; because rel can be anything, and the function is generic enough that it can return any element with rel attribute.
&gt;&gt; I would much prefer for this function to return href of a link element instead though.
&gt;&gt; Nevertheless, the comment is inaccurate.
&gt; 
&gt; The comment isn&apos;t inaccurate, it describes the legal values for the input parameter. You are getting the interface confused with the implementation (which happens to rely on the underlying rel= attribute matching). I will change the parameter name to something like &apos;reftest_type&apos; to make that clearer.

Whoops. I misunderstood what this routine was doing. You are more correct than I. Will rework.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890763</commentid>
    <comment_count>51</comment_count>
      <attachid>202178</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-17 18:02:43 -0700</bug_when>
    <thetext>Created attachment 202178
update w/ second round of review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890786</commentid>
    <comment_count>52</comment_count>
      <attachid>202178</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-17 19:40:09 -0700</bug_when>
    <thetext>Comment on attachment 202178
update w/ second round of review feedback

Clearing flags on attachment: 202178

Committed r150317: &lt;http://trac.webkit.org/changeset/150317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890787</commentid>
    <comment_count>53</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-17 19:40:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890823</commentid>
    <comment_count>54</comment_count>
      <attachid>202178</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-17 21:49:53 -0700</bug_when>
    <thetext>Comment on attachment 202178
update w/ second round of review feedback

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

&gt; Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:51
&gt; +            importer.do_import()

We can&apos;t do this. It tires to run hg.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890824</commentid>
    <comment_count>55</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-17 21:50:09 -0700</bug_when>
    <thetext>Disabled the test in http://trac.webkit.org/changeset/150324.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890909</commentid>
    <comment_count>56</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-18 09:14:06 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; Disabled the test in http://trac.webkit.org/changeset/150324.

It does try to run hg, but it&apos;s supposed to catch the exception if running it fails, so it should be fine. 

What was the problem you were seeing that caused you to actually disable the test? Was that logic not working?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890911</commentid>
    <comment_count>57</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-18 10:43:39 -0700</bug_when>
    <thetext>http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29/builds/10094

  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/w3c/test_importer_unittest.py&quot;, line 51, in test_import_dir_with_no_tests
      importer.do_import()
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/w3c/test_importer.py&quot;, line 170, in do_import
      self.load_changeset()
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/w3c/test_importer.py&quot;, line 178, in load_changeset
      self.changeset = self.host.executive.run_command([&apos;hg&apos;, &apos;tip&apos;]).split(&apos;changeset:&apos;)[1]
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 417, in run_command
      close_fds=self._should_close_fds())
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 488, in popen
      return subprocess.Popen(string_args, **kwargs)
    File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py&quot;, line 679, in __init__
      errread, errwrite)
    File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py&quot;, line 1228, in _execute_child
      raise child_exception
  OSError: [Errno 2] No such file or directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890912</commentid>
    <comment_count>58</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-05-18 10:48:18 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29/builds/10094
&gt; 
&gt;   Traceback (most recent call last):
&gt;     File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/w3c/test_importer_unittest.py&quot;, line 51, in test_import_dir_with_no_tests
&gt;       importer.do_import()
&gt;     File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/w3c/test_importer.py&quot;, line 170, in do_import
&gt;       self.load_changeset()
&gt;     File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/w3c/test_importer.py&quot;, line 178, in load_changeset
&gt;       self.changeset = self.host.executive.run_command([&apos;hg&apos;, &apos;tip&apos;]).split(&apos;changeset:&apos;)[1]
&gt;     File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 417, in run_command
&gt;       close_fds=self._should_close_fds())
&gt;     File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 488, in popen
&gt;       return subprocess.Popen(string_args, **kwargs)
&gt;     File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py&quot;, line 679, in __init__
&gt;       errread, errwrite)
&gt;     File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py&quot;, line 1228, in _execute_child
&gt;       raise child_exception
&gt;   OSError: [Errno 2] No such file or directory

Ah. I wonder why that&apos;s not coming back as a ScriptError. Will fix, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192007</attachid>
            <date>2013-03-07 08:35:43 -0800</date>
            <delta_ts>2013-03-07 10:50:34 -0800</delta_ts>
            <desc>Patch for the bug</desc>
            <filename>111513.patch</filename>
            <type>text/plain</type>
            <size>26645</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNmRk
MzhiLi5kMWMxNTRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTMtMDMtMDYgIFJlYmVjY2EgSGF1Y2sgIDxyaGF1
Y2tAYWRvYmUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgdHdvIG5ldyBzY3JpcHRzIHRvIFRvb2xzL1NjcmlwdHMuIFRoZSBtYWluIHNj
cmlwdCwgJ2ltcG9ydC13M2MtdGVzdHMnLCB3YWxrcyBhIHRyZWUgb2YgVzNDIENTUyB0ZXN0cyBh
bmQgZG9lcyByZWZ0ZXN0IGNvbnZlcnNpb24sIHBhdGggZml4aW5nLCBwcmVmaXhpbmcsIGFuZCBm
aWxlIGNvcHkuIEl0IGNvbnN1bWVzIGEgbWFuaWZlc3QgZmlsZSB0aGF0IGlzIGdlbmVyYXRlZCBi
eSB0aGUgc2Vjb25kIHNjcmlwdCBoZXJlLCAnZ2VuZXJhdGUtdzNjLXRlc3RzdWl0ZS1tYW5pZmVz
dCcuIFRoaXMgc2NyaXB0IHdhbGtzIGEgZGlyZWN0b3J5IHRyZWUsIHNlYXJjaGVzIGZvciByZWZ0
ZXN0cywgYnVpbGRzIHRoZSBsaXN0IG9mIHRlc3Q6cmVmZXJlbmNlIGZpbGUgbWFwcGluZ3MsIGFu
ZCBzdG9yZXMgdGhlbSBpbiBhIHRlc3RzdWl0ZS5tZiBmaWxlIGluIGVhY2ggZGlyZWN0b3J5LiAg
T25lIG1hbnVhbCBzdGVwIGlzIHJlcXVpcmVkIGFmdGVyIHRoZSBtYW5pZmVzdCBpcyBnZW5lcmF0
ZWQgYW5kIHRoYXQgaXMgdG8gYWRkIHRvIGl0IHRoZSBsaXN0IG9mIGFueSBDU1MgcHJvcGVydGll
cyB0aGF0IHJlcXVpcmUgdmVuZG9yIHByZWZpeGVzLgorCisgICAgICAgIFRoZSBtYW5pZmVzdCBn
ZW5lcmF0aW9uIHNjcmlwdCBzdXBwb3J0cyBhIGNvdXBsZSBvZiB0aGluZ3MgdGhhdCBXZWJraXQg
ZG9lcyBub3QgLSBtYW55Om9uZSB0ZXN0OnJlZmVyZW5jZSBtYXBwaW5ncyBhbmQgbWlzbWF0Y2gg
cmVmZXJlbmNlcy4gVGhlc2UgYXJlIHByZXNlbnQgaW4gc29tZSBvZiB0aGUgVzNDIHN1aXRlcyBh
bmQgdGhlc2UgbWFwcGluZ3MgY2FwdHVyZWQgaW4gdGhlIG1hbmlmZXN0LiBIb3dldmVyLCB0aGUg
aW1wb3J0IHNjcmlwdCBpZ25vcmVzIGFuZCB3YXJucyB3aGVuIHRoZXNlIGFyZSBlbmNvdW50ZXJl
ZC4gCisKKyAgICAgICAgVGhlIHRlc3RzIGFyZSBpbXBvcnRlZCBpbnRvIExheW91dFRlc3RzL1t0
ZXN0X2FyZWFdL2ltcG9ydGVkLXczYyBhbmQgYSB3M2MtaW1wb3J0LmxvZyBmaWxlIGlzIGRyb3Bw
ZWQgaW4gZWFjaCBpbXBvcnRlZCBkaXJlY3Rvcnkgd2l0aCB0aGUgZGF0ZXN0YW1wLCB0aGUgVzND
IE1lcmN1cmlhbCBjaGFuZ2VzZXQgKGlmIGF2YWlsYWJsZSksIHRoZSBhcHByb3ZlZC9zdWJtaXR0
ZWQgc3RhdHVzIG9mIHRoZSB0ZXN0cywgdGhlIGxpc3Qgb2YgZmlsZXMgaW1wb3J0ZWQsIGFuZCBn
dWlkYW5jZSBvbiBmdXR1cmUgbW9kaWZpY2F0aW9ucyBhbmQgbWFpbnRlbmFuY2UuIFRoaXMgbG9n
IGlzIHJlYWQgb24gc3Vic2VxdWVudCBpbXBvcnRzIGlkZW50aWZ5IGFueSBmaWxlcyB0aGF0IGhh
dmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIFczQyByZXBvIHNpbmNlIHRoZSBsYXN0IGltcG9ydC4g
VGhpcyBzY3JpcHQgcmVtb3ZlcyB0aGUgZmlsZXMgdGhhdCBubyBsb25nZXIgZXhpc3QgaW4gdGhl
IFczQyBzb3VyY2UuCisKKyAgICAgICAgTm90ZTogVGhlIHJlYXNvbiB0aGVzZSBhcmUgdHdvIHNj
cmlwdHMgYW5kIG5vdCBvbmUgaXMgYmVjYXVzZSBJIG9yaWdpbmFsbHkgd2FzIG5vdCBzdXJlIHRo
ZSBtYW5pZmVzdCBnZW5lcmF0aW9uIHNjcmlwdCBiZWxvbmdlZCBpbiBXZWJraXQgYXMgaXQgaXMg
bm90IFdlYmtpdC1zcGVjaWZpYy4gQW4gYWx0ZXJuYXRlIGxvY2F0aW9uIGZvciB0aGlzIHdvdWxk
IGJlIGluIHRoZSBXM0MgQ1NTIHJlcG9zaXRvcnkgdW5kZXIgdGhlaXIgInRvb2xzIi4gIFdoZXRo
ZXIgdGhleSdyZSB0d28gc2NyaXB0cyBvciBvbmUsIHRoaXMgaW1wb3J0IHByb2Nlc3Mgd291bGQg
c3RpbGwgYmUgYSAyIHN0ZXAgcHJvY2VzcyB0byBidWlsZCB0aGUgbGlzdCBvZiBwcmVmaXhlZCBw
cm9wZXJ0aWVzLiBBbiBhbHRlcm5hdGl2ZSB0byB0aGlzIHdvdWxkIGJlIHRvIGNvbnNpZGVyIGtl
ZXBpbmcgYSBoYXJkY29kZWQgbGlzdCBvZiBhbGwgcHJvcGVydGllcyBpbiBXZWJraXQgdGhhdCBy
ZXF1aXJlIHByZWZpeGVzIChpZiBpdCBkb2Vzbid0IGV4aXN0IGFscmVhZHk/KS4gIEknZCBsaWtl
IHRvIGhlYXIgdGhlIHJldmlld2VyJ3MgdGhvdWdodHMgb24gdGhpcy4gQSBnb29kIGNhc2UgY2Fu
IHByb2JhYmx5IGJlIG1hZGUgZm9yIGNvbWJpbmluZyB0aGUgdHdvLgorCisgICAgICAgICogU2Ny
aXB0cy9nZW5lcmF0ZS13M2MtdGVzdHN1aXRlLW1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKFJl
ZlBhcnNlcik6CisgICAgICAgIChSZWZQYXJzZXIuX19pbml0X18pOgorICAgICAgICAoUmVmUGFy
c2VyLmhhbmRsZV9zdGFydHRhZyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKHVzYWdlKToK
KyAgICAgICAgKHBhcnNlQXJncyk6CisgICAgICAgIChzY2FuVGVzdERpcik6CisgICAgICAgIChz
aG91bGRJZ25vcmUpOgorICAgICAgICAoZmluZFJlZmVyZW5jZXMpOgorICAgICAgICAod3JpdGVN
YW5pZmVzdCk6CisgICAgICAgICogU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzOiBBZGRlZC4KKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAocGFyc2VBcmdzKToKKyAgICAgICAgKHNob3dVc2FnZSk6
CisgICAgICAgIChtYWtlRGVzdERpcik6CisgICAgICAgIChnZXRDaGFuZ2VzZXQpOgorICAgICAg
ICAoZ2V0VGVzdFN0YXR1cyk6CisgICAgICAgIChzY2FuVGVzdERpcik6CisgICAgICAgIChyZWFk
TWFuaWZlc3QpOgorICAgICAgICAoZ2V0UHJlZml4ZXMpOgorICAgICAgICAoZ2V0UmVmdGVzdHMp
OgorICAgICAgICAoaW1wb3J0VGVzdHMpOgorICAgICAgICAocmVtb3ZlRGVsZXRlZEZpbGVzKToK
KyAgICAgICAgKHdyaXRlSW1wb3J0TG9nKToKKyAgICAgICAgKHZlcmJvc2UpOgorICAgICAgICAo
bG9nKToKKyAgICAgICAgKGR1bXBNYW5pZmVzdCk6CisKIDIwMTMtMDMtMDYgIEp1bGllIFBhcmVu
dCAgPGpwYXJlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIERhc2hib2FyZCBjbGVhbnVwOiBN
b3ZlIGFsbCBkYXNoYm9hcmQgdWkgcmVsYXRlZCBjb2RlIGludG8gdWkuanMuCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLXczYy10ZXN0c3VpdGUtbWFuaWZlc3QgYi9Ub29scy9T
Y3JpcHRzL2dlbmVyYXRlLXczYy10ZXN0c3VpdGUtbWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMC4uM2I5MTBlZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtdzNjLXRlc3RzdWl0ZS1tYW5pZmVzdApAQCAtMCwwICsxLDE0NiBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIG1hbmlmZXN0
IGZpbGVzIGZvciBhIGRpcmVjdG9yeSB0cmVlIG9mIFczQyB0ZXN0cy4KKyMgCisjIFlvdSBtdXN0
IGhhdmUgY2hlY2tlZCBvdXQgdGhlIFczQyByZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUu
CisjCisjIFRoaXMgc2NyaXB0IHdhbGtzIGEgZGlyZWN0b3J5IHRyZWUgY29udGFpbmluZyBXM0Mg
dGVzdHMgYW5kIHNlYXJjaGluZyBmb3IgcmVmdGVzdHMuIEl0IGNyZWF0ZXMgYSB0ZXN0c3VpdGUu
bWYgZmlsZSAKKyMgaW4gZWFjaCBkaXJlY3Rvcnkgb2YgdGVzdHMsIHdoaWNoIGNvbnRhaW5zIGEg
bGlzdCBvZiB0ZXN0OnJlZiBmaWxlIG1hcHBpbmdzIGZvdW5kIGluIHRoZSB0ZXN0IGZpbGVzJyBt
ZXRhZGF0YS4gIFRoZSAKKyMgbWFuaWZlc3QgZmlsZSBpcyBjb25zdW1lZCBieSB0aGUgY29tcGFu
aW9uIHNjcmlwdCBpbXBvcnQtdzNjLXRlc3RzLiBVcG9uIGNvbXBsZXRpb24sIHRoZXJlIGlzIG9u
ZSBtYW51YWwgc3RlcAorIyB0byBkZWZpbmUgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgcmVx
dWlyaW5nIHByZWZpeGVzLgorIyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IG9zLCBzeXMKK2Zyb20gSFRNTFBhcnNl
ciBpbXBvcnQgSFRNTFBhcnNlcgorCitjbGFzcyBSZWZQYXJzZXIoSFRNTFBhcnNlcik6CisgICAg
CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBIVE1MUGFyc2VyLl9faW5pdF9fKHNl
bGYpCisgICAgICAgIHNlbGYubWF0Y2hlcyA9IFtdCisgICAgICAgIHNlbGYubWlzbWF0Y2hlcyA9
IFtdCisgICAgCisgICAgZGVmIGhhbmRsZV9zdGFydHRhZyhzZWxmLCB0YWcsIGF0dHJzKToKKyAg
ICAgICAgaWYodGFnID09ICJsaW5rIik6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4o
YXR0cnMpKToKKyAgICAgICAgICAgICAgICBpZiBhdHRyc1tpXVswXSA9PSAicmVsIiBhbmQgYXR0
cnNbaV1bMV0gPT0gIm1hdGNoIjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVzLmFw
cGVuZChhdHRyc1tpKzFdWzFdKQorICAgICAgICAgICAgICAgIGlmIGF0dHJzW2ldWzBdID09ICJy
ZWwiIGFuZCBhdHRyc1tpXVsxXSA9PSAibWlzbWF0Y2giOgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLm1pc21hdGNoZXMuYXBwZW5kKGF0dHJzW2krMV1bMV0pCisgICAgCit0ZXN0UGF0aCA9ICcn
CisKK2RlZiBtYWluKCk6CisKKyAgICBwYXJzZUFyZ3MoKQorICAgIHNjYW5UZXN0RGlyKCkKKyAg
ICBwcmludCAnJworICAgIHByaW50ICJNYW5pZmVzdChzKSBhcmUgY3JlYXRlZCBmb3IgZWFjaCBk
aXJlY3RvcnkgY29udGFpbmluZyB0ZXN0cy4gSWYgdGhlcmUgYXJlIENTUyBwcm9wZXJ0aWVzIHRo
YXQgcmVxdWlyZSB2ZW5kb3IiCisgICAgcHJpbnQgInByZWZpeGVzIGluIHRoZSB0ZXN0IHN1aXRl
LCBvcGVuIHRoZSBtYW5pZmVzdCwgdW5jb21tZW50IHByZWZpeGVkLnByb3BlcnRpZXMsIGFuZCBz
ZXQgaXRzIHZhbHVlIgorICAgIHByaW50ICcnCisgICAgCitkZWYgdXNhZ2UoKToKKyAgICBwcmlu
dCJVU0FHRTogZ2VuZXJhdGUtbWFuaWZlc3QgW3czY190ZXN0X2Rpcl0iCisgICAgc3lzLmV4aXQo
KQorCitkZWYgcGFyc2VBcmdzKCk6CisgICAgaWYgKGxlbihzeXMuYXJndikgPCAyKToKKyAgICAg
ICAgdXNhZ2UoKQorICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzeXMu
YXJndlsxXSk6CisgICAgICAgICAgICAgc3lzLmV4aXQoJ0VSUk9SOiBTb3VyY2UgZGlyICVzIG5v
dCBmb3VuZCEnICUgc3lzLmFyZ3ZbMV0pCisgICAgICAgIAorICAgICAgICBnbG9iYWwgdGVzdFBh
dGgKKyAgICAgICAgdGVzdFBhdGggPSBzeXMuYXJndlsxXQorICAgICAgICAKK2RlZiBzY2FuVGVz
dERpcigpOgorCisgICAgaWdub3JlRGlycyA9IFsicmVmZXJlbmNlIiwgIi5naXQiLCAic3VwcG9y
dCIsICJjc3MiLCAiaW1nIiwgImFzc2V0cyIsICJqcyJdCisgICAgaWdub3JlRmlsZXMgPSBbIi1y
ZWYiLCAiLW5vdHJlZiIsICIuY3NzIiwgIi5qcyIsICIucG5nIiwgIi5qcGciLCAiLmpwZWciLCAi
LkRTX1N0b3JlIiwgIi5tZiIsICIubG9nIl0KKyAgICAKKyAgICBmb3Igcm9vdCwgZGlycywgZmls
ZXMgaW4gb3Mud2Fsayh0ZXN0UGF0aCk6CisgICAgICAgIAorICAgICAgICByZWZ0ZXN0TGlzdCA9
IFtdCisKKyAgICAgICAgcHJpbnQgIlNjYW5uaW5nOiAiICsgcm9vdAorICAgICAgICBmb3IgZmls
ZW5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBub3Qgc2hvdWxkSWdub3JlKGZpbGVuYW1l
LCBpZ25vcmVGaWxlcyk6CisgICAgICAgICAgICAgICAgcmVmRmlsZXMgPSBmaW5kUmVmZXJlbmNl
cyhvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIGlmIGxlbihy
ZWZGaWxlcykgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmVmdGVzdExpc3QuZXh0ZW5kKHJl
ZkZpbGVzKQorICAgICAgICAgICAgICAgICNlbHNlOgorICAgICAgICAgICAgICAgICMgICAgcHJp
bnQgIk5vIHJlZmVyZW5jZSBmaWxlcyBmb3VuZCBpbiAiICsgZmlsZW5hbWUKKyAgICAgICAgCisg
ICAgICAgIGlmIGxlbihyZWZ0ZXN0TGlzdCkgIT0gMDoKKyAgICAgICAgICAgIHdyaXRlTWFuaWZl
c3Qocm9vdCwgcmVmdGVzdExpc3QpCisgICAgICAgIAorICAgICAgICBmb3IgZGlybmFtZSBpbiBk
aXJzOgorICAgICAgICAgICAgaWYgc2hvdWxkSWdub3JlKGRpcm5hbWUsIGlnbm9yZURpcnMpOgor
ICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKGRpcm5hbWUpCisgICAgCitkZWYgc2hvdWxkSWdu
b3JlKGxpc3RJdGVtLCBpZ25vcmVMaXN0KToKKyAgICAKKyAgICBmb3IgaWdub3JlIGluIGlnbm9y
ZUxpc3Q6CisgICAgICAgIGlmIGlnbm9yZSBpbiBsaXN0SXRlbToKKyAgICAgICAgICAgIHJldHVy
biBUcnVlCisgICAgICAgICAgICAKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIGZpbmRSZWZlcmVu
Y2VzKHRlc3RGaWxlUGF0aCk6CisgICAgCisgICAgdGVzdEZpbGUgPSBvcy5wYXRoLmJhc2VuYW1l
KHRlc3RGaWxlUGF0aCkKKworICAgICNwcmludCAiUmVhZGluZyAiICsgdGVzdEZpbGUKKyAgICBm
ID0gb3Blbih0ZXN0RmlsZVBhdGgpCisgICAgZG9jID0gZi5yZWFkKCkKKyAgICBmLmNsb3NlKCkK
KyAgICAKKyAgICBtZHBhcnNlciA9IFJlZlBhcnNlcigpCisgICAgbWRwYXJzZXIuZmVlZChkb2Mp
CisgICAgbWRwYXJzZXIuY2xvc2UoKQorCisgICAgcmVmZXJlbmNlcyA9IFtdCisgICAgCisgICAg
aWYgbGVuKG1kcGFyc2VyLm1hdGNoZXMpICE9IDA6CisgICAgICAgIGZvciBtYXRjaCBpbiBtZHBh
cnNlci5tYXRjaGVzOgorICAgICAgICAgICAgcmVmZXJlbmNlcy5hcHBlbmQoICgiPT0iLCB0ZXN0
RmlsZSwgbWF0Y2gpICkKKworICAgIGlmIGxlbihtZHBhcnNlci5taXNtYXRjaGVzKSAhPSAwOgor
ICAgICAgICBmb3IgbWlzbWF0Y2ggaW4gbWRwYXJzZXIubWlzbWF0Y2hlczoKKyAgICAgICAgICAg
IHJlZmVyZW5jZXMuYXBwZW5kKCAoIiE9IiwgdGVzdEZpbGUsIG1pc21hdGNoKSApCisgICAgCisg
ICAgcmV0dXJuIHJlZmVyZW5jZXMKKyAgICAKK2RlZiB3cml0ZU1hbmlmZXN0KHRlc3REaXIsIHJl
ZnRlc3RMaXN0KToKKyAgICAKKyAgICBtYW5pZmVzdEZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdERp
ciwgInRlc3RzdWl0ZS5tZiIpCisgICAgCisgICAgIyBUT0RPIFNob3VsZCBJIGFkZCBhIGZsYWcg
dG8gbWFrZSBhdXRvbWF0aWNhbGx5IG92ZXJ3cml0aW5nIG9wdGlvbmFsPworICAgIGlmIG9zLnBh
dGguZXhpc3RzKG1hbmlmZXN0RmlsZSk6CisgICAgICAgIG9zLnJlbW92ZShtYW5pZmVzdEZpbGUp
CisgICAgICAgIHByaW50ICJSZXdyaXRpbmcgZXhpc3RpbmcgbWFuaWZlc3Q6ICIgKyBtYW5pZmVz
dEZpbGUKKyAgICBlbHNlOiAgICAKKyAgICAgICAgcHJpbnQgIkdlbmVyYXRpbmcgbWFuaWZlc3Q6
ICIgKyBtYW5pZmVzdEZpbGUKKyAgICBmID0gb3BlbihtYW5pZmVzdEZpbGUsICd3JykKKyAgICAK
KyAgICAjIEFkZCAoY29tbWVudGVkIG91dCkgcHJvcGVydHkgZm9yIHByZWZpeGVzCisgICAgZi53
cml0ZSgiIyMgU2V0IHRoZSB2YWx1ZSBvZiBwcmVmaXhlZC5wcm9wZXJ0aWVzIHRvIGJlIGxpc3Qg
b2YgY29tbWEgZGVsaW1pdGVkIENTUyBwcm9wZXJ0aWVzXG4iKQorICAgIGYud3JpdGUoIiMjIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXMuIFVuY29tbWVudCB0aGlzIHByb3BlcnR5IGlmIGl0J3Mg
bmVlZGVkLiBTZWUgZXhhbXBsZSBiZWxvdy5cbiIpCisgICAgZi53cml0ZSgiI3ByZWZpeGVkLnBy
b3BlcnRpZXMgPSBmbG93LWludG8sIGZsb3ctZnJvbVxuXG5cbiIpCisgICAgCisgICAgIyBXcml0
ZSBvdXQgdGhlIHJlZnMKKyAgICBpZiBsZW4ocmVmdGVzdExpc3QpID09IDA6CisgICAgICAgIGYu
d3JpdGUoIiMjIE5vIFJlZnRlc3RzIGluIHRoaXMgc3VpdGVcblxuIikKKyAgICBlbHNlOgorICAg
ICAgICBmLndyaXRlKCIjIyBSZWZ0ZXN0czpcblxuIikKKyAgICBmb3IgcmVmdGVzdCBpbiByZWZ0
ZXN0TGlzdDoKKyAgICAgICAgZi53cml0ZSggcmVmdGVzdFswXSArIiAiKyByZWZ0ZXN0WzFdICsi
ICIrIHJlZnRlc3RbMl0gKyJcbiIpCisgICAgICAgIAorICAgIGYuY2xvc2UoKQorCittYWluKCkK
KworCisgICAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjAzYzNlNDAKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKQEAgLTAsMCArMSw0NjEgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGly
ZWN0b3J5IG9mIFczQyBDU1MgdGVzdHMgaW50byBXZWJLaXQuCisjCisjIFlvdSBtdXN0IGhhdmUg
Y2hlY2tlZCBvdXQgdGhlIFczQyByZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUuCisjCisj
IFRoaXMgc2NyaXB0IHdpbGwgaW1wb3J0IHRoZSB0ZXN0cyBpbnRvIExheW91dFRlc3RzL1t0ZXN0
X2FyZWFdL2ltcG9ydGVkLXczYyBUaGUgc2NyaXB0IHJlYWRzIGluIGEgbWFuaWZlc3QKKyMgZmls
ZSB0aGF0IGZvbGxvd3MgdGhlIGZvcm1hdCBhcyBkZXNjcmliZWQgb24gdGhlIENTU1dHIHdpa2k6
CisjCisjICAgIGh0dHA6Ly93aWtpLmNzc3dnLm9yZy90ZXN0L3JlZnRlc3QjdGhlLXJlZnRlc3Qt
bWFuaWZlc3QKKyMKKyMgTm90ZTogVGhlIENTU1dHIGhhcyBkZXByZWNhdGVkIHRoaXMgbWFuaWZl
c3QgaW4gZmF2b3IgZm9yIHVzaW5nIG1ldGFkYXRhLCBidXQgc2luY2UgdGhlIAorIyAgICAgICBX
ZWJraXQgdGVzdCBoYXJuZXNzIGRvZXNuJ3Qgc3VwcG9ydCByZWFkaW5nIG1ldGFkYXRhLCB0aGlz
IGFuY2lsbGFyeSBmaWxlIGlzIG5lY2Vzc2FyeQorIyAgICAgICB0byBtYWludGFpbiB0aGUgY29y
cmVjdCB0ZXN0OnJlZiBmaWxlIG1hcHBpbmdzCisjCisjIFRoZXJlIGlzIG9uZSBhZGRpdGlvbmFs
IHBpZWNlIG9mIGluZm9ybWF0aW9uIGluIHRoZSBtYW5pZmVzdCB0aGF0IGlzIG5vdCBwYXJ0IG9m
IHRoZSBvcmlnaW4gZm9ybWF0IGRlZmluZWQKKyMgb24gdGhlIHdpa2kgLSB0aGUgbGlzdCBvZiBD
U1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQgcHJlZml4LiBTaW5jZSB0ZXN0cyBj
YW5ub3QgYmUgY2hlY2tlZCBpbnRvCisjIHRoZSBXM0MgcmVwb3NpdG9yeSB3aXRoIHByZWZpeGVz
LCB0aGlzIGlzIGFsc28gbmVjZXNzYXJ5IHRvIGhhdmUgaW4gdGhlIG1hbmlmZXN0LiBUaGlzIHNj
cmlwdCBhbHNvIGhhbmRsZXMgCisjIHRoZSBwcmVmaXhpbmcgdXBvbiBpbXBvcnQuCisjCisjIFRo
ZSBtYW5pZmVzdCBjYW4gYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21wYW5pb24gc2NyaXB0IGdlbmVy
YXRlLXczYy10ZXN0c3VpdGUtbWFuaWZlc3QuIAorIyAKKyMgU2luY2UgdGhpcyBzY3JpcHQgaXMg
ZGVzaWduZWQgZm9yIHJldXNlIGFuZCBwZXJpb2RpY2FsbHkgcmVmcmVzaGluZyBXM0MgdGVzdHMs
IHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIAorIyBvdmVyd3JpdGUgZmlsZXMgd2hlbiB0aGUg
c291cmNlIGFuZCBkZXN0aW5hdGlvbiBmaWxlcyBhcmUgdGhlIHNhbWUuIFRoaXMgYmVoYXZpb3Ig
Y2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhIAorIyBjb21tYW5kIGxpbmUgZmxhZy4KKyMKKyMgVGhl
IGZpbmFsIHN0ZXAgaW4gdGhpcyBzY3JpcHQgaXMgdG8gZHJvcCBhIHczYy1pbXBvcnQubG9nIGlu
IGVhY2ggaW1wb3J0ZWQgZGlyZWN0b3J5IHdpdGggYSB0aW1lc3RhbXAsIAorIyB0aGUgVzNDIE1l
cmN1cmlhbCBjaGFuZ2VzZXQgaWYgYXZhaWxhYmxlLCB0aGUgbGlzdCBvZiBpbXBvcnRlZCBmaWxl
cywgYW5kIGd1aWRhbmNlIGZvciBmdXR1cmUgdGVzdCBtb2RpZmljYXRpb24gCisjIGFuZCBtYWlu
dGVuYW5jZS4gVGhpcyBsb2cgZmlsZSBpcyByZWFkIG9uIHN1YnNlcXVlbnQgaW1wb3J0cyB0byBk
ZXRlcm1pbmUgaWYgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgCisjIGluIHRoZSBuZXdlciBjaGFu
Z2VzZXRzLiAKKyMgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgb3MsIHN5cywgc2h1dGlsLCByZSwgc3VicHJvY2Vzcywg
ZGF0ZXRpbWUKKword2Via2l0X2RpciA9ICIiCitzb3VyY2VfZGlyID0gIiIKK2Rlc3RfZGlyID0g
IiIKK29wdGlvbnMgPSBbXQorcHJlZml4ZWRfcHJvcHMgPSBbXQoraW1wb3J0TGlzdCA9IFtdCitz
a2lwTGlzdCA9IFtdCitjaGFuZ2VzZXQgPSAiIgordGVzdF9zdGF0dXMgPSAiIgorCitkZWYgbWFp
bigpOgorCisgICAgcGFyc2VBcmdzKCkKKyAgICBtYWtlRGVzdERpcigpCisgICAgZ2V0Q2hhbmdl
c2V0KCkKKyAgICBnZXRUZXN0U3RhdHVzKCkKKyAgICBzY2FuVGVzdERpcihzb3VyY2VfZGlyKQor
ICAgIGltcG9ydFRlc3RzKCkKKyAgICAKK2RlZiBwYXJzZUFyZ3MoKToKKworICAgIGdsb2JhbCB3
ZWJraXRfZGlyCisgICAgZ2xvYmFsIHNvdXJjZV9kaXIKKyAgICBnbG9iYWwgZGVzdF9kaXIKKyAg
ICBnbG9iYWwgb3B0aW9ucworCisgICAgIyBTcGxpdCBmbGFncyBmcm9tIGFyZ3MKKyAgICBhcmdM
aXN0ID0gW10KKyAgICBmb3IgYXJnIGluIHN5cy5hcmd2OgorICAgICAgICBpZiBhcmcuc3RhcnRz
d2l0aCgnLScpOgorICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQoYXJnKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgYXJnTGlzdC5hcHBlbmQoYXJnKQorCisgICAgIyBDaGVjayBmb3IgcmVx
dWlyZWQgYXJncworICAgIGlmIGxlbihhcmdMaXN0KSA8IDM6CisgICAgICAgIHByaW50ICJFUlJP
UjogTWlzc2luZyBhcmd1bWVudChzKSIKKyAgICAgICAgc2hvd1VzYWdlKCkKKworICAgICMgTWFr
ZSBzdXJlIHRoZSB3M2MgdGVzdCBkaXIgZXhpc3RzCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3Rz
KGFyZ0xpc3RbMV0pOgorICAgICAgICAgc3lzLmV4aXQoJ0VSUk9SOiBTb3VyY2UgZGlyICVzIG5v
dCBmb3VuZCEnICUgYXJnTGlzdFsxXSkKKyAgICAKKyAgICAjIE1ha2Ugc3VyZSB0aGUgd2Via2l0
IHJvb3QgZGlyIGV4aXN0cworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhhcmdMaXN0WzJdKToK
KyAgICAgICAgIHN5cy5leGl0KCdFUlJPUjogV2ViS2l0IGRpciAlcyBmb3VuZCEnICUgYXJnTGlz
dFsyXSkKKyAgICAKKyAgICAjIENvbnN0cnVjdCB0aGUgcGF0aCB0byB0aGUgZGVzdGluYXRpb24g
ZGlyCisgICAgc291cmNlX2RpciA9IGFyZ0xpc3RbMV0ucnN0cmlwKCcvJykKKyAgICB3ZWJraXRf
ZGlyID0gYXJnTGlzdFsyXQorICAgIGRlc3RfZGlyID0gb3MucGF0aC5qb2luKHdlYmtpdF9kaXIs
ICdMYXlvdXRUZXN0cycpCisgICAgCisgICAgaWYgbGVuKGFyZ0xpc3QpID09IDQ6IAorICAgICAg
ICAjIElmIGEgdGVzdF9hcmVhIHdhcyBzcGVjaWZpZWQsIHRoZW4gaXQgZ29lcyB1bmRlciBMYXlv
dXRUZXN0cworICAgICAgICBkZXN0X2RpciA9IG9zLnBhdGguam9pbihkZXN0X2RpciwgYXJnTGlz
dFszXSkKKyAgICBlbHNlOgorICAgICAgICAjIElmIG5vdCwgY3JlYXRlIGEgZGlyZWN0b3J5IHRo
YXQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgY29udGFpbmluZyBkaXJlY3RvcnkKKyAgICAgICAgZGVz
dF9kaXIgPSBvcy5wYXRoLmpvaW4oZGVzdF9kaXIsIG9zLnBhdGguYmFzZW5hbWUoc291cmNlX2Rp
cikpCisgICAgICAgIAorICAgICMgRHJvcCBpdCBhbGwgaW50byBhbiAnaW1wb3J0ZWQtdzNjJyBk
aXIKKyAgICBkZXN0X2RpciA9IG9zLnBhdGguam9pbihkZXN0X2RpciwgJ2ltcG9ydGVkLXczYycp
CisgICAgCisgICAgbG9nKCJUZXN0cyB3aWxsIGJlIGltcG9ydGVkIGZyb206ICIgKyBzb3VyY2Vf
ZGlyKSAKKworZGVmIHNob3dVc2FnZSgpOgorICAgIHByaW50ICcnCisgICAgcHJpbnQgJ1VTQUdF
OiAlcyBbdzNjX3Rlc3RfZGlyXSBbd2Via2l0X3Jvb3RdIFt0ZXN0X2FyZWFdJyAlIHN5cy5hcmd2
WzBdCisgICAgcHJpbnQgJycKKyAgICBwcmludCAnICAgICAgW3czY190ZXN0X2Rpcl0gICAgIC0g
dGhlIHBhdGggdG8gdGhlIHNwZWNpZmljIGRpcmVjdG9yeSBvZiB0ZXN0cyB0byBiZScKKyAgICBw
cmludCAnICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0ZWQgaW50byBXZWJLaXQuIEFs
bCBzdWJkaXJlY3RvcmllcyBvZiB0aGlzIHBhdGgnCisgICAgcHJpbnQgJyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGltcG9ydC4nCisgICAgcHJpbnQg
JycKKyAgICBwcmludCAnICAgICAgW3dlYmtpdF9yb290XSAgICAgIC0gdGhlIHBhdGggdG8gdGhl
IHJvb3Qgb2YgdGhlIFdlYktpdCBjaGVja291dCBkaXJlY3RvcnknCisgICAgcHJpbnQgJycKKyAg
ICBwcmludCAnICAgICAgW3Rlc3RfYXJlYV0gICAgICAgIC0gKE9wdGlvbmFsKSBUaGUgbmFtZSBv
ZiB0aGUgdGVzdGluZyBhcmVhIHVuZGVyIHdoaWNoIHRoZXNlJworICAgIHByaW50ICcgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0IGZhbGwuIFRoZSB0ZXN0cyB3aWxsIGJlIGltcG9ydGVk
IGludG8gJworICAgIHByaW50ICcgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2Via2l0X3Jv
b3RdL0xheW91dFRlc3RzL1t0ZXN0IGFyZWFdL2ltcG9ydGVkLXczYy4gQSBzdWJkaXJlY3Rvcnkn
CisgICAgcHJpbnQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBzYW1lIG5hbWUg
YXMgdGhlIG9yaWdpbmFsIGNvbnRhaW5pbmcgZGlyZWN0b3J5IHdpbGwgYmUgaGVyZScKKyAgICBw
cmludCAnICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIFt0
ZXN0IGFyZWFdIGRpcmVjdG9yeSB3aWxsIHRha2UgdGhlIG5hbWUgb2YnCisgICAgcHJpbnQgJyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvcmlnaW5hbCBjb250YWluaW5nIGRpcmVjdG9y
eScKKyAgICBwcmludCAnJworICAgIHByaW50ICcgICAgICAtbiwgLS1uby1vdmVyd3JpdGUgLSBG
bGFnIHRvIHByZXZlbnQgZHVwbGljYXRlIHRlc3QgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBleGlz
dGluZyAnCisgICAgcHJpbnQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLiBCeSBk
ZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0ZW4gYXMgdGhpcyBzY3JpcHQgaXMgJworICAg
IHByaW50ICcgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbmRlZCB0byBiZSB1c2VkIHRv
IHBlcmlvZGljYWxseSByZWZyZXNoIHRlc3RzIGZyb20gdGhlIFczQyByZXBvJworICAgIHByaW50
ICcnCisgICAgcHJpbnQgJyAgICAgIC12LCAtLXZlcmJvc2UgICAgICAtIFZlcmJvc2Ugb3V0cHV0
JworICAgIHByaW50ICcnCisgICAgcHJpbnQgJyAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgIFNo
b3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnCisgICAgcHJpbnQgJycKKyAgICBwcmludCAn
RXhhbXBsZXM6JworICAgIHByaW50ICcgICAgICAgJCAuL2ltcG9ydC13M2MtdGVzdHMgfi9XM0Mv
Y29udHJpYnV0b3JzL2Fkb2JlL3N1Ym1pdHRlZC9yZWdpb25zL3NlbGVjdGlvbiB+L1dlYktpdCBy
ZWdpb25zJworICAgIHByaW50ICcgICAgICAgV2lsbCBpbXBvcnQgdGhlIHRlc3RzIGludG8gfi9X
ZWJLaXQvTGF5b3V0VGVzdHMvcmVnaW9ucy9pbXBvcnRlZC13M2Mvc2VsZWN0aW9uJworICAgIHBy
aW50ICcnCisgICAgcHJpbnQgJyAgICAgICAkIC4vaW1wb3J0LXczYy10ZXN0cyB+L1czQy9jb250
cmlidXRvcnMvYWRvYmUvc3VibWl0dGVkL3JlZ2lvbnMgfi9XZWJLaXQnCisgICAgcHJpbnQgJyAg
ICAgICBXaWxsIGltcG9ydCB0aGUgdGVzdHMgaW50byB+L1dlYktpdC9MYXlvdXRUZXN0cy9yZWdp
b25zL2ltcG9ydGVkLXczYycKKyAgICBwcmludCAnJworICAgIHByaW50ICcgICAgICAgSW4gYm90
aCBjYXNlcywgaWYgdGhlIFwnc2VsZWN0aW9uXCcgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLCBu
ZXcgdGVzdHMgd2lsbCBiZSBhZGRlZCB0byBpdCBhbmQgdGVzdHMgd2l0aCAnCisgICAgcHJpbnQg
JyAgICAgICB0aGUgc2FtZSBuYW1lIHdpbGwgYmUgb3ZlcndyaXR0ZW4gdW5sZXNzIHRoZSAtLW5v
LW92ZXJ3cml0ZSBhcmd1bWVudCBpcyBzcGVjaWZpZWQnCisgICAgcHJpbnQgJycKKyAgICBzeXMu
ZXhpdCgxKQorICAgIAorICAgIAorZGVmIG1ha2VEZXN0RGlyKCk6CisgICAgCisgICAgaWYgbm90
IG9zLnBhdGguZXhpc3RzKGRlc3RfZGlyKToKKyAgICAgICAgbG9nKCJDcmVhdGluZyBkZXN0aW5h
dGlvbiBkaXI6ICIgKyBkZXN0X2RpcikgCisgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RfZGlyKQor
ICAgICAgICAKKyAgICBsb2coIlRlc3RzIHdpbGwgYmUgaW1wb3J0ZWQgaW50bzogIiArIGRlc3Rf
ZGlyKSAKKyAgICAKKyAgICAKK2RlZiBnZXRDaGFuZ2VzZXQoKToKKyAgICAKKyAgICBnbG9iYWwg
Y2hhbmdlc2V0CisgICAgCisgICAgdHJ5OgorICAgICAgICAjIEFzc3VtaW5nIE1lcmN1cmlhbCBp
cyBzZXQgdXAgb24gdGhlIHN5c3RlbSwgdHJ5IHRvIGdyYWIgdGhlIGNoYW5nZXNldCB3ZSdyZSBp
bXBvcnRpbmcKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oWyJoZyIsICJ0aXAiXSwg
ZW52PW9zLmVudmlyb24sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIGN3ZD1zb3VyY2VfZGlyKQor
ICAgICAgICBjaGFuZ2VzZXQgPSBwcm9jLnN0ZG91dC5yZWFkbGluZXMoKVswXQorICAgICAgICBj
aGFuZ2VzZXQgPSBjaGFuZ2VzZXQuc3BsaXQoImNoYW5nZXNldDoiKVsxXQorICAgIGV4Y2VwdDoK
KyAgICAgICAgIyBPaCB3ZWxsLCB3ZSB0cmllZAorICAgICAgICBjaGFuZ2VzZXQgPSAiTm90IEF2
YWlsYWJsZSIKKyAgICAgICAgCitkZWYgZ2V0VGVzdFN0YXR1cygpOgorICAgIAorICAgIGdsb2Jh
bCB0ZXN0X3N0YXR1cworICAgIAorICAgICMgSWYgdGhlc2UgdGVzdHMgYXJlIGFwcHJvdmVkLCB0
aGUgd29yZCB3aWxsIGJlIGluIHRoZSBwYXRoIChkdWgpCisgICAgaWYgImFwcHJvdmVkIiBpbiBz
b3VyY2VfZGlyOgorICAgICAgICB0ZXN0X3N0YXR1cyA9ICJBcHByb3ZlZCIKKyAgICBlbGlmICJz
dWJtaXR0ZWQiIGluIHNvdXJjZV9kaXI6CisgICAgICAgICMgRGl0dG8gZm9yIHN1Ym1pdHRlZAor
ICAgICAgICB0ZXN0X3N0YXR1cyA9ICJTdWJtaXR0ZWQsIEF3YWl0aW5nIFJldmlldyIKKyAgICBl
bHNlOgorICAgICAgICAjIFRoaXMgaXMgcHJvYmFibHkgc3RpbGwgdXNlZnVsIGluZm8KKyAgICAg
ICAgdGVzdF9zdGF0dXMgPSAiVW5rbm93biIKKyAgICAKKyAgICAKKyAgICAgICAgCitkZWYgc2Nh
blRlc3REaXIodGVzdERpcik6CisgICAgCisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9z
LndhbGsodGVzdERpcik6CisgICAgICAgIAorICAgICAgICAjIElnbm9yZSBhbnkgcmVwbyBzdHVm
ZgorICAgICAgICBpZiAnLmdpdCcgaW4gZGlyczoKKyAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcu
Z2l0JykKKyAgICAgICAgaWYgJy5oZycgaW4gZGlyczoKKyAgICAgICAgICAgIGRpcnMucmVtb3Zl
KCcuaGcnKSAgCisKKyAgICAgICAgbWFuaWZlc3QgPSByZWFkTWFuaWZlc3Qocm9vdCkKKyAgICAg
ICAgY29weUxpc3QgPSBbXQorICAgICAgICAgICAgICAgIAorICAgICAgICBpZiBtYW5pZmVzdCBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIAorICAgICAgICAgICAgI2R1bXBNYW5pZmVzdChtYW5p
ZmVzdCkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBJZiB0aGVyZSdzIGEgbWFuaWZlc3Qg
aW4gdGhpcyBkaXIgaGFuZGxlIHRoZSByZWZ0ZXN0cworICAgICAgICAgICAgZm9yIHJlZnRlc3Qg
aW4gbWFuaWZlc3Q6CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgIyBBZGQgdGhl
IHRlc3QgZmlsZSB0byB0aGUgY29weWxpc3QKKyAgICAgICAgICAgICAgICB0ZXN0QmFzZU5hbWUg
PSBvcy5wYXRoLmJhc2VuYW1lKHJlZnRlc3RbJ3Rlc3QnXSkKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAjIEFkZCB0aGUgcmVmIGZpbGUsIHJlbmFtaW5nIGl0IHRvIFdlYmtpdCdz
IHdheQorICAgICAgICAgICAgICAgIHJlZkZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RCYXNl
TmFtZSlbMF0gKyAiLWV4cGVjdGVkIgorICAgICAgICAgICAgICAgIHJlZkZpbGUgKz0gb3MucGF0
aC5zcGxpdGV4dCh0ZXN0QmFzZU5hbWUpWzFdCisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgY29weUxpc3QuYXBwZW5kKHsnc3JjJzogcmVmdGVzdFsncmVmZXJlbmNlJ10sICdkZXN0
JzogcmVmRmlsZSB9KQorICAgICAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgZm9yIGZp
bGVuYW1lIGluIGZpbGVzOgorCisgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihy
b290LGZpbGVuYW1lKQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiBub3QoZmlsZW5hbWUu
c3RhcnRzd2l0aCgiLiIpKSBhbmQgXAorICAgICAgICAgICAgICAgbm90KGZpbGVuYW1lLmVuZHN3
aXRoKCIubWYiKSkgYW5kIFwKKyAgICAgICAgICAgICAgIG5vdCgiLXJlZiIgaW4gZmlsZW5hbWUp
ICAgICAgIGFuZCBcCisgICAgICAgICAgICAgICBub3QoZnVsbHBhdGggaW4gc2tpcExpc3QpOiAK
KyAgICAgICAgICAgICAgICBjb3B5TGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rlc3Qn
OiBmaWxlbmFtZSB9KQorICAgICAgICAgICAgCisgICAgICAgIGltcG9ydExpc3QuYXBwZW5kKCB7
ICdkaXInOiByb290LCAnY29weUxpc3QnOiBjb3B5TGlzdCB9ICkKKworICAgIAorZGVmIHJlYWRN
YW5pZmVzdChjdXJyZW50RGlyKToKKworICAgICMgT3BlbiB0aGUgbWFuaWZlc3QgZmlsZSBpZiBp
dCBleGlzdHMKKyAgICBtYW5pZmVzdEZpbGUgPSBvcy5wYXRoLmpvaW4oY3VycmVudERpciwgInRl
c3RzdWl0ZS5tZiIpCisKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdEZpbGUpOgorICAg
ICAgICBsb2coIlJlYWRpbmcgbWFuaWZlc3QgZmlsZTogIiArIG1hbmlmZXN0RmlsZSkKKyAgICAg
ICAgZiA9IG9wZW4obWFuaWZlc3RGaWxlKQorICAgICAgICBtYW5pZmVzdENvbnRlbnQgPSBmLnJl
YWRsaW5lcygpCisgICAgICAgIGdldFByZWZpeGVzKG1hbmlmZXN0Q29udGVudCkKKyAgICAgICAg
CisgICAgICAgIHJldHVybiBnZXRSZWZ0ZXN0cyhtYW5pZmVzdENvbnRlbnQsIGN1cnJlbnREaXIp
CisgICAgICAgIAorICAgIAorICAgICAgICAKK2RlZiBnZXRQcmVmaXhlcyhtYW5pZmVzdCk6Cisg
ICAgCisgICAgZm9yIGxpbmUgaW4gbWFuaWZlc3Q6CisgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0
aCgncHJlZml4ZWQucHJvcGVydGllcycpIGFuZCBsZW4obGluZS5zcGxpdCgnPScpKSA+IDE6Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgICMgU3BsaXQgb3V0IHRoZSBwcmVmaXggcHJvcGVydHkg
dmFsdWUKKyAgICAgICAgICAgIHByb3BMaXN0ID0gbGluZS5zcGxpdCgnPScpWzFdLnN0cmlwKCkK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBTdHJpcCBvdXQgaW5saW5lIGNvbW1lbnRzCisg
ICAgICAgICAgICBwcm9wTGlzdCA9IHByb3BMaXN0LnNwbGl0KCcjJylbMF0uc3RyaXAoKQorICAg
ICAgICAgICAgCisgICAgICAgICAgICAjIFNwbGl0IHRoZSBwcm9wZXJ0aWVzIGludG8gYSBsaXN0
CisgICAgICAgICAgICBmb3IgcHJvcCBpbiBwcm9wTGlzdC5zcGxpdCgnLCcpOgorICAgICAgICAg
ICAgICAgIHByb3AgPSBwcm9wLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBwcm9wIG5vdCBp
biBwcmVmaXhlZF9wcm9wczoKKyAgICAgICAgICAgICAgICAgICAgIyBTdG9yZSBpbiB0aGUgZ2xv
YmFsIGxpc3QgYi9jIHRoZXNlIGRvbid0IHJlYWxseSBuZWVkIHRvIGJlIHRyYWNrZWQgcGVyIGRp
cmVjdG9yeSAKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ZWRfcHJvcHMuYXBwZW5kKHByb3Ap
CisgICAgICAgICAgICAgICAgCisKK2RlZiBnZXRSZWZ0ZXN0cyhtYW5pZmVzdCwgcGFyZW50RGly
KToKKyAgICAKKyAgICByZWZ0ZXN0TGlzdCA9IFtdCisgICAgCisgICAgIyBUZW1wIGxpc3QgdG8g
dHJhY2sgdGhlIHRlc3QgZmlsZXMgb25seSB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgYWRkIGR1cGVz
CisgICAgdG1wVGVzdExpc3QgPSBbXQorICAgIAorICAgIGxpbmVObyA9IDEKKyAgICBmb3IgbGlu
ZSBpbiBtYW5pZmVzdDoKKyAgICAgICAgCisgICAgICAgICMgU3RyaXAgaW5saW5lIGNvbW1lbnRz
CisgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcjJylbMF0KKworICAgICAgICB0ZXN0RW50cnkg
PSAiIgorICAgICAgICB0eXBlID0gIiIKKyAgICAgICAgCisgICAgICAgICMgTG9vayBmb3IgbGlu
ZXMgdGhhdCBkZWZpbmUgcmVmdGVzdHMsIHN0YXJ0aW5nIHdpdGggPT0gb3IgIT0KKyAgICAgICAg
dGVzdEVudHJ5ID0gcmUuc3BsaXQoIl4uPz0iLCBsaW5lKQorICAgICAgICBpZiBsZW4odGVzdEVu
dHJ5KSA+IDE6CisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgU3BsaXQgYXBhcnQgdGhlIHR3
byBmaWxlcyBsaXN0ZWQgb24gdGhpcyBsaW5lCisgICAgICAgICAgICB0ZXN0RW50cnkgPSB0ZXN0
RW50cnlbMV0uc3BsaXQoKQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiBsZW4odGVzdEVu
dHJ5KSA9PSAyOgorICAgICAgICAgICAgICAgICMgQXNzZW1ibGUgdGhlIGFic29sdXRlIHBhdGhz
IHRvIHRoZSBmaWxlcworICAgICAgICAgICAgICAgIHRlc3RGaWxlID0gdGVzdEVudHJ5WzBdLnN0
cmlwKCkKKyAgICAgICAgICAgICAgICB0ZXN0UGF0aCA9IG9zLnBhdGguam9pbihwYXJlbnREaXIs
IHRlc3RGaWxlKQorICAgICAgICAgICAgICAgIHJlZlBhdGggPSBvcy5wYXRoLmpvaW4ocGFyZW50
RGlyLCB0ZXN0RW50cnlbMV0uc3RyaXAoKSkKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBpZiB0ZXN0RmlsZSBpbiB0bXBUZXN0TGlzdDoKKyAgICAgICAgICAgICAgICAgICAgIyBJ
ZiB0aGlzIHRlc3QgaXMgYWxyZWFkeSBpbiB0aGUgbGlzdCwgc2tpcCBpdAorICAgICAgICAgICAg
ICAgICAgICBsb2coIldhcm5pbmc6IElnbm9yaW5nIGR1cGxpY2F0ZSBtYW5pZmVzdCBlbnRyeSBv
biBsaW5lICIrIHN0cihsaW5lTm8pICsgIiwgV2ViS2l0IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlw
bGUgcmVmZXJlbmNlcy4iKQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGVsaWYg
bGluZS5zdGFydHN3aXRoKCchPScpOgorICAgICAgICAgICAgICAgICAgICAjIElnbm9yZSBtaXNt
YXRjaCByZWZzCisgICAgICAgICAgICAgICAgICAgIGxvZygiV2FybmluZzogSWdub3JpbmcgbWlz
bWF0Y2ggcmVmIGluIG1hbmlmZXN0IG9uIGxpbmUgIisgc3RyKGxpbmVObykgKyAiLCBXZWJLaXQg
ZG9lcyBub3Qgc3VwcG9ydCBtaXNtYXRjaCByZWZlcmVuY2VzLiIpCisgICAgICAgICAgICAgICAg
ICAgIHNraXBMaXN0LmFwcGVuZChyZWZQYXRoKQorICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCc9PScpOgorICAgICAgICAgICAgICAgICAgICAj
IFRoaXMgaXMgd2hhdCB3ZSdyZSBhZnRlci4uLiBhZGQgaXQgdG8gdGhlIGxpc3QKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdE1hcHBpbmcgPSB7ICd0ZXN0JzogdGVzdFBhdGgsICdyZWZlcmVuY2Un
OiByZWZQYXRoLCAndHlwZSc6IHR5cGUgfQorICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0TGlz
dC5hcHBlbmQodGVzdE1hcHBpbmcpCisgICAgICAgICAgICAgICAgICAgIHRtcFRlc3RMaXN0LmFw
cGVuZCh0ZXN0RmlsZSkKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgbG9nKCJXYXJuaW5nOiBJZ25vcmluZyBpbXByb3Blcmx5IGZvcm1hdHRlZCBy
ZWZ0ZXN0IGVudHJ5IGluIG1hbmlmZXN0IG9uIGxpbmUgIiArIHN0cihsaW5lTm8pKSAKKyAgICAK
KyAgICAgICAgbGluZU5vICs9IDEKKyAgICAKKyAgICByZXR1cm4gcmVmdGVzdExpc3QKKyAgICAK
K2RlZiBpbXBvcnRUZXN0cygpOgorICAgIAorICAgIGxvZygiSW1wb3J0aW5nIHRlc3RzLi4uIikK
KyAgICB2ZXJib3NlKCI8PDw8PDw8PDw8PDw8PDw8PDwgSU1QT1JUIExJU1QgPj4+Pj4+Pj4+Pj4+
Pj4+Pj4+PiIpCisgICAgCisgICAgZm9yIGRpclRvQ29weSBpbiBpbXBvcnRMaXN0OgorICAgICAg
ICBpZiBsZW4oZGlyVG9Db3B5Wydjb3B5TGlzdCddKSA+IDA6CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHZlcmJvc2UoIiIpCisgICAgICAgICAgICB2ZXJib3NlKCI+Pj4+PiBJbXBvcnRpbmcg
ZmlsZXMgZnJvbTogIiArIGRpclRvQ29weVsnZGlyJ10pCisgICAgICAgICAgICAKKyAgICAgICAg
ICAgICMgRXh0cmFjdCB0aGUgYmFzZSBzb3VyY2VfZGlyIGZyb20gdGhlIGZpbGUgdG8gY29weQor
ICAgICAgICAgICAgb3JpZ1BhdGggPSBkaXJUb0NvcHlbJ2RpciddCisgICAgICAgICAgICBzdGFy
dCA9IG9yaWdQYXRoLmZpbmQoc291cmNlX2RpcikgKyBsZW4oc291cmNlX2RpcikrMQorICAgICAg
ICAgICAgbmV3U3ViUGF0aCA9IG9yaWdQYXRoWyBzdGFydDpsZW4ob3JpZ1BhdGgpIF0KKyAgICAg
ICAgCisgICAgICAgICAgICAjIEFwcGVuZCBpdCB0byB0aGUgZGVzdF9kaXIKKyAgICAgICAgICAg
IG5ld1BhdGggPSBvcy5wYXRoLmpvaW4oZGVzdF9kaXIsIG5ld1N1YlBhdGgpCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgICMgQ3JlYXRlIHRoZSBkZXN0IHN1YmRpcnMgaWYgbm90IHRoZXJlCisg
ICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMobmV3UGF0aCkpOgorICAgICAgICAgICAg
ICAgIHZlcmJvc2UoIj4+Pj4+IENyZWF0aW5nIGRlc3RpbmF0aW9uIGRpcjogIiArIG5ld1BhdGgp
CisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMobmV3UGF0aCkKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgY29waWVkRmlsZXMgPSBbXQorICAgICAgICAgICAgZm9yIGZpbGVUb0NvcHkgaW4g
ZGlyVG9Db3B5Wydjb3B5TGlzdCddOgorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3Jp
Z0ZpbGVQYXRoID0gZmlsZVRvQ29weVsnc3JjJ10KKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAjIEFwcGVuZCB0aGUgY29ycmVjdCBkZXN0aW5hdGlvbiBmaWxlbmFtZQorICAgICAg
ICAgICAgICAgIG5ld0ZpbGVQYXRoID0gb3MucGF0aC5qb2luKG5ld1BhdGgsIGZpbGVUb0NvcHlb
J2Rlc3QnXSkKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAjIERvbid0IG92ZXJ3
cml0ZSBleGlzdGluZyB0ZXN0cyBpZiBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICBpZiBhbnko
eCBpbiBvcHRpb25zIGZvciB4IGluIFsnLW4nLCAnLS1uby1vdmVyd3JpdGUnXSkgYW5kIFwKKyAg
ICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhuZXdGaWxlUGF0aCk6CisgICAgICAgICAg
ICAgICAgICAgIGxvZygiU2tpcHBpbmcgaW1wb3J0IG9mIGV4aXN0aW5nIGZpbGUgIiArIG5ld0Zp
bGVQYXRoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHZlcmJv
c2UoIiIpCisgICAgICAgICAgICAgICAgICAgIHZlcmJvc2UoIiAgICAgQ09QWUlORzogIiArIG9y
aWdGaWxlUGF0aCkKKyAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSgiICAgICBUTzogICAgICAi
ICsgbmV3RmlsZVBhdGgpCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICAjIENvbnN0cnVjdCB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgZGlyIHRvIExheW91
dFRlc3RzL3Jlc291cmNlcworICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXIgPSBvcy5w
YXRoLmpvaW4ob3MucGF0aC5qb2luKHdlYmtpdF9kaXIsICdMYXlvdXRUZXN0cycpLCAncmVzb3Vy
Y2VzJykKKyAgICAgICAgICAgICAgICAgICAgcmVsUGF0aCA9IG9zLnBhdGgucmVscGF0aChyZXNv
dXJjZXNEaXIsIG5ld1BhdGgpCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICBpbmZpbGUgPSBvcGVuKG9yaWdGaWxlUGF0aCwgJ3InKQorICAgICAgICAgICAgICAgICAg
ICBvdXRmaWxlID0gb3BlbihuZXdGaWxlUGF0aCwgJ3cnKQorICAgICAgICAgICAgICAgICAgICBv
cmlnQ29udGVudCA9IGluZmlsZS5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIHRtcCA9IGluZmlsZS5yZWFkbGluZXMoKQorICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHBhdGhzIHRvIHRlc3RoYXJuZXNzIGZpbGVz
IGdvb2QKKyAgICAgICAgICAgICAgICAgICAgbmV3Q29udGVudCA9IG9yaWdDb250ZW50LnJlcGxh
Y2UoIi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MiLCByZWxQYXRoKycvdGVzdGhhcm5lc3MnKQorICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIyBQcmVmaXggdGhlIHByb3Bl
cnRpZXMgdGhhdCBuZWVkIGl0CisgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVUb0NvcHlbJ2Rl
c3QnXSAhPSAidGVzdHN1aXRlLm1mIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcm9w
IGluIHByZWZpeGVkX3Byb3BzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbnRl
bnQgPSBuZXdDb250ZW50LnJlcGxhY2UocHJvcCwgIi13ZWJraXQtIitwcm9wKQorICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPIEhhbmRsZSBDU1NPTSBwcmVm
aXhlZCBwcm9wZXJ0aWVzICAgIAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgb3V0ZmlsZS53cml0ZShuZXdDb250ZW50KQorICAgICAgICAgICAgICAgICAgICBpbmZp
bGUuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLmNsb3NlKCkKKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNvcGllZEZpbGVzLmFwcGVuZChuZXdG
aWxlUGF0aC5yZXBsYWNlKHdlYmtpdF9kaXIsICIiKSkKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgIyBUYWtlIGNhcmUgb2YgYW55dGhpbmcgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgc2lu
Y2UgdGhlIGxhc3QgaW1wb3J0CisgICAgICAgICAgICByZW1vdmVEZWxldGVkRmlsZXMobmV3UGF0
aCwgY29waWVkRmlsZXMpCisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgTGFzdCwgZHJvcCBz
b21lIGluZm8gYWJvdXQgd2hhdCBqdXN0IGhhcHBlbmVkIGhlcmUKKyAgICAgICAgICAgIHdyaXRl
SW1wb3J0TG9nKG5ld1BhdGgsIGNvcGllZEZpbGVzKQorICAgICAgICAgICAgICAgICAKKyAgICBs
b2coIkltcG9ydCBjb21wbGV0ZSIpCisgICAgCitkZWYgcmVtb3ZlRGVsZXRlZEZpbGVzKG5ld1Bh
dGgsIG5ld0ZpbGVMaXN0KToKKyAgICAKKyAgICBwcmV2aW91c0xpc3QgPSBbXQorICAgIAorICAg
ICMgRmlyc3QgY2hlY2sgaWYgdGhlcmUgd2FzIGEgcHJldmlvdXMgaW1wb3J0IGhlcmUgLSB0aGVy
ZSBzaG91bGQgYmUgYSBsb2cKKyAgICBpbXBvcnRMb2dGaWxlID0gb3MucGF0aC5qb2luKG5ld1Bh
dGgsICJ3M2MtaW1wb3J0LmxvZyIpCisgICAgaWYgbm90KG9zLnBhdGguZXhpc3RzKGltcG9ydExv
Z0ZpbGUpKToKKyAgICAgICAgcmV0dXJuCisgICAgCisgICAgaW1wb3J0TG9nID0gb3BlbihpbXBv
cnRMb2dGaWxlLCAncicpCisgICAgY29udGVudHMgPSBpbXBvcnRMb2cucmVhZGxpbmVzKCkKKyAg
ICAKKyAgICAjIFB1bGwgb3V0IHRoZSBsaXN0IG9mIGZpbGVzIGZyb20gdGhlIHByZXZpb3VzIGlt
cG9ydAorICAgIGlmICJMaXN0IG9mIGZpbGVzXG4iIGluIGNvbnRlbnRzOgorICAgICAgICBsaXN0
SWR4ID0gY29udGVudHMuaW5kZXgoJ0xpc3Qgb2YgZmlsZXM6XG4nKSArIDEKKyAgICAgICAgcHJl
dmlvdXNMaXN0ID0gY29udGVudHNbbGlzdElkeDpdCisgICAgICAgIHByZXZpb3VzTGlzdCA9IG1h
cChsYW1iZGEgczogcy5zdHJpcCgpLCBwcmV2aW91c0xpc3QpCisgICAgICAgIAorICAgIGRlbGV0
ZWRGaWxlcyA9IHNldChwcmV2aW91c0xpc3QpIC0gc2V0KG5ld0ZpbGVMaXN0KQorICAgICAgCisg
ICAgIyBMb29wIHRocm91Z2ggYW5kIHJlbW92ZSB0aGVtIGFsbAorICAgIGZvciBmaWxlIGluIGRl
bGV0ZWRGaWxlczoKKyAgICAgICAgbG9nKCdEZWxldGluZyBmaWxlIHJlbW92ZWQgZnJvbSB0aGUg
VzNDIHJlcG86JyArIGZpbGUpCisgICAgICAgIGZpbGUgPSBvcy5wYXRoLmpvaW4od2Via2l0X2Rp
ciwgZmlsZSkKKyAgICAgICAgb3MucmVtb3ZlKGZpbGUpCisgICAgICAgIAorICAgIGltcG9ydExv
Zy5jbG9zZSgpCisgICAgICAgIAorZGVmIHdyaXRlSW1wb3J0TG9nKGRpclBhdGgsIGZpbGVMaXN0
KToKKyAgICAKKyAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorCisgICAgIyBDcmVh
dGUgYSBsb2cgb2YgdGhpcyBpbXBvcnQgd2l0aCBhbGwgc29ydHMgb2YgZ29vZCBpbmZvcm1hdGlv
bgorICAgIGltcG9ydExvZyA9IG9wZW4ob3MucGF0aC5qb2luKGRpclBhdGgsICd3M2MtaW1wb3J0
LmxvZycpLCAndycpCisgICAgaW1wb3J0TG9nLndyaXRlKCdUaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS5cbicpCisgICAgaW1w
b3J0TG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYmtp
dC4gSW5zdGVhZCwgcHVzaCBjaGFuZ2VzIHRvIHRoZSBXM0MgQ1NTIHJlcG86XG5cbicpCisgICAg
aW1wb3J0TG9nLndyaXRlKCdodHRwOi8vaGcuY3Nzd2cub3JnL3Rlc3RcblxuJykKKyAgICBpbXBv
cnRMb2cud3JpdGUoJ1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2Via2l0IHRvIHJlaW1wb3J0XG5cbicpCisgICAgaW1wb3J0TG9nLndyaXRlKCdEbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGVcblxuJykKKyAgICBpbXBvcnRMb2cud3JpdGUoJy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLVxuXG4nKQorICAgIGltcG9ydExvZy53cml0ZSgnTGFzdCBJbXBvcnQ6ICcg
KyBub3cuc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNIikgKyAnXG4nKQorICAgIGltcG9ydExvZy53
cml0ZSgnVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQ6ICcgKyBjaGFuZ2VzZXQpCisgICAgaW1wb3J0
TG9nLndyaXRlKCdUZXN0IHN0YXR1cyBhdCB0aW1lIG9mIGltcG9ydDogJyArIHRlc3Rfc3RhdHVz
KQorICAgIAorICAgIGltcG9ydExvZy53cml0ZSgnXG5cbkxpc3Qgb2YgZmlsZXM6XG4nKQorICAg
IGZvciBmaWxlIGluIGZpbGVMaXN0OgorICAgICAgICBpbXBvcnRMb2cud3JpdGUoZmlsZSArICdc
bicpCisgICAgICAgIAorICAgIGltcG9ydExvZy5jbG9zZSgpCisKKworZGVmIHZlcmJvc2UobXNn
KToKKyAgICBpZiBhbnkoeCBpbiBvcHRpb25zIGZvciB4IGluIFsnLXYnLCAnLS12ZXJib3NlJ10p
OgorICAgICAgICBzdGFtcCA9IHN5cy5fZ2V0ZnJhbWUoMSkuZl9jb2RlLmNvX25hbWUgKyIoKToi
KyBzdHIoc3lzLl9nZXRmcmFtZSgxKS5mX2xpbmVubykgKyI6ICIKKyAgICAgICAgbG9nKHN0YW1w
ICsgbXNnKQorCitkZWYgbG9nKG1zZyk6CisgICAgcHJpbnQgbXNnCisgICAgCisKK2RlZiBkdW1w
TWFuaWZlc3QobWFuaWZlc3QpOgorICAgIHZlcmJvc2UoIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMgTUFOSUZFU1QgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKQorICAgIAorICAg
IHZlcmJvc2UoIlByZWZpeGVkIHByb3BlcnRpZXM6IikKKyAgICBmb3IgcHJlZml4IGluIG1hbmlm
ZXN0WydwcmVmaXhlcyddOgorICAgICAgICB2ZXJib3NlKHByZWZpeCkKKyAgICAgICAgCisgICAg
dmVyYm9zZSgiICIpCisgICAgCisgICAgdmVyYm9zZSgiUmVmdGVzdHM6IikKKyAgICBmb3IgcmVm
dGVzdCBpbiBtYW5pZmVzdFsncmVmdGVzdHMnXToKKyAgICAgICAgdmVyYm9zZSgieyIpCisgICAg
ICAgIHZlcmJvc2UoIiAgICIgKyByZWZ0ZXN0WyJ0ZXN0Il0pCisgICAgICAgIHZlcmJvc2UoIiAg
ICIgKyByZWZ0ZXN0WyJyZWZlcmVuY2UiXSkKKyAgICAgICAgdmVyYm9zZSgiICAgIiArIHJlZnRl
c3RbInR5cGUiXSkKKyAgICAgICAgdmVyYm9zZSgifSIpCisgICAgCisgICAgdmVyYm9zZSgiIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyIpCisKKworCittYWluKCkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192044</attachid>
            <date>2013-03-07 10:46:07 -0800</date>
            <delta_ts>2013-03-07 17:00:06 -0800</delta_ts>
            <desc>Fixed changelog - added newlines</desc>
            <filename>111513.patch</filename>
            <type>text/plain</type>
            <size>26789</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNmRk
MzhiLi4yMTJiYmFkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTMtMDMtMDYgIFJlYmVjY2EgSGF1Y2sgIDxyaGF1
Y2tAYWRvYmUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgdHdvIG5ldyBzY3JpcHRzIHRvIFRvb2xzL1NjcmlwdHMuIFRoZSBtYWluIHNj
cmlwdCwgJ2ltcG9ydC13M2MtdGVzdHMnLCB3YWxrcyBhIHRyZWUgb2YgVzNDIENTUworICAgICAg
ICB0ZXN0cyBhbmQgZG9lcyByZWZ0ZXN0IGNvbnZlcnNpb24sIHBhdGggZml4aW5nLCBwcmVmaXhp
bmcsIGFuZCBmaWxlIGNvcHkuIEl0IGNvbnN1bWVzIGEgbWFuaWZlc3QgZmlsZSB0aGF0IGlzCisg
ICAgICAgIGdlbmVyYXRlZCBieSB0aGUgc2Vjb25kIHNjcmlwdCBoZXJlLCAnZ2VuZXJhdGUtdzNj
LXRlc3RzdWl0ZS1tYW5pZmVzdCcuIFRoaXMgc2NyaXB0IHdhbGtzIGEgZGlyZWN0b3J5IHRyZWUs
CisgICAgICAgIHNlYXJjaGVzIGZvciByZWZ0ZXN0cywgYnVpbGRzIHRoZSBsaXN0IG9mIHRlc3Q6
cmVmZXJlbmNlIGZpbGUgbWFwcGluZ3MsIGFuZCBzdG9yZXMgdGhlbSBpbiBhIHRlc3RzdWl0ZS5t
ZiBmaWxlCisgICAgICAgIGluIGVhY2ggZGlyZWN0b3J5LiAgT25lIG1hbnVhbCBzdGVwIGlzIHJl
cXVpcmVkIGFmdGVyIHRoZSBtYW5pZmVzdCBpcyBnZW5lcmF0ZWQgYW5kIHRoYXQgaXMgdG8gYWRk
IHRvIGl0IHRoZQorICAgICAgICBsaXN0IG9mIGFueSBDU1MgcHJvcGVydGllcyB0aGF0IHJlcXVp
cmUgdmVuZG9yIHByZWZpeGVzLgorCisgICAgICAgIFRoZSBtYW5pZmVzdCBnZW5lcmF0aW9uIHNj
cmlwdCBzdXBwb3J0cyBhIGNvdXBsZSBvZiB0aGluZ3MgdGhhdCBXZWJraXQgZG9lcyBub3QgLSBt
YW55Om9uZSB0ZXN0OnJlZmVyZW5jZQorICAgICAgICBtYXBwaW5ncyBhbmQgbWlzbWF0Y2ggcmVm
ZXJlbmNlcy4gVGhlc2UgYXJlIHByZXNlbnQgaW4gc29tZSBvZiB0aGUgVzNDIHN1aXRlcyBhbmQg
dGhlc2UgbWFwcGluZ3MgY2FwdHVyZWQgaW4KKyAgICAgICAgdGhlIG1hbmlmZXN0LiBIb3dldmVy
LCB0aGUgaW1wb3J0IHNjcmlwdCBpZ25vcmVzIGFuZCB3YXJucyB3aGVuIHRoZXNlIGFyZSBlbmNv
dW50ZXJlZC4gCisKKyAgICAgICAgVGhlIHRlc3RzIGFyZSBpbXBvcnRlZCBpbnRvIExheW91dFRl
c3RzL1t0ZXN0X2FyZWFdL2ltcG9ydGVkLXczYyBhbmQgYSB3M2MtaW1wb3J0LmxvZyBmaWxlIGlz
IGRyb3BwZWQgaW4gZWFjaAorICAgICAgICBpbXBvcnRlZCBkaXJlY3Rvcnkgd2l0aCB0aGUgZGF0
ZXN0YW1wLCB0aGUgVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQgKGlmIGF2YWlsYWJsZSksIHRoZSBh
cHByb3ZlZC9zdWJtaXR0ZWQgCisgICAgICAgIHN0YXR1cyBvZiB0aGUgdGVzdHMsIHRoZSBsaXN0
IG9mIGZpbGVzIGltcG9ydGVkLCBhbmQgZ3VpZGFuY2Ugb24gZnV0dXJlIG1vZGlmaWNhdGlvbnMg
YW5kIG1haW50ZW5hbmNlLiBUaGlzIGxvZworICAgICAgICBpcyByZWFkIG9uIHN1YnNlcXVlbnQg
aW1wb3J0cyBpZGVudGlmeSBhbnkgZmlsZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRo
ZSBXM0MgcmVwbyBzaW5jZSB0aGUgbGFzdAorICAgICAgICBpbXBvcnQuIFRoaXMgc2NyaXB0IHJl
bW92ZXMgdGhlIGZpbGVzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGluIHRoZSBXM0Mgc291cmNlLgor
CisgICAgICAgIE5vdGU6IFRoZSByZWFzb24gdGhlc2UgYXJlIHR3byBzY3JpcHRzIGFuZCBub3Qg
b25lIGlzIGJlY2F1c2UgSSBvcmlnaW5hbGx5IHdhcyBub3Qgc3VyZSB0aGUgbWFuaWZlc3QgZ2Vu
ZXJhdGlvbgorICAgICAgICBzY3JpcHQgYmVsb25nZWQgaW4gV2Via2l0IGFzIGl0IGlzIG5vdCBX
ZWJraXQtc3BlY2lmaWMuIEFuIGFsdGVybmF0ZSBsb2NhdGlvbiBmb3IgdGhpcyB3b3VsZCBiZSBp
biB0aGUgVzNDCisgICAgICAgIENTUyByZXBvc2l0b3J5IHVuZGVyIHRoZWlyICJ0b29scyIuICBX
aGV0aGVyIHRoZXkncmUgdHdvIHNjcmlwdHMgb3Igb25lLCB0aGlzIGltcG9ydCBwcm9jZXNzIHdv
dWxkIHN0aWxsCisgICAgICAgIGJlIGEgMiBzdGVwIHByb2Nlc3MgdG8gYnVpbGQgdGhlIGxpc3Qg
b2YgcHJlZml4ZWQgcHJvcGVydGllcy4gQW4gYWx0ZXJuYXRpdmUgdG8gdGhpcyB3b3VsZCBiZSB0
byBjb25zaWRlcgorICAgICAgICBrZWVwaW5nIGEgaGFyZGNvZGVkIGxpc3Qgb2YgYWxsIHByb3Bl
cnRpZXMgaW4gV2Via2l0IHRoYXQgcmVxdWlyZSBwcmVmaXhlcyAoaWYgaXQgZG9lc24ndCBleGlz
dCBhbHJlYWR5PykuCisgICAgICAgIEknZCBsaWtlIHRvIGhlYXIgdGhlIHJldmlld2VyJ3MgdGhv
dWdodHMgb24gdGhpcy4gQSBnb29kIGNhc2UgY2FuIHByb2JhYmx5IGJlIG1hZGUgZm9yIGNvbWJp
bmluZyB0aGUgdHdvLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS13M2MtdGVzdHN1aXRl
LW1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKFJlZlBhcnNlcik6CisgICAgICAgIChSZWZQYXJz
ZXIuX19pbml0X18pOgorICAgICAgICAoUmVmUGFyc2VyLmhhbmRsZV9zdGFydHRhZyk6CisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKHVzYWdlKToKKyAgICAgICAgKHBhcnNlQXJncyk6CisgICAg
ICAgIChzY2FuVGVzdERpcik6CisgICAgICAgIChzaG91bGRJZ25vcmUpOgorICAgICAgICAoZmlu
ZFJlZmVyZW5jZXMpOgorICAgICAgICAod3JpdGVNYW5pZmVzdCk6CisgICAgICAgICogU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAocGFy
c2VBcmdzKToKKyAgICAgICAgKHNob3dVc2FnZSk6CisgICAgICAgIChtYWtlRGVzdERpcik6Cisg
ICAgICAgIChnZXRDaGFuZ2VzZXQpOgorICAgICAgICAoZ2V0VGVzdFN0YXR1cyk6CisgICAgICAg
IChzY2FuVGVzdERpcik6CisgICAgICAgIChyZWFkTWFuaWZlc3QpOgorICAgICAgICAoZ2V0UHJl
Zml4ZXMpOgorICAgICAgICAoZ2V0UmVmdGVzdHMpOgorICAgICAgICAoaW1wb3J0VGVzdHMpOgor
ICAgICAgICAocmVtb3ZlRGVsZXRlZEZpbGVzKToKKyAgICAgICAgKHdyaXRlSW1wb3J0TG9nKToK
KyAgICAgICAgKHZlcmJvc2UpOgorICAgICAgICAobG9nKToKKyAgICAgICAgKGR1bXBNYW5pZmVz
dCk6CisKIDIwMTMtMDMtMDYgIEp1bGllIFBhcmVudCAgPGpwYXJlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIERhc2hib2FyZCBjbGVhbnVwOiBNb3ZlIGFsbCBkYXNoYm9hcmQgdWkgcmVsYXRl
ZCBjb2RlIGludG8gdWkuanMuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLXcz
Yy10ZXN0c3VpdGUtbWFuaWZlc3QgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLXczYy10ZXN0c3Vp
dGUtbWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2I5MTBlZAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtdzNjLXRlc3RzdWl0ZS1t
YW5pZmVzdApAQCAtMCwwICsxLDE0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
VGhpcyBzY3JpcHQgZ2VuZXJhdGVzIG1hbmlmZXN0IGZpbGVzIGZvciBhIGRpcmVjdG9yeSB0cmVl
IG9mIFczQyB0ZXN0cy4KKyMgCisjIFlvdSBtdXN0IGhhdmUgY2hlY2tlZCBvdXQgdGhlIFczQyBy
ZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUuCisjCisjIFRoaXMgc2NyaXB0IHdhbGtzIGEg
ZGlyZWN0b3J5IHRyZWUgY29udGFpbmluZyBXM0MgdGVzdHMgYW5kIHNlYXJjaGluZyBmb3IgcmVm
dGVzdHMuIEl0IGNyZWF0ZXMgYSB0ZXN0c3VpdGUubWYgZmlsZSAKKyMgaW4gZWFjaCBkaXJlY3Rv
cnkgb2YgdGVzdHMsIHdoaWNoIGNvbnRhaW5zIGEgbGlzdCBvZiB0ZXN0OnJlZiBmaWxlIG1hcHBp
bmdzIGZvdW5kIGluIHRoZSB0ZXN0IGZpbGVzJyBtZXRhZGF0YS4gIFRoZSAKKyMgbWFuaWZlc3Qg
ZmlsZSBpcyBjb25zdW1lZCBieSB0aGUgY29tcGFuaW9uIHNjcmlwdCBpbXBvcnQtdzNjLXRlc3Rz
LiBVcG9uIGNvbXBsZXRpb24sIHRoZXJlIGlzIG9uZSBtYW51YWwgc3RlcAorIyB0byBkZWZpbmUg
dGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHByZWZpeGVzLgorIyAKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
aW1wb3J0IG9zLCBzeXMKK2Zyb20gSFRNTFBhcnNlciBpbXBvcnQgSFRNTFBhcnNlcgorCitjbGFz
cyBSZWZQYXJzZXIoSFRNTFBhcnNlcik6CisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgor
ICAgICAgICBIVE1MUGFyc2VyLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYubWF0Y2hlcyA9
IFtdCisgICAgICAgIHNlbGYubWlzbWF0Y2hlcyA9IFtdCisgICAgCisgICAgZGVmIGhhbmRsZV9z
dGFydHRhZyhzZWxmLCB0YWcsIGF0dHJzKToKKyAgICAgICAgaWYodGFnID09ICJsaW5rIik6Cisg
ICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oYXR0cnMpKToKKyAgICAgICAgICAgICAgICBp
ZiBhdHRyc1tpXVswXSA9PSAicmVsIiBhbmQgYXR0cnNbaV1bMV0gPT0gIm1hdGNoIjoKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVzLmFwcGVuZChhdHRyc1tpKzFdWzFdKQorICAgICAg
ICAgICAgICAgIGlmIGF0dHJzW2ldWzBdID09ICJyZWwiIGFuZCBhdHRyc1tpXVsxXSA9PSAibWlz
bWF0Y2giOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm1pc21hdGNoZXMuYXBwZW5kKGF0dHJz
W2krMV1bMV0pCisgICAgCit0ZXN0UGF0aCA9ICcnCisKK2RlZiBtYWluKCk6CisKKyAgICBwYXJz
ZUFyZ3MoKQorICAgIHNjYW5UZXN0RGlyKCkKKyAgICBwcmludCAnJworICAgIHByaW50ICJNYW5p
ZmVzdChzKSBhcmUgY3JlYXRlZCBmb3IgZWFjaCBkaXJlY3RvcnkgY29udGFpbmluZyB0ZXN0cy4g
SWYgdGhlcmUgYXJlIENTUyBwcm9wZXJ0aWVzIHRoYXQgcmVxdWlyZSB2ZW5kb3IiCisgICAgcHJp
bnQgInByZWZpeGVzIGluIHRoZSB0ZXN0IHN1aXRlLCBvcGVuIHRoZSBtYW5pZmVzdCwgdW5jb21t
ZW50IHByZWZpeGVkLnByb3BlcnRpZXMsIGFuZCBzZXQgaXRzIHZhbHVlIgorICAgIHByaW50ICcn
CisgICAgCitkZWYgdXNhZ2UoKToKKyAgICBwcmludCJVU0FHRTogZ2VuZXJhdGUtbWFuaWZlc3Qg
W3czY190ZXN0X2Rpcl0iCisgICAgc3lzLmV4aXQoKQorCitkZWYgcGFyc2VBcmdzKCk6CisgICAg
aWYgKGxlbihzeXMuYXJndikgPCAyKToKKyAgICAgICAgdXNhZ2UoKQorICAgIGVsc2U6CisgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzeXMuYXJndlsxXSk6CisgICAgICAgICAgICAgc3lz
LmV4aXQoJ0VSUk9SOiBTb3VyY2UgZGlyICVzIG5vdCBmb3VuZCEnICUgc3lzLmFyZ3ZbMV0pCisg
ICAgICAgIAorICAgICAgICBnbG9iYWwgdGVzdFBhdGgKKyAgICAgICAgdGVzdFBhdGggPSBzeXMu
YXJndlsxXQorICAgICAgICAKK2RlZiBzY2FuVGVzdERpcigpOgorCisgICAgaWdub3JlRGlycyA9
IFsicmVmZXJlbmNlIiwgIi5naXQiLCAic3VwcG9ydCIsICJjc3MiLCAiaW1nIiwgImFzc2V0cyIs
ICJqcyJdCisgICAgaWdub3JlRmlsZXMgPSBbIi1yZWYiLCAiLW5vdHJlZiIsICIuY3NzIiwgIi5q
cyIsICIucG5nIiwgIi5qcGciLCAiLmpwZWciLCAiLkRTX1N0b3JlIiwgIi5tZiIsICIubG9nIl0K
KyAgICAKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayh0ZXN0UGF0aCk6Cisg
ICAgICAgIAorICAgICAgICByZWZ0ZXN0TGlzdCA9IFtdCisKKyAgICAgICAgcHJpbnQgIlNjYW5u
aW5nOiAiICsgcm9vdAorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6CisgICAgICAgICAg
ICBpZiBub3Qgc2hvdWxkSWdub3JlKGZpbGVuYW1lLCBpZ25vcmVGaWxlcyk6CisgICAgICAgICAg
ICAgICAgcmVmRmlsZXMgPSBmaW5kUmVmZXJlbmNlcyhvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5h
bWUpKQorICAgICAgICAgICAgICAgIGlmIGxlbihyZWZGaWxlcykgIT0gMDoKKyAgICAgICAgICAg
ICAgICAgICAgcmVmdGVzdExpc3QuZXh0ZW5kKHJlZkZpbGVzKQorICAgICAgICAgICAgICAgICNl
bHNlOgorICAgICAgICAgICAgICAgICMgICAgcHJpbnQgIk5vIHJlZmVyZW5jZSBmaWxlcyBmb3Vu
ZCBpbiAiICsgZmlsZW5hbWUKKyAgICAgICAgCisgICAgICAgIGlmIGxlbihyZWZ0ZXN0TGlzdCkg
IT0gMDoKKyAgICAgICAgICAgIHdyaXRlTWFuaWZlc3Qocm9vdCwgcmVmdGVzdExpc3QpCisgICAg
ICAgIAorICAgICAgICBmb3IgZGlybmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgaWYgc2hvdWxk
SWdub3JlKGRpcm5hbWUsIGlnbm9yZURpcnMpOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3Zl
KGRpcm5hbWUpCisgICAgCitkZWYgc2hvdWxkSWdub3JlKGxpc3RJdGVtLCBpZ25vcmVMaXN0KToK
KyAgICAKKyAgICBmb3IgaWdub3JlIGluIGlnbm9yZUxpc3Q6CisgICAgICAgIGlmIGlnbm9yZSBp
biBsaXN0SXRlbToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAKKyAgICBy
ZXR1cm4gRmFsc2UKKworZGVmIGZpbmRSZWZlcmVuY2VzKHRlc3RGaWxlUGF0aCk6CisgICAgCisg
ICAgdGVzdEZpbGUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3RGaWxlUGF0aCkKKworICAgICNwcmlu
dCAiUmVhZGluZyAiICsgdGVzdEZpbGUKKyAgICBmID0gb3Blbih0ZXN0RmlsZVBhdGgpCisgICAg
ZG9jID0gZi5yZWFkKCkKKyAgICBmLmNsb3NlKCkKKyAgICAKKyAgICBtZHBhcnNlciA9IFJlZlBh
cnNlcigpCisgICAgbWRwYXJzZXIuZmVlZChkb2MpCisgICAgbWRwYXJzZXIuY2xvc2UoKQorCisg
ICAgcmVmZXJlbmNlcyA9IFtdCisgICAgCisgICAgaWYgbGVuKG1kcGFyc2VyLm1hdGNoZXMpICE9
IDA6CisgICAgICAgIGZvciBtYXRjaCBpbiBtZHBhcnNlci5tYXRjaGVzOgorICAgICAgICAgICAg
cmVmZXJlbmNlcy5hcHBlbmQoICgiPT0iLCB0ZXN0RmlsZSwgbWF0Y2gpICkKKworICAgIGlmIGxl
bihtZHBhcnNlci5taXNtYXRjaGVzKSAhPSAwOgorICAgICAgICBmb3IgbWlzbWF0Y2ggaW4gbWRw
YXJzZXIubWlzbWF0Y2hlczoKKyAgICAgICAgICAgIHJlZmVyZW5jZXMuYXBwZW5kKCAoIiE9Iiwg
dGVzdEZpbGUsIG1pc21hdGNoKSApCisgICAgCisgICAgcmV0dXJuIHJlZmVyZW5jZXMKKyAgICAK
K2RlZiB3cml0ZU1hbmlmZXN0KHRlc3REaXIsIHJlZnRlc3RMaXN0KToKKyAgICAKKyAgICBtYW5p
ZmVzdEZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdERpciwgInRlc3RzdWl0ZS5tZiIpCisgICAgCisg
ICAgIyBUT0RPIFNob3VsZCBJIGFkZCBhIGZsYWcgdG8gbWFrZSBhdXRvbWF0aWNhbGx5IG92ZXJ3
cml0aW5nIG9wdGlvbmFsPworICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0RmlsZSk6Cisg
ICAgICAgIG9zLnJlbW92ZShtYW5pZmVzdEZpbGUpCisgICAgICAgIHByaW50ICJSZXdyaXRpbmcg
ZXhpc3RpbmcgbWFuaWZlc3Q6ICIgKyBtYW5pZmVzdEZpbGUKKyAgICBlbHNlOiAgICAKKyAgICAg
ICAgcHJpbnQgIkdlbmVyYXRpbmcgbWFuaWZlc3Q6ICIgKyBtYW5pZmVzdEZpbGUKKyAgICBmID0g
b3BlbihtYW5pZmVzdEZpbGUsICd3JykKKyAgICAKKyAgICAjIEFkZCAoY29tbWVudGVkIG91dCkg
cHJvcGVydHkgZm9yIHByZWZpeGVzCisgICAgZi53cml0ZSgiIyMgU2V0IHRoZSB2YWx1ZSBvZiBw
cmVmaXhlZC5wcm9wZXJ0aWVzIHRvIGJlIGxpc3Qgb2YgY29tbWEgZGVsaW1pdGVkIENTUyBwcm9w
ZXJ0aWVzXG4iKQorICAgIGYud3JpdGUoIiMjIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXMuIFVu
Y29tbWVudCB0aGlzIHByb3BlcnR5IGlmIGl0J3MgbmVlZGVkLiBTZWUgZXhhbXBsZSBiZWxvdy5c
biIpCisgICAgZi53cml0ZSgiI3ByZWZpeGVkLnByb3BlcnRpZXMgPSBmbG93LWludG8sIGZsb3ct
ZnJvbVxuXG5cbiIpCisgICAgCisgICAgIyBXcml0ZSBvdXQgdGhlIHJlZnMKKyAgICBpZiBsZW4o
cmVmdGVzdExpc3QpID09IDA6CisgICAgICAgIGYud3JpdGUoIiMjIE5vIFJlZnRlc3RzIGluIHRo
aXMgc3VpdGVcblxuIikKKyAgICBlbHNlOgorICAgICAgICBmLndyaXRlKCIjIyBSZWZ0ZXN0czpc
blxuIikKKyAgICBmb3IgcmVmdGVzdCBpbiByZWZ0ZXN0TGlzdDoKKyAgICAgICAgZi53cml0ZSgg
cmVmdGVzdFswXSArIiAiKyByZWZ0ZXN0WzFdICsiICIrIHJlZnRlc3RbMl0gKyJcbiIpCisgICAg
ICAgIAorICAgIGYuY2xvc2UoKQorCittYWluKCkKKworCisgICAgClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGIv
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLjAzYzNlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMKQEAgLTAsMCArMSw0NjEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IworIyBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGlyZWN0b3J5IG9mIFczQyBDU1MgdGVzdHMgaW50
byBXZWJLaXQuCisjCisjIFlvdSBtdXN0IGhhdmUgY2hlY2tlZCBvdXQgdGhlIFczQyByZXBvc2l0
b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUuCisjCisjIFRoaXMgc2NyaXB0IHdpbGwgaW1wb3J0IHRo
ZSB0ZXN0cyBpbnRvIExheW91dFRlc3RzL1t0ZXN0X2FyZWFdL2ltcG9ydGVkLXczYyBUaGUgc2Ny
aXB0IHJlYWRzIGluIGEgbWFuaWZlc3QKKyMgZmlsZSB0aGF0IGZvbGxvd3MgdGhlIGZvcm1hdCBh
cyBkZXNjcmliZWQgb24gdGhlIENTU1dHIHdpa2k6CisjCisjICAgIGh0dHA6Ly93aWtpLmNzc3dn
Lm9yZy90ZXN0L3JlZnRlc3QjdGhlLXJlZnRlc3QtbWFuaWZlc3QKKyMKKyMgTm90ZTogVGhlIENT
U1dHIGhhcyBkZXByZWNhdGVkIHRoaXMgbWFuaWZlc3QgaW4gZmF2b3IgZm9yIHVzaW5nIG1ldGFk
YXRhLCBidXQgc2luY2UgdGhlIAorIyAgICAgICBXZWJraXQgdGVzdCBoYXJuZXNzIGRvZXNuJ3Qg
c3VwcG9ydCByZWFkaW5nIG1ldGFkYXRhLCB0aGlzIGFuY2lsbGFyeSBmaWxlIGlzIG5lY2Vzc2Fy
eQorIyAgICAgICB0byBtYWludGFpbiB0aGUgY29ycmVjdCB0ZXN0OnJlZiBmaWxlIG1hcHBpbmdz
CisjCisjIFRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsIHBpZWNlIG9mIGluZm9ybWF0aW9uIGluIHRo
ZSBtYW5pZmVzdCB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBvcmlnaW4gZm9ybWF0IGRlZmluZWQK
KyMgb24gdGhlIHdpa2kgLSB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhl
IC13ZWJraXQgcHJlZml4LiBTaW5jZSB0ZXN0cyBjYW5ub3QgYmUgY2hlY2tlZCBpbnRvCisjIHRo
ZSBXM0MgcmVwb3NpdG9yeSB3aXRoIHByZWZpeGVzLCB0aGlzIGlzIGFsc28gbmVjZXNzYXJ5IHRv
IGhhdmUgaW4gdGhlIG1hbmlmZXN0LiBUaGlzIHNjcmlwdCBhbHNvIGhhbmRsZXMgCisjIHRoZSBw
cmVmaXhpbmcgdXBvbiBpbXBvcnQuCisjCisjIFRoZSBtYW5pZmVzdCBjYW4gYmUgZ2VuZXJhdGVk
IGJ5IHRoZSBjb21wYW5pb24gc2NyaXB0IGdlbmVyYXRlLXczYy10ZXN0c3VpdGUtbWFuaWZlc3Qu
IAorIyAKKyMgU2luY2UgdGhpcyBzY3JpcHQgaXMgZGVzaWduZWQgZm9yIHJldXNlIGFuZCBwZXJp
b2RpY2FsbHkgcmVmcmVzaGluZyBXM0MgdGVzdHMsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRv
IAorIyBvdmVyd3JpdGUgZmlsZXMgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmaWxl
cyBhcmUgdGhlIHNhbWUuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhIAor
IyBjb21tYW5kIGxpbmUgZmxhZy4KKyMKKyMgVGhlIGZpbmFsIHN0ZXAgaW4gdGhpcyBzY3JpcHQg
aXMgdG8gZHJvcCBhIHczYy1pbXBvcnQubG9nIGluIGVhY2ggaW1wb3J0ZWQgZGlyZWN0b3J5IHdp
dGggYSB0aW1lc3RhbXAsIAorIyB0aGUgVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQgaWYgYXZhaWxh
YmxlLCB0aGUgbGlzdCBvZiBpbXBvcnRlZCBmaWxlcywgYW5kIGd1aWRhbmNlIGZvciBmdXR1cmUg
dGVzdCBtb2RpZmljYXRpb24gCisjIGFuZCBtYWludGVuYW5jZS4gVGhpcyBsb2cgZmlsZSBpcyBy
ZWFkIG9uIHN1YnNlcXVlbnQgaW1wb3J0cyB0byBkZXRlcm1pbmUgaWYgZmlsZXMgaGF2ZSBiZWVu
IHJlbW92ZWQgCisjIGluIHRoZSBuZXdlciBjaGFuZ2VzZXRzLiAKKyMgCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgb3Ms
IHN5cywgc2h1dGlsLCByZSwgc3VicHJvY2VzcywgZGF0ZXRpbWUKKword2Via2l0X2RpciA9ICIi
Citzb3VyY2VfZGlyID0gIiIKK2Rlc3RfZGlyID0gIiIKK29wdGlvbnMgPSBbXQorcHJlZml4ZWRf
cHJvcHMgPSBbXQoraW1wb3J0TGlzdCA9IFtdCitza2lwTGlzdCA9IFtdCitjaGFuZ2VzZXQgPSAi
IgordGVzdF9zdGF0dXMgPSAiIgorCitkZWYgbWFpbigpOgorCisgICAgcGFyc2VBcmdzKCkKKyAg
ICBtYWtlRGVzdERpcigpCisgICAgZ2V0Q2hhbmdlc2V0KCkKKyAgICBnZXRUZXN0U3RhdHVzKCkK
KyAgICBzY2FuVGVzdERpcihzb3VyY2VfZGlyKQorICAgIGltcG9ydFRlc3RzKCkKKyAgICAKK2Rl
ZiBwYXJzZUFyZ3MoKToKKworICAgIGdsb2JhbCB3ZWJraXRfZGlyCisgICAgZ2xvYmFsIHNvdXJj
ZV9kaXIKKyAgICBnbG9iYWwgZGVzdF9kaXIKKyAgICBnbG9iYWwgb3B0aW9ucworCisgICAgIyBT
cGxpdCBmbGFncyBmcm9tIGFyZ3MKKyAgICBhcmdMaXN0ID0gW10KKyAgICBmb3IgYXJnIGluIHN5
cy5hcmd2OgorICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLScpOgorICAgICAgICAgICAgb3B0
aW9ucy5hcHBlbmQoYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXJnTGlzdC5hcHBl
bmQoYXJnKQorCisgICAgIyBDaGVjayBmb3IgcmVxdWlyZWQgYXJncworICAgIGlmIGxlbihhcmdM
aXN0KSA8IDM6CisgICAgICAgIHByaW50ICJFUlJPUjogTWlzc2luZyBhcmd1bWVudChzKSIKKyAg
ICAgICAgc2hvd1VzYWdlKCkKKworICAgICMgTWFrZSBzdXJlIHRoZSB3M2MgdGVzdCBkaXIgZXhp
c3RzCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFyZ0xpc3RbMV0pOgorICAgICAgICAgc3lz
LmV4aXQoJ0VSUk9SOiBTb3VyY2UgZGlyICVzIG5vdCBmb3VuZCEnICUgYXJnTGlzdFsxXSkKKyAg
ICAKKyAgICAjIE1ha2Ugc3VyZSB0aGUgd2Via2l0IHJvb3QgZGlyIGV4aXN0cworICAgIGlmIG5v
dCBvcy5wYXRoLmV4aXN0cyhhcmdMaXN0WzJdKToKKyAgICAgICAgIHN5cy5leGl0KCdFUlJPUjog
V2ViS2l0IGRpciAlcyBmb3VuZCEnICUgYXJnTGlzdFsyXSkKKyAgICAKKyAgICAjIENvbnN0cnVj
dCB0aGUgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZGlyCisgICAgc291cmNlX2RpciA9IGFyZ0xp
c3RbMV0ucnN0cmlwKCcvJykKKyAgICB3ZWJraXRfZGlyID0gYXJnTGlzdFsyXQorICAgIGRlc3Rf
ZGlyID0gb3MucGF0aC5qb2luKHdlYmtpdF9kaXIsICdMYXlvdXRUZXN0cycpCisgICAgCisgICAg
aWYgbGVuKGFyZ0xpc3QpID09IDQ6IAorICAgICAgICAjIElmIGEgdGVzdF9hcmVhIHdhcyBzcGVj
aWZpZWQsIHRoZW4gaXQgZ29lcyB1bmRlciBMYXlvdXRUZXN0cworICAgICAgICBkZXN0X2RpciA9
IG9zLnBhdGguam9pbihkZXN0X2RpciwgYXJnTGlzdFszXSkKKyAgICBlbHNlOgorICAgICAgICAj
IElmIG5vdCwgY3JlYXRlIGEgZGlyZWN0b3J5IHRoYXQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgY29u
dGFpbmluZyBkaXJlY3RvcnkKKyAgICAgICAgZGVzdF9kaXIgPSBvcy5wYXRoLmpvaW4oZGVzdF9k
aXIsIG9zLnBhdGguYmFzZW5hbWUoc291cmNlX2RpcikpCisgICAgICAgIAorICAgICMgRHJvcCBp
dCBhbGwgaW50byBhbiAnaW1wb3J0ZWQtdzNjJyBkaXIKKyAgICBkZXN0X2RpciA9IG9zLnBhdGgu
am9pbihkZXN0X2RpciwgJ2ltcG9ydGVkLXczYycpCisgICAgCisgICAgbG9nKCJUZXN0cyB3aWxs
IGJlIGltcG9ydGVkIGZyb206ICIgKyBzb3VyY2VfZGlyKSAKKworZGVmIHNob3dVc2FnZSgpOgor
ICAgIHByaW50ICcnCisgICAgcHJpbnQgJ1VTQUdFOiAlcyBbdzNjX3Rlc3RfZGlyXSBbd2Via2l0
X3Jvb3RdIFt0ZXN0X2FyZWFdJyAlIHN5cy5hcmd2WzBdCisgICAgcHJpbnQgJycKKyAgICBwcmlu
dCAnICAgICAgW3czY190ZXN0X2Rpcl0gICAgIC0gdGhlIHBhdGggdG8gdGhlIHNwZWNpZmljIGRp
cmVjdG9yeSBvZiB0ZXN0cyB0byBiZScKKyAgICBwcmludCAnICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW1wb3J0ZWQgaW50byBXZWJLaXQuIEFsbCBzdWJkaXJlY3RvcmllcyBvZiB0aGlzIHBh
dGgnCisgICAgcHJpbnQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgaW5jbHVk
ZWQgaW4gdGhlIGltcG9ydC4nCisgICAgcHJpbnQgJycKKyAgICBwcmludCAnICAgICAgW3dlYmtp
dF9yb290XSAgICAgIC0gdGhlIHBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIFdlYktpdCBjaGVja291
dCBkaXJlY3RvcnknCisgICAgcHJpbnQgJycKKyAgICBwcmludCAnICAgICAgW3Rlc3RfYXJlYV0g
ICAgICAgIC0gKE9wdGlvbmFsKSBUaGUgbmFtZSBvZiB0aGUgdGVzdGluZyBhcmVhIHVuZGVyIHdo
aWNoIHRoZXNlJworICAgIHByaW50ICcgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IGZh
bGwuIFRoZSB0ZXN0cyB3aWxsIGJlIGltcG9ydGVkIGludG8gJworICAgIHByaW50ICcgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbd2Via2l0X3Jvb3RdL0xheW91dFRlc3RzL1t0ZXN0IGFyZWFd
L2ltcG9ydGVkLXczYy4gQSBzdWJkaXJlY3RvcnknCisgICAgcHJpbnQgJyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ5IHRoZSBzYW1lIG5hbWUgYXMgdGhlIG9yaWdpbmFsIGNvbnRhaW5pbmcg
ZGlyZWN0b3J5IHdpbGwgYmUgaGVyZScKKyAgICBwcmludCAnICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIFt0ZXN0IGFyZWFdIGRpcmVjdG9yeSB3aWxsIHRh
a2UgdGhlIG5hbWUgb2YnCisgICAgcHJpbnQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBvcmlnaW5hbCBjb250YWluaW5nIGRpcmVjdG9yeScKKyAgICBwcmludCAnJworICAgIHByaW50
ICcgICAgICAtbiwgLS1uby1vdmVyd3JpdGUgLSBGbGFnIHRvIHByZXZlbnQgZHVwbGljYXRlIHRl
c3QgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBleGlzdGluZyAnCisgICAgcHJpbnQgJyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RzLiBCeSBkZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3Zlcndy
aXR0ZW4gYXMgdGhpcyBzY3JpcHQgaXMgJworICAgIHByaW50ICcgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHBlcmlvZGljYWxseSByZWZyZXNoIHRlc3Rz
IGZyb20gdGhlIFczQyByZXBvJworICAgIHByaW50ICcnCisgICAgcHJpbnQgJyAgICAgIC12LCAt
LXZlcmJvc2UgICAgICAtIFZlcmJvc2Ugb3V0cHV0JworICAgIHByaW50ICcnCisgICAgcHJpbnQg
JyAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4
aXQnCisgICAgcHJpbnQgJycKKyAgICBwcmludCAnRXhhbXBsZXM6JworICAgIHByaW50ICcgICAg
ICAgJCAuL2ltcG9ydC13M2MtdGVzdHMgfi9XM0MvY29udHJpYnV0b3JzL2Fkb2JlL3N1Ym1pdHRl
ZC9yZWdpb25zL3NlbGVjdGlvbiB+L1dlYktpdCByZWdpb25zJworICAgIHByaW50ICcgICAgICAg
V2lsbCBpbXBvcnQgdGhlIHRlc3RzIGludG8gfi9XZWJLaXQvTGF5b3V0VGVzdHMvcmVnaW9ucy9p
bXBvcnRlZC13M2Mvc2VsZWN0aW9uJworICAgIHByaW50ICcnCisgICAgcHJpbnQgJyAgICAgICAk
IC4vaW1wb3J0LXczYy10ZXN0cyB+L1czQy9jb250cmlidXRvcnMvYWRvYmUvc3VibWl0dGVkL3Jl
Z2lvbnMgfi9XZWJLaXQnCisgICAgcHJpbnQgJyAgICAgICBXaWxsIGltcG9ydCB0aGUgdGVzdHMg
aW50byB+L1dlYktpdC9MYXlvdXRUZXN0cy9yZWdpb25zL2ltcG9ydGVkLXczYycKKyAgICBwcmlu
dCAnJworICAgIHByaW50ICcgICAgICAgSW4gYm90aCBjYXNlcywgaWYgdGhlIFwnc2VsZWN0aW9u
XCcgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLCBuZXcgdGVzdHMgd2lsbCBiZSBhZGRlZCB0byBp
dCBhbmQgdGVzdHMgd2l0aCAnCisgICAgcHJpbnQgJyAgICAgICB0aGUgc2FtZSBuYW1lIHdpbGwg
YmUgb3ZlcndyaXR0ZW4gdW5sZXNzIHRoZSAtLW5vLW92ZXJ3cml0ZSBhcmd1bWVudCBpcyBzcGVj
aWZpZWQnCisgICAgcHJpbnQgJycKKyAgICBzeXMuZXhpdCgxKQorICAgIAorICAgIAorZGVmIG1h
a2VEZXN0RGlyKCk6CisgICAgCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3RfZGlyKToK
KyAgICAgICAgbG9nKCJDcmVhdGluZyBkZXN0aW5hdGlvbiBkaXI6ICIgKyBkZXN0X2RpcikgCisg
ICAgICAgIG9zLm1ha2VkaXJzKGRlc3RfZGlyKQorICAgICAgICAKKyAgICBsb2coIlRlc3RzIHdp
bGwgYmUgaW1wb3J0ZWQgaW50bzogIiArIGRlc3RfZGlyKSAKKyAgICAKKyAgICAKK2RlZiBnZXRD
aGFuZ2VzZXQoKToKKyAgICAKKyAgICBnbG9iYWwgY2hhbmdlc2V0CisgICAgCisgICAgdHJ5Ogor
ICAgICAgICAjIEFzc3VtaW5nIE1lcmN1cmlhbCBpcyBzZXQgdXAgb24gdGhlIHN5c3RlbSwgdHJ5
IHRvIGdyYWIgdGhlIGNoYW5nZXNldCB3ZSdyZSBpbXBvcnRpbmcKKyAgICAgICAgcHJvYyA9IHN1
YnByb2Nlc3MuUG9wZW4oWyJoZyIsICJ0aXAiXSwgZW52PW9zLmVudmlyb24sIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUsIGN3ZD1zb3VyY2VfZGlyKQorICAgICAgICBjaGFuZ2VzZXQgPSBwcm9jLnN0
ZG91dC5yZWFkbGluZXMoKVswXQorICAgICAgICBjaGFuZ2VzZXQgPSBjaGFuZ2VzZXQuc3BsaXQo
ImNoYW5nZXNldDoiKVsxXQorICAgIGV4Y2VwdDoKKyAgICAgICAgIyBPaCB3ZWxsLCB3ZSB0cmll
ZAorICAgICAgICBjaGFuZ2VzZXQgPSAiTm90IEF2YWlsYWJsZSIKKyAgICAgICAgCitkZWYgZ2V0
VGVzdFN0YXR1cygpOgorICAgIAorICAgIGdsb2JhbCB0ZXN0X3N0YXR1cworICAgIAorICAgICMg
SWYgdGhlc2UgdGVzdHMgYXJlIGFwcHJvdmVkLCB0aGUgd29yZCB3aWxsIGJlIGluIHRoZSBwYXRo
IChkdWgpCisgICAgaWYgImFwcHJvdmVkIiBpbiBzb3VyY2VfZGlyOgorICAgICAgICB0ZXN0X3N0
YXR1cyA9ICJBcHByb3ZlZCIKKyAgICBlbGlmICJzdWJtaXR0ZWQiIGluIHNvdXJjZV9kaXI6Cisg
ICAgICAgICMgRGl0dG8gZm9yIHN1Ym1pdHRlZAorICAgICAgICB0ZXN0X3N0YXR1cyA9ICJTdWJt
aXR0ZWQsIEF3YWl0aW5nIFJldmlldyIKKyAgICBlbHNlOgorICAgICAgICAjIFRoaXMgaXMgcHJv
YmFibHkgc3RpbGwgdXNlZnVsIGluZm8KKyAgICAgICAgdGVzdF9zdGF0dXMgPSAiVW5rbm93biIK
KyAgICAKKyAgICAKKyAgICAgICAgCitkZWYgc2NhblRlc3REaXIodGVzdERpcik6CisgICAgCisg
ICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsodGVzdERpcik6CisgICAgICAgIAor
ICAgICAgICAjIElnbm9yZSBhbnkgcmVwbyBzdHVmZgorICAgICAgICBpZiAnLmdpdCcgaW4gZGly
czoKKyAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuZ2l0JykKKyAgICAgICAgaWYgJy5oZycgaW4g
ZGlyczoKKyAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuaGcnKSAgCisKKyAgICAgICAgbWFuaWZl
c3QgPSByZWFkTWFuaWZlc3Qocm9vdCkKKyAgICAgICAgY29weUxpc3QgPSBbXQorICAgICAgICAg
ICAgICAgIAorICAgICAgICBpZiBtYW5pZmVzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgI2R1bXBNYW5pZmVzdChtYW5pZmVzdCkKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgIyBJZiB0aGVyZSdzIGEgbWFuaWZlc3QgaW4gdGhpcyBkaXIgaGFuZGxlIHRoZSByZWZ0
ZXN0cworICAgICAgICAgICAgZm9yIHJlZnRlc3QgaW4gbWFuaWZlc3Q6CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgIyBBZGQgdGhlIHRlc3QgZmlsZSB0byB0aGUgY29weWxpc3QK
KyAgICAgICAgICAgICAgICB0ZXN0QmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHJlZnRlc3Rb
J3Rlc3QnXSkKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAjIEFkZCB0aGUgcmVm
IGZpbGUsIHJlbmFtaW5nIGl0IHRvIFdlYmtpdCdzIHdheQorICAgICAgICAgICAgICAgIHJlZkZp
bGUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RCYXNlTmFtZSlbMF0gKyAiLWV4cGVjdGVkIgorICAg
ICAgICAgICAgICAgIHJlZkZpbGUgKz0gb3MucGF0aC5zcGxpdGV4dCh0ZXN0QmFzZU5hbWUpWzFd
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29weUxpc3QuYXBwZW5kKHsnc3Jj
JzogcmVmdGVzdFsncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmRmlsZSB9KQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgorCisgICAgICAg
ICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihyb290LGZpbGVuYW1lKQorICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiBub3QoZmlsZW5hbWUuc3RhcnRzd2l0aCgiLiIpKSBhbmQgXAorICAg
ICAgICAgICAgICAgbm90KGZpbGVuYW1lLmVuZHN3aXRoKCIubWYiKSkgYW5kIFwKKyAgICAgICAg
ICAgICAgIG5vdCgiLXJlZiIgaW4gZmlsZW5hbWUpICAgICAgIGFuZCBcCisgICAgICAgICAgICAg
ICBub3QoZnVsbHBhdGggaW4gc2tpcExpc3QpOiAKKyAgICAgICAgICAgICAgICBjb3B5TGlzdC5h
cHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZSB9KQorICAgICAgICAgICAg
CisgICAgICAgIGltcG9ydExpc3QuYXBwZW5kKCB7ICdkaXInOiByb290LCAnY29weUxpc3QnOiBj
b3B5TGlzdCB9ICkKKworICAgIAorZGVmIHJlYWRNYW5pZmVzdChjdXJyZW50RGlyKToKKworICAg
ICMgT3BlbiB0aGUgbWFuaWZlc3QgZmlsZSBpZiBpdCBleGlzdHMKKyAgICBtYW5pZmVzdEZpbGUg
PSBvcy5wYXRoLmpvaW4oY3VycmVudERpciwgInRlc3RzdWl0ZS5tZiIpCisKKyAgICBpZiBvcy5w
YXRoLmV4aXN0cyhtYW5pZmVzdEZpbGUpOgorICAgICAgICBsb2coIlJlYWRpbmcgbWFuaWZlc3Qg
ZmlsZTogIiArIG1hbmlmZXN0RmlsZSkKKyAgICAgICAgZiA9IG9wZW4obWFuaWZlc3RGaWxlKQor
ICAgICAgICBtYW5pZmVzdENvbnRlbnQgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIGdldFByZWZp
eGVzKG1hbmlmZXN0Q29udGVudCkKKyAgICAgICAgCisgICAgICAgIHJldHVybiBnZXRSZWZ0ZXN0
cyhtYW5pZmVzdENvbnRlbnQsIGN1cnJlbnREaXIpCisgICAgICAgIAorICAgIAorICAgICAgICAK
K2RlZiBnZXRQcmVmaXhlcyhtYW5pZmVzdCk6CisgICAgCisgICAgZm9yIGxpbmUgaW4gbWFuaWZl
c3Q6CisgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgncHJlZml4ZWQucHJvcGVydGllcycpIGFu
ZCBsZW4obGluZS5zcGxpdCgnPScpKSA+IDE6CisgICAgICAgICAgICAKKyAgICAgICAgICAgICMg
U3BsaXQgb3V0IHRoZSBwcmVmaXggcHJvcGVydHkgdmFsdWUKKyAgICAgICAgICAgIHByb3BMaXN0
ID0gbGluZS5zcGxpdCgnPScpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
IyBTdHJpcCBvdXQgaW5saW5lIGNvbW1lbnRzCisgICAgICAgICAgICBwcm9wTGlzdCA9IHByb3BM
aXN0LnNwbGl0KCcjJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgCisgICAgICAgICAgICAjIFNw
bGl0IHRoZSBwcm9wZXJ0aWVzIGludG8gYSBsaXN0CisgICAgICAgICAgICBmb3IgcHJvcCBpbiBw
cm9wTGlzdC5zcGxpdCgnLCcpOgorICAgICAgICAgICAgICAgIHByb3AgPSBwcm9wLnN0cmlwKCkK
KyAgICAgICAgICAgICAgICBpZiBwcm9wIG5vdCBpbiBwcmVmaXhlZF9wcm9wczoKKyAgICAgICAg
ICAgICAgICAgICAgIyBTdG9yZSBpbiB0aGUgZ2xvYmFsIGxpc3QgYi9jIHRoZXNlIGRvbid0IHJl
YWxseSBuZWVkIHRvIGJlIHRyYWNrZWQgcGVyIGRpcmVjdG9yeSAKKyAgICAgICAgICAgICAgICAg
ICAgcHJlZml4ZWRfcHJvcHMuYXBwZW5kKHByb3ApCisgICAgICAgICAgICAgICAgCisKK2RlZiBn
ZXRSZWZ0ZXN0cyhtYW5pZmVzdCwgcGFyZW50RGlyKToKKyAgICAKKyAgICByZWZ0ZXN0TGlzdCA9
IFtdCisgICAgCisgICAgIyBUZW1wIGxpc3QgdG8gdHJhY2sgdGhlIHRlc3QgZmlsZXMgb25seSB0
byBtYWtlIHN1cmUgd2UgZG9uJ3QgYWRkIGR1cGVzCisgICAgdG1wVGVzdExpc3QgPSBbXQorICAg
IAorICAgIGxpbmVObyA9IDEKKyAgICBmb3IgbGluZSBpbiBtYW5pZmVzdDoKKyAgICAgICAgCisg
ICAgICAgICMgU3RyaXAgaW5saW5lIGNvbW1lbnRzCisgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0
KCcjJylbMF0KKworICAgICAgICB0ZXN0RW50cnkgPSAiIgorICAgICAgICB0eXBlID0gIiIKKyAg
ICAgICAgCisgICAgICAgICMgTG9vayBmb3IgbGluZXMgdGhhdCBkZWZpbmUgcmVmdGVzdHMsIHN0
YXJ0aW5nIHdpdGggPT0gb3IgIT0KKyAgICAgICAgdGVzdEVudHJ5ID0gcmUuc3BsaXQoIl4uPz0i
LCBsaW5lKQorICAgICAgICBpZiBsZW4odGVzdEVudHJ5KSA+IDE6CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgICMgU3BsaXQgYXBhcnQgdGhlIHR3byBmaWxlcyBsaXN0ZWQgb24gdGhpcyBsaW5l
CisgICAgICAgICAgICB0ZXN0RW50cnkgPSB0ZXN0RW50cnlbMV0uc3BsaXQoKQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiBsZW4odGVzdEVudHJ5KSA9PSAyOgorICAgICAgICAgICAgICAg
ICMgQXNzZW1ibGUgdGhlIGFic29sdXRlIHBhdGhzIHRvIHRoZSBmaWxlcworICAgICAgICAgICAg
ICAgIHRlc3RGaWxlID0gdGVzdEVudHJ5WzBdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICB0ZXN0
UGF0aCA9IG9zLnBhdGguam9pbihwYXJlbnREaXIsIHRlc3RGaWxlKQorICAgICAgICAgICAgICAg
IHJlZlBhdGggPSBvcy5wYXRoLmpvaW4ocGFyZW50RGlyLCB0ZXN0RW50cnlbMV0uc3RyaXAoKSkK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiB0ZXN0RmlsZSBpbiB0bXBUZXN0
TGlzdDoKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGlzIHRlc3QgaXMgYWxyZWFkeSBpbiB0
aGUgbGlzdCwgc2tpcCBpdAorICAgICAgICAgICAgICAgICAgICBsb2coIldhcm5pbmc6IElnbm9y
aW5nIGR1cGxpY2F0ZSBtYW5pZmVzdCBlbnRyeSBvbiBsaW5lICIrIHN0cihsaW5lTm8pICsgIiwg
V2ViS2l0IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcmVmZXJlbmNlcy4iKQorICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCchPScpOgorICAg
ICAgICAgICAgICAgICAgICAjIElnbm9yZSBtaXNtYXRjaCByZWZzCisgICAgICAgICAgICAgICAg
ICAgIGxvZygiV2FybmluZzogSWdub3JpbmcgbWlzbWF0Y2ggcmVmIGluIG1hbmlmZXN0IG9uIGxp
bmUgIisgc3RyKGxpbmVObykgKyAiLCBXZWJLaXQgZG9lcyBub3Qgc3VwcG9ydCBtaXNtYXRjaCBy
ZWZlcmVuY2VzLiIpCisgICAgICAgICAgICAgICAgICAgIHNraXBMaXN0LmFwcGVuZChyZWZQYXRo
KQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRo
KCc9PScpOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgd2hhdCB3ZSdyZSBhZnRlci4u
LiBhZGQgaXQgdG8gdGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgdGVzdE1hcHBpbmcgPSB7
ICd0ZXN0JzogdGVzdFBhdGgsICdyZWZlcmVuY2UnOiByZWZQYXRoLCAndHlwZSc6IHR5cGUgfQor
ICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0TGlzdC5hcHBlbmQodGVzdE1hcHBpbmcpCisgICAg
ICAgICAgICAgICAgICAgIHRtcFRlc3RMaXN0LmFwcGVuZCh0ZXN0RmlsZSkKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nKCJXYXJuaW5nOiBJ
Z25vcmluZyBpbXByb3Blcmx5IGZvcm1hdHRlZCByZWZ0ZXN0IGVudHJ5IGluIG1hbmlmZXN0IG9u
IGxpbmUgIiArIHN0cihsaW5lTm8pKSAKKyAgICAKKyAgICAgICAgbGluZU5vICs9IDEKKyAgICAK
KyAgICByZXR1cm4gcmVmdGVzdExpc3QKKyAgICAKK2RlZiBpbXBvcnRUZXN0cygpOgorICAgIAor
ICAgIGxvZygiSW1wb3J0aW5nIHRlc3RzLi4uIikKKyAgICB2ZXJib3NlKCI8PDw8PDw8PDw8PDw8
PDw8PDwgSU1QT1JUIExJU1QgPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiIpCisgICAgCisgICAgZm9yIGRp
clRvQ29weSBpbiBpbXBvcnRMaXN0OgorICAgICAgICBpZiBsZW4oZGlyVG9Db3B5Wydjb3B5TGlz
dCddKSA+IDA6CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZlcmJvc2UoIiIpCisgICAgICAg
ICAgICB2ZXJib3NlKCI+Pj4+PiBJbXBvcnRpbmcgZmlsZXMgZnJvbTogIiArIGRpclRvQ29weVsn
ZGlyJ10pCisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgYmFzZSBzb3Vy
Y2VfZGlyIGZyb20gdGhlIGZpbGUgdG8gY29weQorICAgICAgICAgICAgb3JpZ1BhdGggPSBkaXJU
b0NvcHlbJ2RpciddCisgICAgICAgICAgICBzdGFydCA9IG9yaWdQYXRoLmZpbmQoc291cmNlX2Rp
cikgKyBsZW4oc291cmNlX2RpcikrMQorICAgICAgICAgICAgbmV3U3ViUGF0aCA9IG9yaWdQYXRo
WyBzdGFydDpsZW4ob3JpZ1BhdGgpIF0KKyAgICAgICAgCisgICAgICAgICAgICAjIEFwcGVuZCBp
dCB0byB0aGUgZGVzdF9kaXIKKyAgICAgICAgICAgIG5ld1BhdGggPSBvcy5wYXRoLmpvaW4oZGVz
dF9kaXIsIG5ld1N1YlBhdGgpCisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgQ3JlYXRlIHRo
ZSBkZXN0IHN1YmRpcnMgaWYgbm90IHRoZXJlCisgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5l
eGlzdHMobmV3UGF0aCkpOgorICAgICAgICAgICAgICAgIHZlcmJvc2UoIj4+Pj4+IENyZWF0aW5n
IGRlc3RpbmF0aW9uIGRpcjogIiArIG5ld1BhdGgpCisgICAgICAgICAgICAgICAgb3MubWFrZWRp
cnMobmV3UGF0aCkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29waWVkRmlsZXMgPSBbXQor
ICAgICAgICAgICAgZm9yIGZpbGVUb0NvcHkgaW4gZGlyVG9Db3B5Wydjb3B5TGlzdCddOgorICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgb3JpZ0ZpbGVQYXRoID0gZmlsZVRvQ29weVsnc3Jj
J10KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAjIEFwcGVuZCB0aGUgY29ycmVj
dCBkZXN0aW5hdGlvbiBmaWxlbmFtZQorICAgICAgICAgICAgICAgIG5ld0ZpbGVQYXRoID0gb3Mu
cGF0aC5qb2luKG5ld1BhdGgsIGZpbGVUb0NvcHlbJ2Rlc3QnXSkKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAjIERvbid0IG92ZXJ3cml0ZSBleGlzdGluZyB0ZXN0cyBpZiBzcGVj
aWZpZWQKKyAgICAgICAgICAgICAgICBpZiBhbnkoeCBpbiBvcHRpb25zIGZvciB4IGluIFsnLW4n
LCAnLS1uby1vdmVyd3JpdGUnXSkgYW5kIFwKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4
aXN0cyhuZXdGaWxlUGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGxvZygiU2tpcHBpbmcgaW1w
b3J0IG9mIGV4aXN0aW5nIGZpbGUgIiArIG5ld0ZpbGVQYXRoKQorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgIHZlcmJvc2UoIiIpCisgICAgICAgICAgICAgICAgICAg
IHZlcmJvc2UoIiAgICAgQ09QWUlORzogIiArIG9yaWdGaWxlUGF0aCkKKyAgICAgICAgICAgICAg
ICAgICAgdmVyYm9zZSgiICAgICBUTzogICAgICAiICsgbmV3RmlsZVBhdGgpCisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAjIENvbnN0cnVjdCB0aGUgcmVsYXRpdmUg
cGF0aCBmcm9tIHRoZSBuZXcgZGlyIHRvIExheW91dFRlc3RzL3Jlc291cmNlcworICAgICAgICAg
ICAgICAgICAgICByZXNvdXJjZXNEaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5qb2luKHdlYmtp
dF9kaXIsICdMYXlvdXRUZXN0cycpLCAncmVzb3VyY2VzJykKKyAgICAgICAgICAgICAgICAgICAg
cmVsUGF0aCA9IG9zLnBhdGgucmVscGF0aChyZXNvdXJjZXNEaXIsIG5ld1BhdGgpCisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpbmZpbGUgPSBvcGVuKG9yaWdGaWxl
UGF0aCwgJ3InKQorICAgICAgICAgICAgICAgICAgICBvdXRmaWxlID0gb3BlbihuZXdGaWxlUGF0
aCwgJ3cnKQorICAgICAgICAgICAgICAgICAgICBvcmlnQ29udGVudCA9IGluZmlsZS5yZWFkKCkK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRtcCA9IGluZmlsZS5y
ZWFkbGluZXMoKQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIyBN
YWtlIHBhdGhzIHRvIHRlc3RoYXJuZXNzIGZpbGVzIGdvb2QKKyAgICAgICAgICAgICAgICAgICAg
bmV3Q29udGVudCA9IG9yaWdDb250ZW50LnJlcGxhY2UoIi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mi
LCByZWxQYXRoKycvdGVzdGhhcm5lc3MnKQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgIyBQcmVmaXggdGhlIHByb3BlcnRpZXMgdGhhdCBuZWVkIGl0CisgICAgICAg
ICAgICAgICAgICAgIGlmIGZpbGVUb0NvcHlbJ2Rlc3QnXSAhPSAidGVzdHN1aXRlLm1mIjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBwcm9wIGluIHByZWZpeGVkX3Byb3BzOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbnRlbnQgPSBuZXdDb250ZW50LnJlcGxhY2UocHJv
cCwgIi13ZWJraXQtIitwcm9wKQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgIyBUT0RPIEhhbmRsZSBDU1NPTSBwcmVmaXhlZCBwcm9wZXJ0aWVzICAgIAorICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZShuZXdDb250
ZW50KQorICAgICAgICAgICAgICAgICAgICBpbmZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAg
ICAgICBvdXRmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIGNvcGllZEZpbGVzLmFwcGVuZChuZXdGaWxlUGF0aC5yZXBsYWNlKHdlYmtpdF9kaXIs
ICIiKSkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBUYWtlIGNhcmUgb2YgYW55dGhpbmcg
dGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgaW1wb3J0CisgICAgICAg
ICAgICByZW1vdmVEZWxldGVkRmlsZXMobmV3UGF0aCwgY29waWVkRmlsZXMpCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgICMgTGFzdCwgZHJvcCBzb21lIGluZm8gYWJvdXQgd2hhdCBqdXN0IGhh
cHBlbmVkIGhlcmUKKyAgICAgICAgICAgIHdyaXRlSW1wb3J0TG9nKG5ld1BhdGgsIGNvcGllZEZp
bGVzKQorICAgICAgICAgICAgICAgICAKKyAgICBsb2coIkltcG9ydCBjb21wbGV0ZSIpCisgICAg
CitkZWYgcmVtb3ZlRGVsZXRlZEZpbGVzKG5ld1BhdGgsIG5ld0ZpbGVMaXN0KToKKyAgICAKKyAg
ICBwcmV2aW91c0xpc3QgPSBbXQorICAgIAorICAgICMgRmlyc3QgY2hlY2sgaWYgdGhlcmUgd2Fz
IGEgcHJldmlvdXMgaW1wb3J0IGhlcmUgLSB0aGVyZSBzaG91bGQgYmUgYSBsb2cKKyAgICBpbXBv
cnRMb2dGaWxlID0gb3MucGF0aC5qb2luKG5ld1BhdGgsICJ3M2MtaW1wb3J0LmxvZyIpCisgICAg
aWYgbm90KG9zLnBhdGguZXhpc3RzKGltcG9ydExvZ0ZpbGUpKToKKyAgICAgICAgcmV0dXJuCisg
ICAgCisgICAgaW1wb3J0TG9nID0gb3BlbihpbXBvcnRMb2dGaWxlLCAncicpCisgICAgY29udGVu
dHMgPSBpbXBvcnRMb2cucmVhZGxpbmVzKCkKKyAgICAKKyAgICAjIFB1bGwgb3V0IHRoZSBsaXN0
IG9mIGZpbGVzIGZyb20gdGhlIHByZXZpb3VzIGltcG9ydAorICAgIGlmICJMaXN0IG9mIGZpbGVz
XG4iIGluIGNvbnRlbnRzOgorICAgICAgICBsaXN0SWR4ID0gY29udGVudHMuaW5kZXgoJ0xpc3Qg
b2YgZmlsZXM6XG4nKSArIDEKKyAgICAgICAgcHJldmlvdXNMaXN0ID0gY29udGVudHNbbGlzdElk
eDpdCisgICAgICAgIHByZXZpb3VzTGlzdCA9IG1hcChsYW1iZGEgczogcy5zdHJpcCgpLCBwcmV2
aW91c0xpc3QpCisgICAgICAgIAorICAgIGRlbGV0ZWRGaWxlcyA9IHNldChwcmV2aW91c0xpc3Qp
IC0gc2V0KG5ld0ZpbGVMaXN0KQorICAgICAgCisgICAgIyBMb29wIHRocm91Z2ggYW5kIHJlbW92
ZSB0aGVtIGFsbAorICAgIGZvciBmaWxlIGluIGRlbGV0ZWRGaWxlczoKKyAgICAgICAgbG9nKCdE
ZWxldGluZyBmaWxlIHJlbW92ZWQgZnJvbSB0aGUgVzNDIHJlcG86JyArIGZpbGUpCisgICAgICAg
IGZpbGUgPSBvcy5wYXRoLmpvaW4od2Via2l0X2RpciwgZmlsZSkKKyAgICAgICAgb3MucmVtb3Zl
KGZpbGUpCisgICAgICAgIAorICAgIGltcG9ydExvZy5jbG9zZSgpCisgICAgICAgIAorZGVmIHdy
aXRlSW1wb3J0TG9nKGRpclBhdGgsIGZpbGVMaXN0KToKKyAgICAKKyAgICBub3cgPSBkYXRldGlt
ZS5kYXRldGltZS5ub3coKQorCisgICAgIyBDcmVhdGUgYSBsb2cgb2YgdGhpcyBpbXBvcnQgd2l0
aCBhbGwgc29ydHMgb2YgZ29vZCBpbmZvcm1hdGlvbgorICAgIGltcG9ydExvZyA9IG9wZW4ob3Mu
cGF0aC5qb2luKGRpclBhdGgsICd3M2MtaW1wb3J0LmxvZycpLCAndycpCisgICAgaW1wb3J0TG9n
LndyaXRlKCdUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS5cbicpCisgICAgaW1wb3J0TG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYmtpdC4gSW5zdGVhZCwgcHVzaCBjaGFuZ2VzIHRv
IHRoZSBXM0MgQ1NTIHJlcG86XG5cbicpCisgICAgaW1wb3J0TG9nLndyaXRlKCdodHRwOi8vaGcu
Y3Nzd2cub3JnL3Rlc3RcblxuJykKKyAgICBpbXBvcnRMb2cud3JpdGUoJ1RoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Via2l0IHRvIHJlaW1wb3J0XG5cbicp
CisgICAgaW1wb3J0TG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGVc
blxuJykKKyAgICBpbXBvcnRMb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4nKQorICAgIGlt
cG9ydExvZy53cml0ZSgnTGFzdCBJbXBvcnQ6ICcgKyBub3cuc3RyZnRpbWUoIiVZLSVtLSVkICVI
OiVNIikgKyAnXG4nKQorICAgIGltcG9ydExvZy53cml0ZSgnVzNDIE1lcmN1cmlhbCBjaGFuZ2Vz
ZXQ6ICcgKyBjaGFuZ2VzZXQpCisgICAgaW1wb3J0TG9nLndyaXRlKCdUZXN0IHN0YXR1cyBhdCB0
aW1lIG9mIGltcG9ydDogJyArIHRlc3Rfc3RhdHVzKQorICAgIAorICAgIGltcG9ydExvZy53cml0
ZSgnXG5cbkxpc3Qgb2YgZmlsZXM6XG4nKQorICAgIGZvciBmaWxlIGluIGZpbGVMaXN0OgorICAg
ICAgICBpbXBvcnRMb2cud3JpdGUoZmlsZSArICdcbicpCisgICAgICAgIAorICAgIGltcG9ydExv
Zy5jbG9zZSgpCisKKworZGVmIHZlcmJvc2UobXNnKToKKyAgICBpZiBhbnkoeCBpbiBvcHRpb25z
IGZvciB4IGluIFsnLXYnLCAnLS12ZXJib3NlJ10pOgorICAgICAgICBzdGFtcCA9IHN5cy5fZ2V0
ZnJhbWUoMSkuZl9jb2RlLmNvX25hbWUgKyIoKToiKyBzdHIoc3lzLl9nZXRmcmFtZSgxKS5mX2xp
bmVubykgKyI6ICIKKyAgICAgICAgbG9nKHN0YW1wICsgbXNnKQorCitkZWYgbG9nKG1zZyk6Cisg
ICAgcHJpbnQgbXNnCisgICAgCisKK2RlZiBkdW1wTWFuaWZlc3QobWFuaWZlc3QpOgorICAgIHZl
cmJvc2UoIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTUFOSUZFU1QgIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMiKQorICAgIAorICAgIHZlcmJvc2UoIlByZWZpeGVkIHByb3BlcnRp
ZXM6IikKKyAgICBmb3IgcHJlZml4IGluIG1hbmlmZXN0WydwcmVmaXhlcyddOgorICAgICAgICB2
ZXJib3NlKHByZWZpeCkKKyAgICAgICAgCisgICAgdmVyYm9zZSgiICIpCisgICAgCisgICAgdmVy
Ym9zZSgiUmVmdGVzdHM6IikKKyAgICBmb3IgcmVmdGVzdCBpbiBtYW5pZmVzdFsncmVmdGVzdHMn
XToKKyAgICAgICAgdmVyYm9zZSgieyIpCisgICAgICAgIHZlcmJvc2UoIiAgICIgKyByZWZ0ZXN0
WyJ0ZXN0Il0pCisgICAgICAgIHZlcmJvc2UoIiAgICIgKyByZWZ0ZXN0WyJyZWZlcmVuY2UiXSkK
KyAgICAgICAgdmVyYm9zZSgiICAgIiArIHJlZnRlc3RbInR5cGUiXSkKKyAgICAgICAgdmVyYm9z
ZSgifSIpCisgICAgCisgICAgdmVyYm9zZSgiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIpCisKKworCittYWluKCkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192111</attachid>
            <date>2013-03-07 17:00:06 -0800</date>
            <delta_ts>2013-03-21 09:03:50 -0700</delta_ts>
            <desc>one line fix for something silly</desc>
            <filename>111513.patch</filename>
            <type>text/plain</type>
            <size>26840</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNmRk
MzhiLi4yMTJiYmFkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTMtMDMtMDYgIFJlYmVjY2EgSGF1Y2sgIDxyaGF1
Y2tAYWRvYmUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgdHdvIG5ldyBzY3JpcHRzIHRvIFRvb2xzL1NjcmlwdHMuIFRoZSBtYWluIHNj
cmlwdCwgJ2ltcG9ydC13M2MtdGVzdHMnLCB3YWxrcyBhIHRyZWUgb2YgVzNDIENTUworICAgICAg
ICB0ZXN0cyBhbmQgZG9lcyByZWZ0ZXN0IGNvbnZlcnNpb24sIHBhdGggZml4aW5nLCBwcmVmaXhp
bmcsIGFuZCBmaWxlIGNvcHkuIEl0IGNvbnN1bWVzIGEgbWFuaWZlc3QgZmlsZSB0aGF0IGlzCisg
ICAgICAgIGdlbmVyYXRlZCBieSB0aGUgc2Vjb25kIHNjcmlwdCBoZXJlLCAnZ2VuZXJhdGUtdzNj
LXRlc3RzdWl0ZS1tYW5pZmVzdCcuIFRoaXMgc2NyaXB0IHdhbGtzIGEgZGlyZWN0b3J5IHRyZWUs
CisgICAgICAgIHNlYXJjaGVzIGZvciByZWZ0ZXN0cywgYnVpbGRzIHRoZSBsaXN0IG9mIHRlc3Q6
cmVmZXJlbmNlIGZpbGUgbWFwcGluZ3MsIGFuZCBzdG9yZXMgdGhlbSBpbiBhIHRlc3RzdWl0ZS5t
ZiBmaWxlCisgICAgICAgIGluIGVhY2ggZGlyZWN0b3J5LiAgT25lIG1hbnVhbCBzdGVwIGlzIHJl
cXVpcmVkIGFmdGVyIHRoZSBtYW5pZmVzdCBpcyBnZW5lcmF0ZWQgYW5kIHRoYXQgaXMgdG8gYWRk
IHRvIGl0IHRoZQorICAgICAgICBsaXN0IG9mIGFueSBDU1MgcHJvcGVydGllcyB0aGF0IHJlcXVp
cmUgdmVuZG9yIHByZWZpeGVzLgorCisgICAgICAgIFRoZSBtYW5pZmVzdCBnZW5lcmF0aW9uIHNj
cmlwdCBzdXBwb3J0cyBhIGNvdXBsZSBvZiB0aGluZ3MgdGhhdCBXZWJraXQgZG9lcyBub3QgLSBt
YW55Om9uZSB0ZXN0OnJlZmVyZW5jZQorICAgICAgICBtYXBwaW5ncyBhbmQgbWlzbWF0Y2ggcmVm
ZXJlbmNlcy4gVGhlc2UgYXJlIHByZXNlbnQgaW4gc29tZSBvZiB0aGUgVzNDIHN1aXRlcyBhbmQg
dGhlc2UgbWFwcGluZ3MgY2FwdHVyZWQgaW4KKyAgICAgICAgdGhlIG1hbmlmZXN0LiBIb3dldmVy
LCB0aGUgaW1wb3J0IHNjcmlwdCBpZ25vcmVzIGFuZCB3YXJucyB3aGVuIHRoZXNlIGFyZSBlbmNv
dW50ZXJlZC4gCisKKyAgICAgICAgVGhlIHRlc3RzIGFyZSBpbXBvcnRlZCBpbnRvIExheW91dFRl
c3RzL1t0ZXN0X2FyZWFdL2ltcG9ydGVkLXczYyBhbmQgYSB3M2MtaW1wb3J0LmxvZyBmaWxlIGlz
IGRyb3BwZWQgaW4gZWFjaAorICAgICAgICBpbXBvcnRlZCBkaXJlY3Rvcnkgd2l0aCB0aGUgZGF0
ZXN0YW1wLCB0aGUgVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQgKGlmIGF2YWlsYWJsZSksIHRoZSBh
cHByb3ZlZC9zdWJtaXR0ZWQgCisgICAgICAgIHN0YXR1cyBvZiB0aGUgdGVzdHMsIHRoZSBsaXN0
IG9mIGZpbGVzIGltcG9ydGVkLCBhbmQgZ3VpZGFuY2Ugb24gZnV0dXJlIG1vZGlmaWNhdGlvbnMg
YW5kIG1haW50ZW5hbmNlLiBUaGlzIGxvZworICAgICAgICBpcyByZWFkIG9uIHN1YnNlcXVlbnQg
aW1wb3J0cyBpZGVudGlmeSBhbnkgZmlsZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRo
ZSBXM0MgcmVwbyBzaW5jZSB0aGUgbGFzdAorICAgICAgICBpbXBvcnQuIFRoaXMgc2NyaXB0IHJl
bW92ZXMgdGhlIGZpbGVzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGluIHRoZSBXM0Mgc291cmNlLgor
CisgICAgICAgIE5vdGU6IFRoZSByZWFzb24gdGhlc2UgYXJlIHR3byBzY3JpcHRzIGFuZCBub3Qg
b25lIGlzIGJlY2F1c2UgSSBvcmlnaW5hbGx5IHdhcyBub3Qgc3VyZSB0aGUgbWFuaWZlc3QgZ2Vu
ZXJhdGlvbgorICAgICAgICBzY3JpcHQgYmVsb25nZWQgaW4gV2Via2l0IGFzIGl0IGlzIG5vdCBX
ZWJraXQtc3BlY2lmaWMuIEFuIGFsdGVybmF0ZSBsb2NhdGlvbiBmb3IgdGhpcyB3b3VsZCBiZSBp
biB0aGUgVzNDCisgICAgICAgIENTUyByZXBvc2l0b3J5IHVuZGVyIHRoZWlyICJ0b29scyIuICBX
aGV0aGVyIHRoZXkncmUgdHdvIHNjcmlwdHMgb3Igb25lLCB0aGlzIGltcG9ydCBwcm9jZXNzIHdv
dWxkIHN0aWxsCisgICAgICAgIGJlIGEgMiBzdGVwIHByb2Nlc3MgdG8gYnVpbGQgdGhlIGxpc3Qg
b2YgcHJlZml4ZWQgcHJvcGVydGllcy4gQW4gYWx0ZXJuYXRpdmUgdG8gdGhpcyB3b3VsZCBiZSB0
byBjb25zaWRlcgorICAgICAgICBrZWVwaW5nIGEgaGFyZGNvZGVkIGxpc3Qgb2YgYWxsIHByb3Bl
cnRpZXMgaW4gV2Via2l0IHRoYXQgcmVxdWlyZSBwcmVmaXhlcyAoaWYgaXQgZG9lc24ndCBleGlz
dCBhbHJlYWR5PykuCisgICAgICAgIEknZCBsaWtlIHRvIGhlYXIgdGhlIHJldmlld2VyJ3MgdGhv
dWdodHMgb24gdGhpcy4gQSBnb29kIGNhc2UgY2FuIHByb2JhYmx5IGJlIG1hZGUgZm9yIGNvbWJp
bmluZyB0aGUgdHdvLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS13M2MtdGVzdHN1aXRl
LW1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKFJlZlBhcnNlcik6CisgICAgICAgIChSZWZQYXJz
ZXIuX19pbml0X18pOgorICAgICAgICAoUmVmUGFyc2VyLmhhbmRsZV9zdGFydHRhZyk6CisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKHVzYWdlKToKKyAgICAgICAgKHBhcnNlQXJncyk6CisgICAg
ICAgIChzY2FuVGVzdERpcik6CisgICAgICAgIChzaG91bGRJZ25vcmUpOgorICAgICAgICAoZmlu
ZFJlZmVyZW5jZXMpOgorICAgICAgICAod3JpdGVNYW5pZmVzdCk6CisgICAgICAgICogU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAocGFy
c2VBcmdzKToKKyAgICAgICAgKHNob3dVc2FnZSk6CisgICAgICAgIChtYWtlRGVzdERpcik6Cisg
ICAgICAgIChnZXRDaGFuZ2VzZXQpOgorICAgICAgICAoZ2V0VGVzdFN0YXR1cyk6CisgICAgICAg
IChzY2FuVGVzdERpcik6CisgICAgICAgIChyZWFkTWFuaWZlc3QpOgorICAgICAgICAoZ2V0UHJl
Zml4ZXMpOgorICAgICAgICAoZ2V0UmVmdGVzdHMpOgorICAgICAgICAoaW1wb3J0VGVzdHMpOgor
ICAgICAgICAocmVtb3ZlRGVsZXRlZEZpbGVzKToKKyAgICAgICAgKHdyaXRlSW1wb3J0TG9nKToK
KyAgICAgICAgKHZlcmJvc2UpOgorICAgICAgICAobG9nKToKKyAgICAgICAgKGR1bXBNYW5pZmVz
dCk6CisKIDIwMTMtMDMtMDYgIEp1bGllIFBhcmVudCAgPGpwYXJlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIERhc2hib2FyZCBjbGVhbnVwOiBNb3ZlIGFsbCBkYXNoYm9hcmQgdWkgcmVsYXRl
ZCBjb2RlIGludG8gdWkuanMuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLXcz
Yy10ZXN0c3VpdGUtbWFuaWZlc3QgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLXczYy10ZXN0c3Vp
dGUtbWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2I5MTBlZAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtdzNjLXRlc3RzdWl0ZS1t
YW5pZmVzdApAQCAtMCwwICsxLDE0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
VGhpcyBzY3JpcHQgZ2VuZXJhdGVzIG1hbmlmZXN0IGZpbGVzIGZvciBhIGRpcmVjdG9yeSB0cmVl
IG9mIFczQyB0ZXN0cy4KKyMgCisjIFlvdSBtdXN0IGhhdmUgY2hlY2tlZCBvdXQgdGhlIFczQyBy
ZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUuCisjCisjIFRoaXMgc2NyaXB0IHdhbGtzIGEg
ZGlyZWN0b3J5IHRyZWUgY29udGFpbmluZyBXM0MgdGVzdHMgYW5kIHNlYXJjaGluZyBmb3IgcmVm
dGVzdHMuIEl0IGNyZWF0ZXMgYSB0ZXN0c3VpdGUubWYgZmlsZSAKKyMgaW4gZWFjaCBkaXJlY3Rv
cnkgb2YgdGVzdHMsIHdoaWNoIGNvbnRhaW5zIGEgbGlzdCBvZiB0ZXN0OnJlZiBmaWxlIG1hcHBp
bmdzIGZvdW5kIGluIHRoZSB0ZXN0IGZpbGVzJyBtZXRhZGF0YS4gIFRoZSAKKyMgbWFuaWZlc3Qg
ZmlsZSBpcyBjb25zdW1lZCBieSB0aGUgY29tcGFuaW9uIHNjcmlwdCBpbXBvcnQtdzNjLXRlc3Rz
LiBVcG9uIGNvbXBsZXRpb24sIHRoZXJlIGlzIG9uZSBtYW51YWwgc3RlcAorIyB0byBkZWZpbmUg
dGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHByZWZpeGVzLgorIyAKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
aW1wb3J0IG9zLCBzeXMKK2Zyb20gSFRNTFBhcnNlciBpbXBvcnQgSFRNTFBhcnNlcgorCitjbGFz
cyBSZWZQYXJzZXIoSFRNTFBhcnNlcik6CisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgor
ICAgICAgICBIVE1MUGFyc2VyLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYubWF0Y2hlcyA9
IFtdCisgICAgICAgIHNlbGYubWlzbWF0Y2hlcyA9IFtdCisgICAgCisgICAgZGVmIGhhbmRsZV9z
dGFydHRhZyhzZWxmLCB0YWcsIGF0dHJzKToKKyAgICAgICAgaWYodGFnID09ICJsaW5rIik6Cisg
ICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oYXR0cnMpKToKKyAgICAgICAgICAgICAgICBp
ZiBhdHRyc1tpXVswXSA9PSAicmVsIiBhbmQgYXR0cnNbaV1bMV0gPT0gIm1hdGNoIjoKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVzLmFwcGVuZChhdHRyc1tpKzFdWzFdKQorICAgICAg
ICAgICAgICAgIGlmIGF0dHJzW2ldWzBdID09ICJyZWwiIGFuZCBhdHRyc1tpXVsxXSA9PSAibWlz
bWF0Y2giOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm1pc21hdGNoZXMuYXBwZW5kKGF0dHJz
W2krMV1bMV0pCisgICAgCit0ZXN0UGF0aCA9ICcnCisKK2RlZiBtYWluKCk6CisKKyAgICBwYXJz
ZUFyZ3MoKQorICAgIHNjYW5UZXN0RGlyKCkKKyAgICBwcmludCAnJworICAgIHByaW50ICJNYW5p
ZmVzdChzKSBhcmUgY3JlYXRlZCBmb3IgZWFjaCBkaXJlY3RvcnkgY29udGFpbmluZyB0ZXN0cy4g
SWYgdGhlcmUgYXJlIENTUyBwcm9wZXJ0aWVzIHRoYXQgcmVxdWlyZSB2ZW5kb3IiCisgICAgcHJp
bnQgInByZWZpeGVzIGluIHRoZSB0ZXN0IHN1aXRlLCBvcGVuIHRoZSBtYW5pZmVzdCwgdW5jb21t
ZW50IHByZWZpeGVkLnByb3BlcnRpZXMsIGFuZCBzZXQgaXRzIHZhbHVlIgorICAgIHByaW50ICcn
CisgICAgCitkZWYgdXNhZ2UoKToKKyAgICBwcmludCJVU0FHRTogZ2VuZXJhdGUtbWFuaWZlc3Qg
W3czY190ZXN0X2Rpcl0iCisgICAgc3lzLmV4aXQoKQorCitkZWYgcGFyc2VBcmdzKCk6CisgICAg
aWYgKGxlbihzeXMuYXJndikgPCAyKToKKyAgICAgICAgdXNhZ2UoKQorICAgIGVsc2U6CisgICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzeXMuYXJndlsxXSk6CisgICAgICAgICAgICAgc3lz
LmV4aXQoJ0VSUk9SOiBTb3VyY2UgZGlyICVzIG5vdCBmb3VuZCEnICUgc3lzLmFyZ3ZbMV0pCisg
ICAgICAgIAorICAgICAgICBnbG9iYWwgdGVzdFBhdGgKKyAgICAgICAgdGVzdFBhdGggPSBzeXMu
YXJndlsxXQorICAgICAgICAKK2RlZiBzY2FuVGVzdERpcigpOgorCisgICAgaWdub3JlRGlycyA9
IFsicmVmZXJlbmNlIiwgIi5naXQiLCAic3VwcG9ydCIsICJjc3MiLCAiaW1nIiwgImFzc2V0cyIs
ICJqcyJdCisgICAgaWdub3JlRmlsZXMgPSBbIi1yZWYiLCAiLW5vdHJlZiIsICIuY3NzIiwgIi5q
cyIsICIucG5nIiwgIi5qcGciLCAiLmpwZWciLCAiLkRTX1N0b3JlIiwgIi5tZiIsICIubG9nIl0K
KyAgICAKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayh0ZXN0UGF0aCk6Cisg
ICAgICAgIAorICAgICAgICByZWZ0ZXN0TGlzdCA9IFtdCisKKyAgICAgICAgcHJpbnQgIlNjYW5u
aW5nOiAiICsgcm9vdAorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6CisgICAgICAgICAg
ICBpZiBub3Qgc2hvdWxkSWdub3JlKGZpbGVuYW1lLCBpZ25vcmVGaWxlcyk6CisgICAgICAgICAg
ICAgICAgcmVmRmlsZXMgPSBmaW5kUmVmZXJlbmNlcyhvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5h
bWUpKQorICAgICAgICAgICAgICAgIGlmIGxlbihyZWZGaWxlcykgIT0gMDoKKyAgICAgICAgICAg
ICAgICAgICAgcmVmdGVzdExpc3QuZXh0ZW5kKHJlZkZpbGVzKQorICAgICAgICAgICAgICAgICNl
bHNlOgorICAgICAgICAgICAgICAgICMgICAgcHJpbnQgIk5vIHJlZmVyZW5jZSBmaWxlcyBmb3Vu
ZCBpbiAiICsgZmlsZW5hbWUKKyAgICAgICAgCisgICAgICAgIGlmIGxlbihyZWZ0ZXN0TGlzdCkg
IT0gMDoKKyAgICAgICAgICAgIHdyaXRlTWFuaWZlc3Qocm9vdCwgcmVmdGVzdExpc3QpCisgICAg
ICAgIAorICAgICAgICBmb3IgZGlybmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgaWYgc2hvdWxk
SWdub3JlKGRpcm5hbWUsIGlnbm9yZURpcnMpOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3Zl
KGRpcm5hbWUpCisgICAgCitkZWYgc2hvdWxkSWdub3JlKGxpc3RJdGVtLCBpZ25vcmVMaXN0KToK
KyAgICAKKyAgICBmb3IgaWdub3JlIGluIGlnbm9yZUxpc3Q6CisgICAgICAgIGlmIGlnbm9yZSBp
biBsaXN0SXRlbToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAKKyAgICBy
ZXR1cm4gRmFsc2UKKworZGVmIGZpbmRSZWZlcmVuY2VzKHRlc3RGaWxlUGF0aCk6CisgICAgCisg
ICAgdGVzdEZpbGUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3RGaWxlUGF0aCkKKworICAgICNwcmlu
dCAiUmVhZGluZyAiICsgdGVzdEZpbGUKKyAgICBmID0gb3Blbih0ZXN0RmlsZVBhdGgpCisgICAg
ZG9jID0gZi5yZWFkKCkKKyAgICBmLmNsb3NlKCkKKyAgICAKKyAgICBtZHBhcnNlciA9IFJlZlBh
cnNlcigpCisgICAgbWRwYXJzZXIuZmVlZChkb2MpCisgICAgbWRwYXJzZXIuY2xvc2UoKQorCisg
ICAgcmVmZXJlbmNlcyA9IFtdCisgICAgCisgICAgaWYgbGVuKG1kcGFyc2VyLm1hdGNoZXMpICE9
IDA6CisgICAgICAgIGZvciBtYXRjaCBpbiBtZHBhcnNlci5tYXRjaGVzOgorICAgICAgICAgICAg
cmVmZXJlbmNlcy5hcHBlbmQoICgiPT0iLCB0ZXN0RmlsZSwgbWF0Y2gpICkKKworICAgIGlmIGxl
bihtZHBhcnNlci5taXNtYXRjaGVzKSAhPSAwOgorICAgICAgICBmb3IgbWlzbWF0Y2ggaW4gbWRw
YXJzZXIubWlzbWF0Y2hlczoKKyAgICAgICAgICAgIHJlZmVyZW5jZXMuYXBwZW5kKCAoIiE9Iiwg
dGVzdEZpbGUsIG1pc21hdGNoKSApCisgICAgCisgICAgcmV0dXJuIHJlZmVyZW5jZXMKKyAgICAK
K2RlZiB3cml0ZU1hbmlmZXN0KHRlc3REaXIsIHJlZnRlc3RMaXN0KToKKyAgICAKKyAgICBtYW5p
ZmVzdEZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdERpciwgInRlc3RzdWl0ZS5tZiIpCisgICAgCisg
ICAgIyBUT0RPIFNob3VsZCBJIGFkZCBhIGZsYWcgdG8gbWFrZSBhdXRvbWF0aWNhbGx5IG92ZXJ3
cml0aW5nIG9wdGlvbmFsPworICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0RmlsZSk6Cisg
ICAgICAgIG9zLnJlbW92ZShtYW5pZmVzdEZpbGUpCisgICAgICAgIHByaW50ICJSZXdyaXRpbmcg
ZXhpc3RpbmcgbWFuaWZlc3Q6ICIgKyBtYW5pZmVzdEZpbGUKKyAgICBlbHNlOiAgICAKKyAgICAg
ICAgcHJpbnQgIkdlbmVyYXRpbmcgbWFuaWZlc3Q6ICIgKyBtYW5pZmVzdEZpbGUKKyAgICBmID0g
b3BlbihtYW5pZmVzdEZpbGUsICd3JykKKyAgICAKKyAgICAjIEFkZCAoY29tbWVudGVkIG91dCkg
cHJvcGVydHkgZm9yIHByZWZpeGVzCisgICAgZi53cml0ZSgiIyMgU2V0IHRoZSB2YWx1ZSBvZiBw
cmVmaXhlZC5wcm9wZXJ0aWVzIHRvIGJlIGxpc3Qgb2YgY29tbWEgZGVsaW1pdGVkIENTUyBwcm9w
ZXJ0aWVzXG4iKQorICAgIGYud3JpdGUoIiMjIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXMuIFVu
Y29tbWVudCB0aGlzIHByb3BlcnR5IGlmIGl0J3MgbmVlZGVkLiBTZWUgZXhhbXBsZSBiZWxvdy5c
biIpCisgICAgZi53cml0ZSgiI3ByZWZpeGVkLnByb3BlcnRpZXMgPSBmbG93LWludG8sIGZsb3ct
ZnJvbVxuXG5cbiIpCisgICAgCisgICAgIyBXcml0ZSBvdXQgdGhlIHJlZnMKKyAgICBpZiBsZW4o
cmVmdGVzdExpc3QpID09IDA6CisgICAgICAgIGYud3JpdGUoIiMjIE5vIFJlZnRlc3RzIGluIHRo
aXMgc3VpdGVcblxuIikKKyAgICBlbHNlOgorICAgICAgICBmLndyaXRlKCIjIyBSZWZ0ZXN0czpc
blxuIikKKyAgICBmb3IgcmVmdGVzdCBpbiByZWZ0ZXN0TGlzdDoKKyAgICAgICAgZi53cml0ZSgg
cmVmdGVzdFswXSArIiAiKyByZWZ0ZXN0WzFdICsiICIrIHJlZnRlc3RbMl0gKyJcbiIpCisgICAg
ICAgIAorICAgIGYuY2xvc2UoKQorCittYWluKCkKKworCisgICAgClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGIv
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLjE0Njc3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMKQEAgLTAsMCArMSw0NjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IworIyBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGlyZWN0b3J5IG9mIFczQyBDU1MgdGVzdHMgaW50
byBXZWJLaXQuCisjCisjIFlvdSBtdXN0IGhhdmUgY2hlY2tlZCBvdXQgdGhlIFczQyByZXBvc2l0
b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUuCisjCisjIFRoaXMgc2NyaXB0IHdpbGwgaW1wb3J0IHRo
ZSB0ZXN0cyBpbnRvIExheW91dFRlc3RzL1t0ZXN0X2FyZWFdL2ltcG9ydGVkLXczYyBUaGUgc2Ny
aXB0IHJlYWRzIGluIGEgbWFuaWZlc3QKKyMgZmlsZSB0aGF0IGZvbGxvd3MgdGhlIGZvcm1hdCBh
cyBkZXNjcmliZWQgb24gdGhlIENTU1dHIHdpa2k6CisjCisjICAgIGh0dHA6Ly93aWtpLmNzc3dn
Lm9yZy90ZXN0L3JlZnRlc3QjdGhlLXJlZnRlc3QtbWFuaWZlc3QKKyMKKyMgTm90ZTogVGhlIENT
U1dHIGhhcyBkZXByZWNhdGVkIHRoaXMgbWFuaWZlc3QgaW4gZmF2b3IgZm9yIHVzaW5nIG1ldGFk
YXRhLCBidXQgc2luY2UgdGhlIAorIyAgICAgICBXZWJraXQgdGVzdCBoYXJuZXNzIGRvZXNuJ3Qg
c3VwcG9ydCByZWFkaW5nIG1ldGFkYXRhLCB0aGlzIGFuY2lsbGFyeSBmaWxlIGlzIG5lY2Vzc2Fy
eQorIyAgICAgICB0byBtYWludGFpbiB0aGUgY29ycmVjdCB0ZXN0OnJlZiBmaWxlIG1hcHBpbmdz
CisjCisjIFRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsIHBpZWNlIG9mIGluZm9ybWF0aW9uIGluIHRo
ZSBtYW5pZmVzdCB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBvcmlnaW4gZm9ybWF0IGRlZmluZWQK
KyMgb24gdGhlIHdpa2kgLSB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhl
IC13ZWJraXQgcHJlZml4LiBTaW5jZSB0ZXN0cyBjYW5ub3QgYmUgY2hlY2tlZCBpbnRvCisjIHRo
ZSBXM0MgcmVwb3NpdG9yeSB3aXRoIHByZWZpeGVzLCB0aGlzIGlzIGFsc28gbmVjZXNzYXJ5IHRv
IGhhdmUgaW4gdGhlIG1hbmlmZXN0LiBUaGlzIHNjcmlwdCBhbHNvIGhhbmRsZXMgCisjIHRoZSBw
cmVmaXhpbmcgdXBvbiBpbXBvcnQuCisjCisjIFRoZSBtYW5pZmVzdCBjYW4gYmUgZ2VuZXJhdGVk
IGJ5IHRoZSBjb21wYW5pb24gc2NyaXB0IGdlbmVyYXRlLXczYy10ZXN0c3VpdGUtbWFuaWZlc3Qu
IAorIyAKKyMgU2luY2UgdGhpcyBzY3JpcHQgaXMgZGVzaWduZWQgZm9yIHJldXNlIGFuZCBwZXJp
b2RpY2FsbHkgcmVmcmVzaGluZyBXM0MgdGVzdHMsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRv
IAorIyBvdmVyd3JpdGUgZmlsZXMgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmaWxl
cyBhcmUgdGhlIHNhbWUuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhIAor
IyBjb21tYW5kIGxpbmUgZmxhZy4KKyMKKyMgVGhlIGZpbmFsIHN0ZXAgaW4gdGhpcyBzY3JpcHQg
aXMgdG8gZHJvcCBhIHczYy1pbXBvcnQubG9nIGluIGVhY2ggaW1wb3J0ZWQgZGlyZWN0b3J5IHdp
dGggYSB0aW1lc3RhbXAsIAorIyB0aGUgVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQgaWYgYXZhaWxh
YmxlLCB0aGUgbGlzdCBvZiBpbXBvcnRlZCBmaWxlcywgYW5kIGd1aWRhbmNlIGZvciBmdXR1cmUg
dGVzdCBtb2RpZmljYXRpb24gCisjIGFuZCBtYWludGVuYW5jZS4gVGhpcyBsb2cgZmlsZSBpcyBy
ZWFkIG9uIHN1YnNlcXVlbnQgaW1wb3J0cyB0byBkZXRlcm1pbmUgaWYgZmlsZXMgaGF2ZSBiZWVu
IHJlbW92ZWQgCisjIGluIHRoZSBuZXdlciBjaGFuZ2VzZXRzLiAKKyMgCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgb3Ms
IHN5cywgc2h1dGlsLCByZSwgc3VicHJvY2VzcywgZGF0ZXRpbWUKKword2Via2l0X2RpciA9ICIi
Citzb3VyY2VfZGlyID0gIiIKK2Rlc3RfZGlyID0gIiIKK29wdGlvbnMgPSBbXQorcHJlZml4ZWRf
cHJvcHMgPSBbXQoraW1wb3J0TGlzdCA9IFtdCitza2lwTGlzdCA9IFtdCitjaGFuZ2VzZXQgPSAi
IgordGVzdF9zdGF0dXMgPSAiIgorCitkZWYgbWFpbigpOgorCisgICAgcGFyc2VBcmdzKCkKKyAg
ICBtYWtlRGVzdERpcigpCisgICAgZ2V0Q2hhbmdlc2V0KCkKKyAgICBnZXRUZXN0U3RhdHVzKCkK
KyAgICBzY2FuVGVzdERpcihzb3VyY2VfZGlyKQorICAgIGltcG9ydFRlc3RzKCkKKyAgICAKK2Rl
ZiBwYXJzZUFyZ3MoKToKKworICAgIGdsb2JhbCB3ZWJraXRfZGlyCisgICAgZ2xvYmFsIHNvdXJj
ZV9kaXIKKyAgICBnbG9iYWwgZGVzdF9kaXIKKyAgICBnbG9iYWwgb3B0aW9ucworCisgICAgIyBT
cGxpdCBmbGFncyBmcm9tIGFyZ3MKKyAgICBhcmdMaXN0ID0gW10KKyAgICBmb3IgYXJnIGluIHN5
cy5hcmd2OgorICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLScpOgorICAgICAgICAgICAgb3B0
aW9ucy5hcHBlbmQoYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXJnTGlzdC5hcHBl
bmQoYXJnKQorCisgICAgIyBDaGVjayBmb3IgcmVxdWlyZWQgYXJncworICAgIGlmIGxlbihhcmdM
aXN0KSA8IDM6CisgICAgICAgIHByaW50ICJFUlJPUjogTWlzc2luZyBhcmd1bWVudChzKSIKKyAg
ICAgICAgc2hvd1VzYWdlKCkKKworICAgICMgTWFrZSBzdXJlIHRoZSB3M2MgdGVzdCBkaXIgZXhp
c3RzCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFyZ0xpc3RbMV0pOgorICAgICAgICAgc3lz
LmV4aXQoJ0VSUk9SOiBTb3VyY2UgZGlyICVzIG5vdCBmb3VuZCEnICUgYXJnTGlzdFsxXSkKKyAg
ICAKKyAgICAjIE1ha2Ugc3VyZSB0aGUgd2Via2l0IHJvb3QgZGlyIGV4aXN0cworICAgIGlmIG5v
dCBvcy5wYXRoLmV4aXN0cyhhcmdMaXN0WzJdKToKKyAgICAgICAgIHN5cy5leGl0KCdFUlJPUjog
V2ViS2l0IGRpciAlcyBmb3VuZCEnICUgYXJnTGlzdFsyXSkKKyAgICAKKyAgICAjIENvbnN0cnVj
dCB0aGUgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZGlyCisgICAgc291cmNlX2RpciA9IGFyZ0xp
c3RbMV0ucnN0cmlwKCcvJykKKyAgICB3ZWJraXRfZGlyID0gYXJnTGlzdFsyXQorICAgIGRlc3Rf
ZGlyID0gb3MucGF0aC5qb2luKHdlYmtpdF9kaXIsICdMYXlvdXRUZXN0cycpCisgICAgCisgICAg
aWYgbGVuKGFyZ0xpc3QpID09IDQ6IAorICAgICAgICAjIElmIGEgdGVzdF9hcmVhIHdhcyBzcGVj
aWZpZWQsIHRoZW4gaXQgZ29lcyB1bmRlciBMYXlvdXRUZXN0cworICAgICAgICBkZXN0X2RpciA9
IG9zLnBhdGguam9pbihkZXN0X2RpciwgYXJnTGlzdFszXSkKKyAgICBlbHNlOgorICAgICAgICAj
IElmIG5vdCwgY3JlYXRlIGEgZGlyZWN0b3J5IHRoYXQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgY29u
dGFpbmluZyBkaXJlY3RvcnkKKyAgICAgICAgZGVzdF9kaXIgPSBvcy5wYXRoLmpvaW4oZGVzdF9k
aXIsIG9zLnBhdGguYmFzZW5hbWUoc291cmNlX2RpcikpCisgICAgICAgIAorICAgICMgRHJvcCBp
dCBhbGwgaW50byBhbiAnaW1wb3J0ZWQtdzNjJyBkaXIKKyAgICBkZXN0X2RpciA9IG9zLnBhdGgu
am9pbihkZXN0X2RpciwgJ2ltcG9ydGVkLXczYycpCisgICAgCisgICAgbG9nKCJUZXN0cyB3aWxs
IGJlIGltcG9ydGVkIGZyb206ICIgKyBzb3VyY2VfZGlyKSAKKworZGVmIHNob3dVc2FnZSgpOgor
ICAgIHByaW50ICcnCisgICAgcHJpbnQgJ1VTQUdFOiAlcyBbdzNjX3Rlc3RfZGlyXSBbd2Via2l0
X3Jvb3RdIFt0ZXN0X2FyZWFdJyAlIHN5cy5hcmd2WzBdCisgICAgcHJpbnQgJycKKyAgICBwcmlu
dCAnICAgICAgW3czY190ZXN0X2Rpcl0gICAgIC0gdGhlIHBhdGggdG8gdGhlIHNwZWNpZmljIGRp
cmVjdG9yeSBvZiB0ZXN0cyB0byBiZScKKyAgICBwcmludCAnICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW1wb3J0ZWQgaW50byBXZWJLaXQuIEFsbCBzdWJkaXJlY3RvcmllcyBvZiB0aGlzIHBh
dGgnCisgICAgcHJpbnQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgaW5jbHVk
ZWQgaW4gdGhlIGltcG9ydC4nCisgICAgcHJpbnQgJycKKyAgICBwcmludCAnICAgICAgW3dlYmtp
dF9yb290XSAgICAgIC0gdGhlIHBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIFdlYktpdCBjaGVja291
dCBkaXJlY3RvcnknCisgICAgcHJpbnQgJycKKyAgICBwcmludCAnICAgICAgW3Rlc3RfYXJlYV0g
ICAgICAgIC0gKE9wdGlvbmFsKSBUaGUgbmFtZSBvZiB0aGUgdGVzdGluZyBhcmVhIHVuZGVyIHdo
aWNoIHRoZXNlJworICAgIHByaW50ICcgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0IGZh
bGwuIFRoZSB0ZXN0cyB3aWxsIGJlIGltcG9ydGVkIGludG8gJworICAgIHByaW50ICcgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbd2Via2l0X3Jvb3RdL0xheW91dFRlc3RzL1t0ZXN0IGFyZWFd
L2ltcG9ydGVkLXczYy4gQSBzdWJkaXJlY3RvcnknCisgICAgcHJpbnQgJyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ5IHRoZSBzYW1lIG5hbWUgYXMgdGhlIG9yaWdpbmFsIGNvbnRhaW5pbmcg
ZGlyZWN0b3J5IHdpbGwgYmUgaGVyZScKKyAgICBwcmludCAnICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIFt0ZXN0IGFyZWFdIGRpcmVjdG9yeSB3aWxsIHRh
a2UgdGhlIG5hbWUgb2YnCisgICAgcHJpbnQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBvcmlnaW5hbCBjb250YWluaW5nIGRpcmVjdG9yeScKKyAgICBwcmludCAnJworICAgIHByaW50
ICcgICAgICAtbiwgLS1uby1vdmVyd3JpdGUgLSBGbGFnIHRvIHByZXZlbnQgZHVwbGljYXRlIHRl
c3QgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBleGlzdGluZyAnCisgICAgcHJpbnQgJyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RzLiBCeSBkZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3Zlcndy
aXR0ZW4gYXMgdGhpcyBzY3JpcHQgaXMgJworICAgIHByaW50ICcgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHBlcmlvZGljYWxseSByZWZyZXNoIHRlc3Rz
IGZyb20gdGhlIFczQyByZXBvJworICAgIHByaW50ICcnCisgICAgcHJpbnQgJyAgICAgIC12LCAt
LXZlcmJvc2UgICAgICAtIFZlcmJvc2Ugb3V0cHV0JworICAgIHByaW50ICcnCisgICAgcHJpbnQg
JyAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4
aXQnCisgICAgcHJpbnQgJycKKyAgICBwcmludCAnRXhhbXBsZXM6JworICAgIHByaW50ICcgICAg
ICAgJCAuL2ltcG9ydC13M2MtdGVzdHMgfi9XM0MvY29udHJpYnV0b3JzL2Fkb2JlL3N1Ym1pdHRl
ZC9yZWdpb25zL3NlbGVjdGlvbiB+L1dlYktpdCByZWdpb25zJworICAgIHByaW50ICcgICAgICAg
V2lsbCBpbXBvcnQgdGhlIHRlc3RzIGludG8gfi9XZWJLaXQvTGF5b3V0VGVzdHMvcmVnaW9ucy9p
bXBvcnRlZC13M2Mvc2VsZWN0aW9uJworICAgIHByaW50ICcnCisgICAgcHJpbnQgJyAgICAgICAk
IC4vaW1wb3J0LXczYy10ZXN0cyB+L1czQy9jb250cmlidXRvcnMvYWRvYmUvc3VibWl0dGVkL3Jl
Z2lvbnMgfi9XZWJLaXQnCisgICAgcHJpbnQgJyAgICAgICBXaWxsIGltcG9ydCB0aGUgdGVzdHMg
aW50byB+L1dlYktpdC9MYXlvdXRUZXN0cy9yZWdpb25zL2ltcG9ydGVkLXczYycKKyAgICBwcmlu
dCAnJworICAgIHByaW50ICcgICAgICAgSW4gYm90aCBjYXNlcywgaWYgdGhlIFwnc2VsZWN0aW9u
XCcgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLCBuZXcgdGVzdHMgd2lsbCBiZSBhZGRlZCB0byBp
dCBhbmQgdGVzdHMgd2l0aCAnCisgICAgcHJpbnQgJyAgICAgICB0aGUgc2FtZSBuYW1lIHdpbGwg
YmUgb3ZlcndyaXR0ZW4gdW5sZXNzIHRoZSAtLW5vLW92ZXJ3cml0ZSBhcmd1bWVudCBpcyBzcGVj
aWZpZWQnCisgICAgcHJpbnQgJycKKyAgICBzeXMuZXhpdCgxKQorICAgIAorICAgIAorZGVmIG1h
a2VEZXN0RGlyKCk6CisgICAgCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3RfZGlyKToK
KyAgICAgICAgbG9nKCJDcmVhdGluZyBkZXN0aW5hdGlvbiBkaXI6ICIgKyBkZXN0X2RpcikgCisg
ICAgICAgIG9zLm1ha2VkaXJzKGRlc3RfZGlyKQorICAgICAgICAKKyAgICBsb2coIlRlc3RzIHdp
bGwgYmUgaW1wb3J0ZWQgaW50bzogIiArIGRlc3RfZGlyKSAKKyAgICAKKyAgICAKK2RlZiBnZXRD
aGFuZ2VzZXQoKToKKyAgICAKKyAgICBnbG9iYWwgY2hhbmdlc2V0CisgICAgCisgICAgdHJ5Ogor
ICAgICAgICAjIEFzc3VtaW5nIE1lcmN1cmlhbCBpcyBzZXQgdXAgb24gdGhlIHN5c3RlbSwgdHJ5
IHRvIGdyYWIgdGhlIGNoYW5nZXNldCB3ZSdyZSBpbXBvcnRpbmcKKyAgICAgICAgcHJvYyA9IHN1
YnByb2Nlc3MuUG9wZW4oWyJoZyIsICJ0aXAiXSwgZW52PW9zLmVudmlyb24sIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUsIGN3ZD1zb3VyY2VfZGlyKQorICAgICAgICBjaGFuZ2VzZXQgPSBwcm9jLnN0
ZG91dC5yZWFkbGluZXMoKVswXQorICAgICAgICBjaGFuZ2VzZXQgPSBjaGFuZ2VzZXQuc3BsaXQo
ImNoYW5nZXNldDoiKVsxXQorICAgIGV4Y2VwdDoKKyAgICAgICAgIyBPaCB3ZWxsLCB3ZSB0cmll
ZAorICAgICAgICBjaGFuZ2VzZXQgPSAiTm90IEF2YWlsYWJsZSIKKyAgICAgICAgCitkZWYgZ2V0
VGVzdFN0YXR1cygpOgorICAgIAorICAgIGdsb2JhbCB0ZXN0X3N0YXR1cworICAgIAorICAgICMg
SWYgdGhlc2UgdGVzdHMgYXJlIGFwcHJvdmVkLCB0aGUgd29yZCB3aWxsIGJlIGluIHRoZSBwYXRo
IChkdWgpCisgICAgaWYgImFwcHJvdmVkIiBpbiBzb3VyY2VfZGlyOgorICAgICAgICB0ZXN0X3N0
YXR1cyA9ICJBcHByb3ZlZCIKKyAgICBlbGlmICJzdWJtaXR0ZWQiIGluIHNvdXJjZV9kaXI6Cisg
ICAgICAgICMgRGl0dG8gZm9yIHN1Ym1pdHRlZAorICAgICAgICB0ZXN0X3N0YXR1cyA9ICJTdWJt
aXR0ZWQsIEF3YWl0aW5nIFJldmlldyIKKyAgICBlbHNlOgorICAgICAgICAjIFRoaXMgaXMgcHJv
YmFibHkgc3RpbGwgdXNlZnVsIGluZm8KKyAgICAgICAgdGVzdF9zdGF0dXMgPSAiVW5rbm93biIK
KyAgICAKKyAgICAKKyAgICAgICAgCitkZWYgc2NhblRlc3REaXIodGVzdERpcik6CisgICAgCisg
ICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsodGVzdERpcik6CisgICAgICAgIAor
ICAgICAgICAjIElnbm9yZSBhbnkgcmVwbyBzdHVmZgorICAgICAgICBpZiAnLmdpdCcgaW4gZGly
czoKKyAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuZ2l0JykKKyAgICAgICAgaWYgJy5oZycgaW4g
ZGlyczoKKyAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuaGcnKSAgCisKKyAgICAgICAgbWFuaWZl
c3QgPSByZWFkTWFuaWZlc3Qocm9vdCkKKyAgICAgICAgY29weUxpc3QgPSBbXQorICAgICAgICAg
ICAgICAgIAorICAgICAgICBpZiBtYW5pZmVzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgI2R1bXBNYW5pZmVzdChtYW5pZmVzdCkKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgIyBJZiB0aGVyZSdzIGEgbWFuaWZlc3QgaW4gdGhpcyBkaXIgaGFuZGxlIHRoZSByZWZ0
ZXN0cworICAgICAgICAgICAgZm9yIHJlZnRlc3QgaW4gbWFuaWZlc3Q6CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgIyBBZGQgdGhlIHRlc3QgZmlsZSB0byB0aGUgY29weWxpc3QK
KyAgICAgICAgICAgICAgICB0ZXN0QmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHJlZnRlc3Rb
J3Rlc3QnXSkKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAjIEFkZCB0aGUgcmVm
IGZpbGUsIHJlbmFtaW5nIGl0IHRvIFdlYmtpdCdzIHdheQorICAgICAgICAgICAgICAgIHJlZkZp
bGUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RCYXNlTmFtZSlbMF0gKyAiLWV4cGVjdGVkIgorICAg
ICAgICAgICAgICAgIHJlZkZpbGUgKz0gb3MucGF0aC5zcGxpdGV4dCh0ZXN0QmFzZU5hbWUpWzFd
CisKKyAgICAgICAgICAgICAgICBjb3B5TGlzdC5hcHBlbmQoeydzcmMnOiByZWZ0ZXN0WydyZWZl
cmVuY2UnXSwgJ2Rlc3QnOiByZWZGaWxlIH0pCisgICAgICAgICAgICAgICAgCisgICAgICAgIAor
ICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6CisKKyAgICAgICAgICAgIGZ1bGxwYXRoID0g
b3MucGF0aC5qb2luKHJvb3QsZmlsZW5hbWUpCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
IG5vdChmaWxlbmFtZS5zdGFydHN3aXRoKCIuIikpIGFuZCBcCisgICAgICAgICAgICAgICBub3Qo
ZmlsZW5hbWUuZW5kc3dpdGgoIi5tZiIpKSBhbmQgXAorICAgICAgICAgICAgICAgbm90KCItcmVm
IiBpbiBmaWxlbmFtZSkgICAgICAgYW5kIFwKKyAgICAgICAgICAgICAgIG5vdChmdWxscGF0aCBp
biBza2lwTGlzdCk6IAorICAgICAgICAgICAgICAgIGNvcHlMaXN0LmFwcGVuZCh7J3NyYyc6IGZ1
bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lIH0pCisgICAgICAgICAgICAKKyAgICAgICAgaW1wb3J0
TGlzdC5hcHBlbmQoIHsgJ2Rpcic6IHJvb3QsICdjb3B5TGlzdCc6IGNvcHlMaXN0IH0gKQorCisg
ICAgCitkZWYgcmVhZE1hbmlmZXN0KGN1cnJlbnREaXIpOgorCisgICAgIyBPcGVuIHRoZSBtYW5p
ZmVzdCBmaWxlIGlmIGl0IGV4aXN0cworICAgIG1hbmlmZXN0RmlsZSA9IG9zLnBhdGguam9pbihj
dXJyZW50RGlyLCAidGVzdHN1aXRlLm1mIikKKworICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlm
ZXN0RmlsZSk6CisgICAgICAgIGxvZygiUmVhZGluZyBtYW5pZmVzdCBmaWxlOiAiICsgbWFuaWZl
c3RGaWxlKQorICAgICAgICBmID0gb3BlbihtYW5pZmVzdEZpbGUpCisgICAgICAgIG1hbmlmZXN0
Q29udGVudCA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgZ2V0UHJlZml4ZXMobWFuaWZlc3RDb250
ZW50KQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGdldFJlZnRlc3RzKG1hbmlmZXN0Q29udGVu
dCwgY3VycmVudERpcikKKyAgICAgICAgCisgICAgCisgICAgICAgIAorZGVmIGdldFByZWZpeGVz
KG1hbmlmZXN0KToKKyAgICAKKyAgICBmb3IgbGluZSBpbiBtYW5pZmVzdDoKKyAgICAgICAgaWYg
bGluZS5zdGFydHN3aXRoKCdwcmVmaXhlZC5wcm9wZXJ0aWVzJykgYW5kIGxlbihsaW5lLnNwbGl0
KCc9JykpID4gMToKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBTcGxpdCBvdXQgdGhlIHBy
ZWZpeCBwcm9wZXJ0eSB2YWx1ZQorICAgICAgICAgICAgcHJvcExpc3QgPSBsaW5lLnNwbGl0KCc9
JylbMV0uc3RyaXAoKQorICAgICAgICAgICAgCisgICAgICAgICAgICAjIFN0cmlwIG91dCBpbmxp
bmUgY29tbWVudHMKKyAgICAgICAgICAgIHByb3BMaXN0ID0gcHJvcExpc3Quc3BsaXQoJyMnKVsw
XS5zdHJpcCgpCisgICAgICAgICAgICAKKyAgICAgICAgICAgICMgU3BsaXQgdGhlIHByb3BlcnRp
ZXMgaW50byBhIGxpc3QKKyAgICAgICAgICAgIGZvciBwcm9wIGluIHByb3BMaXN0LnNwbGl0KCcs
Jyk6CisgICAgICAgICAgICAgICAgcHJvcCA9IHByb3Auc3RyaXAoKQorICAgICAgICAgICAgICAg
IGlmIHByb3Agbm90IGluIHByZWZpeGVkX3Byb3BzOgorICAgICAgICAgICAgICAgICAgICAjIFN0
b3JlIGluIHRoZSBnbG9iYWwgbGlzdCBiL2MgdGhlc2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8gYmUg
dHJhY2tlZCBwZXIgZGlyZWN0b3J5IAorICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9w
cy5hcHBlbmQocHJvcCkKKyAgICAgICAgICAgICAgICAKKworZGVmIGdldFJlZnRlc3RzKG1hbmlm
ZXN0LCBwYXJlbnREaXIpOgorICAgIAorICAgIHJlZnRlc3RMaXN0ID0gW10KKyAgICAKKyAgICAj
IFRlbXAgbGlzdCB0byB0cmFjayB0aGUgdGVzdCBmaWxlcyBvbmx5IHRvIG1ha2Ugc3VyZSB3ZSBk
b24ndCBhZGQgZHVwZXMKKyAgICB0bXBUZXN0TGlzdCA9IFtdCisgICAgCisgICAgbGluZU5vID0g
MQorICAgIGZvciBsaW5lIGluIG1hbmlmZXN0OgorICAgICAgICAKKyAgICAgICAgIyBTdHJpcCBp
bmxpbmUgY29tbWVudHMKKyAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJyMnKVswXQorCisgICAg
ICAgIHRlc3RFbnRyeSA9ICIiCisgICAgICAgIHR5cGUgPSAiIgorICAgICAgICAKKyAgICAgICAg
IyBMb29rIGZvciBsaW5lcyB0aGF0IGRlZmluZSByZWZ0ZXN0cywgc3RhcnRpbmcgd2l0aCA9PSBv
ciAhPQorICAgICAgICB0ZXN0RW50cnkgPSByZS5zcGxpdCgiXi4/PSIsIGxpbmUpCisgICAgICAg
IGlmIGxlbih0ZXN0RW50cnkpID4gMToKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBTcGxp
dCBhcGFydCB0aGUgdHdvIGZpbGVzIGxpc3RlZCBvbiB0aGlzIGxpbmUKKyAgICAgICAgICAgIHRl
c3RFbnRyeSA9IHRlc3RFbnRyeVsxXS5zcGxpdCgpCisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIGxlbih0ZXN0RW50cnkpID09IDI6CisgICAgICAgICAgICAgICAgIyBBc3NlbWJsZSB0aGUg
YWJzb2x1dGUgcGF0aHMgdG8gdGhlIGZpbGVzCisgICAgICAgICAgICAgICAgdGVzdEZpbGUgPSB0
ZXN0RW50cnlbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAgIHRlc3RQYXRoID0gb3MucGF0aC5q
b2luKHBhcmVudERpciwgdGVzdEZpbGUpCisgICAgICAgICAgICAgICAgcmVmUGF0aCA9IG9zLnBh
dGguam9pbihwYXJlbnREaXIsIHRlc3RFbnRyeVsxXS5zdHJpcCgpKQorICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIGlmIHRlc3RGaWxlIGluIHRtcFRlc3RMaXN0OgorICAgICAgICAg
ICAgICAgICAgICAjIElmIHRoaXMgdGVzdCBpcyBhbHJlYWR5IGluIHRoZSBsaXN0LCBza2lwIGl0
CisgICAgICAgICAgICAgICAgICAgIGxvZygiV2FybmluZzogSWdub3JpbmcgZHVwbGljYXRlIG1h
bmlmZXN0IGVudHJ5IG9uIGxpbmUgIisgc3RyKGxpbmVObykgKyAiLCBXZWJLaXQgZG9lcyBub3Qg
c3VwcG9ydCBtdWx0aXBsZSByZWZlcmVuY2VzLiIpCisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJyE9Jyk6CisgICAgICAgICAgICAgICAgICAg
ICMgSWdub3JlIG1pc21hdGNoIHJlZnMKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJXYXJuaW5n
OiBJZ25vcmluZyBtaXNtYXRjaCByZWYgaW4gbWFuaWZlc3Qgb24gbGluZSAiKyBzdHIobGluZU5v
KSArICIsIFdlYktpdCBkb2VzIG5vdCBzdXBwb3J0IG1pc21hdGNoIHJlZmVyZW5jZXMuIikKKyAg
ICAgICAgICAgICAgICAgICAgc2tpcExpc3QuYXBwZW5kKHJlZlBhdGgpCisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJz09Jyk6CisgICAgICAg
ICAgICAgICAgICAgICMgVGhpcyBpcyB3aGF0IHdlJ3JlIGFmdGVyLi4uIGFkZCBpdCB0byB0aGUg
bGlzdAorICAgICAgICAgICAgICAgICAgICB0ZXN0TWFwcGluZyA9IHsgJ3Rlc3QnOiB0ZXN0UGF0
aCwgJ3JlZmVyZW5jZSc6IHJlZlBhdGgsICd0eXBlJzogdHlwZSB9CisgICAgICAgICAgICAgICAg
ICAgIHJlZnRlc3RMaXN0LmFwcGVuZCh0ZXN0TWFwcGluZykKKyAgICAgICAgICAgICAgICAgICAg
dG1wVGVzdExpc3QuYXBwZW5kKHRlc3RGaWxlKQorICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2coIldhcm5pbmc6IElnbm9yaW5nIGltcHJvcGVy
bHkgZm9ybWF0dGVkIHJlZnRlc3QgZW50cnkgaW4gbWFuaWZlc3Qgb24gbGluZSAiICsgc3RyKGxp
bmVObykpIAorICAgIAorICAgICAgICBsaW5lTm8gKz0gMQorICAgIAorICAgIHJldHVybiByZWZ0
ZXN0TGlzdAorICAgIAorZGVmIGltcG9ydFRlc3RzKCk6CisgICAgCisgICAgbG9nKCJJbXBvcnRp
bmcgdGVzdHMuLi4iKQorICAgIHZlcmJvc2UoIjw8PDw8PDw8PDw8PDw8PDw8PCBJTVBPUlQgTElT
VCA+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IikKKyAgICAKKyAgICBmb3IgZGlyVG9Db3B5IGluIGltcG9y
dExpc3Q6CisgICAgICAgIGlmIGxlbihkaXJUb0NvcHlbJ2NvcHlMaXN0J10pID4gMDoKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgdmVyYm9zZSgiIikKKyAgICAgICAgICAgIHZlcmJvc2UoIj4+
Pj4+IEltcG9ydGluZyBmaWxlcyBmcm9tOiAiICsgZGlyVG9Db3B5WydkaXInXSkKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgIyBFeHRyYWN0IHRoZSBiYXNlIHNvdXJjZV9kaXIgZnJvbSB0aGUg
ZmlsZSB0byBjb3B5CisgICAgICAgICAgICBvcmlnUGF0aCA9IGRpclRvQ29weVsnZGlyJ10KKyAg
ICAgICAgICAgIHN0YXJ0ID0gb3JpZ1BhdGguZmluZChzb3VyY2VfZGlyKSArIGxlbihzb3VyY2Vf
ZGlyKSsxCisgICAgICAgICAgICBuZXdTdWJQYXRoID0gb3JpZ1BhdGhbIHN0YXJ0Omxlbihvcmln
UGF0aCkgXQorICAgICAgICAKKyAgICAgICAgICAgICMgQXBwZW5kIGl0IHRvIHRoZSBkZXN0X2Rp
cgorICAgICAgICAgICAgbmV3UGF0aCA9IG9zLnBhdGguam9pbihkZXN0X2RpciwgbmV3U3ViUGF0
aCkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGRlc3Qgc3ViZGlycyBp
ZiBub3QgdGhlcmUKKyAgICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhuZXdQYXRoKSk6
CisgICAgICAgICAgICAgICAgdmVyYm9zZSgiPj4+Pj4gQ3JlYXRpbmcgZGVzdGluYXRpb24gZGly
OiAiICsgbmV3UGF0aCkKKyAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhuZXdQYXRoKQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBjb3BpZWRGaWxlcyA9IFtdCisgICAgICAgICAgICBmb3Ig
ZmlsZVRvQ29weSBpbiBkaXJUb0NvcHlbJ2NvcHlMaXN0J106CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBvcmlnRmlsZVBhdGggPSBmaWxlVG9Db3B5WydzcmMnXQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBjb3JyZWN0IGRlc3RpbmF0aW9uIGZp
bGVuYW1lCisgICAgICAgICAgICAgICAgbmV3RmlsZVBhdGggPSBvcy5wYXRoLmpvaW4obmV3UGF0
aCwgZmlsZVRvQ29weVsnZGVzdCddKQorICAgICAgICAgICAgICAgIG5ld0ZpbGVQYXRoID0gbmV3
RmlsZVBhdGgucmVwbGFjZSgieGh0IiwgInhodG1sIikKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAjIERvbid0IG92ZXJ3cml0ZSBleGlzdGluZyB0ZXN0cyBpZiBzcGVjaWZpZWQK
KyAgICAgICAgICAgICAgICBpZiBhbnkoeCBpbiBvcHRpb25zIGZvciB4IGluIFsnLW4nLCAnLS1u
by1vdmVyd3JpdGUnXSkgYW5kIFwKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhu
ZXdGaWxlUGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGxvZygiU2tpcHBpbmcgaW1wb3J0IG9m
IGV4aXN0aW5nIGZpbGUgIiArIG5ld0ZpbGVQYXRoKQorICAgICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgICAgIHZlcmJvc2UoIiIpCisgICAgICAgICAgICAgICAgICAgIHZlcmJv
c2UoIiAgICAgQ09QWUlORzogIiArIG9yaWdGaWxlUGF0aCkKKyAgICAgICAgICAgICAgICAgICAg
dmVyYm9zZSgiICAgICBUTzogICAgICAiICsgbmV3RmlsZVBhdGgpCisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAjIENvbnN0cnVjdCB0aGUgcmVsYXRpdmUgcGF0aCBm
cm9tIHRoZSBuZXcgZGlyIHRvIExheW91dFRlc3RzL3Jlc291cmNlcworICAgICAgICAgICAgICAg
ICAgICByZXNvdXJjZXNEaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5qb2luKHdlYmtpdF9kaXIs
ICdMYXlvdXRUZXN0cycpLCAncmVzb3VyY2VzJykKKyAgICAgICAgICAgICAgICAgICAgcmVsUGF0
aCA9IG9zLnBhdGgucmVscGF0aChyZXNvdXJjZXNEaXIsIG5ld1BhdGgpCisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpbmZpbGUgPSBvcGVuKG9yaWdGaWxlUGF0aCwg
J3InKQorICAgICAgICAgICAgICAgICAgICBvdXRmaWxlID0gb3BlbihuZXdGaWxlUGF0aCwgJ3cn
KQorICAgICAgICAgICAgICAgICAgICBvcmlnQ29udGVudCA9IGluZmlsZS5yZWFkKCkKKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRtcCA9IGluZmlsZS5yZWFkbGlu
ZXMoKQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHBh
dGhzIHRvIHRlc3RoYXJuZXNzIGZpbGVzIGdvb2QKKyAgICAgICAgICAgICAgICAgICAgbmV3Q29u
dGVudCA9IG9yaWdDb250ZW50LnJlcGxhY2UoIi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MiLCByZWxQ
YXRoKycvdGVzdGhhcm5lc3MnKQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgIyBQcmVmaXggdGhlIHByb3BlcnRpZXMgdGhhdCBuZWVkIGl0CisgICAgICAgICAgICAg
ICAgICAgIGlmIGZpbGVUb0NvcHlbJ2Rlc3QnXSAhPSAidGVzdHN1aXRlLm1mIjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciBwcm9wIGluIHByZWZpeGVkX3Byb3BzOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld0NvbnRlbnQgPSBuZXdDb250ZW50LnJlcGxhY2UocHJvcCwgIi13
ZWJraXQtIitwcm9wKQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
IyBUT0RPIEhhbmRsZSBDU1NPTSBwcmVmaXhlZCBwcm9wZXJ0aWVzICAgIAorICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZShuZXdDb250ZW50KQor
ICAgICAgICAgICAgICAgICAgICBpbmZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBv
dXRmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGNvcGllZEZpbGVzLmFwcGVuZChuZXdGaWxlUGF0aC5yZXBsYWNlKHdlYmtpdF9kaXIsICIiKSkK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgIyBUYWtlIGNhcmUgb2YgYW55dGhpbmcgdGhhdCBt
YXkgaGF2ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgaW1wb3J0CisgICAgICAgICAgICBy
ZW1vdmVEZWxldGVkRmlsZXMobmV3UGF0aCwgY29waWVkRmlsZXMpCisgICAgICAgICAgICAKKyAg
ICAgICAgICAgICMgTGFzdCwgZHJvcCBzb21lIGluZm8gYWJvdXQgd2hhdCBqdXN0IGhhcHBlbmVk
IGhlcmUKKyAgICAgICAgICAgIHdyaXRlSW1wb3J0TG9nKG5ld1BhdGgsIGNvcGllZEZpbGVzKQor
ICAgICAgICAgICAgICAgICAKKyAgICBsb2coIkltcG9ydCBjb21wbGV0ZSIpCisgICAgCitkZWYg
cmVtb3ZlRGVsZXRlZEZpbGVzKG5ld1BhdGgsIG5ld0ZpbGVMaXN0KToKKyAgICAKKyAgICBwcmV2
aW91c0xpc3QgPSBbXQorICAgIAorICAgICMgRmlyc3QgY2hlY2sgaWYgdGhlcmUgd2FzIGEgcHJl
dmlvdXMgaW1wb3J0IGhlcmUgLSB0aGVyZSBzaG91bGQgYmUgYSBsb2cKKyAgICBpbXBvcnRMb2dG
aWxlID0gb3MucGF0aC5qb2luKG5ld1BhdGgsICJ3M2MtaW1wb3J0LmxvZyIpCisgICAgaWYgbm90
KG9zLnBhdGguZXhpc3RzKGltcG9ydExvZ0ZpbGUpKToKKyAgICAgICAgcmV0dXJuCisgICAgCisg
ICAgaW1wb3J0TG9nID0gb3BlbihpbXBvcnRMb2dGaWxlLCAncicpCisgICAgY29udGVudHMgPSBp
bXBvcnRMb2cucmVhZGxpbmVzKCkKKyAgICAKKyAgICAjIFB1bGwgb3V0IHRoZSBsaXN0IG9mIGZp
bGVzIGZyb20gdGhlIHByZXZpb3VzIGltcG9ydAorICAgIGlmICJMaXN0IG9mIGZpbGVzXG4iIGlu
IGNvbnRlbnRzOgorICAgICAgICBsaXN0SWR4ID0gY29udGVudHMuaW5kZXgoJ0xpc3Qgb2YgZmls
ZXM6XG4nKSArIDEKKyAgICAgICAgcHJldmlvdXNMaXN0ID0gY29udGVudHNbbGlzdElkeDpdCisg
ICAgICAgIHByZXZpb3VzTGlzdCA9IG1hcChsYW1iZGEgczogcy5zdHJpcCgpLCBwcmV2aW91c0xp
c3QpCisgICAgICAgIAorICAgIGRlbGV0ZWRGaWxlcyA9IHNldChwcmV2aW91c0xpc3QpIC0gc2V0
KG5ld0ZpbGVMaXN0KQorICAgICAgCisgICAgIyBMb29wIHRocm91Z2ggYW5kIHJlbW92ZSB0aGVt
IGFsbAorICAgIGZvciBmaWxlIGluIGRlbGV0ZWRGaWxlczoKKyAgICAgICAgbG9nKCdEZWxldGlu
ZyBmaWxlIHJlbW92ZWQgZnJvbSB0aGUgVzNDIHJlcG86JyArIGZpbGUpCisgICAgICAgIGZpbGUg
PSBvcy5wYXRoLmpvaW4od2Via2l0X2RpciwgZmlsZSkKKyAgICAgICAgb3MucmVtb3ZlKGZpbGUp
CisgICAgICAgIAorICAgIGltcG9ydExvZy5jbG9zZSgpCisgICAgICAgIAorZGVmIHdyaXRlSW1w
b3J0TG9nKGRpclBhdGgsIGZpbGVMaXN0KToKKyAgICAKKyAgICBub3cgPSBkYXRldGltZS5kYXRl
dGltZS5ub3coKQorCisgICAgIyBDcmVhdGUgYSBsb2cgb2YgdGhpcyBpbXBvcnQgd2l0aCBhbGwg
c29ydHMgb2YgZ29vZCBpbmZvcm1hdGlvbgorICAgIGltcG9ydExvZyA9IG9wZW4ob3MucGF0aC5q
b2luKGRpclBhdGgsICd3M2MtaW1wb3J0LmxvZycpLCAndycpCisgICAgaW1wb3J0TG9nLndyaXRl
KCdUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS5cbicpCisgICAgaW1wb3J0TG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYmtpdC4gSW5zdGVhZCwgcHVzaCBjaGFuZ2VzIHRvIHRoZSBX
M0MgQ1NTIHJlcG86XG5cbicpCisgICAgaW1wb3J0TG9nLndyaXRlKCdodHRwOi8vaGcuY3Nzd2cu
b3JnL3Rlc3RcblxuJykKKyAgICBpbXBvcnRMb2cud3JpdGUoJ1RoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Via2l0IHRvIHJlaW1wb3J0XG5cbicpCisgICAg
aW1wb3J0TG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGVcblxuJykK
KyAgICBpbXBvcnRMb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4nKQorICAgIGltcG9ydExv
Zy53cml0ZSgnTGFzdCBJbXBvcnQ6ICcgKyBub3cuc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNIikg
KyAnXG4nKQorICAgIGltcG9ydExvZy53cml0ZSgnVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQ6ICcg
KyBjaGFuZ2VzZXQpCisgICAgaW1wb3J0TG9nLndyaXRlKCdUZXN0IHN0YXR1cyBhdCB0aW1lIG9m
IGltcG9ydDogJyArIHRlc3Rfc3RhdHVzKQorICAgIAorICAgIGltcG9ydExvZy53cml0ZSgnXG5c
bkxpc3Qgb2YgZmlsZXM6XG4nKQorICAgIGZvciBmaWxlIGluIGZpbGVMaXN0OgorICAgICAgICBp
bXBvcnRMb2cud3JpdGUoZmlsZSArICdcbicpCisgICAgICAgIAorICAgIGltcG9ydExvZy5jbG9z
ZSgpCisKKworZGVmIHZlcmJvc2UobXNnKToKKyAgICBpZiBhbnkoeCBpbiBvcHRpb25zIGZvciB4
IGluIFsnLXYnLCAnLS12ZXJib3NlJ10pOgorICAgICAgICBzdGFtcCA9IHN5cy5fZ2V0ZnJhbWUo
MSkuZl9jb2RlLmNvX25hbWUgKyIoKToiKyBzdHIoc3lzLl9nZXRmcmFtZSgxKS5mX2xpbmVubykg
KyI6ICIKKyAgICAgICAgbG9nKHN0YW1wICsgbXNnKQorCitkZWYgbG9nKG1zZyk6CisgICAgcHJp
bnQgbXNnCisgICAgCisKK2RlZiBkdW1wTWFuaWZlc3QobWFuaWZlc3QpOgorICAgIHZlcmJvc2Uo
IiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTUFOSUZFU1QgIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMiKQorICAgIAorICAgIHZlcmJvc2UoIlByZWZpeGVkIHByb3BlcnRpZXM6IikK
KyAgICBmb3IgcHJlZml4IGluIG1hbmlmZXN0WydwcmVmaXhlcyddOgorICAgICAgICB2ZXJib3Nl
KHByZWZpeCkKKyAgICAgICAgCisgICAgdmVyYm9zZSgiICIpCisgICAgCisgICAgdmVyYm9zZSgi
UmVmdGVzdHM6IikKKyAgICBmb3IgcmVmdGVzdCBpbiBtYW5pZmVzdFsncmVmdGVzdHMnXToKKyAg
ICAgICAgdmVyYm9zZSgieyIpCisgICAgICAgIHZlcmJvc2UoIiAgICIgKyByZWZ0ZXN0WyJ0ZXN0
Il0pCisgICAgICAgIHZlcmJvc2UoIiAgICIgKyByZWZ0ZXN0WyJyZWZlcmVuY2UiXSkKKyAgICAg
ICAgdmVyYm9zZSgiICAgIiArIHJlZnRlc3RbInR5cGUiXSkKKyAgICAgICAgdmVyYm9zZSgifSIp
CisgICAgCisgICAgdmVyYm9zZSgiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIpCisKKworCittYWluKCkKKwo=
</data>
<flag name="review"
          id="213246"
          type_id="1"
          status="-"
          setter="dpranke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194275</attachid>
            <date>2013-03-21 09:03:50 -0700</date>
            <delta_ts>2013-03-21 11:54:29 -0700</delta_ts>
            <desc>new patch to incorporate feedback</desc>
            <filename>bug111513.new.patch</filename>
            <type>text/plain</type>
            <size>86134</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Yzgx
NjhiLi41YmI5NTc4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisyMDEzLTAzLTIxICBSZWJlY2NhIEhhdWNrICA8cmhh
dWNrQGFkb2JlLmNvbT4KKworICAgICAgICBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGlyZWN0b3J5
IG9mIFczQyBDU1MgdGVzdHMgaW50byBXZWJLaXQuCisgICAgICAgIAorICAgICAgICBZb3UgbXVz
dCBoYXZlIGNoZWNrZWQgbG9nIHRoZSBXM0MgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZl
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBzY3JpcHQgd2lsbCBpbXBvcnQgdGhlIHRlc3RzIGlu
dG8gV2ViS2l0IGZvbGxvd2luZyB0aGVzZSBydWxlczoKKworICAgICAgICAtIE9ubHkgdGVzdHMg
dGhhdCBhcmUgYXBwcm92ZWQgb3Igb2ZmaWNpYWxseSBzdWJtaXR0ZWQgYXdhaXRpbmcgcmV2aWV3
IGFyZSBpbXBvcnRlZAorICAgICAgICAKKyAgICAgICAgLSBBbGwgdGVzdHMgYXJlIGltcG9ydGVk
IGludG8gTGF5b3V0VGVzdHMvY3Nzd2cKKyAgICAgICAgCisgICAgICAgIC0gSWYgdGhlIHRlc3Rz
IGFyZSBhcHByb3ZlZCwgdGhleSdsbCBiZSBpbXBvcnRlZCBpbnRvIGEgZGlyZWN0b3J5IHRyZWUg
dGhhdAorICAgICAgICAgIG1pcnJvcnMgdGhlIENTUyBNZXJjdXJpYWwgcmVwby4gRm9yIGV4YW1w
bGUsIDxjc3N3Z19yZXBvX3Jvb3Q+L2FwcHJvdmVkL2NzczIuMSBpcyBicm91Z2h0IGluICAgICAg
ICAgICAgICAgIAorICAgICAgICAgIGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVkL2NzczIu
MSwgbWFpbnRhaW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVyIHRoYXQK
KyAgICAgICAgCisgICAgICAgIC0gSWYgdGhlIHRlc3RzIGFyZSBzdWJtaXR0ZWQsIHRoZXknbGwg
YmUgYnJvdWdodCBpbiBhcyBMYXlvdXRUZXN0cy9jc3N3Zy9zdWJtaXR0ZWQgYW5kIHdpbGwgYWxz
bworICAgICAgICAgIG1haW50YWluIHRoZWlyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgdGhh
dC4gRm9yIGV4YW1wbGUsIGV2ZXJ5dGhpbmcgdW5kZXIKKyAgICAgICAgICA8Y3Nzd2dfcmVwb19y
b290Pi9jb250cmlidXRvcnMvYWRvYmUvc3VibWl0dGVkIGlzIGJyb3VnaHQgaW50byBzdWJtaXR0
ZWQsIG1pcnJvcmluZyBpdHMgCisgICAgICAgICAgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbiB0aGUg
Y3Nzd2cgcmVwbworCisgICAgICAgIC0gSWYgdGhlIGltcG9ydCBkaXJlY3Rvcnkgc3BlY2lmaWVk
IGlzIGp1c3QgYSBjb250cmlidXRvciBmb2xkZXIsIG9ubHkgdGhlIHN1Ym1pdHRlZCBmb2xkZXIK
KyAgICAgICAgICBmb3IgdGhhdCBjb250cmlidXRvciBpcyBicm91Z2h0IGluLiBGb3IgZXhhbXBs
ZSwgdG8gaW1wb3J0IGFsbCBvZiBNb3ppbGxhJ3MgdGVzdHMsIGVpdGhlcgorICAgICAgICAgIDxj
c3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9tb3ppbGxhIG9yIDxjc3N3Z19yZXBvX3Jvb3Q+
L2NvbnRyaWJ1dG9ycy9tb3ppbGxhL3N1Ym1pdHRlZAorICAgICAgICAgIHdpbGwgd29yayBhbmQg
YXJlIGVxdWl2YWxlbnQKKyAgICAgICAgCisgICAgICAgIC0gRm9yIHRoZSB0aW1lIGJlaW5nLCB0
aGlzIHNjcmlwdCB3b24ndCB3b3JrIGlmIHlvdSB0cnkgdG8gaW1wb3J0IHRoZSBmdWxsIHNldCBv
ZiBzdWJtaXR0ZWQKKyAgICAgICAgICB0ZXN0cyB1bmRlciBjb250cmlidXRvcnMvKi9zdWJtaXR0
ZWQuIFNpbmNlIHRoZXNlIGFyZSBhd2FpdGluZyByZXZpZXcsIHRoaXMgaXMganVzdCBhIHNtYWxs
CisgICAgICAgICAgY29udHJvbCBtZWNoYW5pc20gdG8gZW5mb3JjZSBjYXJlZnVsbHkgc2VsZWN0
aW5nIHdoYXQgbm9uLWFwcHJvdmVkIHRlc3RzIGFyZSBpbXBvcnRlZC4KKyAgICAgICAgICBJdCBj
YW4gb2J2aW91c2x5IGFuZCBlYXNpbHkgYmUgY2hhbmdlZC4KKworICAgICAgICAtIEJ5IGRlZmF1
bHQsIG9ubHkgcmVmdGVzdHMgYW5kIGpzdGVzdCBhcmUgaW1wb3J0ZWQuIFRoaXMgY2FuIGJlIG92
ZXJyaWRkZW4gd2l0aCBhIC1hIG9yIC0tYWxsCisgICAgICAgICAgYXJndW1lbnQKKworICAgICAg
ICAtIEFsc28gYnkgZGVmYXVsdCwgaWYgdGVzdCBmaWxlcyBieSB0aGUgc2FtZSBuYW1lIGFscmVh
ZHkgZXhpc3QgaW4gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSwKKyAgICAgICAgICB0aGV5IGFy
ZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBpZGVhIHRoYXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3Vs
ZCByZWZyZXNoIGZpbGVzIHBlcmlvZGljYWxseS4KKyAgICAgICAgICBUaGlzIGNhbiBhbHNvIGJl
IG92ZXJyaWRkZW4gYnkgYSAtbiBvciAtLW5vLW92ZXJ3cml0ZSBmbGFnCisKKyAgICAgICAgLSBB
bGwgZmlsZXMgYXJlIGNvbnZlcnRlZCB0byB3b3JrIGluIFdlYktpdDoKKyAgICAgICAgICAgIDEu
IC54aHQgZXh0ZW5zaW9ucyBhcmUgY2hhbmdlZCB0byAueGh0bWwgdG8gbWFrZSBuZXctcnVuLXdl
YmtpdC10ZXN0cyBoYXBweQorICAgICAgICAgICAgMi4gUGF0aHMgdG8gdGVzdGhhcm5lc3MuanMg
ZmlsZXMgYXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbgorICAg
ICAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNvcnJlY3QgcmVs
YXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KKyAgICAgICAgICAgIDMuIEFsbCBDU1Mg
cHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtdmVuZG9yIHByZWZpeCBhcmUgcHJlZml4
ZWQgLSB0aGlzIGN1cnJlbnQKKyAgICAgICAgICAgICAgIGxpc3Qgb2Ygd2hhdCBuZWVkcyBwcmVm
aXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnRpZXMuaW4KKyAg
ICAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5IG9mIGl0cyByZWZlcmVu
Y2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucworICAgICAgICAgICAgICAg
bmV3LXJ1bi13ZWJraXQtdGVzdHMgZXhwZWN0cworICAgICAgICAgICAgNS4gSWYgYSBhIHJlZmVy
ZW5jZSBmaWxlcyBsaXZlcyBvdXRzaWRlIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHRlc3QgdGhhdCB1
c2VzIGl0LCBpdCBpcyBjaGVja2VkCisgICAgICAgICAgICAgICBmb3IgcGF0aHMgdG8gc3VwcG9y
dCBmaWxlcyBhcyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQgcmVsYXRpdmUg
cG9zaXRpb24gdG8gdGhlCisgICAgICAgICAgICAgICB0ZXN0IGZpbGUgKGluIHRoZSBzYW1lIGRp
cmVjdG9yeSkKKyAgICAgICAgCisgICAgICAgIC0gVXBvbiBjb21wbGV0aW9uLCBzY3JpcHQgZGlz
cGxheXMgdGhlIHRvdGFsIG51bWJlciB0ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVz
dCB0eXBlCisKKyAgICAgICAgLSBBbHNvIHVwb24gY29tcGxldGlvbiwgZWFjaCBkaXJlY3Rvcnkg
d2hlcmUgZmlsZXMgYXJlIGltcG9ydGVkIHdpbGwgaGF2ZSB3M2MtaW1wb3J0LmxvZyB3cml0dGVu
CisgICAgICAgICAgd2l0aCBhIHRpbWVzdGFtcCwgdGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0
IGlmIGF2YWlsYWJsZSwgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0aGF0CisgICAg
ICAgICAgcmVxdWlyZSBwcmVmaXhlcywgdGhlIGxpc3Qgb2YgaW1wb3J0ZWQgZmlsZXMsIGFuZCBn
dWlkYW5jZSBmb3IgZnV0dXJlIHRlc3QgbW9kaWZpY2F0aW9uIGFuZAorICAgICAgICAgIG1haW50
ZW5hbmNlLgorCisgICAgICAgIC0gT24gc3Vic2VxdWVudCBpbXBvcnRzLCB0aGlzIGZpbGUgaXMg
cmVhZCB0byBkZXRlcm1pbmUgaWYgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5ld2Vy
IGNoYW5nZXNldHMuCisgICAgICAgICAgVGhlIHNjcmlwdCByZW1vdmVzIHRoZXNlIGZpbGVzIGFj
Y29yZGluZ2x5LgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRlc3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1MTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvaW1wb3J0LXczYy10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93
M2MvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfY29udmVydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIpOgorICAgICAg
ICAoVGVzdENvbnZlcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0Q29udmVydGVyLmxvYWRf
cHJlZml4ZWRfcHJvcF9saXN0KToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIubG9hZF9maWxlKToK
KyAgICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KToKKyAgICAgICAgKFRl
c3RDb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyk6CisgICAgICAgIChUZXN0Q29u
dmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgIChUZXN0Q29udmVy
dGVyLnNjcnViX3VucHJlZml4ZWRfcHJvcHMpOgorICAgICAgICAoVGVzdENvbnZlcnRlci5yZXBs
YWNlX3RhZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QpOgorICAgICAg
ICAoVGVzdENvbnZlcnRlclRlc3QudGVzdExvYWRQcmVmaXhlZFByb3BMaXN0KToKKyAgICAgICAg
KFRlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfY29udmVydEZvcldlYmtpdE5vdGhpbmdUb0NvbnZlcnQp
OgorICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkpOgorICAgICAgICAo
dGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNPbmx5KToKKyAgICAgICAgKHRlc3RfY29udmVydEZv
cldlYmtpdEhhcm5lc3NBbmRQcm9wcyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRUZXN0SGFybmVz
c1BhdGhzKToKKyAgICAgICAgKHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGllcyk6CisgICAg
ICAgICh2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHZlcmlmeVByZWZpeGVkUHJv
cGVydGllcyk6CisgICAgICAgIChnZW5lcmF0ZVRlc3RDb250ZW50KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKG1haW4p
OgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgICh2YWxpZGF0ZV9pbXBvcnRfZGlyZWN0
b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlcik6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuX19p
bml0X18pOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6CisgICAgICAgIChUZXN0
SW1wb3J0ZXIuZ2V0X2NoYW5nZXNldCk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuc2Nhbl9zb3Vy
Y2VfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVzdHMpOgorICAg
ICAgICAoVGVzdEltcG9ydGVyLnNldHVwX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeSk6CisgICAgICAg
IChUZXN0SW1wb3J0ZXIuZ2V0X3Rlc3Rfc3RhdHVzKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5y
ZW1vdmVfZGVsZXRlZF9maWxlcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3JpdGVfaW1wb3J0
X2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0
dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0KToKKyAgICAgICAgKFRl
c3RJbXBvcnRlclRlc3QudGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6IEFkZGVkLgorICAgICAgICAoVGVzdFBh
cnNlcik6CisgICAgICAgIChUZXN0UGFyc2VyLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RQYXJz
ZXIubG9hZF9maWxlKToKKyAgICAgICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0KToKKyAgICAg
ICAgKFRlc3RQYXJzZXIuZ2V0X3JlZnRlc3RzKToKKyAgICAgICAgKFRlc3RQYXJzZXIuaXNfanN0
ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3N1cHBvcnRfZmlsZXMpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAg
ICAgICAgKFRlc3RQYXJzZXJUZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0LnRlc3RfYW5h
bHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2gpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJlZnRl
c3RNdWx0aXBsZU1hdGNoZXMpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJlZnRlc3RNYXRj
aEFuZE1pc21hdGNoKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0V2l0aFJlZlN1
cHBvcnRGaWxlcyk6CisgICAgICAgICh0ZXN0X2FuYWx5emVKU1Rlc3QpOgorICAgICAgICAodGVz
dF9hbmFseXplUGl4ZWxUZXN0QWxsVHJ1ZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVQaXhlbFRl
c3RBbGxGYWxzZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVOb25IVE1MRmlsZSk6CisKIDIwMTMt
MDMtMjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtX
aW5DYWlyb10gVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFRlc3RXZWJLaXRBUEkgdW5kZXIgVlMy
MDEwCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgYi9Ub29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MC4uYTk4NzdiYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cwpAQCAtMCwwICsxLDMxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHB5
LnczYyBpbXBvcnQgdGVzdF9pbXBvcnRlcgorCisKK3N5cy5leGl0KHRlc3RfaW1wb3J0ZXIubWFp
bihzeXMuYXJndlsxOl0sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
NjlkZTI5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZl
cnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NTNkZmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQpAQCAtMCww
ICsxLDI0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBp
bXBvcnQgQmVhdXRpZnVsU291cCBhcyBQYXJzZXIKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5C
ZWF1dGlmdWxTb3VwIGltcG9ydCBUYWcKK2ltcG9ydCByZQoraW1wb3J0IG9zCisKK1NPVVJDRV9T
VUJESVIgPSAnU291cmNlJworV0VCQ09SRV9TVUJESVIgPSAnV2ViQ29yZScKK0NTU19TVUJESVIg
PSAnY3NzJworQ1NTX1BST1BFUlRZX05BTUVTX0lOID0gJ0NTU1Byb3BlcnR5TmFtZXMuaW4nCitM
QVlPVVRfVEVTVFNfRElSRUNUT1JZID0gJ0xheW91dFRlc3RzJworUkVTT1VSQ0VTX0RJUkVDVE9S
WSA9ICdyZXNvdXJjZXMnCitXRUJLSVRfUk9PVCA9IF9fZmlsZV9fLnNwbGl0KG9zLnBhdGguc2Vw
ICsgJ1Rvb2xzJylbMF0KKworCitjbGFzcyBUZXN0Q29udmVydGVyKG9iamVjdCk6CisKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisKKyAgICAgICAgc2VsZi5wcmVmaXhlZF9wcm9wZXJ0aWVzID0g
c2VsZi5sb2FkX3ByZWZpeGVkX3Byb3BfbGlzdCgpCisKKyAgICBkZWYgbG9hZF9wcmVmaXhlZF9w
cm9wX2xpc3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWFkcyB0aGUgY3VycmVudCBs
aXN0IG9mIENTUyBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUKKyAgICAgICAgLXdlYmtpdC0gcHJl
Zml4IGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnR5TmFtZXMuaW4gYW5kCisgICAg
ICAgIHN0b3JlcyB0aGVtIGluIGFuIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgICIiIgorCisg
ICAgICAgIHByZWZpeGVkX3Byb3BfbGlzdCA9IFtdCisKKyAgICAgICAgIyBPcGVuIENTU1Byb3Bl
cnR5TmFtZXMuaW4gdG8gZ2V0IHRoZSBjdXJyZW50IGxpc3Qgb2YgdGhpbmdzIHJlcXVpcmluZyBw
cmVmaXhlcworICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIFdFQktJ
VF9ST09ULCBTT1VSQ0VfU1VCRElSLCBXRUJDT1JFX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfU1VCRElSLCBDU1NfUFJPUEVSVFlfTkFNRVNf
SU4pKQorICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgZm9yIGxpbmUgaW4g
bGluZXM6CisgICAgICAgICAgICAjIExvb2sgZm9yIGFueXRoaW5nIHdpdGggdGhlIC13ZWJraXQt
IHByZWZpeAorICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ14td2Via2l0LVtcd3wtXSon
LCBsaW5lKQorICAgICAgICAgICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgIyBJZ25vcmUgdGhlIG9uZXMgd2hlcmUgYm90aCB0aGUgcHJlZml4ZWQgYW5kIG5vbi1wcmVm
aXhlZCBwcm9wZXJ0eQorICAgICAgICAgICAgICAgICMgYXJlIHN1cHBvcnRlZCAtIGRlbm90ZWQg
YnkgLXdlYmtpdC1zb21lLXByb3BlcnR5ID0gc29tZS1wcm9wZXJ0eQorICAgICAgICAgICAgICAg
IGlmIGxlbihsaW5lLnNwbGl0KCc9JykpID09IDIgYW5kIFwKKyAgICAgICAgICAgICAgICAgICBs
aW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKSBpbiBsaW5lLnNwbGl0KCc9JylbMF0uc3RyaXAoKToK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wX2xpc3QuYXBwZW5kKG1hdGNoLmdyb3VwKDAp
KQorCisgICAgICAgIHJldHVybiBwcmVmaXhlZF9wcm9wX2xpc3QKKworICAgIGRlZiBsb2FkX2Zp
bGUoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgT3BlbnMgdGhlIHRlc3Qg
ZmlsZSB0byBjb252ZXJ0CisKKyAgICAgICAgQHJldHVybjogdGhlIGNvbnRlbnRzIG9mIHRoZSBm
aWxlIGFzIGEgc3RyaW5nCisgICAgICAgICIiIgorCisgICAgICAgIGYgPSBvcGVuKGZpbGVuYW1l
KQorICAgICAgICBjb250ZW50cyA9IGYucmVhZCgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAg
ICAgIHJldHVybiBjb250ZW50cworCisgICAgZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChzZWxmLCBu
ZXdfcGF0aCwgY29udGVudHM9Tm9uZSwgZmlsZW5hbWU9Tm9uZSk6CisgICAgICAgICIiIgorICAg
ICAgICBDb252ZXJ0cyBhIHRlc3QgZmlsZSBzbyBpdCB3aWxsIGZ1bmN0aW9uIGNvcnJlY3RseSBp
biBXZWJraXQKKworICAgICAgICBAcGFyYW0gbmV3X3BhdGg6IHRoZSBuZXcgbG9jYXRpb24gb2Yg
d2hlcmUgdGhlIHRlc3QgZmlsZSB3aWxsIGxpdmUKKyAgICAgICAgQHBhcmFtIGNvbnRlbnRzOiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXMgYSBzdHJpbmcuIElmIG5vdCBzcGVjZmllZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29udGVudHMgd2lsbCBiZSBsb2FkZWQgd2l0aCBs
b2FkX2ZpbGUoKQorCisgICAgICAgIEByZXR1cm46IFR1cGxlIChsaXN0IG9mIENTUyBwcm9wZXJ0
aWVzIGNvbnZlcnRlZCwgdGhlIG1vZGlmaWVkIGRvY3VtZW50IGFzIGEgc3RyaW5nKQorICAgICAg
ICAgICAgICAgICBSZXR1cm5zIE5vbmUgaWYgbm8gbW9kaWZpY2F0aW9ucyB3ZXJlIG1hZGUKKyAg
ICAgICAgIiIiCisKKyAgICAgICAgaWYgY29udGVudHMgaXMgTm9uZSBhbmQgZmlsZW5hbWUgaXMg
Tm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgY29udGVudHMgaXMg
Tm9uZToKKyAgICAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5sb2FkX2ZpbGUoZmlsZW5hbWUpCisK
KyAgICAgICAgIyBIYW5kbGUgcGxhaW4gb2xkIENTUyBmaWxlcworICAgICAgICBpZiBmaWxlbmFt
ZS5lbmRzd2l0aCgnLmNzcycpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NydWJfdW5wcmVm
aXhlZF9wcm9wcyhjb250ZW50cykKKworICAgICAgICAjIE90aGVyd2lzZSwgcGFyc2UgaXQgYXMg
aWYgSFRNTAorICAgICAgICBkb2MgPSBQYXJzZXIoY29udGVudHMpCisgICAgICAgIGpzdGVzdCA9
IHNlbGYuY29udmVydF90ZXN0aGFybmVzc19wYXRocyhkb2MsIG5ld19wYXRoKQorICAgICAgICBj
b252ZXJ0ZWQgPSBzZWxmLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhkb2MpCisKKyAgICAg
ICAgaWYgbGVuKGNvbnZlcnRlZFswXSkgPiAwIG9yIGpzdGVzdCBpcyBUcnVlOgorICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRlZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBjb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKHNlbGYsIGRvYywgbmV3X3Bh
dGgpOgorICAgICAgICAiIiIKKyAgICAgICAgU2VhcmNoZXMgYSBkb2N1bWVudCBmb3IgVzNDLXN0
eWxlIHBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZpbGVzCisgICAgICAgIGFuZCBtb2RpZmllcyB0
aGVtIHRvIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbiBMYXlvdXRUZXN0cy9yZXNv
dXJjZXMKKworICAgICAgICBAcGFyYW0gZG9jOiBhIEJlYXV0aWZ1bFNvdXAgZG9jdW1lbnQKKyAg
ICAgICAgQHBhcmFtIG5ld19wYXRoOiB0aGUgbmV3IGxvY2F0aW9uIG9mIHdoZXJlIHRoZSB0ZXN0
IGZpbGUgd2lsbCBsaXZlCisKKyAgICAgICAgQHJldHVybiBUcnVlIGlmIGNoYW5nZXMgd2VyZSBt
YWRlCisgICAgICAgICIiIgorCisgICAgICAgICMgTG9vayBmb3IgdGhlIFczQy1zdHlsZSBwYXRo
IHRvIGFueSB0ZXN0aGFybmVzcyBmaWxlcyAtIHNjcmlwdHMgKC5qcykgb3IgbGlua3MgKC5jc3Mp
CisgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykK
KyAgICAgICAgc2NyaXB0X3RhZ3MgPSBkb2MuZmluZEFsbChzcmM9cGF0dGVybikKKyAgICAgICAg
bGlua190YWdzID0gZG9jLmZpbmRBbGwoaHJlZj1wYXR0ZXJuKQorICAgICAgICB0ZXN0aGFybmVz
c190YWdzID0gc2NyaXB0X3RhZ3MgKyBsaW5rX3RhZ3MKKworICAgICAgICBpZiBsZW4odGVzdGhh
cm5lc3NfdGFncykgIT0gMDoKKworICAgICAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIHJlbGF0aXZl
IHBhdGggZnJvbSB0aGUgbmV3IGRpcmVjdG9yeSB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAg
ICAgICAgICAgIHJlc291cmNlc19wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBXRUJL
SVRfUk9PVCwgTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwgUkVTT1VSQ0VTX0RJUkVDVE9SWSkKKyAg
ICAgICAgICAgIHJlc291cmNlc19yZWxwYXRoID0gb3MucGF0aC5yZWxwYXRoKHJlc291cmNlc19w
YXRoLCBuZXdfcGF0aCkKKworICAgICAgICAgICAgZm9yIHRhZyBpbiB0ZXN0aGFybmVzc190YWdz
OgorICAgICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgdGFnIHdpdGggdGhlIGNvcnJlY3QgcGF0
aAorICAgICAgICAgICAgICAgIGF0dHIgPSAnc3JjJworICAgICAgICAgICAgICAgIGlmIHRhZy5u
YW1lICE9ICdzY3JpcHQnOgorICAgICAgICAgICAgICAgICAgICBhdHRyID0gJ2hyZWYnCisKKyAg
ICAgICAgICAgICAgICAjIEJ1aWxkIGEgbmV3IHRhZyB3aXRoIHRoZSBjb3JyZWN0IHJlbGF0aXZl
IHBhdGgKKyAgICAgICAgICAgICAgICBvbGRfcGF0aCA9IHRhZ1thdHRyXQorICAgICAgICAgICAg
ICAgIG5ld190YWcgPSBUYWcoZG9jLCB0YWcubmFtZSwgdGFnLmF0dHJzKQorICAgICAgICAgICAg
ICAgIG5ld190YWdbYXR0cl0gPSByZS5zdWIocGF0dGVybiwgcmVzb3VyY2VzX3JlbHBhdGggKyAn
L3Rlc3RoYXJuZXNzJywgb2xkX3BhdGgpCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUg
ZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFnKGRv
YywgdGFnLCBuZXdfdGFnKQorCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgY29udmVydF9wcmVmaXhlZF9w
cm9wZXJ0aWVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIgorICAgICAgICBTZWFyY2hlcyBhIGRv
Y3VtZW50IGZvciBhbnkgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVm
aXgKKyAgICAgICAgYW5kIGNvbnZlcnRzIHRoZW0gdG8gdGhlIHByZWZpeGVkIHZlcnNpb24KKwor
ICAgICAgICBAcGFyYW0gZG9jOiBhIEJlYXV0aWZ1bFNvdXAgZG9jdW1lbnQKKworICAgICAgICBA
cmV0dXJuOiBUdXBsZSAtIChsaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGNvbnZlcnRlZCwgdGhlIG1v
ZGlmaWVkIGRvY3VtZW50IGFzIGEgc3RyaW5nKQorICAgICAgICAiIiIKKworICAgICAgICBjb252
ZXJ0ZWRfcHJvcHMgPSBbXQorCisgICAgICAgICMgTG9vayBmb3IgaW5saW5lIGFuZCBkb2N1bWVu
dCBzdHlsZXMKKyAgICAgICAgaW5saW5lX3N0eWxlcyA9IGRvYy5maW5kQWxsKHN0eWxlPXJlLmNv
bXBpbGUoJy4qJykpCisgICAgICAgIHN0eWxlX3RhZ3MgPSBkb2MuZmluZEFsbCgnc3R5bGUnKQor
ICAgICAgICBhbGxfc3R5bGVzID0gaW5saW5lX3N0eWxlcyArIHN0eWxlX3RhZ3MKKworICAgICAg
ICBmb3IgdGFnIGluIGFsbF9zdHlsZXM6CisKKyAgICAgICAgICAgICMgR2V0IHRoZSB0ZXh0IHdo
ZXRoZXIgaW4gYSBzdHlsZSB0YWcgb3Igc3R5bGUgYXR0cmlidXRlCisgICAgICAgICAgICBzdHls
ZV90ZXh0ID0gJycKKyAgICAgICAgICAgIGlmIHRhZy5uYW1lID09ICdzdHlsZSc6CisgICAgICAg
ICAgICAgICAgaWYgbGVuKHRhZy5jb250ZW50cykgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzdHls
ZV90ZXh0ID0gdGFnLmNvbnRlbnRzWzBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHN0eWxlX3RleHQgPSB0YWdbJ3N0eWxlJ10KKworICAgICAgICAgICAgIyBTY3J1YiBpdCBm
b3IgcHJvcHMgcmVxdWlyaW5nIHByZWZpeGVzCisgICAgICAgICAgICBzY3J1YmJlZF9zdHlsZSA9
IHNlbGYuc2NydWJfdW5wcmVmaXhlZF9wcm9wcyhzdHlsZV90ZXh0KQorCisgICAgICAgICAgICAj
IFJld3JpdGUgdGFnIG9ubHkgaWYgY2hhbmdlcyB3ZXJlIG1hZGUKKyAgICAgICAgICAgIGlmIGxl
bihzY3J1YmJlZF9zdHlsZVswXSkgPiAwOgorICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9wcm9w
cy5leHRlbmQoc2NydWJiZWRfc3R5bGVbMF0pCisKKyAgICAgICAgICAgICAgICAjIEJ1aWxkIGEg
bmV3IHRhZyB3aXRoIHRoZSBtb2RpZmllZCB0ZXh0CisgICAgICAgICAgICAgICAgbmV3X3RhZyA9
IFRhZyhkb2MsIHRhZy5uYW1lLCB0YWcuYXR0cnMpCisgICAgICAgICAgICAgICAgbmV3X3RhZy5p
bnNlcnQoMCwgc2NydWJiZWRfc3R5bGVbMV0pCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0
aGUgZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFn
KGRvYywgdGFnLCBuZXdfdGFnKQorCisgICAgICAgIHJldHVybiAoY29udmVydGVkX3Byb3BzLCBk
b2MucHJldHRpZnkoKSkKKworICAgIGRlZiBzY3J1Yl91bnByZWZpeGVkX3Byb3BzKHNlbGYsIHRl
eHQpOgorICAgICAgICAiIiIKKyAgICAgICAgU2VhcmNoZXMgYSBzdHJpbmcgZm9yIGluc3RhbmNl
cyBvZiBwcm9wZXJ0aWVzIHRoYXQKKyAgICAgICAgcmVxdWlyZSB0aGUgLXdlYmtpdC0gcHJlZml4
IGFuZCBhZGRzIHRoZSBwcmVmaXgKKworICAgICAgICBAcGFyYW0gdGV4dDogdGhlIHN0cmluZyB0
byBzZWFyY2gKKworICAgICAgICBAcmV0dXJuOiBUdXBsZSAobGlzdCBvZiBDU1MgcHJvcGVydGll
cyBjb252ZXJ0ZWQsIHRoZSBtb2RpZmllZCBzdHJpbmcpCisgICAgICAgICIiIgorCisgICAgICAg
IGNvbnZlcnRlZF9wcm9wcyA9IFtdCisKKyAgICAgICAgIyBTcGluIHRocm91Z2ggdGhlIHdob2xl
IGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVydGllcworICAgICAgICBmb3IgcHJlZml4ZWRfcHJvcCBp
biBzZWxmLnByZWZpeGVkX3Byb3BlcnRpZXM6CisKKyAgICAgICAgICAgICMgUHVsbCB0aGUgcHJl
Zml4IG9mZgorICAgICAgICAgICAgdW5wcmVmaXhlZF9wcm9wID0gcHJlZml4ZWRfcHJvcC5yZXBs
YWNlKCctd2Via2l0LScsICcnKQorCisgICAgICAgICAgICAjIExvb2sgZm9yIHRoZSB2YXJpb3Vz
IHdheXMgaXQgbWlnaHQgYmUgaW4gdGhlIENTUworICAgICAgICAgICAgIyBNYXRjaCB0aGUgdGhl
IHByb3BlcnR5IHByZWNlZGVkIGJ5IGVpdGhlciB3aGl0ZXNwYWNlIG9yIGxlZnQgY3VybHkgYnJh
Y2UKKyAgICAgICAgICAgICMgb3IgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIChmb3Ig
aW5saW5lIHN0eWxlIGF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHBhdHRlcm4gPSAnKFtcc3tdfF4p
JyArIHVucHJlZml4ZWRfcHJvcCArICcoXHMrOnw6KScKKyAgICAgICAgICAgIGlmIHJlLnNlYXJj
aChwYXR0ZXJuLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwcmludCAnY29udmVydGluZyAnICsg
dW5wcmVmaXhlZF9wcm9wICsgJyAtPiAnICsgcHJlZml4ZWRfcHJvcAorICAgICAgICAgICAgICAg
IGNvbnZlcnRlZF9wcm9wcy5hcHBlbmQocHJlZml4ZWRfcHJvcCkKKyAgICAgICAgICAgICAgICB0
ZXh0ID0gcmUuc3ViKHBhdHRlcm4sIHByZWZpeGVkX3Byb3AgKyAnOicsIHRleHQpCisKKyAgICAg
ICAgIyBUT0RPOiBIYW5kbGUgdGhlIEpTIHZlcnNpb25zIG9mIHRoZXNlIHByb3BlcnRpZXMsIHRv
by4KKworICAgICAgICByZXR1cm4gKGNvbnZlcnRlZF9wcm9wcywgdGV4dCkKKworICAgIGRlZiBy
ZXBsYWNlX3RhZyhzZWxmLCBkb2MsIG9sZF90YWcsIG5ld190YWcpOgorICAgICAgICAiIiIKKyAg
ICAgICAgSW5zZXJ0cyBhIG5ldyB0YWcgaW50byBhIEJlYXV0aWZ1bFNvdXAgZG9jIGFuZCByZW1v
dmVzIHRoZSBvbGQgdGFnCisKKyAgICAgICAgQHBhcmFtIGRvYzogdGhlIEJlYXV0aWZ1bFNvdXAg
ZG9jCisgICAgICAgIEBwYXJhbSBvbGRfdGFnOiB0aGUgb2xkIHRhZyB0byByZW1vdmUKKyAgICAg
ICAgQHBhcmFtIG5ld190YWc6IHRoZSBuZXcgdGFnIHRvIGluc2VydAorICAgICAgICAiIiIKKwor
ICAgICAgICAjIFJlcGxhY2UgdGhlIHByZXZpb3VzIHRhZyB3aXRoIHRoZSBuZXcgb25lCisgICAg
ICAgIGluZGV4ID0gb2xkX3RhZy5wYXJlbnQuY29udGVudHMuaW5kZXgob2xkX3RhZykKKyAgICAg
ICAgb2xkX3RhZy5wYXJlbnQuaW5zZXJ0KGluZGV4LCBuZXdfdGFnKQorICAgICAgICBvbGRfdGFn
LmV4dHJhY3QoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9j
b252ZXJ0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2Nv
bnZlcnRlcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
MDdmNTQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw0NTAgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAoraW1w
b3J0IG9zCitmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZGludAoraW1wb3J0IHJlCitmcm9tIHdlYmtp
dHB5LnczYy50ZXN0X2NvbnZlcnRlciBpbXBvcnQgVGVzdENvbnZlcnRlcgorZnJvbSB3ZWJraXRw
eS53M2MgaW1wb3J0IHRlc3RfY29udmVydGVyCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0
CisKKworY2xhc3MgVGVzdENvbnZlcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAg
ZGVmIHRlc3RMb2FkUHJlZml4ZWRQcm9wTGlzdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFRlc3RzIHRoYXQgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZworICAg
ICAgICB0aGUgLXdlYmtpdC0gcHJlZml4IGxvYWQgY29ycmVjdGx5CisgICAgICAgICIiIgorCisg
ICAgICAgICMgR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVydGllcworICAgICAg
ICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgcHJvcF9saXN0ID0gY29udmVy
dGVyLnByZWZpeGVkX3Byb3BlcnRpZXMKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgcHJvcGVy
dGllcyBiYWNrCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocHJvcF9saXN0KSwgMCwg
J05vIHByZWZpeGVkIHByb3BlcnRpZXMgZm91bmQnKQorCisgICAgICAgICMgVmVyaWZ5IHRoZXkn
cmUgYWxsIHByZWZpeGVkCisgICAgICAgIGZvciBwcm9wIGluIHByb3BfbGlzdDoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9wLnN0YXJ0c3dpdGgoJy13ZWJraXQtJykpCisKKyAgICBk
ZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0Tm90aGluZ1RvQ29udmVydChzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgdGVz
dAorICAgICAgICB0aGF0IGhhcyBub3RoaW5nIHRvIGNvbnZlcnQKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBY
SFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3ho
dG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRs
ZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCitocmVmPSJtYWls
dG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJSRUxFVkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0i
VEVTVCBBU1NFUlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1Mg
Rk9SIFRFU1QKK11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAor
PC9ib2R5PgorPC9odG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIo
KQorCisgICAgICAgICMgVHJ5IHRvIGNvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVk
ID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdCgnL25vdGhpbmcvdG8vY29udmVydCcsIGNv
bnRlbnRzPXRlc3RfaHRtbCwgZmlsZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMg
VmVyaWZ5IG5vdGhpbmcgd2FzIGNvbnZlcnRlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2FzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbnZlcnRlZCcp
CisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBUZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2lj
IEpTIHRlc3QgdGhhdCB1c2VzCisgICAgICAgIHRlc3RoYXJuZXNzLmpzIG9ubHkgYW5kIGhhcyBu
byBwcmVmaXhlZCBwcm9wZXJ0aWVzCisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9
ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8v
RU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+
Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0
aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1
dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6
Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19T
RUNUSU9OIi8+Cis8bGluayBocmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJz
dHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1Qg
QVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBU
RVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9k
eT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKwor
ICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0
ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJ
VF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFybmVzc29ubHkn
KQorCisgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252
ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3RfcGF0aCwgY29udGVudHM9dGVzdF9odG1sLCBm
aWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9u
IGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAn
dGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRo
ZSBoYXJuZXNzIHBhdGhzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQorICAgICAgICBzZWxmLnZl
cmlmeVRlc3RIYXJuZXNzUGF0aHMoY29udmVydGVkWzFdLCB0ZXN0X3BhdGgsIDEsIDEpCisKKyAg
ICAgICAgIyBWZXJpZnkgbm8gcHJvcGVydGllcyB3ZXJlIGNvbnZlcnRlZAorICAgICAgICBzZWxm
LnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIFtdKQorCisgICAgZGVmIHRlc3Rf
Y29udmVydEZvcldlYmtpdFByb3BzT25seShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRl
c3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGhhcworICAgICAgICAy
IHByZWZpeGVkIHByb3BlcnRpZXMgLQorICAgICAgICAxIGluIGEgc3R5bGUgYmxvY2sgKyAxIGlu
bGluZSBzdHlsZQorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZ
UEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6
Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRl
c3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxl
PSJOQU1FX09GX0FVVEhPUiIKK2hyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9Q
QUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgor
PGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIv
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworI2Jsb2NrMSB7IEB0ZXN0MEA6
IHByb3B2YWx1ZTsgfQorCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJl
bGVtMSIgc3R5bGU9IkB0ZXN0MUA6IHByb3B2YWx1ZTsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgorIiIiCisKKyAgICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRlcigpCisKKyAgICAgICAg
IyBDcmVhdGUgcGF0aCB0byBhIGZha2UgdGVzdCBkaXJlY3RvcnkKKyAgICAgICAgdGVzdF9wYXRo
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRfUk9PVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZl
cnRlci5MQVlPVVRfVEVTVFNfRElSRUNUT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkNTU19TVUJESVIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcm5lc3NhbmRwcm9wcycpCisK
KyAgICAgICAgIyBHZW5lcmF0ZSAmIGluc2VydCB0aGUgdGVzdCBwcm9wZXJ0aWVzIGludG8gdGhl
IHRlc3RfaHRtbAorICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlVGVzdENvbnRl
bnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDIsIHRlc3RfaHRtbCkKKworICAgICAg
ICAjIENvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZl
cnRfZm9yX3dlYmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfY29udGVudFsxXSwgZmlsZW5h
bWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBw
ZW5lZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qg
d2FzIG5vdCBjb252ZXJ0ZWQnKQorCisgICAgICAgICMgVmVyaWZ5IHRoYXQgYm90aCB0aGUgaGFy
bmVzcyBwYXRocyBhbmQgcHJvcGVydGllcyB3ZXJlIGFsbCBjb252ZXJ0ZWQgY29ycmVjdGx5Cisg
ICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhjb252ZXJ0ZWRbMV0sIHRlc3RfcGF0
aCwgMSwgMSkKKyAgICAgICAgc2VsZi52ZXJpZnlQcmVmaXhlZFByb3BlcnRpZXMoY29udmVydGVk
LCB0ZXN0X2NvbnRlbnRbMF0pCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVz
c0FuZFByb3BzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdHMgY29udmVydF9mb3Jf
d2Via2l0KCkgdXNpbmcgYSBiYXNpYyBKUyB0ZXN0IHRoYXQgdXNlcworICAgICAgICB0ZXN0aGFy
bmVzcy5qcyBhbmQgdGVzdGhhcm5lc3MuY3NzIGFuZCBoYXMgNCBwcmVmaXhlZCBwcm9wZXJ0aWVz
IC0KKyAgICAgICAgMyBpbiBhIHN0eWxlIGJsb2NrICsgMSBpbmxpbmUgc3R5bGUKKyAgICAgICAg
IiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
M0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRt
bDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBU
RVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCito
cmVmPSJtYWlsdG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJSRUxFVkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iVEVTVCBBU1NFUlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+PCFbQ0RBVEFbCisKKyNibG9jazEgeyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKyNibG9j
azIgeyBAdGVzdDFAOiBwcm9wdmFsdWU7IH0KKyNibG9jazMgeyBAdGVzdDJAOiBwcm9wdmFsdWU7
IH0KKworXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxl
PSJAdGVzdDNAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAg
ICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRo
IHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9U
RVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaGFybmVzc2FuZHByb3BzJykKKworICAgICAgICAjIEdl
bmVyYXRlICYgaW5zZXJ0IHRoZSB0ZXN0IHByb3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisg
ICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIu
cHJlZml4ZWRfcHJvcGVydGllcywgNCwgdGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0
aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0
KHRlc3RfcGF0aCwgY29udGVudHM9dGVzdF9jb250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUu
aHRtbCcpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAg
IHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZl
cnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIGFu
ZCBwcm9wZXJ0aWVzIHdlcmUgYWxsIGNvbnZlcnRlZCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi52
ZXJpZnlUZXN0SGFybmVzc1BhdGhzKGNvbnZlcnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQorICAg
ICAgICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVu
dFswXSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRUZXN0SGFybmVzc1BhdGhzKHNlbGYpOgorICAg
ICAgICAiIiIKKyAgICAgICAgVGVzdHMgY29udmVydF90ZXN0aGFybmVzc19wYXRocygpIHdpdGgg
YSB0ZXN0IHRoYXQgdXNlcyBhbGwgdGhyZWUgdGVzdGhhcm5lc3MgZmlsZXMKKyAgICAgICAgIiIi
CisKKyAgICAgICAgIyBCYXNpYyB0ZXN0IGNvbnRlbnQgdXNpbmcgYWxsIHRocmVlIHRlc3RoYXJu
ZXNzIGZpbGVzCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIv
eGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04g
T0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9S
IgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8bGluayBocmVmPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBj
b252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEg
ZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19E
SVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3NwYXRocycpCisKKyAgICAgICAgIyBDb252ZXJ0
IHRoZSBodG1sCisgICAgICAgIGRvYyA9IEJlYXV0aWZ1bFNvdXAodGVzdF9odG1sKQorICAgICAg
ICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyhkb2MsIHRl
c3RfcGF0aCkKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGNvbnZlcnRlZCwgJ3Rlc3Qgd2FzIG5vdCBjb252ZXJ0ZWQnKQor
CisgICAgICAgICMgVmVyaWZ5IGFsbCBnb3QgY29udmVydGVkIGNvcnJlY3RseQorICAgICAgICBz
ZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoZG9jLCB0ZXN0X3BhdGgsIDIsIDEpCisKKyAgICBk
ZWYgdGVzdF9jb252ZXJ0UHJlZml4ZWRQcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgVGVzdHMgY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKCkgZmlsZSB0aGF0IGhhcyAy
MCBwcm9wZXJ0aWVzCisgICAgICAgIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IC0gMTAg
aW4gb25lIHN0eWxlIGJsb2NrICsgNSBpbiBhbm90aGVyIHN0eWxlCisgICAgICAgIGJsb2NrICsg
NSBpbmxpbmUgc3R5bGVzLCBpbmNsdWRpbmcgb25lIHdpdGggbXVsdGlwbGUgcHJlZml4ZWQgcHJv
cGVydGllcy4KKyAgICAgICAgVGhlIHByb3BlcnRpZXMgaW4gdGhlIHRlc3QgY29udGVudCBhcmUg
aW4gYWxsIHNvcnRzIG9mIHdhY2sgZm9ybWF0dGluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
dGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAx
LjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1z
dHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4K
KzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxs
aW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCitocmVmPSJtYWlsdG86RU1B
SUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJSRUxF
VkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImdyZWVuLWJveC1y
ZWYueGh0IiAvPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIv
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMSB7CisgICAgd2lk
dGg6IDMwMHB4OworICAgIGhlaWdodDogMzAwcHgKK30KKworLmJsb2NrMiB7CisgICAgQHRlc3Qw
QDogcHJvcHZhbHVlOworfQorCisuYmxvY2sze0B0ZXN0MUA6IHByb3B2YWx1ZTt9CisKKy5ibG9j
azQgeyBAdGVzdDJAOnByb3B2YWx1ZTsgfQorCisuYmxvY2s1eyBAdGVzdDNAIDpwcm9wdmFsdWU7
IH0KKworI2Jsb2NrNiB7ICAgIEB0ZXN0NEAgICA6ICAgcHJvcHZhbHVlOyAgfQorCisjYmxvY2s3
Cit7CisgICAgQHRlc3Q1QDogcHJvcHZhbHVlOworfQorCisjYmxvY2s4IHsgQHRlc3Q2QDogcHJv
cHZhbHVlOyB9CisKKyNibG9jazk6cHNldWRvCit7CisKKyAgICBAdGVzdDdAOiBwcm9wdmFsdWU7
CisgICAgQHRlc3Q4QDogIHByb3B2YWx1ZSBwcm9wdmFsdWUgcHJvcHZhbHVlOzsKK30KKworXV0+
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRl
c3Q5QDogcHJvcHZhbHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJwcm9w
bmFtZTogcHJvcHZhbHVlOyBAdGVzdDEwQCA6IHByb3B2YWx1ZTsgcHJvcG5hbWU6cHJvcHZhbHVl
OyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJAdGVzdDExQDogcHJvcHZhbHVl
OyBAdGVzdDEyQCA6IHByb3B2YWx1ZTsgQHRlc3QxM0AgICA6cHJvcHZhbHVlOyI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iZWxlbTMiIHN0eWxlPSJAdGVzdDE0QDpwcm9wdmFsdWUiPjwvZGl2PgorPC9i
b2R5PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMTB7IEB0ZXN0
MTVAOiBwcm9wdmFsdWU7IH0KKy5ibG9jazExeyBAdGVzdDE2QDogcHJvcHZhbHVlOyB9CisuYmxv
Y2sxMnsgQHRlc3QxN0A6IHByb3B2YWx1ZTsgfQorI2Jsb2NrMTM6cHNldWRvCit7CisgICAgQHRl
c3QxOEA6IHByb3B2YWx1ZTsKKyAgICBAdGVzdDE5QDogcHJvcHZhbHVlOworfQorCitdXT48L3N0
eWxlPgorPC9odG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQor
CisgICAgICAgICMgR2VuZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3QgcHJvcGVydGllcyBpbnRvIHRo
ZSB0ZXN0X2h0bWwKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRlc3RDb250
ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyMCwgdGVzdF9odG1sKQorCisgICAg
ICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29u
dmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKEJlYXV0aWZ1bFNvdXAodGVzdF9jb250ZW50WzFdKSkK
KworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykK
KworICAgICAgICAjIFZlcmlmeSBhbGwgdGhlIGdlbmVyYXRlZCB0ZXN0IHByb3BlcnRpZXMgd2Vy
ZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0
aWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHZlcmlmeVRlc3RIYXJu
ZXNzUGF0aHMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3BhdGgsIG51bV9zcmNfcGF0aHMsIG51bV9o
cmVmX3BhdGhzKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmaWVzIGFsbCBXM0Mtc3R5bGUg
cGF0aHMgdG8gdGVzdCBoYXJuZXNzIGZpbGVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQorCisg
ICAgICAgIEBwYXJhbSBjb252ZXJ0ZWQ6IHRoZSBjb252ZXJ0ZWQgY29udGVudCAtIGVpdGhlciBh
IHN0cmluZyBvciBhIEJlYXV0aWZ1bFNvdXAgb2JqZWN0CisgICAgICAgIEBwYXJhbSB0ZXN0X3Bh
dGg6IHRoZSBwYXRoIHdoZXJlIHRoZSB0ZXN0IGNvbnRlbnQgd2lsbCB1bHRpbWF0ZWx5IGxpdmUK
KyAgICAgICAgQHBhcmFtIG51bV9zcmNfcGF0aHM6IG51bWJlciBvZiBzcmMgcGF0aHMgdG8gZXhw
ZWN0CisgICAgICAgIEBwYXJhbSBudW1faHJlZl9wYXRoczogbnVtYmVyIG9mIGhyZWYgcGF0aHMg
dG8gZXhwZWN0CisgICAgICAgICIiIgorCisgICAgICAgICMgTWFrZSBzb3VwIGlmIHdlIG5lZWQg
dG8KKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb252ZXJ0ZWQsIGJhc2VzdHJpbmcpOgorICAgICAg
ICAgICAgY29udmVydGVkID0gQmVhdXRpZnVsU291cChjb252ZXJ0ZWQpCisKKyAgICAgICAgIyBC
dWlsZCB0aGUgcGF0aCB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAgICAgICAgcmVzb3VyY2Vz
X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JP
T1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLlJFU09VUkNFU19E
SVJFQ1RPUlkpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIG9yaWdpbmFsIHBhdGhzIGFyZSBubyBs
b25nZXIgdGhlcmUKKyAgICAgICAgb3JpZ19wYXRoX3BhdHRlcm4gPSByZS5jb21waWxlKCdcIi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29u
dmVydGVkLmZpbmRBbGwoc3JjPW9yaWdfcGF0aF9wYXR0ZXJuKSksIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBzcmMgcGF0aCB3YXMgbm90IGNvbnZlcnRlZCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFsbChocmVmPW9yaWdf
cGF0aF9wYXR0ZXJuKSksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVz
cyBocmVmIHBhdGggd2FzIG5vdCBjb252ZXJ0ZWQnKQorCisgICAgICAgICMgR2V0IHRoZSBuZXcg
cmVscGF0aCBmcm9tIHRoZSB0ZXN0ZXIgZGlyCisgICAgICAgIG5ld19yZWxwYXRoID0gb3MucGF0
aC5yZWxwYXRoKHJlc291cmNlc19kaXIsIHRlc3RfcGF0aCkKKworICAgICAgICAjIFZlcmlmeSBp
dCdzIGluIGFsbCB0aGUgcmlnaHQgcGxhY2VzCisgICAgICAgIHJlbHBhdGhfcGF0dGVybiA9IHJl
LmNvbXBpbGUobmV3X3JlbHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252
ZXJ0ZWQuZmluZEFsbChzcmM9cmVscGF0aF9wYXR0ZXJuKSksIG51bV9zcmNfcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBzcmMgcmVsYXRpdmUgcGF0aCBub3Qg
Y29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFs
bChocmVmPXJlbHBhdGhfcGF0dGVybikpLCBudW1faHJlZl9wYXRocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIGhyZWYgcmVsYXRpdmUgcGF0aCBub3QgY29ycmVjdCcp
CisKKyAgICBkZWYgdmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKHNlbGYsIGNvbnZlcnRlZCwgdGVz
dF9wcm9wZXJ0aWVzKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmaWVzIGEgbGlzdCBvZiB0
ZXN0X3Byb3BlcnRpZXMgd2VyZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisKKyAgICAgICAgQHBhcmFt
IGNvbnZlcnRlZDogVHVwbGUgLSAobGlzdCBvZiBwcm9wZXJ0aWVzIGFjdHVhbGx5IGNvbnZlcnRl
ZCwgY29udmVydGVkIGNvbnRlbnQpCisgICAgICAgIEBwYXJhbSB0ZXN0X3Byb3BlcnRpZXM6IGxp
c3Qgb2YgdGhlIHByb3BlcnRpZXMgdXNlZCB0byB0ZXN0IHdpdGgKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbnVtYmVyIG9mIHRlc3QgcHJvcGVydGllcyBlcXVhbHMg
dGhlIG51bWJlciB0aGF0IHdlcmUgY29udmVydGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGNvbnZlcnRlZFswXSksIGxlbih0ZXN0X3Byb3BlcnRpZXMpLCAnSW5jb3JyZWN0IG51bWJl
ciBvZiBwcm9wZXJ0aWVzIGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhleSdyZSBh
bGwgaW4gdGhlIGNvbnZlcnRlZCBkb2N1bWVudAorICAgICAgICBmb3IgdGVzdF9wcm9wIGluIHRl
c3RfcHJvcGVydGllczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgodGVzdF9wcm9wIGlu
IGNvbnZlcnRlZFsxXSksICdQcm9wZXJ0eSAnICsgdGVzdF9wcm9wICsgJyBub3QgZm91bmQgaW4g
Y29udmVydGVkIGRvYycpCisKKyAgICBkZWYgZ2VuZXJhdGVUZXN0Q29udGVudChzZWxmLCBmdWxs
X3Byb3BfbGlzdCwgbnVtX3Rlc3RfcHJvcGVydGllcywgaHRtbCk6CisgICAgICAgICIiIgorICAg
ICAgICBHZW5lcmF0ZXMgYSByYW5kb20gbGlzdCBvZiB1bmlxdWUgcHJvcGVydGllcyByZXF1aXJp
bmcgdGhlIC13ZWJraXQtIHByZWZpeAorICAgICAgICBhbmQgaW5zZXJ0cyB0aGVtIGludG8gaHRt
bCBjb250ZW50IHRoYXQncyBiZWVuIHRva2VuaXplZCB1c2luZyBcJ0B0ZXN0WFhAXCcgc3ludGF4
CisKKyAgICAgICAgQHBhcmFtIGZ1bGxfcHJvcF9saXN0OiB0aGUgY29tcGxldGUgbGlzdCBvZiBw
cm9wZXJ0aWVzIGN1cnJlbnRseSByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeAorICAgICAg
ICBAcGFyYW0gbnVtX3Rlc3RfcHJvcGVydGllczogbnVtYmVyIG9mIHByb3BlcnRpZXMgdG8gZ2Vu
ZXJhdGUKKyAgICAgICAgQHBhcmFtIGh0bWw6IHRoZSB0b2tlbml6ZWQgaHRtbCBjb250ZW50CisK
KyAgICAgICAgQHJldHVybjogVHVwbGUgLSAodGhlIGxpc3Qgb2YgcHJvcGVydGllcyBpbnNlcnRl
ZCwgdGhlIG5ldyBodG1sKQorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X3Byb3BlcnRpZXMg
PSBbXQorCisgICAgICAgICMgR3JhYiBhIHJhbmRvbSBidW5jaCBvZiAyMCB1bmlxdWUgcHJvcGVy
dGllcyByZXF1aXJpbmcgcHJlZml4ZXMgdG8gdGVzdCB3aXRoCisgICAgICAgIGNvdW50ID0gMAor
ICAgICAgICB3aGlsZSBjb3VudCA8IG51bV90ZXN0X3Byb3BlcnRpZXM6CisgICAgICAgICAgICBp
ZHggPSByYW5kaW50KDAsIGxlbihmdWxsX3Byb3BfbGlzdCkgLSAxKQorICAgICAgICAgICAgaWYg
bm90KGZ1bGxfcHJvcF9saXN0W2lkeF0gaW4gdGVzdF9wcm9wZXJ0aWVzKToKKyAgICAgICAgICAg
ICAgICB0ZXN0X3Byb3BlcnRpZXMuYXBwZW5kKGZ1bGxfcHJvcF9saXN0W2lkeF0pCisgICAgICAg
ICAgICAgICAgY291bnQgKz0gMQorCisgICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW5zIGluIHRo
ZSB0ZXN0aHRtbCB3aXRoIHRoZSB0ZXN0IHByb3BlcnRpZXMuIFdhbGsgYmFja3dhcmQKKyAgICAg
ICAgIyB0aHJvdWdoIHRoZSBsaXN0IHRvIHJlcGxhY2UgdGhlIGRvdWJsZS1kaWdpdCB0b2tlbnMg
Zmlyc3QKKyAgICAgICAgaWR4ID0gbGVuKHRlc3RfcHJvcGVydGllcykgLSAxCisgICAgICAgIHdo
aWxlIGlkeCA+PSAwOgorICAgICAgICAgICAgIyBVc2UgdGhlIHVucHJlZml4ZWQgdmVyc2lvbgor
ICAgICAgICAgICAgdGVzdF9wcm9wID0gdGVzdF9wcm9wZXJ0aWVzW2lkeF0ucmVwbGFjZSgnLXdl
YmtpdC0nLCAnJykKKyAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW4KKyAgICAgICAgICAg
IGh0bWwgPSBodG1sLnJlcGxhY2UoJ0B0ZXN0JyArIHN0cihpZHgpICsgJ0AnLCB0ZXN0X3Byb3Ap
CisgICAgICAgICAgICBpZHggLT0gMQorCisgICAgICAgIHJldHVybiAodGVzdF9wcm9wZXJ0aWVz
LCBodG1sKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBv
cnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5MTA2NgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTAsMCAr
MSw1MjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMKKyMgVGhpcyBzY3JpcHQgaW1wb3J0cyBhIGRpcmVjdG9yeSBvZiBXM0Mg
Q1NTIHRlc3RzIGludG8gV2ViS2l0LgorIworIyBZb3UgbXVzdCBoYXZlIGNoZWNrZWQgbG9nIHRo
ZSBXM0MgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZlLgorIworIyBUaGlzIHNjcmlwdCB3
aWxsIGltcG9ydCB0aGUgdGVzdHMgaW50byBXZWJLaXQgZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgor
IworIyAgICAtIE9ubHkgdGVzdHMgdGhhdCBhcmUgYXBwcm92ZWQgb3Igb2ZmaWNpYWxseSBzdWJt
aXR0ZWQgYXdhaXRpbmcgcmV2aWV3IGFyZSBpbXBvcnRlZAorIworIyAgICAtIEFsbCB0ZXN0cyBh
cmUgaW1wb3J0ZWQgaW50byBMYXlvdXRUZXN0cy9jc3N3ZworIworIyAgICAtIElmIHRoZSB0ZXN0
cyBhcmUgYXBwcm92ZWQsIHRoZXknbGwgYmUgaW1wb3J0ZWQgaW50byBhIGRpcmVjdG9yeSB0cmVl
IHRoYXQKKyMgICAgICBtaXJyb3JzIHRoZSBDU1MgTWVyY3VyaWFsIHJlcG8uIEZvciBleGFtcGxl
LCA8Y3Nzd2dfcmVwb19yb290Pi9hcHByb3ZlZC9jc3MyLjEgaXMgYnJvdWdodCBpbgorIyAgICAg
IGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVkL2NzczIuMSwgbWFpbnRhaW5pbmcgdGhlIGVu
dGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVyIHRoYXQKKyMKKyMgICAgLSBJZiB0aGUgdGVz
dHMgYXJlIHN1Ym1pdHRlZCwgdGhleSdsbCBiZSBicm91Z2h0IGluIGFzIExheW91dFRlc3RzL2Nz
c3dnL3N1Ym1pdHRlZCBhbmQgd2lsbCBhbHNvCisjICAgICAgbWFpbnRhaW4gdGhlaXIgZGlyZWN0
b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0LiBGb3IgZXhhbXBsZSwgZXZlcnl0aGluZyB1bmRlcgor
IyAgICAgIDxjc3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9hZG9iZS9zdWJtaXR0ZWQgaXMg
YnJvdWdodCBpbnRvIHN1Ym1pdHRlZCwgbWlycm9yaW5nIGl0cworIyAgICAgIGRpcmVjdG9yeSBz
dHJ1Y3R1cmUgaW4gdGhlIGNzc3dnIHJlcG8KKyMKKyMgICAgLSBJZiB0aGUgaW1wb3J0IGRpcmVj
dG9yeSBzcGVjaWZpZWQgaXMganVzdCBhIGNvbnRyaWJ1dG9yIGZvbGRlciwgb25seSB0aGUgc3Vi
bWl0dGVkIGZvbGRlcgorIyAgICAgIGZvciB0aGF0IGNvbnRyaWJ1dG9yIGlzIGJyb3VnaHQgaW4u
IEZvciBleGFtcGxlLCB0byBpbXBvcnQgYWxsIG9mIE1vemlsbGEncyB0ZXN0cywgZWl0aGVyCisj
ICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEgb3IgPGNzc3dnX3Jl
cG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEvc3VibWl0dGVkCisjICAgICAgd2lsbCB3b3Jr
IGFuZCBhcmUgZXF1aXZhbGVudAorIworIyAgICAtIEZvciB0aGUgdGltZSBiZWluZywgdGhpcyBz
Y3JpcHQgd29uJ3Qgd29yayBpZiB5b3UgdHJ5IHRvIGltcG9ydCB0aGUgZnVsbCBzZXQgb2Ygc3Vi
bWl0dGVkCisjICAgICAgdGVzdHMgdW5kZXIgY29udHJpYnV0b3JzLyovc3VibWl0dGVkLiBTaW5j
ZSB0aGVzZSBhcmUgYXdhaXRpbmcgcmV2aWV3LCB0aGlzIGlzIGp1c3QgYSBzbWFsbAorIyAgICAg
IGNvbnRyb2wgbWVjaGFuaXNtIHRvIGVuZm9yY2UgY2FyZWZ1bGx5IHNlbGVjdGluZyB3aGF0IG5v
bi1hcHByb3ZlZCB0ZXN0cyBhcmUgaW1wb3J0ZWQuCisjICAgICAgSXQgY2FuIG9idmlvdXNseSBh
bmQgZWFzaWx5IGJlIGNoYW5nZWQuCisjCisjICAgIC0gQnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0
cyBhbmQganN0ZXN0IGFyZSBpbXBvcnRlZC4gVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEg
LWEgb3IgLS1hbGwKKyMgICAgICBhcmd1bWVudAorIworIyAgICAtIEFsc28gYnkgZGVmYXVsdCwg
aWYgdGVzdCBmaWxlcyBieSB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3QgaW4gdGhlIGRlc3Rp
bmF0aW9uIGRpcmVjdG9yeSwKKyMgICAgICB0aGV5IGFyZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBp
ZGVhIHRoYXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNoIGZpbGVzIHBlcmlvZGlj
YWxseS4KKyMgICAgICBUaGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW4gYnkgYSAtbiBvciAtLW5v
LW92ZXJ3cml0ZSBmbGFnCisjCisjICAgIC0gQWxsIGZpbGVzIGFyZSBjb252ZXJ0ZWQgdG8gd29y
ayBpbiBXZWJLaXQ6CisjICAgICAgICAgMS4gLnhodCBleHRlbnNpb25zIGFyZSBjaGFuZ2VkIHRv
IC54aHRtbCB0byBtYWtlIG5ldy1ydW4td2Via2l0LXRlc3RzIGhhcHB5CisjICAgICAgICAgMi4g
UGF0aHMgdG8gdGVzdGhhcm5lc3MuanMgZmlsZXMgYXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtp
dCdzIGNvcHkgb2YgdGhlbSBpbgorIyAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywg
dXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KKyMg
ICAgICAgICAzLiBBbGwgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LXZlbmRv
ciBwcmVmaXggYXJlIHByZWZpeGVkIC0gdGhpcyBjdXJyZW50CisjICAgICAgICAgICAgbGlzdCBv
ZiB3aGF0IG5lZWRzIHByZWZpeGVzIGlzIHJlYWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9DU1MvQ1NT
UHJvcGVydGllcy5pbgorIyAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5
IG9mIGl0cyByZWZlcmVuY2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucwor
IyAgICAgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGV4cGVjdHMKKyMgICAgICAgICA1LiBJ
ZiBhIGEgcmVmZXJlbmNlIGZpbGVzIGxpdmVzIG91dHNpZGUgdGhlIGRpcmVjdG9yeSBvZiB0aGUg
dGVzdCB0aGF0IHVzZXMgaXQsIGl0IGlzIGNoZWNrZWQKKyMgICAgICAgICAgICBmb3IgcGF0aHMg
dG8gc3VwcG9ydCBmaWxlcyBhcyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQg
cmVsYXRpdmUgcG9zaXRpb24gdG8gdGhlCisjICAgICAgICAgICAgdGVzdCBmaWxlIChpbiB0aGUg
c2FtZSBkaXJlY3RvcnkpCisjCisjICAgICAtIFVwb24gY29tcGxldGlvbiwgc2NyaXB0IG91dHB1
dHMgdGhlIHRvdGFsIG51bWJlciB0ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVzdCB0
eXBlCisjCisjICAgICAtIEFsc28gdXBvbiBjb21wbGV0aW9uLCBlYWNoIGRpcmVjdG9yeSB3aGVy
ZSBmaWxlcyBhcmUgaW1wb3J0ZWQgd2lsbCBoYXZlIHczYy1pbXBvcnQubG9nIHdyaXR0ZW4KKyMg
ICAgICAgd2l0aCBhIHRpbWVzdGFtcCwgdGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0IGlmIGF2
YWlsYWJsZSwgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0aGF0CisjICAgICAgIHJl
cXVpcmUgcHJlZml4ZXMsIHRoZSBsaXN0IG9mIGltcG9ydGVkIGZpbGVzLCBhbmQgZ3VpZGFuY2Ug
Zm9yIGZ1dHVyZSB0ZXN0IG1vZGlmaWNhdGlvbiBhbmQKKyMgICAgICAgbWFpbnRlbmFuY2UuCisj
CisjICAgICAtIE9uIHN1YnNlcXVlbnQgaW1wb3J0cywgdGhpcyBmaWxlIGlzIHJlYWQgdG8gZGV0
ZXJtaW5lIGlmIGZpbGVzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBuZXdlciBjaGFuZ2VzZXRz
LgorIyAgICAgICBUaGUgc2NyaXB0IHJlbW92ZXMgdGhlc2UgZmlsZXMgYWNjb3JkaW5nbHkuCisj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBtaW1ldHlwZXMKK2Zyb20gb3B0cGFyc2UgaW1w
b3J0IE9wdGlvblBhcnNlcgoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJv
Y2VzcworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRl
c3RQYXJzZXIKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBUZXN0Q29u
dmVydGVyCisKK0xBWU9VVF9URVNUU19ESVJFQ1RPUlkgPSAnTGF5b3V0VGVzdHMnCitDU1NXR19E
SVJFQ1RPUlkgPSAnY3Nzd2cnCitSRVNPVVJDRVNfRElSRUNUT1JZID0gJ3Jlc291cmNlcycKK0FQ
UFJPVkVEID0gJ2FwcHJvdmVkJworU1VCTUlUVEVEID0gJ3N1Ym1pdHRlZCcKK1VOS05PV04gPSAn
dW5rbm93bicKK05PVF9BVkFJTEFCTEUgPSAnTm90IEF2YWlsYWJsZScKKworCitkZWYgbWFpbihh
cmd2LCBfLCBzdGRlcnIpOgorCisgICAgcGFyc2VfYXJncygpCisgICAgaW1wb3J0X2RpciA9IHZh
bGlkYXRlX2ltcG9ydF9kaXJlY3RvcnkoKQorICAgIHRlc3RfaW1wb3J0ZXIgPSBUZXN0SW1wb3J0
ZXIoaW1wb3J0X2Rpciwgb3B0aW9ucykKKyAgICB0ZXN0X2ltcG9ydGVyLmRvX2ltcG9ydCgpCisK
KworZGVmIHBhcnNlX2FyZ3MoKToKKworICAgIGdsb2JhbCBvcHRpb25zCisgICAgZ2xvYmFsIGFy
Z3MKKworICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRp
b25zXSB3M2NfdGVzdF9kaXJlY3Rvcnkgd2Via2l0X3Jvb3QnKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctbicsICctLW5vLW92ZXJ3cml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgI2FjdGlv
bj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdGbGFnIHRvIHByZXZlbnQgZHVwbGljYXRlIHRlc3Qg
ZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBleGlzdGluZyB0ZXN0cy4gQnkgZGVmYXVsdCwgdGhleSB3
aWxsIGJlIG92ZXJ3cml0dGVuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWEnLCAnLS1hbGwn
LAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdJ
bXBvcnQgYWxsIHRlc3RzIGluY2x1ZGluZyByZWZ0ZXN0cywgSlMgdGVzdHMsIGFuZCBtYW51YWwv
cGl4ZWwgdGVzdHMuIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5kIEpTIHRlc3RzIGFyZSBp
bXBvcnRlZCcpCisKKyAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCisK
KyAgICBpZiBsZW4oYXJncykgIT0gMToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdJbmNvcnJlY3Qg
bnVtYmVyIG9mIGFyZ3VtZW50cycpCisKKworZGVmIHZhbGlkYXRlX2ltcG9ydF9kaXJlY3Rvcnko
KToKKworICAgIGltcG9ydF9kaXIgPSBhcmdzWzBdCisKKyAgICAjIE1ha2Ugc3VyZSB0aGUgdzNj
IHRlc3QgZGlyZWN0b3J5IGV4aXN0cworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbXBvcnRf
ZGlyKToKKyAgICAgICAgc3lzLmV4aXQoJ1NvdXJjZSBkaXJlY3RvcnkgJXMgbm90IGZvdW5kIScg
JSBpbXBvcnRfZGlyKQorCisgICAgIyBNYWtlIHN1cmUgdGhlIHRlc3RzIGFyZSBvZmZpY2lhbGx5
IHN1Ym1pdHRlZCB0byB0aGUgVzNDLCBlaXRoZXIgYXBwcm92ZWQgb3IKKyAgICAjIHN1Ym1pdHRl
ZCBmb2xsb3dpbmcgdGhlaXIgZGlyZWN0b3J5IG5hbWluZyBjb252ZW50aW9ucworICAgIGlmIGlt
cG9ydF9kaXIuZmluZChBUFBST1ZFRCkgPT0gLTEgYW5kIFwKKyAgICAgICBpbXBvcnRfZGlyLmZp
bmQoU1VCTUlUVEVEKSA9PSAtMToKKyAgICAgICAgIyBJZiBub3QgcG9pbnRlZCBkaXJlY3RseSB0
byB0aGUgYXBwcm92ZWQgZGlyZWN0b3J5IG9yIHRvIGFueSBzdWJtaXR0ZWQKKyAgICAgICAgIyBk
aXJlY3RvcnksIGNoZWNrIGZvciBhIHN1Ym1pdHRlZCBzdWJkaXJlY3RvcnkgYW5kIGdvIHdpdGgg
dGhhdAorICAgICAgICBpbXBvcnRfZGlyID0gb3MucGF0aC5qb2luKGltcG9ydF9kaXIsICdzdWJt
aXR0ZWQnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGltcG9y
dF9kaXIpKToKKyAgICAgICAgICAgIHN5cy5leGl0KCdVbmFibGUgdG8gaW1wb3J0IHRlc3RzIHRo
YXQgYXJlblwndCBhcHByb3ZlZCBvciBzdWJtaXR0ZWQgdG8gdGhlIFczQycpCisKKyAgICByZXR1
cm4gaW1wb3J0X2RpcgorCisKK2NsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHNvdXJjZV9kaXJlY3RvcnksIG9wdGlvbnMpOgorCisgICAgICAgIHNl
bGYub3B0aW9ucyA9IG9wdGlvbnMKKworICAgICAgICBzZWxmLnNvdXJjZV9kaXJlY3RvcnkgPSBz
b3VyY2VfZGlyZWN0b3J5CisgICAgICAgIHNlbGYud2Via2l0X3Jvb3QgPSBfX2ZpbGVfXy5zcGxp
dChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisgICAgICAgIHNlbGYuZGVzdGluYXRpb25fZGly
ZWN0b3J5ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBzZWxmLndlYmtpdF9yb290LCBMQVlP
VVRfVEVTVFNfRElSRUNUT1JZLCBDU1NXR19ESVJFQ1RPUlkpCisKKyAgICAgICAgc2VsZi5jaGFu
Z2VzZXQgPSBOT1RfQVZBSUxBQkxFCisgICAgICAgIHNlbGYudGVzdF9zdGF0dXMgPSBVTktOT1dO
CisKKyAgICAgICAgc2VsZi5pbXBvcnRfbGlzdCA9IFtdCisKKyAgICBkZWYgZG9faW1wb3J0KHNl
bGYpOgorCisgICAgICAgIHNlbGYuc2Nhbl9zb3VyY2VfZGlyZWN0b3J5KHNlbGYuc291cmNlX2Rp
cmVjdG9yeSkKKyAgICAgICAgc2VsZi5nZXRfY2hhbmdlc2V0KCkKKyAgICAgICAgc2VsZi5pbXBv
cnRfdGVzdHMoKQorCisgICAgZGVmIGdldF9jaGFuZ2VzZXQoc2VsZik6CisgICAgICAgICIiIgor
ICAgICAgICAgICAgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBjdXJyZW50IGNoYW5nZXNldCBhbmQg
cGFyc2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZQorICAgICAgICAgICAgY2hhbmdlc2V0LiBJZiB0
aGF0IGRvZXNuJ3Qgd29ya291dCBmb3Igc29tZSByZWFzb24sIGl0IGp1c3QgYmVjb21lcworICAg
ICAgICAgICAgJ05vdCBBdmFpbGFibGUnCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgQXNzdW1pbmcgTWVyY3VyaWFsIGlzIHNldCB1cCBvbiB0aGUgc3lzdGVtLCB0
cnkgdG8gZ3JhYiB0aGUgY2hhbmdlc2V0IHdlJ3JlIGltcG9ydGluZworICAgICAgICAgICAgcHJv
YyA9IHN1YnByb2Nlc3MuUG9wZW4oWydoZycsICd0aXAnXSwgZW52PW9zLmVudmlyb24sIHN0ZG91
dD1zdWJwcm9jZXNzLlBJUEUsIGN3ZD1zZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgICAg
ICBzZWxmLmNoYW5nZXNldCA9IHByb2Muc3Rkb3V0LnJlYWRsaW5lcygpWzBdCisgICAgICAgICAg
ICBzZWxmLmNoYW5nZXNldCA9IHNlbGYuY2hhbmdlc2V0LnNwbGl0KCdjaGFuZ2VzZXQ6JylbMV0K
KyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBPaCB3ZWxsLCB3ZSB0cmllZAorICAgICAg
ICAgICAgc2VsZi5jaGFuZ2VzZXQgPSAnTm90IEF2YWlsYWJsZScKKworICAgIGRlZiBzY2FuX3Nv
dXJjZV9kaXJlY3Rvcnkoc2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAgIiIiCisgICAgICAgICAg
ICBXYWxrcyB0aGUgZGlyZWN0b3J5IHRyZWUgbG9va2luZyBmb3IgSFRNTCBmaWxlcyBvZiBhbnkg
Zmxhdm9yIGFuZCBwYXJzZXMgdGhlbSB0byBsb29rIGZvcgorICAgICAgICAgICAgaW1wb3J0YWJs
ZSB0ZXN0cy4gSWYgdGhlIGZpbGVzIGlzIGFuIGltcG9ydGFibGUgdGVzdCwgaXQncyBhZGRlZCB0
byB0aGUgbWFzdGVyIGxpc3Qgb2YKKyAgICAgICAgICAgIGZpbGVzIHRvIGltcG9ydC4gSWYgdGhl
cmUgYXJlIHRlc3RzIGluIHRoZSBkaXJlY3RvcnksIGFsbCBvdGhlciBub24tSFRNTCBmaWxlcyBh
cmUgYWRkZWQKKyAgICAgICAgICAgIHRvIHRoZSBtYXN0ZXIgY29weSBsaXN0IGFzIHRoZXkgYXJl
IGFzc3VtZWQgdG8gYmUgcmVxdWlyZWQgYnkgdGhlIHRlc3RzCisKKyAgICAgICAgICAgIEBwYXJh
bSBkaXJlY3Rvcnk6IHRoZSBkaXJlY3RvcnkgdG8gd2FsaworICAgICAgICAiIiIKKworICAgICAg
ICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgorCisgICAgICAg
ICAgICBwcmludCAnU2Nhbm5pbmcgJyArIHJvb3QgKyAnLi4uJworICAgICAgICAgICAgdG90YWxf
dGVzdHMgPSAwCisgICAgICAgICAgICByZWZ0ZXN0cyA9IDAKKyAgICAgICAgICAgIGpzdGVzdHMg
PSAwCisKKyAgICAgICAgICAgICMgSWdub3JlIGFueSByZXBvIHN0dWZmCisgICAgICAgICAgICBp
ZiAnLmdpdCcgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmdpdCcpCisg
ICAgICAgICAgICBpZiAnLmhnJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3Zl
KCcuaGcnKQorICAgICAgICAgICAgaWYgJ2RhdGEnIGluIGRpcnM6CisgICAgICAgICAgICAgICAg
IyB0aGlzIGlzIGludGVybmFsIGNzc3dnIHN0dWZmIHRoYXQgaXMgaW4gZXZlcnkgYXBwcm92ZWQg
ZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ2RhdGEnKQorCisgICAgICAg
ICAgICBjb3B5X2xpc3QgPSBbXQorCisgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6
CisKKyAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihyb290LCBmaWxlbmFt
ZSkKKworICAgICAgICAgICAgICAgICMgT25seSBodG1sIG9yIHhtbCBhcmUgY29uc2lkZXJlZCB0
ZXN0cworICAgICAgICAgICAgICAgIG1pbWV0eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZnVs
bHBhdGgpCisgICAgICAgICAgICAgICAgaWYgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkgb3Ig
J3htbCcgaW4gc3RyKG1pbWV0eXBlWzBdKToKKworICAgICAgICAgICAgICAgICAgICB0ZXN0X3Bh
cnNlciA9IFRlc3RQYXJzZXIodmFycyhvcHRpb25zKSwgZmlsZW5hbWU9ZnVsbHBhdGgpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RfaW5mbyA9IHRlc3RfcGFyc2VyLmFuYWx5emVfdGVzdCgpCisK
KyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9pbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIGlmICdyZWZlcmVuY2Un
IGluIHRlc3RfaW5mby5rZXlzKCk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3Rz
ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Rlc3RzICs9IDEKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3RfaW5m
b1sndGVzdCddKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCB0aGUgcmVmIGZpbGUs
IHJlbmFtaW5nIGl0IHRvIFdlYmtpdCdzIHdheQorICAgICAgICAgICAgICAgICAgICAgICAgIyBO
b3RlOiBUaGUgcHJlZmVyYWJsZSB3YXkgdG8gaGFuZGxlIHRoaXMgd291bGQgYmUgdG8ganVzdAor
ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICBhZGQgc3VwcG9ydCBpbiBXZWJraXQncyBo
YXJuZXNzIHRvIHJlYWQgbWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAg
cmF0aGVyIHRoYW4gcmVseSBvbiBhIGZpbGUgbmFtaW5nIGNvbnZlbnRpb24uIFNpbmNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZSBDU1NXRyB0ZXN0cyBzdXBwb3J0IG1hbnk6
b25lIHRlc3RzOnJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgZW5h
YmxpbmcgbWV0YWRhdGEgcGFyc2luZyBpbiBvdXIgaGFybmVzcyB3b3VsZCBhbHNvCisgICAgICAg
ICAgICAgICAgICAgICAgICAjICAgICAgIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGZpbGVzIGNvcGll
ZCBpbi4gQXMgdGhpcyBpcworICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICBpbXBsZW1l
bnRlZCBoZXJlLCB3ZSBhcmUga25vd2luZ2x5IGltcG9ydGluZyBtdWx0aXBsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgIyAgICAgICBjb3BpZXMgb2YgdGhlIHNhbWUgcmVmIGZpbGVzIHRvIGFk
aGVyZSB0byBXZWJraXQncyB3YXkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlID0g
b3MucGF0aC5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1lKVswXSArICctZXhwZWN0ZWQnCisgICAgICAg
ICAgICAgICAgICAgICAgICByZWZfZmlsZSArPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5h
bWUpWzFdCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMn
OiB0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLCAnZGVzdCc6IHJlZl9maWxlfSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3Rlc3QnXSwg
J2Rlc3QnOiBmaWxlbmFtZX0pCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlcmUg
YXJlIHJlZiBzdXBwb3J0IGZpbGVzLCB0aGUgZGVzdGluYXRpb24gaXMgc2hvdWxkIG5vdyBiZSBy
ZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGVzdCBmaWxlIGFuZCBu
ZXcgbG9jYXRpb24gb2YgdGhlIHJlZiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAn
cmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3Igc3VwcG9ydF9maWxlIGluIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEJ1aWxkIHRoZSBjb3JyZWN0IHNvdXJjZSBwYXRo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddKSwgc3VwcG9ydF9maWxl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZmlsZSA9IG9zLnBhdGgu
bm9ybXBhdGgoc291cmNlX2ZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
S2VlcCB0aGUgZGVzdCBhcyBpdCB3YXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9fY29weSA9IHsnc3JjJzogc291cmNlX2ZpbGUsICdkZXN0Jzogc3VwcG9ydF9maWxlfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9ubHkgYWRkIGl0IG9uY2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90KHRvX2NvcHkgaW4gY29weV9saXN0KToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQodG9fY29w
eSkKKworICAgICAgICAgICAgICAgICAgICBlbGlmICdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlz
KCk6CisgICAgICAgICAgICAgICAgICAgICAgICBqc3Rlc3RzICs9IDEKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRvdGFsX3Rlc3RzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlf
bGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCisKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Rlc3Rz
ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBm
dWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCisKKyAgICAgICAgICAgICAgICBlbGlmIG5vdChm
aWxlbmFtZS5zdGFydHN3aXRoKCcuJykpOgorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3Qu
YXBwZW5kKHsnc3JjJzogZnVsbHBhdGgsICdkZXN0JzogZmlsZW5hbWV9KQorCisgICAgICAgICAg
ICBpZiB0b3RhbF90ZXN0cyA9PSAwOgorICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgYXJlIG5v
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5LCBza2lwIHRoZSBzdXBwb3J0IGRpciB0aGF0IGxpdmVz
IGluIGFsbAorICAgICAgICAgICAgICAgICMgb2YgdGhlICdhcHByb3ZlZCcgZm9sZGVycyBhcyBw
YXJ0IG9mIHRoZSBhdXRvbWF0ZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgaWYgJ3N1
cHBvcnQnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdzdXBwb3J0
JykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBPbmx5IGFkZCB0aGlzIGRp
cmVjdG9yeSB0byB0aGUgbGlzdCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAg
ICAgICAgICAgICBzZWxmLmltcG9ydF9saXN0LmFwcGVuZCh7J2Rpcm5hbWUnOiByb290LCAnY29w
eV9saXN0JzogY29weV9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncmVmdGVzdHMnOiByZWZ0ZXN0cywgJ2pzdGVzdHMnOiBqc3Rlc3RzLCAndG90YWxfdGVz
dHMnOiB0b3RhbF90ZXN0c30pCisKKyAgICBkZWYgaW1wb3J0X3Rlc3RzKHNlbGYpOgorICAgICAg
ICAiIiIKKyAgICAgICAgICAgIElmIHRoZXJlIGFyZSBmaWxlcyBpbiB0aGUgbWFzdGVyIGltcG9y
dCBsaXN0IGNyZWF0ZWQgYnkgc2Nhbl9zb3VyY2VfZGlyZWN0b3J5KCksCisgICAgICAgICAgICB0
aGUgZW50aXJlIGxpc3QgaXMgY29waWVkIG1haW50YWluaW5nIGl0cyBvcmlnaW5hbCBkaXJlY3Rv
cnkgc3RydWN0dXJlIGludG8KKyAgICAgICAgICAgIExheW91dFRlc3RzL2Nzc3dnLiBCZWZvcmUg
d3JpdHRlbiB0byBkaXNrLCBlYWNoIGZpbGUgY2hlY2tlZCBmb3IgdGhlIGZvbGxvd2luZzoKKyAg
ICAgICAgICAgICAgIC0gUGF0aHMgdG8gdGVzdGhhcm5lc3MgZmlsZXMKKyAgICAgICAgICAgICAg
IC0gQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSB2ZW5kb3IgcHJlZml4Cisg
ICAgICAgICAgICAgICAtIFBhdGhzIHRvIHN1cHBvcnQgZmlsZXMgaW4gcmVmZXJlbmNlIGZpbGVz
IGlmIGl0cyByZWxhdGl2ZSBsb2NhdGlvbiB0byB0aGUKKyAgICAgICAgICAgICAgICAgdGVzdCBm
aWxlIGlzIGNoYW5nZWQgaW4gdGhlIG5ldyBsb2NhdGlvbgorICAgICAgICAgICAgSWYgdGhlIGZp
bGUgcmVxdWlyZXMgYW55IG9mIHRoZXNlIGNvbnZlcnNpb24sIHRoZXkgYXJlIG1hZGUgYW5kIGl0
IGlzIHJlLXdyaXR0ZW4KKyAgICAgICAgICAgIG91dC4gSWYgaXQgcmVxdWlyZXMgbm8gY29udmVy
c2lvbiwgYSBzdHJhaWdodCBjb3B5IGlzIHBlZm9ybWVkLgorICAgICAgICAgICAgQWxzbywgLnho
dCBleHRlbnNpb25zIGFyZSBjaGFuZ2VkIHRvIC54aHRtbCB0byB3b3JrIGluIG5ldy1ydW4td2Vi
a2l0LXRlc3RzCisKKyAgICAgICAgICAgIExhc3RseSwgdGhlIHRvdGFsIG51bWJlciBvZiB0ZXN0
cyBpcyBkaXNwbGF5ZWQgYXMgd2VsbCBhcyBhIGRldGFpbGVkIGxvZyBvZiB3aGF0CisgICAgICAg
ICAgICB3YXMgaW1wb3J0ZWQgZHJvcHBlZCBpbiBlYWNoIGRpcmVjdG9yeSB3aGVyZSBmaWxlcyBh
cmUgcGxhY2VkCisgICAgICAgICIiIgorCisgICAgICAgICMgT25seSBzZXQgdXAgdGhlIGRlc3Rp
bmF0aW9uIGRpcmVjdG9yeSBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAg
aWYgbGVuKHNlbGYuaW1wb3J0X2xpc3QpID4gMDoKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfZGVz
dGluYXRpb25fZGlyZWN0b3J5KCkKKworICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVy
KCkKKyAgICAgICAgdG90YWxfaW1wb3J0ZWRfdGVzdHMgPSAwCisgICAgICAgIHRvdGFsX2ltcG9y
dGVkX3JlZnRlc3RzID0gMAorICAgICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzID0gMAorCisg
ICAgICAgIGZvciBkaXJfdG9fY29weSBpbiBzZWxmLmltcG9ydF9saXN0OgorCisgICAgICAgICAg
ICB0b3RhbF9pbXBvcnRlZF90ZXN0cyArPSBkaXJfdG9fY29weVsndG90YWxfdGVzdHMnXQorICAg
ICAgICAgICAgdG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3JlZnRlc3Rz
J10KKyAgICAgICAgICAgIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ2pz
dGVzdHMnXQorCisgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KKworICAgICAg
ICAgICAgaWYgbGVuKGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXSkgPiAwOgorCisgICAgICAgICAg
ICAgICAgIyBCdWlsZCB0aGUgc3VicGF0aCBzdGFydGluZyB3aXRoIHRoZSBhcHByb3ZlZC9zdWJt
aXR0ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgb3JpZ19wYXRoID0gZGlyX3RvX2NvcHlb
J2Rpcm5hbWUnXQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gb3JpZ19wYXRoLmZpbmQoc2VsZi50
ZXN0X3N0YXR1cykKKyAgICAgICAgICAgICAgICBuZXdfc3VicGF0aCA9IG9yaWdfcGF0aFtzdGFy
dDpsZW4ob3JpZ19wYXRoKV0KKworICAgICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBuZXcgc3Vi
cGF0aCB0byB0aGUgZGVzdGluYXRpb25fZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgbmV3X3Bh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRo
KQorCisgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9y
aWVzIGlmIG5vdCB0aGVyZQorICAgICAgICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhu
ZXdfcGF0aCkpOgorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhuZXdfcGF0aCkKKwor
ICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcyA9IFtdCisKKyAgICAgICAgICAgICAgICBmb3Ig
ZmlsZV90b19jb3B5IGluIGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXToKKworICAgICAgICAgICAg
ICAgICAgICBvcmlnX2ZpbGVwYXRoID0gb3MucGF0aC5ub3JtcGF0aChmaWxlX3RvX2NvcHlbJ3Ny
YyddKQorCisgICAgICAgICAgICAgICAgICAgICMgU2hvdWxkbid0IGJlIGFueSBkaXJlY3Rvcmll
cyBvbiB0aGUgbGlzdCwgYnV0IGNoZWNrIHRvIGJlIHNhZmUKKyAgICAgICAgICAgICAgICAgICAg
aWYgb3MucGF0aC5pc2RpcihvcmlnX2ZpbGVwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBjaG9rZSBpZiB0aGUgZmls
ZSBjYW4ndCBiZSBmb3VuZAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlz
dHMob3JpZ19maWxlcGF0aCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5p
bmc6ICcgKyBvcmlnX2ZpbGVwYXRoICsgJyBub3QgZm91bmQuIFBvc3NpYmxlIGVycm9yIGluIHRo
ZSB0ZXN0LicKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
ICAgICAgICAgIyBBcHBlbmQgdGhlIGNvcnJlY3QgZGVzdGluYXRpb24gZmlsZW5hbWUKKyAgICAg
ICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxl
X3RvX2NvcHlbJ2Rlc3QnXSkKKworICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBleHRlbnNp
b24gdG8gd29yayBpbiB0aGUgV2ViS2l0IGhhcm5lc3MKKyAgICAgICAgICAgICAgICAgICAgbmV3
X2ZpbGVwYXRoID0gbmV3X2ZpbGVwYXRoLnJlcGxhY2UoJy54aHQnLCAnLnhodG1sJykKKworICAg
ICAgICAgICAgICAgICAgICAjIE1ha2UgdGhlIGRpcmVjdG9yaWVzIG5lZWRlZAorICAgICAgICAg
ICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxl
cGF0aCkpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGly
bmFtZShuZXdfZmlsZXBhdGgpKQorCisgICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgb3Zlcndy
aXRlIGV4aXN0aW5nIHRlc3RzIGlmIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBpZiBv
cHRpb25zLm5vX292ZXJ3cml0ZSBpcyBUcnVlIGFuZCBvcy5wYXRoLmV4aXN0cyhuZXdfZmlsZXBh
dGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBl
eGlzdGluZyBmaWxlICcgKyBuZXdfZmlsZXBhdGgKKyAgICAgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogTWF5YmUgZG9pbmcgYSBmaWxlIGRpZmYg
aXMgaW4gb3JkZXIgaGVyZSBmb3IgZXhpc3RpbmcgZmlsZXM/CisgICAgICAgICAgICAgICAgICAg
ICAgICAjICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGVyZSdzIG5vIHNlbnNlIGluIG92ZXJ3cml0
aW5nIGlkZW50aWNhbCBmaWxlcywgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAg
IHRoZXJlJ3Mgbm8gaGFybSBpbiBjb3B5aW5nIHRoZSBpZGVudGljYWwgdGhpbmcuCisgICAgICAg
ICAgICAgICAgICAgICAgICBwcmludCAnSW1wb3J0aW5nOiAnICsgb3JpZ19maWxlcGF0aAorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyAgICAgICBBczogJyArIG5ld19maWxlcGF0aAor
CisgICAgICAgICAgICAgICAgICAgICMgT25seSBodG1sLCB4bWwsIG9yIGNzcyBzaG91bGQgYmUg
Y29udmVydGVkCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogRXZlbnR1YWxseSwgc28gc2hv
dWxkIGpzIHdoZW4gc3VwcG9ydCBpcyBhZGRlZCBmb3IgdGhpcyB0eXBlIG9mIGNvbnZlcnNpb24K
KyAgICAgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmln
X2ZpbGVwYXRoKQorICAgICAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBl
WzBdKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICd4bWwnIGluIHN0cihtaW1ldHlwZVsw
XSkgIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBd
KToKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IGZvciBXZWJLaXQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVydGVyLmNvbnZlcnRfZm9y
X3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCkKKworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgY29udmVydGVkX2ZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIFN0cmFpZ2h0IGNvcHkgaWYgbm90aGluZydzIGNoYW5nZWQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2Zp
bGVwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIFdyaXRlIG91dCB0aGUgY29udmVydGVkIHRlc3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzLmV4dGVuZChzZXQoY29udmVydGVkX2Zp
bGVbMF0pIC0gc2V0KHByZWZpeGVkX3Byb3BlcnRpZXMpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dGZpbGUgPSBvcGVuKG5ld19maWxlcGF0aCwgJ3cnKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoY29udmVydGVkX2ZpbGVbMV0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0ZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0
aCwgbmV3X2ZpbGVwYXRoKQorCisgICAgICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcy5hcHBl
bmQobmV3X2ZpbGVwYXRoLnJlcGxhY2Uoc2VsZi53ZWJraXRfcm9vdCwgJycpKQorCisgICAgICAg
ICAgICAgICAgIyBUYWtlIGNhcmUgb2YgYW55dGhpbmcgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92
ZWQgc2luY2UgdGhlIGxhc3QgaW1wb3J0CisgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfZGVs
ZXRlZF9maWxlcyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzKQorCisgICAgICAgICAgICAgICAgIyBE
cm9wIHNvbWUgaW5mbyBhYm91dCB3aGF0IGp1c3QgaGFwcGVuZWQgaGVyZQorICAgICAgICAgICAg
ICAgIHNlbGYud3JpdGVfaW1wb3J0X2xvZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhl
ZF9wcm9wZXJ0aWVzKQorCisgICAgICAgIHByaW50ICdJbXBvcnQgY29tcGxldGUnCisKKyAgICAg
ICAgcHJpbnQgJ0lNUE9SVEVEICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfdGVzdHMpICsgJyBUT1RB
TCBURVNUUycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRf
cmVmdGVzdHMpICsgJyByZWZ0ZXN0cycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIo
dG90YWxfaW1wb3J0ZWRfanN0ZXN0cykgKyAnIEpTIHRlc3RzJworICAgICAgICBwcmludCAnSW1w
b3J0ZWQgJyArIHN0cih0b3RhbF9pbXBvcnRlZF90ZXN0cyAtIHRvdGFsX2ltcG9ydGVkX2pzdGVz
dHMgLSB0b3RhbF9pbXBvcnRlZF9yZWZ0ZXN0cykgKyAnIHBpeGVsL21hbnVhbCB0ZXN0cycKKwor
ICAgIGRlZiBzZXR1cF9kZXN0aW5hdGlvbl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIgor
ICAgICAgICAgICAgQ3JlYXRlcyBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSB0aGF0IG1pcnJvcnMg
dGhhdCBvZiB0aGUgc291cmNlIGFwcHJvdmVkLyBvcgorICAgICAgICAgICAgc3VibWl0dGVkLyBk
aXJlY3RvcnkKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUaGUgdGVzdCBzdGF0dXMgaXMgaW4g
dGhlIHBhdGgsIHNvIGdyYWIgaXQKKyAgICAgICAgc2VsZi5nZXRfdGVzdF9zdGF0dXMoKQorCisg
ICAgICAgICMgTWlycm9yIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGluIHRoZSBjc3N3ZyByZXBv
IHVuZGVyIGFwcHJvdmVkLyBvciBzdWJtaXR0ZWQvCisgICAgICAgIHN0YXJ0ID0gc2VsZi5zb3Vy
Y2VfZGlyZWN0b3J5LmZpbmQoc2VsZi50ZXN0X3N0YXR1cykKKyAgICAgICAgbmV3X3N1YnBhdGgg
PSBzZWxmLnNvdXJjZV9kaXJlY3Rvcnlbc3RhcnQ6bGVuKHNlbGYuc291cmNlX2RpcmVjdG9yeSld
CisKKyAgICAgICAgZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHNlbGYuZGVz
dGluYXRpb25fZGlyZWN0b3J5LCBuZXdfc3VicGF0aCkKKworICAgICAgICBpZiBub3Qgb3MucGF0
aC5leGlzdHMoZGVzdGluYXRpb25fZGlyZWN0b3J5KToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJz
KGRlc3RpbmF0aW9uX2RpcmVjdG9yeSkKKworICAgICAgICBwcmludCAnVGVzdHMgd2lsbCBiZSBp
bXBvcnRlZCBpbnRvOiAnICsgZGVzdGluYXRpb25fZGlyZWN0b3J5CisKKyAgICBkZWYgZ2V0X3Rl
c3Rfc3RhdHVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgICAgU2V0cyB0aGUgdGVzdCBz
dGF0dXMgYmFzZWQgb24gdGhlIGRpcmVjdG9yeSBuYW1pbmcgY29udmVudGlvbiBpbiB0aGUgQ1NT
V0cgcmVwby4KKyAgICAgICAgICAgSXQncyBlaXRoZXIgZ29pbmcgdG8gYmUgJ2FwcHJvdmVkJyBv
ciAnc3VibWl0dGVkJy4gQWx0aG91Z2ggdGhpcyBtZXRob2QKKyAgICAgICAgICAgc2hvdWxkIG5l
dmVyIGJlIGNhbGxlZCBpZiB0aGUgZGlyZWN0b3J5IGhhcyBuZWl0aGVyIG9mIHRoaXMsIHRoZSBz
dGF0dXMgaW4gdGhhdAorICAgICAgICAgICBjYXNlIGlzIGp1c3QgJ3Vua25vd24nCisgICAgICAg
ICIiIgorCisgICAgICAgIHN0YXR1cyA9IFVOS05PV04KKworICAgICAgICBpZiBzZWxmLnNvdXJj
ZV9kaXJlY3RvcnkuZmluZChBUFBST1ZFRCkgIT0gLTE6CisgICAgICAgICAgICBzdGF0dXMgPSBB
UFBST1ZFRAorICAgICAgICBlbGlmIHNlbGYuc291cmNlX2RpcmVjdG9yeS5maW5kKFNVQk1JVFRF
RCkgIT0gLTE6CisgICAgICAgICAgICBzdGF0dXMgPSBTVUJNSVRURUQKKworICAgICAgICBzZWxm
LnRlc3Rfc3RhdHVzID0gc3RhdHVzCisKKyAgICBkZWYgcmVtb3ZlX2RlbGV0ZWRfZmlsZXMoc2Vs
ZiwgaW1wb3J0X2RpcmVjdG9yeSwgbmV3X2ZpbGVfbGlzdCk6CisgICAgICAgICIiIgorICAgICAg
ICBSZWFkcyBhIHczYy1pbXBvcnQubG9nIGluIGEgZGlyZWN0b3J5IGlmIGl0IGV4aXN0cyBhbmQg
Y29tcGFyZXMgdGhlCisgICAgICAgIGxpc3Qgb2YgZmlsZXMgaW4gaXQgdG8gdGhlIG5ld2x5IGlt
cG9ydGVkIGZpbGUgbGlzdCwgdGhlbiByZW1vdmVzCisgICAgICAgIGFsbCBmaWxlcyB0aGF0IGFy
ZSBub3QgaW4gdGhlIG5ldyBsaXN0ICh3aGljaCB3b3VsZCBsaWtlbHkgbWVhbgorICAgICAgICBy
ZW1vdmVkIGZyb20gdGhlIFczQyByZXBvKQorCisgICAgICAgIEBwYXJhbSBpbXBvcnRfZGlyZWN0
b3J5OiB0aGUgZGlyZWN0b3J5IGludG8gd2hpY2ggZmlsZXMgd2VyZSBpbXBvcnRlZAorICAgICAg
ICBAcGFyYW0gbmV3X2ZpbGVfbGlzdDogdGhlIG5ldyBsaXN0IG9mIGZpbGVzIGltcG9ydGVkIGlu
IHRoaXMgZGlyZWN0b3J5CisgICAgICAgICIiIgorCisgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlz
dCA9IFtdCisKKyAgICAgICAgIyBGaXJzdCBjaGVjayBpZiB0aGVyZSB3YXMgYSBwcmV2aW91cyBp
bXBvcnQgaGVyZSAtIHRoZXJlIHNob3VsZCBiZSBhIGxvZworICAgICAgICBpbXBvcnRfbG9nX2Zp
bGUgPSBvcy5wYXRoLmpvaW4oaW1wb3J0X2RpcmVjdG9yeSwgJ3czYy1pbXBvcnQubG9nJykKKyAg
ICAgICAgaWYgbm90KG9zLnBhdGguZXhpc3RzKGltcG9ydF9sb2dfZmlsZSkpOgorICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICAgICAgaW1wb3J0X2xvZyA9IG9wZW4oaW1wb3J0X2xvZ19maWxlLCAn
cicpCisgICAgICAgIGNvbnRlbnRzID0gaW1wb3J0X2xvZy5yZWFkbGluZXMoKQorCisgICAgICAg
ICMgUHVsbCBsb2cgdGhlIGxpc3Qgb2YgZmlsZXMgZnJvbSB0aGUgcHJldmlvdXMgaW1wb3J0Cisg
ICAgICAgIGlmICdMaXN0IG9mIGZpbGVzXG4nIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgbGlz
dF9pZHggPSBjb250ZW50cy5pbmRleCgnTGlzdCBvZiBmaWxlczpcbicpICsgMQorICAgICAgICAg
ICAgcHJldmlvdXNfZmlsZV9saXN0ID0gY29udGVudHNbbGlzdF9pZHg6XQorICAgICAgICAgICAg
cHJldmlvdXNfZmlsZV9saXN0ID0gbWFwKGxhbWJkYSBzOiBzLnN0cmlwKCksIHByZXZpb3VzX2Zp
bGVfbGlzdCkKKworICAgICAgICBkZWxldGVkX2ZpbGVzID0gc2V0KHByZXZpb3VzX2ZpbGVfbGlz
dCkgLSBzZXQobmV3X2ZpbGVfbGlzdCkKKworICAgICAgICAjIExvb3AgdGhyb3VnaCBhbmQgcmVt
b3ZlIHRoZW0gYWxsCisgICAgICAgIGZvciBkZWxldGVkX2ZpbGUgaW4gZGVsZXRlZF9maWxlczoK
KyAgICAgICAgICAgIHByaW50ICdEZWxldGluZyBmaWxlIHJlbW92ZWQgZnJvbSB0aGUgVzNDIHJl
cG86JyArIGRlbGV0ZWRfZmlsZQorICAgICAgICAgICAgZGVsZXRlZF9maWxlID0gb3MucGF0aC5q
b2luKHNlbGYud2Via2l0X3Jvb3QsIGRlbGV0ZWRfZmlsZSkKKyAgICAgICAgICAgIG9zLnJlbW92
ZShkZWxldGVkX2ZpbGUpCisKKyAgICAgICAgaW1wb3J0X2xvZy5jbG9zZSgpCisKKyAgICBkZWYg
d3JpdGVfaW1wb3J0X2xvZyhzZWxmLCBpbXBvcnRfZGlyZWN0b3J5LCBmaWxlX2xpc3QsIHByb3Bf
bGlzdCk6CisgICAgICAgICIiIgorICAgICAgICBXcml0ZXMgYSB3M2MtaW1wb3J0LmxvZyBmaWxl
IGluIGVhY2ggZGlyZWN0b3J5IHdpdGggaW1wb3J0ZWQgZmlsZXMuCisgICAgICAgIFRoZSBsb2cg
ZmlsZSBjb250YWlucyBhIHRpbWVzdGFtcCBvZiB0aGUgaW1wb3J0LCB0aGUgVzNDIE1lcmN1cmlh
bAorICAgICAgICBjaGFuZ2VzZXQgKGlmIGF2YWlsYWJsZSksIHRoZSBzdGF0dXMgb2YgdGhlIHRl
c3RzIChhcHByb3ZlZCBvciBzdWJtaXR0ZWQpLAorICAgICAgICB0aGUgbGlzdCBvZiBwcm9wZXJ0
aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IHVzZWQgaW4gdGhlIGZpbGVzCisgICAg
ICAgIG9uIHRoZSBsaXN0LCBhbmQgdGhlIGxpc3Qgb2YgZmlsZXMgaW1wb3J0ZWQuCisKKyAgICAg
ICAgQHBhcmFtIGltcG9ydF9kaXJlY3Rvcnk6IHRoZSBkaXJlY3RvcnkgaW50byB3aGljaCBmaWxl
cyB3ZXJlIGltcG9ydGVkCisgICAgICAgIEBwYXJhbSBuZXdfZmlsZV9saXN0OiB0aGUgbmV3IGxp
c3Qgb2YgZmlsZXMgaW1wb3J0ZWQgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICAgICAgQHBhcmFtIHBy
b3BfbGlzdDogdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0
LSBwcmVmaXgKKyAgICAgICAgIiIiCisKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUu
bm93KCkKKworICAgICAgICAjIENyZWF0ZSBhIGxvZyBvZiB0aGlzIGltcG9ydCB3aXRoIGFsbCBz
b3J0cyBvZiBnb29kIGluZm9ybWF0aW9uCisgICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKG9zLnBh
dGguam9pbihpbXBvcnRfZGlyZWN0b3J5LCAndzNjLWltcG9ydC5sb2cnKSwgJ3cnKQorICAgICAg
ICBpbXBvcnRfbG9nLndyaXRlKCdUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3Jp
dGUoJ0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Via2l0LiBJbnN0ZWFk
LCBwdXNoIGNoYW5nZXMgdG8gdGhlIFczQyBDU1MgcmVwbzpcblxuJykKKyAgICAgICAgaW1wb3J0
X2xvZy53cml0ZSgnaHR0cDovL2hnLmNzc3dnLm9yZy90ZXN0XG5cbicpCisgICAgICAgIGltcG9y
dF9sb2cud3JpdGUoJ1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2Via2l0IHRvIHJlaW1wb3J0XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0Rv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZVxuXG4nKQorICAgICAgICBpbXBvcnRfbG9n
LndyaXRlKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xh
c3QgSW1wb3J0OiAnICsgbm93LnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTScpICsgJ1xuJykKKyAg
ICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQ6ICcgKyBzZWxm
LmNoYW5nZXNldCArICdcbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1Rlc3Qgc3RhdHVz
IGF0IHRpbWUgb2YgaW1wb3J0OiAnICsgc2VsZi50ZXN0X3N0YXR1cyArICdcbicpCisgICAgICAg
IGltcG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAgICAgaW1wb3J0X2xv
Zy53cml0ZSgnUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOlxuJykKKyAgICAg
ICAgaWYgbGVuKHByb3BfbGlzdCkgPT0gMDoKKyAgICAgICAgICAgIGltcG9ydF9sb2cud3JpdGUo
J05vbmVcbicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgcHJvcCBpbiBwcm9wX2xp
c3Q6CisgICAgICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZShwcm9wICsgJ1xuJykKKyAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nKQorICAgICAgICBpbXBvcnRf
bG9nLndyaXRlKCdMaXN0IG9mIGZpbGVzOlxuJykKKyAgICAgICAgZm9yIGl0ZW0gaW4gZmlsZV9s
aXN0OgorICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZShpdGVtICsgJ1xuJykKKworICAgICAg
ICBpbXBvcnRfbG9nLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZhZTNiOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTEgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitm
cm9tIHdlYmtpdHB5LnczYyBpbXBvcnQgdGVzdF9jb252ZXJ0ZXIKK2Zyb20gd2Via2l0cHkudzNj
LnRlc3RfaW1wb3J0ZXIgaW1wb3J0IFRlc3RJbXBvcnRlcgoraW1wb3J0IG9zCitpbXBvcnQgdW5p
dHRlc3QyIGFzIHVuaXR0ZXN0CisKK1dFQktJVF9ST09UID0gX19maWxlX18uc3BsaXQob3MucGF0
aC5zZXAgKyAnVG9vbHMnKVswXQorCisKK2NsYXNzIFRlc3RJbXBvcnRlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfSW1wb3J0RGlyV2l0aE5vVGVzdHMoc2VsZik6Cisg
ICAgICAgICIiIgorICAgICAgICAgICBUZXN0cyBkb19pbXBvcnQoKSB3aXRoIGEgZGlyZWN0b3J5
IHRoYXQgY29udGFpbnMgbm8gdGVzdHMgLSB1c2luZworICAgICAgICAgICBhIFdlYmtpdCBzb3Vy
Y2UgZGlyZWN0b3J5IHRoYXQgc2hvdWxkIG5ldmVyIGNvbnRhaW4gVzNDIHRlc3RzCisgICAgICAg
ICIiIgorICAgICAgICBkaXJfd2l0aF9ub190ZXN0cyA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNl
cCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5TT1VSQ0VfU1VCRElS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9jb252ZXJ0ZXIuV0VCQ09SRV9TVUJESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSKQor
CisgICAgICAgIGltcG9ydGVyID0gVGVzdEltcG9ydGVyKGRpcl93aXRoX25vX3Rlc3RzLCBOb25l
KQorICAgICAgICBpbXBvcnRlci5kb19pbXBvcnQoKQorCisKKyAgICAjIFRPRE86IE5lZWQgbW9y
ZSB0ZXN0cywgYnV0IHdoYXQgdG8gdXNlIGZvciB2YWxpZCBzb3VyY2UgZGlyZWN0b3J5PyBNYWtl
IGl0IG9uIHRoZSBmbHkKKyAgICAjICAgICAgIGFuZCBjbGVhbiBpdCB1cCBhZnRlcndhcmQ/CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmI4YWFmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpAQCAtMCwwICsxLDE4MCBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxT
b3VwIGFzIFBhcnNlcgoraW1wb3J0IG9zCitpbXBvcnQgcmUKKworCitjbGFzcyBUZXN0UGFyc2Vy
KG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZmlsZW5hbWUpOgor
ICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBm
aWxlbmFtZQorICAgICAgICBzZWxmLnRlc3RfZG9jID0gc2VsZi5sb2FkX2ZpbGUoZmlsZW5hbWUp
CisgICAgICAgIHNlbGYucmVmX2RvYyA9IE5vbmUKKworICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwg
cGF0aCk6CisgICAgICAgICIiIgorICAgICAgICBPcGVucyBhbmQgcmVhZCB0aGUgZmlsZSB0byBw
YXJzZQorCisgICAgICAgIEBwYXJhbSBwYXRoOiBmdWxsIHBhdGggdG8gdGhlIGZpbGUKKworICAg
ICAgICBAcmV0dXJuOiBhIG5ldyBCZWF1dGlmdWxTb3VwIHBhcnNlciBmb3IgdGhlIGZpbGUKKyAg
ICAgICAgIiIiCisgICAgICAgIGRvYyA9IE5vbmUKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0
cyhwYXRoKToKKyAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgpCisgICAgICAgICAgICBodG1sID0g
Zi5yZWFkKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgICAgICBkb2MgPSBQYXJz
ZXIoaHRtbCkKKworICAgICAgICByZXR1cm4gZG9jCisKKyAgICBkZWYgYW5hbHl6ZV90ZXN0KHNl
bGYsIHRlc3RfY29udGVudHM9Tm9uZSwgcmVmX2NvbnRlbnRzPU5vbmUpOgorICAgICAgICAiIiIK
KyAgICAgICAgQW5hbHl6ZXMgYSBmaWxlIHRvIGRldGVybWluZSBpZiBpdCdzIGEgdGVzdCwgd2hh
dCB0eXBlIG9mIHRlc3QsCisgICAgICAgIGFuZCB3aGF0IHJlZmVyZW5jZSBvciBzdXBwb3J0IGZp
bGVzIGl0IHJlcXVpcmVzCisKKyAgICAgICAgQHJldHVybjogRGljdGlvbmFyeSB7IHRlc3Q6IG9y
aWdpbmFsIGFic29sdXRlIHBhdGggdG8gdGhlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZTogb3JpZ2luYWwgYWJzb2x1dGUgcGF0aCB0byB0aGUgcmVmZXJlbmNl
IGZpbGUgKGlmIGEgcmVmdGVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnN1
cHBvcnQ6IHJlZmVyZW5jZSBmaWxlIGRlcGVuZGVuY2llcyAoaWYgYSByZWZ0ZXN0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAganN0ZXN0OiBUcnVlIChpZiBhIGpzdGVzdCkKKyAgICAg
ICAgIiIiCisKKyAgICAgICAgdGVzdF9pbmZvID0gTm9uZQorCisgICAgICAgIGlmIHRlc3RfY29u
dGVudHMgaXMgTm9uZSBhbmQgc2VsZi50ZXN0X2RvYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0
dXJuIHRlc3RfaW5mbworCisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBzZWxmLnRlc3RfZG9jID0gUGFyc2VyKHRlc3RfY29udGVudHMpCisKKyAgICAg
ICAgaWYgcmVmX2NvbnRlbnRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5yZWZfZG9j
ID0gUGFyc2VyKHJlZl9jb250ZW50cykKKworICAgICAgICAjIEZpcnN0IGNoZWNrIGlmIGl0J3Mg
YSByZWZ0ZXN0CisgICAgICAgIG1hdGNoZXMgPSBzZWxmLmdldF9yZWZ0ZXN0cyhUcnVlKQorICAg
ICAgICBpZiBsZW4obWF0Y2hlcykgIT0gMDoKKworICAgICAgICAgICAgaWYgbGVuKG1hdGNoZXMp
ID4gMToKKyAgICAgICAgICAgICAgICBwcmludCAnV2FybmluZzogV2Via2l0IGRvZXMgbm90IHN1
cHBvcnQgbXVsdGlwbGUgcmVmZXJlbmNlcy4gSW1wb3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5l
ZCBpbiAnICsgb3MucGF0aC5iYXNlbmFtZShzZWxmLmZpbGVuYW1lKQorCisgICAgICAgICAgICBy
ZWZfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5maWxlbmFtZSksIG1h
dGNoZXNbMF1bJ2hyZWYnXSkKKyAgICAgICAgICAgIGlmIHNlbGYucmVmX2RvYyBpcyBOb25lOgor
ICAgICAgICAgICAgICAgIHNlbGYucmVmX2RvYyA9IHNlbGYubG9hZF9maWxlKHJlZl9maWxlKQor
CisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAncmVmZXJl
bmNlJzogcmVmX2ZpbGV9CisKKyAgICAgICAgICAgICMgSWYgdGhlIHJlZiBmaWxlIHBhdGggaXMg
cmVsYXRpdmUsIHdlIG5lZWQgdG8gY2hlY2sgaXQgZm9yIHJlbGF0aXZlIHBhdGhzCisgICAgICAg
ICAgICAjIGJlY2F1c2Ugd2hlbiBpdCBsYW5kcyBpbiBXZWJraXQsIGl0IHdpbGwgYmUgbW92ZWQg
ZG93biBpbnRvIHRoZSB0ZXN0IGRpcgorICAgICAgICAgICAgIyBOb3RlOiBUaGUgdGVzdCBmaWxl
cyB0aGVtc2VsdmVzIGFyZSBub3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxlcworICAgICAgICAg
ICAgIyB0aGF0IGxpdmUgb3V0c2lkZSB0aGVpciBkaXJlY3RvcmllcyBhcyBpdCdzIHRoZSBjb252
ZW50aW9uIGluIHRoZSBDU1NXRworICAgICAgICAgICAgIyB0byBwdXQgYWxsIHN1cHBvcnQgZmls
ZXMgaW4gdGhlIHNhbWUgZGlyIG9yIHN1YmRpciBhcyB0aGUgdGVzdC4gQWxsIG5vbi10ZXN0Cisg
ICAgICAgICAgICAjIGZpbGVzIGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5IHRyZWUgYXJlIGF1dG9t
YXRpY2FsbHkgY29waWVkIGFzIHBhcnQgb2YgdGhlIGltcG9ydCBhcworICAgICAgICAgICAgIyB0
aGV5IGFyZSBhc3N1bWVkIHRvIGJlIHJlcXVpcmVkIHN1cHBvcnQgZmlsZXMgVGhlcmUgaXMgZXhh
Y3RseSBvbmUgY2FzZSBpbiB0aGUgZW50aXJlCisgICAgICAgICAgICAjIGNzczIuMSBzdWl0ZSB3
aGVyZSBhdCB0ZXN0IGRlcGVuZHMgb24gYSBmaWxlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQg
ZGlyZWN0b3J5LCB3aGljaAorICAgICAgICAgICAgIyBkZXBlbmRzIG9uIGFub3RoZXIgZmlsZSB0
aGF0IGxpdmVzIG91dHNpZGUgb2YgaXRzIGRpcmVjdG9yeS4gVGhpcyBjb2RlIGNvdmVycyB0aGF0
IGNhc2UgOikKKyAgICAgICAgICAgIGlmIG1hdGNoZXNbMF1bJ2hyZWYnXS5zdGFydHN3aXRoKCcu
LicpOgorICAgICAgICAgICAgICAgIHN1cHBvcnRGaWxlcyA9IHNlbGYuZ2V0X3N1cHBvcnRfZmls
ZXMoc2VsZi5yZWZfZG9jKQorICAgICAgICAgICAgICAgIHRlc3RfaW5mb1sncmVmc3VwcG9ydCdd
ID0gc3VwcG9ydEZpbGVzCisKKyAgICAgICAgIyBOZXh0LCBpZiBpdCdzIGEgSlMgdGVzdAorICAg
ICAgICBlbGlmIHNlbGYuaXNfanN0ZXN0KCk6CisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rl
c3QnOiBzZWxmLmZpbGVuYW1lLCAnanN0ZXN0JzogVHJ1ZX0KKworICAgICAgICAjIE9yIGlmIHdl
IGV4cGxpY2l0bHkgd2FudCBldmVyeXRoaW5nCisgICAgICAgIGVsaWYgc2VsZi5vcHRpb25zWydh
bGwnXSBpcyBUcnVlIGFuZCBcCisgICAgICAgICAgICAgbm90KCctcmVmJyBpbiBzZWxmLmZpbGVu
YW1lKSBhbmQgXAorICAgICAgICAgICAgIG5vdCgncmVmZXJlbmNlJyBpbiBzZWxmLmZpbGVuYW1l
KToKKyAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWV9CisKKyAg
ICAgICAgIyBDb3VydGVzeSBjaGVjayBhbmQgd2FybmluZyBpZiB0aGVyZSBhcmUgYW55IG1pc21h
dGNoZXMKKyAgICAgICAgbWlzbWF0Y2hlcyA9IHNlbGYuZ2V0X3JlZnRlc3RzKEZhbHNlKQorICAg
ICAgICBpZiBsZW4obWlzbWF0Y2hlcykgIT0gMDoKKyAgICAgICAgICAgIHByaW50ICJXYXJuaW5n
OiBXZWJraXQgZG9lcyBub3Qgc3VwcG9ydCBtaXNtYXRjaCByZWZlcmVuY2VzLiBJZ25vcmluZyBt
aXNtYXRjaCBkZWZpbmVkIGluICIgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZmlsZW5hbWUpCisK
KyAgICAgICAgcmV0dXJuIHRlc3RfaW5mbworCisgICAgZGVmIGdldF9yZWZ0ZXN0cyhzZWxmLCBm
aW5kX21hdGNoKToKKyAgICAgICAgIiIiCisgICAgICAgIFNlYXJjaGVzIGZvciBhbGwgcmVmZXJl
bmNlIGxpbmtzIGluIHRoZSBmaWxlCisKKyAgICAgICAgQHBhcmFtIGZpbmRfbWF0Y2g6IEJvb2xl
YW4sIFRydWUgdG8gc2VhcmNoIGZvciBtYXRjaCBsaW5rcywgRmFsc2UgdG8gc2VhcmNoIGZvciBt
aXNtYXRjaCBsaW5rcworICAgICAgICAiIiIKKyAgICAgICAgaWYgZmluZF9tYXRjaDoKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLnRlc3RfZG9jLmZpbmRBbGwocmVsPSdtYXRjaCcpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2RvYy5maW5kQWxsKHJlbD0nbWlz
bWF0Y2gnKQorCisgICAgZGVmIGlzX2pzdGVzdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFNlYXJjaGVzIHRoZSBmaWxlIGZvciB1c2FnZSBvZiBXM0Mtc3R5bGUgdGVzdGhhcm5lc3MgcGF0
aHMKKworICAgICAgICBAcmV0dXJuOiBUcnVlIGlmIGZvdW5kCisgICAgICAgICIiIgorICAgICAg
ICBpZiBzZWxmLnRlc3RfZG9jLmZpbmQoc3JjPXJlLmNvbXBpbGUoJ1tcJ1wiL10/L3Jlc291cmNl
cy90ZXN0aGFybmVzcycpKSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zdXBwb3J0
X2ZpbGVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIgorICAgICAgICBTZWFyY2hlcyB0aGUgZmls
ZSBmb3IgYWxsIHBhdGhzIHNwZWNpZmllZCBpbiB1cmwoKSdzLCBocmVmIG9yIHNyYyBhdHRyaWJ1
dGVzCisKKyAgICAgICAgQHJldHVybjogdGhlIGxpc3Qgb2YgcGF0aHMKKyAgICAgICAgIiIiCisK
KyAgICAgICAgc3VwcG9ydF9maWxlcyA9IFtdCisKKyAgICAgICAgaWYgZG9jIGlzIE5vbmU6Cisg
ICAgICAgICAgICByZXR1cm4gc3VwcG9ydF9maWxlcworCisgICAgICAgICMgTG9vayBmb3IgdGFn
cyB3aXRoIHNyYyBvciBocmVmIGF0dHJpYnV0ZXMKKyAgICAgICAgc3JjX2F0dHJzID0gZG9jLmZp
bmRBbGwoc3JjPXJlLmNvbXBpbGUoJy4qJykpCisgICAgICAgIGhyZWZfYXR0cnMgPSBkb2MuZmlu
ZEFsbChocmVmPXJlLmNvbXBpbGUoJy4qJykpCisKKyAgICAgICAgIyBMb29rIGZvciB1cmxzCisg
ICAgICAgIHVybF9wYXR0ZXJuID0gcmUuY29tcGlsZSgndXJsXCguKlwpJykKKyAgICAgICAgdXJs
cyA9IFtdCisgICAgICAgIGZvciB1cmwgaW4gZG9jLmZpbmRBbGwodGV4dD11cmxfcGF0dGVybik6
CisgICAgICAgICAgICB1cmwgPSByZS5zZWFyY2godXJsX3BhdHRlcm4sIHVybCkKKyAgICAgICAg
ICAgIHVybCA9IHJlLnN1YigndXJsXChbXCdcIl0nLCAnJywgdXJsLmdyb3VwKDApKQorICAgICAg
ICAgICAgdXJsID0gcmUuc3ViKCdbXCdcIl1cKScsICcnLCB1cmwpCisgICAgICAgICAgICB1cmxz
LmFwcGVuZCh1cmwpCisKKyAgICAgICAgc3JjX3BhdGhzID0gW3NyY190YWdbJ3NyYyddIGZvciBz
cmNfdGFnIGluIHNyY19hdHRyc10KKyAgICAgICAgaHJlZl9wYXRocyA9IFtocmVmX3RhZ1snaHJl
ZiddIGZvciBocmVmX3RhZyBpbiBocmVmX2F0dHJzXQorCisgICAgICAgIHBhdGhzID0gc3JjX3Bh
dGhzICsgaHJlZl9wYXRocyArIHVybHMKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAg
ICAgICAgICAjIElnbm9yZSBodHRwIGFuZCBtYWlsdG8gbGlua3MKKyAgICAgICAgICAgIGlmIG5v
dChwYXRoLnN0YXJ0c3dpdGgoJ2h0dHA6JykpIGFuZCBcCisgICAgICAgICAgICAgICBub3QocGF0
aC5zdGFydHN3aXRoKCdtYWlsdG86JykpOgorICAgICAgICAgICAgICAgIHN1cHBvcnRfZmlsZXMu
YXBwZW5kKHBhdGgpCisKKyAgICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM1M2VlZQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAg
KzEsMzU2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRl
c3RQYXJzZXIKK2ltcG9ydCBzeXMKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IHVuaXR0ZXN0MiBh
cyB1bml0dGVzdAoraW1wb3J0IG9zCisKK29wdGlvbnMgPSB7J2FsbCc6IEZhbHNlLCAnbm9fb3Zl
cndyaXRlJzogRmFsc2V9CisKKworY2xhc3MgVGVzdFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2goc2VsZik6Cisg
ICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIGJhc2ljIHJl
ZnRlc3Qgd2l0aAorICAgICAgICBvbmUgbWF0Y2ggbGluayBhbmQgbm8gbWlzbWF0Y2ggbGlua3MK
KyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9y
Zy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQ
VElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9B
VVRIT1IiIGhyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPGxpbmsgcmVsPSJt
YXRjaCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRB
WworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9G
IFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUv
bWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3Rf
cGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5
emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0aGUg
Y29ycmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwo
dGVzdF9pbmZvLCBOb25lLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3Qg
ZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8u
a2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUodGVzdF9pbmZvWydyZWZlcmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0aCksICdy
ZWZlcmVuY2UgcGF0aCBpcyBub3QgY29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
J3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVm
c3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgn
anN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBh
bmFseXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RN
dWx0aXBsZU1hdGNoZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFseXpl
X3Rlc3QoKSB1c2luZyBhIHJlZnRlc3Qgd2l0aAorICAgICAgICBtdWx0aXBsZSBtYXRjaCBsaW5r
cyBhbmQgbm8gbWlzbWF0Y2ggbGlua3MKKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9odG1s
ID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0
Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRk
Ij4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgor
PHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0i
YXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiIGhyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRw
Oi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNf
U0VDVElPTiIvPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54aHQiIC8+
Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJibHVlLWJveC1yZWYueGh0IiAvPgorPGxpbmsgcmVs
PSJtYXRjaCIgaHJlZj0ib3JhbmdlLWJveC1yZWYueGh0IiAvPgorPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtD
REFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVO
VCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBDYXB0dXJlIHN0ZG91
dCBmb3IgdGhpcyB0ZXN0CisgICAgICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgb3V0
cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBzeXMuc3Rkb3V0ID0gb3V0cHV0CisK
KyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9t
YWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9w
YXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6
ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAgICAgICMgUmVzdG9yZSBzdGRv
dXQKKyAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAorCisgICAgICAgICMgVmVyaWZ5IHRoZSBj
b3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0
ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBm
aWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5r
ZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3Jl
ZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgn
cmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZz
dXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdq
c3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFu
YWx5emVkIGFzIGEganN0ZXN0JykKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgdGhlIHdhcm5p
bmcgYWJvdXQgbXVsdGlwbGUgbWF0Y2hlcworICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0
LmdldHZhbHVlKCkuc3RhcnRzd2l0aCgnV2FybmluZycpLCAnbm8gd2FybmluZyBhYm91dCBtdWx0
aXBsZSBtYXRjaGVzJykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE1hdGNoQW5k
TWlzbWF0Y2goc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFseXplX3Rlc3Qo
KSB1c2luZyBhIHJlZnRlc3Qgd2l0aAorICAgICAgICBhIG9uZSBtYXRjaCBsaW5rIGFuZCBvbmUg
bWlzbWF0Y2ggbGluaworICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURP
Q1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0
dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NT
IFRlc3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRp
dGxlPSJOQU1FX09GX0FVVEhPUiIgaHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNU
X1BBR0UiLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+
Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KKzxsaW5rIHJl
bD0ibWF0Y2giIGhyZWY9ImJsdWUtYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1pc21hdGNo
IiBocmVmPSJvcmFuZ2UtYm94LW5vdHJlZi54aHQiIC8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRB
WworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9G
IFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIENhcHR1cmUgc3Rkb3V0IGZv
ciB0aGlzIHRlc3QKKyAgICAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICBvdXRwdXQg
PSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHN5cy5zdGRvdXQgPSBvdXRwdXQKKworICAg
ICAgICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1
cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGgg
KyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rl
c3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBSZXN0b3JlIHN0ZG91dAor
ICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJl
Y3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3Rf
aW5mbywgTm9uZSwgJ2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUn
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMo
KSwgJ2RpZCBub3QgZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHRlc3RfaW5mb1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJl
bmNlIHBhdGggaXMgbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZz
dXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBv
cnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVz
dCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6
ZWQgYXMgYSBqc3Rlc3QnKQorCisgICAgICAgICMgVmVyaWZ5IHdlIGdvdCBtdWx0aXBsZSB3YXJu
aW5ncworICAgICAgICB3YXJuaW5ncyA9IG91dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4od2FybmluZ3MpLCAyLCAnYWxsIHdhcm5pbmdz
IHdlcmUgbm90IGRpc3BsYXllZCcpCisgICAgICAgICMgVmVyaWZ5IHRoZSBib3RoIHdhcm5pbmdz
IG1lbnRpb24gdGhlIGlzc3VlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbXVsdGlwbGUgbWF0
Y2hlcycsICdubyB3YXJuaW5nIGFib3V0IG11bHRpcGxlIG1hdGNoZXMnKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUoJ21pc21hdGNoJywgJ25vIHdhcm5pbmcgYWJvdXQgbWlzbWF0Y2hlcycpCisK
KyAgICBkZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RXaXRoUmVmU3VwcG9ydEZpbGVzKHNlbGYp
OgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0
ZXN0IHRoYXQgaGFzIHJlZmVycyB0byBhCisgICAgICAgIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUg
b2YgdGhlIHRlc3RzIGRpcmVjdG9yeSBhbmQgdGhlIHJlZmVyZW5jZQorICAgICAgICBmaWxlIGhh
cyBwYXRocyB0byBvdGhlciBzdXBwb3J0IGZpbGVzCisgICAgICAgICIiIgorCisgICAgICAgIHRl
c3RfaHRtbCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4w
IFN0cmljdC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3Ry
aWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8
aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGlu
ayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiBocmVmPSJtYWlsdG86RU1BSUwg
T1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJSRUxFVkFO
VF9TUEVDX1NFQ1RJT04iLz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9Ii4uL3JlZmVyZW5jZS9n
cmVlbi1ib3gtcmVmLnhodCIgLz4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVEVTVCBB
U1NFUlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1MgRk9SIFRF
U1QKK11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAorPC9ib2R5
PgorPC9odG1sPgorIiIiCisgICAgICAgIHJlZl9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9y
Zy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBSZWZ0ZXN0IFJlZmVy
ZW5jZTwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiBo
cmVmPSJtYWlsdG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgaHJlZj0i
c3VwcG9ydC9jc3MvcmVmLXN0eWxlc2hlZXQuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl
eHQvY3NzIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCisgICAgYmFja2dyb3Vu
ZC1pbWFnZTogdXJsKCIuLi8uLi9zdXBwb3J0L3NvbWUtaW1hZ2UucG5nIikKK11dPjwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+PGltZyBzcmM9Ii4uL3N1cHBvcnQvYmxhY2s5Nng5Ni5w
bmciIGFsdD0iSW1hZ2UgZG93bmxvYWQgc3VwcG9ydCBtdXN0IGJlIGVuYWJsZWQiIC8+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAg
ICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRl
c3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0
ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sLCBy
ZWZfY29udGVudHM9cmVmX2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVz
dCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywg
Tm9uZSwgJ2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rl
c3QnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2Rp
ZCBub3QgZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRl
c3RfaW5mb1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBh
dGggaXMgbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnN1cHBvcnQn
IGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgcmVmc3VwcG9ydCBmaWxlcyBm
b3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKHRlc3RfaW5mb1sn
cmVmc3VwcG9ydCddKSwgMywgJ3RoZXJlIHNob3VsZCBiZSAzIHN1cHBvcnQgZmlsZXMgaW4gdGhp
cyByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3Rf
aW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0
ZXN0JykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVKU1Rlc3Qoc2VsZik6CisgICAgICAgICIiIgor
ICAgICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIGpzdGVzdAorICAgICAgICAiIiIK
KworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8v
RFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9E
VEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8
L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhPUiIKK2hyZWY9
Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9ImhlbHAi
IGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij48IVtDREFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
Q09OVEVOVCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBBbmFseXpl
IHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAg
ICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0
bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVu
dHM9dGVzdF9odG1sKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3
YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0
ZXN0X2luZm8gaXMgTm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVz
dF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBo
YXZlIGZvdW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdy
ZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1
cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnanN0
ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgYmUgYSBqc3Rlc3QnKQorCisg
ICAgZGVmIHRlc3RfYW5hbHl6ZVBpeGVsVGVzdEFsbFRydWUoc2VsZik6CisgICAgICAgICIiIgor
ICAgICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVy
IGEgcmVmdGVzdCBvciBqc3Rlc3Qgd2l0aCBhbGw9RmFsc2UKKyAgICAgICAgIiIiCisKKyAgICAg
ICAgIyBCYXNpYyB0ZXN0IGNvbnRlbnQgdXNpbmcgYWxsIHRocmVlIHRlc3RoYXJuZXNzIGZpbGVz
CisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RU
RC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwv
dGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIgoraHJlZj0i
bWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwor
Q1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRF
U1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIFNldCBvcHRpb25zIHRvICdhbGwn
IHNvIHRoaXMgZ2V0cyBmb3VuZAorICAgICAgICBvcHRpb25zWydhbGwnXSA9IFRydWUKKworICAg
ICAgICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1
cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGgg
KyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rl
c3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJl
Y3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3Rf
aW5mbywgTm9uZSwgJ3Rlc3RfaW5mbyBpcyBOb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygp
LCAnc2hvbGQgbm90IGhhdmUgZm91bmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91
bGQgYmUgbm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90
IGJlIGEganN0ZXN0JykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVQaXhlbFRlc3RBbGxGYWxzZShz
ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3RzIGFuYWx5emVfdGVzdCgpIHVzaW5nIGEg
dGVzdCB0aGF0IGlzIG5laXRoZXIgYSByZWZ0ZXN0IG9yIGpzdGVzdCwgd2l0aCAtYWxsPUZhbHNl
CisgICAgICAgICIiIgorCisgICAgICAgICMgQmFzaWMgdGVzdCBjb250ZW50IHVzaW5nIGFsbCB0
aHJlZSB0ZXN0aGFybmVzcyBmaWxlcworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZUEUg
aHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6Ly93
d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6
IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJO
QU1FX09GX0FVVEhPUiIKK2hyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdF
Ii8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIj48IVtDREFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorQ09OVEVOVCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAg
IyBTZXQgYWxsIHRvIGZhbHNlIHNvIHRoaXMgZ2V0cyBza2lwcGVkCisgICAgICAgIG9wdGlvbnNb
J2FsbCddID0gRmFsc2UKKworICAgICAgICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVz
dF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNl
cihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5m
byA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAg
ICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ3Rlc3Qgc2hvdWxkIGhhdmUgYmVlbiBza2lw
cGVkJykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVOb25IVE1MRmlsZShzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIFRlc3RzIGFuYWx5emVfdGVzdCgpIHdpdGggYSBmaWxlIHRoaXMgaXNuJ3Qg
aHRtbCAodGhpcyBvbmUhKQorICAgICAgICAiIiIKKworICAgICAgICAjIFRyeSB0byBhbmFseXpl
IHRoZSBzY3JpcHQgZmlsZSB3ZSdyZSB0ZXN0aW5nIChob3cgbWV0YSkKKyAgICAgICAgdGVzdF9w
YXJzZXJfcHlfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAn
dGVzdF9wYXJzZXIucHknKQorCisgICAgICAgICMgQW5hbHl6ZSB0aGUgZmlsZQorICAgICAgICBw
YXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGFyc2VyX3B5X2ZpbGUpCisgICAgICAg
IHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QoKQorCisgICAgICAgICMgVmVyaWZ5IHRo
ZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
ZXN0X2luZm8sIE5vbmUsICdubyB0ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGZvdW5kIGluIHRoaXMg
ZmlsZScpCg==
</data>
<flag name="review"
          id="216019"
          type_id="1"
          status="+"
          setter="rhauck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194309</attachid>
            <date>2013-03-21 11:54:29 -0700</date>
            <delta_ts>2013-03-21 13:31:10 -0700</delta_ts>
            <desc>updated patch - previous patch was missing a local uncommitted change</desc>
            <filename>bug111513.new.patch.2</filename>
            <type>text/plain</type>
            <size>86173</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Yzgx
NjhiLi41YmI5NTc4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisyMDEzLTAzLTIxICBSZWJlY2NhIEhhdWNrICA8cmhh
dWNrQGFkb2JlLmNvbT4KKworICAgICAgICBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGlyZWN0b3J5
IG9mIFczQyBDU1MgdGVzdHMgaW50byBXZWJLaXQuCisgICAgICAgIAorICAgICAgICBZb3UgbXVz
dCBoYXZlIGNoZWNrZWQgbG9nIHRoZSBXM0MgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZl
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBzY3JpcHQgd2lsbCBpbXBvcnQgdGhlIHRlc3RzIGlu
dG8gV2ViS2l0IGZvbGxvd2luZyB0aGVzZSBydWxlczoKKworICAgICAgICAtIE9ubHkgdGVzdHMg
dGhhdCBhcmUgYXBwcm92ZWQgb3Igb2ZmaWNpYWxseSBzdWJtaXR0ZWQgYXdhaXRpbmcgcmV2aWV3
IGFyZSBpbXBvcnRlZAorICAgICAgICAKKyAgICAgICAgLSBBbGwgdGVzdHMgYXJlIGltcG9ydGVk
IGludG8gTGF5b3V0VGVzdHMvY3Nzd2cKKyAgICAgICAgCisgICAgICAgIC0gSWYgdGhlIHRlc3Rz
IGFyZSBhcHByb3ZlZCwgdGhleSdsbCBiZSBpbXBvcnRlZCBpbnRvIGEgZGlyZWN0b3J5IHRyZWUg
dGhhdAorICAgICAgICAgIG1pcnJvcnMgdGhlIENTUyBNZXJjdXJpYWwgcmVwby4gRm9yIGV4YW1w
bGUsIDxjc3N3Z19yZXBvX3Jvb3Q+L2FwcHJvdmVkL2NzczIuMSBpcyBicm91Z2h0IGluICAgICAg
ICAgICAgICAgIAorICAgICAgICAgIGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVkL2NzczIu
MSwgbWFpbnRhaW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVyIHRoYXQK
KyAgICAgICAgCisgICAgICAgIC0gSWYgdGhlIHRlc3RzIGFyZSBzdWJtaXR0ZWQsIHRoZXknbGwg
YmUgYnJvdWdodCBpbiBhcyBMYXlvdXRUZXN0cy9jc3N3Zy9zdWJtaXR0ZWQgYW5kIHdpbGwgYWxz
bworICAgICAgICAgIG1haW50YWluIHRoZWlyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgdGhh
dC4gRm9yIGV4YW1wbGUsIGV2ZXJ5dGhpbmcgdW5kZXIKKyAgICAgICAgICA8Y3Nzd2dfcmVwb19y
b290Pi9jb250cmlidXRvcnMvYWRvYmUvc3VibWl0dGVkIGlzIGJyb3VnaHQgaW50byBzdWJtaXR0
ZWQsIG1pcnJvcmluZyBpdHMgCisgICAgICAgICAgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbiB0aGUg
Y3Nzd2cgcmVwbworCisgICAgICAgIC0gSWYgdGhlIGltcG9ydCBkaXJlY3Rvcnkgc3BlY2lmaWVk
IGlzIGp1c3QgYSBjb250cmlidXRvciBmb2xkZXIsIG9ubHkgdGhlIHN1Ym1pdHRlZCBmb2xkZXIK
KyAgICAgICAgICBmb3IgdGhhdCBjb250cmlidXRvciBpcyBicm91Z2h0IGluLiBGb3IgZXhhbXBs
ZSwgdG8gaW1wb3J0IGFsbCBvZiBNb3ppbGxhJ3MgdGVzdHMsIGVpdGhlcgorICAgICAgICAgIDxj
c3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9tb3ppbGxhIG9yIDxjc3N3Z19yZXBvX3Jvb3Q+
L2NvbnRyaWJ1dG9ycy9tb3ppbGxhL3N1Ym1pdHRlZAorICAgICAgICAgIHdpbGwgd29yayBhbmQg
YXJlIGVxdWl2YWxlbnQKKyAgICAgICAgCisgICAgICAgIC0gRm9yIHRoZSB0aW1lIGJlaW5nLCB0
aGlzIHNjcmlwdCB3b24ndCB3b3JrIGlmIHlvdSB0cnkgdG8gaW1wb3J0IHRoZSBmdWxsIHNldCBv
ZiBzdWJtaXR0ZWQKKyAgICAgICAgICB0ZXN0cyB1bmRlciBjb250cmlidXRvcnMvKi9zdWJtaXR0
ZWQuIFNpbmNlIHRoZXNlIGFyZSBhd2FpdGluZyByZXZpZXcsIHRoaXMgaXMganVzdCBhIHNtYWxs
CisgICAgICAgICAgY29udHJvbCBtZWNoYW5pc20gdG8gZW5mb3JjZSBjYXJlZnVsbHkgc2VsZWN0
aW5nIHdoYXQgbm9uLWFwcHJvdmVkIHRlc3RzIGFyZSBpbXBvcnRlZC4KKyAgICAgICAgICBJdCBj
YW4gb2J2aW91c2x5IGFuZCBlYXNpbHkgYmUgY2hhbmdlZC4KKworICAgICAgICAtIEJ5IGRlZmF1
bHQsIG9ubHkgcmVmdGVzdHMgYW5kIGpzdGVzdCBhcmUgaW1wb3J0ZWQuIFRoaXMgY2FuIGJlIG92
ZXJyaWRkZW4gd2l0aCBhIC1hIG9yIC0tYWxsCisgICAgICAgICAgYXJndW1lbnQKKworICAgICAg
ICAtIEFsc28gYnkgZGVmYXVsdCwgaWYgdGVzdCBmaWxlcyBieSB0aGUgc2FtZSBuYW1lIGFscmVh
ZHkgZXhpc3QgaW4gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSwKKyAgICAgICAgICB0aGV5IGFy
ZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBpZGVhIHRoYXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3Vs
ZCByZWZyZXNoIGZpbGVzIHBlcmlvZGljYWxseS4KKyAgICAgICAgICBUaGlzIGNhbiBhbHNvIGJl
IG92ZXJyaWRkZW4gYnkgYSAtbiBvciAtLW5vLW92ZXJ3cml0ZSBmbGFnCisKKyAgICAgICAgLSBB
bGwgZmlsZXMgYXJlIGNvbnZlcnRlZCB0byB3b3JrIGluIFdlYktpdDoKKyAgICAgICAgICAgIDEu
IC54aHQgZXh0ZW5zaW9ucyBhcmUgY2hhbmdlZCB0byAueGh0bWwgdG8gbWFrZSBuZXctcnVuLXdl
YmtpdC10ZXN0cyBoYXBweQorICAgICAgICAgICAgMi4gUGF0aHMgdG8gdGVzdGhhcm5lc3MuanMg
ZmlsZXMgYXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbgorICAg
ICAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNvcnJlY3QgcmVs
YXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KKyAgICAgICAgICAgIDMuIEFsbCBDU1Mg
cHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtdmVuZG9yIHByZWZpeCBhcmUgcHJlZml4
ZWQgLSB0aGlzIGN1cnJlbnQKKyAgICAgICAgICAgICAgIGxpc3Qgb2Ygd2hhdCBuZWVkcyBwcmVm
aXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnRpZXMuaW4KKyAg
ICAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5IG9mIGl0cyByZWZlcmVu
Y2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucworICAgICAgICAgICAgICAg
bmV3LXJ1bi13ZWJraXQtdGVzdHMgZXhwZWN0cworICAgICAgICAgICAgNS4gSWYgYSBhIHJlZmVy
ZW5jZSBmaWxlcyBsaXZlcyBvdXRzaWRlIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHRlc3QgdGhhdCB1
c2VzIGl0LCBpdCBpcyBjaGVja2VkCisgICAgICAgICAgICAgICBmb3IgcGF0aHMgdG8gc3VwcG9y
dCBmaWxlcyBhcyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQgcmVsYXRpdmUg
cG9zaXRpb24gdG8gdGhlCisgICAgICAgICAgICAgICB0ZXN0IGZpbGUgKGluIHRoZSBzYW1lIGRp
cmVjdG9yeSkKKyAgICAgICAgCisgICAgICAgIC0gVXBvbiBjb21wbGV0aW9uLCBzY3JpcHQgZGlz
cGxheXMgdGhlIHRvdGFsIG51bWJlciB0ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVz
dCB0eXBlCisKKyAgICAgICAgLSBBbHNvIHVwb24gY29tcGxldGlvbiwgZWFjaCBkaXJlY3Rvcnkg
d2hlcmUgZmlsZXMgYXJlIGltcG9ydGVkIHdpbGwgaGF2ZSB3M2MtaW1wb3J0LmxvZyB3cml0dGVu
CisgICAgICAgICAgd2l0aCBhIHRpbWVzdGFtcCwgdGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0
IGlmIGF2YWlsYWJsZSwgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0aGF0CisgICAg
ICAgICAgcmVxdWlyZSBwcmVmaXhlcywgdGhlIGxpc3Qgb2YgaW1wb3J0ZWQgZmlsZXMsIGFuZCBn
dWlkYW5jZSBmb3IgZnV0dXJlIHRlc3QgbW9kaWZpY2F0aW9uIGFuZAorICAgICAgICAgIG1haW50
ZW5hbmNlLgorCisgICAgICAgIC0gT24gc3Vic2VxdWVudCBpbXBvcnRzLCB0aGlzIGZpbGUgaXMg
cmVhZCB0byBkZXRlcm1pbmUgaWYgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5ld2Vy
IGNoYW5nZXNldHMuCisgICAgICAgICAgVGhlIHNjcmlwdCByZW1vdmVzIHRoZXNlIGZpbGVzIGFj
Y29yZGluZ2x5LgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRlc3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1MTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvaW1wb3J0LXczYy10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93
M2MvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfY29udmVydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIpOgorICAgICAg
ICAoVGVzdENvbnZlcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0Q29udmVydGVyLmxvYWRf
cHJlZml4ZWRfcHJvcF9saXN0KToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIubG9hZF9maWxlKToK
KyAgICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KToKKyAgICAgICAgKFRl
c3RDb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyk6CisgICAgICAgIChUZXN0Q29u
dmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgIChUZXN0Q29udmVy
dGVyLnNjcnViX3VucHJlZml4ZWRfcHJvcHMpOgorICAgICAgICAoVGVzdENvbnZlcnRlci5yZXBs
YWNlX3RhZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QpOgorICAgICAg
ICAoVGVzdENvbnZlcnRlclRlc3QudGVzdExvYWRQcmVmaXhlZFByb3BMaXN0KToKKyAgICAgICAg
KFRlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfY29udmVydEZvcldlYmtpdE5vdGhpbmdUb0NvbnZlcnQp
OgorICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkpOgorICAgICAgICAo
dGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNPbmx5KToKKyAgICAgICAgKHRlc3RfY29udmVydEZv
cldlYmtpdEhhcm5lc3NBbmRQcm9wcyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRUZXN0SGFybmVz
c1BhdGhzKToKKyAgICAgICAgKHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGllcyk6CisgICAg
ICAgICh2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHZlcmlmeVByZWZpeGVkUHJv
cGVydGllcyk6CisgICAgICAgIChnZW5lcmF0ZVRlc3RDb250ZW50KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKG1haW4p
OgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgICh2YWxpZGF0ZV9pbXBvcnRfZGlyZWN0
b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlcik6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuX19p
bml0X18pOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6CisgICAgICAgIChUZXN0
SW1wb3J0ZXIuZ2V0X2NoYW5nZXNldCk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuc2Nhbl9zb3Vy
Y2VfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVzdHMpOgorICAg
ICAgICAoVGVzdEltcG9ydGVyLnNldHVwX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeSk6CisgICAgICAg
IChUZXN0SW1wb3J0ZXIuZ2V0X3Rlc3Rfc3RhdHVzKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5y
ZW1vdmVfZGVsZXRlZF9maWxlcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3JpdGVfaW1wb3J0
X2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0
dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0KToKKyAgICAgICAgKFRl
c3RJbXBvcnRlclRlc3QudGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6IEFkZGVkLgorICAgICAgICAoVGVzdFBh
cnNlcik6CisgICAgICAgIChUZXN0UGFyc2VyLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RQYXJz
ZXIubG9hZF9maWxlKToKKyAgICAgICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0KToKKyAgICAg
ICAgKFRlc3RQYXJzZXIuZ2V0X3JlZnRlc3RzKToKKyAgICAgICAgKFRlc3RQYXJzZXIuaXNfanN0
ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3N1cHBvcnRfZmlsZXMpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAg
ICAgICAgKFRlc3RQYXJzZXJUZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0LnRlc3RfYW5h
bHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2gpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJlZnRl
c3RNdWx0aXBsZU1hdGNoZXMpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJlZnRlc3RNYXRj
aEFuZE1pc21hdGNoKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0V2l0aFJlZlN1
cHBvcnRGaWxlcyk6CisgICAgICAgICh0ZXN0X2FuYWx5emVKU1Rlc3QpOgorICAgICAgICAodGVz
dF9hbmFseXplUGl4ZWxUZXN0QWxsVHJ1ZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVQaXhlbFRl
c3RBbGxGYWxzZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVOb25IVE1MRmlsZSk6CisKIDIwMTMt
MDMtMjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtX
aW5DYWlyb10gVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFRlc3RXZWJLaXRBUEkgdW5kZXIgVlMy
MDEwCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgYi9Ub29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MC4uYTk4NzdiYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cwpAQCAtMCwwICsxLDMxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHB5
LnczYyBpbXBvcnQgdGVzdF9pbXBvcnRlcgorCisKK3N5cy5leGl0KHRlc3RfaW1wb3J0ZXIubWFp
bihzeXMuYXJndlsxOl0sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
NjlkZTI5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZl
cnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NTNkZmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQpAQCAtMCww
ICsxLDI0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBp
bXBvcnQgQmVhdXRpZnVsU291cCBhcyBQYXJzZXIKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5C
ZWF1dGlmdWxTb3VwIGltcG9ydCBUYWcKK2ltcG9ydCByZQoraW1wb3J0IG9zCisKK1NPVVJDRV9T
VUJESVIgPSAnU291cmNlJworV0VCQ09SRV9TVUJESVIgPSAnV2ViQ29yZScKK0NTU19TVUJESVIg
PSAnY3NzJworQ1NTX1BST1BFUlRZX05BTUVTX0lOID0gJ0NTU1Byb3BlcnR5TmFtZXMuaW4nCitM
QVlPVVRfVEVTVFNfRElSRUNUT1JZID0gJ0xheW91dFRlc3RzJworUkVTT1VSQ0VTX0RJUkVDVE9S
WSA9ICdyZXNvdXJjZXMnCitXRUJLSVRfUk9PVCA9IF9fZmlsZV9fLnNwbGl0KG9zLnBhdGguc2Vw
ICsgJ1Rvb2xzJylbMF0KKworCitjbGFzcyBUZXN0Q29udmVydGVyKG9iamVjdCk6CisKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisKKyAgICAgICAgc2VsZi5wcmVmaXhlZF9wcm9wZXJ0aWVzID0g
c2VsZi5sb2FkX3ByZWZpeGVkX3Byb3BfbGlzdCgpCisKKyAgICBkZWYgbG9hZF9wcmVmaXhlZF9w
cm9wX2xpc3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWFkcyB0aGUgY3VycmVudCBs
aXN0IG9mIENTUyBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUKKyAgICAgICAgLXdlYmtpdC0gcHJl
Zml4IGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnR5TmFtZXMuaW4gYW5kCisgICAg
ICAgIHN0b3JlcyB0aGVtIGluIGFuIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgICIiIgorCisg
ICAgICAgIHByZWZpeGVkX3Byb3BfbGlzdCA9IFtdCisKKyAgICAgICAgIyBPcGVuIENTU1Byb3Bl
cnR5TmFtZXMuaW4gdG8gZ2V0IHRoZSBjdXJyZW50IGxpc3Qgb2YgdGhpbmdzIHJlcXVpcmluZyBw
cmVmaXhlcworICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIFdFQktJ
VF9ST09ULCBTT1VSQ0VfU1VCRElSLCBXRUJDT1JFX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfU1VCRElSLCBDU1NfUFJPUEVSVFlfTkFNRVNf
SU4pKQorICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgZm9yIGxpbmUgaW4g
bGluZXM6CisgICAgICAgICAgICAjIExvb2sgZm9yIGFueXRoaW5nIHdpdGggdGhlIC13ZWJraXQt
IHByZWZpeAorICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ14td2Via2l0LVtcd3wtXSon
LCBsaW5lKQorICAgICAgICAgICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgIyBJZ25vcmUgdGhlIG9uZXMgd2hlcmUgYm90aCB0aGUgcHJlZml4ZWQgYW5kIG5vbi1wcmVm
aXhlZCBwcm9wZXJ0eQorICAgICAgICAgICAgICAgICMgYXJlIHN1cHBvcnRlZCAtIGRlbm90ZWQg
YnkgLXdlYmtpdC1zb21lLXByb3BlcnR5ID0gc29tZS1wcm9wZXJ0eQorICAgICAgICAgICAgICAg
IGlmIGxlbihsaW5lLnNwbGl0KCc9JykpID09IDIgYW5kIFwKKyAgICAgICAgICAgICAgICAgICBs
aW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKSBpbiBsaW5lLnNwbGl0KCc9JylbMF0uc3RyaXAoKToK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wX2xpc3QuYXBwZW5kKG1hdGNoLmdyb3VwKDAp
KQorCisgICAgICAgIHJldHVybiBwcmVmaXhlZF9wcm9wX2xpc3QKKworICAgIGRlZiBsb2FkX2Zp
bGUoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgT3BlbnMgdGhlIHRlc3Qg
ZmlsZSB0byBjb252ZXJ0CisKKyAgICAgICAgQHJldHVybjogdGhlIGNvbnRlbnRzIG9mIHRoZSBm
aWxlIGFzIGEgc3RyaW5nCisgICAgICAgICIiIgorCisgICAgICAgIGYgPSBvcGVuKGZpbGVuYW1l
KQorICAgICAgICBjb250ZW50cyA9IGYucmVhZCgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAg
ICAgIHJldHVybiBjb250ZW50cworCisgICAgZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChzZWxmLCBu
ZXdfcGF0aCwgY29udGVudHM9Tm9uZSwgZmlsZW5hbWU9Tm9uZSk6CisgICAgICAgICIiIgorICAg
ICAgICBDb252ZXJ0cyBhIHRlc3QgZmlsZSBzbyBpdCB3aWxsIGZ1bmN0aW9uIGNvcnJlY3RseSBp
biBXZWJraXQKKworICAgICAgICBAcGFyYW0gbmV3X3BhdGg6IHRoZSBuZXcgbG9jYXRpb24gb2Yg
d2hlcmUgdGhlIHRlc3QgZmlsZSB3aWxsIGxpdmUKKyAgICAgICAgQHBhcmFtIGNvbnRlbnRzOiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXMgYSBzdHJpbmcuIElmIG5vdCBzcGVjZmllZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29udGVudHMgd2lsbCBiZSBsb2FkZWQgd2l0aCBs
b2FkX2ZpbGUoKQorCisgICAgICAgIEByZXR1cm46IFR1cGxlIChsaXN0IG9mIENTUyBwcm9wZXJ0
aWVzIGNvbnZlcnRlZCwgdGhlIG1vZGlmaWVkIGRvY3VtZW50IGFzIGEgc3RyaW5nKQorICAgICAg
ICAgICAgICAgICBSZXR1cm5zIE5vbmUgaWYgbm8gbW9kaWZpY2F0aW9ucyB3ZXJlIG1hZGUKKyAg
ICAgICAgIiIiCisKKyAgICAgICAgaWYgY29udGVudHMgaXMgTm9uZSBhbmQgZmlsZW5hbWUgaXMg
Tm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgY29udGVudHMgaXMg
Tm9uZToKKyAgICAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5sb2FkX2ZpbGUoZmlsZW5hbWUpCisK
KyAgICAgICAgIyBIYW5kbGUgcGxhaW4gb2xkIENTUyBmaWxlcworICAgICAgICBpZiBmaWxlbmFt
ZS5lbmRzd2l0aCgnLmNzcycpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NydWJfdW5wcmVm
aXhlZF9wcm9wcyhjb250ZW50cykKKworICAgICAgICAjIE90aGVyd2lzZSwgcGFyc2UgaXQgYXMg
aWYgSFRNTAorICAgICAgICBkb2MgPSBQYXJzZXIoY29udGVudHMpCisgICAgICAgIGpzdGVzdCA9
IHNlbGYuY29udmVydF90ZXN0aGFybmVzc19wYXRocyhkb2MsIG5ld19wYXRoKQorICAgICAgICBj
b252ZXJ0ZWQgPSBzZWxmLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhkb2MpCisKKyAgICAg
ICAgaWYgbGVuKGNvbnZlcnRlZFswXSkgPiAwIG9yIGpzdGVzdCBpcyBUcnVlOgorICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRlZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBjb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKHNlbGYsIGRvYywgbmV3X3Bh
dGgpOgorICAgICAgICAiIiIKKyAgICAgICAgU2VhcmNoZXMgYSBkb2N1bWVudCBmb3IgVzNDLXN0
eWxlIHBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZpbGVzCisgICAgICAgIGFuZCBtb2RpZmllcyB0
aGVtIHRvIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbiBMYXlvdXRUZXN0cy9yZXNv
dXJjZXMKKworICAgICAgICBAcGFyYW0gZG9jOiBhIEJlYXV0aWZ1bFNvdXAgZG9jdW1lbnQKKyAg
ICAgICAgQHBhcmFtIG5ld19wYXRoOiB0aGUgbmV3IGxvY2F0aW9uIG9mIHdoZXJlIHRoZSB0ZXN0
IGZpbGUgd2lsbCBsaXZlCisKKyAgICAgICAgQHJldHVybiBUcnVlIGlmIGNoYW5nZXMgd2VyZSBt
YWRlCisgICAgICAgICIiIgorCisgICAgICAgICMgTG9vayBmb3IgdGhlIFczQy1zdHlsZSBwYXRo
IHRvIGFueSB0ZXN0aGFybmVzcyBmaWxlcyAtIHNjcmlwdHMgKC5qcykgb3IgbGlua3MgKC5jc3Mp
CisgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykK
KyAgICAgICAgc2NyaXB0X3RhZ3MgPSBkb2MuZmluZEFsbChzcmM9cGF0dGVybikKKyAgICAgICAg
bGlua190YWdzID0gZG9jLmZpbmRBbGwoaHJlZj1wYXR0ZXJuKQorICAgICAgICB0ZXN0aGFybmVz
c190YWdzID0gc2NyaXB0X3RhZ3MgKyBsaW5rX3RhZ3MKKworICAgICAgICBpZiBsZW4odGVzdGhh
cm5lc3NfdGFncykgIT0gMDoKKworICAgICAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIHJlbGF0aXZl
IHBhdGggZnJvbSB0aGUgbmV3IGRpcmVjdG9yeSB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAg
ICAgICAgICAgIHJlc291cmNlc19wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBXRUJL
SVRfUk9PVCwgTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwgUkVTT1VSQ0VTX0RJUkVDVE9SWSkKKyAg
ICAgICAgICAgIHJlc291cmNlc19yZWxwYXRoID0gb3MucGF0aC5yZWxwYXRoKHJlc291cmNlc19w
YXRoLCBuZXdfcGF0aCkKKworICAgICAgICAgICAgZm9yIHRhZyBpbiB0ZXN0aGFybmVzc190YWdz
OgorICAgICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgdGFnIHdpdGggdGhlIGNvcnJlY3QgcGF0
aAorICAgICAgICAgICAgICAgIGF0dHIgPSAnc3JjJworICAgICAgICAgICAgICAgIGlmIHRhZy5u
YW1lICE9ICdzY3JpcHQnOgorICAgICAgICAgICAgICAgICAgICBhdHRyID0gJ2hyZWYnCisKKyAg
ICAgICAgICAgICAgICAjIEJ1aWxkIGEgbmV3IHRhZyB3aXRoIHRoZSBjb3JyZWN0IHJlbGF0aXZl
IHBhdGgKKyAgICAgICAgICAgICAgICBvbGRfcGF0aCA9IHRhZ1thdHRyXQorICAgICAgICAgICAg
ICAgIG5ld190YWcgPSBUYWcoZG9jLCB0YWcubmFtZSwgdGFnLmF0dHJzKQorICAgICAgICAgICAg
ICAgIG5ld190YWdbYXR0cl0gPSByZS5zdWIocGF0dGVybiwgcmVzb3VyY2VzX3JlbHBhdGggKyAn
L3Rlc3RoYXJuZXNzJywgb2xkX3BhdGgpCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUg
ZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFnKGRv
YywgdGFnLCBuZXdfdGFnKQorCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgY29udmVydF9wcmVmaXhlZF9w
cm9wZXJ0aWVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIgorICAgICAgICBTZWFyY2hlcyBhIGRv
Y3VtZW50IGZvciBhbnkgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVm
aXgKKyAgICAgICAgYW5kIGNvbnZlcnRzIHRoZW0gdG8gdGhlIHByZWZpeGVkIHZlcnNpb24KKwor
ICAgICAgICBAcGFyYW0gZG9jOiBhIEJlYXV0aWZ1bFNvdXAgZG9jdW1lbnQKKworICAgICAgICBA
cmV0dXJuOiBUdXBsZSAtIChsaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGNvbnZlcnRlZCwgdGhlIG1v
ZGlmaWVkIGRvY3VtZW50IGFzIGEgc3RyaW5nKQorICAgICAgICAiIiIKKworICAgICAgICBjb252
ZXJ0ZWRfcHJvcHMgPSBbXQorCisgICAgICAgICMgTG9vayBmb3IgaW5saW5lIGFuZCBkb2N1bWVu
dCBzdHlsZXMKKyAgICAgICAgaW5saW5lX3N0eWxlcyA9IGRvYy5maW5kQWxsKHN0eWxlPXJlLmNv
bXBpbGUoJy4qJykpCisgICAgICAgIHN0eWxlX3RhZ3MgPSBkb2MuZmluZEFsbCgnc3R5bGUnKQor
ICAgICAgICBhbGxfc3R5bGVzID0gaW5saW5lX3N0eWxlcyArIHN0eWxlX3RhZ3MKKworICAgICAg
ICBmb3IgdGFnIGluIGFsbF9zdHlsZXM6CisKKyAgICAgICAgICAgICMgR2V0IHRoZSB0ZXh0IHdo
ZXRoZXIgaW4gYSBzdHlsZSB0YWcgb3Igc3R5bGUgYXR0cmlidXRlCisgICAgICAgICAgICBzdHls
ZV90ZXh0ID0gJycKKyAgICAgICAgICAgIGlmIHRhZy5uYW1lID09ICdzdHlsZSc6CisgICAgICAg
ICAgICAgICAgaWYgbGVuKHRhZy5jb250ZW50cykgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzdHls
ZV90ZXh0ID0gdGFnLmNvbnRlbnRzWzBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHN0eWxlX3RleHQgPSB0YWdbJ3N0eWxlJ10KKworICAgICAgICAgICAgIyBTY3J1YiBpdCBm
b3IgcHJvcHMgcmVxdWlyaW5nIHByZWZpeGVzCisgICAgICAgICAgICBzY3J1YmJlZF9zdHlsZSA9
IHNlbGYuc2NydWJfdW5wcmVmaXhlZF9wcm9wcyhzdHlsZV90ZXh0KQorCisgICAgICAgICAgICAj
IFJld3JpdGUgdGFnIG9ubHkgaWYgY2hhbmdlcyB3ZXJlIG1hZGUKKyAgICAgICAgICAgIGlmIGxl
bihzY3J1YmJlZF9zdHlsZVswXSkgPiAwOgorICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9wcm9w
cy5leHRlbmQoc2NydWJiZWRfc3R5bGVbMF0pCisKKyAgICAgICAgICAgICAgICAjIEJ1aWxkIGEg
bmV3IHRhZyB3aXRoIHRoZSBtb2RpZmllZCB0ZXh0CisgICAgICAgICAgICAgICAgbmV3X3RhZyA9
IFRhZyhkb2MsIHRhZy5uYW1lLCB0YWcuYXR0cnMpCisgICAgICAgICAgICAgICAgbmV3X3RhZy5p
bnNlcnQoMCwgc2NydWJiZWRfc3R5bGVbMV0pCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0
aGUgZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFn
KGRvYywgdGFnLCBuZXdfdGFnKQorCisgICAgICAgIHJldHVybiAoY29udmVydGVkX3Byb3BzLCBk
b2MucHJldHRpZnkoKSkKKworICAgIGRlZiBzY3J1Yl91bnByZWZpeGVkX3Byb3BzKHNlbGYsIHRl
eHQpOgorICAgICAgICAiIiIKKyAgICAgICAgU2VhcmNoZXMgYSBzdHJpbmcgZm9yIGluc3RhbmNl
cyBvZiBwcm9wZXJ0aWVzIHRoYXQKKyAgICAgICAgcmVxdWlyZSB0aGUgLXdlYmtpdC0gcHJlZml4
IGFuZCBhZGRzIHRoZSBwcmVmaXgKKworICAgICAgICBAcGFyYW0gdGV4dDogdGhlIHN0cmluZyB0
byBzZWFyY2gKKworICAgICAgICBAcmV0dXJuOiBUdXBsZSAobGlzdCBvZiBDU1MgcHJvcGVydGll
cyBjb252ZXJ0ZWQsIHRoZSBtb2RpZmllZCBzdHJpbmcpCisgICAgICAgICIiIgorCisgICAgICAg
IGNvbnZlcnRlZF9wcm9wcyA9IFtdCisKKyAgICAgICAgIyBTcGluIHRocm91Z2ggdGhlIHdob2xl
IGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVydGllcworICAgICAgICBmb3IgcHJlZml4ZWRfcHJvcCBp
biBzZWxmLnByZWZpeGVkX3Byb3BlcnRpZXM6CisKKyAgICAgICAgICAgICMgUHVsbCB0aGUgcHJl
Zml4IG9mZgorICAgICAgICAgICAgdW5wcmVmaXhlZF9wcm9wID0gcHJlZml4ZWRfcHJvcC5yZXBs
YWNlKCctd2Via2l0LScsICcnKQorCisgICAgICAgICAgICAjIExvb2sgZm9yIHRoZSB2YXJpb3Vz
IHdheXMgaXQgbWlnaHQgYmUgaW4gdGhlIENTUworICAgICAgICAgICAgIyBNYXRjaCB0aGUgdGhl
IHByb3BlcnR5IHByZWNlZGVkIGJ5IGVpdGhlciB3aGl0ZXNwYWNlIG9yIGxlZnQgY3VybHkgYnJh
Y2UKKyAgICAgICAgICAgICMgb3IgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIChmb3Ig
aW5saW5lIHN0eWxlIGF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHBhdHRlcm4gPSAnKFtcc3tdfF4p
JyArIHVucHJlZml4ZWRfcHJvcCArICcoXHMrOnw6KScKKyAgICAgICAgICAgIGlmIHJlLnNlYXJj
aChwYXR0ZXJuLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwcmludCAnY29udmVydGluZyAnICsg
dW5wcmVmaXhlZF9wcm9wICsgJyAtPiAnICsgcHJlZml4ZWRfcHJvcAorICAgICAgICAgICAgICAg
IGNvbnZlcnRlZF9wcm9wcy5hcHBlbmQocHJlZml4ZWRfcHJvcCkKKyAgICAgICAgICAgICAgICB0
ZXh0ID0gcmUuc3ViKHBhdHRlcm4sIHByZWZpeGVkX3Byb3AgKyAnOicsIHRleHQpCisKKyAgICAg
ICAgIyBUT0RPOiBIYW5kbGUgdGhlIEpTIHZlcnNpb25zIG9mIHRoZXNlIHByb3BlcnRpZXMsIHRv
by4KKworICAgICAgICByZXR1cm4gKGNvbnZlcnRlZF9wcm9wcywgdGV4dCkKKworICAgIGRlZiBy
ZXBsYWNlX3RhZyhzZWxmLCBkb2MsIG9sZF90YWcsIG5ld190YWcpOgorICAgICAgICAiIiIKKyAg
ICAgICAgSW5zZXJ0cyBhIG5ldyB0YWcgaW50byBhIEJlYXV0aWZ1bFNvdXAgZG9jIGFuZCByZW1v
dmVzIHRoZSBvbGQgdGFnCisKKyAgICAgICAgQHBhcmFtIGRvYzogdGhlIEJlYXV0aWZ1bFNvdXAg
ZG9jCisgICAgICAgIEBwYXJhbSBvbGRfdGFnOiB0aGUgb2xkIHRhZyB0byByZW1vdmUKKyAgICAg
ICAgQHBhcmFtIG5ld190YWc6IHRoZSBuZXcgdGFnIHRvIGluc2VydAorICAgICAgICAiIiIKKwor
ICAgICAgICAjIFJlcGxhY2UgdGhlIHByZXZpb3VzIHRhZyB3aXRoIHRoZSBuZXcgb25lCisgICAg
ICAgIGluZGV4ID0gb2xkX3RhZy5wYXJlbnQuY29udGVudHMuaW5kZXgob2xkX3RhZykKKyAgICAg
ICAgb2xkX3RhZy5wYXJlbnQuaW5zZXJ0KGluZGV4LCBuZXdfdGFnKQorICAgICAgICBvbGRfdGFn
LmV4dHJhY3QoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9j
b252ZXJ0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2Nv
bnZlcnRlcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
MDdmNTQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw0NTAgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAoraW1w
b3J0IG9zCitmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZGludAoraW1wb3J0IHJlCitmcm9tIHdlYmtp
dHB5LnczYy50ZXN0X2NvbnZlcnRlciBpbXBvcnQgVGVzdENvbnZlcnRlcgorZnJvbSB3ZWJraXRw
eS53M2MgaW1wb3J0IHRlc3RfY29udmVydGVyCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0
CisKKworY2xhc3MgVGVzdENvbnZlcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAg
ZGVmIHRlc3RMb2FkUHJlZml4ZWRQcm9wTGlzdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFRlc3RzIHRoYXQgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZworICAg
ICAgICB0aGUgLXdlYmtpdC0gcHJlZml4IGxvYWQgY29ycmVjdGx5CisgICAgICAgICIiIgorCisg
ICAgICAgICMgR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVydGllcworICAgICAg
ICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgcHJvcF9saXN0ID0gY29udmVy
dGVyLnByZWZpeGVkX3Byb3BlcnRpZXMKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgcHJvcGVy
dGllcyBiYWNrCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocHJvcF9saXN0KSwgMCwg
J05vIHByZWZpeGVkIHByb3BlcnRpZXMgZm91bmQnKQorCisgICAgICAgICMgVmVyaWZ5IHRoZXkn
cmUgYWxsIHByZWZpeGVkCisgICAgICAgIGZvciBwcm9wIGluIHByb3BfbGlzdDoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9wLnN0YXJ0c3dpdGgoJy13ZWJraXQtJykpCisKKyAgICBk
ZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0Tm90aGluZ1RvQ29udmVydChzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgdGVz
dAorICAgICAgICB0aGF0IGhhcyBub3RoaW5nIHRvIGNvbnZlcnQKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBY
SFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3ho
dG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRs
ZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCitocmVmPSJtYWls
dG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJSRUxFVkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0i
VEVTVCBBU1NFUlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1Mg
Rk9SIFRFU1QKK11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAor
PC9ib2R5PgorPC9odG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIo
KQorCisgICAgICAgICMgVHJ5IHRvIGNvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVk
ID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdCgnL25vdGhpbmcvdG8vY29udmVydCcsIGNv
bnRlbnRzPXRlc3RfaHRtbCwgZmlsZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMg
VmVyaWZ5IG5vdGhpbmcgd2FzIGNvbnZlcnRlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2FzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbnZlcnRlZCcp
CisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBUZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2lj
IEpTIHRlc3QgdGhhdCB1c2VzCisgICAgICAgIHRlc3RoYXJuZXNzLmpzIG9ubHkgYW5kIGhhcyBu
byBwcmVmaXhlZCBwcm9wZXJ0aWVzCisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9
ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8v
RU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+
Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0
aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1
dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6
Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19T
RUNUSU9OIi8+Cis8bGluayBocmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJz
dHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1Qg
QVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBU
RVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9k
eT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKwor
ICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0
ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJ
VF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFybmVzc29ubHkn
KQorCisgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252
ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3RfcGF0aCwgY29udGVudHM9dGVzdF9odG1sLCBm
aWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9u
IGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAn
dGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRo
ZSBoYXJuZXNzIHBhdGhzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQorICAgICAgICBzZWxmLnZl
cmlmeVRlc3RIYXJuZXNzUGF0aHMoY29udmVydGVkWzFdLCB0ZXN0X3BhdGgsIDEsIDEpCisKKyAg
ICAgICAgIyBWZXJpZnkgbm8gcHJvcGVydGllcyB3ZXJlIGNvbnZlcnRlZAorICAgICAgICBzZWxm
LnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIFtdKQorCisgICAgZGVmIHRlc3Rf
Y29udmVydEZvcldlYmtpdFByb3BzT25seShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRl
c3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGhhcworICAgICAgICAy
IHByZWZpeGVkIHByb3BlcnRpZXMgLQorICAgICAgICAxIGluIGEgc3R5bGUgYmxvY2sgKyAxIGlu
bGluZSBzdHlsZQorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZ
UEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6
Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRl
c3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxl
PSJOQU1FX09GX0FVVEhPUiIKK2hyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9Q
QUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgor
PGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIv
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworI2Jsb2NrMSB7IEB0ZXN0MEA6
IHByb3B2YWx1ZTsgfQorCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJl
bGVtMSIgc3R5bGU9IkB0ZXN0MUA6IHByb3B2YWx1ZTsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgorIiIiCisKKyAgICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRlcigpCisKKyAgICAgICAg
IyBDcmVhdGUgcGF0aCB0byBhIGZha2UgdGVzdCBkaXJlY3RvcnkKKyAgICAgICAgdGVzdF9wYXRo
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRfUk9PVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZl
cnRlci5MQVlPVVRfVEVTVFNfRElSRUNUT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkNTU19TVUJESVIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcm5lc3NhbmRwcm9wcycpCisK
KyAgICAgICAgIyBHZW5lcmF0ZSAmIGluc2VydCB0aGUgdGVzdCBwcm9wZXJ0aWVzIGludG8gdGhl
IHRlc3RfaHRtbAorICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlVGVzdENvbnRl
bnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDIsIHRlc3RfaHRtbCkKKworICAgICAg
ICAjIENvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZl
cnRfZm9yX3dlYmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfY29udGVudFsxXSwgZmlsZW5h
bWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBw
ZW5lZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qg
d2FzIG5vdCBjb252ZXJ0ZWQnKQorCisgICAgICAgICMgVmVyaWZ5IHRoYXQgYm90aCB0aGUgaGFy
bmVzcyBwYXRocyBhbmQgcHJvcGVydGllcyB3ZXJlIGFsbCBjb252ZXJ0ZWQgY29ycmVjdGx5Cisg
ICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhjb252ZXJ0ZWRbMV0sIHRlc3RfcGF0
aCwgMSwgMSkKKyAgICAgICAgc2VsZi52ZXJpZnlQcmVmaXhlZFByb3BlcnRpZXMoY29udmVydGVk
LCB0ZXN0X2NvbnRlbnRbMF0pCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVz
c0FuZFByb3BzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdHMgY29udmVydF9mb3Jf
d2Via2l0KCkgdXNpbmcgYSBiYXNpYyBKUyB0ZXN0IHRoYXQgdXNlcworICAgICAgICB0ZXN0aGFy
bmVzcy5qcyBhbmQgdGVzdGhhcm5lc3MuY3NzIGFuZCBoYXMgNCBwcmVmaXhlZCBwcm9wZXJ0aWVz
IC0KKyAgICAgICAgMyBpbiBhIHN0eWxlIGJsb2NrICsgMSBpbmxpbmUgc3R5bGUKKyAgICAgICAg
IiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
M0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRt
bDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBU
RVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCito
cmVmPSJtYWlsdG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJSRUxFVkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iVEVTVCBBU1NFUlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+PCFbQ0RBVEFbCisKKyNibG9jazEgeyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKyNibG9j
azIgeyBAdGVzdDFAOiBwcm9wdmFsdWU7IH0KKyNibG9jazMgeyBAdGVzdDJAOiBwcm9wdmFsdWU7
IH0KKworXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxl
PSJAdGVzdDNAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAg
ICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRo
IHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9U
RVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaGFybmVzc2FuZHByb3BzJykKKworICAgICAgICAjIEdl
bmVyYXRlICYgaW5zZXJ0IHRoZSB0ZXN0IHByb3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisg
ICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIu
cHJlZml4ZWRfcHJvcGVydGllcywgNCwgdGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0
aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0
KHRlc3RfcGF0aCwgY29udGVudHM9dGVzdF9jb250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUu
aHRtbCcpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAg
IHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZl
cnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIGFu
ZCBwcm9wZXJ0aWVzIHdlcmUgYWxsIGNvbnZlcnRlZCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi52
ZXJpZnlUZXN0SGFybmVzc1BhdGhzKGNvbnZlcnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQorICAg
ICAgICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVu
dFswXSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRUZXN0SGFybmVzc1BhdGhzKHNlbGYpOgorICAg
ICAgICAiIiIKKyAgICAgICAgVGVzdHMgY29udmVydF90ZXN0aGFybmVzc19wYXRocygpIHdpdGgg
YSB0ZXN0IHRoYXQgdXNlcyBhbGwgdGhyZWUgdGVzdGhhcm5lc3MgZmlsZXMKKyAgICAgICAgIiIi
CisKKyAgICAgICAgIyBCYXNpYyB0ZXN0IGNvbnRlbnQgdXNpbmcgYWxsIHRocmVlIHRlc3RoYXJu
ZXNzIGZpbGVzCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIv
eGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04g
T0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9S
IgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8bGluayBocmVmPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBj
b252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEg
ZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19E
SVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3NwYXRocycpCisKKyAgICAgICAgIyBDb252ZXJ0
IHRoZSBodG1sCisgICAgICAgIGRvYyA9IEJlYXV0aWZ1bFNvdXAodGVzdF9odG1sKQorICAgICAg
ICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyhkb2MsIHRl
c3RfcGF0aCkKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGNvbnZlcnRlZCwgJ3Rlc3Qgd2FzIG5vdCBjb252ZXJ0ZWQnKQor
CisgICAgICAgICMgVmVyaWZ5IGFsbCBnb3QgY29udmVydGVkIGNvcnJlY3RseQorICAgICAgICBz
ZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoZG9jLCB0ZXN0X3BhdGgsIDIsIDEpCisKKyAgICBk
ZWYgdGVzdF9jb252ZXJ0UHJlZml4ZWRQcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgVGVzdHMgY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKCkgZmlsZSB0aGF0IGhhcyAy
MCBwcm9wZXJ0aWVzCisgICAgICAgIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IC0gMTAg
aW4gb25lIHN0eWxlIGJsb2NrICsgNSBpbiBhbm90aGVyIHN0eWxlCisgICAgICAgIGJsb2NrICsg
NSBpbmxpbmUgc3R5bGVzLCBpbmNsdWRpbmcgb25lIHdpdGggbXVsdGlwbGUgcHJlZml4ZWQgcHJv
cGVydGllcy4KKyAgICAgICAgVGhlIHByb3BlcnRpZXMgaW4gdGhlIHRlc3QgY29udGVudCBhcmUg
aW4gYWxsIHNvcnRzIG9mIHdhY2sgZm9ybWF0dGluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
dGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAx
LjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1z
dHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4K
KzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxs
aW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCitocmVmPSJtYWlsdG86RU1B
SUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJSRUxF
VkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImdyZWVuLWJveC1y
ZWYueGh0IiAvPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIv
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMSB7CisgICAgd2lk
dGg6IDMwMHB4OworICAgIGhlaWdodDogMzAwcHgKK30KKworLmJsb2NrMiB7CisgICAgQHRlc3Qw
QDogcHJvcHZhbHVlOworfQorCisuYmxvY2sze0B0ZXN0MUA6IHByb3B2YWx1ZTt9CisKKy5ibG9j
azQgeyBAdGVzdDJAOnByb3B2YWx1ZTsgfQorCisuYmxvY2s1eyBAdGVzdDNAIDpwcm9wdmFsdWU7
IH0KKworI2Jsb2NrNiB7ICAgIEB0ZXN0NEAgICA6ICAgcHJvcHZhbHVlOyAgfQorCisjYmxvY2s3
Cit7CisgICAgQHRlc3Q1QDogcHJvcHZhbHVlOworfQorCisjYmxvY2s4IHsgQHRlc3Q2QDogcHJv
cHZhbHVlOyB9CisKKyNibG9jazk6cHNldWRvCit7CisKKyAgICBAdGVzdDdAOiBwcm9wdmFsdWU7
CisgICAgQHRlc3Q4QDogIHByb3B2YWx1ZSBwcm9wdmFsdWUgcHJvcHZhbHVlOzsKK30KKworXV0+
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRl
c3Q5QDogcHJvcHZhbHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJwcm9w
bmFtZTogcHJvcHZhbHVlOyBAdGVzdDEwQCA6IHByb3B2YWx1ZTsgcHJvcG5hbWU6cHJvcHZhbHVl
OyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJAdGVzdDExQDogcHJvcHZhbHVl
OyBAdGVzdDEyQCA6IHByb3B2YWx1ZTsgQHRlc3QxM0AgICA6cHJvcHZhbHVlOyI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iZWxlbTMiIHN0eWxlPSJAdGVzdDE0QDpwcm9wdmFsdWUiPjwvZGl2PgorPC9i
b2R5PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMTB7IEB0ZXN0
MTVAOiBwcm9wdmFsdWU7IH0KKy5ibG9jazExeyBAdGVzdDE2QDogcHJvcHZhbHVlOyB9CisuYmxv
Y2sxMnsgQHRlc3QxN0A6IHByb3B2YWx1ZTsgfQorI2Jsb2NrMTM6cHNldWRvCit7CisgICAgQHRl
c3QxOEA6IHByb3B2YWx1ZTsKKyAgICBAdGVzdDE5QDogcHJvcHZhbHVlOworfQorCitdXT48L3N0
eWxlPgorPC9odG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQor
CisgICAgICAgICMgR2VuZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3QgcHJvcGVydGllcyBpbnRvIHRo
ZSB0ZXN0X2h0bWwKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRlc3RDb250
ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyMCwgdGVzdF9odG1sKQorCisgICAg
ICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29u
dmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKEJlYXV0aWZ1bFNvdXAodGVzdF9jb250ZW50WzFdKSkK
KworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykK
KworICAgICAgICAjIFZlcmlmeSBhbGwgdGhlIGdlbmVyYXRlZCB0ZXN0IHByb3BlcnRpZXMgd2Vy
ZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0
aWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHZlcmlmeVRlc3RIYXJu
ZXNzUGF0aHMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3BhdGgsIG51bV9zcmNfcGF0aHMsIG51bV9o
cmVmX3BhdGhzKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmaWVzIGFsbCBXM0Mtc3R5bGUg
cGF0aHMgdG8gdGVzdCBoYXJuZXNzIGZpbGVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQorCisg
ICAgICAgIEBwYXJhbSBjb252ZXJ0ZWQ6IHRoZSBjb252ZXJ0ZWQgY29udGVudCAtIGVpdGhlciBh
IHN0cmluZyBvciBhIEJlYXV0aWZ1bFNvdXAgb2JqZWN0CisgICAgICAgIEBwYXJhbSB0ZXN0X3Bh
dGg6IHRoZSBwYXRoIHdoZXJlIHRoZSB0ZXN0IGNvbnRlbnQgd2lsbCB1bHRpbWF0ZWx5IGxpdmUK
KyAgICAgICAgQHBhcmFtIG51bV9zcmNfcGF0aHM6IG51bWJlciBvZiBzcmMgcGF0aHMgdG8gZXhw
ZWN0CisgICAgICAgIEBwYXJhbSBudW1faHJlZl9wYXRoczogbnVtYmVyIG9mIGhyZWYgcGF0aHMg
dG8gZXhwZWN0CisgICAgICAgICIiIgorCisgICAgICAgICMgTWFrZSBzb3VwIGlmIHdlIG5lZWQg
dG8KKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb252ZXJ0ZWQsIGJhc2VzdHJpbmcpOgorICAgICAg
ICAgICAgY29udmVydGVkID0gQmVhdXRpZnVsU291cChjb252ZXJ0ZWQpCisKKyAgICAgICAgIyBC
dWlsZCB0aGUgcGF0aCB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAgICAgICAgcmVzb3VyY2Vz
X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JP
T1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLlJFU09VUkNFU19E
SVJFQ1RPUlkpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIG9yaWdpbmFsIHBhdGhzIGFyZSBubyBs
b25nZXIgdGhlcmUKKyAgICAgICAgb3JpZ19wYXRoX3BhdHRlcm4gPSByZS5jb21waWxlKCdcIi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29u
dmVydGVkLmZpbmRBbGwoc3JjPW9yaWdfcGF0aF9wYXR0ZXJuKSksIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBzcmMgcGF0aCB3YXMgbm90IGNvbnZlcnRlZCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFsbChocmVmPW9yaWdf
cGF0aF9wYXR0ZXJuKSksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVz
cyBocmVmIHBhdGggd2FzIG5vdCBjb252ZXJ0ZWQnKQorCisgICAgICAgICMgR2V0IHRoZSBuZXcg
cmVscGF0aCBmcm9tIHRoZSB0ZXN0ZXIgZGlyCisgICAgICAgIG5ld19yZWxwYXRoID0gb3MucGF0
aC5yZWxwYXRoKHJlc291cmNlc19kaXIsIHRlc3RfcGF0aCkKKworICAgICAgICAjIFZlcmlmeSBp
dCdzIGluIGFsbCB0aGUgcmlnaHQgcGxhY2VzCisgICAgICAgIHJlbHBhdGhfcGF0dGVybiA9IHJl
LmNvbXBpbGUobmV3X3JlbHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252
ZXJ0ZWQuZmluZEFsbChzcmM9cmVscGF0aF9wYXR0ZXJuKSksIG51bV9zcmNfcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBzcmMgcmVsYXRpdmUgcGF0aCBub3Qg
Y29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFs
bChocmVmPXJlbHBhdGhfcGF0dGVybikpLCBudW1faHJlZl9wYXRocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIGhyZWYgcmVsYXRpdmUgcGF0aCBub3QgY29ycmVjdCcp
CisKKyAgICBkZWYgdmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKHNlbGYsIGNvbnZlcnRlZCwgdGVz
dF9wcm9wZXJ0aWVzKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmaWVzIGEgbGlzdCBvZiB0
ZXN0X3Byb3BlcnRpZXMgd2VyZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisKKyAgICAgICAgQHBhcmFt
IGNvbnZlcnRlZDogVHVwbGUgLSAobGlzdCBvZiBwcm9wZXJ0aWVzIGFjdHVhbGx5IGNvbnZlcnRl
ZCwgY29udmVydGVkIGNvbnRlbnQpCisgICAgICAgIEBwYXJhbSB0ZXN0X3Byb3BlcnRpZXM6IGxp
c3Qgb2YgdGhlIHByb3BlcnRpZXMgdXNlZCB0byB0ZXN0IHdpdGgKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbnVtYmVyIG9mIHRlc3QgcHJvcGVydGllcyBlcXVhbHMg
dGhlIG51bWJlciB0aGF0IHdlcmUgY29udmVydGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGNvbnZlcnRlZFswXSksIGxlbih0ZXN0X3Byb3BlcnRpZXMpLCAnSW5jb3JyZWN0IG51bWJl
ciBvZiBwcm9wZXJ0aWVzIGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhleSdyZSBh
bGwgaW4gdGhlIGNvbnZlcnRlZCBkb2N1bWVudAorICAgICAgICBmb3IgdGVzdF9wcm9wIGluIHRl
c3RfcHJvcGVydGllczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgodGVzdF9wcm9wIGlu
IGNvbnZlcnRlZFsxXSksICdQcm9wZXJ0eSAnICsgdGVzdF9wcm9wICsgJyBub3QgZm91bmQgaW4g
Y29udmVydGVkIGRvYycpCisKKyAgICBkZWYgZ2VuZXJhdGVUZXN0Q29udGVudChzZWxmLCBmdWxs
X3Byb3BfbGlzdCwgbnVtX3Rlc3RfcHJvcGVydGllcywgaHRtbCk6CisgICAgICAgICIiIgorICAg
ICAgICBHZW5lcmF0ZXMgYSByYW5kb20gbGlzdCBvZiB1bmlxdWUgcHJvcGVydGllcyByZXF1aXJp
bmcgdGhlIC13ZWJraXQtIHByZWZpeAorICAgICAgICBhbmQgaW5zZXJ0cyB0aGVtIGludG8gaHRt
bCBjb250ZW50IHRoYXQncyBiZWVuIHRva2VuaXplZCB1c2luZyBcJ0B0ZXN0WFhAXCcgc3ludGF4
CisKKyAgICAgICAgQHBhcmFtIGZ1bGxfcHJvcF9saXN0OiB0aGUgY29tcGxldGUgbGlzdCBvZiBw
cm9wZXJ0aWVzIGN1cnJlbnRseSByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeAorICAgICAg
ICBAcGFyYW0gbnVtX3Rlc3RfcHJvcGVydGllczogbnVtYmVyIG9mIHByb3BlcnRpZXMgdG8gZ2Vu
ZXJhdGUKKyAgICAgICAgQHBhcmFtIGh0bWw6IHRoZSB0b2tlbml6ZWQgaHRtbCBjb250ZW50CisK
KyAgICAgICAgQHJldHVybjogVHVwbGUgLSAodGhlIGxpc3Qgb2YgcHJvcGVydGllcyBpbnNlcnRl
ZCwgdGhlIG5ldyBodG1sKQorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X3Byb3BlcnRpZXMg
PSBbXQorCisgICAgICAgICMgR3JhYiBhIHJhbmRvbSBidW5jaCBvZiAyMCB1bmlxdWUgcHJvcGVy
dGllcyByZXF1aXJpbmcgcHJlZml4ZXMgdG8gdGVzdCB3aXRoCisgICAgICAgIGNvdW50ID0gMAor
ICAgICAgICB3aGlsZSBjb3VudCA8IG51bV90ZXN0X3Byb3BlcnRpZXM6CisgICAgICAgICAgICBp
ZHggPSByYW5kaW50KDAsIGxlbihmdWxsX3Byb3BfbGlzdCkgLSAxKQorICAgICAgICAgICAgaWYg
bm90KGZ1bGxfcHJvcF9saXN0W2lkeF0gaW4gdGVzdF9wcm9wZXJ0aWVzKToKKyAgICAgICAgICAg
ICAgICB0ZXN0X3Byb3BlcnRpZXMuYXBwZW5kKGZ1bGxfcHJvcF9saXN0W2lkeF0pCisgICAgICAg
ICAgICAgICAgY291bnQgKz0gMQorCisgICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW5zIGluIHRo
ZSB0ZXN0aHRtbCB3aXRoIHRoZSB0ZXN0IHByb3BlcnRpZXMuIFdhbGsgYmFja3dhcmQKKyAgICAg
ICAgIyB0aHJvdWdoIHRoZSBsaXN0IHRvIHJlcGxhY2UgdGhlIGRvdWJsZS1kaWdpdCB0b2tlbnMg
Zmlyc3QKKyAgICAgICAgaWR4ID0gbGVuKHRlc3RfcHJvcGVydGllcykgLSAxCisgICAgICAgIHdo
aWxlIGlkeCA+PSAwOgorICAgICAgICAgICAgIyBVc2UgdGhlIHVucHJlZml4ZWQgdmVyc2lvbgor
ICAgICAgICAgICAgdGVzdF9wcm9wID0gdGVzdF9wcm9wZXJ0aWVzW2lkeF0ucmVwbGFjZSgnLXdl
YmtpdC0nLCAnJykKKyAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW4KKyAgICAgICAgICAg
IGh0bWwgPSBodG1sLnJlcGxhY2UoJ0B0ZXN0JyArIHN0cihpZHgpICsgJ0AnLCB0ZXN0X3Byb3Ap
CisgICAgICAgICAgICBpZHggLT0gMQorCisgICAgICAgIHJldHVybiAodGVzdF9wcm9wZXJ0aWVz
LCBodG1sKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBv
cnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlZjhkOQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTAsMCAr
MSw1MjQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMKKyMgVGhpcyBzY3JpcHQgaW1wb3J0cyBhIGRpcmVjdG9yeSBvZiBXM0Mg
Q1NTIHRlc3RzIGludG8gV2ViS2l0LgorIworIyBZb3UgbXVzdCBoYXZlIGNoZWNrZWQgbG9nIHRo
ZSBXM0MgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZlLgorIworIyBUaGlzIHNjcmlwdCB3
aWxsIGltcG9ydCB0aGUgdGVzdHMgaW50byBXZWJLaXQgZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgor
IworIyAgICAtIE9ubHkgdGVzdHMgdGhhdCBhcmUgYXBwcm92ZWQgb3Igb2ZmaWNpYWxseSBzdWJt
aXR0ZWQgYXdhaXRpbmcgcmV2aWV3IGFyZSBpbXBvcnRlZAorIworIyAgICAtIEFsbCB0ZXN0cyBh
cmUgaW1wb3J0ZWQgaW50byBMYXlvdXRUZXN0cy9jc3N3ZworIworIyAgICAtIElmIHRoZSB0ZXN0
cyBhcmUgYXBwcm92ZWQsIHRoZXknbGwgYmUgaW1wb3J0ZWQgaW50byBhIGRpcmVjdG9yeSB0cmVl
IHRoYXQKKyMgICAgICBtaXJyb3JzIHRoZSBDU1MgTWVyY3VyaWFsIHJlcG8uIEZvciBleGFtcGxl
LCA8Y3Nzd2dfcmVwb19yb290Pi9hcHByb3ZlZC9jc3MyLjEgaXMgYnJvdWdodCBpbgorIyAgICAg
IGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVkL2NzczIuMSwgbWFpbnRhaW5pbmcgdGhlIGVu
dGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVyIHRoYXQKKyMKKyMgICAgLSBJZiB0aGUgdGVz
dHMgYXJlIHN1Ym1pdHRlZCwgdGhleSdsbCBiZSBicm91Z2h0IGluIGFzIExheW91dFRlc3RzL2Nz
c3dnL3N1Ym1pdHRlZCBhbmQgd2lsbCBhbHNvCisjICAgICAgbWFpbnRhaW4gdGhlaXIgZGlyZWN0
b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0LiBGb3IgZXhhbXBsZSwgZXZlcnl0aGluZyB1bmRlcgor
IyAgICAgIDxjc3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9hZG9iZS9zdWJtaXR0ZWQgaXMg
YnJvdWdodCBpbnRvIHN1Ym1pdHRlZCwgbWlycm9yaW5nIGl0cworIyAgICAgIGRpcmVjdG9yeSBz
dHJ1Y3R1cmUgaW4gdGhlIGNzc3dnIHJlcG8KKyMKKyMgICAgLSBJZiB0aGUgaW1wb3J0IGRpcmVj
dG9yeSBzcGVjaWZpZWQgaXMganVzdCBhIGNvbnRyaWJ1dG9yIGZvbGRlciwgb25seSB0aGUgc3Vi
bWl0dGVkIGZvbGRlcgorIyAgICAgIGZvciB0aGF0IGNvbnRyaWJ1dG9yIGlzIGJyb3VnaHQgaW4u
IEZvciBleGFtcGxlLCB0byBpbXBvcnQgYWxsIG9mIE1vemlsbGEncyB0ZXN0cywgZWl0aGVyCisj
ICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEgb3IgPGNzc3dnX3Jl
cG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEvc3VibWl0dGVkCisjICAgICAgd2lsbCB3b3Jr
IGFuZCBhcmUgZXF1aXZhbGVudAorIworIyAgICAtIEZvciB0aGUgdGltZSBiZWluZywgdGhpcyBz
Y3JpcHQgd29uJ3Qgd29yayBpZiB5b3UgdHJ5IHRvIGltcG9ydCB0aGUgZnVsbCBzZXQgb2Ygc3Vi
bWl0dGVkCisjICAgICAgdGVzdHMgdW5kZXIgY29udHJpYnV0b3JzLyovc3VibWl0dGVkLiBTaW5j
ZSB0aGVzZSBhcmUgYXdhaXRpbmcgcmV2aWV3LCB0aGlzIGlzIGp1c3QgYSBzbWFsbAorIyAgICAg
IGNvbnRyb2wgbWVjaGFuaXNtIHRvIGVuZm9yY2UgY2FyZWZ1bGx5IHNlbGVjdGluZyB3aGF0IG5v
bi1hcHByb3ZlZCB0ZXN0cyBhcmUgaW1wb3J0ZWQuCisjICAgICAgSXQgY2FuIG9idmlvdXNseSBh
bmQgZWFzaWx5IGJlIGNoYW5nZWQuCisjCisjICAgIC0gQnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0
cyBhbmQganN0ZXN0IGFyZSBpbXBvcnRlZC4gVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEg
LWEgb3IgLS1hbGwKKyMgICAgICBhcmd1bWVudAorIworIyAgICAtIEFsc28gYnkgZGVmYXVsdCwg
aWYgdGVzdCBmaWxlcyBieSB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3QgaW4gdGhlIGRlc3Rp
bmF0aW9uIGRpcmVjdG9yeSwKKyMgICAgICB0aGV5IGFyZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBp
ZGVhIHRoYXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNoIGZpbGVzIHBlcmlvZGlj
YWxseS4KKyMgICAgICBUaGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW4gYnkgYSAtbiBvciAtLW5v
LW92ZXJ3cml0ZSBmbGFnCisjCisjICAgIC0gQWxsIGZpbGVzIGFyZSBjb252ZXJ0ZWQgdG8gd29y
ayBpbiBXZWJLaXQ6CisjICAgICAgICAgMS4gLnhodCBleHRlbnNpb25zIGFyZSBjaGFuZ2VkIHRv
IC54aHRtbCB0byBtYWtlIG5ldy1ydW4td2Via2l0LXRlc3RzIGhhcHB5CisjICAgICAgICAgMi4g
UGF0aHMgdG8gdGVzdGhhcm5lc3MuanMgZmlsZXMgYXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtp
dCdzIGNvcHkgb2YgdGhlbSBpbgorIyAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywg
dXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KKyMg
ICAgICAgICAzLiBBbGwgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LXZlbmRv
ciBwcmVmaXggYXJlIHByZWZpeGVkIC0gdGhpcyBjdXJyZW50CisjICAgICAgICAgICAgbGlzdCBv
ZiB3aGF0IG5lZWRzIHByZWZpeGVzIGlzIHJlYWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9DU1MvQ1NT
UHJvcGVydGllcy5pbgorIyAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5
IG9mIGl0cyByZWZlcmVuY2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucwor
IyAgICAgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGV4cGVjdHMKKyMgICAgICAgICA1LiBJ
ZiBhIGEgcmVmZXJlbmNlIGZpbGVzIGxpdmVzIG91dHNpZGUgdGhlIGRpcmVjdG9yeSBvZiB0aGUg
dGVzdCB0aGF0IHVzZXMgaXQsIGl0IGlzIGNoZWNrZWQKKyMgICAgICAgICAgICBmb3IgcGF0aHMg
dG8gc3VwcG9ydCBmaWxlcyBhcyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQg
cmVsYXRpdmUgcG9zaXRpb24gdG8gdGhlCisjICAgICAgICAgICAgdGVzdCBmaWxlIChpbiB0aGUg
c2FtZSBkaXJlY3RvcnkpCisjCisjICAgICAtIFVwb24gY29tcGxldGlvbiwgc2NyaXB0IG91dHB1
dHMgdGhlIHRvdGFsIG51bWJlciB0ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVzdCB0
eXBlCisjCisjICAgICAtIEFsc28gdXBvbiBjb21wbGV0aW9uLCBlYWNoIGRpcmVjdG9yeSB3aGVy
ZSBmaWxlcyBhcmUgaW1wb3J0ZWQgd2lsbCBoYXZlIHczYy1pbXBvcnQubG9nIHdyaXR0ZW4KKyMg
ICAgICAgd2l0aCBhIHRpbWVzdGFtcCwgdGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0IGlmIGF2
YWlsYWJsZSwgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0aGF0CisjICAgICAgIHJl
cXVpcmUgcHJlZml4ZXMsIHRoZSBsaXN0IG9mIGltcG9ydGVkIGZpbGVzLCBhbmQgZ3VpZGFuY2Ug
Zm9yIGZ1dHVyZSB0ZXN0IG1vZGlmaWNhdGlvbiBhbmQKKyMgICAgICAgbWFpbnRlbmFuY2UuCisj
CisjICAgICAtIE9uIHN1YnNlcXVlbnQgaW1wb3J0cywgdGhpcyBmaWxlIGlzIHJlYWQgdG8gZGV0
ZXJtaW5lIGlmIGZpbGVzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBuZXdlciBjaGFuZ2VzZXRz
LgorIyAgICAgICBUaGUgc2NyaXB0IHJlbW92ZXMgdGhlc2UgZmlsZXMgYWNjb3JkaW5nbHkuCisj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBtaW1ldHlwZXMKK2Zyb20gb3B0cGFyc2UgaW1w
b3J0IE9wdGlvblBhcnNlcgoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJv
Y2VzcworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRl
c3RQYXJzZXIKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBUZXN0Q29u
dmVydGVyCisKK0xBWU9VVF9URVNUU19ESVJFQ1RPUlkgPSAnTGF5b3V0VGVzdHMnCitDU1NXR19E
SVJFQ1RPUlkgPSAnY3Nzd2cnCitSRVNPVVJDRVNfRElSRUNUT1JZID0gJ3Jlc291cmNlcycKK0FQ
UFJPVkVEID0gJ2FwcHJvdmVkJworU1VCTUlUVEVEID0gJ3N1Ym1pdHRlZCcKK1VOS05PV04gPSAn
dW5rbm93bicKK05PVF9BVkFJTEFCTEUgPSAnTm90IEF2YWlsYWJsZScKKworCitkZWYgbWFpbihh
cmd2LCBfLCBzdGRlcnIpOgorCisgICAgcGFyc2VfYXJncygpCisgICAgaW1wb3J0X2RpciA9IHZh
bGlkYXRlX2ltcG9ydF9kaXJlY3RvcnkoKQorICAgIHRlc3RfaW1wb3J0ZXIgPSBUZXN0SW1wb3J0
ZXIoaW1wb3J0X2Rpciwgb3B0aW9ucykKKyAgICB0ZXN0X2ltcG9ydGVyLmRvX2ltcG9ydCgpCisK
KworZGVmIHBhcnNlX2FyZ3MoKToKKworICAgIGdsb2JhbCBvcHRpb25zCisgICAgZ2xvYmFsIGFy
Z3MKKworICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRp
b25zXSB3M2NfdGVzdF9kaXJlY3Rvcnkgd2Via2l0X3Jvb3QnKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctbicsICctLW5vLW92ZXJ3cml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgI2FjdGlv
bj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdGbGFnIHRvIHByZXZlbnQgZHVwbGljYXRlIHRlc3Qg
ZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBleGlzdGluZyB0ZXN0cy4gQnkgZGVmYXVsdCwgdGhleSB3
aWxsIGJlIG92ZXJ3cml0dGVuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWEnLCAnLS1hbGwn
LAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdJ
bXBvcnQgYWxsIHRlc3RzIGluY2x1ZGluZyByZWZ0ZXN0cywgSlMgdGVzdHMsIGFuZCBtYW51YWwv
cGl4ZWwgdGVzdHMuIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5kIEpTIHRlc3RzIGFyZSBp
bXBvcnRlZCcpCisKKyAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCisK
KyAgICBpZiBsZW4oYXJncykgIT0gMToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdJbmNvcnJlY3Qg
bnVtYmVyIG9mIGFyZ3VtZW50cycpCisKKworZGVmIHZhbGlkYXRlX2ltcG9ydF9kaXJlY3Rvcnko
KToKKworICAgIGltcG9ydF9kaXIgPSBhcmdzWzBdCisKKyAgICAjIE1ha2Ugc3VyZSB0aGUgdzNj
IHRlc3QgZGlyZWN0b3J5IGV4aXN0cworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbXBvcnRf
ZGlyKToKKyAgICAgICAgc3lzLmV4aXQoJ1NvdXJjZSBkaXJlY3RvcnkgJXMgbm90IGZvdW5kIScg
JSBpbXBvcnRfZGlyKQorCisgICAgIyBNYWtlIHN1cmUgdGhlIHRlc3RzIGFyZSBvZmZpY2lhbGx5
IHN1Ym1pdHRlZCB0byB0aGUgVzNDLCBlaXRoZXIgYXBwcm92ZWQgb3IKKyAgICAjIHN1Ym1pdHRl
ZCBmb2xsb3dpbmcgdGhlaXIgZGlyZWN0b3J5IG5hbWluZyBjb252ZW50aW9ucworICAgIGlmIGlt
cG9ydF9kaXIuZmluZChBUFBST1ZFRCkgPT0gLTEgYW5kIFwKKyAgICAgICBpbXBvcnRfZGlyLmZp
bmQoU1VCTUlUVEVEKSA9PSAtMToKKyAgICAgICAgIyBJZiBub3QgcG9pbnRlZCBkaXJlY3RseSB0
byB0aGUgYXBwcm92ZWQgZGlyZWN0b3J5IG9yIHRvIGFueSBzdWJtaXR0ZWQKKyAgICAgICAgIyBk
aXJlY3RvcnksIGNoZWNrIGZvciBhIHN1Ym1pdHRlZCBzdWJkaXJlY3RvcnkgYW5kIGdvIHdpdGgg
dGhhdAorICAgICAgICBpbXBvcnRfZGlyID0gb3MucGF0aC5qb2luKGltcG9ydF9kaXIsICdzdWJt
aXR0ZWQnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGltcG9y
dF9kaXIpKToKKyAgICAgICAgICAgIHN5cy5leGl0KCdVbmFibGUgdG8gaW1wb3J0IHRlc3RzIHRo
YXQgYXJlblwndCBhcHByb3ZlZCBvciBzdWJtaXR0ZWQgdG8gdGhlIFczQycpCisKKyAgICByZXR1
cm4gaW1wb3J0X2RpcgorCisKK2NsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHNvdXJjZV9kaXJlY3RvcnksIG9wdGlvbnMpOgorCisgICAgICAgIHNl
bGYub3B0aW9ucyA9IG9wdGlvbnMKKworICAgICAgICBzZWxmLnNvdXJjZV9kaXJlY3RvcnkgPSBz
b3VyY2VfZGlyZWN0b3J5CisgICAgICAgIHNlbGYud2Via2l0X3Jvb3QgPSBfX2ZpbGVfXy5zcGxp
dChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisgICAgICAgIHNlbGYuZGVzdGluYXRpb25fZGly
ZWN0b3J5ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBzZWxmLndlYmtpdF9yb290LCBMQVlP
VVRfVEVTVFNfRElSRUNUT1JZLCBDU1NXR19ESVJFQ1RPUlkpCisKKyAgICAgICAgc2VsZi5jaGFu
Z2VzZXQgPSBOT1RfQVZBSUxBQkxFCisgICAgICAgIHNlbGYudGVzdF9zdGF0dXMgPSBVTktOT1dO
CisKKyAgICAgICAgc2VsZi5pbXBvcnRfbGlzdCA9IFtdCisKKyAgICBkZWYgZG9faW1wb3J0KHNl
bGYpOgorCisgICAgICAgIHNlbGYuc2Nhbl9zb3VyY2VfZGlyZWN0b3J5KHNlbGYuc291cmNlX2Rp
cmVjdG9yeSkKKyAgICAgICAgc2VsZi5nZXRfY2hhbmdlc2V0KCkKKyAgICAgICAgc2VsZi5pbXBv
cnRfdGVzdHMoKQorCisgICAgZGVmIGdldF9jaGFuZ2VzZXQoc2VsZik6CisgICAgICAgICIiIgor
ICAgICAgICAgICAgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBjdXJyZW50IGNoYW5nZXNldCBhbmQg
cGFyc2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZQorICAgICAgICAgICAgY2hhbmdlc2V0LiBJZiB0
aGF0IGRvZXNuJ3Qgd29ya291dCBmb3Igc29tZSByZWFzb24sIGl0IGp1c3QgYmVjb21lcworICAg
ICAgICAgICAgJ05vdCBBdmFpbGFibGUnCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgQXNzdW1pbmcgTWVyY3VyaWFsIGlzIHNldCB1cCBvbiB0aGUgc3lzdGVtLCB0
cnkgdG8gZ3JhYiB0aGUgY2hhbmdlc2V0IHdlJ3JlIGltcG9ydGluZworICAgICAgICAgICAgcHJv
YyA9IHN1YnByb2Nlc3MuUG9wZW4oWydoZycsICd0aXAnXSwgZW52PW9zLmVudmlyb24sIHN0ZG91
dD1zdWJwcm9jZXNzLlBJUEUsIGN3ZD1zZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgICAg
ICBzZWxmLmNoYW5nZXNldCA9IHByb2Muc3Rkb3V0LnJlYWRsaW5lcygpWzBdCisgICAgICAgICAg
ICBzZWxmLmNoYW5nZXNldCA9IHNlbGYuY2hhbmdlc2V0LnNwbGl0KCdjaGFuZ2VzZXQ6JylbMV0K
KyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBPaCB3ZWxsLCB3ZSB0cmllZAorICAgICAg
ICAgICAgc2VsZi5jaGFuZ2VzZXQgPSAnTm90IEF2YWlsYWJsZScKKworICAgIGRlZiBzY2FuX3Nv
dXJjZV9kaXJlY3Rvcnkoc2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAgIiIiCisgICAgICAgICAg
ICBXYWxrcyB0aGUgZGlyZWN0b3J5IHRyZWUgbG9va2luZyBmb3IgSFRNTCBmaWxlcyBvZiBhbnkg
Zmxhdm9yIGFuZCBwYXJzZXMgdGhlbSB0byBsb29rIGZvcgorICAgICAgICAgICAgaW1wb3J0YWJs
ZSB0ZXN0cy4gSWYgdGhlIGZpbGVzIGlzIGFuIGltcG9ydGFibGUgdGVzdCwgaXQncyBhZGRlZCB0
byB0aGUgbWFzdGVyIGxpc3Qgb2YKKyAgICAgICAgICAgIGZpbGVzIHRvIGltcG9ydC4gSWYgdGhl
cmUgYXJlIHRlc3RzIGluIHRoZSBkaXJlY3RvcnksIGFsbCBvdGhlciBub24tSFRNTCBmaWxlcyBh
cmUgYWRkZWQKKyAgICAgICAgICAgIHRvIHRoZSBtYXN0ZXIgY29weSBsaXN0IGFzIHRoZXkgYXJl
IGFzc3VtZWQgdG8gYmUgcmVxdWlyZWQgYnkgdGhlIHRlc3RzCisKKyAgICAgICAgICAgIEBwYXJh
bSBkaXJlY3Rvcnk6IHRoZSBkaXJlY3RvcnkgdG8gd2FsaworICAgICAgICAiIiIKKworICAgICAg
ICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgorCisgICAgICAg
ICAgICBwcmludCAnU2Nhbm5pbmcgJyArIHJvb3QgKyAnLi4uJworICAgICAgICAgICAgdG90YWxf
dGVzdHMgPSAwCisgICAgICAgICAgICByZWZ0ZXN0cyA9IDAKKyAgICAgICAgICAgIGpzdGVzdHMg
PSAwCisKKyAgICAgICAgICAgICMgSWdub3JlIGFueSByZXBvIHN0dWZmCisgICAgICAgICAgICBp
ZiAnLmdpdCcgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmdpdCcpCisg
ICAgICAgICAgICBpZiAnLmhnJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3Zl
KCcuaGcnKQorICAgICAgICAgICAgaWYgJ2RhdGEnIGluIGRpcnM6CisgICAgICAgICAgICAgICAg
IyB0aGlzIGlzIGludGVybmFsIGNzc3dnIHN0dWZmIHRoYXQgaXMgaW4gZXZlcnkgYXBwcm92ZWQg
ZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ2RhdGEnKQorCisgICAgICAg
ICAgICBjb3B5X2xpc3QgPSBbXQorCisgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXM6
CisKKyAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihyb290LCBmaWxlbmFt
ZSkKKworICAgICAgICAgICAgICAgICMgT25seSBodG1sIG9yIHhtbCBhcmUgY29uc2lkZXJlZCB0
ZXN0cworICAgICAgICAgICAgICAgIG1pbWV0eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZnVs
bHBhdGgpCisgICAgICAgICAgICAgICAgaWYgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkgb3Ig
J3htbCcgaW4gc3RyKG1pbWV0eXBlWzBdKToKKworICAgICAgICAgICAgICAgICAgICB0ZXN0X3Bh
cnNlciA9IFRlc3RQYXJzZXIodmFycyhvcHRpb25zKSwgZmlsZW5hbWU9ZnVsbHBhdGgpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RfaW5mbyA9IHRlc3RfcGFyc2VyLmFuYWx5emVfdGVzdCgpCisK
KyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF9pbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIGlmICdyZWZlcmVuY2Un
IGluIHRlc3RfaW5mby5rZXlzKCk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3Rz
ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Rlc3RzICs9IDEKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHRlc3RfaW5m
b1sndGVzdCddKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCB0aGUgcmVmIGZpbGUs
IHJlbmFtaW5nIGl0IHRvIFdlYmtpdCdzIHdheQorICAgICAgICAgICAgICAgICAgICAgICAgIyBO
b3RlOiBUaGUgcHJlZmVyYWJsZSB3YXkgdG8gaGFuZGxlIHRoaXMgd291bGQgYmUgdG8ganVzdAor
ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICBhZGQgc3VwcG9ydCBpbiBXZWJraXQncyBo
YXJuZXNzIHRvIHJlYWQgbWV0YWRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAg
cmF0aGVyIHRoYW4gcmVseSBvbiBhIGZpbGUgbmFtaW5nIGNvbnZlbnRpb24uIFNpbmNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZSBDU1NXRyB0ZXN0cyBzdXBwb3J0IG1hbnk6
b25lIHRlc3RzOnJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgZW5h
YmxpbmcgbWV0YWRhdGEgcGFyc2luZyBpbiBvdXIgaGFybmVzcyB3b3VsZCBhbHNvCisgICAgICAg
ICAgICAgICAgICAgICAgICAjICAgICAgIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGZpbGVzIGNvcGll
ZCBpbi4gQXMgdGhpcyBpcworICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICBpbXBsZW1l
bnRlZCBoZXJlLCB3ZSBhcmUga25vd2luZ2x5IGltcG9ydGluZyBtdWx0aXBsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgIyAgICAgICBjb3BpZXMgb2YgdGhlIHNhbWUgcmVmIGZpbGVzIHRvIGFk
aGVyZSB0byBXZWJraXQncyB3YXkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlID0g
b3MucGF0aC5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1lKVswXSArICctZXhwZWN0ZWQnCisgICAgICAg
ICAgICAgICAgICAgICAgICByZWZfZmlsZSArPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5h
bWUpWzFdCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMn
OiB0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLCAnZGVzdCc6IHJlZl9maWxlfSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3Rlc3QnXSwg
J2Rlc3QnOiBmaWxlbmFtZX0pCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlcmUg
YXJlIHJlZiBzdXBwb3J0IGZpbGVzLCB0aGUgZGVzdGluYXRpb24gaXMgc2hvdWxkIG5vdyBiZSBy
ZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGVzdCBmaWxlIGFuZCBu
ZXcgbG9jYXRpb24gb2YgdGhlIHJlZiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAn
cmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3Igc3VwcG9ydF9maWxlIGluIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEJ1aWxkIHRoZSBjb3JyZWN0IHNvdXJjZSBwYXRo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddKSwgc3VwcG9ydF9maWxl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZmlsZSA9IG9zLnBhdGgu
bm9ybXBhdGgoc291cmNlX2ZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
S2VlcCB0aGUgZGVzdCBhcyBpdCB3YXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9fY29weSA9IHsnc3JjJzogc291cmNlX2ZpbGUsICdkZXN0Jzogc3VwcG9ydF9maWxlfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9ubHkgYWRkIGl0IG9uY2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90KHRvX2NvcHkgaW4gY29weV9saXN0KToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQodG9fY29w
eSkKKworICAgICAgICAgICAgICAgICAgICBlbGlmICdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlz
KCk6CisgICAgICAgICAgICAgICAgICAgICAgICBqc3Rlc3RzICs9IDEKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRvdGFsX3Rlc3RzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlf
bGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCisKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Rlc3Rz
ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBm
dWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCisKKyAgICAgICAgICAgICAgICBlbGlmIG5vdChm
aWxlbmFtZS5zdGFydHN3aXRoKCcuJykpOgorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3Qu
YXBwZW5kKHsnc3JjJzogZnVsbHBhdGgsICdkZXN0JzogZmlsZW5hbWV9KQorCisgICAgICAgICAg
ICBpZiB0b3RhbF90ZXN0cyA9PSAwOgorICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgYXJlIG5v
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5LCBza2lwIHRoZSBzdXBwb3J0IGRpciB0aGF0IGxpdmVz
IGluIGFsbAorICAgICAgICAgICAgICAgICMgb2YgdGhlICdhcHByb3ZlZCcgZm9sZGVycyBhcyBw
YXJ0IG9mIHRoZSBhdXRvbWF0ZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgaWYgJ3N1
cHBvcnQnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdzdXBwb3J0
JykKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiBsZW4oY29weV9saXN0KSA+
IDA6CisgICAgICAgICAgICAgICAgIyBPbmx5IGFkZCB0aGlzIGRpcmVjdG9yeSB0byB0aGUgbGlz
dCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgICAgICAgICBzZWxmLmlt
cG9ydF9saXN0LmFwcGVuZCh7J2Rpcm5hbWUnOiByb290LCAnY29weV9saXN0JzogY29weV9saXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVmdGVzdHMnOiBy
ZWZ0ZXN0cywgJ2pzdGVzdHMnOiBqc3Rlc3RzLCAndG90YWxfdGVzdHMnOiB0b3RhbF90ZXN0c30p
CisKKyAgICBkZWYgaW1wb3J0X3Rlc3RzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgICAg
IElmIHRoZXJlIGFyZSBmaWxlcyBpbiB0aGUgbWFzdGVyIGltcG9ydCBsaXN0IGNyZWF0ZWQgYnkg
c2Nhbl9zb3VyY2VfZGlyZWN0b3J5KCksCisgICAgICAgICAgICB0aGUgZW50aXJlIGxpc3QgaXMg
Y29waWVkIG1haW50YWluaW5nIGl0cyBvcmlnaW5hbCBkaXJlY3Rvcnkgc3RydWN0dXJlIGludG8K
KyAgICAgICAgICAgIExheW91dFRlc3RzL2Nzc3dnLiBCZWZvcmUgd3JpdHRlbiB0byBkaXNrLCBl
YWNoIGZpbGUgY2hlY2tlZCBmb3IgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgIC0gUGF0
aHMgdG8gdGVzdGhhcm5lc3MgZmlsZXMKKyAgICAgICAgICAgICAgIC0gQ1NTIHByb3BlcnRpZXMg
cmVxdWlyaW5nIHRoZSAtd2Via2l0LSB2ZW5kb3IgcHJlZml4CisgICAgICAgICAgICAgICAtIFBh
dGhzIHRvIHN1cHBvcnQgZmlsZXMgaW4gcmVmZXJlbmNlIGZpbGVzIGlmIGl0cyByZWxhdGl2ZSBs
b2NhdGlvbiB0byB0aGUKKyAgICAgICAgICAgICAgICAgdGVzdCBmaWxlIGlzIGNoYW5nZWQgaW4g
dGhlIG5ldyBsb2NhdGlvbgorICAgICAgICAgICAgSWYgdGhlIGZpbGUgcmVxdWlyZXMgYW55IG9m
IHRoZXNlIGNvbnZlcnNpb24sIHRoZXkgYXJlIG1hZGUgYW5kIGl0IGlzIHJlLXdyaXR0ZW4KKyAg
ICAgICAgICAgIG91dC4gSWYgaXQgcmVxdWlyZXMgbm8gY29udmVyc2lvbiwgYSBzdHJhaWdodCBj
b3B5IGlzIHBlZm9ybWVkLgorICAgICAgICAgICAgQWxzbywgLnhodCBleHRlbnNpb25zIGFyZSBj
aGFuZ2VkIHRvIC54aHRtbCB0byB3b3JrIGluIG5ldy1ydW4td2Via2l0LXRlc3RzCisKKyAgICAg
ICAgICAgIExhc3RseSwgdGhlIHRvdGFsIG51bWJlciBvZiB0ZXN0cyBpcyBkaXNwbGF5ZWQgYXMg
d2VsbCBhcyBhIGRldGFpbGVkIGxvZyBvZiB3aGF0CisgICAgICAgICAgICB3YXMgaW1wb3J0ZWQg
ZHJvcHBlZCBpbiBlYWNoIGRpcmVjdG9yeSB3aGVyZSBmaWxlcyBhcmUgcGxhY2VkCisgICAgICAg
ICIiIgorCisgICAgICAgICMgT25seSBzZXQgdXAgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBp
ZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgaWYgbGVuKHNlbGYuaW1wb3J0
X2xpc3QpID4gMDoKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfZGVzdGluYXRpb25fZGlyZWN0b3J5
KCkKKworICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgdG90YWxf
aW1wb3J0ZWRfdGVzdHMgPSAwCisgICAgICAgIHRvdGFsX2ltcG9ydGVkX3JlZnRlc3RzID0gMAor
ICAgICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzID0gMAorCisgICAgICAgIGZvciBkaXJfdG9f
Y29weSBpbiBzZWxmLmltcG9ydF9saXN0OgorCisgICAgICAgICAgICB0b3RhbF9pbXBvcnRlZF90
ZXN0cyArPSBkaXJfdG9fY29weVsndG90YWxfdGVzdHMnXQorICAgICAgICAgICAgdG90YWxfaW1w
b3J0ZWRfcmVmdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3JlZnRlc3RzJ10KKyAgICAgICAgICAgIHRv
dGFsX2ltcG9ydGVkX2pzdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ2pzdGVzdHMnXQorCisgICAgICAg
ICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KKworICAgICAgICAgICAgaWYgbGVuKGRpcl90
b19jb3B5Wydjb3B5X2xpc3QnXSkgPiAwOgorCisgICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUg
c3VicGF0aCBzdGFydGluZyB3aXRoIHRoZSBhcHByb3ZlZC9zdWJtaXR0ZWQgZGlyZWN0b3J5Cisg
ICAgICAgICAgICAgICAgb3JpZ19wYXRoID0gZGlyX3RvX2NvcHlbJ2Rpcm5hbWUnXQorICAgICAg
ICAgICAgICAgIHN0YXJ0ID0gb3JpZ19wYXRoLmZpbmQoc2VsZi50ZXN0X3N0YXR1cykKKyAgICAg
ICAgICAgICAgICBuZXdfc3VicGF0aCA9IG9yaWdfcGF0aFtzdGFydDpsZW4ob3JpZ19wYXRoKV0K
KworICAgICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBuZXcgc3VicGF0aCB0byB0aGUgZGVzdGlu
YXRpb25fZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgbmV3X3BhdGggPSBvcy5wYXRoLmpvaW4o
c2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQorCisgICAgICAgICAgICAg
ICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9yaWVzIGlmIG5vdCB0aGVyZQor
ICAgICAgICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhuZXdfcGF0aCkpOgorICAgICAg
ICAgICAgICAgICAgICBvcy5tYWtlZGlycyhuZXdfcGF0aCkKKworICAgICAgICAgICAgICAgIGNv
cGllZF9maWxlcyA9IFtdCisKKyAgICAgICAgICAgICAgICBmb3IgZmlsZV90b19jb3B5IGluIGRp
cl90b19jb3B5Wydjb3B5X2xpc3QnXToKKworICAgICAgICAgICAgICAgICAgICBvcmlnX2ZpbGVw
YXRoID0gb3MucGF0aC5ub3JtcGF0aChmaWxlX3RvX2NvcHlbJ3NyYyddKQorCisgICAgICAgICAg
ICAgICAgICAgICMgU2hvdWxkbid0IGJlIGFueSBkaXJlY3RvcmllcyBvbiB0aGUgbGlzdCwgYnV0
IGNoZWNrIHRvIGJlIHNhZmUKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihv
cmlnX2ZpbGVwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgICAgICAgICAgIyBEb24ndCBjaG9rZSBpZiB0aGUgZmlsZSBjYW4ndCBiZSBmb3VuZAor
ICAgICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3JpZ19maWxlcGF0aCkp
OgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6ICcgKyBvcmlnX2ZpbGVw
YXRoICsgJyBub3QgZm91bmQuIFBvc3NpYmxlIGVycm9yIGluIHRoZSB0ZXN0LicKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBBcHBlbmQg
dGhlIGNvcnJlY3QgZGVzdGluYXRpb24gZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgbmV3
X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkK
KworICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBleHRlbnNpb24gdG8gd29yayBpbiB0aGUg
V2ViS2l0IGhhcm5lc3MKKyAgICAgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gbmV3X2Zp
bGVwYXRoLnJlcGxhY2UoJy54aHQnLCAnLnhodG1sJykKKworICAgICAgICAgICAgICAgICAgICAj
IE1ha2UgdGhlIGRpcmVjdG9yaWVzIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qo
b3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxlcGF0aCkpKToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShuZXdfZmlsZXBhdGgp
KQorCisgICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIHRlc3Rz
IGlmIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb25zLm5vX292ZXJ3cml0
ZSBpcyBUcnVlIGFuZCBvcy5wYXRoLmV4aXN0cyhuZXdfZmlsZXBhdGgpOgorICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBleGlzdGluZyBmaWxlICcgKyBu
ZXdfZmlsZXBhdGgKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICMgVE9ETzogTWF5YmUgZG9pbmcgYSBmaWxlIGRpZmYgaXMgaW4gb3JkZXIgaGVyZSBm
b3IgZXhpc3RpbmcgZmlsZXM/CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIEluIG90
aGVyIHdvcmRzLCB0aGVyZSdzIG5vIHNlbnNlIGluIG92ZXJ3cml0aW5nIGlkZW50aWNhbCBmaWxl
cywgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZXJlJ3Mgbm8gaGFybSBp
biBjb3B5aW5nIHRoZSBpZGVudGljYWwgdGhpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBw
cmludCAnSW1wb3J0aW5nOiAnICsgb3JpZ19maWxlcGF0aAorICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnQgJyAgICAgICBBczogJyArIG5ld19maWxlcGF0aAorCisgICAgICAgICAgICAgICAg
ICAgICMgT25seSBodG1sLCB4bWwsIG9yIGNzcyBzaG91bGQgYmUgY29udmVydGVkCisgICAgICAg
ICAgICAgICAgICAgICMgVE9ETzogRXZlbnR1YWxseSwgc28gc2hvdWxkIGpzIHdoZW4gc3VwcG9y
dCBpcyBhZGRlZCBmb3IgdGhpcyB0eXBlIG9mIGNvbnZlcnNpb24KKyAgICAgICAgICAgICAgICAg
ICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmlnX2ZpbGVwYXRoKQorICAgICAg
ICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciBcCisgICAgICAg
ICAgICAgICAgICAgICAgICd4bWwnIGluIHN0cihtaW1ldHlwZVswXSkgIG9yIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToKKworICAgICAgICAgICAg
ICAgICAgICAgICAgIyBDb252ZXJ0IGZvciBXZWJLaXQKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnZlcnRlZF9maWxlID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwg
ZmlsZW5hbWU9b3JpZ19maWxlcGF0aCkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29u
dmVydGVkX2ZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFN0cmFp
Z2h0IGNvcHkgaWYgbm90aGluZydzIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdyaXRl
IG91dCB0aGUgY29udmVydGVkIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVm
aXhlZF9wcm9wZXJ0aWVzLmV4dGVuZChzZXQoY29udmVydGVkX2ZpbGVbMF0pIC0gc2V0KHByZWZp
eGVkX3Byb3BlcnRpZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUgPSBv
cGVuKG5ld19maWxlcGF0aCwgJ3cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZp
bGUud3JpdGUoY29udmVydGVkX2ZpbGVbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0ZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQor
CisgICAgICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcy5hcHBlbmQobmV3X2ZpbGVwYXRoLnJl
cGxhY2Uoc2VsZi53ZWJraXRfcm9vdCwgJycpKQorCisgICAgICAgICAgICAgICAgIyBUYWtlIGNh
cmUgb2YgYW55dGhpbmcgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhlIGxhc3Qg
aW1wb3J0CisgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfZGVsZXRlZF9maWxlcyhuZXdfcGF0
aCwgY29waWVkX2ZpbGVzKQorCisgICAgICAgICAgICAgICAgIyBEcm9wIHNvbWUgaW5mbyBhYm91
dCB3aGF0IGp1c3QgaGFwcGVuZWQgaGVyZQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfaW1w
b3J0X2xvZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhlZF9wcm9wZXJ0aWVzKQorCisg
ICAgICAgIHByaW50ICdJbXBvcnQgY29tcGxldGUnCisKKyAgICAgICAgcHJpbnQgJ0lNUE9SVEVE
ICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfdGVzdHMpICsgJyBUT1RBTCBURVNUUycKKyAgICAgICAg
cHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMpICsgJyByZWZ0
ZXN0cycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfanN0
ZXN0cykgKyAnIEpTIHRlc3RzJworICAgICAgICBwcmludCAnSW1wb3J0ZWQgJyArIHN0cih0b3Rh
bF9pbXBvcnRlZF90ZXN0cyAtIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgLSB0b3RhbF9pbXBvcnRl
ZF9yZWZ0ZXN0cykgKyAnIHBpeGVsL21hbnVhbCB0ZXN0cycKKworICAgIGRlZiBzZXR1cF9kZXN0
aW5hdGlvbl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICAgICAgQ3JlYXRl
cyBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSB0aGF0IG1pcnJvcnMgdGhhdCBvZiB0aGUgc291cmNl
IGFwcHJvdmVkLyBvcgorICAgICAgICAgICAgc3VibWl0dGVkLyBkaXJlY3RvcnkKKyAgICAgICAg
IiIiCisKKyAgICAgICAgIyBUaGUgdGVzdCBzdGF0dXMgaXMgaW4gdGhlIHBhdGgsIHNvIGdyYWIg
aXQKKyAgICAgICAgc2VsZi5nZXRfdGVzdF9zdGF0dXMoKQorCisgICAgICAgICMgTWlycm9yIHRo
ZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGluIHRoZSBjc3N3ZyByZXBvIHVuZGVyIGFwcHJvdmVkLyBv
ciBzdWJtaXR0ZWQvCisgICAgICAgIHN0YXJ0ID0gc2VsZi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQo
c2VsZi50ZXN0X3N0YXR1cykKKyAgICAgICAgbmV3X3N1YnBhdGggPSBzZWxmLnNvdXJjZV9kaXJl
Y3Rvcnlbc3RhcnQ6bGVuKHNlbGYuc291cmNlX2RpcmVjdG9yeSldCisKKyAgICAgICAgZGVzdGlu
YXRpb25fZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5
LCBuZXdfc3VicGF0aCkKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGVzdGluYXRp
b25fZGlyZWN0b3J5KToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcmVj
dG9yeSkKKworICAgICAgICBwcmludCAnVGVzdHMgd2lsbCBiZSBpbXBvcnRlZCBpbnRvOiAnICsg
ZGVzdGluYXRpb25fZGlyZWN0b3J5CisKKyAgICBkZWYgZ2V0X3Rlc3Rfc3RhdHVzKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgICAgU2V0cyB0aGUgdGVzdCBzdGF0dXMgYmFzZWQgb24gdGhl
IGRpcmVjdG9yeSBuYW1pbmcgY29udmVudGlvbiBpbiB0aGUgQ1NTV0cgcmVwby4KKyAgICAgICAg
ICAgSXQncyBlaXRoZXIgZ29pbmcgdG8gYmUgJ2FwcHJvdmVkJyBvciAnc3VibWl0dGVkJy4gQWx0
aG91Z2ggdGhpcyBtZXRob2QKKyAgICAgICAgICAgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpZiB0
aGUgZGlyZWN0b3J5IGhhcyBuZWl0aGVyIG9mIHRoaXMsIHRoZSBzdGF0dXMgaW4gdGhhdAorICAg
ICAgICAgICBjYXNlIGlzIGp1c3QgJ3Vua25vd24nCisgICAgICAgICIiIgorCisgICAgICAgIHN0
YXR1cyA9IFVOS05PV04KKworICAgICAgICBpZiBzZWxmLnNvdXJjZV9kaXJlY3RvcnkuZmluZChB
UFBST1ZFRCkgIT0gLTE6CisgICAgICAgICAgICBzdGF0dXMgPSBBUFBST1ZFRAorICAgICAgICBl
bGlmIHNlbGYuc291cmNlX2RpcmVjdG9yeS5maW5kKFNVQk1JVFRFRCkgIT0gLTE6CisgICAgICAg
ICAgICBzdGF0dXMgPSBTVUJNSVRURUQKKworICAgICAgICBzZWxmLnRlc3Rfc3RhdHVzID0gc3Rh
dHVzCisKKyAgICBkZWYgcmVtb3ZlX2RlbGV0ZWRfZmlsZXMoc2VsZiwgaW1wb3J0X2RpcmVjdG9y
eSwgbmV3X2ZpbGVfbGlzdCk6CisgICAgICAgICIiIgorICAgICAgICBSZWFkcyBhIHczYy1pbXBv
cnQubG9nIGluIGEgZGlyZWN0b3J5IGlmIGl0IGV4aXN0cyBhbmQgY29tcGFyZXMgdGhlCisgICAg
ICAgIGxpc3Qgb2YgZmlsZXMgaW4gaXQgdG8gdGhlIG5ld2x5IGltcG9ydGVkIGZpbGUgbGlzdCwg
dGhlbiByZW1vdmVzCisgICAgICAgIGFsbCBmaWxlcyB0aGF0IGFyZSBub3QgaW4gdGhlIG5ldyBs
aXN0ICh3aGljaCB3b3VsZCBsaWtlbHkgbWVhbgorICAgICAgICByZW1vdmVkIGZyb20gdGhlIFcz
QyByZXBvKQorCisgICAgICAgIEBwYXJhbSBpbXBvcnRfZGlyZWN0b3J5OiB0aGUgZGlyZWN0b3J5
IGludG8gd2hpY2ggZmlsZXMgd2VyZSBpbXBvcnRlZAorICAgICAgICBAcGFyYW0gbmV3X2ZpbGVf
bGlzdDogdGhlIG5ldyBsaXN0IG9mIGZpbGVzIGltcG9ydGVkIGluIHRoaXMgZGlyZWN0b3J5Cisg
ICAgICAgICIiIgorCisgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IFtdCisKKyAgICAgICAg
IyBGaXJzdCBjaGVjayBpZiB0aGVyZSB3YXMgYSBwcmV2aW91cyBpbXBvcnQgaGVyZSAtIHRoZXJl
IHNob3VsZCBiZSBhIGxvZworICAgICAgICBpbXBvcnRfbG9nX2ZpbGUgPSBvcy5wYXRoLmpvaW4o
aW1wb3J0X2RpcmVjdG9yeSwgJ3czYy1pbXBvcnQubG9nJykKKyAgICAgICAgaWYgbm90KG9zLnBh
dGguZXhpc3RzKGltcG9ydF9sb2dfZmlsZSkpOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgaW1wb3J0X2xvZyA9IG9wZW4oaW1wb3J0X2xvZ19maWxlLCAncicpCisgICAgICAgIGNvbnRl
bnRzID0gaW1wb3J0X2xvZy5yZWFkbGluZXMoKQorCisgICAgICAgICMgUHVsbCBsb2cgdGhlIGxp
c3Qgb2YgZmlsZXMgZnJvbSB0aGUgcHJldmlvdXMgaW1wb3J0CisgICAgICAgIGlmICdMaXN0IG9m
IGZpbGVzXG4nIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgbGlzdF9pZHggPSBjb250ZW50cy5p
bmRleCgnTGlzdCBvZiBmaWxlczpcbicpICsgMQorICAgICAgICAgICAgcHJldmlvdXNfZmlsZV9s
aXN0ID0gY29udGVudHNbbGlzdF9pZHg6XQorICAgICAgICAgICAgcHJldmlvdXNfZmlsZV9saXN0
ID0gbWFwKGxhbWJkYSBzOiBzLnN0cmlwKCksIHByZXZpb3VzX2ZpbGVfbGlzdCkKKworICAgICAg
ICBkZWxldGVkX2ZpbGVzID0gc2V0KHByZXZpb3VzX2ZpbGVfbGlzdCkgLSBzZXQobmV3X2ZpbGVf
bGlzdCkKKworICAgICAgICAjIExvb3AgdGhyb3VnaCBhbmQgcmVtb3ZlIHRoZW0gYWxsCisgICAg
ICAgIGZvciBkZWxldGVkX2ZpbGUgaW4gZGVsZXRlZF9maWxlczoKKyAgICAgICAgICAgIHByaW50
ICdEZWxldGluZyBmaWxlIHJlbW92ZWQgZnJvbSB0aGUgVzNDIHJlcG86JyArIGRlbGV0ZWRfZmls
ZQorICAgICAgICAgICAgZGVsZXRlZF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYud2Via2l0X3Jv
b3QsIGRlbGV0ZWRfZmlsZSkKKyAgICAgICAgICAgIG9zLnJlbW92ZShkZWxldGVkX2ZpbGUpCisK
KyAgICAgICAgaW1wb3J0X2xvZy5jbG9zZSgpCisKKyAgICBkZWYgd3JpdGVfaW1wb3J0X2xvZyhz
ZWxmLCBpbXBvcnRfZGlyZWN0b3J5LCBmaWxlX2xpc3QsIHByb3BfbGlzdCk6CisgICAgICAgICIi
IgorICAgICAgICBXcml0ZXMgYSB3M2MtaW1wb3J0LmxvZyBmaWxlIGluIGVhY2ggZGlyZWN0b3J5
IHdpdGggaW1wb3J0ZWQgZmlsZXMuCisgICAgICAgIFRoZSBsb2cgZmlsZSBjb250YWlucyBhIHRp
bWVzdGFtcCBvZiB0aGUgaW1wb3J0LCB0aGUgVzNDIE1lcmN1cmlhbAorICAgICAgICBjaGFuZ2Vz
ZXQgKGlmIGF2YWlsYWJsZSksIHRoZSBzdGF0dXMgb2YgdGhlIHRlc3RzIChhcHByb3ZlZCBvciBz
dWJtaXR0ZWQpLAorICAgICAgICB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUg
LXdlYmtpdC0gcHJlZml4IHVzZWQgaW4gdGhlIGZpbGVzCisgICAgICAgIG9uIHRoZSBsaXN0LCBh
bmQgdGhlIGxpc3Qgb2YgZmlsZXMgaW1wb3J0ZWQuCisKKyAgICAgICAgQHBhcmFtIGltcG9ydF9k
aXJlY3Rvcnk6IHRoZSBkaXJlY3RvcnkgaW50byB3aGljaCBmaWxlcyB3ZXJlIGltcG9ydGVkCisg
ICAgICAgIEBwYXJhbSBuZXdfZmlsZV9saXN0OiB0aGUgbmV3IGxpc3Qgb2YgZmlsZXMgaW1wb3J0
ZWQgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICAgICAgQHBhcmFtIHByb3BfbGlzdDogdGhlIGxpc3Qg
b2YgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXgKKyAgICAgICAg
IiIiCisKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKworICAgICAgICAj
IENyZWF0ZSBhIGxvZyBvZiB0aGlzIGltcG9ydCB3aXRoIGFsbCBzb3J0cyBvZiBnb29kIGluZm9y
bWF0aW9uCisgICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKG9zLnBhdGguam9pbihpbXBvcnRfZGly
ZWN0b3J5LCAndzNjLWltcG9ydC5sb2cnKSwgJ3cnKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRl
KCdUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0RvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Via2l0LiBJbnN0ZWFkLCBwdXNoIGNoYW5nZXMgdG8g
dGhlIFczQyBDU1MgcmVwbzpcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnaHR0cDov
L2hnLmNzc3dnLm9yZy90ZXN0XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1RoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Via2l0IHRvIHJlaW1w
b3J0XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0RvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZVxuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCctLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS1cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xhc3QgSW1wb3J0OiAnICsgbm93
LnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTScpICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQ6ICcgKyBzZWxmLmNoYW5nZXNldCArICdcbicp
CisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1Rlc3Qgc3RhdHVzIGF0IHRpbWUgb2YgaW1wb3J0
OiAnICsgc2VsZi50ZXN0X3N0YXR1cyArICdcbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUo
Jy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOlxuJykKKyAgICAgICAgaWYgbGVuKHByb3BfbGlz
dCkgPT0gMDoKKyAgICAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ05vbmVcbicpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBmb3IgcHJvcCBpbiBwcm9wX2xpc3Q6CisgICAgICAgICAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZShwcm9wICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0
ZSgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdMaXN0IG9m
IGZpbGVzOlxuJykKKyAgICAgICAgZm9yIGl0ZW0gaW4gZmlsZV9saXN0OgorICAgICAgICAgICAg
aW1wb3J0X2xvZy53cml0ZShpdGVtICsgJ1xuJykKKworICAgICAgICBpbXBvcnRfbG9nLmNsb3Nl
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3Vu
aXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTNiOGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVy
X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisj
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnczYyBp
bXBvcnQgdGVzdF9jb252ZXJ0ZXIKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfaW1wb3J0ZXIgaW1w
b3J0IFRlc3RJbXBvcnRlcgoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0
CisKK1dFQktJVF9ST09UID0gX19maWxlX18uc3BsaXQob3MucGF0aC5zZXAgKyAnVG9vbHMnKVsw
XQorCisKK2NsYXNzIFRlc3RJbXBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAg
ZGVmIHRlc3RfSW1wb3J0RGlyV2l0aE5vVGVzdHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICAgICBUZXN0cyBkb19pbXBvcnQoKSB3aXRoIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgbm8g
dGVzdHMgLSB1c2luZworICAgICAgICAgICBhIFdlYmtpdCBzb3VyY2UgZGlyZWN0b3J5IHRoYXQg
c2hvdWxkIG5ldmVyIGNvbnRhaW4gVzNDIHRlc3RzCisgICAgICAgICIiIgorICAgICAgICBkaXJf
d2l0aF9ub190ZXN0cyA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIu
V0VCS0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5TT1VSQ0VfU1VCRElSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuV0VC
Q09SRV9TVUJESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSKQorCisgICAgICAgIGltcG9ydGVy
ID0gVGVzdEltcG9ydGVyKGRpcl93aXRoX25vX3Rlc3RzLCBOb25lKQorICAgICAgICBpbXBvcnRl
ci5kb19pbXBvcnQoKQorCisKKyAgICAjIFRPRE86IE5lZWQgbW9yZSB0ZXN0cywgYnV0IHdoYXQg
dG8gdXNlIGZvciB2YWxpZCBzb3VyY2UgZGlyZWN0b3J5PyBNYWtlIGl0IG9uIHRoZSBmbHkKKyAg
ICAjICAgICAgIGFuZCBjbGVhbiBpdCB1cCBhZnRlcndhcmQ/CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmI4YWFmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X3BhcnNlci5weQpAQCAtMCwwICsxLDE4MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisK
KyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHkudGhp
cmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwIGFzIFBhcnNlcgoraW1w
b3J0IG9zCitpbXBvcnQgcmUKKworCitjbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6CisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZmlsZW5hbWUpOgorICAgICAgICBzZWxmLm9wdGlv
bnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBz
ZWxmLnRlc3RfZG9jID0gc2VsZi5sb2FkX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgIHNlbGYucmVm
X2RvYyA9IE5vbmUKKworICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwgcGF0aCk6CisgICAgICAgICIi
IgorICAgICAgICBPcGVucyBhbmQgcmVhZCB0aGUgZmlsZSB0byBwYXJzZQorCisgICAgICAgIEBw
YXJhbSBwYXRoOiBmdWxsIHBhdGggdG8gdGhlIGZpbGUKKworICAgICAgICBAcmV0dXJuOiBhIG5l
dyBCZWF1dGlmdWxTb3VwIHBhcnNlciBmb3IgdGhlIGZpbGUKKyAgICAgICAgIiIiCisgICAgICAg
IGRvYyA9IE5vbmUKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAg
ICAgIGYgPSBvcGVuKHBhdGgpCisgICAgICAgICAgICBodG1sID0gZi5yZWFkKCkKKyAgICAgICAg
ICAgIGYuY2xvc2UoKQorCisgICAgICAgICAgICBkb2MgPSBQYXJzZXIoaHRtbCkKKworICAgICAg
ICByZXR1cm4gZG9jCisKKyAgICBkZWYgYW5hbHl6ZV90ZXN0KHNlbGYsIHRlc3RfY29udGVudHM9
Tm9uZSwgcmVmX2NvbnRlbnRzPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgQW5hbHl6ZXMg
YSBmaWxlIHRvIGRldGVybWluZSBpZiBpdCdzIGEgdGVzdCwgd2hhdCB0eXBlIG9mIHRlc3QsCisg
ICAgICAgIGFuZCB3aGF0IHJlZmVyZW5jZSBvciBzdXBwb3J0IGZpbGVzIGl0IHJlcXVpcmVzCisK
KyAgICAgICAgQHJldHVybjogRGljdGlvbmFyeSB7IHRlc3Q6IG9yaWdpbmFsIGFic29sdXRlIHBh
dGggdG8gdGhlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTog
b3JpZ2luYWwgYWJzb2x1dGUgcGF0aCB0byB0aGUgcmVmZXJlbmNlIGZpbGUgKGlmIGEgcmVmdGVz
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnN1cHBvcnQ6IHJlZmVyZW5jZSBm
aWxlIGRlcGVuZGVuY2llcyAoaWYgYSByZWZ0ZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAganN0ZXN0OiBUcnVlIChpZiBhIGpzdGVzdCkKKyAgICAgICAgIiIiCisKKyAgICAgICAg
dGVzdF9pbmZvID0gTm9uZQorCisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgTm9uZSBhbmQg
c2VsZi50ZXN0X2RvYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHRlc3RfaW5mbworCisg
ICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnRl
c3RfZG9jID0gUGFyc2VyKHRlc3RfY29udGVudHMpCisKKyAgICAgICAgaWYgcmVmX2NvbnRlbnRz
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5yZWZfZG9jID0gUGFyc2VyKHJlZl9jb250
ZW50cykKKworICAgICAgICAjIEZpcnN0IGNoZWNrIGlmIGl0J3MgYSByZWZ0ZXN0CisgICAgICAg
IG1hdGNoZXMgPSBzZWxmLmdldF9yZWZ0ZXN0cyhUcnVlKQorICAgICAgICBpZiBsZW4obWF0Y2hl
cykgIT0gMDoKKworICAgICAgICAgICAgaWYgbGVuKG1hdGNoZXMpID4gMToKKyAgICAgICAgICAg
ICAgICBwcmludCAnV2FybmluZzogV2Via2l0IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcmVm
ZXJlbmNlcy4gSW1wb3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5lZCBpbiAnICsgb3MucGF0aC5i
YXNlbmFtZShzZWxmLmZpbGVuYW1lKQorCisgICAgICAgICAgICByZWZfZmlsZSA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5maWxlbmFtZSksIG1hdGNoZXNbMF1bJ2hyZWYnXSkK
KyAgICAgICAgICAgIGlmIHNlbGYucmVmX2RvYyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNl
bGYucmVmX2RvYyA9IHNlbGYubG9hZF9maWxlKHJlZl9maWxlKQorCisgICAgICAgICAgICB0ZXN0
X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAncmVmZXJlbmNlJzogcmVmX2ZpbGV9CisK
KyAgICAgICAgICAgICMgSWYgdGhlIHJlZiBmaWxlIHBhdGggaXMgcmVsYXRpdmUsIHdlIG5lZWQg
dG8gY2hlY2sgaXQgZm9yIHJlbGF0aXZlIHBhdGhzCisgICAgICAgICAgICAjIGJlY2F1c2Ugd2hl
biBpdCBsYW5kcyBpbiBXZWJraXQsIGl0IHdpbGwgYmUgbW92ZWQgZG93biBpbnRvIHRoZSB0ZXN0
IGRpcgorICAgICAgICAgICAgIyBOb3RlOiBUaGUgdGVzdCBmaWxlcyB0aGVtc2VsdmVzIGFyZSBu
b3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxlcworICAgICAgICAgICAgIyB0aGF0IGxpdmUgb3V0
c2lkZSB0aGVpciBkaXJlY3RvcmllcyBhcyBpdCdzIHRoZSBjb252ZW50aW9uIGluIHRoZSBDU1NX
RworICAgICAgICAgICAgIyB0byBwdXQgYWxsIHN1cHBvcnQgZmlsZXMgaW4gdGhlIHNhbWUgZGly
IG9yIHN1YmRpciBhcyB0aGUgdGVzdC4gQWxsIG5vbi10ZXN0CisgICAgICAgICAgICAjIGZpbGVz
IGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5IHRyZWUgYXJlIGF1dG9tYXRpY2FsbHkgY29waWVkIGFz
IHBhcnQgb2YgdGhlIGltcG9ydCBhcworICAgICAgICAgICAgIyB0aGV5IGFyZSBhc3N1bWVkIHRv
IGJlIHJlcXVpcmVkIHN1cHBvcnQgZmlsZXMgVGhlcmUgaXMgZXhhY3RseSBvbmUgY2FzZSBpbiB0
aGUgZW50aXJlCisgICAgICAgICAgICAjIGNzczIuMSBzdWl0ZSB3aGVyZSBhdCB0ZXN0IGRlcGVu
ZHMgb24gYSBmaWxlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LCB3aGljaAor
ICAgICAgICAgICAgIyBkZXBlbmRzIG9uIGFub3RoZXIgZmlsZSB0aGF0IGxpdmVzIG91dHNpZGUg
b2YgaXRzIGRpcmVjdG9yeS4gVGhpcyBjb2RlIGNvdmVycyB0aGF0IGNhc2UgOikKKyAgICAgICAg
ICAgIGlmIG1hdGNoZXNbMF1bJ2hyZWYnXS5zdGFydHN3aXRoKCcuLicpOgorICAgICAgICAgICAg
ICAgIHN1cHBvcnRGaWxlcyA9IHNlbGYuZ2V0X3N1cHBvcnRfZmlsZXMoc2VsZi5yZWZfZG9jKQor
ICAgICAgICAgICAgICAgIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddID0gc3VwcG9ydEZpbGVzCisK
KyAgICAgICAgIyBOZXh0LCBpZiBpdCdzIGEgSlMgdGVzdAorICAgICAgICBlbGlmIHNlbGYuaXNf
anN0ZXN0KCk6CisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1l
LCAnanN0ZXN0JzogVHJ1ZX0KKworICAgICAgICAjIE9yIGlmIHdlIGV4cGxpY2l0bHkgd2FudCBl
dmVyeXRoaW5nCisgICAgICAgIGVsaWYgc2VsZi5vcHRpb25zWydhbGwnXSBpcyBUcnVlIGFuZCBc
CisgICAgICAgICAgICAgbm90KCctcmVmJyBpbiBzZWxmLmZpbGVuYW1lKSBhbmQgXAorICAgICAg
ICAgICAgIG5vdCgncmVmZXJlbmNlJyBpbiBzZWxmLmZpbGVuYW1lKToKKyAgICAgICAgICAgIHRl
c3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWV9CisKKyAgICAgICAgIyBDb3VydGVzeSBj
aGVjayBhbmQgd2FybmluZyBpZiB0aGVyZSBhcmUgYW55IG1pc21hdGNoZXMKKyAgICAgICAgbWlz
bWF0Y2hlcyA9IHNlbGYuZ2V0X3JlZnRlc3RzKEZhbHNlKQorICAgICAgICBpZiBsZW4obWlzbWF0
Y2hlcykgIT0gMDoKKyAgICAgICAgICAgIHByaW50ICJXYXJuaW5nOiBXZWJraXQgZG9lcyBub3Qg
c3VwcG9ydCBtaXNtYXRjaCByZWZlcmVuY2VzLiBJZ25vcmluZyBtaXNtYXRjaCBkZWZpbmVkIGlu
ICIgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZmlsZW5hbWUpCisKKyAgICAgICAgcmV0dXJuIHRl
c3RfaW5mbworCisgICAgZGVmIGdldF9yZWZ0ZXN0cyhzZWxmLCBmaW5kX21hdGNoKToKKyAgICAg
ICAgIiIiCisgICAgICAgIFNlYXJjaGVzIGZvciBhbGwgcmVmZXJlbmNlIGxpbmtzIGluIHRoZSBm
aWxlCisKKyAgICAgICAgQHBhcmFtIGZpbmRfbWF0Y2g6IEJvb2xlYW4sIFRydWUgdG8gc2VhcmNo
IGZvciBtYXRjaCBsaW5rcywgRmFsc2UgdG8gc2VhcmNoIGZvciBtaXNtYXRjaCBsaW5rcworICAg
ICAgICAiIiIKKyAgICAgICAgaWYgZmluZF9tYXRjaDoKKyAgICAgICAgICAgIHJldHVybiBzZWxm
LnRlc3RfZG9jLmZpbmRBbGwocmVsPSdtYXRjaCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICByZXR1cm4gc2VsZi50ZXN0X2RvYy5maW5kQWxsKHJlbD0nbWlzbWF0Y2gnKQorCisgICAgZGVm
IGlzX2pzdGVzdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFNlYXJjaGVzIHRoZSBmaWxl
IGZvciB1c2FnZSBvZiBXM0Mtc3R5bGUgdGVzdGhhcm5lc3MgcGF0aHMKKworICAgICAgICBAcmV0
dXJuOiBUcnVlIGlmIGZvdW5kCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnRlc3RfZG9j
LmZpbmQoc3JjPXJlLmNvbXBpbGUoJ1tcJ1wiL10/L3Jlc291cmNlcy90ZXN0aGFybmVzcycpKSBp
cyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zdXBwb3J0X2ZpbGVzKHNlbGYsIGRvYyk6
CisgICAgICAgICIiIgorICAgICAgICBTZWFyY2hlcyB0aGUgZmlsZSBmb3IgYWxsIHBhdGhzIHNw
ZWNpZmllZCBpbiB1cmwoKSdzLCBocmVmIG9yIHNyYyBhdHRyaWJ1dGVzCisKKyAgICAgICAgQHJl
dHVybjogdGhlIGxpc3Qgb2YgcGF0aHMKKyAgICAgICAgIiIiCisKKyAgICAgICAgc3VwcG9ydF9m
aWxlcyA9IFtdCisKKyAgICAgICAgaWYgZG9jIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4g
c3VwcG9ydF9maWxlcworCisgICAgICAgICMgTG9vayBmb3IgdGFncyB3aXRoIHNyYyBvciBocmVm
IGF0dHJpYnV0ZXMKKyAgICAgICAgc3JjX2F0dHJzID0gZG9jLmZpbmRBbGwoc3JjPXJlLmNvbXBp
bGUoJy4qJykpCisgICAgICAgIGhyZWZfYXR0cnMgPSBkb2MuZmluZEFsbChocmVmPXJlLmNvbXBp
bGUoJy4qJykpCisKKyAgICAgICAgIyBMb29rIGZvciB1cmxzCisgICAgICAgIHVybF9wYXR0ZXJu
ID0gcmUuY29tcGlsZSgndXJsXCguKlwpJykKKyAgICAgICAgdXJscyA9IFtdCisgICAgICAgIGZv
ciB1cmwgaW4gZG9jLmZpbmRBbGwodGV4dD11cmxfcGF0dGVybik6CisgICAgICAgICAgICB1cmwg
PSByZS5zZWFyY2godXJsX3BhdHRlcm4sIHVybCkKKyAgICAgICAgICAgIHVybCA9IHJlLnN1Yign
dXJsXChbXCdcIl0nLCAnJywgdXJsLmdyb3VwKDApKQorICAgICAgICAgICAgdXJsID0gcmUuc3Vi
KCdbXCdcIl1cKScsICcnLCB1cmwpCisgICAgICAgICAgICB1cmxzLmFwcGVuZCh1cmwpCisKKyAg
ICAgICAgc3JjX3BhdGhzID0gW3NyY190YWdbJ3NyYyddIGZvciBzcmNfdGFnIGluIHNyY19hdHRy
c10KKyAgICAgICAgaHJlZl9wYXRocyA9IFtocmVmX3RhZ1snaHJlZiddIGZvciBocmVmX3RhZyBp
biBocmVmX2F0dHJzXQorCisgICAgICAgIHBhdGhzID0gc3JjX3BhdGhzICsgaHJlZl9wYXRocyAr
IHVybHMKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgICAgICAjIElnbm9yZSBo
dHRwIGFuZCBtYWlsdG8gbGlua3MKKyAgICAgICAgICAgIGlmIG5vdChwYXRoLnN0YXJ0c3dpdGgo
J2h0dHA6JykpIGFuZCBcCisgICAgICAgICAgICAgICBub3QocGF0aC5zdGFydHN3aXRoKCdtYWls
dG86JykpOgorICAgICAgICAgICAgICAgIHN1cHBvcnRfZmlsZXMuYXBwZW5kKHBhdGgpCisKKyAg
ICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9wYXJzZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNmM1M2VlZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMzU2IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
ZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRlc3RQYXJzZXIKK2ltcG9ydCBz
eXMKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAoraW1wb3J0
IG9zCisKK29wdGlvbnMgPSB7J2FsbCc6IEZhbHNlLCAnbm9fb3ZlcndyaXRlJzogRmFsc2V9CisK
KworY2xhc3MgVGVzdFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRl
c3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2goc2VsZik6CisgICAgICAgICIiIgorICAgICAg
ICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIGJhc2ljIHJlZnRlc3Qgd2l0aAorICAgICAg
ICBvbmUgbWF0Y2ggbGluayBhbmQgbm8gbWlzbWF0Y2ggbGlua3MKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBY
SFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3ho
dG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRs
ZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiIGhyZWY9Im1haWx0
bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9
IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4t
Ym94LXJlZi54aHQiIC8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1QgQVNTRVJU
SU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitd
XT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwv
aHRtbD4KKyIiIgorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVwL3BhdGgvJworICAg
ICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdzb21lZmlsZS5o
dG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRl
bnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVjdCB0ZXN0IGluZm8g
d2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdF9pbmZvLCBOb25lLCAn
ZGlkIG5vdCBmaW5kIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4g
dGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBm
aW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9pbmZv
WydyZWZlcmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0aCksICdyZWZlcmVuY2UgcGF0aCBpcyBu
b3QgY29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRl
c3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3VwcG9ydCBmaWxlcyBmb3Ig
dGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2lu
Zm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBhbmFseXplZCBhcyBhIGpzdGVz
dCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RNdWx0aXBsZU1hdGNoZXMoc2Vs
Zik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHJl
ZnRlc3Qgd2l0aAorICAgICAgICBtdWx0aXBsZSBtYXRjaCBsaW5rcyBhbmQgbm8gbWlzbWF0Y2gg
bGlua3MKKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0
bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3
LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBE
RVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFN
RV9PRl9BVVRIT1IiIGhyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPGxpbmsg
cmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1hdGNo
IiBocmVmPSJibHVlLWJveC1yZWYueGh0IiAvPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0ib3Jh
bmdlLWJveC1yZWYueGh0IiAvPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFT
U0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKK0NTUyBGT1IgVEVT
VAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVOVCBPRiBURVNUCis8L2JvZHk+
Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBDYXB0dXJlIHN0ZG91dCBmb3IgdGhpcyB0ZXN0Cisg
ICAgICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8uU3Ry
aW5nSU8oKQorICAgICAgICBzeXMuc3Rkb3V0ID0gb3V0cHV0CisKKyAgICAgICAgIyBBbmFseXpl
IHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAg
ICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0
bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVu
dHM9dGVzdF9odG1sKQorCisgICAgICAgICMgUmVzdG9yZSBzdGRvdXQKKyAgICAgICAgc3lzLnN0
ZG91dCA9IHN0ZG91dAorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3
YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdk
aWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0
ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZp
bmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9b
J3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5v
dCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4gdGVz
dF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZvciB0
aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5m
by5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0
JykKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgdGhlIHdhcm5pbmcgYWJvdXQgbXVsdGlwbGUg
bWF0Y2hlcworICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmdldHZhbHVlKCkuc3RhcnRz
d2l0aCgnV2FybmluZycpLCAnbm8gd2FybmluZyBhYm91dCBtdWx0aXBsZSBtYXRjaGVzJykKKwor
ICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE1hdGNoQW5kTWlzbWF0Y2goc2VsZik6Cisg
ICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHJlZnRlc3Qg
d2l0aAorICAgICAgICBhIG9uZSBtYXRjaCBsaW5rIGFuZCBvbmUgbWlzbWF0Y2ggbGluaworICAg
ICAgICAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZUEUgaHRtbCBQVUJMSUMg
Ii0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RS
L3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9O
IE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhP
UiIgaHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8bGluayByZWw9Im1hdGNo
IiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJs
dWUtYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1pc21hdGNoIiBocmVmPSJvcmFuZ2UtYm94
LW5vdHJlZi54aHQiIC8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1QgQVNTRVJU
SU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitd
XT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwv
aHRtbD4KKyIiIgorICAgICAgICAjIENhcHR1cmUgc3Rkb3V0IGZvciB0aGlzIHRlc3QKKyAgICAg
ICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJ
TygpCisgICAgICAgIHN5cy5zdGRvdXQgPSBvdXRwdXQKKworICAgICAgICAjIEFuYWx5emUgdGhl
IHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAg
cGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcp
CisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10
ZXN0X2h0bWwpCisKKyAgICAgICAgIyBSZXN0b3JlIHN0ZG91dAorICAgICAgICBzeXMuc3Rkb3V0
ID0gc3Rkb3V0CisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBm
b3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ2RpZCBu
b3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGluIHRlc3Rf
aW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBh
IHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfaW5mb1sncmVm
ZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGggaXMgbm90IGNv
cnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2lu
Zm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMg
dGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtl
eXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6ZWQgYXMgYSBqc3Rlc3QnKQor
CisgICAgICAgICMgVmVyaWZ5IHdlIGdvdCBtdWx0aXBsZSB3YXJuaW5ncworICAgICAgICB3YXJu
aW5ncyA9IG91dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhsZW4od2FybmluZ3MpLCAyLCAnYWxsIHdhcm5pbmdzIHdlcmUgbm90IGRpc3BsYXll
ZCcpCisgICAgICAgICMgVmVyaWZ5IHRoZSBib3RoIHdhcm5pbmdzIG1lbnRpb24gdGhlIGlzc3Vl
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbXVsdGlwbGUgbWF0Y2hlcycsICdubyB3YXJuaW5n
IGFib3V0IG11bHRpcGxlIG1hdGNoZXMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ21pc21h
dGNoJywgJ25vIHdhcm5pbmcgYWJvdXQgbWlzbWF0Y2hlcycpCisKKyAgICBkZWYgdGVzdF9hbmFs
eXplVGVzdFJlZnRlc3RXaXRoUmVmU3VwcG9ydEZpbGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHRoYXQgaGFzIHJlZmVy
cyB0byBhCisgICAgICAgIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUgb2YgdGhlIHRlc3RzIGRpcmVj
dG9yeSBhbmQgdGhlIHJlZmVyZW5jZQorICAgICAgICBmaWxlIGhhcyBwYXRocyB0byBvdGhlciBz
dXBwb3J0IGZpbGVzCisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjwhRE9D
VFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisiaHR0
cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5DU1Mg
VGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0
bGU9Ik5BTUVfT0ZfQVVUSE9SIiBocmVmPSJtYWlsdG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1Rf
UEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJSRUxFVkFOVF9TUEVDX1NFQ1RJT04iLz4K
KzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9Ii4uL3JlZmVyZW5jZS9ncmVlbi1ib3gtcmVmLnhodCIg
Lz4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVEVTVCBBU1NFUlRJT04iLz4KKzxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1MgRk9SIFRFU1QKK11dPjwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAorPC9ib2R5PgorPC9odG1sPgorIiIiCisg
ICAgICAgIHJlZl9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBY
SFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3ho
dG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBSZWZ0ZXN0IFJlZmVyZW5jZTwvdGl0bGU+Cis8bGlu
ayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiBocmVmPSJtYWlsdG86RU1BSUwg
T1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgaHJlZj0ic3VwcG9ydC9jc3MvcmVmLXN0
eWxlc2hlZXQuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCIuLi8u
Li9zdXBwb3J0L3NvbWUtaW1hZ2UucG5nIikKK11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXY+PGltZyBzcmM9Ii4uL3N1cHBvcnQvYmxhY2s5Nng5Ni5wbmciIGFsdD0iSW1hZ2UgZG93
bmxvYWQgc3VwcG9ydCBtdXN0IGJlIGVuYWJsZWQiIC8+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CisiIiIKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcv
c29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywg
dGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIu
YW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sLCByZWZfY29udGVudHM9cmVmX2h0
bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAor
ICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ2RpZCBub3QgZmlu
ZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGluIHRlc3RfaW5mby5r
ZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHJlZmVy
ZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfaW5mb1sncmVmZXJlbmNl
J10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGggaXMgbm90IGNvcnJlY3Qn
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlz
KCksICd0aGVyZSBzaG91bGQgYmUgcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKHRlc3RfaW5mb1sncmVmc3VwcG9ydCddKSwgMywg
J3RoZXJlIHNob3VsZCBiZSAzIHN1cHBvcnQgZmlsZXMgaW4gdGhpcyByZWZlcmVuY2UnKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0JykKKworICAgIGRlZiB0
ZXN0X2FuYWx5emVKU1Rlc3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFs
eXplX3Rlc3QoKSB1c2luZyBhIGpzdGVzdAorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X2h0
bWwgPSAiIiI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJp
Y3QvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5k
dGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+
Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVs
PSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhPUiIKK2hyZWY9Im1haWx0bzpFTUFJTCBPUiBo
dHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQ
RUNfU0VDVElPTiIvPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJU
RVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKK0NTUyBG
T1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVOVCBPRiBURVNUCis8
L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAg
IHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQ
YXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0
X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisg
ICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9uZScp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2Rp
ZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZmVy
ZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVmZXJl
bmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0
X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRo
aXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8u
a2V5cygpLCAndGVzdCBzaG91bGQgYmUgYSBqc3Rlc3QnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6
ZVBpeGVsVGVzdEFsbFRydWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFs
eXplX3Rlc3QoKSB1c2luZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rl
c3Qgd2l0aCBhbGw9RmFsc2UKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBCYXNpYyB0ZXN0IGNv
bnRlbnQgdXNpbmcgYWxsIHRocmVlIHRlc3RoYXJuZXNzIGZpbGVzCisgICAgICAgIHRlc3RfaHRt
bCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmlj
dC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0
ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4K
Kzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9
ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0
dHA6Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BF
Q19TRUNUSU9OIi8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1QgQVNTRVJUSU9O
Ii8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRt
bD4KKyIiIgorICAgICAgICAjIFNldCBvcHRpb25zIHRvICdhbGwnIHNvIHRoaXMgZ2V0cyBmb3Vu
ZAorICAgICAgICBvcHRpb25zWydhbGwnXSA9IFRydWUKKworICAgICAgICAjIEFuYWx5emUgdGhl
IHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAg
cGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcp
CisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10
ZXN0X2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBm
b3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ3Rlc3Rf
aW5mbyBpcyBOb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2lu
Zm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnc2hvbGQgbm90IGhhdmUg
Zm91bmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZnN1
cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3VwcG9y
dCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0
JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGJlIGEganN0ZXN0JykKKwor
ICAgIGRlZiB0ZXN0X2FuYWx5emVQaXhlbFRlc3RBbGxGYWxzZShzZWxmKToKKyAgICAgICAgIiIi
CisgICAgICAgIFRlc3RzIGFuYWx5emVfdGVzdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGlzIG5laXRo
ZXIgYSByZWZ0ZXN0IG9yIGpzdGVzdCwgd2l0aCAtYWxsPUZhbHNlCisgICAgICAgICIiIgorCisg
ICAgICAgICMgQmFzaWMgdGVzdCBjb250ZW50IHVzaW5nIGFsbCB0aHJlZSB0ZXN0aGFybmVzcyBm
aWxlcworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1cz
Qy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1s
MS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9OIE9GIFRF
U1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhPUiIKK2hy
ZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJURVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFU
QVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVOVCBP
RiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBTZXQgYWxsIHRvIGZhbHNl
IHNvIHRoaXMgZ2V0cyBza2lwcGVkCisgICAgICAgIG9wdGlvbnNbJ2FsbCddID0gRmFsc2UKKwor
ICAgICAgICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21h
ZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3Bh
dGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXpl
X3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNv
cnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rf
aW5mbywgTm9uZSwgJ3Rlc3Qgc2hvdWxkIGhhdmUgYmVlbiBza2lwcGVkJykKKworICAgIGRlZiB0
ZXN0X2FuYWx5emVOb25IVE1MRmlsZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Rz
IGFuYWx5emVfdGVzdCgpIHdpdGggYSBmaWxlIHRoaXMgaXNuJ3QgaHRtbCAodGhpcyBvbmUhKQor
ICAgICAgICAiIiIKKworICAgICAgICAjIFRyeSB0byBhbmFseXplIHRoZSBzY3JpcHQgZmlsZSB3
ZSdyZSB0ZXN0aW5nIChob3cgbWV0YSkKKyAgICAgICAgdGVzdF9wYXJzZXJfcHlfZmlsZSA9IG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAndGVzdF9wYXJzZXIucHknKQor
CisgICAgICAgICMgQW5hbHl6ZSB0aGUgZmlsZQorICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2Vy
KG9wdGlvbnMsIHRlc3RfcGFyc2VyX3B5X2ZpbGUpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNl
ci5hbmFseXplX3Rlc3QoKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5m
byB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdu
byB0ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGZvdW5kIGluIHRoaXMgZmlsZScpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194324</attachid>
            <date>2013-03-21 13:31:10 -0700</date>
            <delta_ts>2013-05-01 18:31:37 -0700</delta_ts>
            <desc>Now ready for review</desc>
            <filename>bug111513.patch</filename>
            <type>text/plain</type>
            <size>86245</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Yzgx
NjhiLi41YmI5NTc4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisyMDEzLTAzLTIxICBSZWJlY2NhIEhhdWNrICA8cmhh
dWNrQGFkb2JlLmNvbT4KKworICAgICAgICBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGlyZWN0b3J5
IG9mIFczQyBDU1MgdGVzdHMgaW50byBXZWJLaXQuCisgICAgICAgIAorICAgICAgICBZb3UgbXVz
dCBoYXZlIGNoZWNrZWQgbG9nIHRoZSBXM0MgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZl
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBzY3JpcHQgd2lsbCBpbXBvcnQgdGhlIHRlc3RzIGlu
dG8gV2ViS2l0IGZvbGxvd2luZyB0aGVzZSBydWxlczoKKworICAgICAgICAtIE9ubHkgdGVzdHMg
dGhhdCBhcmUgYXBwcm92ZWQgb3Igb2ZmaWNpYWxseSBzdWJtaXR0ZWQgYXdhaXRpbmcgcmV2aWV3
IGFyZSBpbXBvcnRlZAorICAgICAgICAKKyAgICAgICAgLSBBbGwgdGVzdHMgYXJlIGltcG9ydGVk
IGludG8gTGF5b3V0VGVzdHMvY3Nzd2cKKyAgICAgICAgCisgICAgICAgIC0gSWYgdGhlIHRlc3Rz
IGFyZSBhcHByb3ZlZCwgdGhleSdsbCBiZSBpbXBvcnRlZCBpbnRvIGEgZGlyZWN0b3J5IHRyZWUg
dGhhdAorICAgICAgICAgIG1pcnJvcnMgdGhlIENTUyBNZXJjdXJpYWwgcmVwby4gRm9yIGV4YW1w
bGUsIDxjc3N3Z19yZXBvX3Jvb3Q+L2FwcHJvdmVkL2NzczIuMSBpcyBicm91Z2h0IGluICAgICAg
ICAgICAgICAgIAorICAgICAgICAgIGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVkL2NzczIu
MSwgbWFpbnRhaW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVyIHRoYXQK
KyAgICAgICAgCisgICAgICAgIC0gSWYgdGhlIHRlc3RzIGFyZSBzdWJtaXR0ZWQsIHRoZXknbGwg
YmUgYnJvdWdodCBpbiBhcyBMYXlvdXRUZXN0cy9jc3N3Zy9zdWJtaXR0ZWQgYW5kIHdpbGwgYWxz
bworICAgICAgICAgIG1haW50YWluIHRoZWlyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgdGhh
dC4gRm9yIGV4YW1wbGUsIGV2ZXJ5dGhpbmcgdW5kZXIKKyAgICAgICAgICA8Y3Nzd2dfcmVwb19y
b290Pi9jb250cmlidXRvcnMvYWRvYmUvc3VibWl0dGVkIGlzIGJyb3VnaHQgaW50byBzdWJtaXR0
ZWQsIG1pcnJvcmluZyBpdHMgCisgICAgICAgICAgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbiB0aGUg
Y3Nzd2cgcmVwbworCisgICAgICAgIC0gSWYgdGhlIGltcG9ydCBkaXJlY3Rvcnkgc3BlY2lmaWVk
IGlzIGp1c3QgYSBjb250cmlidXRvciBmb2xkZXIsIG9ubHkgdGhlIHN1Ym1pdHRlZCBmb2xkZXIK
KyAgICAgICAgICBmb3IgdGhhdCBjb250cmlidXRvciBpcyBicm91Z2h0IGluLiBGb3IgZXhhbXBs
ZSwgdG8gaW1wb3J0IGFsbCBvZiBNb3ppbGxhJ3MgdGVzdHMsIGVpdGhlcgorICAgICAgICAgIDxj
c3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9tb3ppbGxhIG9yIDxjc3N3Z19yZXBvX3Jvb3Q+
L2NvbnRyaWJ1dG9ycy9tb3ppbGxhL3N1Ym1pdHRlZAorICAgICAgICAgIHdpbGwgd29yayBhbmQg
YXJlIGVxdWl2YWxlbnQKKyAgICAgICAgCisgICAgICAgIC0gRm9yIHRoZSB0aW1lIGJlaW5nLCB0
aGlzIHNjcmlwdCB3b24ndCB3b3JrIGlmIHlvdSB0cnkgdG8gaW1wb3J0IHRoZSBmdWxsIHNldCBv
ZiBzdWJtaXR0ZWQKKyAgICAgICAgICB0ZXN0cyB1bmRlciBjb250cmlidXRvcnMvKi9zdWJtaXR0
ZWQuIFNpbmNlIHRoZXNlIGFyZSBhd2FpdGluZyByZXZpZXcsIHRoaXMgaXMganVzdCBhIHNtYWxs
CisgICAgICAgICAgY29udHJvbCBtZWNoYW5pc20gdG8gZW5mb3JjZSBjYXJlZnVsbHkgc2VsZWN0
aW5nIHdoYXQgbm9uLWFwcHJvdmVkIHRlc3RzIGFyZSBpbXBvcnRlZC4KKyAgICAgICAgICBJdCBj
YW4gb2J2aW91c2x5IGFuZCBlYXNpbHkgYmUgY2hhbmdlZC4KKworICAgICAgICAtIEJ5IGRlZmF1
bHQsIG9ubHkgcmVmdGVzdHMgYW5kIGpzdGVzdCBhcmUgaW1wb3J0ZWQuIFRoaXMgY2FuIGJlIG92
ZXJyaWRkZW4gd2l0aCBhIC1hIG9yIC0tYWxsCisgICAgICAgICAgYXJndW1lbnQKKworICAgICAg
ICAtIEFsc28gYnkgZGVmYXVsdCwgaWYgdGVzdCBmaWxlcyBieSB0aGUgc2FtZSBuYW1lIGFscmVh
ZHkgZXhpc3QgaW4gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSwKKyAgICAgICAgICB0aGV5IGFy
ZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBpZGVhIHRoYXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3Vs
ZCByZWZyZXNoIGZpbGVzIHBlcmlvZGljYWxseS4KKyAgICAgICAgICBUaGlzIGNhbiBhbHNvIGJl
IG92ZXJyaWRkZW4gYnkgYSAtbiBvciAtLW5vLW92ZXJ3cml0ZSBmbGFnCisKKyAgICAgICAgLSBB
bGwgZmlsZXMgYXJlIGNvbnZlcnRlZCB0byB3b3JrIGluIFdlYktpdDoKKyAgICAgICAgICAgIDEu
IC54aHQgZXh0ZW5zaW9ucyBhcmUgY2hhbmdlZCB0byAueGh0bWwgdG8gbWFrZSBuZXctcnVuLXdl
YmtpdC10ZXN0cyBoYXBweQorICAgICAgICAgICAgMi4gUGF0aHMgdG8gdGVzdGhhcm5lc3MuanMg
ZmlsZXMgYXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbgorICAg
ICAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNvcnJlY3QgcmVs
YXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KKyAgICAgICAgICAgIDMuIEFsbCBDU1Mg
cHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtdmVuZG9yIHByZWZpeCBhcmUgcHJlZml4
ZWQgLSB0aGlzIGN1cnJlbnQKKyAgICAgICAgICAgICAgIGxpc3Qgb2Ygd2hhdCBuZWVkcyBwcmVm
aXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnRpZXMuaW4KKyAg
ICAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5IG9mIGl0cyByZWZlcmVu
Y2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucworICAgICAgICAgICAgICAg
bmV3LXJ1bi13ZWJraXQtdGVzdHMgZXhwZWN0cworICAgICAgICAgICAgNS4gSWYgYSBhIHJlZmVy
ZW5jZSBmaWxlcyBsaXZlcyBvdXRzaWRlIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHRlc3QgdGhhdCB1
c2VzIGl0LCBpdCBpcyBjaGVja2VkCisgICAgICAgICAgICAgICBmb3IgcGF0aHMgdG8gc3VwcG9y
dCBmaWxlcyBhcyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQgcmVsYXRpdmUg
cG9zaXRpb24gdG8gdGhlCisgICAgICAgICAgICAgICB0ZXN0IGZpbGUgKGluIHRoZSBzYW1lIGRp
cmVjdG9yeSkKKyAgICAgICAgCisgICAgICAgIC0gVXBvbiBjb21wbGV0aW9uLCBzY3JpcHQgZGlz
cGxheXMgdGhlIHRvdGFsIG51bWJlciB0ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVz
dCB0eXBlCisKKyAgICAgICAgLSBBbHNvIHVwb24gY29tcGxldGlvbiwgZWFjaCBkaXJlY3Rvcnkg
d2hlcmUgZmlsZXMgYXJlIGltcG9ydGVkIHdpbGwgaGF2ZSB3M2MtaW1wb3J0LmxvZyB3cml0dGVu
CisgICAgICAgICAgd2l0aCBhIHRpbWVzdGFtcCwgdGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0
IGlmIGF2YWlsYWJsZSwgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0aGF0CisgICAg
ICAgICAgcmVxdWlyZSBwcmVmaXhlcywgdGhlIGxpc3Qgb2YgaW1wb3J0ZWQgZmlsZXMsIGFuZCBn
dWlkYW5jZSBmb3IgZnV0dXJlIHRlc3QgbW9kaWZpY2F0aW9uIGFuZAorICAgICAgICAgIG1haW50
ZW5hbmNlLgorCisgICAgICAgIC0gT24gc3Vic2VxdWVudCBpbXBvcnRzLCB0aGlzIGZpbGUgaXMg
cmVhZCB0byBkZXRlcm1pbmUgaWYgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5ld2Vy
IGNoYW5nZXNldHMuCisgICAgICAgICAgVGhlIHNjcmlwdCByZW1vdmVzIHRoZXNlIGZpbGVzIGFj
Y29yZGluZ2x5LgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRlc3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1MTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvaW1wb3J0LXczYy10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93
M2MvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfY29udmVydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIpOgorICAgICAg
ICAoVGVzdENvbnZlcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0Q29udmVydGVyLmxvYWRf
cHJlZml4ZWRfcHJvcF9saXN0KToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIubG9hZF9maWxlKToK
KyAgICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KToKKyAgICAgICAgKFRl
c3RDb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyk6CisgICAgICAgIChUZXN0Q29u
dmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgIChUZXN0Q29udmVy
dGVyLnNjcnViX3VucHJlZml4ZWRfcHJvcHMpOgorICAgICAgICAoVGVzdENvbnZlcnRlci5yZXBs
YWNlX3RhZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QpOgorICAgICAg
ICAoVGVzdENvbnZlcnRlclRlc3QudGVzdExvYWRQcmVmaXhlZFByb3BMaXN0KToKKyAgICAgICAg
KFRlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfY29udmVydEZvcldlYmtpdE5vdGhpbmdUb0NvbnZlcnQp
OgorICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkpOgorICAgICAgICAo
dGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNPbmx5KToKKyAgICAgICAgKHRlc3RfY29udmVydEZv
cldlYmtpdEhhcm5lc3NBbmRQcm9wcyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRUZXN0SGFybmVz
c1BhdGhzKToKKyAgICAgICAgKHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGllcyk6CisgICAg
ICAgICh2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHZlcmlmeVByZWZpeGVkUHJv
cGVydGllcyk6CisgICAgICAgIChnZW5lcmF0ZVRlc3RDb250ZW50KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKG1haW4p
OgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgICh2YWxpZGF0ZV9pbXBvcnRfZGlyZWN0
b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlcik6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuX19p
bml0X18pOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6CisgICAgICAgIChUZXN0
SW1wb3J0ZXIuZ2V0X2NoYW5nZXNldCk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuc2Nhbl9zb3Vy
Y2VfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVzdHMpOgorICAg
ICAgICAoVGVzdEltcG9ydGVyLnNldHVwX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeSk6CisgICAgICAg
IChUZXN0SW1wb3J0ZXIuZ2V0X3Rlc3Rfc3RhdHVzKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5y
ZW1vdmVfZGVsZXRlZF9maWxlcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3JpdGVfaW1wb3J0
X2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0
dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0KToKKyAgICAgICAgKFRl
c3RJbXBvcnRlclRlc3QudGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6IEFkZGVkLgorICAgICAgICAoVGVzdFBh
cnNlcik6CisgICAgICAgIChUZXN0UGFyc2VyLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RQYXJz
ZXIubG9hZF9maWxlKToKKyAgICAgICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0KToKKyAgICAg
ICAgKFRlc3RQYXJzZXIuZ2V0X3JlZnRlc3RzKToKKyAgICAgICAgKFRlc3RQYXJzZXIuaXNfanN0
ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3N1cHBvcnRfZmlsZXMpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAg
ICAgICAgKFRlc3RQYXJzZXJUZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0LnRlc3RfYW5h
bHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2gpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJlZnRl
c3RNdWx0aXBsZU1hdGNoZXMpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJlZnRlc3RNYXRj
aEFuZE1pc21hdGNoKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0V2l0aFJlZlN1
cHBvcnRGaWxlcyk6CisgICAgICAgICh0ZXN0X2FuYWx5emVKU1Rlc3QpOgorICAgICAgICAodGVz
dF9hbmFseXplUGl4ZWxUZXN0QWxsVHJ1ZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVQaXhlbFRl
c3RBbGxGYWxzZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVOb25IVE1MRmlsZSk6CisKIDIwMTMt
MDMtMjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtX
aW5DYWlyb10gVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFRlc3RXZWJLaXRBUEkgdW5kZXIgVlMy
MDEwCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgYi9Ub29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MC4uYTk4NzdiYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cwpAQCAtMCwwICsxLDMxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHB5
LnczYyBpbXBvcnQgdGVzdF9pbXBvcnRlcgorCisKK3N5cy5leGl0KHRlc3RfaW1wb3J0ZXIubWFp
bihzeXMuYXJndlsxOl0sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3czYy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
NjlkZTI5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZl
cnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NTNkZmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQpAQCAtMCww
ICsxLDI0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBp
bXBvcnQgQmVhdXRpZnVsU291cCBhcyBQYXJzZXIKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5C
ZWF1dGlmdWxTb3VwIGltcG9ydCBUYWcKK2ltcG9ydCByZQoraW1wb3J0IG9zCisKK1NPVVJDRV9T
VUJESVIgPSAnU291cmNlJworV0VCQ09SRV9TVUJESVIgPSAnV2ViQ29yZScKK0NTU19TVUJESVIg
PSAnY3NzJworQ1NTX1BST1BFUlRZX05BTUVTX0lOID0gJ0NTU1Byb3BlcnR5TmFtZXMuaW4nCitM
QVlPVVRfVEVTVFNfRElSRUNUT1JZID0gJ0xheW91dFRlc3RzJworUkVTT1VSQ0VTX0RJUkVDVE9S
WSA9ICdyZXNvdXJjZXMnCitXRUJLSVRfUk9PVCA9IF9fZmlsZV9fLnNwbGl0KG9zLnBhdGguc2Vw
ICsgJ1Rvb2xzJylbMF0KKworCitjbGFzcyBUZXN0Q29udmVydGVyKG9iamVjdCk6CisKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisKKyAgICAgICAgc2VsZi5wcmVmaXhlZF9wcm9wZXJ0aWVzID0g
c2VsZi5sb2FkX3ByZWZpeGVkX3Byb3BfbGlzdCgpCisKKyAgICBkZWYgbG9hZF9wcmVmaXhlZF9w
cm9wX2xpc3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZWFkcyB0aGUgY3VycmVudCBs
aXN0IG9mIENTUyBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUKKyAgICAgICAgLXdlYmtpdC0gcHJl
Zml4IGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnR5TmFtZXMuaW4gYW5kCisgICAg
ICAgIHN0b3JlcyB0aGVtIGluIGFuIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgICIiIgorCisg
ICAgICAgIHByZWZpeGVkX3Byb3BfbGlzdCA9IFtdCisKKyAgICAgICAgIyBPcGVuIENTU1Byb3Bl
cnR5TmFtZXMuaW4gdG8gZ2V0IHRoZSBjdXJyZW50IGxpc3Qgb2YgdGhpbmdzIHJlcXVpcmluZyBw
cmVmaXhlcworICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIFdFQktJ
VF9ST09ULCBTT1VSQ0VfU1VCRElSLCBXRUJDT1JFX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NfU1VCRElSLCBDU1NfUFJPUEVSVFlfTkFNRVNf
SU4pKQorICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgZm9yIGxpbmUgaW4g
bGluZXM6CisgICAgICAgICAgICAjIExvb2sgZm9yIGFueXRoaW5nIHdpdGggdGhlIC13ZWJraXQt
IHByZWZpeAorICAgICAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ14td2Via2l0LVtcd3wtXSon
LCBsaW5lKQorICAgICAgICAgICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg
ICAgIyBJZ25vcmUgdGhlIG9uZXMgd2hlcmUgYm90aCB0aGUgcHJlZml4ZWQgYW5kIG5vbi1wcmVm
aXhlZCBwcm9wZXJ0eQorICAgICAgICAgICAgICAgICMgYXJlIHN1cHBvcnRlZCAtIGRlbm90ZWQg
YnkgLXdlYmtpdC1zb21lLXByb3BlcnR5ID0gc29tZS1wcm9wZXJ0eQorICAgICAgICAgICAgICAg
IGlmIGxlbihsaW5lLnNwbGl0KCc9JykpID09IDIgYW5kIFwKKyAgICAgICAgICAgICAgICAgICBs
aW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKSBpbiBsaW5lLnNwbGl0KCc9JylbMF0uc3RyaXAoKToK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wX2xpc3QuYXBwZW5kKG1hdGNoLmdyb3VwKDAp
KQorCisgICAgICAgIHJldHVybiBwcmVmaXhlZF9wcm9wX2xpc3QKKworICAgIGRlZiBsb2FkX2Zp
bGUoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgT3BlbnMgdGhlIHRlc3Qg
ZmlsZSB0byBjb252ZXJ0CisKKyAgICAgICAgQHJldHVybjogdGhlIGNvbnRlbnRzIG9mIHRoZSBm
aWxlIGFzIGEgc3RyaW5nCisgICAgICAgICIiIgorCisgICAgICAgIGYgPSBvcGVuKGZpbGVuYW1l
KQorICAgICAgICBjb250ZW50cyA9IGYucmVhZCgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAg
ICAgIHJldHVybiBjb250ZW50cworCisgICAgZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChzZWxmLCBu
ZXdfcGF0aCwgY29udGVudHM9Tm9uZSwgZmlsZW5hbWU9Tm9uZSk6CisgICAgICAgICIiIgorICAg
ICAgICBDb252ZXJ0cyBhIHRlc3QgZmlsZSBzbyBpdCB3aWxsIGZ1bmN0aW9uIGNvcnJlY3RseSBp
biBXZWJraXQKKworICAgICAgICBAcGFyYW0gbmV3X3BhdGg6IHRoZSBuZXcgbG9jYXRpb24gb2Yg
d2hlcmUgdGhlIHRlc3QgZmlsZSB3aWxsIGxpdmUKKyAgICAgICAgQHBhcmFtIGNvbnRlbnRzOiB0
aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXMgYSBzdHJpbmcuIElmIG5vdCBzcGVjZmllZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29udGVudHMgd2lsbCBiZSBsb2FkZWQgd2l0aCBs
b2FkX2ZpbGUoKQorCisgICAgICAgIEByZXR1cm46IFR1cGxlIChsaXN0IG9mIENTUyBwcm9wZXJ0
aWVzIGNvbnZlcnRlZCwgdGhlIG1vZGlmaWVkIGRvY3VtZW50IGFzIGEgc3RyaW5nKQorICAgICAg
ICAgICAgICAgICBSZXR1cm5zIE5vbmUgaWYgbm8gbW9kaWZpY2F0aW9ucyB3ZXJlIG1hZGUKKyAg
ICAgICAgIiIiCisKKyAgICAgICAgaWYgY29udGVudHMgaXMgTm9uZSBhbmQgZmlsZW5hbWUgaXMg
Tm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgY29udGVudHMgaXMg
Tm9uZToKKyAgICAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5sb2FkX2ZpbGUoZmlsZW5hbWUpCisK
KyAgICAgICAgIyBIYW5kbGUgcGxhaW4gb2xkIENTUyBmaWxlcworICAgICAgICBpZiBmaWxlbmFt
ZS5lbmRzd2l0aCgnLmNzcycpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2NydWJfdW5wcmVm
aXhlZF9wcm9wcyhjb250ZW50cykKKworICAgICAgICAjIE90aGVyd2lzZSwgcGFyc2UgaXQgYXMg
aWYgSFRNTAorICAgICAgICBkb2MgPSBQYXJzZXIoY29udGVudHMpCisgICAgICAgIGpzdGVzdCA9
IHNlbGYuY29udmVydF90ZXN0aGFybmVzc19wYXRocyhkb2MsIG5ld19wYXRoKQorICAgICAgICBj
b252ZXJ0ZWQgPSBzZWxmLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhkb2MpCisKKyAgICAg
ICAgaWYgbGVuKGNvbnZlcnRlZFswXSkgPiAwIG9yIGpzdGVzdCBpcyBUcnVlOgorICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRlZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKworICAgIGRlZiBjb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKHNlbGYsIGRvYywgbmV3X3Bh
dGgpOgorICAgICAgICAiIiIKKyAgICAgICAgU2VhcmNoZXMgYSBkb2N1bWVudCBmb3IgVzNDLXN0
eWxlIHBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZpbGVzCisgICAgICAgIGFuZCBtb2RpZmllcyB0
aGVtIHRvIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbiBMYXlvdXRUZXN0cy9yZXNv
dXJjZXMKKworICAgICAgICBAcGFyYW0gZG9jOiBhIEJlYXV0aWZ1bFNvdXAgZG9jdW1lbnQKKyAg
ICAgICAgQHBhcmFtIG5ld19wYXRoOiB0aGUgbmV3IGxvY2F0aW9uIG9mIHdoZXJlIHRoZSB0ZXN0
IGZpbGUgd2lsbCBsaXZlCisKKyAgICAgICAgQHJldHVybiBUcnVlIGlmIGNoYW5nZXMgd2VyZSBt
YWRlCisgICAgICAgICIiIgorCisgICAgICAgICMgTG9vayBmb3IgdGhlIFczQy1zdHlsZSBwYXRo
IHRvIGFueSB0ZXN0aGFybmVzcyBmaWxlcyAtIHNjcmlwdHMgKC5qcykgb3IgbGlua3MgKC5jc3Mp
CisgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykK
KyAgICAgICAgc2NyaXB0X3RhZ3MgPSBkb2MuZmluZEFsbChzcmM9cGF0dGVybikKKyAgICAgICAg
bGlua190YWdzID0gZG9jLmZpbmRBbGwoaHJlZj1wYXR0ZXJuKQorICAgICAgICB0ZXN0aGFybmVz
c190YWdzID0gc2NyaXB0X3RhZ3MgKyBsaW5rX3RhZ3MKKworICAgICAgICBpZiBsZW4odGVzdGhh
cm5lc3NfdGFncykgIT0gMDoKKworICAgICAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIHJlbGF0aXZl
IHBhdGggZnJvbSB0aGUgbmV3IGRpcmVjdG9yeSB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAg
ICAgICAgICAgIHJlc291cmNlc19wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBXRUJL
SVRfUk9PVCwgTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwgUkVTT1VSQ0VTX0RJUkVDVE9SWSkKKyAg
ICAgICAgICAgIHJlc291cmNlc19yZWxwYXRoID0gb3MucGF0aC5yZWxwYXRoKHJlc291cmNlc19w
YXRoLCBuZXdfcGF0aCkKKworICAgICAgICAgICAgZm9yIHRhZyBpbiB0ZXN0aGFybmVzc190YWdz
OgorICAgICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgdGFnIHdpdGggdGhlIGNvcnJlY3QgcGF0
aAorICAgICAgICAgICAgICAgIGF0dHIgPSAnc3JjJworICAgICAgICAgICAgICAgIGlmIHRhZy5u
YW1lICE9ICdzY3JpcHQnOgorICAgICAgICAgICAgICAgICAgICBhdHRyID0gJ2hyZWYnCisKKyAg
ICAgICAgICAgICAgICAjIEJ1aWxkIGEgbmV3IHRhZyB3aXRoIHRoZSBjb3JyZWN0IHJlbGF0aXZl
IHBhdGgKKyAgICAgICAgICAgICAgICBvbGRfcGF0aCA9IHRhZ1thdHRyXQorICAgICAgICAgICAg
ICAgIG5ld190YWcgPSBUYWcoZG9jLCB0YWcubmFtZSwgdGFnLmF0dHJzKQorICAgICAgICAgICAg
ICAgIG5ld190YWdbYXR0cl0gPSByZS5zdWIocGF0dGVybiwgcmVzb3VyY2VzX3JlbHBhdGggKyAn
L3Rlc3RoYXJuZXNzJywgb2xkX3BhdGgpCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUg
ZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFnKGRv
YywgdGFnLCBuZXdfdGFnKQorCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgY29udmVydF9wcmVmaXhlZF9w
cm9wZXJ0aWVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIgorICAgICAgICBTZWFyY2hlcyBhIGRv
Y3VtZW50IGZvciBhbnkgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVm
aXgKKyAgICAgICAgYW5kIGNvbnZlcnRzIHRoZW0gdG8gdGhlIHByZWZpeGVkIHZlcnNpb24KKwor
ICAgICAgICBAcGFyYW0gZG9jOiBhIEJlYXV0aWZ1bFNvdXAgZG9jdW1lbnQKKworICAgICAgICBA
cmV0dXJuOiBUdXBsZSAtIChsaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGNvbnZlcnRlZCwgdGhlIG1v
ZGlmaWVkIGRvY3VtZW50IGFzIGEgc3RyaW5nKQorICAgICAgICAiIiIKKworICAgICAgICBjb252
ZXJ0ZWRfcHJvcHMgPSBbXQorCisgICAgICAgICMgTG9vayBmb3IgaW5saW5lIGFuZCBkb2N1bWVu
dCBzdHlsZXMKKyAgICAgICAgaW5saW5lX3N0eWxlcyA9IGRvYy5maW5kQWxsKHN0eWxlPXJlLmNv
bXBpbGUoJy4qJykpCisgICAgICAgIHN0eWxlX3RhZ3MgPSBkb2MuZmluZEFsbCgnc3R5bGUnKQor
ICAgICAgICBhbGxfc3R5bGVzID0gaW5saW5lX3N0eWxlcyArIHN0eWxlX3RhZ3MKKworICAgICAg
ICBmb3IgdGFnIGluIGFsbF9zdHlsZXM6CisKKyAgICAgICAgICAgICMgR2V0IHRoZSB0ZXh0IHdo
ZXRoZXIgaW4gYSBzdHlsZSB0YWcgb3Igc3R5bGUgYXR0cmlidXRlCisgICAgICAgICAgICBzdHls
ZV90ZXh0ID0gJycKKyAgICAgICAgICAgIGlmIHRhZy5uYW1lID09ICdzdHlsZSc6CisgICAgICAg
ICAgICAgICAgaWYgbGVuKHRhZy5jb250ZW50cykgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzdHls
ZV90ZXh0ID0gdGFnLmNvbnRlbnRzWzBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHN0eWxlX3RleHQgPSB0YWdbJ3N0eWxlJ10KKworICAgICAgICAgICAgIyBTY3J1YiBpdCBm
b3IgcHJvcHMgcmVxdWlyaW5nIHByZWZpeGVzCisgICAgICAgICAgICBzY3J1YmJlZF9zdHlsZSA9
IHNlbGYuc2NydWJfdW5wcmVmaXhlZF9wcm9wcyhzdHlsZV90ZXh0KQorCisgICAgICAgICAgICAj
IFJld3JpdGUgdGFnIG9ubHkgaWYgY2hhbmdlcyB3ZXJlIG1hZGUKKyAgICAgICAgICAgIGlmIGxl
bihzY3J1YmJlZF9zdHlsZVswXSkgPiAwOgorICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9wcm9w
cy5leHRlbmQoc2NydWJiZWRfc3R5bGVbMF0pCisKKyAgICAgICAgICAgICAgICAjIEJ1aWxkIGEg
bmV3IHRhZyB3aXRoIHRoZSBtb2RpZmllZCB0ZXh0CisgICAgICAgICAgICAgICAgbmV3X3RhZyA9
IFRhZyhkb2MsIHRhZy5uYW1lLCB0YWcuYXR0cnMpCisgICAgICAgICAgICAgICAgbmV3X3RhZy5p
bnNlcnQoMCwgc2NydWJiZWRfc3R5bGVbMV0pCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0
aGUgZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFn
KGRvYywgdGFnLCBuZXdfdGFnKQorCisgICAgICAgIHJldHVybiAoY29udmVydGVkX3Byb3BzLCBk
b2MucHJldHRpZnkoKSkKKworICAgIGRlZiBzY3J1Yl91bnByZWZpeGVkX3Byb3BzKHNlbGYsIHRl
eHQpOgorICAgICAgICAiIiIKKyAgICAgICAgU2VhcmNoZXMgYSBzdHJpbmcgZm9yIGluc3RhbmNl
cyBvZiBwcm9wZXJ0aWVzIHRoYXQKKyAgICAgICAgcmVxdWlyZSB0aGUgLXdlYmtpdC0gcHJlZml4
IGFuZCBhZGRzIHRoZSBwcmVmaXgKKworICAgICAgICBAcGFyYW0gdGV4dDogdGhlIHN0cmluZyB0
byBzZWFyY2gKKworICAgICAgICBAcmV0dXJuOiBUdXBsZSAobGlzdCBvZiBDU1MgcHJvcGVydGll
cyBjb252ZXJ0ZWQsIHRoZSBtb2RpZmllZCBzdHJpbmcpCisgICAgICAgICIiIgorCisgICAgICAg
IGNvbnZlcnRlZF9wcm9wcyA9IFtdCisKKyAgICAgICAgIyBTcGluIHRocm91Z2ggdGhlIHdob2xl
IGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVydGllcworICAgICAgICBmb3IgcHJlZml4ZWRfcHJvcCBp
biBzZWxmLnByZWZpeGVkX3Byb3BlcnRpZXM6CisKKyAgICAgICAgICAgICMgUHVsbCB0aGUgcHJl
Zml4IG9mZgorICAgICAgICAgICAgdW5wcmVmaXhlZF9wcm9wID0gcHJlZml4ZWRfcHJvcC5yZXBs
YWNlKCctd2Via2l0LScsICcnKQorCisgICAgICAgICAgICAjIExvb2sgZm9yIHRoZSB2YXJpb3Vz
IHdheXMgaXQgbWlnaHQgYmUgaW4gdGhlIENTUworICAgICAgICAgICAgIyBNYXRjaCB0aGUgdGhl
IHByb3BlcnR5IHByZWNlZGVkIGJ5IGVpdGhlciB3aGl0ZXNwYWNlIG9yIGxlZnQgY3VybHkgYnJh
Y2UKKyAgICAgICAgICAgICMgb3IgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIChmb3Ig
aW5saW5lIHN0eWxlIGF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHBhdHRlcm4gPSAnKFtcc3tdfF4p
JyArIHVucHJlZml4ZWRfcHJvcCArICcoXHMrOnw6KScKKyAgICAgICAgICAgIGlmIHJlLnNlYXJj
aChwYXR0ZXJuLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwcmludCAnY29udmVydGluZyAnICsg
dW5wcmVmaXhlZF9wcm9wICsgJyAtPiAnICsgcHJlZml4ZWRfcHJvcAorICAgICAgICAgICAgICAg
IGNvbnZlcnRlZF9wcm9wcy5hcHBlbmQocHJlZml4ZWRfcHJvcCkKKyAgICAgICAgICAgICAgICB0
ZXh0ID0gcmUuc3ViKHBhdHRlcm4sIHByZWZpeGVkX3Byb3AgKyAnOicsIHRleHQpCisKKyAgICAg
ICAgIyBUT0RPOiBIYW5kbGUgdGhlIEpTIHZlcnNpb25zIG9mIHRoZXNlIHByb3BlcnRpZXMsIHRv
by4KKworICAgICAgICByZXR1cm4gKGNvbnZlcnRlZF9wcm9wcywgdGV4dCkKKworICAgIGRlZiBy
ZXBsYWNlX3RhZyhzZWxmLCBkb2MsIG9sZF90YWcsIG5ld190YWcpOgorICAgICAgICAiIiIKKyAg
ICAgICAgSW5zZXJ0cyBhIG5ldyB0YWcgaW50byBhIEJlYXV0aWZ1bFNvdXAgZG9jIGFuZCByZW1v
dmVzIHRoZSBvbGQgdGFnCisKKyAgICAgICAgQHBhcmFtIGRvYzogdGhlIEJlYXV0aWZ1bFNvdXAg
ZG9jCisgICAgICAgIEBwYXJhbSBvbGRfdGFnOiB0aGUgb2xkIHRhZyB0byByZW1vdmUKKyAgICAg
ICAgQHBhcmFtIG5ld190YWc6IHRoZSBuZXcgdGFnIHRvIGluc2VydAorICAgICAgICAiIiIKKwor
ICAgICAgICAjIFJlcGxhY2UgdGhlIHByZXZpb3VzIHRhZyB3aXRoIHRoZSBuZXcgb25lCisgICAg
ICAgIGluZGV4ID0gb2xkX3RhZy5wYXJlbnQuY29udGVudHMuaW5kZXgob2xkX3RhZykKKyAgICAg
ICAgb2xkX3RhZy5wYXJlbnQuaW5zZXJ0KGluZGV4LCBuZXdfdGFnKQorICAgICAgICBvbGRfdGFn
LmV4dHJhY3QoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9j
b252ZXJ0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2Nv
bnZlcnRlcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
MDdmNTQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVz
dF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw0NTAgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAoraW1w
b3J0IG9zCitmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZGludAoraW1wb3J0IHJlCitmcm9tIHdlYmtp
dHB5LnczYy50ZXN0X2NvbnZlcnRlciBpbXBvcnQgVGVzdENvbnZlcnRlcgorZnJvbSB3ZWJraXRw
eS53M2MgaW1wb3J0IHRlc3RfY29udmVydGVyCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0
CisKKworY2xhc3MgVGVzdENvbnZlcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAg
ZGVmIHRlc3RMb2FkUHJlZml4ZWRQcm9wTGlzdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg
IFRlc3RzIHRoYXQgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZworICAg
ICAgICB0aGUgLXdlYmtpdC0gcHJlZml4IGxvYWQgY29ycmVjdGx5CisgICAgICAgICIiIgorCisg
ICAgICAgICMgR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVydGllcworICAgICAg
ICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgcHJvcF9saXN0ID0gY29udmVy
dGVyLnByZWZpeGVkX3Byb3BlcnRpZXMKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgcHJvcGVy
dGllcyBiYWNrCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocHJvcF9saXN0KSwgMCwg
J05vIHByZWZpeGVkIHByb3BlcnRpZXMgZm91bmQnKQorCisgICAgICAgICMgVmVyaWZ5IHRoZXkn
cmUgYWxsIHByZWZpeGVkCisgICAgICAgIGZvciBwcm9wIGluIHByb3BfbGlzdDoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9wLnN0YXJ0c3dpdGgoJy13ZWJraXQtJykpCisKKyAgICBk
ZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0Tm90aGluZ1RvQ29udmVydChzZWxmKToKKyAgICAgICAg
IiIiCisgICAgICAgIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgdGVz
dAorICAgICAgICB0aGF0IGhhcyBub3RoaW5nIHRvIGNvbnZlcnQKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBY
SFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3ho
dG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRs
ZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCitocmVmPSJtYWls
dG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJSRUxFVkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0i
VEVTVCBBU1NFUlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1Mg
Rk9SIFRFU1QKK11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAor
PC9ib2R5PgorPC9odG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIo
KQorCisgICAgICAgICMgVHJ5IHRvIGNvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVk
ID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdCgnL25vdGhpbmcvdG8vY29udmVydCcsIGNv
bnRlbnRzPXRlc3RfaHRtbCwgZmlsZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMg
VmVyaWZ5IG5vdGhpbmcgd2FzIGNvbnZlcnRlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2FzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbnZlcnRlZCcp
CisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBUZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2lj
IEpTIHRlc3QgdGhhdCB1c2VzCisgICAgICAgIHRlc3RoYXJuZXNzLmpzIG9ubHkgYW5kIGhhcyBu
byBwcmVmaXhlZCBwcm9wZXJ0aWVzCisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9
ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8v
RU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+
Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0
aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1
dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6
Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19T
RUNUSU9OIi8+Cis8bGluayBocmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJz
dHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1Qg
QVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBU
RVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9k
eT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKwor
ICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0
ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJ
VF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFybmVzc29ubHkn
KQorCisgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252
ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3RfcGF0aCwgY29udGVudHM9dGVzdF9odG1sLCBm
aWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9u
IGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAn
dGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRo
ZSBoYXJuZXNzIHBhdGhzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQorICAgICAgICBzZWxmLnZl
cmlmeVRlc3RIYXJuZXNzUGF0aHMoY29udmVydGVkWzFdLCB0ZXN0X3BhdGgsIDEsIDEpCisKKyAg
ICAgICAgIyBWZXJpZnkgbm8gcHJvcGVydGllcyB3ZXJlIGNvbnZlcnRlZAorICAgICAgICBzZWxm
LnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIFtdKQorCisgICAgZGVmIHRlc3Rf
Y29udmVydEZvcldlYmtpdFByb3BzT25seShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRl
c3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGhhcworICAgICAgICAy
IHByZWZpeGVkIHByb3BlcnRpZXMgLQorICAgICAgICAxIGluIGEgc3R5bGUgYmxvY2sgKyAxIGlu
bGluZSBzdHlsZQorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZ
UEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6
Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRl
c3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxl
PSJOQU1FX09GX0FVVEhPUiIKK2hyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9Q
QUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgor
PGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIv
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworI2Jsb2NrMSB7IEB0ZXN0MEA6
IHByb3B2YWx1ZTsgfQorCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJl
bGVtMSIgc3R5bGU9IkB0ZXN0MUA6IHByb3B2YWx1ZTsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgorIiIiCisKKyAgICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRlcigpCisKKyAgICAgICAg
IyBDcmVhdGUgcGF0aCB0byBhIGZha2UgdGVzdCBkaXJlY3RvcnkKKyAgICAgICAgdGVzdF9wYXRo
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRfUk9PVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZl
cnRlci5MQVlPVVRfVEVTVFNfRElSRUNUT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkNTU19TVUJESVIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcm5lc3NhbmRwcm9wcycpCisK
KyAgICAgICAgIyBHZW5lcmF0ZSAmIGluc2VydCB0aGUgdGVzdCBwcm9wZXJ0aWVzIGludG8gdGhl
IHRlc3RfaHRtbAorICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlVGVzdENvbnRl
bnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDIsIHRlc3RfaHRtbCkKKworICAgICAg
ICAjIENvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZl
cnRfZm9yX3dlYmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfY29udGVudFsxXSwgZmlsZW5h
bWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBw
ZW5lZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qg
d2FzIG5vdCBjb252ZXJ0ZWQnKQorCisgICAgICAgICMgVmVyaWZ5IHRoYXQgYm90aCB0aGUgaGFy
bmVzcyBwYXRocyBhbmQgcHJvcGVydGllcyB3ZXJlIGFsbCBjb252ZXJ0ZWQgY29ycmVjdGx5Cisg
ICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhjb252ZXJ0ZWRbMV0sIHRlc3RfcGF0
aCwgMSwgMSkKKyAgICAgICAgc2VsZi52ZXJpZnlQcmVmaXhlZFByb3BlcnRpZXMoY29udmVydGVk
LCB0ZXN0X2NvbnRlbnRbMF0pCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVz
c0FuZFByb3BzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdHMgY29udmVydF9mb3Jf
d2Via2l0KCkgdXNpbmcgYSBiYXNpYyBKUyB0ZXN0IHRoYXQgdXNlcworICAgICAgICB0ZXN0aGFy
bmVzcy5qcyBhbmQgdGVzdGhhcm5lc3MuY3NzIGFuZCBoYXMgNCBwcmVmaXhlZCBwcm9wZXJ0aWVz
IC0KKyAgICAgICAgMyBpbiBhIHN0eWxlIGJsb2NrICsgMSBpbmxpbmUgc3R5bGUKKyAgICAgICAg
IiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
M0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRt
bDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBU
RVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCito
cmVmPSJtYWlsdG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJSRUxFVkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iVEVTVCBBU1NFUlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+PCFbQ0RBVEFbCisKKyNibG9jazEgeyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKyNibG9j
azIgeyBAdGVzdDFAOiBwcm9wdmFsdWU7IH0KKyNibG9jazMgeyBAdGVzdDJAOiBwcm9wdmFsdWU7
IH0KKworXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxl
PSJAdGVzdDNAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAg
ICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRo
IHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9U
RVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaGFybmVzc2FuZHByb3BzJykKKworICAgICAgICAjIEdl
bmVyYXRlICYgaW5zZXJ0IHRoZSB0ZXN0IHByb3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisg
ICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIu
cHJlZml4ZWRfcHJvcGVydGllcywgNCwgdGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0
aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0
KHRlc3RfcGF0aCwgY29udGVudHM9dGVzdF9jb250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUu
aHRtbCcpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAg
IHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZl
cnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIGFu
ZCBwcm9wZXJ0aWVzIHdlcmUgYWxsIGNvbnZlcnRlZCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi52
ZXJpZnlUZXN0SGFybmVzc1BhdGhzKGNvbnZlcnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQorICAg
ICAgICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVu
dFswXSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRUZXN0SGFybmVzc1BhdGhzKHNlbGYpOgorICAg
ICAgICAiIiIKKyAgICAgICAgVGVzdHMgY29udmVydF90ZXN0aGFybmVzc19wYXRocygpIHdpdGgg
YSB0ZXN0IHRoYXQgdXNlcyBhbGwgdGhyZWUgdGVzdGhhcm5lc3MgZmlsZXMKKyAgICAgICAgIiIi
CisKKyAgICAgICAgIyBCYXNpYyB0ZXN0IGNvbnRlbnQgdXNpbmcgYWxsIHRocmVlIHRlc3RoYXJu
ZXNzIGZpbGVzCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIv
eGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04g
T0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9S
IgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8bGluayBocmVmPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBj
b252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEg
ZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19E
SVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3NwYXRocycpCisKKyAgICAgICAgIyBDb252ZXJ0
IHRoZSBodG1sCisgICAgICAgIGRvYyA9IEJlYXV0aWZ1bFNvdXAodGVzdF9odG1sKQorICAgICAg
ICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyhkb2MsIHRl
c3RfcGF0aCkKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGNvbnZlcnRlZCwgJ3Rlc3Qgd2FzIG5vdCBjb252ZXJ0ZWQnKQor
CisgICAgICAgICMgVmVyaWZ5IGFsbCBnb3QgY29udmVydGVkIGNvcnJlY3RseQorICAgICAgICBz
ZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoZG9jLCB0ZXN0X3BhdGgsIDIsIDEpCisKKyAgICBk
ZWYgdGVzdF9jb252ZXJ0UHJlZml4ZWRQcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICAiIiIKKyAg
ICAgICAgVGVzdHMgY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKCkgZmlsZSB0aGF0IGhhcyAy
MCBwcm9wZXJ0aWVzCisgICAgICAgIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IC0gMTAg
aW4gb25lIHN0eWxlIGJsb2NrICsgNSBpbiBhbm90aGVyIHN0eWxlCisgICAgICAgIGJsb2NrICsg
NSBpbmxpbmUgc3R5bGVzLCBpbmNsdWRpbmcgb25lIHdpdGggbXVsdGlwbGUgcHJlZml4ZWQgcHJv
cGVydGllcy4KKyAgICAgICAgVGhlIHByb3BlcnRpZXMgaW4gdGhlIHRlc3QgY29udGVudCBhcmUg
aW4gYWxsIHNvcnRzIG9mIHdhY2sgZm9ybWF0dGluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAg
dGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAx
LjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1z
dHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4K
KzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxs
aW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCitocmVmPSJtYWlsdG86RU1B
SUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJSRUxF
VkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImdyZWVuLWJveC1y
ZWYueGh0IiAvPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIv
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMSB7CisgICAgd2lk
dGg6IDMwMHB4OworICAgIGhlaWdodDogMzAwcHgKK30KKworLmJsb2NrMiB7CisgICAgQHRlc3Qw
QDogcHJvcHZhbHVlOworfQorCisuYmxvY2sze0B0ZXN0MUA6IHByb3B2YWx1ZTt9CisKKy5ibG9j
azQgeyBAdGVzdDJAOnByb3B2YWx1ZTsgfQorCisuYmxvY2s1eyBAdGVzdDNAIDpwcm9wdmFsdWU7
IH0KKworI2Jsb2NrNiB7ICAgIEB0ZXN0NEAgICA6ICAgcHJvcHZhbHVlOyAgfQorCisjYmxvY2s3
Cit7CisgICAgQHRlc3Q1QDogcHJvcHZhbHVlOworfQorCisjYmxvY2s4IHsgQHRlc3Q2QDogcHJv
cHZhbHVlOyB9CisKKyNibG9jazk6cHNldWRvCit7CisKKyAgICBAdGVzdDdAOiBwcm9wdmFsdWU7
CisgICAgQHRlc3Q4QDogIHByb3B2YWx1ZSBwcm9wdmFsdWUgcHJvcHZhbHVlOzsKK30KKworXV0+
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRl
c3Q5QDogcHJvcHZhbHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJwcm9w
bmFtZTogcHJvcHZhbHVlOyBAdGVzdDEwQCA6IHByb3B2YWx1ZTsgcHJvcG5hbWU6cHJvcHZhbHVl
OyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJAdGVzdDExQDogcHJvcHZhbHVl
OyBAdGVzdDEyQCA6IHByb3B2YWx1ZTsgQHRlc3QxM0AgICA6cHJvcHZhbHVlOyI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iZWxlbTMiIHN0eWxlPSJAdGVzdDE0QDpwcm9wdmFsdWUiPjwvZGl2PgorPC9i
b2R5PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMTB7IEB0ZXN0
MTVAOiBwcm9wdmFsdWU7IH0KKy5ibG9jazExeyBAdGVzdDE2QDogcHJvcHZhbHVlOyB9CisuYmxv
Y2sxMnsgQHRlc3QxN0A6IHByb3B2YWx1ZTsgfQorI2Jsb2NrMTM6cHNldWRvCit7CisgICAgQHRl
c3QxOEA6IHByb3B2YWx1ZTsKKyAgICBAdGVzdDE5QDogcHJvcHZhbHVlOworfQorCitdXT48L3N0
eWxlPgorPC9odG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQor
CisgICAgICAgICMgR2VuZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3QgcHJvcGVydGllcyBpbnRvIHRo
ZSB0ZXN0X2h0bWwKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRlc3RDb250
ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyMCwgdGVzdF9odG1sKQorCisgICAg
ICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29u
dmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKEJlYXV0aWZ1bFNvdXAodGVzdF9jb250ZW50WzFdKSkK
KworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykK
KworICAgICAgICAjIFZlcmlmeSBhbGwgdGhlIGdlbmVyYXRlZCB0ZXN0IHByb3BlcnRpZXMgd2Vy
ZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0
aWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHZlcmlmeVRlc3RIYXJu
ZXNzUGF0aHMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3BhdGgsIG51bV9zcmNfcGF0aHMsIG51bV9o
cmVmX3BhdGhzKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmaWVzIGFsbCBXM0Mtc3R5bGUg
cGF0aHMgdG8gdGVzdCBoYXJuZXNzIGZpbGVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQorCisg
ICAgICAgIEBwYXJhbSBjb252ZXJ0ZWQ6IHRoZSBjb252ZXJ0ZWQgY29udGVudCAtIGVpdGhlciBh
IHN0cmluZyBvciBhIEJlYXV0aWZ1bFNvdXAgb2JqZWN0CisgICAgICAgIEBwYXJhbSB0ZXN0X3Bh
dGg6IHRoZSBwYXRoIHdoZXJlIHRoZSB0ZXN0IGNvbnRlbnQgd2lsbCB1bHRpbWF0ZWx5IGxpdmUK
KyAgICAgICAgQHBhcmFtIG51bV9zcmNfcGF0aHM6IG51bWJlciBvZiBzcmMgcGF0aHMgdG8gZXhw
ZWN0CisgICAgICAgIEBwYXJhbSBudW1faHJlZl9wYXRoczogbnVtYmVyIG9mIGhyZWYgcGF0aHMg
dG8gZXhwZWN0CisgICAgICAgICIiIgorCisgICAgICAgICMgTWFrZSBzb3VwIGlmIHdlIG5lZWQg
dG8KKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb252ZXJ0ZWQsIGJhc2VzdHJpbmcpOgorICAgICAg
ICAgICAgY29udmVydGVkID0gQmVhdXRpZnVsU291cChjb252ZXJ0ZWQpCisKKyAgICAgICAgIyBC
dWlsZCB0aGUgcGF0aCB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAgICAgICAgcmVzb3VyY2Vz
X2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JP
T1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLlJFU09VUkNFU19E
SVJFQ1RPUlkpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIG9yaWdpbmFsIHBhdGhzIGFyZSBubyBs
b25nZXIgdGhlcmUKKyAgICAgICAgb3JpZ19wYXRoX3BhdHRlcm4gPSByZS5jb21waWxlKCdcIi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29u
dmVydGVkLmZpbmRBbGwoc3JjPW9yaWdfcGF0aF9wYXR0ZXJuKSksIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBzcmMgcGF0aCB3YXMgbm90IGNvbnZlcnRlZCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFsbChocmVmPW9yaWdf
cGF0aF9wYXR0ZXJuKSksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVz
cyBocmVmIHBhdGggd2FzIG5vdCBjb252ZXJ0ZWQnKQorCisgICAgICAgICMgR2V0IHRoZSBuZXcg
cmVscGF0aCBmcm9tIHRoZSB0ZXN0ZXIgZGlyCisgICAgICAgIG5ld19yZWxwYXRoID0gb3MucGF0
aC5yZWxwYXRoKHJlc291cmNlc19kaXIsIHRlc3RfcGF0aCkKKworICAgICAgICAjIFZlcmlmeSBp
dCdzIGluIGFsbCB0aGUgcmlnaHQgcGxhY2VzCisgICAgICAgIHJlbHBhdGhfcGF0dGVybiA9IHJl
LmNvbXBpbGUobmV3X3JlbHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252
ZXJ0ZWQuZmluZEFsbChzcmM9cmVscGF0aF9wYXR0ZXJuKSksIG51bV9zcmNfcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBzcmMgcmVsYXRpdmUgcGF0aCBub3Qg
Y29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFs
bChocmVmPXJlbHBhdGhfcGF0dGVybikpLCBudW1faHJlZl9wYXRocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIGhyZWYgcmVsYXRpdmUgcGF0aCBub3QgY29ycmVjdCcp
CisKKyAgICBkZWYgdmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKHNlbGYsIGNvbnZlcnRlZCwgdGVz
dF9wcm9wZXJ0aWVzKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmaWVzIGEgbGlzdCBvZiB0
ZXN0X3Byb3BlcnRpZXMgd2VyZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisKKyAgICAgICAgQHBhcmFt
IGNvbnZlcnRlZDogVHVwbGUgLSAobGlzdCBvZiBwcm9wZXJ0aWVzIGFjdHVhbGx5IGNvbnZlcnRl
ZCwgY29udmVydGVkIGNvbnRlbnQpCisgICAgICAgIEBwYXJhbSB0ZXN0X3Byb3BlcnRpZXM6IGxp
c3Qgb2YgdGhlIHByb3BlcnRpZXMgdXNlZCB0byB0ZXN0IHdpdGgKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbnVtYmVyIG9mIHRlc3QgcHJvcGVydGllcyBlcXVhbHMg
dGhlIG51bWJlciB0aGF0IHdlcmUgY29udmVydGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGNvbnZlcnRlZFswXSksIGxlbih0ZXN0X3Byb3BlcnRpZXMpLCAnSW5jb3JyZWN0IG51bWJl
ciBvZiBwcm9wZXJ0aWVzIGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhleSdyZSBh
bGwgaW4gdGhlIGNvbnZlcnRlZCBkb2N1bWVudAorICAgICAgICBmb3IgdGVzdF9wcm9wIGluIHRl
c3RfcHJvcGVydGllczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgodGVzdF9wcm9wIGlu
IGNvbnZlcnRlZFsxXSksICdQcm9wZXJ0eSAnICsgdGVzdF9wcm9wICsgJyBub3QgZm91bmQgaW4g
Y29udmVydGVkIGRvYycpCisKKyAgICBkZWYgZ2VuZXJhdGVUZXN0Q29udGVudChzZWxmLCBmdWxs
X3Byb3BfbGlzdCwgbnVtX3Rlc3RfcHJvcGVydGllcywgaHRtbCk6CisgICAgICAgICIiIgorICAg
ICAgICBHZW5lcmF0ZXMgYSByYW5kb20gbGlzdCBvZiB1bmlxdWUgcHJvcGVydGllcyByZXF1aXJp
bmcgdGhlIC13ZWJraXQtIHByZWZpeAorICAgICAgICBhbmQgaW5zZXJ0cyB0aGVtIGludG8gaHRt
bCBjb250ZW50IHRoYXQncyBiZWVuIHRva2VuaXplZCB1c2luZyBcJ0B0ZXN0WFhAXCcgc3ludGF4
CisKKyAgICAgICAgQHBhcmFtIGZ1bGxfcHJvcF9saXN0OiB0aGUgY29tcGxldGUgbGlzdCBvZiBw
cm9wZXJ0aWVzIGN1cnJlbnRseSByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeAorICAgICAg
ICBAcGFyYW0gbnVtX3Rlc3RfcHJvcGVydGllczogbnVtYmVyIG9mIHByb3BlcnRpZXMgdG8gZ2Vu
ZXJhdGUKKyAgICAgICAgQHBhcmFtIGh0bWw6IHRoZSB0b2tlbml6ZWQgaHRtbCBjb250ZW50CisK
KyAgICAgICAgQHJldHVybjogVHVwbGUgLSAodGhlIGxpc3Qgb2YgcHJvcGVydGllcyBpbnNlcnRl
ZCwgdGhlIG5ldyBodG1sKQorICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X3Byb3BlcnRpZXMg
PSBbXQorCisgICAgICAgICMgR3JhYiBhIHJhbmRvbSBidW5jaCBvZiAyMCB1bmlxdWUgcHJvcGVy
dGllcyByZXF1aXJpbmcgcHJlZml4ZXMgdG8gdGVzdCB3aXRoCisgICAgICAgIGNvdW50ID0gMAor
ICAgICAgICB3aGlsZSBjb3VudCA8IG51bV90ZXN0X3Byb3BlcnRpZXM6CisgICAgICAgICAgICBp
ZHggPSByYW5kaW50KDAsIGxlbihmdWxsX3Byb3BfbGlzdCkgLSAxKQorICAgICAgICAgICAgaWYg
bm90KGZ1bGxfcHJvcF9saXN0W2lkeF0gaW4gdGVzdF9wcm9wZXJ0aWVzKToKKyAgICAgICAgICAg
ICAgICB0ZXN0X3Byb3BlcnRpZXMuYXBwZW5kKGZ1bGxfcHJvcF9saXN0W2lkeF0pCisgICAgICAg
ICAgICAgICAgY291bnQgKz0gMQorCisgICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW5zIGluIHRo
ZSB0ZXN0aHRtbCB3aXRoIHRoZSB0ZXN0IHByb3BlcnRpZXMuIFdhbGsgYmFja3dhcmQKKyAgICAg
ICAgIyB0aHJvdWdoIHRoZSBsaXN0IHRvIHJlcGxhY2UgdGhlIGRvdWJsZS1kaWdpdCB0b2tlbnMg
Zmlyc3QKKyAgICAgICAgaWR4ID0gbGVuKHRlc3RfcHJvcGVydGllcykgLSAxCisgICAgICAgIHdo
aWxlIGlkeCA+PSAwOgorICAgICAgICAgICAgIyBVc2UgdGhlIHVucHJlZml4ZWQgdmVyc2lvbgor
ICAgICAgICAgICAgdGVzdF9wcm9wID0gdGVzdF9wcm9wZXJ0aWVzW2lkeF0ucmVwbGFjZSgnLXdl
YmtpdC0nLCAnJykKKyAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW4KKyAgICAgICAgICAg
IGh0bWwgPSBodG1sLnJlcGxhY2UoJ0B0ZXN0JyArIHN0cihpZHgpICsgJ0AnLCB0ZXN0X3Byb3Ap
CisgICAgICAgICAgICBpZHggLT0gMQorCisgICAgICAgIHJldHVybiAodGVzdF9wcm9wZXJ0aWVz
LCBodG1sKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBv
cnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRkZTJiNgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTAsMCAr
MSw1MjYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMKKyMgVGhpcyBzY3JpcHQgaW1wb3J0cyBhIGRpcmVjdG9yeSBvZiBXM0Mg
Q1NTIHRlc3RzIGludG8gV2ViS2l0LgorIworIyBZb3UgbXVzdCBoYXZlIGNoZWNrZWQgbG9nIHRo
ZSBXM0MgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZlLgorIworIyBUaGlzIHNjcmlwdCB3
aWxsIGltcG9ydCB0aGUgdGVzdHMgaW50byBXZWJLaXQgZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgor
IworIyAgICAtIE9ubHkgdGVzdHMgdGhhdCBhcmUgYXBwcm92ZWQgb3Igb2ZmaWNpYWxseSBzdWJt
aXR0ZWQgYXdhaXRpbmcgcmV2aWV3IGFyZSBpbXBvcnRlZAorIworIyAgICAtIEFsbCB0ZXN0cyBh
cmUgaW1wb3J0ZWQgaW50byBMYXlvdXRUZXN0cy9jc3N3ZworIworIyAgICAtIElmIHRoZSB0ZXN0
cyBhcmUgYXBwcm92ZWQsIHRoZXknbGwgYmUgaW1wb3J0ZWQgaW50byBhIGRpcmVjdG9yeSB0cmVl
IHRoYXQKKyMgICAgICBtaXJyb3JzIHRoZSBDU1MgTWVyY3VyaWFsIHJlcG8uIEZvciBleGFtcGxl
LCA8Y3Nzd2dfcmVwb19yb290Pi9hcHByb3ZlZC9jc3MyLjEgaXMgYnJvdWdodCBpbgorIyAgICAg
IGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVkL2NzczIuMSwgbWFpbnRhaW5pbmcgdGhlIGVu
dGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVyIHRoYXQKKyMKKyMgICAgLSBJZiB0aGUgdGVz
dHMgYXJlIHN1Ym1pdHRlZCwgdGhleSdsbCBiZSBicm91Z2h0IGluIGFzIExheW91dFRlc3RzL2Nz
c3dnL3N1Ym1pdHRlZCBhbmQgd2lsbCBhbHNvCisjICAgICAgbWFpbnRhaW4gdGhlaXIgZGlyZWN0
b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0LiBGb3IgZXhhbXBsZSwgZXZlcnl0aGluZyB1bmRlcgor
IyAgICAgIDxjc3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9hZG9iZS9zdWJtaXR0ZWQgaXMg
YnJvdWdodCBpbnRvIHN1Ym1pdHRlZCwgbWlycm9yaW5nIGl0cworIyAgICAgIGRpcmVjdG9yeSBz
dHJ1Y3R1cmUgaW4gdGhlIGNzc3dnIHJlcG8KKyMKKyMgICAgLSBJZiB0aGUgaW1wb3J0IGRpcmVj
dG9yeSBzcGVjaWZpZWQgaXMganVzdCBhIGNvbnRyaWJ1dG9yIGZvbGRlciwgb25seSB0aGUgc3Vi
bWl0dGVkIGZvbGRlcgorIyAgICAgIGZvciB0aGF0IGNvbnRyaWJ1dG9yIGlzIGJyb3VnaHQgaW4u
IEZvciBleGFtcGxlLCB0byBpbXBvcnQgYWxsIG9mIE1vemlsbGEncyB0ZXN0cywgZWl0aGVyCisj
ICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEgb3IgPGNzc3dnX3Jl
cG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEvc3VibWl0dGVkCisjICAgICAgd2lsbCB3b3Jr
IGFuZCBhcmUgZXF1aXZhbGVudAorIworIyAgICAtIEZvciB0aGUgdGltZSBiZWluZywgdGhpcyBz
Y3JpcHQgd29uJ3Qgd29yayBpZiB5b3UgdHJ5IHRvIGltcG9ydCB0aGUgZnVsbCBzZXQgb2Ygc3Vi
bWl0dGVkCisjICAgICAgdGVzdHMgdW5kZXIgY29udHJpYnV0b3JzLyovc3VibWl0dGVkLiBTaW5j
ZSB0aGVzZSBhcmUgYXdhaXRpbmcgcmV2aWV3LCB0aGlzIGlzIGp1c3QgYSBzbWFsbAorIyAgICAg
IGNvbnRyb2wgbWVjaGFuaXNtIHRvIGVuZm9yY2UgY2FyZWZ1bGx5IHNlbGVjdGluZyB3aGF0IG5v
bi1hcHByb3ZlZCB0ZXN0cyBhcmUgaW1wb3J0ZWQuCisjICAgICAgSXQgY2FuIG9idmlvdXNseSBh
bmQgZWFzaWx5IGJlIGNoYW5nZWQuCisjCisjICAgIC0gQnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0
cyBhbmQganN0ZXN0IGFyZSBpbXBvcnRlZC4gVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEg
LWEgb3IgLS1hbGwKKyMgICAgICBhcmd1bWVudAorIworIyAgICAtIEFsc28gYnkgZGVmYXVsdCwg
aWYgdGVzdCBmaWxlcyBieSB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3QgaW4gdGhlIGRlc3Rp
bmF0aW9uIGRpcmVjdG9yeSwKKyMgICAgICB0aGV5IGFyZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBp
ZGVhIHRoYXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNoIGZpbGVzIHBlcmlvZGlj
YWxseS4KKyMgICAgICBUaGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW4gYnkgYSAtbiBvciAtLW5v
LW92ZXJ3cml0ZSBmbGFnCisjCisjICAgIC0gQWxsIGZpbGVzIGFyZSBjb252ZXJ0ZWQgdG8gd29y
ayBpbiBXZWJLaXQ6CisjICAgICAgICAgMS4gLnhodCBleHRlbnNpb25zIGFyZSBjaGFuZ2VkIHRv
IC54aHRtbCB0byBtYWtlIG5ldy1ydW4td2Via2l0LXRlc3RzIGhhcHB5CisjICAgICAgICAgMi4g
UGF0aHMgdG8gdGVzdGhhcm5lc3MuanMgZmlsZXMgYXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtp
dCdzIGNvcHkgb2YgdGhlbSBpbgorIyAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywg
dXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KKyMg
ICAgICAgICAzLiBBbGwgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LXZlbmRv
ciBwcmVmaXggYXJlIHByZWZpeGVkIC0gdGhpcyBjdXJyZW50CisjICAgICAgICAgICAgbGlzdCBv
ZiB3aGF0IG5lZWRzIHByZWZpeGVzIGlzIHJlYWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9DU1MvQ1NT
UHJvcGVydGllcy5pbgorIyAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5
IG9mIGl0cyByZWZlcmVuY2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucwor
IyAgICAgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGV4cGVjdHMKKyMgICAgICAgICA1LiBJ
ZiBhIGEgcmVmZXJlbmNlIGZpbGVzIGxpdmVzIG91dHNpZGUgdGhlIGRpcmVjdG9yeSBvZiB0aGUg
dGVzdCB0aGF0IHVzZXMgaXQsIGl0IGlzIGNoZWNrZWQKKyMgICAgICAgICAgICBmb3IgcGF0aHMg
dG8gc3VwcG9ydCBmaWxlcyBhcyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQg
cmVsYXRpdmUgcG9zaXRpb24gdG8gdGhlCisjICAgICAgICAgICAgdGVzdCBmaWxlIChpbiB0aGUg
c2FtZSBkaXJlY3RvcnkpCisjCisjICAgICAtIFVwb24gY29tcGxldGlvbiwgc2NyaXB0IG91dHB1
dHMgdGhlIHRvdGFsIG51bWJlciB0ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVzdCB0
eXBlCisjCisjICAgICAtIEFsc28gdXBvbiBjb21wbGV0aW9uLCBlYWNoIGRpcmVjdG9yeSB3aGVy
ZSBmaWxlcyBhcmUgaW1wb3J0ZWQgd2lsbCBoYXZlIHczYy1pbXBvcnQubG9nIHdyaXR0ZW4KKyMg
ICAgICAgd2l0aCBhIHRpbWVzdGFtcCwgdGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0IGlmIGF2
YWlsYWJsZSwgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0aGF0CisjICAgICAgIHJl
cXVpcmUgcHJlZml4ZXMsIHRoZSBsaXN0IG9mIGltcG9ydGVkIGZpbGVzLCBhbmQgZ3VpZGFuY2Ug
Zm9yIGZ1dHVyZSB0ZXN0IG1vZGlmaWNhdGlvbiBhbmQKKyMgICAgICAgbWFpbnRlbmFuY2UuCisj
CisjICAgICAtIE9uIHN1YnNlcXVlbnQgaW1wb3J0cywgdGhpcyBmaWxlIGlzIHJlYWQgdG8gZGV0
ZXJtaW5lIGlmIGZpbGVzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBuZXdlciBjaGFuZ2VzZXRz
LgorIyAgICAgICBUaGUgc2NyaXB0IHJlbW92ZXMgdGhlc2UgZmlsZXMgYWNjb3JkaW5nbHkuCisj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBtaW1ldHlwZXMKK2Zyb20gb3B0cGFyc2UgaW1w
b3J0IE9wdGlvblBhcnNlcgoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJv
Y2VzcworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRl
c3RQYXJzZXIKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBUZXN0Q29u
dmVydGVyCisKK0xBWU9VVF9URVNUU19ESVJFQ1RPUlkgPSAnTGF5b3V0VGVzdHMnCitDU1NXR19E
SVJFQ1RPUlkgPSAnY3Nzd2cnCitSRVNPVVJDRVNfRElSRUNUT1JZID0gJ3Jlc291cmNlcycKK0FQ
UFJPVkVEID0gJ2FwcHJvdmVkJworU1VCTUlUVEVEID0gJ3N1Ym1pdHRlZCcKK1VOS05PV04gPSAn
dW5rbm93bicKK05PVF9BVkFJTEFCTEUgPSAnTm90IEF2YWlsYWJsZScKKworCitkZWYgbWFpbihh
cmd2LCBfLCBzdGRlcnIpOgorCisgICAgcGFyc2VfYXJncygpCisgICAgaW1wb3J0X2RpciA9IHZh
bGlkYXRlX2ltcG9ydF9kaXJlY3RvcnkoKQorICAgIHRlc3RfaW1wb3J0ZXIgPSBUZXN0SW1wb3J0
ZXIoaW1wb3J0X2Rpciwgb3B0aW9ucykKKyAgICB0ZXN0X2ltcG9ydGVyLmRvX2ltcG9ydCgpCisK
KworZGVmIHBhcnNlX2FyZ3MoKToKKworICAgIGdsb2JhbCBvcHRpb25zCisgICAgZ2xvYmFsIGFy
Z3MKKworICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcih1c2FnZT0ndXNhZ2U6ICVwcm9nIFtvcHRp
b25zXSB3M2NfdGVzdF9kaXJlY3Rvcnkgd2Via2l0X3Jvb3QnKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctbicsICctLW5vLW92ZXJ3cml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgI2FjdGlv
bj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdGbGFnIHRvIHByZXZlbnQgZHVwbGljYXRlIHRlc3Qg
ZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBleGlzdGluZyB0ZXN0cy4gQnkgZGVmYXVsdCwgdGhleSB3
aWxsIGJlIG92ZXJ3cml0dGVuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWEnLCAnLS1hbGwn
LAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdJ
bXBvcnQgYWxsIHRlc3RzIGluY2x1ZGluZyByZWZ0ZXN0cywgSlMgdGVzdHMsIGFuZCBtYW51YWwv
cGl4ZWwgdGVzdHMuIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5kIEpTIHRlc3RzIGFyZSBp
bXBvcnRlZCcpCisKKyAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCisK
KyAgICBpZiBsZW4oYXJncykgIT0gMToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdJbmNvcnJlY3Qg
bnVtYmVyIG9mIGFyZ3VtZW50cycpCisKKworZGVmIHZhbGlkYXRlX2ltcG9ydF9kaXJlY3Rvcnko
KToKKworICAgIGltcG9ydF9kaXIgPSBhcmdzWzBdCisKKyAgICAjIE1ha2Ugc3VyZSB0aGUgdzNj
IHRlc3QgZGlyZWN0b3J5IGV4aXN0cworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbXBvcnRf
ZGlyKToKKyAgICAgICAgc3lzLmV4aXQoJ1NvdXJjZSBkaXJlY3RvcnkgJXMgbm90IGZvdW5kIScg
JSBpbXBvcnRfZGlyKQorCisgICAgIyBNYWtlIHN1cmUgdGhlIHRlc3RzIGFyZSBvZmZpY2lhbGx5
IHN1Ym1pdHRlZCB0byB0aGUgVzNDLCBlaXRoZXIgYXBwcm92ZWQgb3IKKyAgICAjIHN1Ym1pdHRl
ZCBmb2xsb3dpbmcgdGhlaXIgZGlyZWN0b3J5IG5hbWluZyBjb252ZW50aW9ucworICAgIGlmIGlt
cG9ydF9kaXIuZmluZChBUFBST1ZFRCkgPT0gLTEgYW5kIFwKKyAgICAgICBpbXBvcnRfZGlyLmZp
bmQoU1VCTUlUVEVEKSA9PSAtMToKKyAgICAgICAgIyBJZiBub3QgcG9pbnRlZCBkaXJlY3RseSB0
byB0aGUgYXBwcm92ZWQgZGlyZWN0b3J5IG9yIHRvIGFueSBzdWJtaXR0ZWQKKyAgICAgICAgIyBk
aXJlY3RvcnksIGNoZWNrIGZvciBhIHN1Ym1pdHRlZCBzdWJkaXJlY3RvcnkgYW5kIGdvIHdpdGgg
dGhhdAorICAgICAgICBpbXBvcnRfZGlyID0gb3MucGF0aC5qb2luKGltcG9ydF9kaXIsICdzdWJt
aXR0ZWQnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGltcG9y
dF9kaXIpKToKKyAgICAgICAgICAgIHN5cy5leGl0KCdVbmFibGUgdG8gaW1wb3J0IHRlc3RzIHRo
YXQgYXJlblwndCBhcHByb3ZlZCBvciBzdWJtaXR0ZWQgdG8gdGhlIFczQycpCisKKyAgICByZXR1
cm4gaW1wb3J0X2RpcgorCisKK2NsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHNvdXJjZV9kaXJlY3RvcnksIG9wdGlvbnMpOgorCisgICAgICAgIHNl
bGYub3B0aW9ucyA9IG9wdGlvbnMKKworICAgICAgICBzZWxmLnNvdXJjZV9kaXJlY3RvcnkgPSBz
b3VyY2VfZGlyZWN0b3J5CisgICAgICAgIHNlbGYud2Via2l0X3Jvb3QgPSBfX2ZpbGVfXy5zcGxp
dChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisgICAgICAgIHNlbGYuZGVzdGluYXRpb25fZGly
ZWN0b3J5ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBzZWxmLndlYmtpdF9yb290LCBMQVlP
VVRfVEVTVFNfRElSRUNUT1JZLCBDU1NXR19ESVJFQ1RPUlkpCisKKyAgICAgICAgc2VsZi5jaGFu
Z2VzZXQgPSBOT1RfQVZBSUxBQkxFCisgICAgICAgIHNlbGYudGVzdF9zdGF0dXMgPSBVTktOT1dO
CisKKyAgICAgICAgc2VsZi5pbXBvcnRfbGlzdCA9IFtdCisKKyAgICBkZWYgZG9faW1wb3J0KHNl
bGYpOgorCisgICAgICAgIHNlbGYuc2Nhbl9zb3VyY2VfZGlyZWN0b3J5KHNlbGYuc291cmNlX2Rp
cmVjdG9yeSkKKyAgICAgICAgc2VsZi5nZXRfY2hhbmdlc2V0KCkKKyAgICAgICAgc2VsZi5pbXBv
cnRfdGVzdHMoKQorCisgICAgZGVmIGdldF9jaGFuZ2VzZXQoc2VsZik6CisgICAgICAgICIiIgor
ICAgICAgICAgICAgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBjdXJyZW50IGNoYW5nZXNldCBhbmQg
cGFyc2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZQorICAgICAgICAgICAgY2hhbmdlc2V0LiBJZiB0
aGF0IGRvZXNuJ3Qgd29ya291dCBmb3Igc29tZSByZWFzb24sIGl0IGp1c3QgYmVjb21lcworICAg
ICAgICAgICAgJ05vdCBBdmFpbGFibGUnCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICMgQXNzdW1pbmcgTWVyY3VyaWFsIGlzIHNldCB1cCBvbiB0aGUgc3lzdGVtLCB0
cnkgdG8gZ3JhYiB0aGUgY2hhbmdlc2V0IHdlJ3JlIGltcG9ydGluZworICAgICAgICAgICAgcHJv
YyA9IHN1YnByb2Nlc3MuUG9wZW4oWydoZycsICd0aXAnXSwgZW52PW9zLmVudmlyb24sIHN0ZG91
dD1zdWJwcm9jZXNzLlBJUEUsIGN3ZD1zZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgICAg
ICBzZWxmLmNoYW5nZXNldCA9IHByb2Muc3Rkb3V0LnJlYWRsaW5lcygpWzBdCisgICAgICAgICAg
ICBzZWxmLmNoYW5nZXNldCA9IHNlbGYuY2hhbmdlc2V0LnNwbGl0KCdjaGFuZ2VzZXQ6JylbMV0K
KyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBPaCB3ZWxsLCB3ZSB0cmllZAorICAgICAg
ICAgICAgc2VsZi5jaGFuZ2VzZXQgPSAnTm90IEF2YWlsYWJsZScKKworICAgIGRlZiBzY2FuX3Nv
dXJjZV9kaXJlY3Rvcnkoc2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAgIiIiCisgICAgICAgICAg
ICBXYWxrcyB0aGUgZGlyZWN0b3J5IHRyZWUgbG9va2luZyBmb3IgSFRNTCBmaWxlcyBvZiBhbnkg
Zmxhdm9yIGFuZCBwYXJzZXMgdGhlbSB0byBsb29rIGZvcgorICAgICAgICAgICAgaW1wb3J0YWJs
ZSB0ZXN0cy4gSWYgdGhlIGZpbGVzIGlzIGFuIGltcG9ydGFibGUgdGVzdCwgaXQncyBhZGRlZCB0
byB0aGUgbWFzdGVyIGxpc3Qgb2YKKyAgICAgICAgICAgIGZpbGVzIHRvIGltcG9ydC4gSWYgdGhl
cmUgYXJlIHRlc3RzIGluIHRoZSBkaXJlY3RvcnksIGFsbCBvdGhlciBub24tSFRNTCBmaWxlcyBh
cmUgYWRkZWQKKyAgICAgICAgICAgIHRvIHRoZSBtYXN0ZXIgY29weSBsaXN0IGFzIHRoZXkgYXJl
IGFzc3VtZWQgdG8gYmUgcmVxdWlyZWQgYnkgdGhlIHRlc3RzCisKKyAgICAgICAgICAgIEBwYXJh
bSBkaXJlY3Rvcnk6IHRoZSBkaXJlY3RvcnkgdG8gd2FsaworICAgICAgICAiIiIKKworICAgICAg
ICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgorCisgICAgICAg
ICAgICBwcmludCAnU2Nhbm5pbmcgJyArIHJvb3QgKyAnLi4uJworICAgICAgICAgICAgdG90YWxf
dGVzdHMgPSAwCisgICAgICAgICAgICByZWZ0ZXN0cyA9IDAKKyAgICAgICAgICAgIGpzdGVzdHMg
PSAwCisKKyAgICAgICAgICAgICMgSWdub3JlIGFueSByZXBvIHN0dWZmCisgICAgICAgICAgICBp
ZiAnLmdpdCcgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmdpdCcpCisg
ICAgICAgICAgICBpZiAnLmhnJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3Zl
KCcuaGcnKQorICAgICAgICAgICAgIyBhcmNoaXZlIGFuZCBkYXRhIGRpcnMgYXJlIGludGVybmFs
IGNzc3dnIHRoaW5ncyB0aGF0IGxpdmUgaW4gZXZlcnkgYXBwcm92ZWQgZGlyZWN0b3J5CisgICAg
ICAgICAgICBpZiAnZGF0YScgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgn
ZGF0YScpCisgICAgICAgICAgICBpZiAnYXJjaGl2ZScgaW4gZGlyczoKKyAgICAgICAgICAgICAg
ICBkaXJzLnJlbW92ZSgnYXJjaGl2ZScpCisKKyAgICAgICAgICAgIGNvcHlfbGlzdCA9IFtdCisK
KyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKKworICAgICAgICAgICAgICAgIGZ1
bGxwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGVuYW1lKQorCisgICAgICAgICAgICAgICAg
IyBPbmx5IGh0bWwgb3IgeG1sIGFyZSBjb25zaWRlcmVkIHRlc3RzCisgICAgICAgICAgICAgICAg
bWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmdWxscGF0aCkKKyAgICAgICAgICAgICAg
ICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciAneG1sJyBpbiBzdHIobWltZXR5cGVb
MF0pOgorCisgICAgICAgICAgICAgICAgICAgIHRlc3RfcGFyc2VyID0gVGVzdFBhcnNlcih2YXJz
KG9wdGlvbnMpLCBmaWxlbmFtZT1mdWxscGF0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9p
bmZvID0gdGVzdF9wYXJzZXIuYW5hbHl6ZV90ZXN0KCkKKworICAgICAgICAgICAgICAgICAgICBp
ZiB0ZXN0X2luZm8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICAgICAgICAgaWYgJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKToK
KworICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdHMgKz0gMQorICAgICAgICAgICAgICAg
ICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9i
YXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdF9pbmZvWyd0ZXN0J10pCisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICMgQWRkIHRoZSByZWYgZmlsZSwgcmVuYW1pbmcgaXQgdG8gV2Via2l0
J3Mgd2F5CisgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGU6IFRoZSBwcmVmZXJhYmxlIHdh
eSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBqdXN0CisgICAgICAgICAgICAgICAgICAgICAg
ICAjICAgICAgIGFkZCBzdXBwb3J0IGluIFdlYmtpdCdzIGhhcm5lc3MgdG8gcmVhZCBtZXRhZGF0
YQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICByYXRoZXIgdGhhbiByZWx5IG9uIGEg
ZmlsZSBuYW1pbmcgY29udmVudGlvbi4gU2luY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMg
ICAgICAgdGhlIENTU1dHIHRlc3RzIHN1cHBvcnQgbWFueTpvbmUgdGVzdHM6cmVmZXJlbmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICBlbmFibGluZyBtZXRhZGF0YSBwYXJzaW5n
IGluIG91ciBoYXJuZXNzIHdvdWxkIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAg
ICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgZmlsZXMgY29waWVkIGluLiBBcyB0aGlzIGlzCisgICAg
ICAgICAgICAgICAgICAgICAgICAjICAgICAgIGltcGxlbWVudGVkIGhlcmUsIHdlIGFyZSBrbm93
aW5nbHkgaW1wb3J0aW5nIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAg
IGNvcGllcyBvZiB0aGUgc2FtZSByZWYgZmlsZXMgdG8gYWRoZXJlIHRvIFdlYmtpdCdzIHdheQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3Rf
YmFzZW5hbWUpWzBdICsgJy1leHBlY3RlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZl9m
aWxlICs9IG9zLnBhdGguc3BsaXRleHQodGVzdF9iYXNlbmFtZSlbMV0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNl
J10sICdkZXN0JzogcmVmX2ZpbGV9KQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0
LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sndGVzdCddLCAnZGVzdCc6IGZpbGVuYW1lfSkKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGVyZSBhcmUgcmVmIHN1cHBvcnQgZmlsZXMs
IHRoZSBkZXN0aW5hdGlvbiBpcyBzaG91bGQgbm93IGJlIHJlbGF0aXZlIHRvIHRoZQorICAgICAg
ICAgICAgICAgICAgICAgICAgIyB0ZXN0IGZpbGUgYW5kIG5ldyBsb2NhdGlvbiBvZiB0aGUgcmVm
IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdyZWZzdXBwb3J0JyBpbiB0ZXN0X2lu
Zm8ua2V5cygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdXBwb3J0X2ZpbGUg
aW4gdGVzdF9pbmZvWydyZWZzdXBwb3J0J106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgQnVpbGQgdGhlIGNvcnJlY3Qgc291cmNlIHBhdGgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHRl
c3RfaW5mb1sncmVmZXJlbmNlJ10pLCBzdXBwb3J0X2ZpbGUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5ub3JtcGF0aChzb3VyY2VfZmlsZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBkZXN0IGFzIGl0IHdh
cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19jb3B5ID0geydzcmMnOiBzb3Vy
Y2VfZmlsZSwgJ2Rlc3QnOiBzdXBwb3J0X2ZpbGV9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMgT25seSBhZGQgaXQgb25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBub3QodG9fY29weSBpbiBjb3B5X2xpc3QpOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh0b19jb3B5KQorCisgICAgICAgICAgICAgICAg
ICAgIGVsaWYgJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGpzdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMg
Kz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1
bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVu
YW1lfSkKKworICAgICAgICAgICAgICAgIGVsaWYgbm90KGZpbGVuYW1lLnN0YXJ0c3dpdGgoJy4n
KSk6CisgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0
aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCisKKyAgICAgICAgICAgIGlmIHRvdGFsX3Rlc3RzID09IDA6
CisgICAgICAgICAgICAgICAgIyBJZiB0aGVyZSBhcmUgbm8gdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnksIHNraXAgdGhlIHN1cHBvcnQgZGlyIHRoYXQgbGl2ZXMgaW4gYWxsCisgICAgICAgICAgICAg
ICAgIyBvZiB0aGUgJ2FwcHJvdmVkJyBmb2xkZXJzIGFzIHBhcnQgb2YgdGhlIGF1dG9tYXRlZCBi
dWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBpZiAnc3VwcG9ydCcgaW4gZGlyczoKKyAgICAg
ICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ3N1cHBvcnQnKQorCisgICAgICAgICAgICBpZiBs
ZW4oY29weV9saXN0KSA+IDA6CisgICAgICAgICAgICAgICAgIyBPbmx5IGFkZCB0aGlzIGRpcmVj
dG9yeSB0byB0aGUgbGlzdCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAg
ICAgICAgICBzZWxmLmltcG9ydF9saXN0LmFwcGVuZCh7J2Rpcm5hbWUnOiByb290LCAnY29weV9s
aXN0JzogY29weV9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncmVmdGVzdHMnOiByZWZ0ZXN0cywgJ2pzdGVzdHMnOiBqc3Rlc3RzLCAndG90YWxfdGVzdHMn
OiB0b3RhbF90ZXN0c30pCisKKyAgICBkZWYgaW1wb3J0X3Rlc3RzKHNlbGYpOgorICAgICAgICAi
IiIKKyAgICAgICAgICAgIElmIHRoZXJlIGFyZSBmaWxlcyBpbiB0aGUgbWFzdGVyIGltcG9ydCBs
aXN0IGNyZWF0ZWQgYnkgc2Nhbl9zb3VyY2VfZGlyZWN0b3J5KCksCisgICAgICAgICAgICB0aGUg
ZW50aXJlIGxpc3QgaXMgY29waWVkIG1haW50YWluaW5nIGl0cyBvcmlnaW5hbCBkaXJlY3Rvcnkg
c3RydWN0dXJlIGludG8KKyAgICAgICAgICAgIExheW91dFRlc3RzL2Nzc3dnLiBCZWZvcmUgd3Jp
dHRlbiB0byBkaXNrLCBlYWNoIGZpbGUgY2hlY2tlZCBmb3IgdGhlIGZvbGxvd2luZzoKKyAgICAg
ICAgICAgICAgIC0gUGF0aHMgdG8gdGVzdGhhcm5lc3MgZmlsZXMKKyAgICAgICAgICAgICAgIC0g
Q1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSB2ZW5kb3IgcHJlZml4CisgICAg
ICAgICAgICAgICAtIFBhdGhzIHRvIHN1cHBvcnQgZmlsZXMgaW4gcmVmZXJlbmNlIGZpbGVzIGlm
IGl0cyByZWxhdGl2ZSBsb2NhdGlvbiB0byB0aGUKKyAgICAgICAgICAgICAgICAgdGVzdCBmaWxl
IGlzIGNoYW5nZWQgaW4gdGhlIG5ldyBsb2NhdGlvbgorICAgICAgICAgICAgSWYgdGhlIGZpbGUg
cmVxdWlyZXMgYW55IG9mIHRoZXNlIGNvbnZlcnNpb24sIHRoZXkgYXJlIG1hZGUgYW5kIGl0IGlz
IHJlLXdyaXR0ZW4KKyAgICAgICAgICAgIG91dC4gSWYgaXQgcmVxdWlyZXMgbm8gY29udmVyc2lv
biwgYSBzdHJhaWdodCBjb3B5IGlzIHBlZm9ybWVkLgorICAgICAgICAgICAgQWxzbywgLnhodCBl
eHRlbnNpb25zIGFyZSBjaGFuZ2VkIHRvIC54aHRtbCB0byB3b3JrIGluIG5ldy1ydW4td2Via2l0
LXRlc3RzCisKKyAgICAgICAgICAgIExhc3RseSwgdGhlIHRvdGFsIG51bWJlciBvZiB0ZXN0cyBp
cyBkaXNwbGF5ZWQgYXMgd2VsbCBhcyBhIGRldGFpbGVkIGxvZyBvZiB3aGF0CisgICAgICAgICAg
ICB3YXMgaW1wb3J0ZWQgZHJvcHBlZCBpbiBlYWNoIGRpcmVjdG9yeSB3aGVyZSBmaWxlcyBhcmUg
cGxhY2VkCisgICAgICAgICIiIgorCisgICAgICAgICMgT25seSBzZXQgdXAgdGhlIGRlc3RpbmF0
aW9uIGRpcmVjdG9yeSBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgaWYg
bGVuKHNlbGYuaW1wb3J0X2xpc3QpID4gMDoKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfZGVzdGlu
YXRpb25fZGlyZWN0b3J5KCkKKworICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkK
KyAgICAgICAgdG90YWxfaW1wb3J0ZWRfdGVzdHMgPSAwCisgICAgICAgIHRvdGFsX2ltcG9ydGVk
X3JlZnRlc3RzID0gMAorICAgICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzID0gMAorCisgICAg
ICAgIGZvciBkaXJfdG9fY29weSBpbiBzZWxmLmltcG9ydF9saXN0OgorCisgICAgICAgICAgICB0
b3RhbF9pbXBvcnRlZF90ZXN0cyArPSBkaXJfdG9fY29weVsndG90YWxfdGVzdHMnXQorICAgICAg
ICAgICAgdG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3JlZnRlc3RzJ10K
KyAgICAgICAgICAgIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ2pzdGVz
dHMnXQorCisgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KKworICAgICAgICAg
ICAgaWYgbGVuKGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXSkgPiAwOgorCisgICAgICAgICAgICAg
ICAgIyBCdWlsZCB0aGUgc3VicGF0aCBzdGFydGluZyB3aXRoIHRoZSBhcHByb3ZlZC9zdWJtaXR0
ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgb3JpZ19wYXRoID0gZGlyX3RvX2NvcHlbJ2Rp
cm5hbWUnXQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gb3JpZ19wYXRoLmZpbmQoc2VsZi50ZXN0
X3N0YXR1cykKKyAgICAgICAgICAgICAgICBuZXdfc3VicGF0aCA9IG9yaWdfcGF0aFtzdGFydDps
ZW4ob3JpZ19wYXRoKV0KKworICAgICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBuZXcgc3VicGF0
aCB0byB0aGUgZGVzdGluYXRpb25fZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgbmV3X3BhdGgg
PSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQor
CisgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9yaWVz
IGlmIG5vdCB0aGVyZQorICAgICAgICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhuZXdf
cGF0aCkpOgorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhuZXdfcGF0aCkKKworICAg
ICAgICAgICAgICAgIGNvcGllZF9maWxlcyA9IFtdCisKKyAgICAgICAgICAgICAgICBmb3IgZmls
ZV90b19jb3B5IGluIGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXToKKworICAgICAgICAgICAgICAg
ICAgICBvcmlnX2ZpbGVwYXRoID0gb3MucGF0aC5ub3JtcGF0aChmaWxlX3RvX2NvcHlbJ3NyYydd
KQorCisgICAgICAgICAgICAgICAgICAgICMgU2hvdWxkbid0IGJlIGFueSBkaXJlY3RvcmllcyBv
biB0aGUgbGlzdCwgYnV0IGNoZWNrIHRvIGJlIHNhZmUKKyAgICAgICAgICAgICAgICAgICAgaWYg
b3MucGF0aC5pc2RpcihvcmlnX2ZpbGVwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBjaG9rZSBpZiB0aGUgZmlsZSBj
YW4ndCBiZSBmb3VuZAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMo
b3JpZ19maWxlcGF0aCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6
ICcgKyBvcmlnX2ZpbGVwYXRoICsgJyBub3QgZm91bmQuIFBvc3NpYmxlIGVycm9yIGluIHRoZSB0
ZXN0LicKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAg
ICAgICAgIyBBcHBlbmQgdGhlIGNvcnJlY3QgZGVzdGluYXRpb24gZmlsZW5hbWUKKyAgICAgICAg
ICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxlX3Rv
X2NvcHlbJ2Rlc3QnXSkKKworICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBleHRlbnNpb24g
dG8gd29yayBpbiB0aGUgV2ViS2l0IGhhcm5lc3MKKyAgICAgICAgICAgICAgICAgICAgbmV3X2Zp
bGVwYXRoID0gbmV3X2ZpbGVwYXRoLnJlcGxhY2UoJy54aHQnLCAnLnhodG1sJykKKworICAgICAg
ICAgICAgICAgICAgICAjIE1ha2UgdGhlIGRpcmVjdG9yaWVzIG5lZWRlZAorICAgICAgICAgICAg
ICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxlcGF0
aCkpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGlybmFt
ZShuZXdfZmlsZXBhdGgpKQorCisgICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRl
IGV4aXN0aW5nIHRlc3RzIGlmIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBpZiBvcHRp
b25zLm5vX292ZXJ3cml0ZSBpcyBUcnVlIGFuZCBvcy5wYXRoLmV4aXN0cyhuZXdfZmlsZXBhdGgp
OgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBleGlz
dGluZyBmaWxlICcgKyBuZXdfZmlsZXBhdGgKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogTWF5YmUgZG9pbmcgYSBmaWxlIGRpZmYgaXMg
aW4gb3JkZXIgaGVyZSBmb3IgZXhpc3RpbmcgZmlsZXM/CisgICAgICAgICAgICAgICAgICAgICAg
ICAjICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGVyZSdzIG5vIHNlbnNlIGluIG92ZXJ3cml0aW5n
IGlkZW50aWNhbCBmaWxlcywgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRo
ZXJlJ3Mgbm8gaGFybSBpbiBjb3B5aW5nIHRoZSBpZGVudGljYWwgdGhpbmcuCisgICAgICAgICAg
ICAgICAgICAgICAgICBwcmludCAnSW1wb3J0aW5nOiAnICsgb3JpZ19maWxlcGF0aAorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnQgJyAgICAgICBBczogJyArIG5ld19maWxlcGF0aAorCisg
ICAgICAgICAgICAgICAgICAgICMgT25seSBodG1sLCB4bWwsIG9yIGNzcyBzaG91bGQgYmUgY29u
dmVydGVkCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogRXZlbnR1YWxseSwgc28gc2hvdWxk
IGpzIHdoZW4gc3VwcG9ydCBpcyBhZGRlZCBmb3IgdGhpcyB0eXBlIG9mIGNvbnZlcnNpb24KKyAg
ICAgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmlnX2Zp
bGVwYXRoKQorICAgICAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBd
KSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICd4bWwnIGluIHN0cihtaW1ldHlwZVswXSkg
IG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToK
KworICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IGZvciBXZWJLaXQKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dl
YmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCkKKworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgY29udmVydGVkX2ZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIFN0cmFpZ2h0IGNvcHkgaWYgbm90aGluZydzIGNoYW5nZWQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVw
YXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIFdyaXRlIG91dCB0aGUgY29udmVydGVkIHRlc3QKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzLmV4dGVuZChzZXQoY29udmVydGVkX2ZpbGVb
MF0pIC0gc2V0KHByZWZpeGVkX3Byb3BlcnRpZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dGZpbGUgPSBvcGVuKG5ld19maWxlcGF0aCwgJ3cnKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dGZpbGUud3JpdGUoY29udmVydGVkX2ZpbGVbMV0pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0ZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwg
bmV3X2ZpbGVwYXRoKQorCisgICAgICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcy5hcHBlbmQo
bmV3X2ZpbGVwYXRoLnJlcGxhY2Uoc2VsZi53ZWJraXRfcm9vdCwgJycpKQorCisgICAgICAgICAg
ICAgICAgIyBUYWtlIGNhcmUgb2YgYW55dGhpbmcgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQg
c2luY2UgdGhlIGxhc3QgaW1wb3J0CisgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfZGVsZXRl
ZF9maWxlcyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzKQorCisgICAgICAgICAgICAgICAgIyBEcm9w
IHNvbWUgaW5mbyBhYm91dCB3aGF0IGp1c3QgaGFwcGVuZWQgaGVyZQorICAgICAgICAgICAgICAg
IHNlbGYud3JpdGVfaW1wb3J0X2xvZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhlZF9w
cm9wZXJ0aWVzKQorCisgICAgICAgIHByaW50ICdJbXBvcnQgY29tcGxldGUnCisKKyAgICAgICAg
cHJpbnQgJ0lNUE9SVEVEICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfdGVzdHMpICsgJyBUT1RBTCBU
RVNUUycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfcmVm
dGVzdHMpICsgJyByZWZ0ZXN0cycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90
YWxfaW1wb3J0ZWRfanN0ZXN0cykgKyAnIEpTIHRlc3RzJworICAgICAgICBwcmludCAnSW1wb3J0
ZWQgJyArIHN0cih0b3RhbF9pbXBvcnRlZF90ZXN0cyAtIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMg
LSB0b3RhbF9pbXBvcnRlZF9yZWZ0ZXN0cykgKyAnIHBpeGVsL21hbnVhbCB0ZXN0cycKKworICAg
IGRlZiBzZXR1cF9kZXN0aW5hdGlvbl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIgorICAg
ICAgICAgICAgQ3JlYXRlcyBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSB0aGF0IG1pcnJvcnMgdGhh
dCBvZiB0aGUgc291cmNlIGFwcHJvdmVkLyBvcgorICAgICAgICAgICAgc3VibWl0dGVkLyBkaXJl
Y3RvcnkKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUaGUgdGVzdCBzdGF0dXMgaXMgaW4gdGhl
IHBhdGgsIHNvIGdyYWIgaXQKKyAgICAgICAgc2VsZi5nZXRfdGVzdF9zdGF0dXMoKQorCisgICAg
ICAgICMgTWlycm9yIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGluIHRoZSBjc3N3ZyByZXBvIHVu
ZGVyIGFwcHJvdmVkLyBvciBzdWJtaXR0ZWQvCisgICAgICAgIHN0YXJ0ID0gc2VsZi5zb3VyY2Vf
ZGlyZWN0b3J5LmZpbmQoc2VsZi50ZXN0X3N0YXR1cykKKyAgICAgICAgbmV3X3N1YnBhdGggPSBz
ZWxmLnNvdXJjZV9kaXJlY3Rvcnlbc3RhcnQ6bGVuKHNlbGYuc291cmNlX2RpcmVjdG9yeSldCisK
KyAgICAgICAgZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHNlbGYuZGVzdGlu
YXRpb25fZGlyZWN0b3J5LCBuZXdfc3VicGF0aCkKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5l
eGlzdHMoZGVzdGluYXRpb25fZGlyZWN0b3J5KToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRl
c3RpbmF0aW9uX2RpcmVjdG9yeSkKKworICAgICAgICBwcmludCAnVGVzdHMgd2lsbCBiZSBpbXBv
cnRlZCBpbnRvOiAnICsgZGVzdGluYXRpb25fZGlyZWN0b3J5CisKKyAgICBkZWYgZ2V0X3Rlc3Rf
c3RhdHVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgICAgU2V0cyB0aGUgdGVzdCBzdGF0
dXMgYmFzZWQgb24gdGhlIGRpcmVjdG9yeSBuYW1pbmcgY29udmVudGlvbiBpbiB0aGUgQ1NTV0cg
cmVwby4KKyAgICAgICAgICAgSXQncyBlaXRoZXIgZ29pbmcgdG8gYmUgJ2FwcHJvdmVkJyBvciAn
c3VibWl0dGVkJy4gQWx0aG91Z2ggdGhpcyBtZXRob2QKKyAgICAgICAgICAgc2hvdWxkIG5ldmVy
IGJlIGNhbGxlZCBpZiB0aGUgZGlyZWN0b3J5IGhhcyBuZWl0aGVyIG9mIHRoaXMsIHRoZSBzdGF0
dXMgaW4gdGhhdAorICAgICAgICAgICBjYXNlIGlzIGp1c3QgJ3Vua25vd24nCisgICAgICAgICIi
IgorCisgICAgICAgIHN0YXR1cyA9IFVOS05PV04KKworICAgICAgICBpZiBzZWxmLnNvdXJjZV9k
aXJlY3RvcnkuZmluZChBUFBST1ZFRCkgIT0gLTE6CisgICAgICAgICAgICBzdGF0dXMgPSBBUFBS
T1ZFRAorICAgICAgICBlbGlmIHNlbGYuc291cmNlX2RpcmVjdG9yeS5maW5kKFNVQk1JVFRFRCkg
IT0gLTE6CisgICAgICAgICAgICBzdGF0dXMgPSBTVUJNSVRURUQKKworICAgICAgICBzZWxmLnRl
c3Rfc3RhdHVzID0gc3RhdHVzCisKKyAgICBkZWYgcmVtb3ZlX2RlbGV0ZWRfZmlsZXMoc2VsZiwg
aW1wb3J0X2RpcmVjdG9yeSwgbmV3X2ZpbGVfbGlzdCk6CisgICAgICAgICIiIgorICAgICAgICBS
ZWFkcyBhIHczYy1pbXBvcnQubG9nIGluIGEgZGlyZWN0b3J5IGlmIGl0IGV4aXN0cyBhbmQgY29t
cGFyZXMgdGhlCisgICAgICAgIGxpc3Qgb2YgZmlsZXMgaW4gaXQgdG8gdGhlIG5ld2x5IGltcG9y
dGVkIGZpbGUgbGlzdCwgdGhlbiByZW1vdmVzCisgICAgICAgIGFsbCBmaWxlcyB0aGF0IGFyZSBu
b3QgaW4gdGhlIG5ldyBsaXN0ICh3aGljaCB3b3VsZCBsaWtlbHkgbWVhbgorICAgICAgICByZW1v
dmVkIGZyb20gdGhlIFczQyByZXBvKQorCisgICAgICAgIEBwYXJhbSBpbXBvcnRfZGlyZWN0b3J5
OiB0aGUgZGlyZWN0b3J5IGludG8gd2hpY2ggZmlsZXMgd2VyZSBpbXBvcnRlZAorICAgICAgICBA
cGFyYW0gbmV3X2ZpbGVfbGlzdDogdGhlIG5ldyBsaXN0IG9mIGZpbGVzIGltcG9ydGVkIGluIHRo
aXMgZGlyZWN0b3J5CisgICAgICAgICIiIgorCisgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9
IFtdCisKKyAgICAgICAgIyBGaXJzdCBjaGVjayBpZiB0aGVyZSB3YXMgYSBwcmV2aW91cyBpbXBv
cnQgaGVyZSAtIHRoZXJlIHNob3VsZCBiZSBhIGxvZworICAgICAgICBpbXBvcnRfbG9nX2ZpbGUg
PSBvcy5wYXRoLmpvaW4oaW1wb3J0X2RpcmVjdG9yeSwgJ3czYy1pbXBvcnQubG9nJykKKyAgICAg
ICAgaWYgbm90KG9zLnBhdGguZXhpc3RzKGltcG9ydF9sb2dfZmlsZSkpOgorICAgICAgICAgICAg
cmV0dXJuCisKKyAgICAgICAgaW1wb3J0X2xvZyA9IG9wZW4oaW1wb3J0X2xvZ19maWxlLCAncicp
CisgICAgICAgIGNvbnRlbnRzID0gaW1wb3J0X2xvZy5yZWFkbGluZXMoKQorCisgICAgICAgICMg
UHVsbCBsb2cgdGhlIGxpc3Qgb2YgZmlsZXMgZnJvbSB0aGUgcHJldmlvdXMgaW1wb3J0CisgICAg
ICAgIGlmICdMaXN0IG9mIGZpbGVzXG4nIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgbGlzdF9p
ZHggPSBjb250ZW50cy5pbmRleCgnTGlzdCBvZiBmaWxlczpcbicpICsgMQorICAgICAgICAgICAg
cHJldmlvdXNfZmlsZV9saXN0ID0gY29udGVudHNbbGlzdF9pZHg6XQorICAgICAgICAgICAgcHJl
dmlvdXNfZmlsZV9saXN0ID0gbWFwKGxhbWJkYSBzOiBzLnN0cmlwKCksIHByZXZpb3VzX2ZpbGVf
bGlzdCkKKworICAgICAgICBkZWxldGVkX2ZpbGVzID0gc2V0KHByZXZpb3VzX2ZpbGVfbGlzdCkg
LSBzZXQobmV3X2ZpbGVfbGlzdCkKKworICAgICAgICAjIExvb3AgdGhyb3VnaCBhbmQgcmVtb3Zl
IHRoZW0gYWxsCisgICAgICAgIGZvciBkZWxldGVkX2ZpbGUgaW4gZGVsZXRlZF9maWxlczoKKyAg
ICAgICAgICAgIHByaW50ICdEZWxldGluZyBmaWxlIHJlbW92ZWQgZnJvbSB0aGUgVzNDIHJlcG86
JyArIGRlbGV0ZWRfZmlsZQorICAgICAgICAgICAgZGVsZXRlZF9maWxlID0gb3MucGF0aC5qb2lu
KHNlbGYud2Via2l0X3Jvb3QsIGRlbGV0ZWRfZmlsZSkKKyAgICAgICAgICAgIG9zLnJlbW92ZShk
ZWxldGVkX2ZpbGUpCisKKyAgICAgICAgaW1wb3J0X2xvZy5jbG9zZSgpCisKKyAgICBkZWYgd3Jp
dGVfaW1wb3J0X2xvZyhzZWxmLCBpbXBvcnRfZGlyZWN0b3J5LCBmaWxlX2xpc3QsIHByb3BfbGlz
dCk6CisgICAgICAgICIiIgorICAgICAgICBXcml0ZXMgYSB3M2MtaW1wb3J0LmxvZyBmaWxlIGlu
IGVhY2ggZGlyZWN0b3J5IHdpdGggaW1wb3J0ZWQgZmlsZXMuCisgICAgICAgIFRoZSBsb2cgZmls
ZSBjb250YWlucyBhIHRpbWVzdGFtcCBvZiB0aGUgaW1wb3J0LCB0aGUgVzNDIE1lcmN1cmlhbAor
ICAgICAgICBjaGFuZ2VzZXQgKGlmIGF2YWlsYWJsZSksIHRoZSBzdGF0dXMgb2YgdGhlIHRlc3Rz
IChhcHByb3ZlZCBvciBzdWJtaXR0ZWQpLAorICAgICAgICB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVz
IHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IHVzZWQgaW4gdGhlIGZpbGVzCisgICAgICAg
IG9uIHRoZSBsaXN0LCBhbmQgdGhlIGxpc3Qgb2YgZmlsZXMgaW1wb3J0ZWQuCisKKyAgICAgICAg
QHBhcmFtIGltcG9ydF9kaXJlY3Rvcnk6IHRoZSBkaXJlY3RvcnkgaW50byB3aGljaCBmaWxlcyB3
ZXJlIGltcG9ydGVkCisgICAgICAgIEBwYXJhbSBuZXdfZmlsZV9saXN0OiB0aGUgbmV3IGxpc3Qg
b2YgZmlsZXMgaW1wb3J0ZWQgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICAgICAgQHBhcmFtIHByb3Bf
bGlzdDogdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBw
cmVmaXgKKyAgICAgICAgIiIiCisKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93
KCkKKworICAgICAgICAjIENyZWF0ZSBhIGxvZyBvZiB0aGlzIGltcG9ydCB3aXRoIGFsbCBzb3J0
cyBvZiBnb29kIGluZm9ybWF0aW9uCisgICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKG9zLnBhdGgu
am9pbihpbXBvcnRfZGlyZWN0b3J5LCAndzNjLWltcG9ydC5sb2cnKSwgJ3cnKQorICAgICAgICBp
bXBvcnRfbG9nLndyaXRlKCdUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUo
J0RvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Via2l0LiBJbnN0ZWFkLCBw
dXNoIGNoYW5nZXMgdG8gdGhlIFczQyBDU1MgcmVwbzpcblxuJykKKyAgICAgICAgaW1wb3J0X2xv
Zy53cml0ZSgnaHR0cDovL2hnLmNzc3dnLm9yZy90ZXN0XG5cbicpCisgICAgICAgIGltcG9ydF9s
b2cud3JpdGUoJ1RoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2Via2l0IHRvIHJlaW1wb3J0XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0RvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZVxuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndy
aXRlKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xhc3Qg
SW1wb3J0OiAnICsgbm93LnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTScpICsgJ1xuJykKKyAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZSgnVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQ6ICcgKyBzZWxmLmNo
YW5nZXNldCArICdcbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1Rlc3Qgc3RhdHVzIGF0
IHRpbWUgb2YgaW1wb3J0OiAnICsgc2VsZi50ZXN0X3N0YXR1cyArICdcbicpCisgICAgICAgIGlt
cG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOlxuJykKKyAgICAgICAg
aWYgbGVuKHByb3BfbGlzdCkgPT0gMDoKKyAgICAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ05v
bmVcbicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgcHJvcCBpbiBwcm9wX2xpc3Q6
CisgICAgICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZShwcm9wICsgJ1xuJykKKyAgICAgICAg
aW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nKQorICAgICAgICBpbXBvcnRfbG9n
LndyaXRlKCdMaXN0IG9mIGZpbGVzOlxuJykKKyAgICAgICAgZm9yIGl0ZW0gaW4gZmlsZV9saXN0
OgorICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZShpdGVtICsgJ1xuJykKKworICAgICAgICBp
bXBvcnRfbG9nLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjZhZTNiOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTEgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9t
IHdlYmtpdHB5LnczYyBpbXBvcnQgdGVzdF9jb252ZXJ0ZXIKK2Zyb20gd2Via2l0cHkudzNjLnRl
c3RfaW1wb3J0ZXIgaW1wb3J0IFRlc3RJbXBvcnRlcgoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRl
c3QyIGFzIHVuaXR0ZXN0CisKK1dFQktJVF9ST09UID0gX19maWxlX18uc3BsaXQob3MucGF0aC5z
ZXAgKyAnVG9vbHMnKVswXQorCisKK2NsYXNzIFRlc3RJbXBvcnRlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorCisgICAgZGVmIHRlc3RfSW1wb3J0RGlyV2l0aE5vVGVzdHMoc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICAgICBUZXN0cyBkb19pbXBvcnQoKSB3aXRoIGEgZGlyZWN0b3J5IHRo
YXQgY29udGFpbnMgbm8gdGVzdHMgLSB1c2luZworICAgICAgICAgICBhIFdlYmtpdCBzb3VyY2Ug
ZGlyZWN0b3J5IHRoYXQgc2hvdWxkIG5ldmVyIGNvbnRhaW4gVzNDIHRlc3RzCisgICAgICAgICIi
IgorICAgICAgICBkaXJfd2l0aF9ub190ZXN0cyA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwg
dGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5TT1VSQ0VfU1VCRElSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9jb252ZXJ0ZXIuV0VCQ09SRV9TVUJESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSKQorCisg
ICAgICAgIGltcG9ydGVyID0gVGVzdEltcG9ydGVyKGRpcl93aXRoX25vX3Rlc3RzLCBOb25lKQor
ICAgICAgICBpbXBvcnRlci5kb19pbXBvcnQoKQorCisKKyAgICAjIFRPRE86IE5lZWQgbW9yZSB0
ZXN0cywgYnV0IHdoYXQgdG8gdXNlIGZvciB2YWxpZCBzb3VyY2UgZGlyZWN0b3J5PyBNYWtlIGl0
IG9uIHRoZSBmbHkKKyAgICAjICAgICAgIGFuZCBjbGVhbiBpdCB1cCBhZnRlcndhcmQ/CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmI4YWFmNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpAQCAtMCwwICsxLDE4MCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zy
b20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3Vw
IGFzIFBhcnNlcgoraW1wb3J0IG9zCitpbXBvcnQgcmUKKworCitjbGFzcyBUZXN0UGFyc2VyKG9i
amVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZmlsZW5hbWUpOgorICAg
ICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxl
bmFtZQorICAgICAgICBzZWxmLnRlc3RfZG9jID0gc2VsZi5sb2FkX2ZpbGUoZmlsZW5hbWUpCisg
ICAgICAgIHNlbGYucmVmX2RvYyA9IE5vbmUKKworICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwgcGF0
aCk6CisgICAgICAgICIiIgorICAgICAgICBPcGVucyBhbmQgcmVhZCB0aGUgZmlsZSB0byBwYXJz
ZQorCisgICAgICAgIEBwYXJhbSBwYXRoOiBmdWxsIHBhdGggdG8gdGhlIGZpbGUKKworICAgICAg
ICBAcmV0dXJuOiBhIG5ldyBCZWF1dGlmdWxTb3VwIHBhcnNlciBmb3IgdGhlIGZpbGUKKyAgICAg
ICAgIiIiCisgICAgICAgIGRvYyA9IE5vbmUKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhw
YXRoKToKKyAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgpCisgICAgICAgICAgICBodG1sID0gZi5y
ZWFkKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgICAgICBkb2MgPSBQYXJzZXIo
aHRtbCkKKworICAgICAgICByZXR1cm4gZG9jCisKKyAgICBkZWYgYW5hbHl6ZV90ZXN0KHNlbGYs
IHRlc3RfY29udGVudHM9Tm9uZSwgcmVmX2NvbnRlbnRzPU5vbmUpOgorICAgICAgICAiIiIKKyAg
ICAgICAgQW5hbHl6ZXMgYSBmaWxlIHRvIGRldGVybWluZSBpZiBpdCdzIGEgdGVzdCwgd2hhdCB0
eXBlIG9mIHRlc3QsCisgICAgICAgIGFuZCB3aGF0IHJlZmVyZW5jZSBvciBzdXBwb3J0IGZpbGVz
IGl0IHJlcXVpcmVzCisKKyAgICAgICAgQHJldHVybjogRGljdGlvbmFyeSB7IHRlc3Q6IG9yaWdp
bmFsIGFic29sdXRlIHBhdGggdG8gdGhlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZmVyZW5jZTogb3JpZ2luYWwgYWJzb2x1dGUgcGF0aCB0byB0aGUgcmVmZXJlbmNlIGZp
bGUgKGlmIGEgcmVmdGVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnN1cHBv
cnQ6IHJlZmVyZW5jZSBmaWxlIGRlcGVuZGVuY2llcyAoaWYgYSByZWZ0ZXN0KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAganN0ZXN0OiBUcnVlIChpZiBhIGpzdGVzdCkKKyAgICAgICAg
IiIiCisKKyAgICAgICAgdGVzdF9pbmZvID0gTm9uZQorCisgICAgICAgIGlmIHRlc3RfY29udGVu
dHMgaXMgTm9uZSBhbmQgc2VsZi50ZXN0X2RvYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJu
IHRlc3RfaW5mbworCisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBzZWxmLnRlc3RfZG9jID0gUGFyc2VyKHRlc3RfY29udGVudHMpCisKKyAgICAgICAg
aWYgcmVmX2NvbnRlbnRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5yZWZfZG9jID0g
UGFyc2VyKHJlZl9jb250ZW50cykKKworICAgICAgICAjIEZpcnN0IGNoZWNrIGlmIGl0J3MgYSBy
ZWZ0ZXN0CisgICAgICAgIG1hdGNoZXMgPSBzZWxmLmdldF9yZWZ0ZXN0cyhUcnVlKQorICAgICAg
ICBpZiBsZW4obWF0Y2hlcykgIT0gMDoKKworICAgICAgICAgICAgaWYgbGVuKG1hdGNoZXMpID4g
MToKKyAgICAgICAgICAgICAgICBwcmludCAnV2FybmluZzogV2Via2l0IGRvZXMgbm90IHN1cHBv
cnQgbXVsdGlwbGUgcmVmZXJlbmNlcy4gSW1wb3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5lZCBp
biAnICsgb3MucGF0aC5iYXNlbmFtZShzZWxmLmZpbGVuYW1lKQorCisgICAgICAgICAgICByZWZf
ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5maWxlbmFtZSksIG1hdGNo
ZXNbMF1bJ2hyZWYnXSkKKyAgICAgICAgICAgIGlmIHNlbGYucmVmX2RvYyBpcyBOb25lOgorICAg
ICAgICAgICAgICAgIHNlbGYucmVmX2RvYyA9IHNlbGYubG9hZF9maWxlKHJlZl9maWxlKQorCisg
ICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAncmVmZXJlbmNl
JzogcmVmX2ZpbGV9CisKKyAgICAgICAgICAgICMgSWYgdGhlIHJlZiBmaWxlIHBhdGggaXMgcmVs
YXRpdmUsIHdlIG5lZWQgdG8gY2hlY2sgaXQgZm9yIHJlbGF0aXZlIHBhdGhzCisgICAgICAgICAg
ICAjIGJlY2F1c2Ugd2hlbiBpdCBsYW5kcyBpbiBXZWJraXQsIGl0IHdpbGwgYmUgbW92ZWQgZG93
biBpbnRvIHRoZSB0ZXN0IGRpcgorICAgICAgICAgICAgIyBOb3RlOiBUaGUgdGVzdCBmaWxlcyB0
aGVtc2VsdmVzIGFyZSBub3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxlcworICAgICAgICAgICAg
IyB0aGF0IGxpdmUgb3V0c2lkZSB0aGVpciBkaXJlY3RvcmllcyBhcyBpdCdzIHRoZSBjb252ZW50
aW9uIGluIHRoZSBDU1NXRworICAgICAgICAgICAgIyB0byBwdXQgYWxsIHN1cHBvcnQgZmlsZXMg
aW4gdGhlIHNhbWUgZGlyIG9yIHN1YmRpciBhcyB0aGUgdGVzdC4gQWxsIG5vbi10ZXN0CisgICAg
ICAgICAgICAjIGZpbGVzIGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5IHRyZWUgYXJlIGF1dG9tYXRp
Y2FsbHkgY29waWVkIGFzIHBhcnQgb2YgdGhlIGltcG9ydCBhcworICAgICAgICAgICAgIyB0aGV5
IGFyZSBhc3N1bWVkIHRvIGJlIHJlcXVpcmVkIHN1cHBvcnQgZmlsZXMgVGhlcmUgaXMgZXhhY3Rs
eSBvbmUgY2FzZSBpbiB0aGUgZW50aXJlCisgICAgICAgICAgICAjIGNzczIuMSBzdWl0ZSB3aGVy
ZSBhdCB0ZXN0IGRlcGVuZHMgb24gYSBmaWxlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgZGly
ZWN0b3J5LCB3aGljaAorICAgICAgICAgICAgIyBkZXBlbmRzIG9uIGFub3RoZXIgZmlsZSB0aGF0
IGxpdmVzIG91dHNpZGUgb2YgaXRzIGRpcmVjdG9yeS4gVGhpcyBjb2RlIGNvdmVycyB0aGF0IGNh
c2UgOikKKyAgICAgICAgICAgIGlmIG1hdGNoZXNbMF1bJ2hyZWYnXS5zdGFydHN3aXRoKCcuLicp
OgorICAgICAgICAgICAgICAgIHN1cHBvcnRGaWxlcyA9IHNlbGYuZ2V0X3N1cHBvcnRfZmlsZXMo
c2VsZi5yZWZfZG9jKQorICAgICAgICAgICAgICAgIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddID0g
c3VwcG9ydEZpbGVzCisKKyAgICAgICAgIyBOZXh0LCBpZiBpdCdzIGEgSlMgdGVzdAorICAgICAg
ICBlbGlmIHNlbGYuaXNfanN0ZXN0KCk6CisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3Qn
OiBzZWxmLmZpbGVuYW1lLCAnanN0ZXN0JzogVHJ1ZX0KKworICAgICAgICAjIE9yIGlmIHdlIGV4
cGxpY2l0bHkgd2FudCBldmVyeXRoaW5nCisgICAgICAgIGVsaWYgc2VsZi5vcHRpb25zWydhbGwn
XSBpcyBUcnVlIGFuZCBcCisgICAgICAgICAgICAgbm90KCctcmVmJyBpbiBzZWxmLmZpbGVuYW1l
KSBhbmQgXAorICAgICAgICAgICAgIG5vdCgncmVmZXJlbmNlJyBpbiBzZWxmLmZpbGVuYW1lKToK
KyAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWV9CisKKyAgICAg
ICAgIyBDb3VydGVzeSBjaGVjayBhbmQgd2FybmluZyBpZiB0aGVyZSBhcmUgYW55IG1pc21hdGNo
ZXMKKyAgICAgICAgbWlzbWF0Y2hlcyA9IHNlbGYuZ2V0X3JlZnRlc3RzKEZhbHNlKQorICAgICAg
ICBpZiBsZW4obWlzbWF0Y2hlcykgIT0gMDoKKyAgICAgICAgICAgIHByaW50ICJXYXJuaW5nOiBX
ZWJraXQgZG9lcyBub3Qgc3VwcG9ydCBtaXNtYXRjaCByZWZlcmVuY2VzLiBJZ25vcmluZyBtaXNt
YXRjaCBkZWZpbmVkIGluICIgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZmlsZW5hbWUpCisKKyAg
ICAgICAgcmV0dXJuIHRlc3RfaW5mbworCisgICAgZGVmIGdldF9yZWZ0ZXN0cyhzZWxmLCBmaW5k
X21hdGNoKToKKyAgICAgICAgIiIiCisgICAgICAgIFNlYXJjaGVzIGZvciBhbGwgcmVmZXJlbmNl
IGxpbmtzIGluIHRoZSBmaWxlCisKKyAgICAgICAgQHBhcmFtIGZpbmRfbWF0Y2g6IEJvb2xlYW4s
IFRydWUgdG8gc2VhcmNoIGZvciBtYXRjaCBsaW5rcywgRmFsc2UgdG8gc2VhcmNoIGZvciBtaXNt
YXRjaCBsaW5rcworICAgICAgICAiIiIKKyAgICAgICAgaWYgZmluZF9tYXRjaDoKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLnRlc3RfZG9jLmZpbmRBbGwocmVsPSdtYXRjaCcpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2RvYy5maW5kQWxsKHJlbD0nbWlzbWF0
Y2gnKQorCisgICAgZGVmIGlzX2pzdGVzdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFNl
YXJjaGVzIHRoZSBmaWxlIGZvciB1c2FnZSBvZiBXM0Mtc3R5bGUgdGVzdGhhcm5lc3MgcGF0aHMK
KworICAgICAgICBAcmV0dXJuOiBUcnVlIGlmIGZvdW5kCisgICAgICAgICIiIgorICAgICAgICBp
ZiBzZWxmLnRlc3RfZG9jLmZpbmQoc3JjPXJlLmNvbXBpbGUoJ1tcJ1wiL10/L3Jlc291cmNlcy90
ZXN0aGFybmVzcycpKSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zdXBwb3J0X2Zp
bGVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIgorICAgICAgICBTZWFyY2hlcyB0aGUgZmlsZSBm
b3IgYWxsIHBhdGhzIHNwZWNpZmllZCBpbiB1cmwoKSdzLCBocmVmIG9yIHNyYyBhdHRyaWJ1dGVz
CisKKyAgICAgICAgQHJldHVybjogdGhlIGxpc3Qgb2YgcGF0aHMKKyAgICAgICAgIiIiCisKKyAg
ICAgICAgc3VwcG9ydF9maWxlcyA9IFtdCisKKyAgICAgICAgaWYgZG9jIGlzIE5vbmU6CisgICAg
ICAgICAgICByZXR1cm4gc3VwcG9ydF9maWxlcworCisgICAgICAgICMgTG9vayBmb3IgdGFncyB3
aXRoIHNyYyBvciBocmVmIGF0dHJpYnV0ZXMKKyAgICAgICAgc3JjX2F0dHJzID0gZG9jLmZpbmRB
bGwoc3JjPXJlLmNvbXBpbGUoJy4qJykpCisgICAgICAgIGhyZWZfYXR0cnMgPSBkb2MuZmluZEFs
bChocmVmPXJlLmNvbXBpbGUoJy4qJykpCisKKyAgICAgICAgIyBMb29rIGZvciB1cmxzCisgICAg
ICAgIHVybF9wYXR0ZXJuID0gcmUuY29tcGlsZSgndXJsXCguKlwpJykKKyAgICAgICAgdXJscyA9
IFtdCisgICAgICAgIGZvciB1cmwgaW4gZG9jLmZpbmRBbGwodGV4dD11cmxfcGF0dGVybik6Cisg
ICAgICAgICAgICB1cmwgPSByZS5zZWFyY2godXJsX3BhdHRlcm4sIHVybCkKKyAgICAgICAgICAg
IHVybCA9IHJlLnN1YigndXJsXChbXCdcIl0nLCAnJywgdXJsLmdyb3VwKDApKQorICAgICAgICAg
ICAgdXJsID0gcmUuc3ViKCdbXCdcIl1cKScsICcnLCB1cmwpCisgICAgICAgICAgICB1cmxzLmFw
cGVuZCh1cmwpCisKKyAgICAgICAgc3JjX3BhdGhzID0gW3NyY190YWdbJ3NyYyddIGZvciBzcmNf
dGFnIGluIHNyY19hdHRyc10KKyAgICAgICAgaHJlZl9wYXRocyA9IFtocmVmX3RhZ1snaHJlZidd
IGZvciBocmVmX3RhZyBpbiBocmVmX2F0dHJzXQorCisgICAgICAgIHBhdGhzID0gc3JjX3BhdGhz
ICsgaHJlZl9wYXRocyArIHVybHMKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAg
ICAgICAjIElnbm9yZSBodHRwIGFuZCBtYWlsdG8gbGlua3MKKyAgICAgICAgICAgIGlmIG5vdChw
YXRoLnN0YXJ0c3dpdGgoJ2h0dHA6JykpIGFuZCBcCisgICAgICAgICAgICAgICBub3QocGF0aC5z
dGFydHN3aXRoKCdtYWlsdG86JykpOgorICAgICAgICAgICAgICAgIHN1cHBvcnRfZmlsZXMuYXBw
ZW5kKHBhdGgpCisKKyAgICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM1M2VlZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEs
MzU2IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRlc3RQ
YXJzZXIKK2ltcG9ydCBzeXMKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IHVuaXR0ZXN0MiBhcyB1
bml0dGVzdAoraW1wb3J0IG9zCisKK29wdGlvbnMgPSB7J2FsbCc6IEZhbHNlLCAnbm9fb3Zlcndy
aXRlJzogRmFsc2V9CisKKworY2xhc3MgVGVzdFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2goc2VsZik6CisgICAg
ICAgICIiIgorICAgICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIGJhc2ljIHJlZnRl
c3Qgd2l0aAorICAgICAgICBvbmUgbWF0Y2ggbGluayBhbmQgbm8gbWlzbWF0Y2ggbGlua3MKKyAg
ICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9U
Ui94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElP
TiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRI
T1IiIGhyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayBy
ZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwor
Q1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRF
U1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFk
ZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0
aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVf
dGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29y
cmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVz
dF9pbmZvLCBOb25lLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmls
ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5
cygpLCAnZGlkIG5vdCBmaW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUodGVzdF9pbmZvWydyZWZlcmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0aCksICdyZWZl
cmVuY2UgcGF0aCBpcyBub3QgY29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Jl
ZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3Vw
cG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0
ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBhbmFs
eXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RNdWx0
aXBsZU1hdGNoZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFseXplX3Rl
c3QoKSB1c2luZyBhIHJlZnRlc3Qgd2l0aAorICAgICAgICBtdWx0aXBsZSBtYXRjaCBsaW5rcyBh
bmQgbm8gbWlzbWF0Y2ggbGlua3MKKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0g
IiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9F
TiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4K
KzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRp
dGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0
aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiIGhyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8v
Q09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VD
VElPTiIvPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8
bGluayByZWw9Im1hdGNoIiBocmVmPSJibHVlLWJveC1yZWYueGh0IiAvPgorPGxpbmsgcmVsPSJt
YXRjaCIgaHJlZj0ib3JhbmdlLWJveC1yZWYueGh0IiAvPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJURVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFU
QVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVOVCBP
RiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBDYXB0dXJlIHN0ZG91dCBm
b3IgdGhpcyB0ZXN0CisgICAgICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgb3V0cHV0
ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBzeXMuc3Rkb3V0ID0gb3V0cHV0CisKKyAg
ICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRl
dXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRo
ICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90
ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAgICAgICMgUmVzdG9yZSBzdGRvdXQK
KyAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3Jy
ZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0
X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxl
JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlz
KCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVy
ZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVm
c3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBw
b3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rl
c3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5
emVkIGFzIGEganN0ZXN0JykKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgdGhlIHdhcm5pbmcg
YWJvdXQgbXVsdGlwbGUgbWF0Y2hlcworICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0Lmdl
dHZhbHVlKCkuc3RhcnRzd2l0aCgnV2FybmluZycpLCAnbm8gd2FybmluZyBhYm91dCBtdWx0aXBs
ZSBtYXRjaGVzJykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE1hdGNoQW5kTWlz
bWF0Y2goc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1
c2luZyBhIHJlZnRlc3Qgd2l0aAorICAgICAgICBhIG9uZSBtYXRjaCBsaW5rIGFuZCBvbmUgbWlz
bWF0Y2ggbGluaworICAgICAgICAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZ
UEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6
Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRl
c3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxl
PSJOQU1FX09GX0FVVEhPUiIgaHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BB
R0UiLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8
bGluayByZWw9Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KKzxsaW5rIHJlbD0i
bWF0Y2giIGhyZWY9ImJsdWUtYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1pc21hdGNoIiBo
cmVmPSJvcmFuZ2UtYm94LW5vdHJlZi54aHQiIC8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwor
Q1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRF
U1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIENhcHR1cmUgc3Rkb3V0IGZvciB0
aGlzIHRlc3QKKyAgICAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICBvdXRwdXQgPSBT
dHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHN5cy5zdGRvdXQgPSBvdXRwdXQKKworICAgICAg
ICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9w
YXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAn
c29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3Qo
dGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBSZXN0b3JlIHN0ZG91dAorICAg
ICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3Qg
dGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5m
bywgTm9uZSwgJ2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
J3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwg
J2RpZCBub3QgZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHRlc3RfaW5mb1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNl
IHBhdGggaXMgbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBw
b3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQg
ZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcg
aW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6ZWQg
YXMgYSBqc3Rlc3QnKQorCisgICAgICAgICMgVmVyaWZ5IHdlIGdvdCBtdWx0aXBsZSB3YXJuaW5n
cworICAgICAgICB3YXJuaW5ncyA9IG91dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4od2FybmluZ3MpLCAyLCAnYWxsIHdhcm5pbmdzIHdl
cmUgbm90IGRpc3BsYXllZCcpCisgICAgICAgICMgVmVyaWZ5IHRoZSBib3RoIHdhcm5pbmdzIG1l
bnRpb24gdGhlIGlzc3VlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbXVsdGlwbGUgbWF0Y2hl
cycsICdubyB3YXJuaW5nIGFib3V0IG11bHRpcGxlIG1hdGNoZXMnKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoJ21pc21hdGNoJywgJ25vIHdhcm5pbmcgYWJvdXQgbWlzbWF0Y2hlcycpCisKKyAg
ICBkZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RXaXRoUmVmU3VwcG9ydEZpbGVzKHNlbGYpOgor
ICAgICAgICAiIiIKKyAgICAgICAgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0
IHRoYXQgaGFzIHJlZmVycyB0byBhCisgICAgICAgIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUgb2Yg
dGhlIHRlc3RzIGRpcmVjdG9yeSBhbmQgdGhlIHJlZmVyZW5jZQorICAgICAgICBmaWxlIGhhcyBw
YXRocyB0byBvdGhlciBzdXBwb3J0IGZpbGVzCisgICAgICAgICIiIgorCisgICAgICAgIHRlc3Rf
aHRtbCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0
cmljdC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0
LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVh
ZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayBy
ZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiBocmVmPSJtYWlsdG86RU1BSUwgT1Ig
aHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJSRUxFVkFOVF9T
UEVDX1NFQ1RJT04iLz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9Ii4uL3JlZmVyZW5jZS9ncmVl
bi1ib3gtcmVmLnhodCIgLz4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVEVTVCBBU1NF
UlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1MgRk9SIFRFU1QK
K11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAorPC9ib2R5Pgor
PC9odG1sPgorIiIiCisgICAgICAgIHJlZl9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9U
Ui94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBSZWZ0ZXN0IFJlZmVyZW5j
ZTwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiBocmVm
PSJtYWlsdG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgaHJlZj0ic3Vw
cG9ydC9jc3MvcmVmLXN0eWxlc2hlZXQuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQv
Y3NzIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCisgICAgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCIuLi8uLi9zdXBwb3J0L3NvbWUtaW1hZ2UucG5nIikKK11dPjwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXY+PGltZyBzcmM9Ii4uL3N1cHBvcnQvYmxhY2s5Nng5Ni5wbmci
IGFsdD0iSW1hZ2UgZG93bmxvYWQgc3VwcG9ydCBtdXN0IGJlIGVuYWJsZWQiIC8+PC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAg
IHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQ
YXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0
X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sLCByZWZf
Y29udGVudHM9cmVmX2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBp
bmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9u
ZSwgJ2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3Qn
IGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBu
b3QgZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3Rf
aW5mb1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGgg
aXMgbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnN1cHBvcnQnIGlu
IHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgcmVmc3VwcG9ydCBmaWxlcyBmb3Ig
dGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKHRlc3RfaW5mb1sncmVm
c3VwcG9ydCddKSwgMywgJ3RoZXJlIHNob3VsZCBiZSAzIHN1cHBvcnQgZmlsZXMgaW4gdGhpcyBy
ZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5m
by5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0
JykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVKU1Rlc3Qoc2VsZik6CisgICAgICAgICIiIgorICAg
ICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIGpzdGVzdAorICAgICAgICAiIiIKKwor
ICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFRE
IFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQv
eGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3Rp
dGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhPUiIKK2hyZWY9Im1h
aWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhy
ZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPG1ldGEgbmFtZT0iYXNz
ZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48
IVtDREFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09O
VEVOVCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBBbmFseXplIHRo
ZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAg
IHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwn
KQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9
dGVzdF9odG1sKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMg
Zm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0
X2luZm8gaXMgTm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9p
bmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBoYXZl
IGZvdW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZz
dXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBv
cnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnanN0ZXN0
JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgYmUgYSBqc3Rlc3QnKQorCisgICAg
ZGVmIHRlc3RfYW5hbHl6ZVBpeGVsVGVzdEFsbFRydWUoc2VsZik6CisgICAgICAgICIiIgorICAg
ICAgICBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEg
cmVmdGVzdCBvciBqc3Rlc3Qgd2l0aCBhbGw9RmFsc2UKKyAgICAgICAgIiIiCisKKyAgICAgICAg
IyBCYXNpYyB0ZXN0IGNvbnRlbnQgdXNpbmcgYWxsIHRocmVlIHRlc3RoYXJuZXNzIGZpbGVzCisg
ICAgICAgIHRlc3RfaHRtbCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQg
WEhUTUwgMS4wIFN0cmljdC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94
aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0
bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIgoraHJlZj0ibWFp
bHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9
IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NT
IEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QK
KzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIFNldCBvcHRpb25zIHRvICdhbGwnIHNv
IHRoaXMgZ2V0cyBmb3VuZAorICAgICAgICBvcHRpb25zWydhbGwnXSA9IFRydWUKKworICAgICAg
ICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9w
YXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAn
c29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3Qo
dGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3Qg
dGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5m
bywgTm9uZSwgJ3Rlc3RfaW5mbyBpcyBOb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0
ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
c2hvbGQgbm90IGhhdmUgZm91bmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQg
YmUgbm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGJl
IGEganN0ZXN0JykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVQaXhlbFRlc3RBbGxGYWxzZShzZWxm
KToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3RzIGFuYWx5emVfdGVzdCgpIHVzaW5nIGEgdGVz
dCB0aGF0IGlzIG5laXRoZXIgYSByZWZ0ZXN0IG9yIGpzdGVzdCwgd2l0aCAtYWxsPUZhbHNlCisg
ICAgICAgICIiIgorCisgICAgICAgICMgQmFzaWMgdGVzdCBjb250ZW50IHVzaW5nIGFsbCB0aHJl
ZSB0ZXN0aGFybmVzcyBmaWxlcworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZUEUgaHRt
bCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6Ly93d3cu
dzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERF
U0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJOQU1F
X09GX0FVVEhPUiIKK2hyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPG1ldGEg
bmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj48IVtDREFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorQ09OVEVOVCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBT
ZXQgYWxsIHRvIGZhbHNlIHNvIHRoaXMgZ2V0cyBza2lwcGVkCisgICAgICAgIG9wdGlvbnNbJ2Fs
bCddID0gRmFsc2UKKworICAgICAgICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9w
YXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihv
cHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9
IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAg
IyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ3Rlc3Qgc2hvdWxkIGhhdmUgYmVlbiBza2lwcGVk
JykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVOb25IVE1MRmlsZShzZWxmKToKKyAgICAgICAgIiIi
CisgICAgICAgIFRlc3RzIGFuYWx5emVfdGVzdCgpIHdpdGggYSBmaWxlIHRoaXMgaXNuJ3QgaHRt
bCAodGhpcyBvbmUhKQorICAgICAgICAiIiIKKworICAgICAgICAjIFRyeSB0byBhbmFseXplIHRo
ZSBzY3JpcHQgZmlsZSB3ZSdyZSB0ZXN0aW5nIChob3cgbWV0YSkKKyAgICAgICAgdGVzdF9wYXJz
ZXJfcHlfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAndGVz
dF9wYXJzZXIucHknKQorCisgICAgICAgICMgQW5hbHl6ZSB0aGUgZmlsZQorICAgICAgICBwYXJz
ZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGFyc2VyX3B5X2ZpbGUpCisgICAgICAgIHRl
c3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QoKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBj
b3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0
X2luZm8sIE5vbmUsICdubyB0ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGZvdW5kIGluIHRoaXMgZmls
ZScpCg==
</data>
<flag name="review"
          id="216076"
          type_id="1"
          status="-"
          setter="dpranke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200295</attachid>
            <date>2013-05-01 18:31:37 -0700</date>
            <delta_ts>2013-05-02 07:16:00 -0700</delta_ts>
            <desc>Incorporated Dirk&apos;s feedback</desc>
            <filename>bug111513-05-01-13.patch</filename>
            <type>text/plain</type>
            <size>71593</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMDY1
MzZmLi43ZDU2ZTVhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTMtMDUtMDEgIFJlYmVjY2EgSGF1Y2sgIDxyaGF1
Y2tAYWRvYmUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3Jp
cHQgdG8gYXV0b21hdGUgdGhlIGltcG9ydCBvZiBXM0MgdGVzdHMgaW50byBXZWJLaXQuIAorICAg
ICAgICBGb3IgdGhlIGZ1bGwgZGVzY3JpcHRpb24gb2YgaG93IGl0IHdvcmtzLCBzZWUgdGhlIGNv
bW1lbnRzCisgICAgICAgIGF0IHRoZSB0b3Agb2YgdGVzdF9pbXBvcnRlci5weS4KKworICAgICAg
ICAqIFNjcmlwdHMvaW1wb3J0LXczYy10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS93M2MvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIp
OgorICAgICAgICAoVGVzdENvbnZlcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0Q29udmVy
dGVyLmxvYWRfcHJlZml4ZWRfcHJvcF9saXN0KToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIubG9h
ZF9maWxlKToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KToKKyAg
ICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyk6CisgICAgICAg
IChUZXN0Q29udmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgIChU
ZXN0Q29udmVydGVyLnNjcnViX3VucHJlZml4ZWRfcHJvcHMpOgorICAgICAgICAoVGVzdENvbnZl
cnRlci5yZXBsYWNlX3RhZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9j
b252ZXJ0ZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3Qp
OgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QudGVzdExvYWRQcmVmaXhlZFByb3BMaXN0KToK
KyAgICAgICAgKFRlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfY29udmVydEZvcldlYmtpdE5vdGhpbmdU
b0NvbnZlcnQpOgorICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkpOgor
ICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNPbmx5KToKKyAgICAgICAgKHRlc3Rf
Y29udmVydEZvcldlYmtpdEhhcm5lc3NBbmRQcm9wcyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRU
ZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGll
cyk6CisgICAgICAgICh2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHZlcmlmeVBy
ZWZpeGVkUHJvcGVydGllcyk6CisgICAgICAgIChnZW5lcmF0ZVRlc3RDb250ZW50KToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OiBBZGRlZC4KKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgICh2YWxpZGF0ZV9pbXBv
cnRfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlcik6CisgICAgICAgIChUZXN0SW1w
b3J0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6CisgICAg
ICAgIChUZXN0SW1wb3J0ZXIuZ2V0X2NoYW5nZXNldCk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIu
c2Nhbl9zb3VyY2VfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVz
dHMpOgorICAgICAgICAoVGVzdEltcG9ydGVyLnNldHVwX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeSk6
CisgICAgICAgIChUZXN0SW1wb3J0ZXIuZ2V0X3Rlc3Rfc3RhdHVzKToKKyAgICAgICAgKFRlc3RJ
bXBvcnRlci5yZW1vdmVfZGVsZXRlZF9maWxlcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3Jp
dGVfaW1wb3J0X2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBv
cnRlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0KToKKyAg
ICAgICAgKFRlc3RJbXBvcnRlclRlc3QudGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6IEFkZGVkLgorICAgICAg
ICAoVGVzdFBhcnNlcik6CisgICAgICAgIChUZXN0UGFyc2VyLl9faW5pdF9fKToKKyAgICAgICAg
KFRlc3RQYXJzZXIubG9hZF9maWxlKToKKyAgICAgICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0
KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3JlZnRlc3RzKToKKyAgICAgICAgKFRlc3RQYXJz
ZXIuaXNfanN0ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3N1cHBvcnRfZmlsZXMpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0
LnRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2gpOgorICAgICAgICAodGVzdF9hbmFseXpl
VGVzdFJlZnRlc3RNdWx0aXBsZU1hdGNoZXMpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJl
ZnRlc3RNYXRjaEFuZE1pc21hdGNoKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0
V2l0aFJlZlN1cHBvcnRGaWxlcyk6CisgICAgICAgICh0ZXN0X2FuYWx5emVKU1Rlc3QpOgorICAg
ICAgICAodGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsVHJ1ZSk6CisgICAgICAgICh0ZXN0X2FuYWx5
emVQaXhlbFRlc3RBbGxGYWxzZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVOb25IVE1MRmlsZSk6
CisKIDIwMTMtMDQtMzAgIEdsZW5uIEFkYW1zICA8Z2xlbm5Ac2t5bmF2LmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiBBZGQgbXlzZWxmIHRvIHdhdGNobGlzdCBlbnRyaWVzLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE5ODc3YmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKQEAgLTAsMCAr
MSwzMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS53M2MgaW1wb3J0IHRl
c3RfaW1wb3J0ZXIKKworCitzeXMuZXhpdCh0ZXN0X2ltcG9ydGVyLm1haW4oc3lzLmFyZ3ZbMTpd
LCBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvX19pbml0
X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40YTIwNDhjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkKQEAgLTAsMCArMSwyMDYgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMi
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwK
KyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisj
IFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBp
bXBvcnQgQmVhdXRpZnVsU291cAorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNv
dXAgaW1wb3J0IFRhZworaW1wb3J0IHJlCitpbXBvcnQgb3MKKworU09VUkNFX1NVQkRJUiA9ICdT
b3VyY2UnCitXRUJDT1JFX1NVQkRJUiA9ICdXZWJDb3JlJworQ1NTX1NVQkRJUiA9ICdjc3MnCitD
U1NfUFJPUEVSVFlfTkFNRVNfSU4gPSAnQ1NTUHJvcGVydHlOYW1lcy5pbicKK0xBWU9VVF9URVNU
U19ESVJFQ1RPUlkgPSAnTGF5b3V0VGVzdHMnCitSRVNPVVJDRVNfRElSRUNUT1JZID0gJ3Jlc291
cmNlcycKK1dFQktJVF9ST09UID0gX19maWxlX18uc3BsaXQob3MucGF0aC5zZXAgKyAnVG9vbHMn
KVswXQorCisKK2NsYXNzIFRlc3RDb252ZXJ0ZXIob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKworICAgICAgICBzZWxmLnByZWZpeGVkX3Byb3BlcnRpZXMgPSBzZWxmLmxvYWRf
cHJlZml4ZWRfcHJvcF9saXN0KCkKKworICAgIGRlZiBsb2FkX3ByZWZpeGVkX3Byb3BfbGlzdChz
ZWxmKToKKyAgICAgICAgIiIiIFJlYWRzIHRoZSBjdXJyZW50IGxpc3Qgb2YgQ1NTIHByb3BlcnRp
ZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggZnJvbSBTb3VyY2UvV2ViQ29yZS9DU1Mv
Q1NTUHJvcGVydHlOYW1lcy5pbiBhbmQgc3RvcmVzIHRoZW0gaW4gYW4gaW5zdGFuY2UgdmFyaWFi
bGUgIiIiCisKKyAgICAgICAgcHJlZml4ZWRfcHJvcF9saXN0ID0gW10KKworICAgICAgICAjIE9w
ZW4gQ1NTUHJvcGVydHlOYW1lcy5pbiB0byBnZXQgdGhlIGN1cnJlbnQgbGlzdCBvZiB0aGluZ3Mg
cmVxdWlyaW5nIHByZWZpeGVzCisgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihvcy5wYXRo
LnNlcCwgV0VCS0lUX1JPT1QsIFNPVVJDRV9TVUJESVIsIFdFQkNPUkVfU1VCRElSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU19TVUJESVIsIENTU19QUk9Q
RVJUWV9OQU1FU19JTikpCisgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICBm
b3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICMgTG9vayBmb3IgYW55dGhpbmcgd2l0aCB0
aGUgLXdlYmtpdC0gcHJlZml4CisgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgnXi13ZWJr
aXQtW1x3fC1dKicsIGxpbmUpCisgICAgICAgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICAjIElnbm9yZSB0aGUgb25lcyB3aGVyZSBib3RoIHRoZSBwcmVmaXhlZCBh
bmQgbm9uLXByZWZpeGVkIHByb3BlcnR5CisgICAgICAgICAgICAgICAgIyBhcmUgc3VwcG9ydGVk
IC0gZGVub3RlZCBieSAtd2Via2l0LXNvbWUtcHJvcGVydHkgPSBzb21lLXByb3BlcnR5CisgICAg
ICAgICAgICAgICAgaWYgbGVuKGxpbmUuc3BsaXQoJz0nKSkgPT0gMiBhbmQgXAorICAgICAgICAg
ICAgICAgICAgIGxpbmUuc3BsaXQoJz0nKVsxXS5zdHJpcCgpIGluIGxpbmUuc3BsaXQoJz0nKVsw
XS5zdHJpcCgpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeGVkX3Byb3BfbGlzdC5hcHBlbmQobWF0
Y2guZ3JvdXAoMCkpCisKKyAgICAgICAgcmV0dXJuIHByZWZpeGVkX3Byb3BfbGlzdAorCisgICAg
ZGVmIGxvYWRfZmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIiBPcGVucyB0aGUgdGVz
dCBmaWxlIHxmaWxlbmFtZXwgdG8gY29udmVydCAiIiIKKworICAgICAgICBmID0gb3BlbihmaWxl
bmFtZSkKKyAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKQorICAgICAgICBmLmNsb3NlKCkKKwor
ICAgICAgICByZXR1cm4gY29udGVudHMKKworICAgIGRlZiBjb252ZXJ0X2Zvcl93ZWJraXQoc2Vs
ZiwgbmV3X3BhdGgsIGNvbnRlbnRzPU5vbmUsIGZpbGVuYW1lPU5vbmUpOgorICAgICAgICAiIiIg
Q29udmVydHMgYSBmaWxlJ3MgfGNvbnRlbnRzfCBzbyBpdCB3aWxsIGZ1bmN0aW9uIGNvcnJlY3Rs
eSBpbiBpdHMgfG5ld19wYXRofCBpbiBXZWJraXQuIFJldHVybnMgdGhlIGxpc3Qgb2YgcHJlZml4
ZWQgQ1NTIHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCBjb250ZW50cy4iIiIKKworICAgICAg
ICBpZiBjb250ZW50cyBpcyBOb25lIGFuZCBmaWxlbmFtZSBpcyBOb25lOgorICAgICAgICAgICAg
cmV0dXJuIE5vbmUKKworICAgICAgICBpZiBjb250ZW50cyBpcyBOb25lOgorICAgICAgICAgICAg
Y29udGVudHMgPSBzZWxmLmxvYWRfZmlsZShmaWxlbmFtZSkKKworICAgICAgICAjIEhhbmRsZSBw
bGFpbiBvbGQgQ1NTIGZpbGVzCisgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcuY3NzJyk6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zY3J1Yl91bnByZWZpeGVkX3Byb3BzKGNvbnRlbnRz
KQorCisgICAgICAgICMgT3RoZXJ3aXNlLCBwYXJzZSBpdCBhcyBpZiBIVE1MCisgICAgICAgIGRv
YyA9IEJlYXV0aWZ1bFNvdXAoY29udGVudHMpCisgICAgICAgIGpzdGVzdCA9IHNlbGYuY29udmVy
dF90ZXN0aGFybmVzc19wYXRocyhkb2MsIG5ld19wYXRoKQorICAgICAgICBjb252ZXJ0ZWQgPSBz
ZWxmLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhkb2MpCisKKyAgICAgICAgaWYgbGVuKGNv
bnZlcnRlZFswXSkgPiAwIG9yIGpzdGVzdCBpcyBUcnVlOgorICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRlZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRl
ZiBjb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKHNlbGYsIGRvYywgbmV3X3BhdGgpOgorICAgICAg
ICAiIiIgVXBkYXRlIGxpbmtzIHRvIHRlc3RoYXJuZXNzLmpzIGluIHRoZSBCZWF1dGlmdWxTb3Vw
IHxkb2N8IHRvIHBvaW50IHRvIHRoZSBjb3B5IGluIHxuZXdfcGF0aHwuIFJldHVybnMgd2hldGhl
ciB0aGUgZG9jdW1lbnQgd2FzIG1vZGlmaWVkLiIiIgorCisgICAgICAgICMgTG9vayBmb3IgdGhl
IFczQy1zdHlsZSBwYXRoIHRvIGFueSB0ZXN0aGFybmVzcyBmaWxlcyAtIHNjcmlwdHMgKC5qcykg
b3IgbGlua3MgKC5jc3MpCisgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCcvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzJykKKyAgICAgICAgc2NyaXB0X3RhZ3MgPSBkb2MuZmluZEFsbChzcmM9cGF0
dGVybikKKyAgICAgICAgbGlua190YWdzID0gZG9jLmZpbmRBbGwoaHJlZj1wYXR0ZXJuKQorICAg
ICAgICB0ZXN0aGFybmVzc190YWdzID0gc2NyaXB0X3RhZ3MgKyBsaW5rX3RhZ3MKKworICAgICAg
ICBpZiBsZW4odGVzdGhhcm5lc3NfdGFncykgIT0gMDoKKworICAgICAgICAgICAgIyBDb25zdHJ1
Y3QgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgbmV3IGRpcmVjdG9yeSB0byBMYXlvdXRUZXN0
cy9yZXNvdXJjZXMKKyAgICAgICAgICAgIHJlc291cmNlc19wYXRoID0gb3MucGF0aC5qb2luKG9z
LnBhdGguc2VwLCBXRUJLSVRfUk9PVCwgTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwgUkVTT1VSQ0VT
X0RJUkVDVE9SWSkKKyAgICAgICAgICAgIHJlc291cmNlc19yZWxwYXRoID0gb3MucGF0aC5yZWxw
YXRoKHJlc291cmNlc19wYXRoLCBuZXdfcGF0aCkKKworICAgICAgICAgICAgZm9yIHRhZyBpbiB0
ZXN0aGFybmVzc190YWdzOgorICAgICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgdGFnIHdpdGgg
dGhlIGNvcnJlY3QgcGF0aAorICAgICAgICAgICAgICAgIGF0dHIgPSAnc3JjJworICAgICAgICAg
ICAgICAgIGlmIHRhZy5uYW1lICE9ICdzY3JpcHQnOgorICAgICAgICAgICAgICAgICAgICBhdHRy
ID0gJ2hyZWYnCisKKyAgICAgICAgICAgICAgICAjIEJ1aWxkIGEgbmV3IHRhZyB3aXRoIHRoZSBj
b3JyZWN0IHJlbGF0aXZlIHBhdGgKKyAgICAgICAgICAgICAgICBvbGRfcGF0aCA9IHRhZ1thdHRy
XQorICAgICAgICAgICAgICAgIG5ld190YWcgPSBUYWcoZG9jLCB0YWcubmFtZSwgdGFnLmF0dHJz
KQorICAgICAgICAgICAgICAgIG5ld190YWdbYXR0cl0gPSByZS5zdWIocGF0dGVybiwgcmVzb3Vy
Y2VzX3JlbHBhdGggKyAnL3Rlc3RoYXJuZXNzJywgb2xkX3BhdGgpCisKKyAgICAgICAgICAgICAg
ICAjIFVwZGF0ZSB0aGUgZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxm
LnJlcGxhY2VfdGFnKGRvYywgdGFnLCBuZXdfdGFnKQorCisgICAgICAgICAgICByZXR1cm4gVHJ1
ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgY29u
dmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIiBTZWFyY2hl
cyBhIEJlYXV0aWZ1bFNvdXAgfGRvY3wgZm9yIGFueSBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcg
dGhlIC13ZWJraXQtIHByZWZpeCBhbmQgY29udmVydHMgdGhlbS4gUmV0dXJucyB0aGUgbGlzdCBv
ZiBjb252ZXJ0ZWQgcHJvcGVydGllcyBhbmQgdGhlIG1vZGlmaWVkIGRvY3VtZW50IGFzIGEgc3Ry
aW5nICIiIgorCisgICAgICAgIGNvbnZlcnRlZF9wcm9wcyA9IFtdCisKKyAgICAgICAgIyBMb29r
IGZvciBpbmxpbmUgYW5kIGRvY3VtZW50IHN0eWxlcworICAgICAgICBpbmxpbmVfc3R5bGVzID0g
ZG9jLmZpbmRBbGwoc3R5bGU9cmUuY29tcGlsZSgnLionKSkKKyAgICAgICAgc3R5bGVfdGFncyA9
IGRvYy5maW5kQWxsKCdzdHlsZScpCisgICAgICAgIGFsbF9zdHlsZXMgPSBpbmxpbmVfc3R5bGVz
ICsgc3R5bGVfdGFncworCisgICAgICAgIGZvciB0YWcgaW4gYWxsX3N0eWxlczoKKworICAgICAg
ICAgICAgIyBHZXQgdGhlIHRleHQgd2hldGhlciBpbiBhIHN0eWxlIHRhZyBvciBzdHlsZSBhdHRy
aWJ1dGUKKyAgICAgICAgICAgIHN0eWxlX3RleHQgPSAnJworICAgICAgICAgICAgaWYgdGFnLm5h
bWUgPT0gJ3N0eWxlJzoKKyAgICAgICAgICAgICAgICBpZiBsZW4odGFnLmNvbnRlbnRzKSA9PSAw
OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgICAgIHN0eWxlX3RleHQgPSB0YWcuY29udGVudHNbMF0KKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3R5bGVfdGV4dCA9IHRhZ1snc3R5bGUnXQorCisg
ICAgICAgICAgICAjIFNjcnViIGl0IGZvciBwcm9wcyByZXF1aXJpbmcgcHJlZml4ZXMKKyAgICAg
ICAgICAgIHNjcnViYmVkX3N0eWxlID0gc2VsZi5zY3J1Yl91bnByZWZpeGVkX3Byb3BzKHN0eWxl
X3RleHQpCisKKyAgICAgICAgICAgICMgUmV3cml0ZSB0YWcgb25seSBpZiBjaGFuZ2VzIHdlcmUg
bWFkZQorICAgICAgICAgICAgaWYgbGVuKHNjcnViYmVkX3N0eWxlWzBdKSA+IDA6CisgICAgICAg
ICAgICAgICAgY29udmVydGVkX3Byb3BzLmV4dGVuZChzY3J1YmJlZF9zdHlsZVswXSkKKworICAg
ICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgdGFnIHdpdGggdGhlIG1vZGlmaWVkIHRleHQKKyAg
ICAgICAgICAgICAgICBuZXdfdGFnID0gVGFnKGRvYywgdGFnLm5hbWUsIHRhZy5hdHRycykKKyAg
ICAgICAgICAgICAgICBuZXdfdGFnLmluc2VydCgwLCBzY3J1YmJlZF9zdHlsZVsxXSkKKworICAg
ICAgICAgICAgICAgICMgVXBkYXRlIHRoZSBkb2Mgd2l0aCB0aGUgbmV3IHRhZworICAgICAgICAg
ICAgICAgIHNlbGYucmVwbGFjZV90YWcoZG9jLCB0YWcsIG5ld190YWcpCisKKyAgICAgICAgcmV0
dXJuIChjb252ZXJ0ZWRfcHJvcHMsIGRvYy5wcmV0dGlmeSgpKQorCisgICAgZGVmIHNjcnViX3Vu
cHJlZml4ZWRfcHJvcHMoc2VsZiwgdGV4dCk6CisgICAgICAgICIiIiBTZWFyY2hlcyB8dGV4dHwg
Zm9yIGluc3RhbmNlcyBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4
IGFuZCBhZGRzIHRoZSBwcmVmaXguIFJldHVybnMgdGhlIGxpc3Qgb2YgY29udmVydGVkIHByb3Bl
cnRpZXMgYW5kIHRoZSBtb2RpZmllZCBzdHJpbmcgIiIiCisKKyAgICAgICAgY29udmVydGVkX3By
b3BzID0gW10KKworICAgICAgICAjIFNwaW4gdGhyb3VnaCB0aGUgd2hvbGUgbGlzdCBvZiBwcmVm
aXhlZCBwcm9wZXJ0aWVzCisgICAgICAgIGZvciBwcmVmaXhlZF9wcm9wIGluIHNlbGYucHJlZml4
ZWRfcHJvcGVydGllczoKKworICAgICAgICAgICAgIyBQdWxsIHRoZSBwcmVmaXggb2ZmCisgICAg
ICAgICAgICB1bnByZWZpeGVkX3Byb3AgPSBwcmVmaXhlZF9wcm9wLnJlcGxhY2UoJy13ZWJraXQt
JywgJycpCisKKyAgICAgICAgICAgICMgTG9vayBmb3IgdGhlIHZhcmlvdXMgd2F5cyBpdCBtaWdo
dCBiZSBpbiB0aGUgQ1NTCisgICAgICAgICAgICAjIE1hdGNoIHRoZSB0aGUgcHJvcGVydHkgcHJl
Y2VkZWQgYnkgZWl0aGVyIHdoaXRlc3BhY2Ugb3IgbGVmdCBjdXJseSBicmFjZQorICAgICAgICAg
ICAgIyBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgKGZvciBpbmxpbmUgc3R5bGUg
YXR0cmlidXRlKQorICAgICAgICAgICAgcGF0dGVybiA9ICcoW1xze118XiknICsgdW5wcmVmaXhl
ZF9wcm9wICsgJyhccys6fDopJworICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHBhdHRlcm4sIHRl
eHQpOgorICAgICAgICAgICAgICAgIHByaW50ICdjb252ZXJ0aW5nICcgKyB1bnByZWZpeGVkX3By
b3AgKyAnIC0+ICcgKyBwcmVmaXhlZF9wcm9wCisgICAgICAgICAgICAgICAgY29udmVydGVkX3By
b3BzLmFwcGVuZChwcmVmaXhlZF9wcm9wKQorICAgICAgICAgICAgICAgIHRleHQgPSByZS5zdWIo
cGF0dGVybiwgcHJlZml4ZWRfcHJvcCArICc6JywgdGV4dCkKKworICAgICAgICAjIFRPRE86IEhh
bmRsZSB0aGUgSlMgdmVyc2lvbnMgb2YgdGhlc2UgcHJvcGVydGllcywgdG9vLgorCisgICAgICAg
IHJldHVybiAoY29udmVydGVkX3Byb3BzLCB0ZXh0KQorCisgICAgZGVmIHJlcGxhY2VfdGFnKHNl
bGYsIGRvYywgb2xkX3RhZywgbmV3X3RhZyk6CisgICAgICAgICIiIiBJbnNlcnRzIGEgfG5ld190
YWd8IGludG8gYSBCZWF1dGlmdWxTb3VwIHxkb2N8IGFuZCByZW1vdmVzIHRoZSB8b2xkX3RhZ3wg
IiIiCisKKyAgICAgICAgIyBSZXBsYWNlIHRoZSBwcmV2aW91cyB0YWcgd2l0aCB0aGUgbmV3IG9u
ZQorICAgICAgICBpbmRleCA9IG9sZF90YWcucGFyZW50LmNvbnRlbnRzLmluZGV4KG9sZF90YWcp
CisgICAgICAgIG9sZF90YWcucGFyZW50Lmluc2VydChpbmRleCwgbmV3X3RhZykKKyAgICAgICAg
b2xkX3RhZy5leHRyYWN0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjM4YzhhYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMzYwIEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNv
cnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQg
QU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorIyBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisjIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisjIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNI
IERBTUFHRS4KKworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0
IEJlYXV0aWZ1bFNvdXAKK2ltcG9ydCBvcworZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQKK2lt
cG9ydCByZQorZnJvbSB3ZWJraXRweS53M2MudGVzdF9jb252ZXJ0ZXIgaW1wb3J0IFRlc3RDb252
ZXJ0ZXIKK2Zyb20gd2Via2l0cHkudzNjIGltcG9ydCB0ZXN0X2NvbnZlcnRlcgoraW1wb3J0IHVu
aXR0ZXN0MiBhcyB1bml0dGVzdAorCisKK2NsYXNzIFRlc3RDb252ZXJ0ZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0TG9hZFByZWZpeGVkUHJvcExpc3Qoc2VsZik6Cisg
ICAgICAgICIiIiBUZXN0cyB0aGF0IHRoZSBjdXJyZW50IGxpc3Qgb2YgcHJvcGVydGllcyByZXF1
aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBsb2FkIGNvcnJlY3RseSAiIiIKKworICAgICAgICAj
IEdldCB0aGUgZnVsbCBsaXN0IG9mIHByZWZpeGVkIHByb3BlcnRpZXMKKyAgICAgICAgY29udmVy
dGVyID0gVGVzdENvbnZlcnRlcigpCisgICAgICAgIHByb3BfbGlzdCA9IGNvbnZlcnRlci5wcmVm
aXhlZF9wcm9wZXJ0aWVzCisKKyAgICAgICAgIyBWZXJpZnkgd2UgZ290IHByb3BlcnRpZXMgYmFj
aworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHByb3BfbGlzdCksIDAsICdObyBwcmVm
aXhlZCBwcm9wZXJ0aWVzIGZvdW5kJykKKworICAgICAgICAjIFZlcmlmeSB0aGV5J3JlIGFsbCBw
cmVmaXhlZAorICAgICAgICBmb3IgcHJvcCBpbiBwcm9wX2xpc3Q6CisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUocHJvcC5zdGFydHN3aXRoKCctd2Via2l0LScpKQorCisgICAgZGVmIHRlc3Rf
Y29udmVydEZvcldlYmtpdE5vdGhpbmdUb0NvbnZlcnQoc2VsZik6CisgICAgICAgICIiIiBUZXN0
cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2ljIHRlc3QgdGhhdCBoYXMgbm90aGlu
ZyB0byBjb252ZXJ0ICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjwhRE9DVFlQRSBodG1s
IFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisiaHR0cDovL3d3dy53
My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVT
Q1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVf
T0ZfQVVUSE9SIgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BBR0UiLz4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8bWV0YSBu
YW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252
ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIFRyeSB0byBjb252ZXJ0IHRoZSBo
dG1sCisgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X2Zvcl93ZWJraXQoJy9u
b3RoaW5nL3RvL2NvbnZlcnQnLCBjb250ZW50cz10ZXN0X2h0bWwsIGZpbGVuYW1lPSdzb21lZmls
ZS5odG1sJykKKworICAgICAgICAjIFZlcmlmeSBub3RoaW5nIHdhcyBjb252ZXJ0ZWQKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBzaG91bGQgbm90
IGhhdmUgYmVlbiBjb252ZXJ0ZWQnKQorCisgICAgZGVmIHRlc3RfY29udmVydEZvcldlYmtpdEhh
cm5lc3NPbmx5KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29udmVydF9mb3Jfd2Via2l0KCkg
dXNpbmcgYSBiYXNpYyBKUyB0ZXN0IHRoYXQgdXNlcyB0ZXN0aGFybmVzcy5qcyBvbmx5IGFuZCBo
YXMgbm8gcHJlZml4ZWQgcHJvcGVydGllcyAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8
aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0
Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRpcmVj
dG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3Rf
Y29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIu
Q1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnaGFybmVzc29ubHknKQorCisgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBj
b252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3RfcGF0aCwgY29udGVu
dHM9dGVzdF9odG1sLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisKKyAgICAgICAgIyBWZXJp
ZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29u
dmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJp
ZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQor
ICAgICAgICBzZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoY29udmVydGVkWzFdLCB0ZXN0X3Bh
dGgsIDEsIDEpCisKKyAgICAgICAgIyBWZXJpZnkgbm8gcHJvcGVydGllcyB3ZXJlIGNvbnZlcnRl
ZAorICAgICAgICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIFtdKQor
CisgICAgZGVmIHRlc3RfY29udmVydEZvcldlYmtpdFByb3BzT25seShzZWxmKToKKyAgICAgICAg
IiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGhhcyAyIHBy
ZWZpeGVkIHByb3BlcnRpZXM6IDEgaW4gYSBzdHlsZSBibG9jayArIDEgaW5saW5lIHN0eWxlICIi
IgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayBocmVmPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCisjYmxvY2sxIHsgQHRlc3QwQDogcHJvcHZhbHVlOyB9
CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRl
c3QxQDogcHJvcHZhbHVlOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKworICAgICAg
ICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRv
IGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4o
b3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNU
U19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnaGFybmVzc2FuZHByb3BzJykKKworICAgICAgICAjIEdlbmVy
YXRlICYgaW5zZXJ0IHRoZSB0ZXN0IHByb3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisgICAg
ICAgIHRlc3RfY29udGVudCA9IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIucHJl
Zml4ZWRfcHJvcGVydGllcywgMiwgdGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0aGUg
aHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRl
c3RfcGF0aCwgY29udGVudHM9dGVzdF9jb250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRt
bCcpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAgIHNl
bGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZlcnRl
ZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIGFuZCBw
cm9wZXJ0aWVzIHdlcmUgYWxsIGNvbnZlcnRlZCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi52ZXJp
ZnlUZXN0SGFybmVzc1BhdGhzKGNvbnZlcnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQorICAgICAg
ICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFsw
XSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRGb3JXZWJraXRIYXJuZXNzQW5kUHJvcHMoc2VsZik6
CisgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2ljIEpT
IHRlc3QgdGhhdCB1c2VzIHRlc3RoYXJuZXNzLmpzIGFuZCB0ZXN0aGFybmVzcy5jc3MgYW5kIGhh
cyA0IHByZWZpeGVkIHByb3BlcnRpZXM6IDMgaW4gYSBzdHlsZSBibG9jayArIDEgaW5saW5lIHN0
eWxlICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayBo
cmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCisjYmxvY2sxIHsgQHRlc3QwQDogcHJvcHZh
bHVlOyB9CisjYmxvY2syIHsgQHRlc3QxQDogcHJvcHZhbHVlOyB9CisjYmxvY2szIHsgQHRlc3Qy
QDogcHJvcHZhbHVlOyB9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVs
ZW0xIiBzdHlsZT0iQHRlc3QzQDogcHJvcHZhbHVlOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CisiIiIKKyAgICAgICAgY29udmVydGVyID0gVGVzdENvbnZlcnRlcigpCisKKyAgICAgICAgIyBD
cmVhdGUgcGF0aCB0byBhIGZha2UgdGVzdCBkaXJlY3RvcnkKKyAgICAgICAgdGVzdF9wYXRoID0g
b3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRfUk9PVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRl
ci5MQVlPVVRfVEVTVFNfRElSRUNUT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkNTU19TVUJESVIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcm5lc3NhbmRwcm9wcycpCisKKyAg
ICAgICAgIyBHZW5lcmF0ZSAmIGluc2VydCB0aGUgdGVzdCBwcm9wZXJ0aWVzIGludG8gdGhlIHRl
c3RfaHRtbAorICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlVGVzdENvbnRlbnQo
Y29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDQsIHRlc3RfaHRtbCkKKworICAgICAgICAj
IENvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRf
Zm9yX3dlYmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfY29udGVudFsxXSwgZmlsZW5hbWU9
J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5l
ZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2Fz
IG5vdCBjb252ZXJ0ZWQnKQorCisgICAgICAgICMgVmVyaWZ5IHRoYXQgYm90aCB0aGUgaGFybmVz
cyBwYXRocyBhbmQgcHJvcGVydGllcyB3ZXJlIGFsbCBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAg
ICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhjb252ZXJ0ZWRbMV0sIHRlc3RfcGF0aCwg
MSwgMSkKKyAgICAgICAgc2VsZi52ZXJpZnlQcmVmaXhlZFByb3BlcnRpZXMoY29udmVydGVkLCB0
ZXN0X2NvbnRlbnRbMF0pCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0VGVzdEhhcm5lc3NQYXRocyhz
ZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMoKSB3aXRo
IGEgdGVzdCB0aGF0IHVzZXMgYWxsIHRocmVlIHRlc3RoYXJuZXNzIGZpbGVzICIiIgorCisgICAg
ICAgICMgQmFzaWMgdGVzdCBjb250ZW50IHVzaW5nIGFsbCB0aHJlZSB0ZXN0aGFybmVzcyBmaWxl
cworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKyIi
IgorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0
ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5w
YXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxB
WU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3NwYXRocycpCisKKyAgICAg
ICAgIyBDb252ZXJ0IHRoZSBodG1sCisgICAgICAgIGRvYyA9IEJlYXV0aWZ1bFNvdXAodGVzdF9o
dG1sKQorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19w
YXRocyhkb2MsIHRlc3RfcGF0aCkKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFw
cGVuZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnZlcnRlZCwgJ3Rlc3Qgd2FzIG5vdCBj
b252ZXJ0ZWQnKQorCisgICAgICAgICMgVmVyaWZ5IGFsbCBnb3QgY29udmVydGVkIGNvcnJlY3Rs
eQorICAgICAgICBzZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoZG9jLCB0ZXN0X3BhdGgsIDIs
IDEpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0UHJlZml4ZWRQcm9wZXJ0aWVzKHNlbGYpOgorICAg
ICAgICAiIiIgVGVzdHMgY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKCkgZmlsZSB0aGF0IGhh
cyAyMCBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4OgorICAgICAgICAx
MCBpbiBvbmUgc3R5bGUgYmxvY2sgKyA1IGluIGFub3RoZXIgc3R5bGUKKyAgICAgICAgYmxvY2sg
KyA1IGlubGluZSBzdHlsZXMsIGluY2x1ZGluZyBvbmUgd2l0aCBtdWx0aXBsZSBwcmVmaXhlZCBw
cm9wZXJ0aWVzLgorICAgICAgICBUaGUgcHJvcGVydGllcyBpbiB0aGUgdGVzdCBjb250ZW50IGFy
ZSBpbiBhbGwgc29ydHMgb2Ygd2FjayBmb3JtYXR0aW5nLgorICAgICAgICAiIiIKKworICAgICAg
ICB0ZXN0X2h0bWwgPSAiIiI8aHRtbD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFb
CisKKy5ibG9jazEgeworICAgIHdpZHRoOiAzMDBweDsKKyAgICBoZWlnaHQ6IDMwMHB4Cit9CisK
Ky5ibG9jazIgeworICAgIEB0ZXN0MEA6IHByb3B2YWx1ZTsKK30KKworLmJsb2NrM3tAdGVzdDFA
OiBwcm9wdmFsdWU7fQorCisuYmxvY2s0IHsgQHRlc3QyQDpwcm9wdmFsdWU7IH0KKworLmJsb2Nr
NXsgQHRlc3QzQCA6cHJvcHZhbHVlOyB9CisKKyNibG9jazYgeyAgICBAdGVzdDRAICAgOiAgIHBy
b3B2YWx1ZTsgIH0KKworI2Jsb2NrNworeworICAgIEB0ZXN0NUA6IHByb3B2YWx1ZTsKK30KKwor
I2Jsb2NrOCB7IEB0ZXN0NkA6IHByb3B2YWx1ZTsgfQorCisjYmxvY2s5OnBzZXVkbworeworCisg
ICAgQHRlc3Q3QDogcHJvcHZhbHVlOworICAgIEB0ZXN0OEA6ICBwcm9wdmFsdWUgcHJvcHZhbHVl
IHByb3B2YWx1ZTs7Cit9CisKK11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2
IGlkPSJlbGVtMSIgc3R5bGU9IkB0ZXN0OUA6IHByb3B2YWx1ZTsiPjwvZGl2PgorICAgIDxkaXYg
aWQ9ImVsZW0yIiBzdHlsZT0icHJvcG5hbWU6IHByb3B2YWx1ZTsgQHRlc3QxMEAgOiBwcm9wdmFs
dWU7IHByb3BuYW1lOnByb3B2YWx1ZTsiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImVsZW0yIiBzdHls
ZT0iQHRlc3QxMUA6IHByb3B2YWx1ZTsgQHRlc3QxMkAgOiBwcm9wdmFsdWU7IEB0ZXN0MTNAICAg
OnByb3B2YWx1ZTsiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImVsZW0zIiBzdHlsZT0iQHRlc3QxNEA6
cHJvcHZhbHVlIj48L2Rpdj4KKzwvYm9keT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RB
VEFbCisKKy5ibG9jazEweyBAdGVzdDE1QDogcHJvcHZhbHVlOyB9CisuYmxvY2sxMXsgQHRlc3Qx
NkA6IHByb3B2YWx1ZTsgfQorLmJsb2NrMTJ7IEB0ZXN0MTdAOiBwcm9wdmFsdWU7IH0KKyNibG9j
azEzOnBzZXVkbworeworICAgIEB0ZXN0MThAOiBwcm9wdmFsdWU7CisgICAgQHRlc3QxOUA6IHBy
b3B2YWx1ZTsKK30KKworXV0+PC9zdHlsZT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252ZXJ0
ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIEdlbmVyYXRlICYgaW5zZXJ0IHRoZSB0
ZXN0IHByb3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisgICAgICAgIHRlc3RfY29udGVudCA9
IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcywg
MjAsIHRlc3RfaHRtbCkKKworICAgICAgICAjIENvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29u
dmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhCZWF1dGlmdWxT
b3VwKHRlc3RfY29udGVudFsxXSkpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9uIGhh
cHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAndGVz
dCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgYWxsIHRoZSBnZW5lcmF0
ZWQgdGVzdCBwcm9wZXJ0aWVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQorICAgICAgICBzZWxm
LnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFswXSkKKwor
ICAgIGRlZiB2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKHNlbGYsIGNvbnZlcnRlZCwgdGVzdF9wYXRo
LCBudW1fc3JjX3BhdGhzLCBudW1faHJlZl9wYXRocyk6CisgICAgICAgICIiIiBWZXJpZmllcyBh
bGwgVzNDLXN0eWxlIHBhdGhzIHRvIHRlc3QgaGFybmVzcyBmaWxlcyB3ZXJlIGNvbnZlcnRlZCBj
b3JyZWN0bHkgIiIiCisKKyAgICAgICAgIyBNYWtlIHNvdXAgaWYgd2UgbmVlZCB0bworICAgICAg
ICBpZiBpc2luc3RhbmNlKGNvbnZlcnRlZCwgYmFzZXN0cmluZyk6CisgICAgICAgICAgICBjb252
ZXJ0ZWQgPSBCZWF1dGlmdWxTb3VwKGNvbnZlcnRlZCkKKworICAgICAgICAjIEJ1aWxkIHRoZSBw
YXRoIHRvIExheW91dFRlc3RzL3Jlc291cmNlcworICAgICAgICByZXNvdXJjZXNfZGlyID0gb3Mu
cGF0aC5qb2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRfUk9PVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0
ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuUkVTT1VSQ0VTX0RJUkVDVE9SWSkK
KworICAgICAgICAjIFZlcmlmeSB0aGUgb3JpZ2luYWwgcGF0aHMgYXJlIG5vIGxvbmdlciB0aGVy
ZQorICAgICAgICBvcmlnX3BhdGhfcGF0dGVybiA9IHJlLmNvbXBpbGUoJ1wiL3Jlc291cmNlcy90
ZXN0aGFybmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmlu
ZEFsbChzcmM9b3JpZ19wYXRoX3BhdHRlcm4pKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Rlc3RoYXJuZXNzIHNyYyBwYXRoIHdhcyBub3QgY29udmVydGVkJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKGhyZWY9b3JpZ19wYXRoX3BhdHRl
cm4pKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIGhyZWYgcGF0
aCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBHZXQgdGhlIG5ldyByZWxwYXRoIGZy
b20gdGhlIHRlc3RlciBkaXIKKyAgICAgICAgbmV3X3JlbHBhdGggPSBvcy5wYXRoLnJlbHBhdGgo
cmVzb3VyY2VzX2RpciwgdGVzdF9wYXRoKQorCisgICAgICAgICMgVmVyaWZ5IGl0J3MgaW4gYWxs
IHRoZSByaWdodCBwbGFjZXMKKyAgICAgICAgcmVscGF0aF9wYXR0ZXJuID0gcmUuY29tcGlsZShu
ZXdfcmVscGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5k
QWxsKHNyYz1yZWxwYXRoX3BhdHRlcm4pKSwgbnVtX3NyY19wYXRocywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIHNyYyByZWxhdGl2ZSBwYXRoIG5vdCBjb3JyZWN0JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKGhyZWY9cmVs
cGF0aF9wYXR0ZXJuKSksIG51bV9ocmVmX3BhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAndGVzdGhhcm5lc3MgaHJlZiByZWxhdGl2ZSBwYXRoIG5vdCBjb3JyZWN0JykKKworICAgIGRl
ZiB2ZXJpZnlQcmVmaXhlZFByb3BlcnRpZXMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3Byb3BlcnRp
ZXMpOgorICAgICAgICAiIiIgVmVyaWZpZXMgYSBsaXN0IG9mIHRlc3RfcHJvcGVydGllcyB3ZXJl
IGNvbnZlcnRlZCBjb3JyZWN0bHkgIiIiCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbnVt
YmVyIG9mIHRlc3QgcHJvcGVydGllcyBlcXVhbHMgdGhlIG51bWJlciB0aGF0IHdlcmUgY29udmVy
dGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnZlcnRlZFswXSksIGxlbih0ZXN0
X3Byb3BlcnRpZXMpLCAnSW5jb3JyZWN0IG51bWJlciBvZiBwcm9wZXJ0aWVzIGNvbnZlcnRlZCcp
CisKKyAgICAgICAgIyBWZXJpZnkgdGhleSdyZSBhbGwgaW4gdGhlIGNvbnZlcnRlZCBkb2N1bWVu
dAorICAgICAgICBmb3IgdGVzdF9wcm9wIGluIHRlc3RfcHJvcGVydGllczoKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgodGVzdF9wcm9wIGluIGNvbnZlcnRlZFsxXSksICdQcm9wZXJ0eSAn
ICsgdGVzdF9wcm9wICsgJyBub3QgZm91bmQgaW4gY29udmVydGVkIGRvYycpCisKKyAgICBkZWYg
Z2VuZXJhdGVUZXN0Q29udGVudChzZWxmLCBmdWxsX3Byb3BfbGlzdCwgbnVtX3Rlc3RfcHJvcGVy
dGllcywgaHRtbCk6CisgICAgICAgICIiIiBHZW5lcmF0ZXMgYSByYW5kb20gbGlzdCBvZiB1bmlx
dWUgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBhbmQgaW5zZXJ0cyB0
aGVtIGludG8gaHRtbCBjb250ZW50IHRoYXQncyBiZWVuIHRva2VuaXplZCB1c2luZyBcJ0B0ZXN0
WFhAXCcgc3ludGF4ICIiIgorCisgICAgICAgIHRlc3RfcHJvcGVydGllcyA9IFtdCisKKyAgICAg
ICAgIyBHcmFiIGEgcmFuZG9tIGJ1bmNoIG9mIDIwIHVuaXF1ZSBwcm9wZXJ0aWVzIHJlcXVpcmlu
ZyBwcmVmaXhlcyB0byB0ZXN0IHdpdGgKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxl
IGNvdW50IDwgbnVtX3Rlc3RfcHJvcGVydGllczoKKyAgICAgICAgICAgIGlkeCA9IHJhbmRpbnQo
MCwgbGVuKGZ1bGxfcHJvcF9saXN0KSAtIDEpCisgICAgICAgICAgICBpZiBub3QoZnVsbF9wcm9w
X2xpc3RbaWR4XSBpbiB0ZXN0X3Byb3BlcnRpZXMpOgorICAgICAgICAgICAgICAgIHRlc3RfcHJv
cGVydGllcy5hcHBlbmQoZnVsbF9wcm9wX2xpc3RbaWR4XSkKKyAgICAgICAgICAgICAgICBjb3Vu
dCArPSAxCisKKyAgICAgICAgIyBSZXBsYWNlIHRoZSB0b2tlbnMgaW4gdGhlIHRlc3RodG1sIHdp
dGggdGhlIHRlc3QgcHJvcGVydGllcy4gV2FsayBiYWNrd2FyZAorICAgICAgICAjIHRocm91Z2gg
dGhlIGxpc3QgdG8gcmVwbGFjZSB0aGUgZG91YmxlLWRpZ2l0IHRva2VucyBmaXJzdAorICAgICAg
ICBpZHggPSBsZW4odGVzdF9wcm9wZXJ0aWVzKSAtIDEKKyAgICAgICAgd2hpbGUgaWR4ID49IDA6
CisgICAgICAgICAgICAjIFVzZSB0aGUgdW5wcmVmaXhlZCB2ZXJzaW9uCisgICAgICAgICAgICB0
ZXN0X3Byb3AgPSB0ZXN0X3Byb3BlcnRpZXNbaWR4XS5yZXBsYWNlKCctd2Via2l0LScsICcnKQor
ICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSB0b2tlbgorICAgICAgICAgICAgaHRtbCA9IGh0bWwu
cmVwbGFjZSgnQHRlc3QnICsgc3RyKGlkeCkgKyAnQCcsIHRlc3RfcHJvcCkKKyAgICAgICAgICAg
IGlkeCAtPSAxCisKKyAgICAgICAgcmV0dXJuICh0ZXN0X3Byb3BlcnRpZXMsIGh0bWwpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mMzZlNTliCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQpAQCAtMCwwICsxLDQ3OCBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIg
QU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAor
IyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMg
U1VDSCBEQU1BR0UuCisKKyIiIgorIFRoaXMgc2NyaXB0IGltcG9ydHMgYSBkaXJlY3Rvcnkgb2Yg
VzNDIENTUyB0ZXN0cyBpbnRvIFdlYktpdC4KKworIFlvdSBtdXN0IGhhdmUgY2hlY2tlZCBvdXQg
dGhlIFczQyByZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUuCisKKyBUaGlzIHNjcmlwdCB3
aWxsIGltcG9ydCB0aGUgdGVzdHMgaW50byBXZWJLaXQgZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgor
CisgICAgLSBPbmx5IHRlc3RzIHRoYXQgYXJlIGFwcHJvdmVkIG9yIG9mZmljaWFsbHkgc3VibWl0
dGVkIGF3YWl0aW5nIHJldmlldyBhcmUgaW1wb3J0ZWQKKworICAgIC0gQWxsIHRlc3RzIGFyZSBp
bXBvcnRlZCBpbnRvIExheW91dFRlc3RzL2Nzc3dnCisKKyAgICAtIElmIHRoZSB0ZXN0cyBhcmUg
YXBwcm92ZWQsIHRoZXknbGwgYmUgaW1wb3J0ZWQgaW50byBhIGRpcmVjdG9yeSB0cmVlIHRoYXQK
KyAgICAgIG1pcnJvcnMgdGhlIENTUyBNZXJjdXJpYWwgcmVwby4gRm9yIGV4YW1wbGUsIDxjc3N3
Z19yZXBvX3Jvb3Q+L2FwcHJvdmVkL2NzczIuMSBpcyBicm91Z2h0IGluCisgICAgICBhcyBMYXlv
dXRUZXN0cy9jc3N3Zy9hcHByb3ZlZC9jc3MyLjEsIG1haW50YWluaW5nIHRoZSBlbnRpcmUgZGly
ZWN0b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0CisKKyAgICAtIElmIHRoZSB0ZXN0cyBhcmUgc3Vi
bWl0dGVkLCB0aGV5J2xsIGJlIGJyb3VnaHQgaW4gYXMgTGF5b3V0VGVzdHMvY3Nzd2cvc3VibWl0
dGVkIGFuZCB3aWxsIGFsc28KKyAgICAgIG1haW50YWluIHRoZWlyIGRpcmVjdG9yeSBzdHJ1Y3R1
cmUgdW5kZXIgdGhhdC4gRm9yIGV4YW1wbGUsIGV2ZXJ5dGhpbmcgdW5kZXIKKyAgICAgIDxjc3N3
Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9hZG9iZS9zdWJtaXR0ZWQgaXMgYnJvdWdodCBpbnRv
IHN1Ym1pdHRlZCwgbWlycm9yaW5nIGl0cworICAgICAgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbiB0
aGUgY3Nzd2cgcmVwbworCisgICAgLSBJZiB0aGUgaW1wb3J0IGRpcmVjdG9yeSBzcGVjaWZpZWQg
aXMganVzdCBhIGNvbnRyaWJ1dG9yIGZvbGRlciwgb25seSB0aGUgc3VibWl0dGVkIGZvbGRlcgor
ICAgICAgZm9yIHRoYXQgY29udHJpYnV0b3IgaXMgYnJvdWdodCBpbi4gRm9yIGV4YW1wbGUsIHRv
IGltcG9ydCBhbGwgb2YgTW96aWxsYSdzIHRlc3RzLCBlaXRoZXIKKyAgICAgIDxjc3N3Z19yZXBv
X3Jvb3Q+L2NvbnRyaWJ1dG9ycy9tb3ppbGxhIG9yIDxjc3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1
dG9ycy9tb3ppbGxhL3N1Ym1pdHRlZAorICAgICAgd2lsbCB3b3JrIGFuZCBhcmUgZXF1aXZhbGVu
dAorCisgICAgLSBGb3IgdGhlIHRpbWUgYmVpbmcsIHRoaXMgc2NyaXB0IHdvbid0IHdvcmsgaWYg
eW91IHRyeSB0byBpbXBvcnQgdGhlIGZ1bGwgc2V0IG9mIHN1Ym1pdHRlZAorICAgICAgdGVzdHMg
dW5kZXIgY29udHJpYnV0b3JzLyovc3VibWl0dGVkLiBTaW5jZSB0aGVzZSBhcmUgYXdhaXRpbmcg
cmV2aWV3LCB0aGlzIGlzIGp1c3QgYSBzbWFsbAorICAgICAgY29udHJvbCBtZWNoYW5pc20gdG8g
ZW5mb3JjZSBjYXJlZnVsbHkgc2VsZWN0aW5nIHdoYXQgbm9uLWFwcHJvdmVkIHRlc3RzIGFyZSBp
bXBvcnRlZC4KKyAgICAgIEl0IGNhbiBvYnZpb3VzbHkgYW5kIGVhc2lseSBiZSBjaGFuZ2VkLgor
CisgICAgLSBCeSBkZWZhdWx0LCBvbmx5IHJlZnRlc3RzIGFuZCBqc3Rlc3QgYXJlIGltcG9ydGVk
LiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggYSAtYSBvciAtLWFsbAorICAgICAgYXJndW1l
bnQKKworICAgIC0gQWxzbyBieSBkZWZhdWx0LCBpZiB0ZXN0IGZpbGVzIGJ5IHRoZSBzYW1lIG5h
bWUgYWxyZWFkeSBleGlzdCBpbiB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5LAorICAgICAgdGhl
eSBhcmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgaWRlYSB0aGF0IHJ1bm5pbmcgdGhpcyBzY3JpcHQg
d291bGQgcmVmcmVzaCBmaWxlcyBwZXJpb2RpY2FsbHkuCisgICAgICBUaGlzIGNhbiBhbHNvIGJl
IG92ZXJyaWRkZW4gYnkgYSAtbiBvciAtLW5vLW92ZXJ3cml0ZSBmbGFnCisKKyAgICAtIEFsbCBm
aWxlcyBhcmUgY29udmVydGVkIHRvIHdvcmsgaW4gV2ViS2l0OgorICAgICAgICAgMS4gLnhodCBl
eHRlbnNpb25zIGFyZSBjaGFuZ2VkIHRvIC54aHRtbCB0byBtYWtlIG5ldy1ydW4td2Via2l0LXRl
c3RzIGhhcHB5CisgICAgICAgICAyLiBQYXRocyB0byB0ZXN0aGFybmVzcy5qcyBmaWxlcyBhcmUg
bW9kaWZpZWQgcG9pbnQgdG8gV2Via2l0J3MgY29weSBvZiB0aGVtIGluCisgICAgICAgICAgICBM
YXlvdXRUZXN0cy9yZXNvdXJjZXMsIHVzaW5nIHRoZSBjb3JyZWN0IHJlbGF0aXZlIHBhdGggZnJv
bSB0aGUgbmV3IGxvY2F0aW9uCisgICAgICAgICAzLiBBbGwgQ1NTIHByb3BlcnRpZXMgcmVxdWly
aW5nIHRoZSAtd2Via2l0LXZlbmRvciBwcmVmaXggYXJlIHByZWZpeGVkIC0gdGhpcyBjdXJyZW50
CisgICAgICAgICAgICBsaXN0IG9mIHdoYXQgbmVlZHMgcHJlZml4ZXMgaXMgcmVhZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL0NTUy9DU1NQcm9wZXJ0aWVzLmluCisgICAgICAgICA0LiBFYWNoIHJlZnRl
c3QgaGFzIGl0cyBvd24gY29weSBvZiBpdHMgcmVmZXJlbmNlIGZpbGUgZm9sbG93aW5nIHRoZSBu
YW1pbmcgY29udmVudGlvbnMKKyAgICAgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGV4cGVj
dHMKKyAgICAgICAgIDUuIElmIGEgYSByZWZlcmVuY2UgZmlsZXMgbGl2ZXMgb3V0c2lkZSB0aGUg
ZGlyZWN0b3J5IG9mIHRoZSB0ZXN0IHRoYXQgdXNlcyBpdCwgaXQgaXMgY2hlY2tlZAorICAgICAg
ICAgICAgZm9yIHBhdGhzIHRvIHN1cHBvcnQgZmlsZXMgYXMgaXQgd2lsbCBiZSBpbXBvcnRlZCBp
bnRvIGEgZGlmZmVyZW50IHJlbGF0aXZlIHBvc2l0aW9uIHRvIHRoZQorICAgICAgICAgICAgdGVz
dCBmaWxlIChpbiB0aGUgc2FtZSBkaXJlY3RvcnkpCisKKyAgICAgLSBVcG9uIGNvbXBsZXRpb24s
IHNjcmlwdCBvdXRwdXRzIHRoZSB0b3RhbCBudW1iZXIgdGVzdHMgaW1wb3J0ZWQsIGJyb2tlbiBk
b3duIGJ5IHRlc3QgdHlwZQorCisgICAgIC0gQWxzbyB1cG9uIGNvbXBsZXRpb24sIGVhY2ggZGly
ZWN0b3J5IHdoZXJlIGZpbGVzIGFyZSBpbXBvcnRlZCB3aWxsIGhhdmUgdzNjLWltcG9ydC5sb2cg
d3JpdHRlbgorICAgICAgIHdpdGggYSB0aW1lc3RhbXAsIHRoZSBXM0MgTWVyY3VyaWFsIGNoYW5n
ZXNldCBpZiBhdmFpbGFibGUsIHRoZSBsaXN0IG9mIENTUyBwcm9wZXJ0aWVzIHVzZWQgdGhhdAor
ICAgICAgIHJlcXVpcmUgcHJlZml4ZXMsIHRoZSBsaXN0IG9mIGltcG9ydGVkIGZpbGVzLCBhbmQg
Z3VpZGFuY2UgZm9yIGZ1dHVyZSB0ZXN0IG1vZGlmaWNhdGlvbiBhbmQKKyAgICAgICBtYWludGVu
YW5jZS4KKworICAgICAtIE9uIHN1YnNlcXVlbnQgaW1wb3J0cywgdGhpcyBmaWxlIGlzIHJlYWQg
dG8gZGV0ZXJtaW5lIGlmIGZpbGVzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBuZXdlciBjaGFu
Z2VzZXRzLgorICAgICAgIFRoZSBzY3JpcHQgcmVtb3ZlcyB0aGVzZSBmaWxlcyBhY2NvcmRpbmds
eS4KKyIiIgoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbWltZXR5cGVzCitmcm9tIG9wdHBhcnNl
IGltcG9ydCBPcHRpb25QYXJzZXIKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1
YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfcGFyc2VyIGltcG9y
dCBUZXN0UGFyc2VyCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2NvbnZlcnRlciBpbXBvcnQgVGVz
dENvbnZlcnRlcgorCitMQVlPVVRfVEVTVFNfRElSRUNUT1JZID0gJ0xheW91dFRlc3RzJworQ1NT
V0dfRElSRUNUT1JZID0gJ2Nzc3dnJworUkVTT1VSQ0VTX0RJUkVDVE9SWSA9ICdyZXNvdXJjZXMn
CitBUFBST1ZFRCA9ICdhcHByb3ZlZCcKK1NVQk1JVFRFRCA9ICdzdWJtaXR0ZWQnCitVTktOT1dO
ID0gJ3Vua25vd24nCitOT1RfQVZBSUxBQkxFID0gJ05vdCBBdmFpbGFibGUnCisKKworZGVmIG1h
aW4oYXJndiwgXywgc3RkZXJyKToKKworICAgIHBhcnNlX2FyZ3MoKQorICAgIGltcG9ydF9kaXIg
PSB2YWxpZGF0ZV9pbXBvcnRfZGlyZWN0b3J5KCkKKyAgICB0ZXN0X2ltcG9ydGVyID0gVGVzdElt
cG9ydGVyKGltcG9ydF9kaXIsIG9wdGlvbnMpCisgICAgdGVzdF9pbXBvcnRlci5kb19pbXBvcnQo
KQorCisKK2RlZiBwYXJzZV9hcmdzKCk6CisKKyAgICBnbG9iYWwgb3B0aW9ucworICAgIGdsb2Jh
bCBhcmdzCisKKyAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIodXNhZ2U9J3VzYWdlOiAlcHJvZyBb
b3B0aW9uc10gdzNjX3Rlc3RfZGlyZWN0b3J5JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLW4n
LCAnLS1uby1vdmVyd3JpdGUnLAorICAgICAgICAgICAgICAgICAgICAgICNhY3Rpb249J3N0b3Jl
X3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nRmxhZyB0byBwcmV2ZW50IGR1cGxpY2F0ZSB0ZXN0IGZpbGVzIGZy
b20gb3ZlcndyaXRpbmcgZXhpc3RpbmcgdGVzdHMuIEJ5IGRlZmF1bHQsIHRoZXkgd2lsbCBiZSBv
dmVyd3JpdHRlbicpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1hJywgJy0tYWxsJywKKyAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nSW1wb3J0IGFs
bCB0ZXN0cyBpbmNsdWRpbmcgcmVmdGVzdHMsIEpTIHRlc3RzLCBhbmQgbWFudWFsL3BpeGVsIHRl
c3RzLiBCeSBkZWZhdWx0LCBvbmx5IHJlZnRlc3RzIGFuZCBKUyB0ZXN0cyBhcmUgaW1wb3J0ZWQn
KQorCisgICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYg
bGVuKGFyZ3MpICE9IDE6CisgICAgICAgIHBhcnNlci5lcnJvcignSW5jb3JyZWN0IG51bWJlciBv
ZiBhcmd1bWVudHMnKQorCisKK2RlZiB2YWxpZGF0ZV9pbXBvcnRfZGlyZWN0b3J5KCk6CisKKyAg
ICBpbXBvcnRfZGlyID0gYXJnc1swXQorCisgICAgIyBNYWtlIHN1cmUgdGhlIHczYyB0ZXN0IGRp
cmVjdG9yeSBleGlzdHMKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoaW1wb3J0X2Rpcik6Cisg
ICAgICAgIHN5cy5leGl0KCdTb3VyY2UgZGlyZWN0b3J5ICVzIG5vdCBmb3VuZCEnICUgaW1wb3J0
X2RpcikKKworICAgICMgTWFrZSBzdXJlIHRoZSB0ZXN0cyBhcmUgb2ZmaWNpYWxseSBzdWJtaXR0
ZWQgdG8gdGhlIFczQywgZWl0aGVyIGFwcHJvdmVkIG9yCisgICAgIyBzdWJtaXR0ZWQgZm9sbG93
aW5nIHRoZWlyIGRpcmVjdG9yeSBuYW1pbmcgY29udmVudGlvbnMKKyAgICBpZiBpbXBvcnRfZGly
LmZpbmQoQVBQUk9WRUQpID09IC0xIGFuZCBcCisgICAgICAgaW1wb3J0X2Rpci5maW5kKFNVQk1J
VFRFRCkgPT0gLTE6CisgICAgICAgICMgSWYgbm90IHBvaW50ZWQgZGlyZWN0bHkgdG8gdGhlIGFw
cHJvdmVkIGRpcmVjdG9yeSBvciB0byBhbnkgc3VibWl0dGVkCisgICAgICAgICMgZGlyZWN0b3J5
LCBjaGVjayBmb3IgYSBzdWJtaXR0ZWQgc3ViZGlyZWN0b3J5IGFuZCBnbyB3aXRoIHRoYXQKKyAg
ICAgICAgaW1wb3J0X2RpciA9IG9zLnBhdGguam9pbihpbXBvcnRfZGlyLCAnc3VibWl0dGVkJykK
KyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihpbXBvcnRfZGlyKSk6
CisgICAgICAgICAgICBzeXMuZXhpdCgnVW5hYmxlIHRvIGltcG9ydCB0ZXN0cyB0aGF0IGFyZW5c
J3QgYXBwcm92ZWQgb3Igc3VibWl0dGVkIHRvIHRoZSBXM0MnKQorCisgICAgcmV0dXJuIGltcG9y
dF9kaXIKKworCitjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzb3VyY2VfZGlyZWN0b3J5LCBvcHRpb25zKToKKworICAgICAgICBzZWxmLm9wdGlv
bnMgPSBvcHRpb25zCisKKyAgICAgICAgc2VsZi5zb3VyY2VfZGlyZWN0b3J5ID0gc291cmNlX2Rp
cmVjdG9yeQorICAgICAgICBzZWxmLndlYmtpdF9yb290ID0gX19maWxlX18uc3BsaXQob3MucGF0
aC5zZXAgKyAnVG9vbHMnKVswXQorICAgICAgICBzZWxmLmRlc3RpbmF0aW9uX2RpcmVjdG9yeSA9
IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgc2VsZi53ZWJraXRfcm9vdCwgTEFZT1VUX1RFU1RT
X0RJUkVDVE9SWSwgQ1NTV0dfRElSRUNUT1JZKQorCisgICAgICAgIHNlbGYuY2hhbmdlc2V0ID0g
Tk9UX0FWQUlMQUJMRQorICAgICAgICBzZWxmLnRlc3Rfc3RhdHVzID0gVU5LTk9XTgorCisgICAg
ICAgIHNlbGYuaW1wb3J0X2xpc3QgPSBbXQorCisgICAgZGVmIGRvX2ltcG9ydChzZWxmKToKKwor
ICAgICAgICBzZWxmLnNjYW5fc291cmNlX2RpcmVjdG9yeShzZWxmLnNvdXJjZV9kaXJlY3Rvcnkp
CisgICAgICAgIHNlbGYuZ2V0X2NoYW5nZXNldCgpCisgICAgICAgIHNlbGYuaW1wb3J0X3Rlc3Rz
KCkKKworICAgIGRlZiBnZXRfY2hhbmdlc2V0KHNlbGYpOgorICAgICAgICAiIiIgUnVucyBoZyB0
aXAgdG8gZ2V0IHRoZSBjdXJyZW50IGNoYW5nZXNldCBhbmQgcGFyc2VzIHRoZSBvdXRwdXQgdG8g
Z2V0IHRoZSBjaGFuZ2VzZXQuIElmIHRoYXQgZG9lc24ndCB3b3Jrb3V0IGZvciBzb21lIHJlYXNv
biwgaXQganVzdCBiZWNvbWVzICdOb3QgQXZhaWxhYmxlJyAiIiIKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAjIEFzc3VtaW5nIE1lcmN1cmlhbCBpcyBzZXQgdXAgb24gdGhlIHN5c3RlbSwg
dHJ5IHRvIGdyYWIgdGhlIGNoYW5nZXNldCB3ZSdyZSBpbXBvcnRpbmcKKyAgICAgICAgICAgIHBy
b2MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnaGcnLCAndGlwJ10sIGVudj1vcy5lbnZpcm9uLCBzdGRv
dXQ9c3VicHJvY2Vzcy5QSVBFLCBjd2Q9c2VsZi5zb3VyY2VfZGlyZWN0b3J5KQorICAgICAgICAg
ICAgc2VsZi5jaGFuZ2VzZXQgPSBwcm9jLnN0ZG91dC5yZWFkbGluZXMoKVswXQorICAgICAgICAg
ICAgc2VsZi5jaGFuZ2VzZXQgPSBzZWxmLmNoYW5nZXNldC5zcGxpdCgnY2hhbmdlc2V0OicpWzFd
CisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgT2ggd2VsbCwgd2UgdHJpZWQKKyAgICAg
ICAgICAgIHNlbGYuY2hhbmdlc2V0ID0gJ05vdCBBdmFpbGFibGUnCisKKyAgICBkZWYgc2Nhbl9z
b3VyY2VfZGlyZWN0b3J5KHNlbGYsIGRpcmVjdG9yeSk6CisgICAgICAgICIiIiBXYWxrcyB0aGUg
fGRpcmVjdG9yeXwgbG9va2luZyBmb3IgSFRNTCBmaWxlcyB0aGF0IGFyZSBpbXBvcnRhYmxlIHRl
c3RzLiAiIiIKKworICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkaXJl
Y3RvcnkpOgorCisgICAgICAgICAgICBwcmludCAnU2Nhbm5pbmcgJyArIHJvb3QgKyAnLi4uJwor
ICAgICAgICAgICAgdG90YWxfdGVzdHMgPSAwCisgICAgICAgICAgICByZWZ0ZXN0cyA9IDAKKyAg
ICAgICAgICAgIGpzdGVzdHMgPSAwCisKKyAgICAgICAgICAgICMgSWdub3JlIGFueSByZXBvIHN0
dWZmCisgICAgICAgICAgICBpZiAnLmdpdCcgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJz
LnJlbW92ZSgnLmdpdCcpCisgICAgICAgICAgICBpZiAnLmhnJyBpbiBkaXJzOgorICAgICAgICAg
ICAgICAgIGRpcnMucmVtb3ZlKCcuaGcnKQorICAgICAgICAgICAgIyBhcmNoaXZlIGFuZCBkYXRh
IGRpcnMgYXJlIGludGVybmFsIGNzc3dnIHRoaW5ncyB0aGF0IGxpdmUgaW4gZXZlcnkgYXBwcm92
ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICBpZiAnZGF0YScgaW4gZGlyczoKKyAgICAgICAgICAg
ICAgICBkaXJzLnJlbW92ZSgnZGF0YScpCisgICAgICAgICAgICBpZiAnYXJjaGl2ZScgaW4gZGly
czoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnYXJjaGl2ZScpCisKKyAgICAgICAgICAg
IGNvcHlfbGlzdCA9IFtdCisKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKKwor
ICAgICAgICAgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGVuYW1lKQor
CisgICAgICAgICAgICAgICAgIyBPbmx5IGh0bWwgb3IgeG1sIGFyZSBjb25zaWRlcmVkIHRlc3Rz
CisgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmdWxscGF0
aCkKKyAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciAneG1s
JyBpbiBzdHIobWltZXR5cGVbMF0pOgorCisgICAgICAgICAgICAgICAgICAgIHRlc3RfcGFyc2Vy
ID0gVGVzdFBhcnNlcih2YXJzKG9wdGlvbnMpLCBmaWxlbmFtZT1mdWxscGF0aCkKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdF9pbmZvID0gdGVzdF9wYXJzZXIuYW5hbHl6ZV90ZXN0KCkKKworICAg
ICAgICAgICAgICAgICAgICBpZiB0ZXN0X2luZm8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgJ3JlZmVyZW5jZScgaW4g
dGVzdF9pbmZvLmtleXMoKToKKworICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdHMgKz0g
MQorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdF9pbmZvWyd0
ZXN0J10pCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIHRoZSByZWYgZmlsZSwgcmVu
YW1pbmcgaXQgdG8gV2Via2l0J3Mgd2F5CisgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGU6
IFRoZSBwcmVmZXJhYmxlIHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBqdXN0CisgICAg
ICAgICAgICAgICAgICAgICAgICAjICAgICAgIGFkZCBzdXBwb3J0IGluIFdlYmtpdCdzIGhhcm5l
c3MgdG8gcmVhZCBtZXRhZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICByYXRo
ZXIgdGhhbiByZWx5IG9uIGEgZmlsZSBuYW1pbmcgY29udmVudGlvbi4gU2luY2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICMgICAgICAgdGhlIENTU1dHIHRlc3RzIHN1cHBvcnQgbWFueTpvbmUg
dGVzdHM6cmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICBlbmFibGlu
ZyBtZXRhZGF0YSBwYXJzaW5nIGluIG91ciBoYXJuZXNzIHdvdWxkIGFsc28KKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgZmlsZXMgY29waWVkIGlu
LiBBcyB0aGlzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIGltcGxlbWVudGVk
IGhlcmUsIHdlIGFyZSBrbm93aW5nbHkgaW1wb3J0aW5nIG11bHRpcGxlCisgICAgICAgICAgICAg
ICAgICAgICAgICAjICAgICAgIGNvcGllcyBvZiB0aGUgc2FtZSByZWYgZmlsZXMgdG8gYWRoZXJl
IHRvIFdlYmtpdCdzIHdheQorICAgICAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBvcy5w
YXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5hbWUpWzBdICsgJy1leHBlY3RlZCcKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZl9maWxlICs9IG9zLnBhdGguc3BsaXRleHQodGVzdF9iYXNlbmFtZSlb
MV0KKworICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRl
c3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmX2ZpbGV9KQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sndGVzdCddLCAnZGVz
dCc6IGZpbGVuYW1lfSkKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGVyZSBhcmUg
cmVmIHN1cHBvcnQgZmlsZXMsIHRoZSBkZXN0aW5hdGlvbiBpcyBzaG91bGQgbm93IGJlIHJlbGF0
aXZlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0IGZpbGUgYW5kIG5ldyBs
b2NhdGlvbiBvZiB0aGUgcmVmIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdyZWZz
dXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciBzdXBwb3J0X2ZpbGUgaW4gdGVzdF9pbmZvWydyZWZzdXBwb3J0J106CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgQnVpbGQgdGhlIGNvcnJlY3Qgc291cmNlIHBhdGgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLmpvaW4o
b3MucGF0aC5kaXJuYW1lKHRlc3RfaW5mb1sncmVmZXJlbmNlJ10pLCBzdXBwb3J0X2ZpbGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5ub3Jt
cGF0aChzb3VyY2VfZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVw
IHRoZSBkZXN0IGFzIGl0IHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19j
b3B5ID0geydzcmMnOiBzb3VyY2VfZmlsZSwgJ2Rlc3QnOiBzdXBwb3J0X2ZpbGV9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgT25seSBhZGQgaXQgb25jZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiBub3QodG9fY29weSBpbiBjb3B5X2xpc3QpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh0b19jb3B5KQor
CisgICAgICAgICAgICAgICAgICAgIGVsaWYgJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKToK
KyAgICAgICAgICAgICAgICAgICAgICAgIGpzdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAg
ICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0
LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0g
MQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxw
YXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAgICAgICAgICMgSWdub3JlIGRvdGZp
bGVzIGFuZCByYW5kb20gcGVybCBzY3JpcHRzIHRoYXQgYXJlIGluIHNvbWUgZGlycworICAgICAg
ICAgICAgICAgIGVsaWYgbm90KGZpbGVuYW1lLnN0YXJ0c3dpdGgoJy4nKSkgYW5kIG5vdChmaWxl
bmFtZS5lbmRzd2l0aCgnLnBsJykpOgorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBw
ZW5kKHsnc3JjJzogZnVsbHBhdGgsICdkZXN0JzogZmlsZW5hbWV9KQorCisgICAgICAgICAgICBp
ZiB0b3RhbF90ZXN0cyA9PSAwOgorICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgYXJlIG5vIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5LCBza2lwIHRoZSBzdXBwb3J0IGRpciB0aGF0IGxpdmVzIGlu
IGFsbAorICAgICAgICAgICAgICAgICMgb2YgdGhlICdhcHByb3ZlZCcgZm9sZGVycyBhcyBwYXJ0
IG9mIHRoZSBhdXRvbWF0ZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgaWYgJ3N1cHBv
cnQnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdzdXBwb3J0JykK
KworICAgICAgICAgICAgICAgIGlmIGxlbihjb3B5X2xpc3QpID4gMDoKKyAgICAgICAgICAgICAg
ICAgICAgIyBPbmx5IGFkZCB0aGlzIGRpcmVjdG9yeSB0byB0aGUgbGlzdCBpZiB0aGVyZSdzIHNv
bWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfbGlzdC5h
cHBlbmQoeydkaXJuYW1lJzogcm9vdCwgJ2NvcHlfbGlzdCc6IGNvcHlfbGlzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZnRlc3RzJzogcmVmdGVzdHMs
ICdqc3Rlc3RzJzoganN0ZXN0cywgJ3RvdGFsX3Rlc3RzJzogdG90YWxfdGVzdHN9KQorCisgICAg
ZGVmIGltcG9ydF90ZXN0cyhzZWxmKToKKyAgICAgICAgIiIiIENvcGllcyBhbmQgY29udmVydHMg
dGhlIGZ1bGwgbGlzdCBvZiBpbXBvcnRhYmxlIHRlc3RzIGludG8gV2Via2l0IGFuZCBsb2dzIHdo
YXQgd2FzIGltcG9ydGVkIGluIGVhY2ggZGlyZWN0b3J5ICIiIgorCisgICAgICAgICMgT25seSBz
ZXQgdXAgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBp
bXBvcnQKKyAgICAgICAgaWYgbGVuKHNlbGYuaW1wb3J0X2xpc3QpID4gMDoKKyAgICAgICAgICAg
IHNlbGYuc2V0dXBfZGVzdGluYXRpb25fZGlyZWN0b3J5KCkKKworICAgICAgICBjb252ZXJ0ZXIg
PSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgdG90YWxfaW1wb3J0ZWRfdGVzdHMgPSAwCisgICAg
ICAgIHRvdGFsX2ltcG9ydGVkX3JlZnRlc3RzID0gMAorICAgICAgICB0b3RhbF9pbXBvcnRlZF9q
c3Rlc3RzID0gMAorCisgICAgICAgIGZvciBkaXJfdG9fY29weSBpbiBzZWxmLmltcG9ydF9saXN0
OgorCisgICAgICAgICAgICB0b3RhbF9pbXBvcnRlZF90ZXN0cyArPSBkaXJfdG9fY29weVsndG90
YWxfdGVzdHMnXQorICAgICAgICAgICAgdG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMgKz0gZGlyX3Rv
X2NvcHlbJ3JlZnRlc3RzJ10KKyAgICAgICAgICAgIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgKz0g
ZGlyX3RvX2NvcHlbJ2pzdGVzdHMnXQorCisgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVz
ID0gW10KKworICAgICAgICAgICAgaWYgbGVuKGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXSkgPiAw
OgorCisgICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUgc3VicGF0aCBzdGFydGluZyB3aXRoIHRo
ZSBhcHByb3ZlZC9zdWJtaXR0ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgb3JpZ19wYXRo
ID0gZGlyX3RvX2NvcHlbJ2Rpcm5hbWUnXQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gb3JpZ19w
YXRoLmZpbmQoc2VsZi50ZXN0X3N0YXR1cykKKyAgICAgICAgICAgICAgICBuZXdfc3VicGF0aCA9
IG9yaWdfcGF0aFtzdGFydDpsZW4ob3JpZ19wYXRoKV0KKworICAgICAgICAgICAgICAgICMgQXBw
ZW5kIHRoZSBuZXcgc3VicGF0aCB0byB0aGUgZGVzdGluYXRpb25fZGlyZWN0b3J5CisgICAgICAg
ICAgICAgICAgbmV3X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3Rv
cnksIG5ld19zdWJwYXRoKQorCisgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0
aW9uIHN1YmRpcmVjdG9yaWVzIGlmIG5vdCB0aGVyZQorICAgICAgICAgICAgICAgIGlmIG5vdChv
cy5wYXRoLmV4aXN0cyhuZXdfcGF0aCkpOgorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGly
cyhuZXdfcGF0aCkKKworICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcyA9IFtdCisKKyAgICAg
ICAgICAgICAgICBmb3IgZmlsZV90b19jb3B5IGluIGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXToK
KworICAgICAgICAgICAgICAgICAgICBvcmlnX2ZpbGVwYXRoID0gb3MucGF0aC5ub3JtcGF0aChm
aWxlX3RvX2NvcHlbJ3NyYyddKQorCisgICAgICAgICAgICAgICAgICAgICMgU2hvdWxkbid0IGJl
IGFueSBkaXJlY3RvcmllcyBvbiB0aGUgbGlzdCwgYnV0IGNoZWNrIHRvIGJlIHNhZmUKKyAgICAg
ICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihvcmlnX2ZpbGVwYXRoKToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBj
aG9rZSBpZiB0aGUgZmlsZSBjYW4ndCBiZSBmb3VuZAorICAgICAgICAgICAgICAgICAgICBpZiBu
b3Qob3MucGF0aC5leGlzdHMob3JpZ19maWxlcGF0aCkpOgorICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnQgJ1dhcm5pbmc6ICcgKyBvcmlnX2ZpbGVwYXRoICsgJyBub3QgZm91bmQuIFBvc3Np
YmxlIGVycm9yIGluIHRoZSB0ZXN0LicKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICAgICAgICAgIyBBcHBlbmQgdGhlIGNvcnJlY3QgZGVzdGluYXRpb24g
ZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5qb2lu
KG5ld19wYXRoLCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkKKworICAgICAgICAgICAgICAgICAgICAj
IENoYW5nZSBleHRlbnNpb24gdG8gd29yayBpbiB0aGUgV2ViS2l0IGhhcm5lc3MKKyAgICAgICAg
ICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gbmV3X2ZpbGVwYXRoLnJlcGxhY2UoJy54aHQnLCAn
LnhodG1sJykKKworICAgICAgICAgICAgICAgICAgICAjIE1ha2UgdGhlIGRpcmVjdG9yaWVzIG5l
ZWRlZAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5k
aXJuYW1lKG5ld19maWxlcGF0aCkpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLm1ha2Vk
aXJzKG9zLnBhdGguZGlybmFtZShuZXdfZmlsZXBhdGgpKQorCisgICAgICAgICAgICAgICAgICAg
ICMgRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIHRlc3RzIGlmIHNwZWNpZmllZAorICAgICAgICAg
ICAgICAgICAgICBpZiBvcHRpb25zLm5vX292ZXJ3cml0ZSBpcyBUcnVlIGFuZCBvcy5wYXRoLmV4
aXN0cyhuZXdfZmlsZXBhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1NraXBw
aW5nIGltcG9ydCBvZiBleGlzdGluZyBmaWxlICcgKyBuZXdfZmlsZXBhdGgKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogTWF5YmUgZG9p
bmcgYSBmaWxlIGRpZmYgaXMgaW4gb3JkZXIgaGVyZSBmb3IgZXhpc3RpbmcgZmlsZXM/CisgICAg
ICAgICAgICAgICAgICAgICAgICAjICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGVyZSdzIG5vIHNl
bnNlIGluIG92ZXJ3cml0aW5nIGlkZW50aWNhbCBmaWxlcywgYnV0CisgICAgICAgICAgICAgICAg
ICAgICAgICAjICAgICAgIHRoZXJlJ3Mgbm8gaGFybSBpbiBjb3B5aW5nIHRoZSBpZGVudGljYWwg
dGhpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnSW1wb3J0aW5nOiAnICsgb3Jp
Z19maWxlcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyAgICAgICBBczogJyAr
IG5ld19maWxlcGF0aAorCisgICAgICAgICAgICAgICAgICAgICMgT25seSBodG1sLCB4bWwsIG9y
IGNzcyBzaG91bGQgYmUgY29udmVydGVkCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogRXZl
bnR1YWxseSwgc28gc2hvdWxkIGpzIHdoZW4gc3VwcG9ydCBpcyBhZGRlZCBmb3IgdGhpcyB0eXBl
IG9mIGNvbnZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMu
Z3Vlc3NfdHlwZShvcmlnX2ZpbGVwYXRoKQorICAgICAgICAgICAgICAgICAgICBpZiAnaHRtbCcg
aW4gc3RyKG1pbWV0eXBlWzBdKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICd4bWwnIGlu
IHN0cihtaW1ldHlwZVswXSkgIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NzcycgaW4g
c3RyKG1pbWV0eXBlWzBdKToKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IGZv
ciBXZWJLaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVy
dGVyLmNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCkK
KworICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29udmVydGVkX2ZpbGUgaXMgTm9uZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFN0cmFpZ2h0IGNvcHkgaWYgbm90aGluZydzIGNo
YW5nZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19m
aWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdyaXRlIG91dCB0aGUgY29udmVydGVkIHRlc3QK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzLmV4dGVuZChz
ZXQoY29udmVydGVkX2ZpbGVbMF0pIC0gc2V0KHByZWZpeGVkX3Byb3BlcnRpZXMpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUgPSBvcGVuKG5ld19maWxlcGF0aCwgJ3cnKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoY29udmVydGVkX2ZpbGVb
MV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZS5jbG9zZSgpCisgICAgICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZp
bGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorCisgICAgICAgICAgICAgICAgICAgIGNv
cGllZF9maWxlcy5hcHBlbmQobmV3X2ZpbGVwYXRoLnJlcGxhY2Uoc2VsZi53ZWJraXRfcm9vdCwg
JycpKQorCisgICAgICAgICAgICAgICAgIyBUYWtlIGNhcmUgb2YgYW55dGhpbmcgdGhhdCBtYXkg
aGF2ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgaW1wb3J0CisgICAgICAgICAgICAgICAg
c2VsZi5yZW1vdmVfZGVsZXRlZF9maWxlcyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzKQorCisgICAg
ICAgICAgICAgICAgIyBEcm9wIHNvbWUgaW5mbyBhYm91dCB3aGF0IGp1c3QgaGFwcGVuZWQgaGVy
ZQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfaW1wb3J0X2xvZyhuZXdfcGF0aCwgY29waWVk
X2ZpbGVzLCBwcmVmaXhlZF9wcm9wZXJ0aWVzKQorCisgICAgICAgIHByaW50ICdJbXBvcnQgY29t
cGxldGUnCisKKyAgICAgICAgcHJpbnQgJ0lNUE9SVEVEICcgKyBzdHIodG90YWxfaW1wb3J0ZWRf
dGVzdHMpICsgJyBUT1RBTCBURVNUUycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIo
dG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMpICsgJyByZWZ0ZXN0cycKKyAgICAgICAgcHJpbnQgJ0lt
cG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfanN0ZXN0cykgKyAnIEpTIHRlc3RzJworICAg
ICAgICBwcmludCAnSW1wb3J0ZWQgJyArIHN0cih0b3RhbF9pbXBvcnRlZF90ZXN0cyAtIHRvdGFs
X2ltcG9ydGVkX2pzdGVzdHMgLSB0b3RhbF9pbXBvcnRlZF9yZWZ0ZXN0cykgKyAnIHBpeGVsL21h
bnVhbCB0ZXN0cycKKworICAgIGRlZiBzZXR1cF9kZXN0aW5hdGlvbl9kaXJlY3Rvcnkoc2VsZik6
CisgICAgICAgICIiIiBDcmVhdGVzIGEgZGVzdGluYXRpb24gZGlyZWN0b3J5IHRoYXQgbWlycm9y
cyB0aGF0IG9mIHRoZSBzb3VyY2UgYXBwcm92ZWQgb3Igc3VibWl0dGVkIGRpcmVjdG9yeSAiIiIK
KworICAgICAgICAjIFRoZSB0ZXN0IHN0YXR1cyBpcyBpbiB0aGUgcGF0aCwgc28gZ3JhYiBpdAor
ICAgICAgICBzZWxmLmdldF90ZXN0X3N0YXR1cygpCisKKyAgICAgICAgIyBNaXJyb3IgdGhlIGRp
cmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhlIGNzc3dnIHJlcG8gdW5kZXIgYXBwcm92ZWQvIG9yIHN1
Ym1pdHRlZC8KKyAgICAgICAgc3RhcnQgPSBzZWxmLnNvdXJjZV9kaXJlY3RvcnkuZmluZChzZWxm
LnRlc3Rfc3RhdHVzKQorICAgICAgICBuZXdfc3VicGF0aCA9IHNlbGYuc291cmNlX2RpcmVjdG9y
eVtzdGFydDpsZW4oc2VsZi5zb3VyY2VfZGlyZWN0b3J5KV0KKworICAgICAgICBkZXN0aW5hdGlv
bl9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5l
d19zdWJwYXRoKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0aW5hdGlvbl9k
aXJlY3RvcnkpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGluYXRpb25fZGlyZWN0b3J5
KQorCisgICAgICAgIHByaW50ICdUZXN0cyB3aWxsIGJlIGltcG9ydGVkIGludG86ICcgKyBkZXN0
aW5hdGlvbl9kaXJlY3RvcnkKKworICAgIGRlZiBnZXRfdGVzdF9zdGF0dXMoc2VsZik6CisgICAg
ICAgICIiIiBTZXRzIHRoZSB0ZXN0IHN0YXR1cyB0byBlaXRoZXIgJ2FwcHJvdmVkJyBvciAnc3Vi
bWl0dGVkJyAiIiIKKworICAgICAgICBzdGF0dXMgPSBVTktOT1dOCisKKyAgICAgICAgaWYgc2Vs
Zi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQoQVBQUk9WRUQpICE9IC0xOgorICAgICAgICAgICAgc3Rh
dHVzID0gQVBQUk9WRUQKKyAgICAgICAgZWxpZiBzZWxmLnNvdXJjZV9kaXJlY3RvcnkuZmluZChT
VUJNSVRURUQpICE9IC0xOgorICAgICAgICAgICAgc3RhdHVzID0gU1VCTUlUVEVECisKKyAgICAg
ICAgc2VsZi50ZXN0X3N0YXR1cyA9IHN0YXR1cworCisgICAgZGVmIHJlbW92ZV9kZWxldGVkX2Zp
bGVzKHNlbGYsIGltcG9ydF9kaXJlY3RvcnksIG5ld19maWxlX2xpc3QpOgorICAgICAgICAiIiIg
UmVhZHMgYW4gaW1wb3J0IGxvZyBpbiB8aW1wb3J0X2RpcmVjdG9yeXwgYW5kIGNvbXBhcmVzIGl0
IHRvIHRoZSB8bmV3X2ZpbGVfbGlzdHwgYW5kIHJlbW92ZXMgZmlsZXMgdGhhdCBhcmUgbm90IGlu
IHRoZSBuZXcgbGlzdCAiIiIKKworICAgICAgICBwcmV2aW91c19maWxlX2xpc3QgPSBbXQorCisg
ICAgICAgICMgRmlyc3QgY2hlY2sgaWYgdGhlcmUgd2FzIGEgcHJldmlvdXMgaW1wb3J0IGhlcmUg
LSB0aGVyZSBzaG91bGQgYmUgYSBsb2cKKyAgICAgICAgaW1wb3J0X2xvZ19maWxlID0gb3MucGF0
aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1wb3J0LmxvZycpCisgICAgICAgIGlmIG5v
dChvcy5wYXRoLmV4aXN0cyhpbXBvcnRfbG9nX2ZpbGUpKToKKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKGltcG9ydF9sb2dfZmlsZSwgJ3InKQorICAgICAg
ICBjb250ZW50cyA9IGltcG9ydF9sb2cucmVhZGxpbmVzKCkKKworICAgICAgICAjIFB1bGwgbG9n
IHRoZSBsaXN0IG9mIGZpbGVzIGZyb20gdGhlIHByZXZpb3VzIGltcG9ydAorICAgICAgICBpZiAn
TGlzdCBvZiBmaWxlc1xuJyBpbiBjb250ZW50czoKKyAgICAgICAgICAgIGxpc3RfaWR4ID0gY29u
dGVudHMuaW5kZXgoJ0xpc3Qgb2YgZmlsZXM6XG4nKSArIDEKKyAgICAgICAgICAgIHByZXZpb3Vz
X2ZpbGVfbGlzdCA9IGNvbnRlbnRzW2xpc3RfaWR4Ol0KKyAgICAgICAgICAgIHByZXZpb3VzX2Zp
bGVfbGlzdCA9IG1hcChsYW1iZGEgczogcy5zdHJpcCgpLCBwcmV2aW91c19maWxlX2xpc3QpCisK
KyAgICAgICAgZGVsZXRlZF9maWxlcyA9IHNldChwcmV2aW91c19maWxlX2xpc3QpIC0gc2V0KG5l
d19maWxlX2xpc3QpCisKKyAgICAgICAgIyBMb29wIHRocm91Z2ggYW5kIHJlbW92ZSB0aGVtIGFs
bAorICAgICAgICBmb3IgZGVsZXRlZF9maWxlIGluIGRlbGV0ZWRfZmlsZXM6CisgICAgICAgICAg
ICBwcmludCAnRGVsZXRpbmcgZmlsZSByZW1vdmVkIGZyb20gdGhlIFczQyByZXBvOicgKyBkZWxl
dGVkX2ZpbGUKKyAgICAgICAgICAgIGRlbGV0ZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndl
YmtpdF9yb290LCBkZWxldGVkX2ZpbGUpCisgICAgICAgICAgICBvcy5yZW1vdmUoZGVsZXRlZF9m
aWxlKQorCisgICAgICAgIGltcG9ydF9sb2cuY2xvc2UoKQorCisgICAgZGVmIHdyaXRlX2ltcG9y
dF9sb2coc2VsZiwgaW1wb3J0X2RpcmVjdG9yeSwgZmlsZV9saXN0LCBwcm9wX2xpc3QpOgorICAg
ICAgICAiIiIgV3JpdGVzIGEgdzNjLWltcG9ydC5sb2cgZmlsZSBpbiBlYWNoIGRpcmVjdG9yeSB3
aXRoIGltcG9ydGVkIGZpbGVzLiAiIiIKKworICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGlt
ZS5ub3coKQorCisgICAgICAgICMgQ3JlYXRlIGEgbG9nIG9mIHRoaXMgaW1wb3J0IHdpdGggYWxs
IHNvcnRzIG9mIGdvb2QgaW5mb3JtYXRpb24KKyAgICAgICAgaW1wb3J0X2xvZyA9IG9wZW4ob3Mu
cGF0aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1wb3J0LmxvZycpLCAndycpCisgICAg
ICAgIGltcG9ydF9sb2cud3JpdGUoJ1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LlxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJraXQuIEluc3Rl
YWQsIHB1c2ggY2hhbmdlcyB0byB0aGUgVzNDIENTUyByZXBvOlxuXG4nKQorICAgICAgICBpbXBv
cnRfbG9nLndyaXRlKCdodHRwOi8vaGcuY3Nzd2cub3JnL3Rlc3RcblxuJykKKyAgICAgICAgaW1w
b3J0X2xvZy53cml0ZSgnVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJraXQgdG8gcmVpbXBvcnRcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgn
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlXG5cbicpCisgICAgICAgIGltcG9ydF9s
b2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgn
TGFzdCBJbXBvcnQ6ICcgKyBub3cuc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNJykgKyAnXG4nKQor
ICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdXM0MgTWVyY3VyaWFsIGNoYW5nZXNldDogJyArIHNl
bGYuY2hhbmdlc2V0ICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGVzdCBzdGF0
dXMgYXQgdGltZSBvZiBpbXBvcnQ6ICcgKyBzZWxmLnRlc3Rfc3RhdHVzICsgJ1xuJykKKyAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nKQorICAgICAgICBpbXBvcnRf
bG9nLndyaXRlKCdQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6XG4nKQorICAg
ICAgICBpZiBsZW4ocHJvcF9saXN0KSA9PSAwOgorICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0
ZSgnTm9uZVxuJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBwcm9wIGluIHByb3Bf
bGlzdDoKKyAgICAgICAgICAgICAgICBpbXBvcnRfbG9nLndyaXRlKHByb3AgKyAnXG4nKQorICAg
ICAgICBpbXBvcnRfbG9nLndyaXRlKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicpCisgICAgICAgIGltcG9y
dF9sb2cud3JpdGUoJ0xpc3Qgb2YgZmlsZXM6XG4nKQorICAgICAgICBmb3IgaXRlbSBpbiBmaWxl
X2xpc3Q6CisgICAgICAgICAgICBpbXBvcnRfbG9nLndyaXRlKGl0ZW0gKyAnXG4nKQorCisgICAg
ICAgIGltcG9ydF9sb2cuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYmE1NGUxMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw1MiBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5E
IEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VD
SCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHkudzNjIGltcG9ydCB0ZXN0X2NvbnZlcnRlcgorZnJv
bSB3ZWJraXRweS53M2MudGVzdF9pbXBvcnRlciBpbXBvcnQgVGVzdEltcG9ydGVyCitpbXBvcnQg
b3MKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKKworV0VCS0lUX1JPT1QgPSBfX2ZpbGVf
Xy5zcGxpdChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisKKworY2xhc3MgVGVzdEltcG9ydGVy
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9JbXBvcnREaXJXaXRoTm9U
ZXN0cyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGRvX2ltcG9ydCgpIHdpdGggYSBkaXJlY3Rv
cnkgdGhhdCBjb250YWlucyBubyB0ZXN0cyAiIiIKKyAgICAgICAgZGlyX3dpdGhfbm9fdGVzdHMg
PSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9jb252ZXJ0ZXIuU09VUkNFX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLldFQkNPUkVfU1VCRElSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUikKKworICAgICAgICBpbXBvcnRlciA9IFRlc3RJbXBvcnRl
cihkaXJfd2l0aF9ub190ZXN0cywgTm9uZSkKKyAgICAgICAgaW1wb3J0ZXIuZG9faW1wb3J0KCkK
KworCisgICAgIyBUT0RPOiBOZWVkIG1vcmUgdGVzdHMsIGJ1dCB3aGF0IHRvIHVzZSBmb3IgdmFs
aWQgc291cmNlIGRpcmVjdG9yeT8gTWFrZSBpdCBvbiB0aGUgZmx5CisgICAgIyAgICAgICBhbmQg
Y2xlYW4gaXQgdXAgYWZ0ZXJ3YXJkPwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9wYXJzZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3Bh
cnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmU2ZjcxCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkK
QEAgLTAsMCArMSwxNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAo
QykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisj
ICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cCBhcyBQYXJzZXIKK2ltcG9y
dCBvcworaW1wb3J0IHJlCisKKworY2xhc3MgVGVzdFBhcnNlcihvYmplY3QpOgorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIGZpbGVuYW1lKToKKyAgICAgICAgc2VsZi5vcHRpb25z
ID0gb3B0aW9ucworICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2Vs
Zi50ZXN0X2RvYyA9IHNlbGYubG9hZF9maWxlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLnJlZl9k
b2MgPSBOb25lCisKKyAgICBkZWYgbG9hZF9maWxlKHNlbGYsIGZpbGVfdG9fcGFyc2UpOgorICAg
ICAgICAiIiIgT3BlbnMgYW5kIHJlYWQgdGhlIHxmaWxlX3RvX3BhcnNlfCAiIiIKKyAgICAgICAg
ZG9jID0gTm9uZQorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVfdG9fcGFyc2UpOgor
ICAgICAgICAgICAgZiA9IG9wZW4oZmlsZV90b19wYXJzZSkKKyAgICAgICAgICAgIGh0bWwgPSBm
LnJlYWQoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgICAgIGRvYyA9IFBhcnNl
cihodG1sKQorCisgICAgICAgIHJldHVybiBkb2MKKworICAgIGRlZiBhbmFseXplX3Rlc3Qoc2Vs
ZiwgdGVzdF9jb250ZW50cz1Ob25lLCByZWZfY29udGVudHM9Tm9uZSk6CisgICAgICAgICIiIiBB
bmFseXplcyBhIGZpbGUgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYSB0ZXN0LCB3aGF0IHR5cGUgb2Yg
dGVzdCwgYW5kIHdoYXQgcmVmZXJlbmNlIG9yIHN1cHBvcnQgZmlsZXMgaXQgcmVxdWlyZXMuIFJl
dHVybnMgYWxsIG9mIHRoZSB0ZXN0IGluZm8gIiIiCisKKyAgICAgICAgdGVzdF9pbmZvID0gTm9u
ZQorCisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgTm9uZSBhbmQgc2VsZi50ZXN0X2RvYyBp
cyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHRlc3RfaW5mbworCisgICAgICAgIGlmIHRlc3Rf
Y29udGVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnRlc3RfZG9jID0gUGFyc2Vy
KHRlc3RfY29udGVudHMpCisKKyAgICAgICAgaWYgcmVmX2NvbnRlbnRzIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgc2VsZi5yZWZfZG9jID0gUGFyc2VyKHJlZl9jb250ZW50cykKKworICAgICAg
ICAjIEZpcnN0IGNoZWNrIGlmIGl0J3MgYSByZWZ0ZXN0CisgICAgICAgIG1hdGNoZXMgPSBzZWxm
LmdldF9yZWZ0ZXN0cyhUcnVlKQorICAgICAgICBpZiBsZW4obWF0Y2hlcykgIT0gMDoKKworICAg
ICAgICAgICAgaWYgbGVuKG1hdGNoZXMpID4gMToKKyAgICAgICAgICAgICAgICBwcmludCAnV2Fy
bmluZzogV2Via2l0IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcmVmZXJlbmNlcy4gSW1wb3J0
aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5lZCBpbiAnICsgb3MucGF0aC5iYXNlbmFtZShzZWxmLmZp
bGVuYW1lKQorCisgICAgICAgICAgICByZWZfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRp
cm5hbWUoc2VsZi5maWxlbmFtZSksIG1hdGNoZXNbMF1bJ2hyZWYnXSkKKyAgICAgICAgICAgIGlm
IHNlbGYucmVmX2RvYyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYucmVmX2RvYyA9IHNl
bGYubG9hZF9maWxlKHJlZl9maWxlKQorCisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3Qn
OiBzZWxmLmZpbGVuYW1lLCAncmVmZXJlbmNlJzogcmVmX2ZpbGV9CisKKyAgICAgICAgICAgICMg
SWYgdGhlIHJlZiBmaWxlIHBhdGggaXMgcmVsYXRpdmUsIHdlIG5lZWQgdG8gY2hlY2sgaXQgZm9y
IHJlbGF0aXZlIHBhdGhzCisgICAgICAgICAgICAjIGJlY2F1c2Ugd2hlbiBpdCBsYW5kcyBpbiBX
ZWJraXQsIGl0IHdpbGwgYmUgbW92ZWQgZG93biBpbnRvIHRoZSB0ZXN0IGRpcgorICAgICAgICAg
ICAgIyBOb3RlOiBUaGUgdGVzdCBmaWxlcyB0aGVtc2VsdmVzIGFyZSBub3QgY2hlY2tlZCBmb3Ig
c3VwcG9ydCBmaWxlcworICAgICAgICAgICAgIyB0aGF0IGxpdmUgb3V0c2lkZSB0aGVpciBkaXJl
Y3RvcmllcyBhcyBpdCdzIHRoZSBjb252ZW50aW9uIGluIHRoZSBDU1NXRworICAgICAgICAgICAg
IyB0byBwdXQgYWxsIHN1cHBvcnQgZmlsZXMgaW4gdGhlIHNhbWUgZGlyIG9yIHN1YmRpciBhcyB0
aGUgdGVzdC4gQWxsIG5vbi10ZXN0CisgICAgICAgICAgICAjIGZpbGVzIGluIHRoZSB0ZXN0J3Mg
ZGlyZWN0b3J5IHRyZWUgYXJlIGF1dG9tYXRpY2FsbHkgY29waWVkIGFzIHBhcnQgb2YgdGhlIGlt
cG9ydCBhcworICAgICAgICAgICAgIyB0aGV5IGFyZSBhc3N1bWVkIHRvIGJlIHJlcXVpcmVkIHN1
cHBvcnQgZmlsZXMgVGhlcmUgaXMgZXhhY3RseSBvbmUgY2FzZSBpbiB0aGUgZW50aXJlCisgICAg
ICAgICAgICAjIGNzczIuMSBzdWl0ZSB3aGVyZSBhdCB0ZXN0IGRlcGVuZHMgb24gYSBmaWxlIHRo
YXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LCB3aGljaAorICAgICAgICAgICAgIyBk
ZXBlbmRzIG9uIGFub3RoZXIgZmlsZSB0aGF0IGxpdmVzIG91dHNpZGUgb2YgaXRzIGRpcmVjdG9y
eS4gVGhpcyBjb2RlIGNvdmVycyB0aGF0IGNhc2UgOikKKyAgICAgICAgICAgIGlmIG1hdGNoZXNb
MF1bJ2hyZWYnXS5zdGFydHN3aXRoKCcuLicpOgorICAgICAgICAgICAgICAgIHN1cHBvcnRGaWxl
cyA9IHNlbGYuZ2V0X3N1cHBvcnRfZmlsZXMoc2VsZi5yZWZfZG9jKQorICAgICAgICAgICAgICAg
IHRlc3RfaW5mb1sncmVmc3VwcG9ydCddID0gc3VwcG9ydEZpbGVzCisKKyAgICAgICAgIyBOZXh0
LCBpZiBpdCdzIGEgSlMgdGVzdAorICAgICAgICBlbGlmIHNlbGYuaXNfanN0ZXN0KCk6CisgICAg
ICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAnanN0ZXN0JzogVHJ1
ZX0KKworICAgICAgICAjIE9yIGlmIHdlIGV4cGxpY2l0bHkgd2FudCBldmVyeXRoaW5nCisgICAg
ICAgIGVsaWYgc2VsZi5vcHRpb25zWydhbGwnXSBpcyBUcnVlIGFuZCBcCisgICAgICAgICAgICAg
bm90KCctcmVmJyBpbiBzZWxmLmZpbGVuYW1lKSBhbmQgXAorICAgICAgICAgICAgIG5vdCgncmVm
ZXJlbmNlJyBpbiBzZWxmLmZpbGVuYW1lKToKKyAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVz
dCc6IHNlbGYuZmlsZW5hbWV9CisKKyAgICAgICAgIyBDb3VydGVzeSBjaGVjayBhbmQgd2Fybmlu
ZyBpZiB0aGVyZSBhcmUgYW55IG1pc21hdGNoZXMKKyAgICAgICAgbWlzbWF0Y2hlcyA9IHNlbGYu
Z2V0X3JlZnRlc3RzKEZhbHNlKQorICAgICAgICBpZiBsZW4obWlzbWF0Y2hlcykgIT0gMDoKKyAg
ICAgICAgICAgIHByaW50ICJXYXJuaW5nOiBXZWJraXQgZG9lcyBub3Qgc3VwcG9ydCBtaXNtYXRj
aCByZWZlcmVuY2VzLiBJZ25vcmluZyBtaXNtYXRjaCBkZWZpbmVkIGluICIgKyBvcy5wYXRoLmJh
c2VuYW1lKHNlbGYuZmlsZW5hbWUpCisKKyAgICAgICAgcmV0dXJuIHRlc3RfaW5mbworCisgICAg
ZGVmIGdldF9yZWZ0ZXN0cyhzZWxmLCBmaW5kX21hdGNoKToKKyAgICAgICAgIiIiIFNlYXJjaGVz
IGZvciBhbGwgcmVmZXJlbmNlIGxpbmtzIGluIHRoZSBmaWxlLiBJZiB8ZmluZF9tYXRjaHwgaXMg
c2VhcmNoZXMgZm9yIG1hdGNoZXMsIG90aGVyd2lzZSBmb3IgbWlzbWF0Y2hlcyAiIiIKKworICAg
ICAgICBpZiBmaW5kX21hdGNoOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9kb2MuZmlu
ZEFsbChyZWw9J21hdGNoJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
LnRlc3RfZG9jLmZpbmRBbGwocmVsPSdtaXNtYXRjaCcpCisKKyAgICBkZWYgaXNfanN0ZXN0KHNl
bGYpOgorICAgICAgICAiIiIgU2VhcmNoZXMgdGhlIGZpbGUgZm9yIHVzYWdlIG9mIFczQy1zdHls
ZSB0ZXN0aGFybmVzcyBwYXRocyAiIiIKKworICAgICAgICBpZiBzZWxmLnRlc3RfZG9jLmZpbmQo
c3JjPXJlLmNvbXBpbGUoJ1tcJ1wiL10/L3Jlc291cmNlcy90ZXN0aGFybmVzcycpKSBpcyBOb25l
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zdXBwb3J0X2ZpbGVzKHNlbGYsIGRvYyk6CisgICAg
ICAgICIiIiBTZWFyY2hlcyB0aGUgZmlsZSBmb3IgYWxsIHBhdGhzIHNwZWNpZmllZCBpbiB1cmwo
KSdzLCBocmVmIG9yIHNyYyBhdHRyaWJ1dGVzICIiIgorCisgICAgICAgIHN1cHBvcnRfZmlsZXMg
PSBbXQorCisgICAgICAgIGlmIGRvYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHN1cHBv
cnRfZmlsZXMKKworICAgICAgICAjIExvb2sgZm9yIHRhZ3Mgd2l0aCBzcmMgb3IgaHJlZiBhdHRy
aWJ1dGVzCisgICAgICAgIHNyY19hdHRycyA9IGRvYy5maW5kQWxsKHNyYz1yZS5jb21waWxlKCcu
KicpKQorICAgICAgICBocmVmX2F0dHJzID0gZG9jLmZpbmRBbGwoaHJlZj1yZS5jb21waWxlKCcu
KicpKQorCisgICAgICAgICMgTG9vayBmb3IgdXJscworICAgICAgICB1cmxfcGF0dGVybiA9IHJl
LmNvbXBpbGUoJ3VybFwoLipcKScpCisgICAgICAgIHVybHMgPSBbXQorICAgICAgICBmb3IgdXJs
IGluIGRvYy5maW5kQWxsKHRleHQ9dXJsX3BhdHRlcm4pOgorICAgICAgICAgICAgdXJsID0gcmUu
c2VhcmNoKHVybF9wYXR0ZXJuLCB1cmwpCisgICAgICAgICAgICB1cmwgPSByZS5zdWIoJ3VybFwo
W1wnXCJdJywgJycsIHVybC5ncm91cCgwKSkKKyAgICAgICAgICAgIHVybCA9IHJlLnN1YignW1wn
XCJdXCknLCAnJywgdXJsKQorICAgICAgICAgICAgdXJscy5hcHBlbmQodXJsKQorCisgICAgICAg
IHNyY19wYXRocyA9IFtzcmNfdGFnWydzcmMnXSBmb3Igc3JjX3RhZyBpbiBzcmNfYXR0cnNdCisg
ICAgICAgIGhyZWZfcGF0aHMgPSBbaHJlZl90YWdbJ2hyZWYnXSBmb3IgaHJlZl90YWcgaW4gaHJl
Zl9hdHRyc10KKworICAgICAgICBwYXRocyA9IHNyY19wYXRocyArIGhyZWZfcGF0aHMgKyB1cmxz
CisgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAgICAgIyBJZ25vcmUgaHR0cCBh
bmQgbWFpbHRvIGxpbmtzCisgICAgICAgICAgICBpZiBub3QocGF0aC5zdGFydHN3aXRoKCdodHRw
OicpKSBhbmQgXAorICAgICAgICAgICAgICAgbm90KHBhdGguc3RhcnRzd2l0aCgnbWFpbHRvOicp
KToKKyAgICAgICAgICAgICAgICBzdXBwb3J0X2ZpbGVzLmFwcGVuZChwYXRoKQorCisgICAgICAg
IHJldHVybiBzdXBwb3J0X2ZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjY5ZmVmYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X3BhcnNlcl91bml0dGVzdC5weQpAQCAtMCwwICsxLDI1MiBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
IyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQor
IyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1B
R0UuCisKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfcGFyc2VyIGltcG9ydCBUZXN0UGFyc2VyCitp
bXBvcnQgc3lzCitpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QK
K2ltcG9ydCBvcworCitvcHRpb25zID0geydhbGwnOiBGYWxzZSwgJ25vX292ZXJ3cml0ZSc6IEZh
bHNlfQorCisKK2NsYXNzIFRlc3RQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAg
IGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE9uZU1hdGNoKHNlbGYpOgorICAgICAgICAiIiIg
VGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSBiYXNpYyByZWZ0ZXN0IHdpdGggb25lIG1hdGNo
IGxpbmsgYW5kIG5vIG1pc21hdGNoIGxpbmtzICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIi
IjxoZWFkPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8
L2hlYWQ+CisiIiIKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAg
ICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUu
aHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250
ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZv
IHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwg
J2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGlu
IHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3Qg
ZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfaW5m
b1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGggaXMg
bm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0
ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9y
IHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9p
bmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6ZWQgYXMgYSBqc3Rl
c3QnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0TXVsdGlwbGVNYXRjaGVzKHNl
bGYpOgorICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHdp
dGggbXVsdGlwbGUgbWF0Y2ggbGlua3MgYW5kIG5vIG1pc21hdGNoIGxpbmtzICIiIgorCisgICAg
ICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4t
Ym94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJibHVlLWJveC1yZWYueGh0
IiAvPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0ib3JhbmdlLWJveC1yZWYueGh0IiAvPgorPC9o
ZWFkPgorIiIiCisgICAgICAgICMgQ2FwdHVyZSBzdGRvdXQgZm9yIHRoaXMgdGVzdAorICAgICAg
ICBzdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgIG91dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lP
KCkKKyAgICAgICAgc3lzLnN0ZG91dCA9IG91dHB1dAorCisgICAgICAgICMgQW5hbHl6ZSB0aGUg
dGVzdAorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVwL3BhdGgvJworICAgICAgICBw
YXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdzb21lZmlsZS5odG1sJykK
KyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRl
c3RfaHRtbCkKKworICAgICAgICAjIFJlc3RvcmUgc3Rkb3V0CisgICAgICAgIHN5cy5zdGRvdXQg
PSBzdGRvdXQKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVjdCB0ZXN0IGluZm8gd2FzIGZv
dW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdF9pbmZvLCBOb25lLCAnZGlkIG5v
dCBmaW5kIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9p
bmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEg
cmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9pbmZvWydyZWZl
cmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0aCksICdyZWZlcmVuY2UgcGF0aCBpcyBub3QgY29y
cmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5m
by5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0
ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5
cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBhbmFseXplZCBhcyBhIGpzdGVzdCcpCisK
KyAgICAgICAgIyBWZXJpZnkgd2UgZ290IHRoZSB3YXJuaW5nIGFib3V0IG11bHRpcGxlIG1hdGNo
ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dHB1dC5nZXR2YWx1ZSgpLnN0YXJ0c3dpdGgo
J1dhcm5pbmcnKSwgJ25vIHdhcm5pbmcgYWJvdXQgbXVsdGlwbGUgbWF0Y2hlcycpCisKKyAgICBk
ZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RNYXRjaEFuZE1pc21hdGNoKHNlbGYpOgorICAgICAg
ICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHdpdGggYSBvbmUgbWF0
Y2ggbGluayBhbmQgb25lIG1pc21hdGNoIGxpbmsgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0g
IiIiPGhlYWQ+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4K
KzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsdWUtYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9
Im1pc21hdGNoIiBocmVmPSJvcmFuZ2UtYm94LW5vdHJlZi54aHQiIC8+Cis8L2hlYWQ+CisiIiIK
KyAgICAgICAgIyBDYXB0dXJlIHN0ZG91dCBmb3IgdGhpcyB0ZXN0CisgICAgICAgIHN0ZG91dCA9
IHN5cy5zdGRvdXQKKyAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAg
ICBzeXMuc3Rkb3V0ID0gb3V0cHV0CisKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAg
ICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRl
c3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0
ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQor
CisgICAgICAgICMgUmVzdG9yZSBzdGRvdXQKKyAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAor
CisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0
ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygp
LCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdy
ZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2Ug
ZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0
YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwg
J3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0JykKKworICAgICAgICAj
IFZlcmlmeSB3ZSBnb3QgbXVsdGlwbGUgd2FybmluZ3MKKyAgICAgICAgd2FybmluZ3MgPSBvdXRw
dXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVu
KHdhcm5pbmdzKSwgMiwgJ2FsbCB3YXJuaW5ncyB3ZXJlIG5vdCBkaXNwbGF5ZWQnKQorICAgICAg
ICAjIFZlcmlmeSB0aGUgYm90aCB3YXJuaW5ncyBtZW50aW9uIHRoZSBpc3N1ZQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoJ211bHRpcGxlIG1hdGNoZXMnLCAnbm8gd2FybmluZyBhYm91dCBtdWx0
aXBsZSBtYXRjaGVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdtaXNtYXRjaCcsICdubyB3
YXJuaW5nIGFib3V0IG1pc21hdGNoZXMnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVRlc3RSZWZ0
ZXN0V2l0aFJlZlN1cHBvcnRGaWxlcyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGFuYWx5emVf
dGVzdCgpIHVzaW5nIGEgcmVmdGVzdCB0aGF0IGhhcyByZWZlcnMgdG8gYSByZWZlcmVuY2UgZmls
ZSBvdXRzaWRlIG9mIHRoZSB0ZXN0cyBkaXJlY3RvcnkgYW5kIHRoZSByZWZlcmVuY2UgZmlsZSBo
YXMgcGF0aHMgdG8gb3RoZXIgc3VwcG9ydCBmaWxlcyAiIiIKKworICAgICAgICB0ZXN0X2h0bWwg
PSAiIiI8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iLi4vcmVmZXJlbmNl
L2dyZWVuLWJveC1yZWYueGh0IiAvPgorPC9oZWFkPgorIiIiCisgICAgICAgIHJlZl9odG1sID0g
IiIiPGhlYWQ+Cis8bGluayBocmVmPSJzdXBwb3J0L2Nzcy9yZWYtc3R5bGVzaGVldC5jc3MiIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4uLy4uL3N1cHBvcnQvc29tZS1pbWFnZS5wbmci
KQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj48aW1nIHNyYz0iLi4vc3VwcG9ydC9i
bGFjazk2eDk2LnBuZyIgYWx0PSJJbWFnZSBkb3dubG9hZCBzdXBwb3J0IG11c3QgYmUgZW5hYmxl
ZCIgLz48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIEFuYWx5emUgdGhl
IHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAg
cGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcp
CisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10
ZXN0X2h0bWwsIHJlZl9jb250ZW50cz1yZWZfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0aGUg
Y29ycmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwo
dGVzdF9pbmZvLCBOb25lLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3Qg
ZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8u
a2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUodGVzdF9pbmZvWydyZWZlcmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0aCksICdy
ZWZlcmVuY2UgcGF0aCBpcyBub3QgY29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
cmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSByZWZzdXBw
b3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4o
dGVzdF9pbmZvWydyZWZzdXBwb3J0J10pLCAzLCAndGhlcmUgc2hvdWxkIGJlIDMgc3VwcG9ydCBm
aWxlcyBpbiB0aGlzIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVz
dCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6
ZWQgYXMgYSBqc3Rlc3QnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZUpTVGVzdChzZWxmKToKKyAg
ICAgICAgIiIiIFRlc3RzIGFuYWx5emVfdGVzdCgpIHVzaW5nIGEganN0ZXN0ICIiIgorCisgICAg
ICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorIiIiCisgICAg
ICAgICMgQW5hbHl6ZSB0aGUgdGVzdAorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVw
L3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCAr
ICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVz
dCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVj
dCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdF9p
bmZvLCBOb25lLCAndGVzdF9pbmZvIGlzIE5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
J3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCks
ICdzaG9sZCBub3QgaGF2ZSBmb3VuZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3Vs
ZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIGJlIGEg
anN0ZXN0JykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVQaXhlbFRlc3RBbGxUcnVlKHNlbGYpOgor
ICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSB0ZXN0IHRoYXQgaXMgbmVp
dGhlciBhIHJlZnRlc3Qgb3IganN0ZXN0IHdpdGggYWxsPUZhbHNlICIiIgorCisgICAgICAgIHRl
c3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9O
IE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhP
UiIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1MgRk9SIFRFU1QKK11d
Pjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAorPC9ib2R5PgorPC9o
dG1sPgorIiIiCisgICAgICAgICMgU2V0IG9wdGlvbnMgdG8gJ2FsbCcgc28gdGhpcyBnZXRzIGZv
dW5kCisgICAgICAgIG9wdGlvbnNbJ2FsbCddID0gVHJ1ZQorCisgICAgICAgICMgQW5hbHl6ZSB0
aGUgdGVzdAorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVwL3BhdGgvJworICAgICAg
ICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdzb21lZmlsZS5odG1s
JykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRz
PXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVjdCB0ZXN0IGluZm8gd2Fz
IGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdF9pbmZvLCBOb25lLCAndGVz
dF9pbmZvIGlzIE5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGluIHRlc3Rf
aW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdzaG9sZCBub3QgaGF2
ZSBmb3VuZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVm
c3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBw
b3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rl
c3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgYmUgYSBqc3Rlc3QnKQor
CisgICAgZGVmIHRlc3RfYW5hbHl6ZVBpeGVsVGVzdEFsbEZhbHNlKHNlbGYpOgorICAgICAgICAi
IiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSB0ZXN0IHRoYXQgaXMgbmVpdGhlciBhIHJl
ZnRlc3Qgb3IganN0ZXN0LCB3aXRoIC1hbGw9RmFsc2UgIiIiCisKKyAgICAgICAgdGVzdF9odG1s
ID0gIiIiPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVT
VDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiAvPgor
PHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVOVCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+Cisi
IiIKKyAgICAgICAgIyBTZXQgYWxsIHRvIGZhbHNlIHNvIHRoaXMgZ2V0cyBza2lwcGVkCisgICAg
ICAgIG9wdGlvbnNbJ2FsbCddID0gRmFsc2UKKworICAgICAgICAjIEFuYWx5emUgdGhlIHRlc3QK
KyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2Vy
ID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAg
ICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0
bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ3Rlc3Qgc2hvdWxkIGhh
dmUgYmVlbiBza2lwcGVkJykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVOb25IVE1MRmlsZShzZWxm
KToKKyAgICAgICAgIiIiIFRlc3RzIGFuYWx5emVfdGVzdCgpIHdpdGggYSBmaWxlIHRoaXMgaXNu
J3QgaHRtbCAodGhpcyBvbmUhKSAiIiIKKworICAgICAgICAjIFRyeSB0byBhbmFseXplIHRoZSBz
Y3JpcHQgZmlsZSB3ZSdyZSB0ZXN0aW5nIChob3cgbWV0YSkKKyAgICAgICAgdGVzdF9wYXJzZXJf
cHlfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAndGVzdF9w
YXJzZXIucHknKQorCisgICAgICAgICMgQW5hbHl6ZSB0aGUgZmlsZQorICAgICAgICBwYXJzZXIg
PSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGFyc2VyX3B5X2ZpbGUpCisgICAgICAgIHRlc3Rf
aW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QoKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3Jy
ZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2lu
Zm8sIE5vbmUsICdubyB0ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGZvdW5kIGluIHRoaXMgZmlsZScp
Cg==
</data>
<flag name="review"
          id="221760"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>200314</attachid>
            <date>2013-05-02 07:16:00 -0700</date>
            <delta_ts>2013-05-02 09:03:18 -0700</delta_ts>
            <desc>Fixed that last few minor nits</desc>
            <filename>bug111513-05-02-13.patch</filename>
            <type>application/octet-stream</type>
            <size>71559</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMDY1
MzZmLi43ZDU2ZTVhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTMtMDUtMDEgIFJlYmVjY2EgSGF1Y2sgIDxyaGF1
Y2tAYWRvYmUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3Jp
cHQgdG8gYXV0b21hdGUgdGhlIGltcG9ydCBvZiBXM0MgdGVzdHMgaW50byBXZWJLaXQuIAorICAg
ICAgICBGb3IgdGhlIGZ1bGwgZGVzY3JpcHRpb24gb2YgaG93IGl0IHdvcmtzLCBzZWUgdGhlIGNv
bW1lbnRzCisgICAgICAgIGF0IHRoZSB0b3Agb2YgdGVzdF9pbXBvcnRlci5weS4KKworICAgICAg
ICAqIFNjcmlwdHMvaW1wb3J0LXczYy10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS93M2MvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIp
OgorICAgICAgICAoVGVzdENvbnZlcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0Q29udmVy
dGVyLmxvYWRfcHJlZml4ZWRfcHJvcF9saXN0KToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIubG9h
ZF9maWxlKToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KToKKyAg
ICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyk6CisgICAgICAg
IChUZXN0Q29udmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgIChU
ZXN0Q29udmVydGVyLnNjcnViX3VucHJlZml4ZWRfcHJvcHMpOgorICAgICAgICAoVGVzdENvbnZl
cnRlci5yZXBsYWNlX3RhZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9j
b252ZXJ0ZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3Qp
OgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QudGVzdExvYWRQcmVmaXhlZFByb3BMaXN0KToK
KyAgICAgICAgKFRlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfY29udmVydEZvcldlYmtpdE5vdGhpbmdU
b0NvbnZlcnQpOgorICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkpOgor
ICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNPbmx5KToKKyAgICAgICAgKHRlc3Rf
Y29udmVydEZvcldlYmtpdEhhcm5lc3NBbmRQcm9wcyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRU
ZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGll
cyk6CisgICAgICAgICh2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHZlcmlmeVBy
ZWZpeGVkUHJvcGVydGllcyk6CisgICAgICAgIChnZW5lcmF0ZVRlc3RDb250ZW50KToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OiBBZGRlZC4KKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgICh2YWxpZGF0ZV9pbXBv
cnRfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlcik6CisgICAgICAgIChUZXN0SW1w
b3J0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6CisgICAg
ICAgIChUZXN0SW1wb3J0ZXIuZ2V0X2NoYW5nZXNldCk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIu
c2Nhbl9zb3VyY2VfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVz
dHMpOgorICAgICAgICAoVGVzdEltcG9ydGVyLnNldHVwX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeSk6
CisgICAgICAgIChUZXN0SW1wb3J0ZXIuZ2V0X3Rlc3Rfc3RhdHVzKToKKyAgICAgICAgKFRlc3RJ
bXBvcnRlci5yZW1vdmVfZGVsZXRlZF9maWxlcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3Jp
dGVfaW1wb3J0X2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBv
cnRlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0KToKKyAg
ICAgICAgKFRlc3RJbXBvcnRlclRlc3QudGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6IEFkZGVkLgorICAgICAg
ICAoVGVzdFBhcnNlcik6CisgICAgICAgIChUZXN0UGFyc2VyLl9faW5pdF9fKToKKyAgICAgICAg
KFRlc3RQYXJzZXIubG9hZF9maWxlKToKKyAgICAgICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0
KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3JlZnRlc3RzKToKKyAgICAgICAgKFRlc3RQYXJz
ZXIuaXNfanN0ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3N1cHBvcnRfZmlsZXMpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0
LnRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2gpOgorICAgICAgICAodGVzdF9hbmFseXpl
VGVzdFJlZnRlc3RNdWx0aXBsZU1hdGNoZXMpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJl
ZnRlc3RNYXRjaEFuZE1pc21hdGNoKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0
V2l0aFJlZlN1cHBvcnRGaWxlcyk6CisgICAgICAgICh0ZXN0X2FuYWx5emVKU1Rlc3QpOgorICAg
ICAgICAodGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsVHJ1ZSk6CisgICAgICAgICh0ZXN0X2FuYWx5
emVQaXhlbFRlc3RBbGxGYWxzZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVOb25IVE1MRmlsZSk6
CisKIDIwMTMtMDQtMzAgIEdsZW5uIEFkYW1zICA8Z2xlbm5Ac2t5bmF2LmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiBBZGQgbXlzZWxmIHRvIHdhdGNobGlzdCBlbnRyaWVzLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiNzIwOTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKQEAgLTAsMCAr
MSwzNSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUK
KyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgor
IyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS53
M2MgaW1wb3J0IHRlc3RfaW1wb3J0ZXIKKworCitzeXMuZXhpdCh0ZXN0X2ltcG9ydGVyLm1haW4o
c3lzLmFyZ3ZbMTpdLCBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyKSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5
ZGUyOQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMThmYTIxCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkKQEAgLTAsMCAr
MSwyMDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBB
ZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJF
CisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YK
KyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgoraW1wb3J0IHJlCitpbXBvcnQgb3MKKworZnJvbSB3
ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAsIFRh
ZworCitTT1VSQ0VfU1VCRElSID0gJ1NvdXJjZScKK1dFQkNPUkVfU1VCRElSID0gJ1dlYkNvcmUn
CitDU1NfU1VCRElSID0gJ2NzcycKK0NTU19QUk9QRVJUWV9OQU1FU19JTiA9ICdDU1NQcm9wZXJ0
eU5hbWVzLmluJworTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSA9ICdMYXlvdXRUZXN0cycKK1JFU09V
UkNFU19ESVJFQ1RPUlkgPSAncmVzb3VyY2VzJworV0VCS0lUX1JPT1QgPSBfX2ZpbGVfXy5zcGxp
dChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisKKworY2xhc3MgVGVzdENvbnZlcnRlcihvYmpl
Y3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnByZWZpeGVkX3By
b3BlcnRpZXMgPSBzZWxmLmxvYWRfcHJlZml4ZWRfcHJvcF9saXN0KCkKKworICAgIGRlZiBsb2Fk
X3ByZWZpeGVkX3Byb3BfbGlzdChzZWxmKToKKyAgICAgICAgIiIiIFJlYWRzIHRoZSBjdXJyZW50
IGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggZnJv
bSBTb3VyY2UvV2ViQ29yZS9DU1MvQ1NTUHJvcGVydHlOYW1lcy5pbiBhbmQgc3RvcmVzIHRoZW0g
aW4gYW4gaW5zdGFuY2UgdmFyaWFibGUgIiIiCisKKyAgICAgICAgcHJlZml4ZWRfcHJvcF9saXN0
ID0gW10KKworICAgICAgICAjIE9wZW4gQ1NTUHJvcGVydHlOYW1lcy5pbiB0byBnZXQgdGhlIGN1
cnJlbnQgbGlzdCBvZiB0aGluZ3MgcmVxdWlyaW5nIHByZWZpeGVzCisgICAgICAgIGYgPSBvcGVu
KG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgV0VCS0lUX1JPT1QsIFNPVVJDRV9TVUJESVIsIFdF
QkNPUkVfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU19TVUJESVIsIENTU19QUk9QRVJUWV9OQU1FU19JTikpCisgICAgICAgIGxpbmVzID0gZi5y
ZWFkbGluZXMoKQorICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICMgTG9v
ayBmb3IgYW55dGhpbmcgd2l0aCB0aGUgLXdlYmtpdC0gcHJlZml4CisgICAgICAgICAgICBtYXRj
aCA9IHJlLnNlYXJjaCgnXi13ZWJraXQtW1x3fC1dKicsIGxpbmUpCisgICAgICAgICAgICBpZiBt
YXRjaCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIElnbm9yZSB0aGUgb25lcyB3aGVy
ZSBib3RoIHRoZSBwcmVmaXhlZCBhbmQgbm9uLXByZWZpeGVkIHByb3BlcnR5CisgICAgICAgICAg
ICAgICAgIyBhcmUgc3VwcG9ydGVkIC0gZGVub3RlZCBieSAtd2Via2l0LXNvbWUtcHJvcGVydHkg
PSBzb21lLXByb3BlcnR5CisgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmUuc3BsaXQoJz0nKSkg
PT0gMiBhbmQgXAorICAgICAgICAgICAgICAgICAgIGxpbmUuc3BsaXQoJz0nKVsxXS5zdHJpcCgp
IGluIGxpbmUuc3BsaXQoJz0nKVswXS5zdHJpcCgpOgorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeGVk
X3Byb3BfbGlzdC5hcHBlbmQobWF0Y2guZ3JvdXAoMCkpCisKKyAgICAgICAgcmV0dXJuIHByZWZp
eGVkX3Byb3BfbGlzdAorCisgICAgZGVmIGxvYWRfZmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAg
ICAgICIiIiBPcGVucyB0aGUgdGVzdCBmaWxlIHxmaWxlbmFtZXwgdG8gY29udmVydCAiIiIKKwor
ICAgICAgICBmID0gb3BlbihmaWxlbmFtZSkKKyAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKQor
ICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICByZXR1cm4gY29udGVudHMKKworICAgIGRlZiBj
b252ZXJ0X2Zvcl93ZWJraXQoc2VsZiwgbmV3X3BhdGgsIGNvbnRlbnRzPU5vbmUsIGZpbGVuYW1l
PU5vbmUpOgorICAgICAgICAiIiIgQ29udmVydHMgYSBmaWxlJ3MgfGNvbnRlbnRzfCBzbyBpdCB3
aWxsIGZ1bmN0aW9uIGNvcnJlY3RseSBpbiBpdHMgfG5ld19wYXRofCBpbiBXZWJraXQuIFJldHVy
bnMgdGhlIGxpc3Qgb2YgcHJlZml4ZWQgQ1NTIHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCBj
b250ZW50cy4iIiIKKworICAgICAgICBpZiBjb250ZW50cyBpcyBOb25lIGFuZCBmaWxlbmFtZSBp
cyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBpZiBjb250ZW50cyBp
cyBOb25lOgorICAgICAgICAgICAgY29udGVudHMgPSBzZWxmLmxvYWRfZmlsZShmaWxlbmFtZSkK
KworICAgICAgICAjIEhhbmRsZSBwbGFpbiBvbGQgQ1NTIGZpbGVzCisgICAgICAgIGlmIGZpbGVu
YW1lLmVuZHN3aXRoKCcuY3NzJyk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zY3J1Yl91bnBy
ZWZpeGVkX3Byb3BzKGNvbnRlbnRzKQorCisgICAgICAgICMgT3RoZXJ3aXNlLCBwYXJzZSBpdCBh
cyBpZiBIVE1MCisgICAgICAgIGRvYyA9IEJlYXV0aWZ1bFNvdXAoY29udGVudHMpCisgICAgICAg
IGpzdGVzdCA9IHNlbGYuY29udmVydF90ZXN0aGFybmVzc19wYXRocyhkb2MsIG5ld19wYXRoKQor
ICAgICAgICBjb252ZXJ0ZWQgPSBzZWxmLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhkb2Mp
CisKKyAgICAgICAgaWYgbGVuKGNvbnZlcnRlZFswXSkgPiAwIG9yIGpzdGVzdCBpcyBUcnVlOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmV0dXJuIE5vbmUKKworICAgIGRlZiBjb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKHNlbGYsIGRv
YywgbmV3X3BhdGgpOgorICAgICAgICAiIiIgVXBkYXRlIGxpbmtzIHRvIHRlc3RoYXJuZXNzLmpz
IGluIHRoZSBCZWF1dGlmdWxTb3VwIHxkb2N8IHRvIHBvaW50IHRvIHRoZSBjb3B5IGluIHxuZXdf
cGF0aHwuIFJldHVybnMgd2hldGhlciB0aGUgZG9jdW1lbnQgd2FzIG1vZGlmaWVkLiIiIgorCisg
ICAgICAgICMgTG9vayBmb3IgdGhlIFczQy1zdHlsZSBwYXRoIHRvIGFueSB0ZXN0aGFybmVzcyBm
aWxlcyAtIHNjcmlwdHMgKC5qcykgb3IgbGlua3MgKC5jc3MpCisgICAgICAgIHBhdHRlcm4gPSBy
ZS5jb21waWxlKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykKKyAgICAgICAgc2NyaXB0X3RhZ3Mg
PSBkb2MuZmluZEFsbChzcmM9cGF0dGVybikKKyAgICAgICAgbGlua190YWdzID0gZG9jLmZpbmRB
bGwoaHJlZj1wYXR0ZXJuKQorICAgICAgICB0ZXN0aGFybmVzc190YWdzID0gc2NyaXB0X3RhZ3Mg
KyBsaW5rX3RhZ3MKKworICAgICAgICBpZiBsZW4odGVzdGhhcm5lc3NfdGFncykgIT0gMDoKKwor
ICAgICAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgbmV3IGRp
cmVjdG9yeSB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAgICAgICAgICAgIHJlc291cmNlc19w
YXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBXRUJLSVRfUk9PVCwgTEFZT1VUX1RFU1RT
X0RJUkVDVE9SWSwgUkVTT1VSQ0VTX0RJUkVDVE9SWSkKKyAgICAgICAgICAgIHJlc291cmNlc19y
ZWxwYXRoID0gb3MucGF0aC5yZWxwYXRoKHJlc291cmNlc19wYXRoLCBuZXdfcGF0aCkKKworICAg
ICAgICAgICAgZm9yIHRhZyBpbiB0ZXN0aGFybmVzc190YWdzOgorICAgICAgICAgICAgICAgICMg
QnVpbGQgYSBuZXcgdGFnIHdpdGggdGhlIGNvcnJlY3QgcGF0aAorICAgICAgICAgICAgICAgIGF0
dHIgPSAnc3JjJworICAgICAgICAgICAgICAgIGlmIHRhZy5uYW1lICE9ICdzY3JpcHQnOgorICAg
ICAgICAgICAgICAgICAgICBhdHRyID0gJ2hyZWYnCisKKyAgICAgICAgICAgICAgICAjIEJ1aWxk
IGEgbmV3IHRhZyB3aXRoIHRoZSBjb3JyZWN0IHJlbGF0aXZlIHBhdGgKKyAgICAgICAgICAgICAg
ICBvbGRfcGF0aCA9IHRhZ1thdHRyXQorICAgICAgICAgICAgICAgIG5ld190YWcgPSBUYWcoZG9j
LCB0YWcubmFtZSwgdGFnLmF0dHJzKQorICAgICAgICAgICAgICAgIG5ld190YWdbYXR0cl0gPSBy
ZS5zdWIocGF0dGVybiwgcmVzb3VyY2VzX3JlbHBhdGggKyAnL3Rlc3RoYXJuZXNzJywgb2xkX3Bh
dGgpCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUgZG9jIHdpdGggdGhlIG5ldyB0YWcK
KyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFnKGRvYywgdGFnLCBuZXdfdGFnKQorCisg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKHNlbGYsIGRvYyk6
CisgICAgICAgICIiIiBTZWFyY2hlcyBhIEJlYXV0aWZ1bFNvdXAgfGRvY3wgZm9yIGFueSBDU1Mg
cHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBhbmQgY29udmVydHMgdGhl
bS4gUmV0dXJucyB0aGUgbGlzdCBvZiBjb252ZXJ0ZWQgcHJvcGVydGllcyBhbmQgdGhlIG1vZGlm
aWVkIGRvY3VtZW50IGFzIGEgc3RyaW5nICIiIgorCisgICAgICAgIGNvbnZlcnRlZF9wcm9wcyA9
IFtdCisKKyAgICAgICAgIyBMb29rIGZvciBpbmxpbmUgYW5kIGRvY3VtZW50IHN0eWxlcworICAg
ICAgICBpbmxpbmVfc3R5bGVzID0gZG9jLmZpbmRBbGwoc3R5bGU9cmUuY29tcGlsZSgnLionKSkK
KyAgICAgICAgc3R5bGVfdGFncyA9IGRvYy5maW5kQWxsKCdzdHlsZScpCisgICAgICAgIGFsbF9z
dHlsZXMgPSBpbmxpbmVfc3R5bGVzICsgc3R5bGVfdGFncworCisgICAgICAgIGZvciB0YWcgaW4g
YWxsX3N0eWxlczoKKworICAgICAgICAgICAgIyBHZXQgdGhlIHRleHQgd2hldGhlciBpbiBhIHN0
eWxlIHRhZyBvciBzdHlsZSBhdHRyaWJ1dGUKKyAgICAgICAgICAgIHN0eWxlX3RleHQgPSAnJwor
ICAgICAgICAgICAgaWYgdGFnLm5hbWUgPT0gJ3N0eWxlJzoKKyAgICAgICAgICAgICAgICBpZiBs
ZW4odGFnLmNvbnRlbnRzKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHN0eWxlX3RleHQgPSB0YWcu
Y29udGVudHNbMF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3R5bGVfdGV4
dCA9IHRhZ1snc3R5bGUnXQorCisgICAgICAgICAgICAjIFNjcnViIGl0IGZvciBwcm9wcyByZXF1
aXJpbmcgcHJlZml4ZXMKKyAgICAgICAgICAgIHNjcnViYmVkX3N0eWxlID0gc2VsZi5zY3J1Yl91
bnByZWZpeGVkX3Byb3BzKHN0eWxlX3RleHQpCisKKyAgICAgICAgICAgICMgUmV3cml0ZSB0YWcg
b25seSBpZiBjaGFuZ2VzIHdlcmUgbWFkZQorICAgICAgICAgICAgaWYgbGVuKHNjcnViYmVkX3N0
eWxlWzBdKSA+IDA6CisgICAgICAgICAgICAgICAgY29udmVydGVkX3Byb3BzLmV4dGVuZChzY3J1
YmJlZF9zdHlsZVswXSkKKworICAgICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgdGFnIHdpdGgg
dGhlIG1vZGlmaWVkIHRleHQKKyAgICAgICAgICAgICAgICBuZXdfdGFnID0gVGFnKGRvYywgdGFn
Lm5hbWUsIHRhZy5hdHRycykKKyAgICAgICAgICAgICAgICBuZXdfdGFnLmluc2VydCgwLCBzY3J1
YmJlZF9zdHlsZVsxXSkKKworICAgICAgICAgICAgICAgICMgVXBkYXRlIHRoZSBkb2Mgd2l0aCB0
aGUgbmV3IHRhZworICAgICAgICAgICAgICAgIHNlbGYucmVwbGFjZV90YWcoZG9jLCB0YWcsIG5l
d190YWcpCisKKyAgICAgICAgcmV0dXJuIChjb252ZXJ0ZWRfcHJvcHMsIGRvYy5wcmV0dGlmeSgp
KQorCisgICAgZGVmIHNjcnViX3VucHJlZml4ZWRfcHJvcHMoc2VsZiwgdGV4dCk6CisgICAgICAg
ICIiIiBTZWFyY2hlcyB8dGV4dHwgZm9yIGluc3RhbmNlcyBvZiBwcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB0aGUgLXdlYmtpdC0gcHJlZml4IGFuZCBhZGRzIHRoZSBwcmVmaXguIFJldHVybnMgdGhlIGxp
c3Qgb2YgY29udmVydGVkIHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCBzdHJpbmcgIiIiCisK
KyAgICAgICAgY29udmVydGVkX3Byb3BzID0gW10KKworICAgICAgICAjIFNwaW4gdGhyb3VnaCB0
aGUgd2hvbGUgbGlzdCBvZiBwcmVmaXhlZCBwcm9wZXJ0aWVzCisgICAgICAgIGZvciBwcmVmaXhl
ZF9wcm9wIGluIHNlbGYucHJlZml4ZWRfcHJvcGVydGllczoKKworICAgICAgICAgICAgIyBQdWxs
IHRoZSBwcmVmaXggb2ZmCisgICAgICAgICAgICB1bnByZWZpeGVkX3Byb3AgPSBwcmVmaXhlZF9w
cm9wLnJlcGxhY2UoJy13ZWJraXQtJywgJycpCisKKyAgICAgICAgICAgICMgTG9vayBmb3IgdGhl
IHZhcmlvdXMgd2F5cyBpdCBtaWdodCBiZSBpbiB0aGUgQ1NTCisgICAgICAgICAgICAjIE1hdGNo
IHRoZSB0aGUgcHJvcGVydHkgcHJlY2VkZWQgYnkgZWl0aGVyIHdoaXRlc3BhY2Ugb3IgbGVmdCBj
dXJseSBicmFjZQorICAgICAgICAgICAgIyBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJp
bmcgKGZvciBpbmxpbmUgc3R5bGUgYXR0cmlidXRlKQorICAgICAgICAgICAgcGF0dGVybiA9ICco
W1xze118XiknICsgdW5wcmVmaXhlZF9wcm9wICsgJyhccys6fDopJworICAgICAgICAgICAgaWYg
cmUuc2VhcmNoKHBhdHRlcm4sIHRleHQpOgorICAgICAgICAgICAgICAgIHByaW50ICdjb252ZXJ0
aW5nICcgKyB1bnByZWZpeGVkX3Byb3AgKyAnIC0+ICcgKyBwcmVmaXhlZF9wcm9wCisgICAgICAg
ICAgICAgICAgY29udmVydGVkX3Byb3BzLmFwcGVuZChwcmVmaXhlZF9wcm9wKQorICAgICAgICAg
ICAgICAgIHRleHQgPSByZS5zdWIocGF0dGVybiwgcHJlZml4ZWRfcHJvcCArICc6JywgdGV4dCkK
KworICAgICAgICAjIFRPRE86IEhhbmRsZSB0aGUgSlMgdmVyc2lvbnMgb2YgdGhlc2UgcHJvcGVy
dGllcywgdG9vLgorCisgICAgICAgIHJldHVybiAoY29udmVydGVkX3Byb3BzLCB0ZXh0KQorCisg
ICAgZGVmIHJlcGxhY2VfdGFnKHNlbGYsIGRvYywgb2xkX3RhZywgbmV3X3RhZyk6CisgICAgICAg
ICIiIiBJbnNlcnRzIGEgfG5ld190YWd8IGludG8gYSBCZWF1dGlmdWxTb3VwIHxkb2N8IGFuZCBy
ZW1vdmVzIHRoZSB8b2xkX3RhZ3wgIiIiCisKKyAgICAgICAgIyBSZXBsYWNlIHRoZSBwcmV2aW91
cyB0YWcgd2l0aCB0aGUgbmV3IG9uZQorICAgICAgICBpbmRleCA9IG9sZF90YWcucGFyZW50LmNv
bnRlbnRzLmluZGV4KG9sZF90YWcpCisgICAgICAgIG9sZF90YWcucGFyZW50Lmluc2VydChpbmRl
eCwgbmV3X3RhZykKKyAgICAgICAgb2xkX3RhZy5leHRyYWN0KCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk4ODNiMAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CkBAIC0w
LDAgKzEsMzYxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIw
MTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GCisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KK2ltcG9ydCBvcworZnJvbSByYW5kb20gaW1w
b3J0IHJhbmRpbnQKK2ltcG9ydCByZQoraW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAorCitm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291
cAorCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2NvbnZlcnRlciBpbXBvcnQgVGVzdENvbnZlcnRl
cgorZnJvbSB3ZWJraXRweS53M2MgaW1wb3J0IHRlc3RfY29udmVydGVyCisKKworY2xhc3MgVGVz
dENvbnZlcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RMb2FkUHJl
Zml4ZWRQcm9wTGlzdChzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIHRoYXQgdGhlIGN1cnJlbnQg
bGlzdCBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IGxvYWQgY29y
cmVjdGx5ICIiIgorCisgICAgICAgICMgR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcHJlZml4ZWQgcHJv
cGVydGllcworICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgcHJv
cF9saXN0ID0gY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMKKworICAgICAgICAjIFZlcmlm
eSB3ZSBnb3QgcHJvcGVydGllcyBiYWNrCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4o
cHJvcF9saXN0KSwgMCwgJ05vIHByZWZpeGVkIHByb3BlcnRpZXMgZm91bmQnKQorCisgICAgICAg
ICMgVmVyaWZ5IHRoZXkncmUgYWxsIHByZWZpeGVkCisgICAgICAgIGZvciBwcm9wIGluIHByb3Bf
bGlzdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9wLnN0YXJ0c3dpdGgoJy13ZWJr
aXQtJykpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0Tm90aGluZ1RvQ29udmVydChz
ZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFz
aWMgdGVzdCB0aGF0IGhhcyBub3RoaW5nIHRvIGNvbnZlcnQgIiIiCisKKyAgICAgICAgdGVzdF9o
dG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3Ry
aWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3Qu
ZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFk
PgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJl
bD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCitocmVmPSJtYWlsdG86RU1BSUwgT1Ig
aHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJSRUxFVkFOVF9T
UEVDX1NFQ1RJT04iLz4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVEVTVCBBU1NFUlRJ
T04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1MgRk9SIFRFU1QKK11d
Pjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAorPC9ib2R5PgorPC9o
dG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAg
ICMgVHJ5IHRvIGNvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVkID0gY29udmVydGVy
LmNvbnZlcnRfZm9yX3dlYmtpdCgnL25vdGhpbmcvdG8vY29udmVydCcsIGNvbnRlbnRzPXRlc3Rf
aHRtbCwgZmlsZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMgVmVyaWZ5IG5vdGhp
bmcgd2FzIGNvbnZlcnRlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnZlcnRlZCwgTm9u
ZSwgJ3Rlc3Qgd2FzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbnZlcnRlZCcpCisKKyAgICBkZWYg
dGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkoc2VsZik6CisgICAgICAgICIiIiBUZXN0
cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2ljIEpTIHRlc3QgdGhhdCB1c2VzIHRl
c3RoYXJuZXNzLmpzIG9ubHkgYW5kIGhhcyBubyBwcmVmaXhlZCBwcm9wZXJ0aWVzICIiIgorCisg
ICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorIiIiCisg
ICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgICMgQ3JlYXRlIHBh
dGggdG8gYSBmYWtlIHRlc3QgZGlyZWN0b3J5CisgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuTEFZT1VU
X1RFU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdoYXJuZXNzb25seScpCisKKyAgICAgICAgIyBDb252
ZXJ0IHRoZSBodG1sCisgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X2Zvcl93
ZWJraXQodGVzdF9wYXRoLCBjb250ZW50cz10ZXN0X2h0bWwsIGZpbGVuYW1lPSdzb21lZmlsZS5o
dG1sJykKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVy
dGVkJykKKworICAgICAgICAjIFZlcmlmeSB0aGF0IGJvdGggdGhlIGhhcm5lc3MgcGF0aHMgd2Vy
ZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRo
cyhjb252ZXJ0ZWRbMV0sIHRlc3RfcGF0aCwgMSwgMSkKKworICAgICAgICAjIFZlcmlmeSBubyBw
cm9wZXJ0aWVzIHdlcmUgY29udmVydGVkCisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9w
ZXJ0aWVzKGNvbnZlcnRlZCwgW10pCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJv
cHNPbmx5KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29udmVydF9mb3Jfd2Via2l0KCkgdXNp
bmcgYSB0ZXN0IHRoYXQgaGFzIDIgcHJlZml4ZWQgcHJvcGVydGllczogMSBpbiBhIHN0eWxlIGJs
b2NrICsgMSBpbmxpbmUgc3R5bGUgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisKKyNibG9jazEg
eyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZWxlbTEiIHN0eWxlPSJAdGVzdDFAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KKyIiIgorCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisg
ICAgICAgICMgQ3JlYXRlIHBhdGggdG8gYSBmYWtlIHRlc3QgZGlyZWN0b3J5CisgICAgICAgIHRl
c3RfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lU
X1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9jb252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXJuZXNzYW5kcHJv
cHMnKQorCisgICAgICAgICMgR2VuZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3QgcHJvcGVydGllcyBp
bnRvIHRoZSB0ZXN0X2h0bWwKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRl
c3RDb250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyLCB0ZXN0X2h0bWwpCisK
KyAgICAgICAgIyBDb252ZXJ0IHRoZSBodG1sCisgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRl
ci5jb252ZXJ0X2Zvcl93ZWJraXQodGVzdF9wYXRoLCBjb250ZW50cz10ZXN0X2NvbnRlbnRbMV0s
IGZpbGVuYW1lPSdzb21lZmlsZS5odG1sJykKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNp
b24gaGFwcGVuZWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUs
ICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykKKworICAgICAgICAjIFZlcmlmeSB0aGF0IGJvdGgg
dGhlIGhhcm5lc3MgcGF0aHMgYW5kIHByb3BlcnRpZXMgd2VyZSBhbGwgY29udmVydGVkIGNvcnJl
Y3RseQorICAgICAgICBzZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoY29udmVydGVkWzFdLCB0
ZXN0X3BhdGgsIDEsIDEpCisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKGNv
bnZlcnRlZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHRlc3RfY29udmVydEZvcldlYmtp
dEhhcm5lc3NBbmRQcm9wcyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dl
YmtpdCgpIHVzaW5nIGEgYmFzaWMgSlMgdGVzdCB0aGF0IHVzZXMgdGVzdGhhcm5lc3MuanMgYW5k
IHRlc3RoYXJuZXNzLmNzcyBhbmQgaGFzIDQgcHJlZml4ZWQgcHJvcGVydGllczogMyBpbiBhIHN0
eWxlIGJsb2NrICsgMSBpbmxpbmUgc3R5bGUgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIi
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisKKyNi
bG9jazEgeyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKyNibG9jazIgeyBAdGVzdDFAOiBwcm9wdmFs
dWU7IH0KKyNibG9jazMgeyBAdGVzdDJAOiBwcm9wdmFsdWU7IH0KKworPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxlPSJAdGVzdDNAOiBwcm9wdmFsdWU7Ij48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29u
dmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9y
eQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29u
dmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NT
X1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
aGFybmVzc2FuZHByb3BzJykKKworICAgICAgICAjIEdlbmVyYXRlICYgaW5zZXJ0IHRoZSB0ZXN0
IHByb3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisgICAgICAgIHRlc3RfY29udGVudCA9IHNl
bGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcywgNCwg
dGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0
ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3RfcGF0aCwgY29udGVudHM9dGVz
dF9jb250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisKKyAgICAgICAgIyBWZXJp
ZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29u
dmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJp
ZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIGFuZCBwcm9wZXJ0aWVzIHdlcmUgYWxsIGNv
bnZlcnRlZCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi52ZXJpZnlUZXN0SGFybmVzc1BhdGhzKGNv
bnZlcnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQorICAgICAgICBzZWxmLnZlcmlmeVByZWZpeGVk
UHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFswXSkKKworICAgIGRlZiB0ZXN0X2Nv
bnZlcnRUZXN0SGFybmVzc1BhdGhzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29udmVydF90
ZXN0aGFybmVzc19wYXRocygpIHdpdGggYSB0ZXN0IHRoYXQgdXNlcyBhbGwgdGhyZWUgdGVzdGhh
cm5lc3MgZmlsZXMgIiIiCisKKyAgICAgICAgIyBCYXNpYyB0ZXN0IGNvbnRlbnQgdXNpbmcgYWxs
IHRocmVlIHRlc3RoYXJuZXNzIGZpbGVzCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgor
PGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0
ZXIoKQorCisgICAgICAgICMgQ3JlYXRlIHBhdGggdG8gYSBmYWtlIHRlc3QgZGlyZWN0b3J5Cisg
ICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0
ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jb252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VC
RElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
aGFybmVzc3BhdGhzJykKKworICAgICAgICAjIENvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgZG9j
ID0gQmVhdXRpZnVsU291cCh0ZXN0X2h0bWwpCisgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRl
ci5jb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKGRvYywgdGVzdF9wYXRoKQorCisgICAgICAgICMg
VmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5lZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29u
dmVydGVkLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgYWxs
IGdvdCBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQ
YXRocyhkb2MsIHRlc3RfcGF0aCwgMiwgMSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRQcmVmaXhl
ZFByb3BlcnRpZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X3ByZWZpeGVkX3By
b3BlcnRpZXMoKSBmaWxlIHRoYXQgaGFzIDIwIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Vi
a2l0LSBwcmVmaXg6CisgICAgICAgIDEwIGluIG9uZSBzdHlsZSBibG9jayArIDUgaW4gYW5vdGhl
ciBzdHlsZQorICAgICAgICBibG9jayArIDUgaW5saW5lIHN0eWxlcywgaW5jbHVkaW5nIG9uZSB3
aXRoIG11bHRpcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuCisgICAgICAgIFRoZSBwcm9wZXJ0aWVz
IGluIHRoZSB0ZXN0IGNvbnRlbnQgYXJlIGluIGFsbCBzb3J0cyBvZiB3YWNrIGZvcm1hdHRpbmcu
CisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMSB7CisgICAgd2lkdGg6IDMwMHB4Owor
ICAgIGhlaWdodDogMzAwcHgKK30KKworLmJsb2NrMiB7CisgICAgQHRlc3QwQDogcHJvcHZhbHVl
OworfQorCisuYmxvY2sze0B0ZXN0MUA6IHByb3B2YWx1ZTt9CisKKy5ibG9jazQgeyBAdGVzdDJA
OnByb3B2YWx1ZTsgfQorCisuYmxvY2s1eyBAdGVzdDNAIDpwcm9wdmFsdWU7IH0KKworI2Jsb2Nr
NiB7ICAgIEB0ZXN0NEAgICA6ICAgcHJvcHZhbHVlOyAgfQorCisjYmxvY2s3Cit7CisgICAgQHRl
c3Q1QDogcHJvcHZhbHVlOworfQorCisjYmxvY2s4IHsgQHRlc3Q2QDogcHJvcHZhbHVlOyB9CisK
KyNibG9jazk6cHNldWRvCit7CisKKyAgICBAdGVzdDdAOiBwcm9wdmFsdWU7CisgICAgQHRlc3Q4
QDogIHByb3B2YWx1ZSBwcm9wdmFsdWUgcHJvcHZhbHVlOzsKK30KKworXV0+PC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRlc3Q5QDogcHJvcHZh
bHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJwcm9wbmFtZTogcHJvcHZh
bHVlOyBAdGVzdDEwQCA6IHByb3B2YWx1ZTsgcHJvcG5hbWU6cHJvcHZhbHVlOyI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJAdGVzdDExQDogcHJvcHZhbHVlOyBAdGVzdDEyQCA6
IHByb3B2YWx1ZTsgQHRlc3QxM0AgICA6cHJvcHZhbHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0i
ZWxlbTMiIHN0eWxlPSJAdGVzdDE0QDpwcm9wdmFsdWUiPjwvZGl2PgorPC9ib2R5PgorPHN0eWxl
IHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMTB7IEB0ZXN0MTVAOiBwcm9wdmFs
dWU7IH0KKy5ibG9jazExeyBAdGVzdDE2QDogcHJvcHZhbHVlOyB9CisuYmxvY2sxMnsgQHRlc3Qx
N0A6IHByb3B2YWx1ZTsgfQorI2Jsb2NrMTM6cHNldWRvCit7CisgICAgQHRlc3QxOEA6IHByb3B2
YWx1ZTsKKyAgICBAdGVzdDE5QDogcHJvcHZhbHVlOworfQorCitdXT48L3N0eWxlPgorPC9odG1s
PgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgICMg
R2VuZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3QgcHJvcGVydGllcyBpbnRvIHRoZSB0ZXN0X2h0bWwK
KyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRlc3RDb250ZW50KGNvbnZlcnRl
ci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyMCwgdGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVy
dCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9wcmVmaXhl
ZF9wcm9wZXJ0aWVzKEJlYXV0aWZ1bFNvdXAodGVzdF9jb250ZW50WzFdKSkKKworICAgICAgICAj
IFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVh
bChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykKKworICAgICAgICAj
IFZlcmlmeSBhbGwgdGhlIGdlbmVyYXRlZCB0ZXN0IHByb3BlcnRpZXMgd2VyZSBjb252ZXJ0ZWQg
Y29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKGNvbnZlcnRl
ZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoc2Vs
ZiwgY29udmVydGVkLCB0ZXN0X3BhdGgsIG51bV9zcmNfcGF0aHMsIG51bV9ocmVmX3BhdGhzKToK
KyAgICAgICAgIiIiIFZlcmlmaWVzIGFsbCBXM0Mtc3R5bGUgcGF0aHMgdG8gdGVzdCBoYXJuZXNz
IGZpbGVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseSAiIiIKKworICAgICAgICAjIE1ha2Ugc291
cCBpZiB3ZSBuZWVkIHRvCisgICAgICAgIGlmIGlzaW5zdGFuY2UoY29udmVydGVkLCBiYXNlc3Ry
aW5nKToKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IEJlYXV0aWZ1bFNvdXAoY29udmVydGVkKQor
CisgICAgICAgICMgQnVpbGQgdGhlIHBhdGggdG8gTGF5b3V0VGVzdHMvcmVzb3VyY2VzCisgICAg
ICAgIHJlc291cmNlc19kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVy
dGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5MQVlPVVRfVEVTVFNfRElSRUNUT1JZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRl
ci5SRVNPVVJDRVNfRElSRUNUT1JZKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBvcmlnaW5hbCBw
YXRocyBhcmUgbm8gbG9uZ2VyIHRoZXJlCisgICAgICAgIG9yaWdfcGF0aF9wYXR0ZXJuID0gcmUu
Y29tcGlsZSgnXCIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKHNyYz1vcmlnX3BhdGhfcGF0dGVybikpLCAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3Mgc3JjIHBhdGggd2FzIG5vdCBj
b252ZXJ0ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29udmVydGVkLmZpbmRB
bGwoaHJlZj1vcmlnX3BhdGhfcGF0dGVybikpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAndGVzdGhhcm5lc3MgaHJlZiBwYXRoIHdhcyBub3QgY29udmVydGVkJykKKworICAgICAgICAj
IEdldCB0aGUgbmV3IHJlbHBhdGggZnJvbSB0aGUgdGVzdGVyIGRpcgorICAgICAgICBuZXdfcmVs
cGF0aCA9IG9zLnBhdGgucmVscGF0aChyZXNvdXJjZXNfZGlyLCB0ZXN0X3BhdGgpCisKKyAgICAg
ICAgIyBWZXJpZnkgaXQncyBpbiBhbGwgdGhlIHJpZ2h0IHBsYWNlcworICAgICAgICByZWxwYXRo
X3BhdHRlcm4gPSByZS5jb21waWxlKG5ld19yZWxwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhsZW4oY29udmVydGVkLmZpbmRBbGwoc3JjPXJlbHBhdGhfcGF0dGVybikpLCBudW1fc3Jj
X3BhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3Mgc3JjIHJlbGF0
aXZlIHBhdGggbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29u
dmVydGVkLmZpbmRBbGwoaHJlZj1yZWxwYXRoX3BhdHRlcm4pKSwgbnVtX2hyZWZfcGF0aHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBocmVmIHJlbGF0aXZlIHBhdGgg
bm90IGNvcnJlY3QnKQorCisgICAgZGVmIHZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhzZWxmLCBj
b252ZXJ0ZWQsIHRlc3RfcHJvcGVydGllcyk6CisgICAgICAgICIiIiBWZXJpZmllcyBhIGxpc3Qg
b2YgdGVzdF9wcm9wZXJ0aWVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseSAiIiIKKworICAgICAg
ICAjIFZlcmlmeSB0aGF0IHRoZSBudW1iZXIgb2YgdGVzdCBwcm9wZXJ0aWVzIGVxdWFscyB0aGUg
bnVtYmVyIHRoYXQgd2VyZSBjb252ZXJ0ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
Y29udmVydGVkWzBdKSwgbGVuKHRlc3RfcHJvcGVydGllcyksICdJbmNvcnJlY3QgbnVtYmVyIG9m
IHByb3BlcnRpZXMgY29udmVydGVkJykKKworICAgICAgICAjIFZlcmlmeSB0aGV5J3JlIGFsbCBp
biB0aGUgY29udmVydGVkIGRvY3VtZW50CisgICAgICAgIGZvciB0ZXN0X3Byb3AgaW4gdGVzdF9w
cm9wZXJ0aWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCh0ZXN0X3Byb3AgaW4gY29u
dmVydGVkWzFdKSwgJ1Byb3BlcnR5ICcgKyB0ZXN0X3Byb3AgKyAnIG5vdCBmb3VuZCBpbiBjb252
ZXJ0ZWQgZG9jJykKKworICAgIGRlZiBnZW5lcmF0ZVRlc3RDb250ZW50KHNlbGYsIGZ1bGxfcHJv
cF9saXN0LCBudW1fdGVzdF9wcm9wZXJ0aWVzLCBodG1sKToKKyAgICAgICAgIiIiIEdlbmVyYXRl
cyBhIHJhbmRvbSBsaXN0IG9mIHVuaXF1ZSBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtp
dC0gcHJlZml4IGFuZCBpbnNlcnRzIHRoZW0gaW50byBodG1sIGNvbnRlbnQgdGhhdCdzIGJlZW4g
dG9rZW5pemVkIHVzaW5nIFwnQHRlc3RYWEBcJyBzeW50YXggIiIiCisKKyAgICAgICAgdGVzdF9w
cm9wZXJ0aWVzID0gW10KKworICAgICAgICAjIEdyYWIgYSByYW5kb20gYnVuY2ggb2YgMjAgdW5p
cXVlIHByb3BlcnRpZXMgcmVxdWlyaW5nIHByZWZpeGVzIHRvIHRlc3Qgd2l0aAorICAgICAgICBj
b3VudCA9IDAKKyAgICAgICAgd2hpbGUgY291bnQgPCBudW1fdGVzdF9wcm9wZXJ0aWVzOgorICAg
ICAgICAgICAgaWR4ID0gcmFuZGludCgwLCBsZW4oZnVsbF9wcm9wX2xpc3QpIC0gMSkKKyAgICAg
ICAgICAgIGlmIG5vdChmdWxsX3Byb3BfbGlzdFtpZHhdIGluIHRlc3RfcHJvcGVydGllcyk6Cisg
ICAgICAgICAgICAgICAgdGVzdF9wcm9wZXJ0aWVzLmFwcGVuZChmdWxsX3Byb3BfbGlzdFtpZHhd
KQorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKworICAgICAgICAjIFJlcGxhY2UgdGhlIHRv
a2VucyBpbiB0aGUgdGVzdGh0bWwgd2l0aCB0aGUgdGVzdCBwcm9wZXJ0aWVzLiBXYWxrIGJhY2t3
YXJkCisgICAgICAgICMgdGhyb3VnaCB0aGUgbGlzdCB0byByZXBsYWNlIHRoZSBkb3VibGUtZGln
aXQgdG9rZW5zIGZpcnN0CisgICAgICAgIGlkeCA9IGxlbih0ZXN0X3Byb3BlcnRpZXMpIC0gMQor
ICAgICAgICB3aGlsZSBpZHggPj0gMDoKKyAgICAgICAgICAgICMgVXNlIHRoZSB1bnByZWZpeGVk
IHZlcnNpb24KKyAgICAgICAgICAgIHRlc3RfcHJvcCA9IHRlc3RfcHJvcGVydGllc1tpZHhdLnJl
cGxhY2UoJy13ZWJraXQtJywgJycpCisgICAgICAgICAgICAjIFJlcGxhY2UgdGhlIHRva2VuCisg
ICAgICAgICAgICBodG1sID0gaHRtbC5yZXBsYWNlKCdAdGVzdCcgKyBzdHIoaWR4KSArICdAJywg
dGVzdF9wcm9wKQorICAgICAgICAgICAgaWR4IC09IDEKKworICAgICAgICByZXR1cm4gKHRlc3Rf
cHJvcGVydGllcywgaHRtbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9y
dGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NDE3MjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5
CkBAIC0wLDAgKzEsNDc3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQg
KEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
IyAgICBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMg
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GCisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKworIiIiCisgVGhpcyBzY3JpcHQg
aW1wb3J0cyBhIGRpcmVjdG9yeSBvZiBXM0MgQ1NTIHRlc3RzIGludG8gV2ViS2l0LgorCisgWW91
IG11c3QgaGF2ZSBjaGVja2VkIG91dCB0aGUgVzNDIHJlcG9zaXRvcnkgdG8geW91ciBsb2NhbCBk
cml2ZS4KKworIFRoaXMgc2NyaXB0IHdpbGwgaW1wb3J0IHRoZSB0ZXN0cyBpbnRvIFdlYktpdCBm
b2xsb3dpbmcgdGhlc2UgcnVsZXM6CisKKyAgICAtIE9ubHkgdGVzdHMgdGhhdCBhcmUgYXBwcm92
ZWQgb3Igb2ZmaWNpYWxseSBzdWJtaXR0ZWQgYXdhaXRpbmcgcmV2aWV3IGFyZSBpbXBvcnRlZAor
CisgICAgLSBBbGwgdGVzdHMgYXJlIGltcG9ydGVkIGludG8gTGF5b3V0VGVzdHMvY3Nzd2cKKwor
ICAgIC0gSWYgdGhlIHRlc3RzIGFyZSBhcHByb3ZlZCwgdGhleSdsbCBiZSBpbXBvcnRlZCBpbnRv
IGEgZGlyZWN0b3J5IHRyZWUgdGhhdAorICAgICAgbWlycm9ycyB0aGUgQ1NTIE1lcmN1cmlhbCBy
ZXBvLiBGb3IgZXhhbXBsZSwgPGNzc3dnX3JlcG9fcm9vdD4vYXBwcm92ZWQvY3NzMi4xIGlzIGJy
b3VnaHQgaW4KKyAgICAgIGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVkL2NzczIuMSwgbWFp
bnRhaW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVyIHRoYXQKKworICAg
IC0gSWYgdGhlIHRlc3RzIGFyZSBzdWJtaXR0ZWQsIHRoZXknbGwgYmUgYnJvdWdodCBpbiBhcyBM
YXlvdXRUZXN0cy9jc3N3Zy9zdWJtaXR0ZWQgYW5kIHdpbGwgYWxzbworICAgICAgbWFpbnRhaW4g
dGhlaXIgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0LiBGb3IgZXhhbXBsZSwgZXZlcnl0
aGluZyB1bmRlcgorICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL2Fkb2JlL3N1
Ym1pdHRlZCBpcyBicm91Z2h0IGludG8gc3VibWl0dGVkLCBtaXJyb3JpbmcgaXRzCisgICAgICBk
aXJlY3Rvcnkgc3RydWN0dXJlIGluIHRoZSBjc3N3ZyByZXBvCisKKyAgICAtIElmIHRoZSBpbXBv
cnQgZGlyZWN0b3J5IHNwZWNpZmllZCBpcyBqdXN0IGEgY29udHJpYnV0b3IgZm9sZGVyLCBvbmx5
IHRoZSBzdWJtaXR0ZWQgZm9sZGVyCisgICAgICBmb3IgdGhhdCBjb250cmlidXRvciBpcyBicm91
Z2h0IGluLiBGb3IgZXhhbXBsZSwgdG8gaW1wb3J0IGFsbCBvZiBNb3ppbGxhJ3MgdGVzdHMsIGVp
dGhlcgorICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEgb3IgPGNz
c3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEvc3VibWl0dGVkCisgICAgICB3aWxs
IHdvcmsgYW5kIGFyZSBlcXVpdmFsZW50CisKKyAgICAtIEZvciB0aGUgdGltZSBiZWluZywgdGhp
cyBzY3JpcHQgd29uJ3Qgd29yayBpZiB5b3UgdHJ5IHRvIGltcG9ydCB0aGUgZnVsbCBzZXQgb2Yg
c3VibWl0dGVkCisgICAgICB0ZXN0cyB1bmRlciBjb250cmlidXRvcnMvKi9zdWJtaXR0ZWQuIFNp
bmNlIHRoZXNlIGFyZSBhd2FpdGluZyByZXZpZXcsIHRoaXMgaXMganVzdCBhIHNtYWxsCisgICAg
ICBjb250cm9sIG1lY2hhbmlzbSB0byBlbmZvcmNlIGNhcmVmdWxseSBzZWxlY3Rpbmcgd2hhdCBu
b24tYXBwcm92ZWQgdGVzdHMgYXJlIGltcG9ydGVkLgorICAgICAgSXQgY2FuIG9idmlvdXNseSBh
bmQgZWFzaWx5IGJlIGNoYW5nZWQuCisKKyAgICAtIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMg
YW5kIGpzdGVzdCBhcmUgaW1wb3J0ZWQuIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhIC1h
IG9yIC0tYWxsCisgICAgICBhcmd1bWVudAorCisgICAgLSBBbHNvIGJ5IGRlZmF1bHQsIGlmIHRl
c3QgZmlsZXMgYnkgdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0IGluIHRoZSBkZXN0aW5hdGlv
biBkaXJlY3RvcnksCisgICAgICB0aGV5IGFyZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBpZGVhIHRo
YXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNoIGZpbGVzIHBlcmlvZGljYWxseS4K
KyAgICAgIFRoaXMgY2FuIGFsc28gYmUgb3ZlcnJpZGRlbiBieSBhIC1uIG9yIC0tbm8tb3Zlcndy
aXRlIGZsYWcKKworICAgIC0gQWxsIGZpbGVzIGFyZSBjb252ZXJ0ZWQgdG8gd29yayBpbiBXZWJL
aXQ6CisgICAgICAgICAxLiAueGh0IGV4dGVuc2lvbnMgYXJlIGNoYW5nZWQgdG8gLnhodG1sIHRv
IG1ha2UgbmV3LXJ1bi13ZWJraXQtdGVzdHMgaGFwcHkKKyAgICAgICAgIDIuIFBhdGhzIHRvIHRl
c3RoYXJuZXNzLmpzIGZpbGVzIGFyZSBtb2RpZmllZCBwb2ludCB0byBXZWJraXQncyBjb3B5IG9m
IHRoZW0gaW4KKyAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNv
cnJlY3QgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KKyAgICAgICAgIDMuIEFs
bCBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtdmVuZG9yIHByZWZpeCBhcmUg
cHJlZml4ZWQgLSB0aGlzIGN1cnJlbnQKKyAgICAgICAgICAgIGxpc3Qgb2Ygd2hhdCBuZWVkcyBw
cmVmaXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnRpZXMuaW4K
KyAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5IG9mIGl0cyByZWZlcmVu
Y2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucworICAgICAgICAgICAgbmV3
LXJ1bi13ZWJraXQtdGVzdHMgZXhwZWN0cworICAgICAgICAgNS4gSWYgYSBhIHJlZmVyZW5jZSBm
aWxlcyBsaXZlcyBvdXRzaWRlIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHRlc3QgdGhhdCB1c2VzIGl0
LCBpdCBpcyBjaGVja2VkCisgICAgICAgICAgICBmb3IgcGF0aHMgdG8gc3VwcG9ydCBmaWxlcyBh
cyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQgcmVsYXRpdmUgcG9zaXRpb24g
dG8gdGhlCisgICAgICAgICAgICB0ZXN0IGZpbGUgKGluIHRoZSBzYW1lIGRpcmVjdG9yeSkKKwor
ICAgICAtIFVwb24gY29tcGxldGlvbiwgc2NyaXB0IG91dHB1dHMgdGhlIHRvdGFsIG51bWJlciB0
ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVzdCB0eXBlCisKKyAgICAgLSBBbHNvIHVw
b24gY29tcGxldGlvbiwgZWFjaCBkaXJlY3Rvcnkgd2hlcmUgZmlsZXMgYXJlIGltcG9ydGVkIHdp
bGwgaGF2ZSB3M2MtaW1wb3J0LmxvZyB3cml0dGVuCisgICAgICAgd2l0aCBhIHRpbWVzdGFtcCwg
dGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0IGlmIGF2YWlsYWJsZSwgdGhlIGxpc3Qgb2YgQ1NT
IHByb3BlcnRpZXMgdXNlZCB0aGF0CisgICAgICAgcmVxdWlyZSBwcmVmaXhlcywgdGhlIGxpc3Qg
b2YgaW1wb3J0ZWQgZmlsZXMsIGFuZCBndWlkYW5jZSBmb3IgZnV0dXJlIHRlc3QgbW9kaWZpY2F0
aW9uIGFuZAorICAgICAgIG1haW50ZW5hbmNlLgorCisgICAgIC0gT24gc3Vic2VxdWVudCBpbXBv
cnRzLCB0aGlzIGZpbGUgaXMgcmVhZCB0byBkZXRlcm1pbmUgaWYgZmlsZXMgaGF2ZSBiZWVuIHJl
bW92ZWQgaW4gdGhlIG5ld2VyIGNoYW5nZXNldHMuCisgICAgICAgVGhlIHNjcmlwdCByZW1vdmVz
IHRoZXNlIGZpbGVzIGFjY29yZGluZ2x5LgorIiIiCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBt
aW1ldHlwZXMKK2Zyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgoraW1wb3J0IG9zCitp
bXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCitmcm9tIHdlYmtp
dHB5LnczYy50ZXN0X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNlcgorZnJvbSB3ZWJraXRweS53M2Mu
dGVzdF9jb252ZXJ0ZXIgaW1wb3J0IFRlc3RDb252ZXJ0ZXIKKworTEFZT1VUX1RFU1RTX0RJUkVD
VE9SWSA9ICdMYXlvdXRUZXN0cycKK0NTU1dHX0RJUkVDVE9SWSA9ICdjc3N3ZycKK1JFU09VUkNF
U19ESVJFQ1RPUlkgPSAncmVzb3VyY2VzJworQVBQUk9WRUQgPSAnYXBwcm92ZWQnCitTVUJNSVRU
RUQgPSAnc3VibWl0dGVkJworVU5LTk9XTiA9ICd1bmtub3duJworTk9UX0FWQUlMQUJMRSA9ICdO
b3QgQXZhaWxhYmxlJworCisKK2RlZiBtYWluKGFyZ3YsIF8sIHN0ZGVycik6CisKKyAgICBwYXJz
ZV9hcmdzKCkKKyAgICBpbXBvcnRfZGlyID0gdmFsaWRhdGVfaW1wb3J0X2RpcmVjdG9yeSgpCisg
ICAgdGVzdF9pbXBvcnRlciA9IFRlc3RJbXBvcnRlcihpbXBvcnRfZGlyLCBvcHRpb25zKQorICAg
IHRlc3RfaW1wb3J0ZXIuZG9faW1wb3J0KCkKKworCitkZWYgcGFyc2VfYXJncygpOgorCisgICAg
Z2xvYmFsIG9wdGlvbnMKKyAgICBnbG9iYWwgYXJncworCisgICAgcGFyc2VyID0gT3B0aW9uUGFy
c2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIHczY190ZXN0X2RpcmVjdG9yeScpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0tbm8tb3ZlcndyaXRlJywKKyAgICAgICAgICAg
ICAgICAgICAgICAjYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0ZsYWcgdG8gcHJldmVu
dCBkdXBsaWNhdGUgdGVzdCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIGV4aXN0aW5nIHRlc3RzLiBC
eSBkZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0ZW4nKQorICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctYScsICctLWFsbCcsCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90
cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J0ltcG9ydCBhbGwgdGVzdHMgaW5jbHVkaW5nIHJlZnRlc3RzLCBKUyB0
ZXN0cywgYW5kIG1hbnVhbC9waXhlbCB0ZXN0cy4gQnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0cyBh
bmQgSlMgdGVzdHMgYXJlIGltcG9ydGVkJykKKworICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNl
ci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGxlbihhcmdzKSAhPSAxOgorICAgICAgICBwYXJzZXIu
ZXJyb3IoJ0luY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzJykKKworCitkZWYgdmFsaWRhdGVf
aW1wb3J0X2RpcmVjdG9yeSgpOgorCisgICAgaW1wb3J0X2RpciA9IGFyZ3NbMF0KKworICAgICMg
TWFrZSBzdXJlIHRoZSB3M2MgdGVzdCBkaXJlY3RvcnkgZXhpc3RzCisgICAgaWYgbm90IG9zLnBh
dGguZXhpc3RzKGltcG9ydF9kaXIpOgorICAgICAgICBzeXMuZXhpdCgnU291cmNlIGRpcmVjdG9y
eSAlcyBub3QgZm91bmQhJyAlIGltcG9ydF9kaXIpCisKKyAgICAjIE1ha2Ugc3VyZSB0aGUgdGVz
dHMgYXJlIG9mZmljaWFsbHkgc3VibWl0dGVkIHRvIHRoZSBXM0MsIGVpdGhlciBhcHByb3ZlZCBv
cgorICAgICMgc3VibWl0dGVkIGZvbGxvd2luZyB0aGVpciBkaXJlY3RvcnkgbmFtaW5nIGNvbnZl
bnRpb25zCisgICAgaWYgaW1wb3J0X2Rpci5maW5kKEFQUFJPVkVEKSA9PSAtMSBhbmQgXAorICAg
ICAgIGltcG9ydF9kaXIuZmluZChTVUJNSVRURUQpID09IC0xOgorICAgICAgICAjIElmIG5vdCBw
b2ludGVkIGRpcmVjdGx5IHRvIHRoZSBhcHByb3ZlZCBkaXJlY3Rvcnkgb3IgdG8gYW55IHN1Ym1p
dHRlZAorICAgICAgICAjIGRpcmVjdG9yeSwgY2hlY2sgZm9yIGEgc3VibWl0dGVkIHN1YmRpcmVj
dG9yeSBhbmQgZ28gd2l0aCB0aGF0CisgICAgICAgIGltcG9ydF9kaXIgPSBvcy5wYXRoLmpvaW4o
aW1wb3J0X2RpciwgJ3N1Ym1pdHRlZCcpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhv
cy5wYXRoLmpvaW4oaW1wb3J0X2RpcikpOgorICAgICAgICAgICAgc3lzLmV4aXQoJ1VuYWJsZSB0
byBpbXBvcnQgdGVzdHMgdGhhdCBhcmVuXCd0IGFwcHJvdmVkIG9yIHN1Ym1pdHRlZCB0byB0aGUg
VzNDJykKKworICAgIHJldHVybiBpbXBvcnRfZGlyCisKKworY2xhc3MgVGVzdEltcG9ydGVyKG9i
amVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlX2RpcmVjdG9yeSwgb3B0aW9u
cyk6CisgICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKKworICAgICAgICBzZWxmLnNvdXJj
ZV9kaXJlY3RvcnkgPSBzb3VyY2VfZGlyZWN0b3J5CisgICAgICAgIHNlbGYud2Via2l0X3Jvb3Qg
PSBfX2ZpbGVfXy5zcGxpdChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisgICAgICAgIHNlbGYu
ZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBzZWxmLndl
YmtpdF9yb290LCBMQVlPVVRfVEVTVFNfRElSRUNUT1JZLCBDU1NXR19ESVJFQ1RPUlkpCisKKyAg
ICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBOT1RfQVZBSUxBQkxFCisgICAgICAgIHNlbGYudGVzdF9z
dGF0dXMgPSBVTktOT1dOCisKKyAgICAgICAgc2VsZi5pbXBvcnRfbGlzdCA9IFtdCisKKyAgICBk
ZWYgZG9faW1wb3J0KHNlbGYpOgorICAgICAgICBzZWxmLnNjYW5fc291cmNlX2RpcmVjdG9yeShz
ZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgIHNlbGYuZ2V0X2NoYW5nZXNldCgpCisgICAg
ICAgIHNlbGYuaW1wb3J0X3Rlc3RzKCkKKworICAgIGRlZiBnZXRfY2hhbmdlc2V0KHNlbGYpOgor
ICAgICAgICAiIiIgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBjdXJyZW50IGNoYW5nZXNldCBhbmQg
cGFyc2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZSBjaGFuZ2VzZXQuIElmIHRoYXQgZG9lc24ndCB3
b3Jrb3V0IGZvciBzb21lIHJlYXNvbiwgaXQganVzdCBiZWNvbWVzICdOb3QgQXZhaWxhYmxlJyAi
IiIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEFzc3VtaW5nIE1lcmN1cmlhbCBpcyBz
ZXQgdXAgb24gdGhlIHN5c3RlbSwgdHJ5IHRvIGdyYWIgdGhlIGNoYW5nZXNldCB3ZSdyZSBpbXBv
cnRpbmcKKyAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnaGcnLCAndGlwJ10s
IGVudj1vcy5lbnZpcm9uLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBjd2Q9c2VsZi5zb3VyY2Vf
ZGlyZWN0b3J5KQorICAgICAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBwcm9jLnN0ZG91dC5yZWFk
bGluZXMoKVswXQorICAgICAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBzZWxmLmNoYW5nZXNldC5z
cGxpdCgnY2hhbmdlc2V0OicpWzFdCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgT2gg
d2VsbCwgd2UgdHJpZWQKKyAgICAgICAgICAgIHNlbGYuY2hhbmdlc2V0ID0gJ05vdCBBdmFpbGFi
bGUnCisKKyAgICBkZWYgc2Nhbl9zb3VyY2VfZGlyZWN0b3J5KHNlbGYsIGRpcmVjdG9yeSk6Cisg
ICAgICAgICIiIiBXYWxrcyB0aGUgfGRpcmVjdG9yeXwgbG9va2luZyBmb3IgSFRNTCBmaWxlcyB0
aGF0IGFyZSBpbXBvcnRhYmxlIHRlc3RzLiAiIiIKKworICAgICAgICBmb3Igcm9vdCwgZGlycywg
ZmlsZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgorCisgICAgICAgICAgICBwcmludCAnU2Nhbm5p
bmcgJyArIHJvb3QgKyAnLi4uJworICAgICAgICAgICAgdG90YWxfdGVzdHMgPSAwCisgICAgICAg
ICAgICByZWZ0ZXN0cyA9IDAKKyAgICAgICAgICAgIGpzdGVzdHMgPSAwCisKKyAgICAgICAgICAg
ICMgSWdub3JlIGFueSByZXBvIHN0dWZmCisgICAgICAgICAgICBpZiAnLmdpdCcgaW4gZGlyczoK
KyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmdpdCcpCisgICAgICAgICAgICBpZiAnLmhn
JyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuaGcnKQorICAgICAgICAg
ICAgIyBhcmNoaXZlIGFuZCBkYXRhIGRpcnMgYXJlIGludGVybmFsIGNzc3dnIHRoaW5ncyB0aGF0
IGxpdmUgaW4gZXZlcnkgYXBwcm92ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICBpZiAnZGF0YScg
aW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnZGF0YScpCisgICAgICAgICAg
ICBpZiAnYXJjaGl2ZScgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnYXJj
aGl2ZScpCisKKyAgICAgICAgICAgIGNvcHlfbGlzdCA9IFtdCisKKyAgICAgICAgICAgIGZvciBm
aWxlbmFtZSBpbiBmaWxlczoKKworICAgICAgICAgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5q
b2luKHJvb3QsIGZpbGVuYW1lKQorCisgICAgICAgICAgICAgICAgIyBPbmx5IGh0bWwgb3IgeG1s
IGFyZSBjb25zaWRlcmVkIHRlc3RzCisgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlw
ZXMuZ3Vlc3NfdHlwZShmdWxscGF0aCkKKyAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3Ry
KG1pbWV0eXBlWzBdKSBvciAneG1sJyBpbiBzdHIobWltZXR5cGVbMF0pOgorCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RfcGFyc2VyID0gVGVzdFBhcnNlcih2YXJzKG9wdGlvbnMpLCBmaWxlbmFt
ZT1mdWxscGF0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvID0gdGVzdF9wYXJzZXIu
YW5hbHl6ZV90ZXN0KCkKKworICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0X2luZm8gaXMgTm9u
ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKToKKworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVmdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVz
dHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IG9zLnBhdGgu
YmFzZW5hbWUodGVzdF9pbmZvWyd0ZXN0J10pCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMg
QWRkIHRoZSByZWYgZmlsZSwgcmVuYW1pbmcgaXQgdG8gV2Via2l0J3Mgd2F5CisgICAgICAgICAg
ICAgICAgICAgICAgICAjIE5vdGU6IFRoZSBwcmVmZXJhYmxlIHdheSB0byBoYW5kbGUgdGhpcyB3
b3VsZCBiZSB0byBqdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIGFkZCBzdXBw
b3J0IGluIFdlYmtpdCdzIGhhcm5lc3MgdG8gcmVhZCBtZXRhZGF0YQorICAgICAgICAgICAgICAg
ICAgICAgICAgIyAgICAgICByYXRoZXIgdGhhbiByZWx5IG9uIGEgZmlsZSBuYW1pbmcgY29udmVu
dGlvbi4gU2luY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgdGhlIENTU1dHIHRl
c3RzIHN1cHBvcnQgbWFueTpvbmUgdGVzdHM6cmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIyAgICAgICBlbmFibGluZyBtZXRhZGF0YSBwYXJzaW5nIGluIG91ciBoYXJuZXNzIHdv
dWxkIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgcmVkdWNlIHRoZSBudW1i
ZXIgb2YgZmlsZXMgY29waWVkIGluLiBBcyB0aGlzIGlzCisgICAgICAgICAgICAgICAgICAgICAg
ICAjICAgICAgIGltcGxlbWVudGVkIGhlcmUsIHdlIGFyZSBrbm93aW5nbHkgaW1wb3J0aW5nIG11
bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIGNvcGllcyBvZiB0aGUgc2Ft
ZSByZWYgZmlsZXMgdG8gYWRoZXJlIHRvIFdlYmtpdCdzIHdheQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVmX2ZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5hbWUpWzBdICsgJy1l
eHBlY3RlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlICs9IG9zLnBhdGguc3Bs
aXRleHQodGVzdF9iYXNlbmFtZSlbMV0KKworICAgICAgICAgICAgICAgICAgICAgICAgY29weV9s
aXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmX2Zp
bGV9KQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRl
c3RfaW5mb1sndGVzdCddLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAgICAgICAgICAg
ICAgICAgIyBJZiB0aGVyZSBhcmUgcmVmIHN1cHBvcnQgZmlsZXMsIHRoZSBkZXN0aW5hdGlvbiBp
cyBzaG91bGQgbm93IGJlIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAg
IyB0ZXN0IGZpbGUgYW5kIG5ldyBsb2NhdGlvbiBvZiB0aGUgcmVmIGZpbGUKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciBzdXBwb3J0X2ZpbGUgaW4gdGVzdF9pbmZvWydyZWZz
dXBwb3J0J106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQnVpbGQgdGhlIGNv
cnJlY3Qgc291cmNlIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
X2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHRlc3RfaW5mb1sncmVmZXJlbmNl
J10pLCBzdXBwb3J0X2ZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJj
ZV9maWxlID0gb3MucGF0aC5ub3JtcGF0aChzb3VyY2VfZmlsZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBkZXN0IGFzIGl0IHdhcworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b19jb3B5ID0geydzcmMnOiBzb3VyY2VfZmlsZSwgJ2Rlc3QnOiBz
dXBwb3J0X2ZpbGV9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT25seSBhZGQg
aXQgb25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QodG9fY29weSBp
biBjb3B5X2xpc3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weV9s
aXN0LmFwcGVuZCh0b19jb3B5KQorCisgICAgICAgICAgICAgICAgICAgIGVsaWYgJ2pzdGVzdCcg
aW4gdGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGpzdGVzdHMgKz0g
MQorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZp
bGVuYW1lfSkKKworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0
LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAg
ICAgICAgICMgSWdub3JlIGRvdGZpbGVzIGFuZCByYW5kb20gcGVybCBzY3JpcHRzIHRoYXQgYXJl
IGluIHNvbWUgZGlycworICAgICAgICAgICAgICAgIGVsaWYgbm90KGZpbGVuYW1lLnN0YXJ0c3dp
dGgoJy4nKSkgYW5kIG5vdChmaWxlbmFtZS5lbmRzd2l0aCgnLnBsJykpOgorICAgICAgICAgICAg
ICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogZnVsbHBhdGgsICdkZXN0JzogZmlsZW5h
bWV9KQorCisgICAgICAgICAgICBpZiB0b3RhbF90ZXN0cyA9PSAwOgorICAgICAgICAgICAgICAg
ICMgSWYgdGhlcmUgYXJlIG5vIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5LCBza2lwIHRoZSBzdXBw
b3J0IGRpciB0aGF0IGxpdmVzIGluIGFsbAorICAgICAgICAgICAgICAgICMgb2YgdGhlICdhcHBy
b3ZlZCcgZm9sZGVycyBhcyBwYXJ0IG9mIHRoZSBhdXRvbWF0ZWQgYnVpbGQgc3lzdGVtCisgICAg
ICAgICAgICAgICAgaWYgJ3N1cHBvcnQnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgICAgIGRp
cnMucmVtb3ZlKCdzdXBwb3J0JykKKworICAgICAgICAgICAgICAgIGlmIGxlbihjb3B5X2xpc3Qp
ID4gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGFkZCB0aGlzIGRpcmVjdG9yeSB0byB0
aGUgbGlzdCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5pbXBvcnRfbGlzdC5hcHBlbmQoeydkaXJuYW1lJzogcm9vdCwgJ2NvcHlfbGlzdCc6
IGNvcHlfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3JlZnRlc3RzJzogcmVmdGVzdHMsICdqc3Rlc3RzJzoganN0ZXN0cywgJ3RvdGFsX3Rlc3RzJzog
dG90YWxfdGVzdHN9KQorCisgICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToKKyAgICAgICAgIiIi
IENvcGllcyBhbmQgY29udmVydHMgdGhlIGZ1bGwgbGlzdCBvZiBpbXBvcnRhYmxlIHRlc3RzIGlu
dG8gV2Via2l0IGFuZCBsb2dzIHdoYXQgd2FzIGltcG9ydGVkIGluIGVhY2ggZGlyZWN0b3J5ICIi
IgorCisgICAgICAgICMgT25seSBzZXQgdXAgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBpZiB0
aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgaWYgbGVuKHNlbGYuaW1wb3J0X2xp
c3QpID4gMDoKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfZGVzdGluYXRpb25fZGlyZWN0b3J5KCkK
KworICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgdG90YWxfaW1w
b3J0ZWRfdGVzdHMgPSAwCisgICAgICAgIHRvdGFsX2ltcG9ydGVkX3JlZnRlc3RzID0gMAorICAg
ICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzID0gMAorCisgICAgICAgIGZvciBkaXJfdG9fY29w
eSBpbiBzZWxmLmltcG9ydF9saXN0OgorCisgICAgICAgICAgICB0b3RhbF9pbXBvcnRlZF90ZXN0
cyArPSBkaXJfdG9fY29weVsndG90YWxfdGVzdHMnXQorICAgICAgICAgICAgdG90YWxfaW1wb3J0
ZWRfcmVmdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3JlZnRlc3RzJ10KKyAgICAgICAgICAgIHRvdGFs
X2ltcG9ydGVkX2pzdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ2pzdGVzdHMnXQorCisgICAgICAgICAg
ICBwcmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KKworICAgICAgICAgICAgaWYgbGVuKGRpcl90b19j
b3B5Wydjb3B5X2xpc3QnXSkgPiAwOgorCisgICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUgc3Vi
cGF0aCBzdGFydGluZyB3aXRoIHRoZSBhcHByb3ZlZC9zdWJtaXR0ZWQgZGlyZWN0b3J5CisgICAg
ICAgICAgICAgICAgb3JpZ19wYXRoID0gZGlyX3RvX2NvcHlbJ2Rpcm5hbWUnXQorICAgICAgICAg
ICAgICAgIHN0YXJ0ID0gb3JpZ19wYXRoLmZpbmQoc2VsZi50ZXN0X3N0YXR1cykKKyAgICAgICAg
ICAgICAgICBuZXdfc3VicGF0aCA9IG9yaWdfcGF0aFtzdGFydDpsZW4ob3JpZ19wYXRoKV0KKwor
ICAgICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBuZXcgc3VicGF0aCB0byB0aGUgZGVzdGluYXRp
b25fZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgbmV3X3BhdGggPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQorCisgICAgICAgICAgICAgICAg
IyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9yaWVzIGlmIG5vdCB0aGVyZQorICAg
ICAgICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhuZXdfcGF0aCkpOgorICAgICAgICAg
ICAgICAgICAgICBvcy5tYWtlZGlycyhuZXdfcGF0aCkKKworICAgICAgICAgICAgICAgIGNvcGll
ZF9maWxlcyA9IFtdCisKKyAgICAgICAgICAgICAgICBmb3IgZmlsZV90b19jb3B5IGluIGRpcl90
b19jb3B5Wydjb3B5X2xpc3QnXToKKworICAgICAgICAgICAgICAgICAgICBvcmlnX2ZpbGVwYXRo
ID0gb3MucGF0aC5ub3JtcGF0aChmaWxlX3RvX2NvcHlbJ3NyYyddKQorCisgICAgICAgICAgICAg
ICAgICAgICMgU2hvdWxkbid0IGJlIGFueSBkaXJlY3RvcmllcyBvbiB0aGUgbGlzdCwgYnV0IGNo
ZWNrIHRvIGJlIHNhZmUKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcmln
X2ZpbGVwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgICAgICAgICAgIyBEb24ndCBjaG9rZSBpZiB0aGUgZmlsZSBjYW4ndCBiZSBmb3VuZAorICAg
ICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3JpZ19maWxlcGF0aCkpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6ICcgKyBvcmlnX2ZpbGVwYXRo
ICsgJyBub3QgZm91bmQuIFBvc3NpYmxlIGVycm9yIGluIHRoZSB0ZXN0LicKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBBcHBlbmQgdGhl
IGNvcnJlY3QgZGVzdGluYXRpb24gZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgbmV3X2Zp
bGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkKKwor
ICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBleHRlbnNpb24gdG8gd29yayBpbiB0aGUgV2Vi
S2l0IGhhcm5lc3MKKyAgICAgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gbmV3X2ZpbGVw
YXRoLnJlcGxhY2UoJy54aHQnLCAnLnhodG1sJykKKworICAgICAgICAgICAgICAgICAgICAjIE1h
a2UgdGhlIGRpcmVjdG9yaWVzIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qob3Mu
cGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxlcGF0aCkpKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShuZXdfZmlsZXBhdGgpKQor
CisgICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIHRlc3RzIGlm
IHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb25zLm5vX292ZXJ3cml0ZSBp
cyBUcnVlIGFuZCBvcy5wYXRoLmV4aXN0cyhuZXdfZmlsZXBhdGgpOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBleGlzdGluZyBmaWxlICcgKyBuZXdf
ZmlsZXBhdGgKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
ICAgICMgVE9ETzogTWF5YmUgZG9pbmcgYSBmaWxlIGRpZmYgaXMgaW4gb3JkZXIgaGVyZSBmb3Ig
ZXhpc3RpbmcgZmlsZXM/CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIEluIG90aGVy
IHdvcmRzLCB0aGVyZSdzIG5vIHNlbnNlIGluIG92ZXJ3cml0aW5nIGlkZW50aWNhbCBmaWxlcywg
YnV0CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZXJlJ3Mgbm8gaGFybSBpbiBj
b3B5aW5nIHRoZSBpZGVudGljYWwgdGhpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBwcmlu
dCAnSW1wb3J0aW5nOiAnICsgb3JpZ19maWxlcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnQgJyAgICAgICBBczogJyArIG5ld19maWxlcGF0aAorCisgICAgICAgICAgICAgICAgICAg
ICMgT25seSBodG1sLCB4bWwsIG9yIGNzcyBzaG91bGQgYmUgY29udmVydGVkCisgICAgICAgICAg
ICAgICAgICAgICMgVE9ETzogRXZlbnR1YWxseSwgc28gc2hvdWxkIGpzIHdoZW4gc3VwcG9ydCBp
cyBhZGRlZCBmb3IgdGhpcyB0eXBlIG9mIGNvbnZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAg
bWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmlnX2ZpbGVwYXRoKQorICAgICAgICAg
ICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciBcCisgICAgICAgICAg
ICAgICAgICAgICAgICd4bWwnIGluIHN0cihtaW1ldHlwZVswXSkgIG9yIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToKKworICAgICAgICAgICAgICAg
ICAgICAgICAgIyBDb252ZXJ0IGZvciBXZWJLaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnZlcnRlZF9maWxlID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmls
ZW5hbWU9b3JpZ19maWxlcGF0aCkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29udmVy
dGVkX2ZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFN0cmFpZ2h0
IGNvcHkgaWYgbm90aGluZydzIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdyaXRlIG91
dCB0aGUgY29udmVydGVkIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhl
ZF9wcm9wZXJ0aWVzLmV4dGVuZChzZXQoY29udmVydGVkX2ZpbGVbMF0pIC0gc2V0KHByZWZpeGVk
X3Byb3BlcnRpZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUgPSBvcGVu
KG5ld19maWxlcGF0aCwgJ3cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUu
d3JpdGUoY29udmVydGVkX2ZpbGVbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0
ZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorCisg
ICAgICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcy5hcHBlbmQobmV3X2ZpbGVwYXRoLnJlcGxh
Y2Uoc2VsZi53ZWJraXRfcm9vdCwgJycpKQorCisgICAgICAgICAgICAgICAgIyBUYWtlIGNhcmUg
b2YgYW55dGhpbmcgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgaW1w
b3J0CisgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfZGVsZXRlZF9maWxlcyhuZXdfcGF0aCwg
Y29waWVkX2ZpbGVzKQorCisgICAgICAgICAgICAgICAgIyBEcm9wIHNvbWUgaW5mbyBhYm91dCB3
aGF0IGp1c3QgaGFwcGVuZWQgaGVyZQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfaW1wb3J0
X2xvZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhlZF9wcm9wZXJ0aWVzKQorCisgICAg
ICAgIHByaW50ICdJbXBvcnQgY29tcGxldGUnCisKKyAgICAgICAgcHJpbnQgJ0lNUE9SVEVEICcg
KyBzdHIodG90YWxfaW1wb3J0ZWRfdGVzdHMpICsgJyBUT1RBTCBURVNUUycKKyAgICAgICAgcHJp
bnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMpICsgJyByZWZ0ZXN0
cycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfanN0ZXN0
cykgKyAnIEpTIHRlc3RzJworICAgICAgICBwcmludCAnSW1wb3J0ZWQgJyArIHN0cih0b3RhbF9p
bXBvcnRlZF90ZXN0cyAtIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgLSB0b3RhbF9pbXBvcnRlZF9y
ZWZ0ZXN0cykgKyAnIHBpeGVsL21hbnVhbCB0ZXN0cycKKworICAgIGRlZiBzZXR1cF9kZXN0aW5h
dGlvbl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIiBDcmVhdGVzIGEgZGVzdGluYXRpb24g
ZGlyZWN0b3J5IHRoYXQgbWlycm9ycyB0aGF0IG9mIHRoZSBzb3VyY2UgYXBwcm92ZWQgb3Igc3Vi
bWl0dGVkIGRpcmVjdG9yeSAiIiIKKworICAgICAgICAjIFRoZSB0ZXN0IHN0YXR1cyBpcyBpbiB0
aGUgcGF0aCwgc28gZ3JhYiBpdAorICAgICAgICBzZWxmLmdldF90ZXN0X3N0YXR1cygpCisKKyAg
ICAgICAgIyBNaXJyb3IgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhlIGNzc3dnIHJlcG8g
dW5kZXIgYXBwcm92ZWQvIG9yIHN1Ym1pdHRlZC8KKyAgICAgICAgc3RhcnQgPSBzZWxmLnNvdXJj
ZV9kaXJlY3RvcnkuZmluZChzZWxmLnRlc3Rfc3RhdHVzKQorICAgICAgICBuZXdfc3VicGF0aCA9
IHNlbGYuc291cmNlX2RpcmVjdG9yeVtzdGFydDpsZW4oc2VsZi5zb3VyY2VfZGlyZWN0b3J5KV0K
KworICAgICAgICBkZXN0aW5hdGlvbl9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0
aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRo
LmV4aXN0cyhkZXN0aW5hdGlvbl9kaXJlY3RvcnkpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMo
ZGVzdGluYXRpb25fZGlyZWN0b3J5KQorCisgICAgICAgIHByaW50ICdUZXN0cyB3aWxsIGJlIGlt
cG9ydGVkIGludG86ICcgKyBkZXN0aW5hdGlvbl9kaXJlY3RvcnkKKworICAgIGRlZiBnZXRfdGVz
dF9zdGF0dXMoc2VsZik6CisgICAgICAgICIiIiBTZXRzIHRoZSB0ZXN0IHN0YXR1cyB0byBlaXRo
ZXIgJ2FwcHJvdmVkJyBvciAnc3VibWl0dGVkJyAiIiIKKworICAgICAgICBzdGF0dXMgPSBVTktO
T1dOCisKKyAgICAgICAgaWYgc2VsZi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQoQVBQUk9WRUQpICE9
IC0xOgorICAgICAgICAgICAgc3RhdHVzID0gQVBQUk9WRUQKKyAgICAgICAgZWxpZiBzZWxmLnNv
dXJjZV9kaXJlY3RvcnkuZmluZChTVUJNSVRURUQpICE9IC0xOgorICAgICAgICAgICAgc3RhdHVz
ID0gU1VCTUlUVEVECisKKyAgICAgICAgc2VsZi50ZXN0X3N0YXR1cyA9IHN0YXR1cworCisgICAg
ZGVmIHJlbW92ZV9kZWxldGVkX2ZpbGVzKHNlbGYsIGltcG9ydF9kaXJlY3RvcnksIG5ld19maWxl
X2xpc3QpOgorICAgICAgICAiIiIgUmVhZHMgYW4gaW1wb3J0IGxvZyBpbiB8aW1wb3J0X2RpcmVj
dG9yeXwgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSB8bmV3X2ZpbGVfbGlzdHwgYW5kIHJlbW92ZXMg
ZmlsZXMgdGhhdCBhcmUgbm90IGluIHRoZSBuZXcgbGlzdCAiIiIKKworICAgICAgICBwcmV2aW91
c19maWxlX2xpc3QgPSBbXQorCisgICAgICAgICMgRmlyc3QgY2hlY2sgaWYgdGhlcmUgd2FzIGEg
cHJldmlvdXMgaW1wb3J0IGhlcmUgLSB0aGVyZSBzaG91bGQgYmUgYSBsb2cKKyAgICAgICAgaW1w
b3J0X2xvZ19maWxlID0gb3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1wb3J0
LmxvZycpCisgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhpbXBvcnRfbG9nX2ZpbGUpKToK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKGltcG9ydF9s
b2dfZmlsZSwgJ3InKQorICAgICAgICBjb250ZW50cyA9IGltcG9ydF9sb2cucmVhZGxpbmVzKCkK
KworICAgICAgICAjIFB1bGwgbG9nIHRoZSBsaXN0IG9mIGZpbGVzIGZyb20gdGhlIHByZXZpb3Vz
IGltcG9ydAorICAgICAgICBpZiAnTGlzdCBvZiBmaWxlc1xuJyBpbiBjb250ZW50czoKKyAgICAg
ICAgICAgIGxpc3RfaWR4ID0gY29udGVudHMuaW5kZXgoJ0xpc3Qgb2YgZmlsZXM6XG4nKSArIDEK
KyAgICAgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IGNvbnRlbnRzW2xpc3RfaWR4Ol0KKyAg
ICAgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IG1hcChsYW1iZGEgczogcy5zdHJpcCgpLCBw
cmV2aW91c19maWxlX2xpc3QpCisKKyAgICAgICAgZGVsZXRlZF9maWxlcyA9IHNldChwcmV2aW91
c19maWxlX2xpc3QpIC0gc2V0KG5ld19maWxlX2xpc3QpCisKKyAgICAgICAgIyBMb29wIHRocm91
Z2ggYW5kIHJlbW92ZSB0aGVtIGFsbAorICAgICAgICBmb3IgZGVsZXRlZF9maWxlIGluIGRlbGV0
ZWRfZmlsZXM6CisgICAgICAgICAgICBwcmludCAnRGVsZXRpbmcgZmlsZSByZW1vdmVkIGZyb20g
dGhlIFczQyByZXBvOicgKyBkZWxldGVkX2ZpbGUKKyAgICAgICAgICAgIGRlbGV0ZWRfZmlsZSA9
IG9zLnBhdGguam9pbihzZWxmLndlYmtpdF9yb290LCBkZWxldGVkX2ZpbGUpCisgICAgICAgICAg
ICBvcy5yZW1vdmUoZGVsZXRlZF9maWxlKQorCisgICAgICAgIGltcG9ydF9sb2cuY2xvc2UoKQor
CisgICAgZGVmIHdyaXRlX2ltcG9ydF9sb2coc2VsZiwgaW1wb3J0X2RpcmVjdG9yeSwgZmlsZV9s
aXN0LCBwcm9wX2xpc3QpOgorICAgICAgICAiIiIgV3JpdGVzIGEgdzNjLWltcG9ydC5sb2cgZmls
ZSBpbiBlYWNoIGRpcmVjdG9yeSB3aXRoIGltcG9ydGVkIGZpbGVzLiAiIiIKKworICAgICAgICBu
b3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorCisgICAgICAgICMgQ3JlYXRlIGEgbG9nIG9m
IHRoaXMgaW1wb3J0IHdpdGggYWxsIHNvcnRzIG9mIGdvb2QgaW5mb3JtYXRpb24KKyAgICAgICAg
aW1wb3J0X2xvZyA9IG9wZW4ob3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1w
b3J0LmxvZycpLCAndycpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1RoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LlxuJykK
KyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJraXQuIEluc3RlYWQsIHB1c2ggY2hhbmdlcyB0byB0aGUgVzNDIENTUyByZXBv
OlxuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdodHRwOi8vaGcuY3Nzd2cub3JnL3Rl
c3RcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJraXQgdG8gcmVpbXBvcnRcblxuJykKKyAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlXG5c
bicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZSgnTGFzdCBJbXBvcnQ6ICcgKyBub3cuc3RyZnRpbWUoJyVZLSVt
LSVkICVIOiVNJykgKyAnXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdXM0MgTWVyY3Vy
aWFsIGNoYW5nZXNldDogJyArIHNlbGYuY2hhbmdlc2V0ICsgJ1xuJykKKyAgICAgICAgaW1wb3J0
X2xvZy53cml0ZSgnVGVzdCBzdGF0dXMgYXQgdGltZSBvZiBpbXBvcnQ6ICcgKyBzZWxmLnRlc3Rf
c3RhdHVzICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
XG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6XG4nKQorICAgICAgICBpZiBsZW4ocHJvcF9saXN0KSA9PSAwOgorICAgICAg
ICAgICAgaW1wb3J0X2xvZy53cml0ZSgnTm9uZVxuJykKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGZvciBwcm9wIGluIHByb3BfbGlzdDoKKyAgICAgICAgICAgICAgICBpbXBvcnRfbG9nLndy
aXRlKHByb3AgKyAnXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCctLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS1cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xpc3Qgb2YgZmlsZXM6XG4nKQorICAg
ICAgICBmb3IgaXRlbSBpbiBmaWxlX2xpc3Q6CisgICAgICAgICAgICBpbXBvcnRfbG9nLndyaXRl
KGl0ZW0gKyAnXG4nKQorCisgICAgICAgIGltcG9ydF9sb2cuY2xvc2UoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4MDllZAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKQEAg
LTAsMCArMSw1MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAy
MDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVz
dDIgYXMgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS53M2MgaW1wb3J0IHRlc3RfY29udmVydGVy
Citmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2ltcG9ydGVyIGltcG9ydCBUZXN0SW1wb3J0ZXIKKwor
V0VCS0lUX1JPT1QgPSBfX2ZpbGVfXy5zcGxpdChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisK
KworY2xhc3MgVGVzdEltcG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYg
dGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGRvX2lt
cG9ydCgpIHdpdGggYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBubyB0ZXN0cyAiIiIKKyAgICAg
ICAgZGlyX3dpdGhfbm9fdGVzdHMgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29u
dmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuU09VUkNFX1NVQkRJUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVy
dGVyLldFQkNPUkVfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUikKKworICAgICAgICBp
bXBvcnRlciA9IFRlc3RJbXBvcnRlcihkaXJfd2l0aF9ub190ZXN0cywgTm9uZSkKKyAgICAgICAg
aW1wb3J0ZXIuZG9faW1wb3J0KCkKKworCisgICAgIyBUT0RPOiBOZWVkIG1vcmUgdGVzdHMsIGJ1
dCB3aGF0IHRvIHVzZSBmb3IgdmFsaWQgc291cmNlIGRpcmVjdG9yeT8gTWFrZSBpdCBvbiB0aGUg
Zmx5CisgICAgIyAgICAgICBhbmQgY2xlYW4gaXQgdXAgYWZ0ZXJ3YXJkPwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42ZTMyNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9wYXJzZXIucHkKQEAgLTAsMCArMSwxNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisj
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgor
aW1wb3J0IG9zCitpbXBvcnQgcmUKKworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1
bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAgYXMgUGFyc2VyCisKKworY2xhc3MgVGVzdFBhcnNl
cihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIGZpbGVuYW1lKToK
KyAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLmZpbGVuYW1lID0g
ZmlsZW5hbWUKKyAgICAgICAgc2VsZi50ZXN0X2RvYyA9IHNlbGYubG9hZF9maWxlKGZpbGVuYW1l
KQorICAgICAgICBzZWxmLnJlZl9kb2MgPSBOb25lCisKKyAgICBkZWYgbG9hZF9maWxlKHNlbGYs
IGZpbGVfdG9fcGFyc2UpOgorICAgICAgICAiIiIgT3BlbnMgYW5kIHJlYWQgdGhlIHxmaWxlX3Rv
X3BhcnNlfCAiIiIKKyAgICAgICAgZG9jID0gTm9uZQorCisgICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKGZpbGVfdG9fcGFyc2UpOgorICAgICAgICAgICAgZiA9IG9wZW4oZmlsZV90b19wYXJzZSkK
KyAgICAgICAgICAgIGh0bWwgPSBmLnJlYWQoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAg
ICAgICAgICAgIGRvYyA9IFBhcnNlcihodG1sKQorCisgICAgICAgIHJldHVybiBkb2MKKworICAg
IGRlZiBhbmFseXplX3Rlc3Qoc2VsZiwgdGVzdF9jb250ZW50cz1Ob25lLCByZWZfY29udGVudHM9
Tm9uZSk6CisgICAgICAgICIiIiBBbmFseXplcyBhIGZpbGUgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mg
YSB0ZXN0LCB3aGF0IHR5cGUgb2YgdGVzdCwgYW5kIHdoYXQgcmVmZXJlbmNlIG9yIHN1cHBvcnQg
ZmlsZXMgaXQgcmVxdWlyZXMuIFJldHVybnMgYWxsIG9mIHRoZSB0ZXN0IGluZm8gIiIiCisKKyAg
ICAgICAgdGVzdF9pbmZvID0gTm9uZQorCisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgTm9u
ZSBhbmQgc2VsZi50ZXN0X2RvYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHRlc3RfaW5m
bworCisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBz
ZWxmLnRlc3RfZG9jID0gUGFyc2VyKHRlc3RfY29udGVudHMpCisKKyAgICAgICAgaWYgcmVmX2Nv
bnRlbnRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5yZWZfZG9jID0gUGFyc2VyKHJl
Zl9jb250ZW50cykKKworICAgICAgICAjIEZpcnN0IGNoZWNrIGlmIGl0J3MgYSByZWZ0ZXN0Cisg
ICAgICAgIG1hdGNoZXMgPSBzZWxmLmdldF9yZWZ0ZXN0cyhUcnVlKQorICAgICAgICBpZiBsZW4o
bWF0Y2hlcykgIT0gMDoKKworICAgICAgICAgICAgaWYgbGVuKG1hdGNoZXMpID4gMToKKyAgICAg
ICAgICAgICAgICBwcmludCAnV2FybmluZzogV2Via2l0IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlw
bGUgcmVmZXJlbmNlcy4gSW1wb3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5lZCBpbiAnICsgb3Mu
cGF0aC5iYXNlbmFtZShzZWxmLmZpbGVuYW1lKQorCisgICAgICAgICAgICByZWZfZmlsZSA9IG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5maWxlbmFtZSksIG1hdGNoZXNbMF1bJ2hy
ZWYnXSkKKyAgICAgICAgICAgIGlmIHNlbGYucmVmX2RvYyBpcyBOb25lOgorICAgICAgICAgICAg
ICAgIHNlbGYucmVmX2RvYyA9IHNlbGYubG9hZF9maWxlKHJlZl9maWxlKQorCisgICAgICAgICAg
ICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAncmVmZXJlbmNlJzogcmVmX2Zp
bGV9CisKKyAgICAgICAgICAgICMgSWYgdGhlIHJlZiBmaWxlIHBhdGggaXMgcmVsYXRpdmUsIHdl
IG5lZWQgdG8gY2hlY2sgaXQgZm9yIHJlbGF0aXZlIHBhdGhzCisgICAgICAgICAgICAjIGJlY2F1
c2Ugd2hlbiBpdCBsYW5kcyBpbiBXZWJraXQsIGl0IHdpbGwgYmUgbW92ZWQgZG93biBpbnRvIHRo
ZSB0ZXN0IGRpcgorICAgICAgICAgICAgIyBOb3RlOiBUaGUgdGVzdCBmaWxlcyB0aGVtc2VsdmVz
IGFyZSBub3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxlcworICAgICAgICAgICAgIyB0aGF0IGxp
dmUgb3V0c2lkZSB0aGVpciBkaXJlY3RvcmllcyBhcyBpdCdzIHRoZSBjb252ZW50aW9uIGluIHRo
ZSBDU1NXRworICAgICAgICAgICAgIyB0byBwdXQgYWxsIHN1cHBvcnQgZmlsZXMgaW4gdGhlIHNh
bWUgZGlyIG9yIHN1YmRpciBhcyB0aGUgdGVzdC4gQWxsIG5vbi10ZXN0CisgICAgICAgICAgICAj
IGZpbGVzIGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5IHRyZWUgYXJlIGF1dG9tYXRpY2FsbHkgY29w
aWVkIGFzIHBhcnQgb2YgdGhlIGltcG9ydCBhcworICAgICAgICAgICAgIyB0aGV5IGFyZSBhc3N1
bWVkIHRvIGJlIHJlcXVpcmVkIHN1cHBvcnQgZmlsZXMgVGhlcmUgaXMgZXhhY3RseSBvbmUgY2Fz
ZSBpbiB0aGUgZW50aXJlCisgICAgICAgICAgICAjIGNzczIuMSBzdWl0ZSB3aGVyZSBhdCB0ZXN0
IGRlcGVuZHMgb24gYSBmaWxlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LCB3
aGljaAorICAgICAgICAgICAgIyBkZXBlbmRzIG9uIGFub3RoZXIgZmlsZSB0aGF0IGxpdmVzIG91
dHNpZGUgb2YgaXRzIGRpcmVjdG9yeS4gVGhpcyBjb2RlIGNvdmVycyB0aGF0IGNhc2UgOikKKyAg
ICAgICAgICAgIGlmIG1hdGNoZXNbMF1bJ2hyZWYnXS5zdGFydHN3aXRoKCcuLicpOgorICAgICAg
ICAgICAgICAgIHN1cHBvcnRGaWxlcyA9IHNlbGYuZ2V0X3N1cHBvcnRfZmlsZXMoc2VsZi5yZWZf
ZG9jKQorICAgICAgICAgICAgICAgIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddID0gc3VwcG9ydEZp
bGVzCisKKyAgICAgICAgIyBOZXh0LCBpZiBpdCdzIGEgSlMgdGVzdAorICAgICAgICBlbGlmIHNl
bGYuaXNfanN0ZXN0KCk6CisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZp
bGVuYW1lLCAnanN0ZXN0JzogVHJ1ZX0KKworICAgICAgICAjIE9yIGlmIHdlIGV4cGxpY2l0bHkg
d2FudCBldmVyeXRoaW5nCisgICAgICAgIGVsaWYgc2VsZi5vcHRpb25zWydhbGwnXSBpcyBUcnVl
IGFuZCBcCisgICAgICAgICAgICAgbm90KCctcmVmJyBpbiBzZWxmLmZpbGVuYW1lKSBhbmQgXAor
ICAgICAgICAgICAgIG5vdCgncmVmZXJlbmNlJyBpbiBzZWxmLmZpbGVuYW1lKToKKyAgICAgICAg
ICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWV9CisKKyAgICAgICAgIyBDb3Vy
dGVzeSBjaGVjayBhbmQgd2FybmluZyBpZiB0aGVyZSBhcmUgYW55IG1pc21hdGNoZXMKKyAgICAg
ICAgbWlzbWF0Y2hlcyA9IHNlbGYuZ2V0X3JlZnRlc3RzKEZhbHNlKQorICAgICAgICBpZiBsZW4o
bWlzbWF0Y2hlcykgIT0gMDoKKyAgICAgICAgICAgIHByaW50ICJXYXJuaW5nOiBXZWJraXQgZG9l
cyBub3Qgc3VwcG9ydCBtaXNtYXRjaCByZWZlcmVuY2VzLiBJZ25vcmluZyBtaXNtYXRjaCBkZWZp
bmVkIGluICIgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZmlsZW5hbWUpCisKKyAgICAgICAgcmV0
dXJuIHRlc3RfaW5mbworCisgICAgZGVmIGdldF9yZWZ0ZXN0cyhzZWxmLCBmaW5kX21hdGNoKToK
KyAgICAgICAgIiIiIFNlYXJjaGVzIGZvciBhbGwgcmVmZXJlbmNlIGxpbmtzIGluIHRoZSBmaWxl
LiBJZiB8ZmluZF9tYXRjaHwgaXMgc2VhcmNoZXMgZm9yIG1hdGNoZXMsIG90aGVyd2lzZSBmb3Ig
bWlzbWF0Y2hlcyAiIiIKKworICAgICAgICBpZiBmaW5kX21hdGNoOgorICAgICAgICAgICAgcmV0
dXJuIHNlbGYudGVzdF9kb2MuZmluZEFsbChyZWw9J21hdGNoJykKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLnRlc3RfZG9jLmZpbmRBbGwocmVsPSdtaXNtYXRjaCcpCisK
KyAgICBkZWYgaXNfanN0ZXN0KHNlbGYpOgorICAgICAgICAiIiIgU2VhcmNoZXMgdGhlIGZpbGUg
Zm9yIHVzYWdlIG9mIFczQy1zdHlsZSB0ZXN0aGFybmVzcyBwYXRocyAiIiIKKworICAgICAgICBp
ZiBzZWxmLnRlc3RfZG9jLmZpbmQoc3JjPXJlLmNvbXBpbGUoJ1tcJ1wiL10/L3Jlc291cmNlcy90
ZXN0aGFybmVzcycpKSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zdXBwb3J0X2Zp
bGVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIiBTZWFyY2hlcyB0aGUgZmlsZSBmb3IgYWxsIHBh
dGhzIHNwZWNpZmllZCBpbiB1cmwoKSdzLCBocmVmIG9yIHNyYyBhdHRyaWJ1dGVzICIiIgorCisg
ICAgICAgIHN1cHBvcnRfZmlsZXMgPSBbXQorCisgICAgICAgIGlmIGRvYyBpcyBOb25lOgorICAg
ICAgICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMKKworICAgICAgICAjIExvb2sgZm9yIHRhZ3Mg
d2l0aCBzcmMgb3IgaHJlZiBhdHRyaWJ1dGVzCisgICAgICAgIHNyY19hdHRycyA9IGRvYy5maW5k
QWxsKHNyYz1yZS5jb21waWxlKCcuKicpKQorICAgICAgICBocmVmX2F0dHJzID0gZG9jLmZpbmRB
bGwoaHJlZj1yZS5jb21waWxlKCcuKicpKQorCisgICAgICAgICMgTG9vayBmb3IgdXJscworICAg
ICAgICB1cmxfcGF0dGVybiA9IHJlLmNvbXBpbGUoJ3VybFwoLipcKScpCisgICAgICAgIHVybHMg
PSBbXQorICAgICAgICBmb3IgdXJsIGluIGRvYy5maW5kQWxsKHRleHQ9dXJsX3BhdHRlcm4pOgor
ICAgICAgICAgICAgdXJsID0gcmUuc2VhcmNoKHVybF9wYXR0ZXJuLCB1cmwpCisgICAgICAgICAg
ICB1cmwgPSByZS5zdWIoJ3VybFwoW1wnXCJdJywgJycsIHVybC5ncm91cCgwKSkKKyAgICAgICAg
ICAgIHVybCA9IHJlLnN1YignW1wnXCJdXCknLCAnJywgdXJsKQorICAgICAgICAgICAgdXJscy5h
cHBlbmQodXJsKQorCisgICAgICAgIHNyY19wYXRocyA9IFtzcmNfdGFnWydzcmMnXSBmb3Igc3Jj
X3RhZyBpbiBzcmNfYXR0cnNdCisgICAgICAgIGhyZWZfcGF0aHMgPSBbaHJlZl90YWdbJ2hyZWYn
XSBmb3IgaHJlZl90YWcgaW4gaHJlZl9hdHRyc10KKworICAgICAgICBwYXRocyA9IHNyY19wYXRo
cyArIGhyZWZfcGF0aHMgKyB1cmxzCisgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAg
ICAgICAgIyBJZ25vcmUgaHR0cCBhbmQgbWFpbHRvIGxpbmtzCisgICAgICAgICAgICBpZiBub3Qo
cGF0aC5zdGFydHN3aXRoKCdodHRwOicpKSBhbmQgXAorICAgICAgICAgICAgICAgbm90KHBhdGgu
c3RhcnRzd2l0aCgnbWFpbHRvOicpKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0X2ZpbGVzLmFw
cGVuZChwYXRoKQorCisgICAgICAgIHJldHVybiBzdXBwb3J0X2ZpbGVzCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NDRjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weQpAQCAtMCwwICsx
LDI1MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUK
KyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgor
IyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCitpbXBvcnQgb3MKK2ltcG9ydCBTdHJpbmdJTworaW1w
b3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5Lncz
Yy50ZXN0X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNlcgorCisKK29wdGlvbnMgPSB7J2FsbCc6IEZh
bHNlLCAnbm9fb3ZlcndyaXRlJzogRmFsc2V9CisKKworY2xhc3MgVGVzdFBhcnNlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0
Y2goc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIGJhc2lj
IHJlZnRlc3Qgd2l0aCBvbmUgbWF0Y2ggbGluayBhbmQgbm8gbWlzbWF0Y2ggbGlua3MgIiIiCisK
KyAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJn
cmVlbi1ib3gtcmVmLnhodCIgLz4KKzwvaGVhZD4KKyIiIgorICAgICAgICB0ZXN0X3BhdGggPSAn
L3NvbWUvbWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMs
IHRlc3RfcGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2Vy
LmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlm
eSB0aGUgY29ycmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90
RXF1YWwodGVzdF9pbmZvLCBOb25lLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBh
IHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0
X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUodGVzdF9pbmZvWydyZWZlcmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0
aCksICdyZWZlcmVuY2UgcGF0aCBpcyBub3QgY29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUg
bm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUg
YmVlbiBhbmFseXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplVGVzdFJl
ZnRlc3RNdWx0aXBsZU1hdGNoZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rl
c3QoKSB1c2luZyBhIHJlZnRlc3Qgd2l0aCBtdWx0aXBsZSBtYXRjaCBsaW5rcyBhbmQgbm8gbWlz
bWF0Y2ggbGlua3MgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Cis8bGluayBy
ZWw9Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KKzxsaW5rIHJlbD0ibWF0Y2gi
IGhyZWY9ImJsdWUtYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJvcmFu
Z2UtYm94LXJlZi54aHQiIC8+Cis8L2hlYWQ+CisiIiIKKyAgICAgICAgIyBDYXB0dXJlIHN0ZG91
dCBmb3IgdGhpcyB0ZXN0CisgICAgICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgb3V0
cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBzeXMuc3Rkb3V0ID0gb3V0cHV0CisK
KyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9t
YWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9w
YXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6
ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAgICAgICMgUmVzdG9yZSBzdGRv
dXQKKyAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAorCisgICAgICAgICMgVmVyaWZ5IHRoZSBj
b3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0
ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBm
aWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5r
ZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3Jl
ZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgn
cmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZz
dXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdq
c3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFu
YWx5emVkIGFzIGEganN0ZXN0JykKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgdGhlIHdhcm5p
bmcgYWJvdXQgbXVsdGlwbGUgbWF0Y2hlcworICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0
LmdldHZhbHVlKCkuc3RhcnRzd2l0aCgnV2FybmluZycpLCAnbm8gd2FybmluZyBhYm91dCBtdWx0
aXBsZSBtYXRjaGVzJykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE1hdGNoQW5k
TWlzbWF0Y2goc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBh
IHJlZnRlc3Qgd2l0aCBhIG9uZSBtYXRjaCBsaW5rIGFuZCBvbmUgbWlzbWF0Y2ggbGluayAiIiIK
KworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9
ImdyZWVuLWJveC1yZWYueGh0IiAvPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYmx1ZS1ib3gt
cmVmLnhodCIgLz4KKzxsaW5rIHJlbD0ibWlzbWF0Y2giIGhyZWY9Im9yYW5nZS1ib3gtbm90cmVm
LnhodCIgLz4KKzwvaGVhZD4KKyIiIgorICAgICAgICAjIENhcHR1cmUgc3Rkb3V0IGZvciB0aGlz
IHRlc3QKKyAgICAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICBvdXRwdXQgPSBTdHJp
bmdJTy5TdHJpbmdJTygpCisgICAgICAgIHN5cy5zdGRvdXQgPSBvdXRwdXQKKworICAgICAgICAj
IEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRo
LycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29t
ZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVz
dF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBSZXN0b3JlIHN0ZG91dAorICAgICAg
ICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVz
dCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywg
Tm9uZSwgJ2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rl
c3QnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2Rp
ZCBub3QgZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRl
c3RfaW5mb1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBh
dGggaXMgbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0
JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmls
ZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4g
dGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6ZWQgYXMg
YSBqc3Rlc3QnKQorCisgICAgICAgICMgVmVyaWZ5IHdlIGdvdCBtdWx0aXBsZSB3YXJuaW5ncwor
ICAgICAgICB3YXJuaW5ncyA9IG91dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhsZW4od2FybmluZ3MpLCAyLCAnYWxsIHdhcm5pbmdzIHdlcmUg
bm90IGRpc3BsYXllZCcpCisgICAgICAgICMgVmVyaWZ5IHRoZSBib3RoIHdhcm5pbmdzIG1lbnRp
b24gdGhlIGlzc3VlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbXVsdGlwbGUgbWF0Y2hlcycs
ICdubyB3YXJuaW5nIGFib3V0IG11bHRpcGxlIG1hdGNoZXMnKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoJ21pc21hdGNoJywgJ25vIHdhcm5pbmcgYWJvdXQgbWlzbWF0Y2hlcycpCisKKyAgICBk
ZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RXaXRoUmVmU3VwcG9ydEZpbGVzKHNlbGYpOgorICAg
ICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHRoYXQgaGFzIHJl
ZmVycyB0byBhIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUgb2YgdGhlIHRlc3RzIGRpcmVjdG9yeSBh
bmQgdGhlIHJlZmVyZW5jZSBmaWxlIGhhcyBwYXRocyB0byBvdGhlciBzdXBwb3J0IGZpbGVzICIi
IgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9Im1h
dGNoIiBocmVmPSIuLi9yZWZlcmVuY2UvZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8L2hlYWQ+Cisi
IiIKKyAgICAgICAgcmVmX2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIGhyZWY9InN1cHBvcnQvY3Nz
L3JlZi1zdHlsZXNoZWV0LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4v
c3VwcG9ydC9zb21lLWltYWdlLnBuZyIpCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
PjxpbWcgc3JjPSIuLi9zdXBwb3J0L2JsYWNrOTZ4OTYucG5nIiBhbHQ9IkltYWdlIGRvd25sb2Fk
IHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIiAvPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorIiIi
CisgICAgICAgICMgQW5hbHl6ZSB0aGUgdGVzdAorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUv
bWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3Rf
cGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5
emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCwgcmVmX2NvbnRlbnRzPXJlZl9odG1sKQor
CisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0
ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygp
LCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdy
ZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2Ug
ZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0
YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
dGhlcmUgc2hvdWxkIGJlIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGxlbih0ZXN0X2luZm9bJ3JlZnN1cHBvcnQnXSksIDMsICd0aGVy
ZSBzaG91bGQgYmUgMyBzdXBwb3J0IGZpbGVzIGluIHRoaXMgcmVmZXJlbmNlJykKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91
bGQgbm90IGhhdmUgYmVlbiBhbmFseXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9h
bmFseXplSlNUZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNp
bmcgYSBqc3Rlc3QgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Cis8bGluayBo
cmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+CisiIiIKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRl
c3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJz
ZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2lu
Zm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAg
ICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2Vs
Zi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9uZScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBu
b3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZmVyZW5j
ZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVmZXJlbmNl
IGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2lu
Zm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMg
dGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5
cygpLCAndGVzdCBzaG91bGQgYmUgYSBqc3Rlc3QnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVBp
eGVsVGVzdEFsbFRydWUoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1
c2luZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rlc3Qgd2l0aCBhbGw9
RmFsc2UgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhv
ciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtD
REFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVO
VCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBTZXQgb3B0aW9ucyB0
byAnYWxsJyBzbyB0aGlzIGdldHMgZm91bmQKKyAgICAgICAgb3B0aW9uc1snYWxsJ10gPSBUcnVl
CisKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29t
ZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVz
dF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5h
bHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAgICAgICMgVmVyaWZ5IHRo
ZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVh
bCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9uZScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3Qg
ZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZv
LmtleXMoKSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhl
cmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hv
dWxkIG5vdCBiZSBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplUGl4ZWxUZXN0QWxs
RmFsc2Uoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHRl
c3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rlc3QsIHdpdGggLWFsbD1GYWxzZSAi
IiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUyBU
ZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRs
ZT0iTkFNRV9PRl9BVVRIT1IiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwor
Q1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRF
U1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIFNldCBhbGwgdG8gZmFsc2Ugc28g
dGhpcyBnZXRzIHNraXBwZWQKKyAgICAgICAgb3B0aW9uc1snYWxsJ10gPSBGYWxzZQorCisgICAg
ICAgICMgQW5hbHl6ZSB0aGUgdGVzdAorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVw
L3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCAr
ICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVz
dCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVj
dCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9pbmZv
LCBOb25lLCAndGVzdCBzaG91bGQgaGF2ZSBiZWVuIHNraXBwZWQnKQorCisgICAgZGVmIHRlc3Rf
YW5hbHl6ZU5vbkhUTUxGaWxlKHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0
KCkgd2l0aCBhIGZpbGUgdGhpcyBpc24ndCBodG1sICh0aGlzIG9uZSEpICIiIgorCisgICAgICAg
ICMgVHJ5IHRvIGFuYWx5emUgdGhlIHNjcmlwdCBmaWxlIHdlJ3JlIHRlc3RpbmcgKGhvdyBtZXRh
KQorICAgICAgICB0ZXN0X3BhcnNlcl9weV9maWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGly
bmFtZShfX2ZpbGVfXyksICd0ZXN0X3BhcnNlci5weScpCisKKyAgICAgICAgIyBBbmFseXplIHRo
ZSBmaWxlCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXJzZXJf
cHlfZmlsZSkKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCgpCisKKyAg
ICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ25vIHRlc3RzIHNob3VsZCBoYXZlIGJl
ZW4gZm91bmQgaW4gdGhpcyBmaWxlJykK
</data>
<flag name="review"
          id="221783"
          type_id="1"
          status="+"
          setter="rhauck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200319</attachid>
            <date>2013-05-02 09:03:18 -0700</date>
            <delta_ts>2013-05-03 12:30:44 -0700</delta_ts>
            <desc>Added Dirk Pranke as reviewer</desc>
            <filename>bug111513-05-02-13.patch</filename>
            <type>text/plain</type>
            <size>71556</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMDY1
MzZmLi42YzQwNTNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTMtMDUtMDEgIFJlYmVjY2EgSGF1Y2sgIDxyaGF1
Y2tAYWRvYmUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFByYW5rZS4KKworICAgICAgICBTY3JpcHQg
dG8gYXV0b21hdGUgdGhlIGltcG9ydCBvZiBXM0MgdGVzdHMgaW50byBXZWJLaXQuIAorICAgICAg
ICBGb3IgdGhlIGZ1bGwgZGVzY3JpcHRpb24gb2YgaG93IGl0IHdvcmtzLCBzZWUgdGhlIGNvbW1l
bnRzCisgICAgICAgIGF0IHRoZSB0b3Agb2YgdGVzdF9pbXBvcnRlci5weS4KKworICAgICAgICAq
IFNjcmlwdHMvaW1wb3J0LXczYy10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS93M2MvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfY29udmVydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIpOgor
ICAgICAgICAoVGVzdENvbnZlcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0Q29udmVydGVy
LmxvYWRfcHJlZml4ZWRfcHJvcF9saXN0KToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIubG9hZF9m
aWxlKToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KToKKyAgICAg
ICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyk6CisgICAgICAgIChU
ZXN0Q29udmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgIChUZXN0
Q29udmVydGVyLnNjcnViX3VucHJlZml4ZWRfcHJvcHMpOgorICAgICAgICAoVGVzdENvbnZlcnRl
ci5yZXBsYWNlX3RhZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252
ZXJ0ZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QpOgor
ICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QudGVzdExvYWRQcmVmaXhlZFByb3BMaXN0KToKKyAg
ICAgICAgKFRlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfY29udmVydEZvcldlYmtpdE5vdGhpbmdUb0Nv
bnZlcnQpOgorICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkpOgorICAg
ICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNPbmx5KToKKyAgICAgICAgKHRlc3RfY29u
dmVydEZvcldlYmtpdEhhcm5lc3NBbmRQcm9wcyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRUZXN0
SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGllcyk6
CisgICAgICAgICh2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHZlcmlmeVByZWZp
eGVkUHJvcGVydGllcyk6CisgICAgICAgIChnZW5lcmF0ZVRlc3RDb250ZW50KToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OiBBZGRlZC4KKyAgICAgICAg
KG1haW4pOgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgICh2YWxpZGF0ZV9pbXBvcnRf
ZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlcik6CisgICAgICAgIChUZXN0SW1wb3J0
ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6CisgICAgICAg
IChUZXN0SW1wb3J0ZXIuZ2V0X2NoYW5nZXNldCk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuc2Nh
bl9zb3VyY2VfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVzdHMp
OgorICAgICAgICAoVGVzdEltcG9ydGVyLnNldHVwX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeSk6Cisg
ICAgICAgIChUZXN0SW1wb3J0ZXIuZ2V0X3Rlc3Rfc3RhdHVzKToKKyAgICAgICAgKFRlc3RJbXBv
cnRlci5yZW1vdmVfZGVsZXRlZF9maWxlcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3JpdGVf
aW1wb3J0X2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRl
cl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0KToKKyAgICAg
ICAgKFRlc3RJbXBvcnRlclRlc3QudGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6IEFkZGVkLgorICAgICAgICAo
VGVzdFBhcnNlcik6CisgICAgICAgIChUZXN0UGFyc2VyLl9faW5pdF9fKToKKyAgICAgICAgKFRl
c3RQYXJzZXIubG9hZF9maWxlKToKKyAgICAgICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0KToK
KyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3JlZnRlc3RzKToKKyAgICAgICAgKFRlc3RQYXJzZXIu
aXNfanN0ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3N1cHBvcnRfZmlsZXMpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5OiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0LnRl
c3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2gpOgorICAgICAgICAodGVzdF9hbmFseXplVGVz
dFJlZnRlc3RNdWx0aXBsZU1hdGNoZXMpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJlZnRl
c3RNYXRjaEFuZE1pc21hdGNoKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0V2l0
aFJlZlN1cHBvcnRGaWxlcyk6CisgICAgICAgICh0ZXN0X2FuYWx5emVKU1Rlc3QpOgorICAgICAg
ICAodGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsVHJ1ZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVQ
aXhlbFRlc3RBbGxGYWxzZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVOb25IVE1MRmlsZSk6CisK
IDIwMTMtMDQtMzAgIEdsZW5uIEFkYW1zICA8Z2xlbm5Ac2t5bmF2LmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBBZGQgbXlzZWxmIHRvIHdhdGNobGlzdCBlbnRyaWVzLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiNzIwOTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKQEAgLTAsMCArMSwz
NSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
ICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyMgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS53M2Mg
aW1wb3J0IHRlc3RfaW1wb3J0ZXIKKworCitzeXMuZXhpdCh0ZXN0X2ltcG9ydGVyLm1haW4oc3lz
LmFyZ3ZbMTpdLCBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUy
OQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMThmYTIxCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkKQEAgLTAsMCArMSwy
MDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9i
ZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisj
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCisjIFNVQ0ggREFNQUdFLgoraW1wb3J0IHJlCitpbXBvcnQgb3MKKworZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAsIFRhZwor
CitTT1VSQ0VfU1VCRElSID0gJ1NvdXJjZScKK1dFQkNPUkVfU1VCRElSID0gJ1dlYkNvcmUnCitD
U1NfU1VCRElSID0gJ2NzcycKK0NTU19QUk9QRVJUWV9OQU1FU19JTiA9ICdDU1NQcm9wZXJ0eU5h
bWVzLmluJworTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSA9ICdMYXlvdXRUZXN0cycKK1JFU09VUkNF
U19ESVJFQ1RPUlkgPSAncmVzb3VyY2VzJworV0VCS0lUX1JPT1QgPSBfX2ZpbGVfXy5zcGxpdChv
cy5wYXRoLnNlcCArICdUb29scycpWzBdCisKKworY2xhc3MgVGVzdENvbnZlcnRlcihvYmplY3Qp
OgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnByZWZpeGVkX3Byb3Bl
cnRpZXMgPSBzZWxmLmxvYWRfcHJlZml4ZWRfcHJvcF9saXN0KCkKKworICAgIGRlZiBsb2FkX3By
ZWZpeGVkX3Byb3BfbGlzdChzZWxmKToKKyAgICAgICAgIiIiIFJlYWRzIHRoZSBjdXJyZW50IGxp
c3Qgb2YgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggZnJvbSBT
b3VyY2UvV2ViQ29yZS9DU1MvQ1NTUHJvcGVydHlOYW1lcy5pbiBhbmQgc3RvcmVzIHRoZW0gaW4g
YW4gaW5zdGFuY2UgdmFyaWFibGUgIiIiCisKKyAgICAgICAgcHJlZml4ZWRfcHJvcF9saXN0ID0g
W10KKworICAgICAgICAjIE9wZW4gQ1NTUHJvcGVydHlOYW1lcy5pbiB0byBnZXQgdGhlIGN1cnJl
bnQgbGlzdCBvZiB0aGluZ3MgcmVxdWlyaW5nIHByZWZpeGVzCisgICAgICAgIGYgPSBvcGVuKG9z
LnBhdGguam9pbihvcy5wYXRoLnNlcCwgV0VCS0lUX1JPT1QsIFNPVVJDRV9TVUJESVIsIFdFQkNP
UkVfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U19TVUJESVIsIENTU19QUk9QRVJUWV9OQU1FU19JTikpCisgICAgICAgIGxpbmVzID0gZi5yZWFk
bGluZXMoKQorICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICMgTG9vayBm
b3IgYW55dGhpbmcgd2l0aCB0aGUgLXdlYmtpdC0gcHJlZml4CisgICAgICAgICAgICBtYXRjaCA9
IHJlLnNlYXJjaCgnXi13ZWJraXQtW1x3fC1dKicsIGxpbmUpCisgICAgICAgICAgICBpZiBtYXRj
aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIElnbm9yZSB0aGUgb25lcyB3aGVyZSBi
b3RoIHRoZSBwcmVmaXhlZCBhbmQgbm9uLXByZWZpeGVkIHByb3BlcnR5CisgICAgICAgICAgICAg
ICAgIyBhcmUgc3VwcG9ydGVkIC0gZGVub3RlZCBieSAtd2Via2l0LXNvbWUtcHJvcGVydHkgPSBz
b21lLXByb3BlcnR5CisgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmUuc3BsaXQoJz0nKSkgPT0g
MiBhbmQgXAorICAgICAgICAgICAgICAgICAgIGxpbmUuc3BsaXQoJz0nKVsxXS5zdHJpcCgpIGlu
IGxpbmUuc3BsaXQoJz0nKVswXS5zdHJpcCgpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeGVkX3By
b3BfbGlzdC5hcHBlbmQobWF0Y2guZ3JvdXAoMCkpCisKKyAgICAgICAgcmV0dXJuIHByZWZpeGVk
X3Byb3BfbGlzdAorCisgICAgZGVmIGxvYWRfZmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAgICAg
ICIiIiBPcGVucyB0aGUgdGVzdCBmaWxlIHxmaWxlbmFtZXwgdG8gY29udmVydCAiIiIKKworICAg
ICAgICBmID0gb3BlbihmaWxlbmFtZSkKKyAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKQorICAg
ICAgICBmLmNsb3NlKCkKKworICAgICAgICByZXR1cm4gY29udGVudHMKKworICAgIGRlZiBjb252
ZXJ0X2Zvcl93ZWJraXQoc2VsZiwgbmV3X3BhdGgsIGNvbnRlbnRzPU5vbmUsIGZpbGVuYW1lPU5v
bmUpOgorICAgICAgICAiIiIgQ29udmVydHMgYSBmaWxlJ3MgfGNvbnRlbnRzfCBzbyBpdCB3aWxs
IGZ1bmN0aW9uIGNvcnJlY3RseSBpbiBpdHMgfG5ld19wYXRofCBpbiBXZWJraXQuIFJldHVybnMg
dGhlIGxpc3Qgb2YgcHJlZml4ZWQgQ1NTIHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCBjb250
ZW50cy4iIiIKKworICAgICAgICBpZiBjb250ZW50cyBpcyBOb25lIGFuZCBmaWxlbmFtZSBpcyBO
b25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBpZiBjb250ZW50cyBpcyBO
b25lOgorICAgICAgICAgICAgY29udGVudHMgPSBzZWxmLmxvYWRfZmlsZShmaWxlbmFtZSkKKwor
ICAgICAgICAjIEhhbmRsZSBwbGFpbiBvbGQgQ1NTIGZpbGVzCisgICAgICAgIGlmIGZpbGVuYW1l
LmVuZHN3aXRoKCcuY3NzJyk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zY3J1Yl91bnByZWZp
eGVkX3Byb3BzKGNvbnRlbnRzKQorCisgICAgICAgICMgT3RoZXJ3aXNlLCBwYXJzZSBpdCBhcyBp
ZiBIVE1MCisgICAgICAgIGRvYyA9IEJlYXV0aWZ1bFNvdXAoY29udGVudHMpCisgICAgICAgIGpz
dGVzdCA9IHNlbGYuY29udmVydF90ZXN0aGFybmVzc19wYXRocyhkb2MsIG5ld19wYXRoKQorICAg
ICAgICBjb252ZXJ0ZWQgPSBzZWxmLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhkb2MpCisK
KyAgICAgICAgaWYgbGVuKGNvbnZlcnRlZFswXSkgPiAwIG9yIGpzdGVzdCBpcyBUcnVlOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgIGRlZiBjb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKHNlbGYsIGRvYywg
bmV3X3BhdGgpOgorICAgICAgICAiIiIgVXBkYXRlIGxpbmtzIHRvIHRlc3RoYXJuZXNzLmpzIGlu
IHRoZSBCZWF1dGlmdWxTb3VwIHxkb2N8IHRvIHBvaW50IHRvIHRoZSBjb3B5IGluIHxuZXdfcGF0
aHwuIFJldHVybnMgd2hldGhlciB0aGUgZG9jdW1lbnQgd2FzIG1vZGlmaWVkLiIiIgorCisgICAg
ICAgICMgTG9vayBmb3IgdGhlIFczQy1zdHlsZSBwYXRoIHRvIGFueSB0ZXN0aGFybmVzcyBmaWxl
cyAtIHNjcmlwdHMgKC5qcykgb3IgbGlua3MgKC5jc3MpCisgICAgICAgIHBhdHRlcm4gPSByZS5j
b21waWxlKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykKKyAgICAgICAgc2NyaXB0X3RhZ3MgPSBk
b2MuZmluZEFsbChzcmM9cGF0dGVybikKKyAgICAgICAgbGlua190YWdzID0gZG9jLmZpbmRBbGwo
aHJlZj1wYXR0ZXJuKQorICAgICAgICB0ZXN0aGFybmVzc190YWdzID0gc2NyaXB0X3RhZ3MgKyBs
aW5rX3RhZ3MKKworICAgICAgICBpZiBsZW4odGVzdGhhcm5lc3NfdGFncykgIT0gMDoKKworICAg
ICAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgbmV3IGRpcmVj
dG9yeSB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAgICAgICAgICAgIHJlc291cmNlc19wYXRo
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBXRUJLSVRfUk9PVCwgTEFZT1VUX1RFU1RTX0RJ
UkVDVE9SWSwgUkVTT1VSQ0VTX0RJUkVDVE9SWSkKKyAgICAgICAgICAgIHJlc291cmNlc19yZWxw
YXRoID0gb3MucGF0aC5yZWxwYXRoKHJlc291cmNlc19wYXRoLCBuZXdfcGF0aCkKKworICAgICAg
ICAgICAgZm9yIHRhZyBpbiB0ZXN0aGFybmVzc190YWdzOgorICAgICAgICAgICAgICAgICMgQnVp
bGQgYSBuZXcgdGFnIHdpdGggdGhlIGNvcnJlY3QgcGF0aAorICAgICAgICAgICAgICAgIGF0dHIg
PSAnc3JjJworICAgICAgICAgICAgICAgIGlmIHRhZy5uYW1lICE9ICdzY3JpcHQnOgorICAgICAg
ICAgICAgICAgICAgICBhdHRyID0gJ2hyZWYnCisKKyAgICAgICAgICAgICAgICAjIEJ1aWxkIGEg
bmV3IHRhZyB3aXRoIHRoZSBjb3JyZWN0IHJlbGF0aXZlIHBhdGgKKyAgICAgICAgICAgICAgICBv
bGRfcGF0aCA9IHRhZ1thdHRyXQorICAgICAgICAgICAgICAgIG5ld190YWcgPSBUYWcoZG9jLCB0
YWcubmFtZSwgdGFnLmF0dHJzKQorICAgICAgICAgICAgICAgIG5ld190YWdbYXR0cl0gPSByZS5z
dWIocGF0dGVybiwgcmVzb3VyY2VzX3JlbHBhdGggKyAnL3Rlc3RoYXJuZXNzJywgb2xkX3BhdGgp
CisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUgZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAg
ICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFnKGRvYywgdGFnLCBuZXdfdGFnKQorCisgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICBkZWYgY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKHNlbGYsIGRvYyk6Cisg
ICAgICAgICIiIiBTZWFyY2hlcyBhIEJlYXV0aWZ1bFNvdXAgfGRvY3wgZm9yIGFueSBDU1MgcHJv
cGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBhbmQgY29udmVydHMgdGhlbS4g
UmV0dXJucyB0aGUgbGlzdCBvZiBjb252ZXJ0ZWQgcHJvcGVydGllcyBhbmQgdGhlIG1vZGlmaWVk
IGRvY3VtZW50IGFzIGEgc3RyaW5nICIiIgorCisgICAgICAgIGNvbnZlcnRlZF9wcm9wcyA9IFtd
CisKKyAgICAgICAgIyBMb29rIGZvciBpbmxpbmUgYW5kIGRvY3VtZW50IHN0eWxlcworICAgICAg
ICBpbmxpbmVfc3R5bGVzID0gZG9jLmZpbmRBbGwoc3R5bGU9cmUuY29tcGlsZSgnLionKSkKKyAg
ICAgICAgc3R5bGVfdGFncyA9IGRvYy5maW5kQWxsKCdzdHlsZScpCisgICAgICAgIGFsbF9zdHls
ZXMgPSBpbmxpbmVfc3R5bGVzICsgc3R5bGVfdGFncworCisgICAgICAgIGZvciB0YWcgaW4gYWxs
X3N0eWxlczoKKworICAgICAgICAgICAgIyBHZXQgdGhlIHRleHQgd2hldGhlciBpbiBhIHN0eWxl
IHRhZyBvciBzdHlsZSBhdHRyaWJ1dGUKKyAgICAgICAgICAgIHN0eWxlX3RleHQgPSAnJworICAg
ICAgICAgICAgaWYgdGFnLm5hbWUgPT0gJ3N0eWxlJzoKKyAgICAgICAgICAgICAgICBpZiBsZW4o
dGFnLmNvbnRlbnRzKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHN0eWxlX3RleHQgPSB0YWcuY29u
dGVudHNbMF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3R5bGVfdGV4dCA9
IHRhZ1snc3R5bGUnXQorCisgICAgICAgICAgICAjIFNjcnViIGl0IGZvciBwcm9wcyByZXF1aXJp
bmcgcHJlZml4ZXMKKyAgICAgICAgICAgIHNjcnViYmVkX3N0eWxlID0gc2VsZi5zY3J1Yl91bnBy
ZWZpeGVkX3Byb3BzKHN0eWxlX3RleHQpCisKKyAgICAgICAgICAgICMgUmV3cml0ZSB0YWcgb25s
eSBpZiBjaGFuZ2VzIHdlcmUgbWFkZQorICAgICAgICAgICAgaWYgbGVuKHNjcnViYmVkX3N0eWxl
WzBdKSA+IDA6CisgICAgICAgICAgICAgICAgY29udmVydGVkX3Byb3BzLmV4dGVuZChzY3J1YmJl
ZF9zdHlsZVswXSkKKworICAgICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgdGFnIHdpdGggdGhl
IG1vZGlmaWVkIHRleHQKKyAgICAgICAgICAgICAgICBuZXdfdGFnID0gVGFnKGRvYywgdGFnLm5h
bWUsIHRhZy5hdHRycykKKyAgICAgICAgICAgICAgICBuZXdfdGFnLmluc2VydCgwLCBzY3J1YmJl
ZF9zdHlsZVsxXSkKKworICAgICAgICAgICAgICAgICMgVXBkYXRlIHRoZSBkb2Mgd2l0aCB0aGUg
bmV3IHRhZworICAgICAgICAgICAgICAgIHNlbGYucmVwbGFjZV90YWcoZG9jLCB0YWcsIG5ld190
YWcpCisKKyAgICAgICAgcmV0dXJuIChjb252ZXJ0ZWRfcHJvcHMsIGRvYy5wcmV0dGlmeSgpKQor
CisgICAgZGVmIHNjcnViX3VucHJlZml4ZWRfcHJvcHMoc2VsZiwgdGV4dCk6CisgICAgICAgICIi
IiBTZWFyY2hlcyB8dGV4dHwgZm9yIGluc3RhbmNlcyBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0
aGUgLXdlYmtpdC0gcHJlZml4IGFuZCBhZGRzIHRoZSBwcmVmaXguIFJldHVybnMgdGhlIGxpc3Qg
b2YgY29udmVydGVkIHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCBzdHJpbmcgIiIiCisKKyAg
ICAgICAgY29udmVydGVkX3Byb3BzID0gW10KKworICAgICAgICAjIFNwaW4gdGhyb3VnaCB0aGUg
d2hvbGUgbGlzdCBvZiBwcmVmaXhlZCBwcm9wZXJ0aWVzCisgICAgICAgIGZvciBwcmVmaXhlZF9w
cm9wIGluIHNlbGYucHJlZml4ZWRfcHJvcGVydGllczoKKworICAgICAgICAgICAgIyBQdWxsIHRo
ZSBwcmVmaXggb2ZmCisgICAgICAgICAgICB1bnByZWZpeGVkX3Byb3AgPSBwcmVmaXhlZF9wcm9w
LnJlcGxhY2UoJy13ZWJraXQtJywgJycpCisKKyAgICAgICAgICAgICMgTG9vayBmb3IgdGhlIHZh
cmlvdXMgd2F5cyBpdCBtaWdodCBiZSBpbiB0aGUgQ1NTCisgICAgICAgICAgICAjIE1hdGNoIHRo
ZSB0aGUgcHJvcGVydHkgcHJlY2VkZWQgYnkgZWl0aGVyIHdoaXRlc3BhY2Ugb3IgbGVmdCBjdXJs
eSBicmFjZQorICAgICAgICAgICAgIyBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcg
KGZvciBpbmxpbmUgc3R5bGUgYXR0cmlidXRlKQorICAgICAgICAgICAgcGF0dGVybiA9ICcoW1xz
e118XiknICsgdW5wcmVmaXhlZF9wcm9wICsgJyhccys6fDopJworICAgICAgICAgICAgaWYgcmUu
c2VhcmNoKHBhdHRlcm4sIHRleHQpOgorICAgICAgICAgICAgICAgIHByaW50ICdjb252ZXJ0aW5n
ICcgKyB1bnByZWZpeGVkX3Byb3AgKyAnIC0+ICcgKyBwcmVmaXhlZF9wcm9wCisgICAgICAgICAg
ICAgICAgY29udmVydGVkX3Byb3BzLmFwcGVuZChwcmVmaXhlZF9wcm9wKQorICAgICAgICAgICAg
ICAgIHRleHQgPSByZS5zdWIocGF0dGVybiwgcHJlZml4ZWRfcHJvcCArICc6JywgdGV4dCkKKwor
ICAgICAgICAjIFRPRE86IEhhbmRsZSB0aGUgSlMgdmVyc2lvbnMgb2YgdGhlc2UgcHJvcGVydGll
cywgdG9vLgorCisgICAgICAgIHJldHVybiAoY29udmVydGVkX3Byb3BzLCB0ZXh0KQorCisgICAg
ZGVmIHJlcGxhY2VfdGFnKHNlbGYsIGRvYywgb2xkX3RhZywgbmV3X3RhZyk6CisgICAgICAgICIi
IiBJbnNlcnRzIGEgfG5ld190YWd8IGludG8gYSBCZWF1dGlmdWxTb3VwIHxkb2N8IGFuZCByZW1v
dmVzIHRoZSB8b2xkX3RhZ3wgIiIiCisKKyAgICAgICAgIyBSZXBsYWNlIHRoZSBwcmV2aW91cyB0
YWcgd2l0aCB0aGUgbmV3IG9uZQorICAgICAgICBpbmRleCA9IG9sZF90YWcucGFyZW50LmNvbnRl
bnRzLmluZGV4KG9sZF90YWcpCisgICAgICAgIG9sZF90YWcucGFyZW50Lmluc2VydChpbmRleCwg
bmV3X3RhZykKKyAgICAgICAgb2xkX3RhZy5leHRyYWN0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk4ODNiMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAg
KzEsMzYxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTMg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBC
RQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
CisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KK2ltcG9ydCBvcworZnJvbSByYW5kb20gaW1wb3J0
IHJhbmRpbnQKK2ltcG9ydCByZQoraW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAorCitmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAor
Citmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2NvbnZlcnRlciBpbXBvcnQgVGVzdENvbnZlcnRlcgor
ZnJvbSB3ZWJraXRweS53M2MgaW1wb3J0IHRlc3RfY29udmVydGVyCisKKworY2xhc3MgVGVzdENv
bnZlcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RMb2FkUHJlZml4
ZWRQcm9wTGlzdChzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIHRoYXQgdGhlIGN1cnJlbnQgbGlz
dCBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IGxvYWQgY29ycmVj
dGx5ICIiIgorCisgICAgICAgICMgR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVy
dGllcworICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgcHJvcF9s
aXN0ID0gY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMKKworICAgICAgICAjIFZlcmlmeSB3
ZSBnb3QgcHJvcGVydGllcyBiYWNrCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocHJv
cF9saXN0KSwgMCwgJ05vIHByZWZpeGVkIHByb3BlcnRpZXMgZm91bmQnKQorCisgICAgICAgICMg
VmVyaWZ5IHRoZXkncmUgYWxsIHByZWZpeGVkCisgICAgICAgIGZvciBwcm9wIGluIHByb3BfbGlz
dDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9wLnN0YXJ0c3dpdGgoJy13ZWJraXQt
JykpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0Tm90aGluZ1RvQ29udmVydChzZWxm
KToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMg
dGVzdCB0aGF0IGhhcyBub3RoaW5nIHRvIGNvbnZlcnQgIiIiCisKKyAgICAgICAgdGVzdF9odG1s
ID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0
Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRk
Ij4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgor
PHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0i
YXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCitocmVmPSJtYWlsdG86RU1BSUwgT1IgaHR0
cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJSRUxFVkFOVF9TUEVD
X1NFQ1RJT04iLz4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVEVTVCBBU1NFUlRJT04i
Lz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCitDU1MgRk9SIFRFU1QKK11dPjwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQgT0YgVEVTVAorPC9ib2R5PgorPC9odG1s
PgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgICMg
VHJ5IHRvIGNvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNv
bnZlcnRfZm9yX3dlYmtpdCgnL25vdGhpbmcvdG8vY29udmVydCcsIGNvbnRlbnRzPXRlc3RfaHRt
bCwgZmlsZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgICMgVmVyaWZ5IG5vdGhpbmcg
d2FzIGNvbnZlcnRlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwg
J3Rlc3Qgd2FzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbnZlcnRlZCcpCisKKyAgICBkZWYgdGVz
dF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBj
b252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2ljIEpTIHRlc3QgdGhhdCB1c2VzIHRlc3Ro
YXJuZXNzLmpzIG9ubHkgYW5kIGhhcyBubyBwcmVmaXhlZCBwcm9wZXJ0aWVzICIiIgorCisgICAg
ICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorIiIiCisgICAg
ICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgICMgQ3JlYXRlIHBhdGgg
dG8gYSBmYWtlIHRlc3QgZGlyZWN0b3J5CisgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9p
bihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuTEFZT1VUX1RF
U1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdoYXJuZXNzb25seScpCisKKyAgICAgICAgIyBDb252ZXJ0
IHRoZSBodG1sCisgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X2Zvcl93ZWJr
aXQodGVzdF9wYXRoLCBjb250ZW50cz10ZXN0X2h0bWwsIGZpbGVuYW1lPSdzb21lZmlsZS5odG1s
JykKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAgICAgc2Vs
Zi5hc3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVydGVk
JykKKworICAgICAgICAjIFZlcmlmeSB0aGF0IGJvdGggdGhlIGhhcm5lc3MgcGF0aHMgd2VyZSBj
b252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhj
b252ZXJ0ZWRbMV0sIHRlc3RfcGF0aCwgMSwgMSkKKworICAgICAgICAjIFZlcmlmeSBubyBwcm9w
ZXJ0aWVzIHdlcmUgY29udmVydGVkCisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0
aWVzKGNvbnZlcnRlZCwgW10pCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNP
bmx5KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29udmVydF9mb3Jfd2Via2l0KCkgdXNpbmcg
YSB0ZXN0IHRoYXQgaGFzIDIgcHJlZml4ZWQgcHJvcGVydGllczogMSBpbiBhIHN0eWxlIGJsb2Nr
ICsgMSBpbmxpbmUgc3R5bGUgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisKKyNibG9jazEgeyBA
dGVzdDBAOiBwcm9wdmFsdWU7IH0KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZWxlbTEiIHN0eWxlPSJAdGVzdDFAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KKyIiIgorCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisgICAg
ICAgICMgQ3JlYXRlIHBhdGggdG8gYSBmYWtlIHRlc3QgZGlyZWN0b3J5CisgICAgICAgIHRlc3Rf
cGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JP
T1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9j
b252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXJuZXNzYW5kcHJvcHMn
KQorCisgICAgICAgICMgR2VuZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3QgcHJvcGVydGllcyBpbnRv
IHRoZSB0ZXN0X2h0bWwKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRlc3RD
b250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyLCB0ZXN0X2h0bWwpCisKKyAg
ICAgICAgIyBDb252ZXJ0IHRoZSBodG1sCisgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5j
b252ZXJ0X2Zvcl93ZWJraXQodGVzdF9wYXRoLCBjb250ZW50cz10ZXN0X2NvbnRlbnRbMV0sIGZp
bGVuYW1lPSdzb21lZmlsZS5odG1sJykKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24g
aGFwcGVuZWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0
ZXN0IHdhcyBub3QgY29udmVydGVkJykKKworICAgICAgICAjIFZlcmlmeSB0aGF0IGJvdGggdGhl
IGhhcm5lc3MgcGF0aHMgYW5kIHByb3BlcnRpZXMgd2VyZSBhbGwgY29udmVydGVkIGNvcnJlY3Rs
eQorICAgICAgICBzZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoY29udmVydGVkWzFdLCB0ZXN0
X3BhdGgsIDEsIDEpCisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKGNvbnZl
cnRlZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHRlc3RfY29udmVydEZvcldlYmtpdEhh
cm5lc3NBbmRQcm9wcyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtp
dCgpIHVzaW5nIGEgYmFzaWMgSlMgdGVzdCB0aGF0IHVzZXMgdGVzdGhhcm5lc3MuanMgYW5kIHRl
c3RoYXJuZXNzLmNzcyBhbmQgaGFzIDQgcHJlZml4ZWQgcHJvcGVydGllczogMyBpbiBhIHN0eWxl
IGJsb2NrICsgMSBpbmxpbmUgc3R5bGUgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9
InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisKKyNibG9j
azEgeyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKyNibG9jazIgeyBAdGVzdDFAOiBwcm9wdmFsdWU7
IH0KKyNibG9jazMgeyBAdGVzdDJAOiBwcm9wdmFsdWU7IH0KKworPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxlPSJAdGVzdDNAOiBwcm9wdmFsdWU7Ij48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVy
dGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQor
ICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVy
dGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NV
QkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFy
bmVzc2FuZHByb3BzJykKKworICAgICAgICAjIEdlbmVyYXRlICYgaW5zZXJ0IHRoZSB0ZXN0IHBy
b3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisgICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYu
Z2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcywgNCwgdGVz
dF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQg
PSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3RfcGF0aCwgY29udGVudHM9dGVzdF9j
b250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisKKyAgICAgICAgIyBWZXJpZnkg
YSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVy
dGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkg
dGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIGFuZCBwcm9wZXJ0aWVzIHdlcmUgYWxsIGNvbnZl
cnRlZCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi52ZXJpZnlUZXN0SGFybmVzc1BhdGhzKGNvbnZl
cnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQorICAgICAgICBzZWxmLnZlcmlmeVByZWZpeGVkUHJv
cGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFswXSkKKworICAgIGRlZiB0ZXN0X2NvbnZl
cnRUZXN0SGFybmVzc1BhdGhzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29udmVydF90ZXN0
aGFybmVzc19wYXRocygpIHdpdGggYSB0ZXN0IHRoYXQgdXNlcyBhbGwgdGhyZWUgdGVzdGhhcm5l
c3MgZmlsZXMgIiIiCisKKyAgICAgICAgIyBCYXNpYyB0ZXN0IGNvbnRlbnQgdXNpbmcgYWxsIHRo
cmVlIHRlc3RoYXJuZXNzIGZpbGVzCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxp
bmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlw
ZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIo
KQorCisgICAgICAgICMgQ3JlYXRlIHBhdGggdG8gYSBmYWtlIHRlc3QgZGlyZWN0b3J5CisgICAg
ICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIu
V0VCS0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9jb252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFy
bmVzc3BhdGhzJykKKworICAgICAgICAjIENvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAgZG9jID0g
QmVhdXRpZnVsU291cCh0ZXN0X2h0bWwpCisgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5j
b252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKGRvYywgdGVzdF9wYXRoKQorCisgICAgICAgICMgVmVy
aWZ5IGEgY29udmVyc2lvbiBoYXBwZW5lZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udmVy
dGVkLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgYWxsIGdv
dCBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRo
cyhkb2MsIHRlc3RfcGF0aCwgMiwgMSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRQcmVmaXhlZFBy
b3BlcnRpZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X3ByZWZpeGVkX3Byb3Bl
cnRpZXMoKSBmaWxlIHRoYXQgaGFzIDIwIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0
LSBwcmVmaXg6CisgICAgICAgIDEwIGluIG9uZSBzdHlsZSBibG9jayArIDUgaW4gYW5vdGhlciBz
dHlsZQorICAgICAgICBibG9jayArIDUgaW5saW5lIHN0eWxlcywgaW5jbHVkaW5nIG9uZSB3aXRo
IG11bHRpcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuCisgICAgICAgIFRoZSBwcm9wZXJ0aWVzIGlu
IHRoZSB0ZXN0IGNvbnRlbnQgYXJlIGluIGFsbCBzb3J0cyBvZiB3YWNrIGZvcm1hdHRpbmcuCisg
ICAgICAgICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMSB7CisgICAgd2lkdGg6IDMwMHB4OworICAg
IGhlaWdodDogMzAwcHgKK30KKworLmJsb2NrMiB7CisgICAgQHRlc3QwQDogcHJvcHZhbHVlOwor
fQorCisuYmxvY2sze0B0ZXN0MUA6IHByb3B2YWx1ZTt9CisKKy5ibG9jazQgeyBAdGVzdDJAOnBy
b3B2YWx1ZTsgfQorCisuYmxvY2s1eyBAdGVzdDNAIDpwcm9wdmFsdWU7IH0KKworI2Jsb2NrNiB7
ICAgIEB0ZXN0NEAgICA6ICAgcHJvcHZhbHVlOyAgfQorCisjYmxvY2s3Cit7CisgICAgQHRlc3Q1
QDogcHJvcHZhbHVlOworfQorCisjYmxvY2s4IHsgQHRlc3Q2QDogcHJvcHZhbHVlOyB9CisKKyNi
bG9jazk6cHNldWRvCit7CisKKyAgICBAdGVzdDdAOiBwcm9wdmFsdWU7CisgICAgQHRlc3Q4QDog
IHByb3B2YWx1ZSBwcm9wdmFsdWUgcHJvcHZhbHVlOzsKK30KKworXV0+PC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRlc3Q5QDogcHJvcHZhbHVl
OyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJwcm9wbmFtZTogcHJvcHZhbHVl
OyBAdGVzdDEwQCA6IHByb3B2YWx1ZTsgcHJvcG5hbWU6cHJvcHZhbHVlOyI+PC9kaXY+CisgICAg
PGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJAdGVzdDExQDogcHJvcHZhbHVlOyBAdGVzdDEyQCA6IHBy
b3B2YWx1ZTsgQHRlc3QxM0AgICA6cHJvcHZhbHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxl
bTMiIHN0eWxlPSJAdGVzdDE0QDpwcm9wdmFsdWUiPjwvZGl2PgorPC9ib2R5PgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMTB7IEB0ZXN0MTVAOiBwcm9wdmFsdWU7
IH0KKy5ibG9jazExeyBAdGVzdDE2QDogcHJvcHZhbHVlOyB9CisuYmxvY2sxMnsgQHRlc3QxN0A6
IHByb3B2YWx1ZTsgfQorI2Jsb2NrMTM6cHNldWRvCit7CisgICAgQHRlc3QxOEA6IHByb3B2YWx1
ZTsKKyAgICBAdGVzdDE5QDogcHJvcHZhbHVlOworfQorCitdXT48L3N0eWxlPgorPC9odG1sPgor
IiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgICMgR2Vu
ZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3QgcHJvcGVydGllcyBpbnRvIHRoZSB0ZXN0X2h0bWwKKyAg
ICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRlc3RDb250ZW50KGNvbnZlcnRlci5w
cmVmaXhlZF9wcm9wZXJ0aWVzLCAyMCwgdGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0
aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9wcmVmaXhlZF9w
cm9wZXJ0aWVzKEJlYXV0aWZ1bFNvdXAodGVzdF9jb250ZW50WzFdKSkKKworICAgICAgICAjIFZl
cmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChj
b252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykKKworICAgICAgICAjIFZl
cmlmeSBhbGwgdGhlIGdlbmVyYXRlZCB0ZXN0IHByb3BlcnRpZXMgd2VyZSBjb252ZXJ0ZWQgY29y
cmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKGNvbnZlcnRlZCwg
dGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoc2VsZiwg
Y29udmVydGVkLCB0ZXN0X3BhdGgsIG51bV9zcmNfcGF0aHMsIG51bV9ocmVmX3BhdGhzKToKKyAg
ICAgICAgIiIiIFZlcmlmaWVzIGFsbCBXM0Mtc3R5bGUgcGF0aHMgdG8gdGVzdCBoYXJuZXNzIGZp
bGVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseSAiIiIKKworICAgICAgICAjIE1ha2Ugc291cCBp
ZiB3ZSBuZWVkIHRvCisgICAgICAgIGlmIGlzaW5zdGFuY2UoY29udmVydGVkLCBiYXNlc3RyaW5n
KToKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IEJlYXV0aWZ1bFNvdXAoY29udmVydGVkKQorCisg
ICAgICAgICMgQnVpbGQgdGhlIHBhdGggdG8gTGF5b3V0VGVzdHMvcmVzb3VyY2VzCisgICAgICAg
IHJlc291cmNlc19kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVy
LldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2NvbnZlcnRlci5MQVlPVVRfVEVTVFNfRElSRUNUT1JZLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5S
RVNPVVJDRVNfRElSRUNUT1JZKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBvcmlnaW5hbCBwYXRo
cyBhcmUgbm8gbG9uZ2VyIHRoZXJlCisgICAgICAgIG9yaWdfcGF0aF9wYXR0ZXJuID0gcmUuY29t
cGlsZSgnXCIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKHNyYz1vcmlnX3BhdGhfcGF0dGVybikpLCAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3Mgc3JjIHBhdGggd2FzIG5vdCBjb252
ZXJ0ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29udmVydGVkLmZpbmRBbGwo
aHJlZj1vcmlnX3BhdGhfcGF0dGVybikpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdGhhcm5lc3MgaHJlZiBwYXRoIHdhcyBub3QgY29udmVydGVkJykKKworICAgICAgICAjIEdl
dCB0aGUgbmV3IHJlbHBhdGggZnJvbSB0aGUgdGVzdGVyIGRpcgorICAgICAgICBuZXdfcmVscGF0
aCA9IG9zLnBhdGgucmVscGF0aChyZXNvdXJjZXNfZGlyLCB0ZXN0X3BhdGgpCisKKyAgICAgICAg
IyBWZXJpZnkgaXQncyBpbiBhbGwgdGhlIHJpZ2h0IHBsYWNlcworICAgICAgICByZWxwYXRoX3Bh
dHRlcm4gPSByZS5jb21waWxlKG5ld19yZWxwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhsZW4oY29udmVydGVkLmZpbmRBbGwoc3JjPXJlbHBhdGhfcGF0dGVybikpLCBudW1fc3JjX3Bh
dGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3Mgc3JjIHJlbGF0aXZl
IHBhdGggbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29udmVy
dGVkLmZpbmRBbGwoaHJlZj1yZWxwYXRoX3BhdHRlcm4pKSwgbnVtX2hyZWZfcGF0aHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVzcyBocmVmIHJlbGF0aXZlIHBhdGggbm90
IGNvcnJlY3QnKQorCisgICAgZGVmIHZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhzZWxmLCBjb252
ZXJ0ZWQsIHRlc3RfcHJvcGVydGllcyk6CisgICAgICAgICIiIiBWZXJpZmllcyBhIGxpc3Qgb2Yg
dGVzdF9wcm9wZXJ0aWVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseSAiIiIKKworICAgICAgICAj
IFZlcmlmeSB0aGF0IHRoZSBudW1iZXIgb2YgdGVzdCBwcm9wZXJ0aWVzIGVxdWFscyB0aGUgbnVt
YmVyIHRoYXQgd2VyZSBjb252ZXJ0ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29u
dmVydGVkWzBdKSwgbGVuKHRlc3RfcHJvcGVydGllcyksICdJbmNvcnJlY3QgbnVtYmVyIG9mIHBy
b3BlcnRpZXMgY29udmVydGVkJykKKworICAgICAgICAjIFZlcmlmeSB0aGV5J3JlIGFsbCBpbiB0
aGUgY29udmVydGVkIGRvY3VtZW50CisgICAgICAgIGZvciB0ZXN0X3Byb3AgaW4gdGVzdF9wcm9w
ZXJ0aWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCh0ZXN0X3Byb3AgaW4gY29udmVy
dGVkWzFdKSwgJ1Byb3BlcnR5ICcgKyB0ZXN0X3Byb3AgKyAnIG5vdCBmb3VuZCBpbiBjb252ZXJ0
ZWQgZG9jJykKKworICAgIGRlZiBnZW5lcmF0ZVRlc3RDb250ZW50KHNlbGYsIGZ1bGxfcHJvcF9s
aXN0LCBudW1fdGVzdF9wcm9wZXJ0aWVzLCBodG1sKToKKyAgICAgICAgIiIiIEdlbmVyYXRlcyBh
IHJhbmRvbSBsaXN0IG9mIHVuaXF1ZSBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0g
cHJlZml4IGFuZCBpbnNlcnRzIHRoZW0gaW50byBodG1sIGNvbnRlbnQgdGhhdCdzIGJlZW4gdG9r
ZW5pemVkIHVzaW5nIFwnQHRlc3RYWEBcJyBzeW50YXggIiIiCisKKyAgICAgICAgdGVzdF9wcm9w
ZXJ0aWVzID0gW10KKworICAgICAgICAjIEdyYWIgYSByYW5kb20gYnVuY2ggb2YgMjAgdW5pcXVl
IHByb3BlcnRpZXMgcmVxdWlyaW5nIHByZWZpeGVzIHRvIHRlc3Qgd2l0aAorICAgICAgICBjb3Vu
dCA9IDAKKyAgICAgICAgd2hpbGUgY291bnQgPCBudW1fdGVzdF9wcm9wZXJ0aWVzOgorICAgICAg
ICAgICAgaWR4ID0gcmFuZGludCgwLCBsZW4oZnVsbF9wcm9wX2xpc3QpIC0gMSkKKyAgICAgICAg
ICAgIGlmIG5vdChmdWxsX3Byb3BfbGlzdFtpZHhdIGluIHRlc3RfcHJvcGVydGllcyk6CisgICAg
ICAgICAgICAgICAgdGVzdF9wcm9wZXJ0aWVzLmFwcGVuZChmdWxsX3Byb3BfbGlzdFtpZHhdKQor
ICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKworICAgICAgICAjIFJlcGxhY2UgdGhlIHRva2Vu
cyBpbiB0aGUgdGVzdGh0bWwgd2l0aCB0aGUgdGVzdCBwcm9wZXJ0aWVzLiBXYWxrIGJhY2t3YXJk
CisgICAgICAgICMgdGhyb3VnaCB0aGUgbGlzdCB0byByZXBsYWNlIHRoZSBkb3VibGUtZGlnaXQg
dG9rZW5zIGZpcnN0CisgICAgICAgIGlkeCA9IGxlbih0ZXN0X3Byb3BlcnRpZXMpIC0gMQorICAg
ICAgICB3aGlsZSBpZHggPj0gMDoKKyAgICAgICAgICAgICMgVXNlIHRoZSB1bnByZWZpeGVkIHZl
cnNpb24KKyAgICAgICAgICAgIHRlc3RfcHJvcCA9IHRlc3RfcHJvcGVydGllc1tpZHhdLnJlcGxh
Y2UoJy13ZWJraXQtJywgJycpCisgICAgICAgICAgICAjIFJlcGxhY2UgdGhlIHRva2VuCisgICAg
ICAgICAgICBodG1sID0gaHRtbC5yZXBsYWNlKCdAdGVzdCcgKyBzdHIoaWR4KSArICdAJywgdGVz
dF9wcm9wKQorICAgICAgICAgICAgaWR4IC09IDEKKworICAgICAgICByZXR1cm4gKHRlc3RfcHJv
cGVydGllcywgaHRtbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfaW1wb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVy
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NDE3MjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBA
IC0wLDAgKzEsNDc3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMp
IDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAg
ICBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GCisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKworIiIiCisgVGhpcyBzY3JpcHQgaW1w
b3J0cyBhIGRpcmVjdG9yeSBvZiBXM0MgQ1NTIHRlc3RzIGludG8gV2ViS2l0LgorCisgWW91IG11
c3QgaGF2ZSBjaGVja2VkIG91dCB0aGUgVzNDIHJlcG9zaXRvcnkgdG8geW91ciBsb2NhbCBkcml2
ZS4KKworIFRoaXMgc2NyaXB0IHdpbGwgaW1wb3J0IHRoZSB0ZXN0cyBpbnRvIFdlYktpdCBmb2xs
b3dpbmcgdGhlc2UgcnVsZXM6CisKKyAgICAtIE9ubHkgdGVzdHMgdGhhdCBhcmUgYXBwcm92ZWQg
b3Igb2ZmaWNpYWxseSBzdWJtaXR0ZWQgYXdhaXRpbmcgcmV2aWV3IGFyZSBpbXBvcnRlZAorCisg
ICAgLSBBbGwgdGVzdHMgYXJlIGltcG9ydGVkIGludG8gTGF5b3V0VGVzdHMvY3Nzd2cKKworICAg
IC0gSWYgdGhlIHRlc3RzIGFyZSBhcHByb3ZlZCwgdGhleSdsbCBiZSBpbXBvcnRlZCBpbnRvIGEg
ZGlyZWN0b3J5IHRyZWUgdGhhdAorICAgICAgbWlycm9ycyB0aGUgQ1NTIE1lcmN1cmlhbCByZXBv
LiBGb3IgZXhhbXBsZSwgPGNzc3dnX3JlcG9fcm9vdD4vYXBwcm92ZWQvY3NzMi4xIGlzIGJyb3Vn
aHQgaW4KKyAgICAgIGFzIExheW91dFRlc3RzL2Nzc3dnL2FwcHJvdmVkL2NzczIuMSwgbWFpbnRh
aW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVyIHRoYXQKKworICAgIC0g
SWYgdGhlIHRlc3RzIGFyZSBzdWJtaXR0ZWQsIHRoZXknbGwgYmUgYnJvdWdodCBpbiBhcyBMYXlv
dXRUZXN0cy9jc3N3Zy9zdWJtaXR0ZWQgYW5kIHdpbGwgYWxzbworICAgICAgbWFpbnRhaW4gdGhl
aXIgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0LiBGb3IgZXhhbXBsZSwgZXZlcnl0aGlu
ZyB1bmRlcgorICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL2Fkb2JlL3N1Ym1p
dHRlZCBpcyBicm91Z2h0IGludG8gc3VibWl0dGVkLCBtaXJyb3JpbmcgaXRzCisgICAgICBkaXJl
Y3Rvcnkgc3RydWN0dXJlIGluIHRoZSBjc3N3ZyByZXBvCisKKyAgICAtIElmIHRoZSBpbXBvcnQg
ZGlyZWN0b3J5IHNwZWNpZmllZCBpcyBqdXN0IGEgY29udHJpYnV0b3IgZm9sZGVyLCBvbmx5IHRo
ZSBzdWJtaXR0ZWQgZm9sZGVyCisgICAgICBmb3IgdGhhdCBjb250cmlidXRvciBpcyBicm91Z2h0
IGluLiBGb3IgZXhhbXBsZSwgdG8gaW1wb3J0IGFsbCBvZiBNb3ppbGxhJ3MgdGVzdHMsIGVpdGhl
cgorICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEgb3IgPGNzc3dn
X3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEvc3VibWl0dGVkCisgICAgICB3aWxsIHdv
cmsgYW5kIGFyZSBlcXVpdmFsZW50CisKKyAgICAtIEZvciB0aGUgdGltZSBiZWluZywgdGhpcyBz
Y3JpcHQgd29uJ3Qgd29yayBpZiB5b3UgdHJ5IHRvIGltcG9ydCB0aGUgZnVsbCBzZXQgb2Ygc3Vi
bWl0dGVkCisgICAgICB0ZXN0cyB1bmRlciBjb250cmlidXRvcnMvKi9zdWJtaXR0ZWQuIFNpbmNl
IHRoZXNlIGFyZSBhd2FpdGluZyByZXZpZXcsIHRoaXMgaXMganVzdCBhIHNtYWxsCisgICAgICBj
b250cm9sIG1lY2hhbmlzbSB0byBlbmZvcmNlIGNhcmVmdWxseSBzZWxlY3Rpbmcgd2hhdCBub24t
YXBwcm92ZWQgdGVzdHMgYXJlIGltcG9ydGVkLgorICAgICAgSXQgY2FuIG9idmlvdXNseSBhbmQg
ZWFzaWx5IGJlIGNoYW5nZWQuCisKKyAgICAtIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5k
IGpzdGVzdCBhcmUgaW1wb3J0ZWQuIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhIC1hIG9y
IC0tYWxsCisgICAgICBhcmd1bWVudAorCisgICAgLSBBbHNvIGJ5IGRlZmF1bHQsIGlmIHRlc3Qg
ZmlsZXMgYnkgdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0IGluIHRoZSBkZXN0aW5hdGlvbiBk
aXJlY3RvcnksCisgICAgICB0aGV5IGFyZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBpZGVhIHRoYXQg
cnVubmluZyB0aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNoIGZpbGVzIHBlcmlvZGljYWxseS4KKyAg
ICAgIFRoaXMgY2FuIGFsc28gYmUgb3ZlcnJpZGRlbiBieSBhIC1uIG9yIC0tbm8tb3ZlcndyaXRl
IGZsYWcKKworICAgIC0gQWxsIGZpbGVzIGFyZSBjb252ZXJ0ZWQgdG8gd29yayBpbiBXZWJLaXQ6
CisgICAgICAgICAxLiAueGh0IGV4dGVuc2lvbnMgYXJlIGNoYW5nZWQgdG8gLnhodG1sIHRvIG1h
a2UgbmV3LXJ1bi13ZWJraXQtdGVzdHMgaGFwcHkKKyAgICAgICAgIDIuIFBhdGhzIHRvIHRlc3Ro
YXJuZXNzLmpzIGZpbGVzIGFyZSBtb2RpZmllZCBwb2ludCB0byBXZWJraXQncyBjb3B5IG9mIHRo
ZW0gaW4KKyAgICAgICAgICAgIExheW91dFRlc3RzL3Jlc291cmNlcywgdXNpbmcgdGhlIGNvcnJl
Y3QgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9jYXRpb24KKyAgICAgICAgIDMuIEFsbCBD
U1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtdmVuZG9yIHByZWZpeCBhcmUgcHJl
Zml4ZWQgLSB0aGlzIGN1cnJlbnQKKyAgICAgICAgICAgIGxpc3Qgb2Ygd2hhdCBuZWVkcyBwcmVm
aXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnRpZXMuaW4KKyAg
ICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93biBjb3B5IG9mIGl0cyByZWZlcmVuY2Ug
ZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9ucworICAgICAgICAgICAgbmV3LXJ1
bi13ZWJraXQtdGVzdHMgZXhwZWN0cworICAgICAgICAgNS4gSWYgYSBhIHJlZmVyZW5jZSBmaWxl
cyBsaXZlcyBvdXRzaWRlIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHRlc3QgdGhhdCB1c2VzIGl0LCBp
dCBpcyBjaGVja2VkCisgICAgICAgICAgICBmb3IgcGF0aHMgdG8gc3VwcG9ydCBmaWxlcyBhcyBp
dCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJlbnQgcmVsYXRpdmUgcG9zaXRpb24gdG8g
dGhlCisgICAgICAgICAgICB0ZXN0IGZpbGUgKGluIHRoZSBzYW1lIGRpcmVjdG9yeSkKKworICAg
ICAtIFVwb24gY29tcGxldGlvbiwgc2NyaXB0IG91dHB1dHMgdGhlIHRvdGFsIG51bWJlciB0ZXN0
cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVzdCB0eXBlCisKKyAgICAgLSBBbHNvIHVwb24g
Y29tcGxldGlvbiwgZWFjaCBkaXJlY3Rvcnkgd2hlcmUgZmlsZXMgYXJlIGltcG9ydGVkIHdpbGwg
aGF2ZSB3M2MtaW1wb3J0LmxvZyB3cml0dGVuCisgICAgICAgd2l0aCBhIHRpbWVzdGFtcCwgdGhl
IFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0IGlmIGF2YWlsYWJsZSwgdGhlIGxpc3Qgb2YgQ1NTIHBy
b3BlcnRpZXMgdXNlZCB0aGF0CisgICAgICAgcmVxdWlyZSBwcmVmaXhlcywgdGhlIGxpc3Qgb2Yg
aW1wb3J0ZWQgZmlsZXMsIGFuZCBndWlkYW5jZSBmb3IgZnV0dXJlIHRlc3QgbW9kaWZpY2F0aW9u
IGFuZAorICAgICAgIG1haW50ZW5hbmNlLgorCisgICAgIC0gT24gc3Vic2VxdWVudCBpbXBvcnRz
LCB0aGlzIGZpbGUgaXMgcmVhZCB0byBkZXRlcm1pbmUgaWYgZmlsZXMgaGF2ZSBiZWVuIHJlbW92
ZWQgaW4gdGhlIG5ld2VyIGNoYW5nZXNldHMuCisgICAgICAgVGhlIHNjcmlwdCByZW1vdmVzIHRo
ZXNlIGZpbGVzIGFjY29yZGluZ2x5LgorIiIiCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBtaW1l
dHlwZXMKK2Zyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgoraW1wb3J0IG9zCitpbXBv
cnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHB5
LnczYy50ZXN0X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNlcgorZnJvbSB3ZWJraXRweS53M2MudGVz
dF9jb252ZXJ0ZXIgaW1wb3J0IFRlc3RDb252ZXJ0ZXIKKworTEFZT1VUX1RFU1RTX0RJUkVDVE9S
WSA9ICdMYXlvdXRUZXN0cycKK0NTU1dHX0RJUkVDVE9SWSA9ICdjc3N3ZycKK1JFU09VUkNFU19E
SVJFQ1RPUlkgPSAncmVzb3VyY2VzJworQVBQUk9WRUQgPSAnYXBwcm92ZWQnCitTVUJNSVRURUQg
PSAnc3VibWl0dGVkJworVU5LTk9XTiA9ICd1bmtub3duJworTk9UX0FWQUlMQUJMRSA9ICdOb3Qg
QXZhaWxhYmxlJworCisKK2RlZiBtYWluKGFyZ3YsIF8sIHN0ZGVycik6CisKKyAgICBwYXJzZV9h
cmdzKCkKKyAgICBpbXBvcnRfZGlyID0gdmFsaWRhdGVfaW1wb3J0X2RpcmVjdG9yeSgpCisgICAg
dGVzdF9pbXBvcnRlciA9IFRlc3RJbXBvcnRlcihpbXBvcnRfZGlyLCBvcHRpb25zKQorICAgIHRl
c3RfaW1wb3J0ZXIuZG9faW1wb3J0KCkKKworCitkZWYgcGFyc2VfYXJncygpOgorCisgICAgZ2xv
YmFsIG9wdGlvbnMKKyAgICBnbG9iYWwgYXJncworCisgICAgcGFyc2VyID0gT3B0aW9uUGFyc2Vy
KHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIHczY190ZXN0X2RpcmVjdG9yeScpCisgICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0tbm8tb3ZlcndyaXRlJywKKyAgICAgICAgICAgICAg
ICAgICAgICAjYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0ZsYWcgdG8gcHJldmVudCBk
dXBsaWNhdGUgdGVzdCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIGV4aXN0aW5nIHRlc3RzLiBCeSBk
ZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0ZW4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctYScsICctLWFsbCcsCisgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVl
JywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J0ltcG9ydCBhbGwgdGVzdHMgaW5jbHVkaW5nIHJlZnRlc3RzLCBKUyB0ZXN0
cywgYW5kIG1hbnVhbC9waXhlbCB0ZXN0cy4gQnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0cyBhbmQg
SlMgdGVzdHMgYXJlIGltcG9ydGVkJykKKworICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5w
YXJzZV9hcmdzKCkKKworICAgIGlmIGxlbihhcmdzKSAhPSAxOgorICAgICAgICBwYXJzZXIuZXJy
b3IoJ0luY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzJykKKworCitkZWYgdmFsaWRhdGVfaW1w
b3J0X2RpcmVjdG9yeSgpOgorCisgICAgaW1wb3J0X2RpciA9IGFyZ3NbMF0KKworICAgICMgTWFr
ZSBzdXJlIHRoZSB3M2MgdGVzdCBkaXJlY3RvcnkgZXhpc3RzCisgICAgaWYgbm90IG9zLnBhdGgu
ZXhpc3RzKGltcG9ydF9kaXIpOgorICAgICAgICBzeXMuZXhpdCgnU291cmNlIGRpcmVjdG9yeSAl
cyBub3QgZm91bmQhJyAlIGltcG9ydF9kaXIpCisKKyAgICAjIE1ha2Ugc3VyZSB0aGUgdGVzdHMg
YXJlIG9mZmljaWFsbHkgc3VibWl0dGVkIHRvIHRoZSBXM0MsIGVpdGhlciBhcHByb3ZlZCBvcgor
ICAgICMgc3VibWl0dGVkIGZvbGxvd2luZyB0aGVpciBkaXJlY3RvcnkgbmFtaW5nIGNvbnZlbnRp
b25zCisgICAgaWYgaW1wb3J0X2Rpci5maW5kKEFQUFJPVkVEKSA9PSAtMSBhbmQgXAorICAgICAg
IGltcG9ydF9kaXIuZmluZChTVUJNSVRURUQpID09IC0xOgorICAgICAgICAjIElmIG5vdCBwb2lu
dGVkIGRpcmVjdGx5IHRvIHRoZSBhcHByb3ZlZCBkaXJlY3Rvcnkgb3IgdG8gYW55IHN1Ym1pdHRl
ZAorICAgICAgICAjIGRpcmVjdG9yeSwgY2hlY2sgZm9yIGEgc3VibWl0dGVkIHN1YmRpcmVjdG9y
eSBhbmQgZ28gd2l0aCB0aGF0CisgICAgICAgIGltcG9ydF9kaXIgPSBvcy5wYXRoLmpvaW4oaW1w
b3J0X2RpciwgJ3N1Ym1pdHRlZCcpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5w
YXRoLmpvaW4oaW1wb3J0X2RpcikpOgorICAgICAgICAgICAgc3lzLmV4aXQoJ1VuYWJsZSB0byBp
bXBvcnQgdGVzdHMgdGhhdCBhcmVuXCd0IGFwcHJvdmVkIG9yIHN1Ym1pdHRlZCB0byB0aGUgVzND
JykKKworICAgIHJldHVybiBpbXBvcnRfZGlyCisKKworY2xhc3MgVGVzdEltcG9ydGVyKG9iamVj
dCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlX2RpcmVjdG9yeSwgb3B0aW9ucyk6
CisgICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKKworICAgICAgICBzZWxmLnNvdXJjZV9k
aXJlY3RvcnkgPSBzb3VyY2VfZGlyZWN0b3J5CisgICAgICAgIHNlbGYud2Via2l0X3Jvb3QgPSBf
X2ZpbGVfXy5zcGxpdChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisgICAgICAgIHNlbGYuZGVz
dGluYXRpb25fZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBzZWxmLndlYmtp
dF9yb290LCBMQVlPVVRfVEVTVFNfRElSRUNUT1JZLCBDU1NXR19ESVJFQ1RPUlkpCisKKyAgICAg
ICAgc2VsZi5jaGFuZ2VzZXQgPSBOT1RfQVZBSUxBQkxFCisgICAgICAgIHNlbGYudGVzdF9zdGF0
dXMgPSBVTktOT1dOCisKKyAgICAgICAgc2VsZi5pbXBvcnRfbGlzdCA9IFtdCisKKyAgICBkZWYg
ZG9faW1wb3J0KHNlbGYpOgorICAgICAgICBzZWxmLnNjYW5fc291cmNlX2RpcmVjdG9yeShzZWxm
LnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgIHNlbGYuZ2V0X2NoYW5nZXNldCgpCisgICAgICAg
IHNlbGYuaW1wb3J0X3Rlc3RzKCkKKworICAgIGRlZiBnZXRfY2hhbmdlc2V0KHNlbGYpOgorICAg
ICAgICAiIiIgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBjdXJyZW50IGNoYW5nZXNldCBhbmQgcGFy
c2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZSBjaGFuZ2VzZXQuIElmIHRoYXQgZG9lc24ndCB3b3Jr
b3V0IGZvciBzb21lIHJlYXNvbiwgaXQganVzdCBiZWNvbWVzICdOb3QgQXZhaWxhYmxlJyAiIiIK
KworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEFzc3VtaW5nIE1lcmN1cmlhbCBpcyBzZXQg
dXAgb24gdGhlIHN5c3RlbSwgdHJ5IHRvIGdyYWIgdGhlIGNoYW5nZXNldCB3ZSdyZSBpbXBvcnRp
bmcKKyAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnaGcnLCAndGlwJ10sIGVu
dj1vcy5lbnZpcm9uLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBjd2Q9c2VsZi5zb3VyY2VfZGly
ZWN0b3J5KQorICAgICAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBwcm9jLnN0ZG91dC5yZWFkbGlu
ZXMoKVswXQorICAgICAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBzZWxmLmNoYW5nZXNldC5zcGxp
dCgnY2hhbmdlc2V0OicpWzFdCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgT2ggd2Vs
bCwgd2UgdHJpZWQKKyAgICAgICAgICAgIHNlbGYuY2hhbmdlc2V0ID0gJ05vdCBBdmFpbGFibGUn
CisKKyAgICBkZWYgc2Nhbl9zb3VyY2VfZGlyZWN0b3J5KHNlbGYsIGRpcmVjdG9yeSk6CisgICAg
ICAgICIiIiBXYWxrcyB0aGUgfGRpcmVjdG9yeXwgbG9va2luZyBmb3IgSFRNTCBmaWxlcyB0aGF0
IGFyZSBpbXBvcnRhYmxlIHRlc3RzLiAiIiIKKworICAgICAgICBmb3Igcm9vdCwgZGlycywgZmls
ZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgorCisgICAgICAgICAgICBwcmludCAnU2Nhbm5pbmcg
JyArIHJvb3QgKyAnLi4uJworICAgICAgICAgICAgdG90YWxfdGVzdHMgPSAwCisgICAgICAgICAg
ICByZWZ0ZXN0cyA9IDAKKyAgICAgICAgICAgIGpzdGVzdHMgPSAwCisKKyAgICAgICAgICAgICMg
SWdub3JlIGFueSByZXBvIHN0dWZmCisgICAgICAgICAgICBpZiAnLmdpdCcgaW4gZGlyczoKKyAg
ICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmdpdCcpCisgICAgICAgICAgICBpZiAnLmhnJyBp
biBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuaGcnKQorICAgICAgICAgICAg
IyBhcmNoaXZlIGFuZCBkYXRhIGRpcnMgYXJlIGludGVybmFsIGNzc3dnIHRoaW5ncyB0aGF0IGxp
dmUgaW4gZXZlcnkgYXBwcm92ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICBpZiAnZGF0YScgaW4g
ZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnZGF0YScpCisgICAgICAgICAgICBp
ZiAnYXJjaGl2ZScgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnYXJjaGl2
ZScpCisKKyAgICAgICAgICAgIGNvcHlfbGlzdCA9IFtdCisKKyAgICAgICAgICAgIGZvciBmaWxl
bmFtZSBpbiBmaWxlczoKKworICAgICAgICAgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2lu
KHJvb3QsIGZpbGVuYW1lKQorCisgICAgICAgICAgICAgICAgIyBPbmx5IGh0bWwgb3IgeG1sIGFy
ZSBjb25zaWRlcmVkIHRlc3RzCisgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMu
Z3Vlc3NfdHlwZShmdWxscGF0aCkKKyAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1p
bWV0eXBlWzBdKSBvciAneG1sJyBpbiBzdHIobWltZXR5cGVbMF0pOgorCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RfcGFyc2VyID0gVGVzdFBhcnNlcih2YXJzKG9wdGlvbnMpLCBmaWxlbmFtZT1m
dWxscGF0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmZvID0gdGVzdF9wYXJzZXIuYW5h
bHl6ZV90ZXN0KCkKKworICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0X2luZm8gaXMgTm9uZToK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAg
aWYgJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKToKKworICAgICAgICAgICAgICAgICAg
ICAgICAgcmVmdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMg
Kz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IG9zLnBhdGguYmFz
ZW5hbWUodGVzdF9pbmZvWyd0ZXN0J10pCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQWRk
IHRoZSByZWYgZmlsZSwgcmVuYW1pbmcgaXQgdG8gV2Via2l0J3Mgd2F5CisgICAgICAgICAgICAg
ICAgICAgICAgICAjIE5vdGU6IFRoZSBwcmVmZXJhYmxlIHdheSB0byBoYW5kbGUgdGhpcyB3b3Vs
ZCBiZSB0byBqdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIGFkZCBzdXBwb3J0
IGluIFdlYmtpdCdzIGhhcm5lc3MgdG8gcmVhZCBtZXRhZGF0YQorICAgICAgICAgICAgICAgICAg
ICAgICAgIyAgICAgICByYXRoZXIgdGhhbiByZWx5IG9uIGEgZmlsZSBuYW1pbmcgY29udmVudGlv
bi4gU2luY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgdGhlIENTU1dHIHRlc3Rz
IHN1cHBvcnQgbWFueTpvbmUgdGVzdHM6cmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIyAgICAgICBlbmFibGluZyBtZXRhZGF0YSBwYXJzaW5nIGluIG91ciBoYXJuZXNzIHdvdWxk
IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgcmVkdWNlIHRoZSBudW1iZXIg
b2YgZmlsZXMgY29waWVkIGluLiBBcyB0aGlzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAj
ICAgICAgIGltcGxlbWVudGVkIGhlcmUsIHdlIGFyZSBrbm93aW5nbHkgaW1wb3J0aW5nIG11bHRp
cGxlCisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIGNvcGllcyBvZiB0aGUgc2FtZSBy
ZWYgZmlsZXMgdG8gYWRoZXJlIHRvIFdlYmtpdCdzIHdheQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmVmX2ZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5hbWUpWzBdICsgJy1leHBl
Y3RlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlICs9IG9zLnBhdGguc3BsaXRl
eHQodGVzdF9iYXNlbmFtZSlbMV0KKworICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0
LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJlbmNlJ10sICdkZXN0JzogcmVmX2ZpbGV9
KQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3Rf
aW5mb1sndGVzdCddLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAgICAgICAgICAgICAg
ICAgIyBJZiB0aGVyZSBhcmUgcmVmIHN1cHBvcnQgZmlsZXMsIHRoZSBkZXN0aW5hdGlvbiBpcyBz
aG91bGQgbm93IGJlIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyB0
ZXN0IGZpbGUgYW5kIG5ldyBsb2NhdGlvbiBvZiB0aGUgcmVmIGZpbGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciBzdXBwb3J0X2ZpbGUgaW4gdGVzdF9pbmZvWydyZWZzdXBw
b3J0J106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQnVpbGQgdGhlIGNvcnJl
Y3Qgc291cmNlIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2Zp
bGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHRlc3RfaW5mb1sncmVmZXJlbmNlJ10p
LCBzdXBwb3J0X2ZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9m
aWxlID0gb3MucGF0aC5ub3JtcGF0aChzb3VyY2VfZmlsZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBLZWVwIHRoZSBkZXN0IGFzIGl0IHdhcworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0b19jb3B5ID0geydzcmMnOiBzb3VyY2VfZmlsZSwgJ2Rlc3QnOiBzdXBw
b3J0X2ZpbGV9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT25seSBhZGQgaXQg
b25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QodG9fY29weSBpbiBj
b3B5X2xpc3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0
LmFwcGVuZCh0b19jb3B5KQorCisgICAgICAgICAgICAgICAgICAgIGVsaWYgJ2pzdGVzdCcgaW4g
dGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGpzdGVzdHMgKz0gMQor
ICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVu
YW1lfSkKKworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAg
ICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFw
cGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAgICAg
ICAgICMgSWdub3JlIGRvdGZpbGVzIGFuZCByYW5kb20gcGVybCBzY3JpcHRzIHRoYXQgYXJlIGlu
IHNvbWUgZGlycworICAgICAgICAgICAgICAgIGVsaWYgbm90KGZpbGVuYW1lLnN0YXJ0c3dpdGgo
Jy4nKSkgYW5kIG5vdChmaWxlbmFtZS5lbmRzd2l0aCgnLnBsJykpOgorICAgICAgICAgICAgICAg
ICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogZnVsbHBhdGgsICdkZXN0JzogZmlsZW5hbWV9
KQorCisgICAgICAgICAgICBpZiB0b3RhbF90ZXN0cyA9PSAwOgorICAgICAgICAgICAgICAgICMg
SWYgdGhlcmUgYXJlIG5vIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5LCBza2lwIHRoZSBzdXBwb3J0
IGRpciB0aGF0IGxpdmVzIGluIGFsbAorICAgICAgICAgICAgICAgICMgb2YgdGhlICdhcHByb3Zl
ZCcgZm9sZGVycyBhcyBwYXJ0IG9mIHRoZSBhdXRvbWF0ZWQgYnVpbGQgc3lzdGVtCisgICAgICAg
ICAgICAgICAgaWYgJ3N1cHBvcnQnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgICAgIGRpcnMu
cmVtb3ZlKCdzdXBwb3J0JykKKworICAgICAgICAgICAgICAgIGlmIGxlbihjb3B5X2xpc3QpID4g
MDoKKyAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGFkZCB0aGlzIGRpcmVjdG9yeSB0byB0aGUg
bGlzdCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5pbXBvcnRfbGlzdC5hcHBlbmQoeydkaXJuYW1lJzogcm9vdCwgJ2NvcHlfbGlzdCc6IGNv
cHlfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jl
ZnRlc3RzJzogcmVmdGVzdHMsICdqc3Rlc3RzJzoganN0ZXN0cywgJ3RvdGFsX3Rlc3RzJzogdG90
YWxfdGVzdHN9KQorCisgICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToKKyAgICAgICAgIiIiIENv
cGllcyBhbmQgY29udmVydHMgdGhlIGZ1bGwgbGlzdCBvZiBpbXBvcnRhYmxlIHRlc3RzIGludG8g
V2Via2l0IGFuZCBsb2dzIHdoYXQgd2FzIGltcG9ydGVkIGluIGVhY2ggZGlyZWN0b3J5ICIiIgor
CisgICAgICAgICMgT25seSBzZXQgdXAgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBpZiB0aGVy
ZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgaWYgbGVuKHNlbGYuaW1wb3J0X2xpc3Qp
ID4gMDoKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfZGVzdGluYXRpb25fZGlyZWN0b3J5KCkKKwor
ICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKyAgICAgICAgdG90YWxfaW1wb3J0
ZWRfdGVzdHMgPSAwCisgICAgICAgIHRvdGFsX2ltcG9ydGVkX3JlZnRlc3RzID0gMAorICAgICAg
ICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzID0gMAorCisgICAgICAgIGZvciBkaXJfdG9fY29weSBp
biBzZWxmLmltcG9ydF9saXN0OgorCisgICAgICAgICAgICB0b3RhbF9pbXBvcnRlZF90ZXN0cyAr
PSBkaXJfdG9fY29weVsndG90YWxfdGVzdHMnXQorICAgICAgICAgICAgdG90YWxfaW1wb3J0ZWRf
cmVmdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3JlZnRlc3RzJ10KKyAgICAgICAgICAgIHRvdGFsX2lt
cG9ydGVkX2pzdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ2pzdGVzdHMnXQorCisgICAgICAgICAgICBw
cmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KKworICAgICAgICAgICAgaWYgbGVuKGRpcl90b19jb3B5
Wydjb3B5X2xpc3QnXSkgPiAwOgorCisgICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUgc3VicGF0
aCBzdGFydGluZyB3aXRoIHRoZSBhcHByb3ZlZC9zdWJtaXR0ZWQgZGlyZWN0b3J5CisgICAgICAg
ICAgICAgICAgb3JpZ19wYXRoID0gZGlyX3RvX2NvcHlbJ2Rpcm5hbWUnXQorICAgICAgICAgICAg
ICAgIHN0YXJ0ID0gb3JpZ19wYXRoLmZpbmQoc2VsZi50ZXN0X3N0YXR1cykKKyAgICAgICAgICAg
ICAgICBuZXdfc3VicGF0aCA9IG9yaWdfcGF0aFtzdGFydDpsZW4ob3JpZ19wYXRoKV0KKworICAg
ICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBuZXcgc3VicGF0aCB0byB0aGUgZGVzdGluYXRpb25f
ZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgbmV3X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5k
ZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQorCisgICAgICAgICAgICAgICAgIyBD
cmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9yaWVzIGlmIG5vdCB0aGVyZQorICAgICAg
ICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhuZXdfcGF0aCkpOgorICAgICAgICAgICAg
ICAgICAgICBvcy5tYWtlZGlycyhuZXdfcGF0aCkKKworICAgICAgICAgICAgICAgIGNvcGllZF9m
aWxlcyA9IFtdCisKKyAgICAgICAgICAgICAgICBmb3IgZmlsZV90b19jb3B5IGluIGRpcl90b19j
b3B5Wydjb3B5X2xpc3QnXToKKworICAgICAgICAgICAgICAgICAgICBvcmlnX2ZpbGVwYXRoID0g
b3MucGF0aC5ub3JtcGF0aChmaWxlX3RvX2NvcHlbJ3NyYyddKQorCisgICAgICAgICAgICAgICAg
ICAgICMgU2hvdWxkbid0IGJlIGFueSBkaXJlY3RvcmllcyBvbiB0aGUgbGlzdCwgYnV0IGNoZWNr
IHRvIGJlIHNhZmUKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihvcmlnX2Zp
bGVwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
ICAgICAgICAgIyBEb24ndCBjaG9rZSBpZiB0aGUgZmlsZSBjYW4ndCBiZSBmb3VuZAorICAgICAg
ICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3JpZ19maWxlcGF0aCkpOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6ICcgKyBvcmlnX2ZpbGVwYXRoICsg
JyBub3QgZm91bmQuIFBvc3NpYmxlIGVycm9yIGluIHRoZSB0ZXN0LicKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBBcHBlbmQgdGhlIGNv
cnJlY3QgZGVzdGluYXRpb24gZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgbmV3X2ZpbGVw
YXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkKKworICAg
ICAgICAgICAgICAgICAgICAjIENoYW5nZSBleHRlbnNpb24gdG8gd29yayBpbiB0aGUgV2ViS2l0
IGhhcm5lc3MKKyAgICAgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gbmV3X2ZpbGVwYXRo
LnJlcGxhY2UoJy54aHQnLCAnLnhodG1sJykKKworICAgICAgICAgICAgICAgICAgICAjIE1ha2Ug
dGhlIGRpcmVjdG9yaWVzIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0
aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxlcGF0aCkpKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShuZXdfZmlsZXBhdGgpKQorCisg
ICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIHRlc3RzIGlmIHNw
ZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb25zLm5vX292ZXJ3cml0ZSBpcyBU
cnVlIGFuZCBvcy5wYXRoLmV4aXN0cyhuZXdfZmlsZXBhdGgpOgorICAgICAgICAgICAgICAgICAg
ICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBleGlzdGluZyBmaWxlICcgKyBuZXdfZmls
ZXBhdGgKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICMgVE9ETzogTWF5YmUgZG9pbmcgYSBmaWxlIGRpZmYgaXMgaW4gb3JkZXIgaGVyZSBmb3IgZXhp
c3RpbmcgZmlsZXM/CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIEluIG90aGVyIHdv
cmRzLCB0aGVyZSdzIG5vIHNlbnNlIGluIG92ZXJ3cml0aW5nIGlkZW50aWNhbCBmaWxlcywgYnV0
CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZXJlJ3Mgbm8gaGFybSBpbiBjb3B5
aW5nIHRoZSBpZGVudGljYWwgdGhpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAn
SW1wb3J0aW5nOiAnICsgb3JpZ19maWxlcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgcHJp
bnQgJyAgICAgICBBczogJyArIG5ld19maWxlcGF0aAorCisgICAgICAgICAgICAgICAgICAgICMg
T25seSBodG1sLCB4bWwsIG9yIGNzcyBzaG91bGQgYmUgY29udmVydGVkCisgICAgICAgICAgICAg
ICAgICAgICMgVE9ETzogRXZlbnR1YWxseSwgc28gc2hvdWxkIGpzIHdoZW4gc3VwcG9ydCBpcyBh
ZGRlZCBmb3IgdGhpcyB0eXBlIG9mIGNvbnZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgbWlt
ZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmlnX2ZpbGVwYXRoKQorICAgICAgICAgICAg
ICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciBcCisgICAgICAgICAgICAg
ICAgICAgICAgICd4bWwnIGluIHN0cihtaW1ldHlwZVswXSkgIG9yIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBdKToKKworICAgICAgICAgICAgICAgICAg
ICAgICAgIyBDb252ZXJ0IGZvciBXZWJLaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZl
cnRlZF9maWxlID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5h
bWU9b3JpZ19maWxlcGF0aCkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29udmVydGVk
X2ZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFN0cmFpZ2h0IGNv
cHkgaWYgbm90aGluZydzIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaHV0
aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdyaXRlIG91dCB0
aGUgY29udmVydGVkIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZF9w
cm9wZXJ0aWVzLmV4dGVuZChzZXQoY29udmVydGVkX2ZpbGVbMF0pIC0gc2V0KHByZWZpeGVkX3By
b3BlcnRpZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUgPSBvcGVuKG5l
d19maWxlcGF0aCwgJ3cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3Jp
dGUoY29udmVydGVkX2ZpbGVbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Zmls
ZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
ICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorCisgICAg
ICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcy5hcHBlbmQobmV3X2ZpbGVwYXRoLnJlcGxhY2Uo
c2VsZi53ZWJraXRfcm9vdCwgJycpKQorCisgICAgICAgICAgICAgICAgIyBUYWtlIGNhcmUgb2Yg
YW55dGhpbmcgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgaW1wb3J0
CisgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfZGVsZXRlZF9maWxlcyhuZXdfcGF0aCwgY29w
aWVkX2ZpbGVzKQorCisgICAgICAgICAgICAgICAgIyBEcm9wIHNvbWUgaW5mbyBhYm91dCB3aGF0
IGp1c3QgaGFwcGVuZWQgaGVyZQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfaW1wb3J0X2xv
ZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhlZF9wcm9wZXJ0aWVzKQorCisgICAgICAg
IHByaW50ICdJbXBvcnQgY29tcGxldGUnCisKKyAgICAgICAgcHJpbnQgJ0lNUE9SVEVEICcgKyBz
dHIodG90YWxfaW1wb3J0ZWRfdGVzdHMpICsgJyBUT1RBTCBURVNUUycKKyAgICAgICAgcHJpbnQg
J0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMpICsgJyByZWZ0ZXN0cycK
KyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfanN0ZXN0cykg
KyAnIEpTIHRlc3RzJworICAgICAgICBwcmludCAnSW1wb3J0ZWQgJyArIHN0cih0b3RhbF9pbXBv
cnRlZF90ZXN0cyAtIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgLSB0b3RhbF9pbXBvcnRlZF9yZWZ0
ZXN0cykgKyAnIHBpeGVsL21hbnVhbCB0ZXN0cycKKworICAgIGRlZiBzZXR1cF9kZXN0aW5hdGlv
bl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIiBDcmVhdGVzIGEgZGVzdGluYXRpb24gZGly
ZWN0b3J5IHRoYXQgbWlycm9ycyB0aGF0IG9mIHRoZSBzb3VyY2UgYXBwcm92ZWQgb3Igc3VibWl0
dGVkIGRpcmVjdG9yeSAiIiIKKworICAgICAgICAjIFRoZSB0ZXN0IHN0YXR1cyBpcyBpbiB0aGUg
cGF0aCwgc28gZ3JhYiBpdAorICAgICAgICBzZWxmLmdldF90ZXN0X3N0YXR1cygpCisKKyAgICAg
ICAgIyBNaXJyb3IgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhlIGNzc3dnIHJlcG8gdW5k
ZXIgYXBwcm92ZWQvIG9yIHN1Ym1pdHRlZC8KKyAgICAgICAgc3RhcnQgPSBzZWxmLnNvdXJjZV9k
aXJlY3RvcnkuZmluZChzZWxmLnRlc3Rfc3RhdHVzKQorICAgICAgICBuZXdfc3VicGF0aCA9IHNl
bGYuc291cmNlX2RpcmVjdG9yeVtzdGFydDpsZW4oc2VsZi5zb3VyY2VfZGlyZWN0b3J5KV0KKwor
ICAgICAgICBkZXN0aW5hdGlvbl9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5h
dGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhkZXN0aW5hdGlvbl9kaXJlY3RvcnkpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVz
dGluYXRpb25fZGlyZWN0b3J5KQorCisgICAgICAgIHByaW50ICdUZXN0cyB3aWxsIGJlIGltcG9y
dGVkIGludG86ICcgKyBkZXN0aW5hdGlvbl9kaXJlY3RvcnkKKworICAgIGRlZiBnZXRfdGVzdF9z
dGF0dXMoc2VsZik6CisgICAgICAgICIiIiBTZXRzIHRoZSB0ZXN0IHN0YXR1cyB0byBlaXRoZXIg
J2FwcHJvdmVkJyBvciAnc3VibWl0dGVkJyAiIiIKKworICAgICAgICBzdGF0dXMgPSBVTktOT1dO
CisKKyAgICAgICAgaWYgc2VsZi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQoQVBQUk9WRUQpICE9IC0x
OgorICAgICAgICAgICAgc3RhdHVzID0gQVBQUk9WRUQKKyAgICAgICAgZWxpZiBzZWxmLnNvdXJj
ZV9kaXJlY3RvcnkuZmluZChTVUJNSVRURUQpICE9IC0xOgorICAgICAgICAgICAgc3RhdHVzID0g
U1VCTUlUVEVECisKKyAgICAgICAgc2VsZi50ZXN0X3N0YXR1cyA9IHN0YXR1cworCisgICAgZGVm
IHJlbW92ZV9kZWxldGVkX2ZpbGVzKHNlbGYsIGltcG9ydF9kaXJlY3RvcnksIG5ld19maWxlX2xp
c3QpOgorICAgICAgICAiIiIgUmVhZHMgYW4gaW1wb3J0IGxvZyBpbiB8aW1wb3J0X2RpcmVjdG9y
eXwgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSB8bmV3X2ZpbGVfbGlzdHwgYW5kIHJlbW92ZXMgZmls
ZXMgdGhhdCBhcmUgbm90IGluIHRoZSBuZXcgbGlzdCAiIiIKKworICAgICAgICBwcmV2aW91c19m
aWxlX2xpc3QgPSBbXQorCisgICAgICAgICMgRmlyc3QgY2hlY2sgaWYgdGhlcmUgd2FzIGEgcHJl
dmlvdXMgaW1wb3J0IGhlcmUgLSB0aGVyZSBzaG91bGQgYmUgYSBsb2cKKyAgICAgICAgaW1wb3J0
X2xvZ19maWxlID0gb3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1wb3J0Lmxv
ZycpCisgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhpbXBvcnRfbG9nX2ZpbGUpKToKKyAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKGltcG9ydF9sb2df
ZmlsZSwgJ3InKQorICAgICAgICBjb250ZW50cyA9IGltcG9ydF9sb2cucmVhZGxpbmVzKCkKKwor
ICAgICAgICAjIFB1bGwgbG9nIHRoZSBsaXN0IG9mIGZpbGVzIGZyb20gdGhlIHByZXZpb3VzIGlt
cG9ydAorICAgICAgICBpZiAnTGlzdCBvZiBmaWxlc1xuJyBpbiBjb250ZW50czoKKyAgICAgICAg
ICAgIGxpc3RfaWR4ID0gY29udGVudHMuaW5kZXgoJ0xpc3Qgb2YgZmlsZXM6XG4nKSArIDEKKyAg
ICAgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IGNvbnRlbnRzW2xpc3RfaWR4Ol0KKyAgICAg
ICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IG1hcChsYW1iZGEgczogcy5zdHJpcCgpLCBwcmV2
aW91c19maWxlX2xpc3QpCisKKyAgICAgICAgZGVsZXRlZF9maWxlcyA9IHNldChwcmV2aW91c19m
aWxlX2xpc3QpIC0gc2V0KG5ld19maWxlX2xpc3QpCisKKyAgICAgICAgIyBMb29wIHRocm91Z2gg
YW5kIHJlbW92ZSB0aGVtIGFsbAorICAgICAgICBmb3IgZGVsZXRlZF9maWxlIGluIGRlbGV0ZWRf
ZmlsZXM6CisgICAgICAgICAgICBwcmludCAnRGVsZXRpbmcgZmlsZSByZW1vdmVkIGZyb20gdGhl
IFczQyByZXBvOicgKyBkZWxldGVkX2ZpbGUKKyAgICAgICAgICAgIGRlbGV0ZWRfZmlsZSA9IG9z
LnBhdGguam9pbihzZWxmLndlYmtpdF9yb290LCBkZWxldGVkX2ZpbGUpCisgICAgICAgICAgICBv
cy5yZW1vdmUoZGVsZXRlZF9maWxlKQorCisgICAgICAgIGltcG9ydF9sb2cuY2xvc2UoKQorCisg
ICAgZGVmIHdyaXRlX2ltcG9ydF9sb2coc2VsZiwgaW1wb3J0X2RpcmVjdG9yeSwgZmlsZV9saXN0
LCBwcm9wX2xpc3QpOgorICAgICAgICAiIiIgV3JpdGVzIGEgdzNjLWltcG9ydC5sb2cgZmlsZSBp
biBlYWNoIGRpcmVjdG9yeSB3aXRoIGltcG9ydGVkIGZpbGVzLiAiIiIKKworICAgICAgICBub3cg
PSBkYXRldGltZS5kYXRldGltZS5ub3coKQorCisgICAgICAgICMgQ3JlYXRlIGEgbG9nIG9mIHRo
aXMgaW1wb3J0IHdpdGggYWxsIHNvcnRzIG9mIGdvb2QgaW5mb3JtYXRpb24KKyAgICAgICAgaW1w
b3J0X2xvZyA9IG9wZW4ob3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1wb3J0
LmxvZycpLCAndycpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1RoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LlxuJykKKyAg
ICAgICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJraXQuIEluc3RlYWQsIHB1c2ggY2hhbmdlcyB0byB0aGUgVzNDIENTUyByZXBvOlxu
XG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdodHRwOi8vaGcuY3Nzd2cub3JnL3Rlc3Rc
blxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJraXQgdG8gcmVpbXBvcnRcblxuJykKKyAgICAgICAg
aW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlXG5cbicp
CisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAgICAg
aW1wb3J0X2xvZy53cml0ZSgnTGFzdCBJbXBvcnQ6ICcgKyBub3cuc3RyZnRpbWUoJyVZLSVtLSVk
ICVIOiVNJykgKyAnXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdXM0MgTWVyY3VyaWFs
IGNoYW5nZXNldDogJyArIHNlbGYuY2hhbmdlc2V0ICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xv
Zy53cml0ZSgnVGVzdCBzdGF0dXMgYXQgdGltZSBvZiBpbXBvcnQ6ICcgKyBzZWxmLnRlc3Rfc3Rh
dHVzICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4n
KQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6XG4nKQorICAgICAgICBpZiBsZW4ocHJvcF9saXN0KSA9PSAwOgorICAgICAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZSgnTm9uZVxuJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGZvciBwcm9wIGluIHByb3BfbGlzdDoKKyAgICAgICAgICAgICAgICBpbXBvcnRfbG9nLndyaXRl
KHByb3AgKyAnXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCctLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c
bicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xpc3Qgb2YgZmlsZXM6XG4nKQorICAgICAg
ICBmb3IgaXRlbSBpbiBmaWxlX2xpc3Q6CisgICAgICAgICAgICBpbXBvcnRfbG9nLndyaXRlKGl0
ZW0gKyAnXG4nKQorCisgICAgICAgIGltcG9ydF9sb2cuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4MDllZAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKQEAgLTAs
MCArMSw1MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
QkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVzdDIg
YXMgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS53M2MgaW1wb3J0IHRlc3RfY29udmVydGVyCitm
cm9tIHdlYmtpdHB5LnczYy50ZXN0X2ltcG9ydGVyIGltcG9ydCBUZXN0SW1wb3J0ZXIKKworV0VC
S0lUX1JPT1QgPSBfX2ZpbGVfXy5zcGxpdChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisKKwor
Y2xhc3MgVGVzdEltcG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVz
dF9JbXBvcnREaXJXaXRoTm9UZXN0cyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGRvX2ltcG9y
dCgpIHdpdGggYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBubyB0ZXN0cyAiIiIKKyAgICAgICAg
ZGlyX3dpdGhfbm9fdGVzdHMgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVy
dGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuU09VUkNFX1NVQkRJUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVy
LldFQkNPUkVfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUikKKworICAgICAgICBpbXBv
cnRlciA9IFRlc3RJbXBvcnRlcihkaXJfd2l0aF9ub190ZXN0cywgTm9uZSkKKyAgICAgICAgaW1w
b3J0ZXIuZG9faW1wb3J0KCkKKworCisgICAgIyBUT0RPOiBOZWVkIG1vcmUgdGVzdHMsIGJ1dCB3
aGF0IHRvIHVzZSBmb3IgdmFsaWQgc291cmNlIGRpcmVjdG9yeT8gTWFrZSBpdCBvbiB0aGUgZmx5
CisgICAgIyAgICAgICBhbmQgY2xlYW4gaXQgdXAgYWZ0ZXJ3YXJkPwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42ZTMyNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvdGVzdF9wYXJzZXIucHkKQEAgLTAsMCArMSwxNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAg
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisj
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgoraW1w
b3J0IG9zCitpbXBvcnQgcmUKKworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNv
dXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAgYXMgUGFyc2VyCisKKworY2xhc3MgVGVzdFBhcnNlcihv
YmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIGZpbGVuYW1lKToKKyAg
ICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucworICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmls
ZW5hbWUKKyAgICAgICAgc2VsZi50ZXN0X2RvYyA9IHNlbGYubG9hZF9maWxlKGZpbGVuYW1lKQor
ICAgICAgICBzZWxmLnJlZl9kb2MgPSBOb25lCisKKyAgICBkZWYgbG9hZF9maWxlKHNlbGYsIGZp
bGVfdG9fcGFyc2UpOgorICAgICAgICAiIiIgT3BlbnMgYW5kIHJlYWQgdGhlIHxmaWxlX3RvX3Bh
cnNlfCAiIiIKKyAgICAgICAgZG9jID0gTm9uZQorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
KGZpbGVfdG9fcGFyc2UpOgorICAgICAgICAgICAgZiA9IG9wZW4oZmlsZV90b19wYXJzZSkKKyAg
ICAgICAgICAgIGh0bWwgPSBmLnJlYWQoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAg
ICAgICAgIGRvYyA9IFBhcnNlcihodG1sKQorCisgICAgICAgIHJldHVybiBkb2MKKworICAgIGRl
ZiBhbmFseXplX3Rlc3Qoc2VsZiwgdGVzdF9jb250ZW50cz1Ob25lLCByZWZfY29udGVudHM9Tm9u
ZSk6CisgICAgICAgICIiIiBBbmFseXplcyBhIGZpbGUgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgYSB0
ZXN0LCB3aGF0IHR5cGUgb2YgdGVzdCwgYW5kIHdoYXQgcmVmZXJlbmNlIG9yIHN1cHBvcnQgZmls
ZXMgaXQgcmVxdWlyZXMuIFJldHVybnMgYWxsIG9mIHRoZSB0ZXN0IGluZm8gIiIiCisKKyAgICAg
ICAgdGVzdF9pbmZvID0gTm9uZQorCisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgTm9uZSBh
bmQgc2VsZi50ZXN0X2RvYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHRlc3RfaW5mbwor
CisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxm
LnRlc3RfZG9jID0gUGFyc2VyKHRlc3RfY29udGVudHMpCisKKyAgICAgICAgaWYgcmVmX2NvbnRl
bnRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5yZWZfZG9jID0gUGFyc2VyKHJlZl9j
b250ZW50cykKKworICAgICAgICAjIEZpcnN0IGNoZWNrIGlmIGl0J3MgYSByZWZ0ZXN0CisgICAg
ICAgIG1hdGNoZXMgPSBzZWxmLmdldF9yZWZ0ZXN0cyhUcnVlKQorICAgICAgICBpZiBsZW4obWF0
Y2hlcykgIT0gMDoKKworICAgICAgICAgICAgaWYgbGVuKG1hdGNoZXMpID4gMToKKyAgICAgICAg
ICAgICAgICBwcmludCAnV2FybmluZzogV2Via2l0IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUg
cmVmZXJlbmNlcy4gSW1wb3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5lZCBpbiAnICsgb3MucGF0
aC5iYXNlbmFtZShzZWxmLmZpbGVuYW1lKQorCisgICAgICAgICAgICByZWZfZmlsZSA9IG9zLnBh
dGguam9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5maWxlbmFtZSksIG1hdGNoZXNbMF1bJ2hyZWYn
XSkKKyAgICAgICAgICAgIGlmIHNlbGYucmVmX2RvYyBpcyBOb25lOgorICAgICAgICAgICAgICAg
IHNlbGYucmVmX2RvYyA9IHNlbGYubG9hZF9maWxlKHJlZl9maWxlKQorCisgICAgICAgICAgICB0
ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAncmVmZXJlbmNlJzogcmVmX2ZpbGV9
CisKKyAgICAgICAgICAgICMgSWYgdGhlIHJlZiBmaWxlIHBhdGggaXMgcmVsYXRpdmUsIHdlIG5l
ZWQgdG8gY2hlY2sgaXQgZm9yIHJlbGF0aXZlIHBhdGhzCisgICAgICAgICAgICAjIGJlY2F1c2Ug
d2hlbiBpdCBsYW5kcyBpbiBXZWJraXQsIGl0IHdpbGwgYmUgbW92ZWQgZG93biBpbnRvIHRoZSB0
ZXN0IGRpcgorICAgICAgICAgICAgIyBOb3RlOiBUaGUgdGVzdCBmaWxlcyB0aGVtc2VsdmVzIGFy
ZSBub3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxlcworICAgICAgICAgICAgIyB0aGF0IGxpdmUg
b3V0c2lkZSB0aGVpciBkaXJlY3RvcmllcyBhcyBpdCdzIHRoZSBjb252ZW50aW9uIGluIHRoZSBD
U1NXRworICAgICAgICAgICAgIyB0byBwdXQgYWxsIHN1cHBvcnQgZmlsZXMgaW4gdGhlIHNhbWUg
ZGlyIG9yIHN1YmRpciBhcyB0aGUgdGVzdC4gQWxsIG5vbi10ZXN0CisgICAgICAgICAgICAjIGZp
bGVzIGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5IHRyZWUgYXJlIGF1dG9tYXRpY2FsbHkgY29waWVk
IGFzIHBhcnQgb2YgdGhlIGltcG9ydCBhcworICAgICAgICAgICAgIyB0aGV5IGFyZSBhc3N1bWVk
IHRvIGJlIHJlcXVpcmVkIHN1cHBvcnQgZmlsZXMgVGhlcmUgaXMgZXhhY3RseSBvbmUgY2FzZSBp
biB0aGUgZW50aXJlCisgICAgICAgICAgICAjIGNzczIuMSBzdWl0ZSB3aGVyZSBhdCB0ZXN0IGRl
cGVuZHMgb24gYSBmaWxlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LCB3aGlj
aAorICAgICAgICAgICAgIyBkZXBlbmRzIG9uIGFub3RoZXIgZmlsZSB0aGF0IGxpdmVzIG91dHNp
ZGUgb2YgaXRzIGRpcmVjdG9yeS4gVGhpcyBjb2RlIGNvdmVycyB0aGF0IGNhc2UgOikKKyAgICAg
ICAgICAgIGlmIG1hdGNoZXNbMF1bJ2hyZWYnXS5zdGFydHN3aXRoKCcuLicpOgorICAgICAgICAg
ICAgICAgIHN1cHBvcnRGaWxlcyA9IHNlbGYuZ2V0X3N1cHBvcnRfZmlsZXMoc2VsZi5yZWZfZG9j
KQorICAgICAgICAgICAgICAgIHRlc3RfaW5mb1sncmVmc3VwcG9ydCddID0gc3VwcG9ydEZpbGVz
CisKKyAgICAgICAgIyBOZXh0LCBpZiBpdCdzIGEgSlMgdGVzdAorICAgICAgICBlbGlmIHNlbGYu
aXNfanN0ZXN0KCk6CisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVu
YW1lLCAnanN0ZXN0JzogVHJ1ZX0KKworICAgICAgICAjIE9yIGlmIHdlIGV4cGxpY2l0bHkgd2Fu
dCBldmVyeXRoaW5nCisgICAgICAgIGVsaWYgc2VsZi5vcHRpb25zWydhbGwnXSBpcyBUcnVlIGFu
ZCBcCisgICAgICAgICAgICAgbm90KCctcmVmJyBpbiBzZWxmLmZpbGVuYW1lKSBhbmQgXAorICAg
ICAgICAgICAgIG5vdCgncmVmZXJlbmNlJyBpbiBzZWxmLmZpbGVuYW1lKToKKyAgICAgICAgICAg
IHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWV9CisKKyAgICAgICAgIyBDb3VydGVz
eSBjaGVjayBhbmQgd2FybmluZyBpZiB0aGVyZSBhcmUgYW55IG1pc21hdGNoZXMKKyAgICAgICAg
bWlzbWF0Y2hlcyA9IHNlbGYuZ2V0X3JlZnRlc3RzKEZhbHNlKQorICAgICAgICBpZiBsZW4obWlz
bWF0Y2hlcykgIT0gMDoKKyAgICAgICAgICAgIHByaW50ICJXYXJuaW5nOiBXZWJraXQgZG9lcyBu
b3Qgc3VwcG9ydCBtaXNtYXRjaCByZWZlcmVuY2VzLiBJZ25vcmluZyBtaXNtYXRjaCBkZWZpbmVk
IGluICIgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZmlsZW5hbWUpCisKKyAgICAgICAgcmV0dXJu
IHRlc3RfaW5mbworCisgICAgZGVmIGdldF9yZWZ0ZXN0cyhzZWxmLCBmaW5kX21hdGNoKToKKyAg
ICAgICAgIiIiIFNlYXJjaGVzIGZvciBhbGwgcmVmZXJlbmNlIGxpbmtzIGluIHRoZSBmaWxlLiBJ
ZiB8ZmluZF9tYXRjaHwgaXMgc2VhcmNoZXMgZm9yIG1hdGNoZXMsIG90aGVyd2lzZSBmb3IgbWlz
bWF0Y2hlcyAiIiIKKworICAgICAgICBpZiBmaW5kX21hdGNoOgorICAgICAgICAgICAgcmV0dXJu
IHNlbGYudGVzdF9kb2MuZmluZEFsbChyZWw9J21hdGNoJykKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLnRlc3RfZG9jLmZpbmRBbGwocmVsPSdtaXNtYXRjaCcpCisKKyAg
ICBkZWYgaXNfanN0ZXN0KHNlbGYpOgorICAgICAgICAiIiIgU2VhcmNoZXMgdGhlIGZpbGUgZm9y
IHVzYWdlIG9mIFczQy1zdHlsZSB0ZXN0aGFybmVzcyBwYXRocyAiIiIKKworICAgICAgICBpZiBz
ZWxmLnRlc3RfZG9jLmZpbmQoc3JjPXJlLmNvbXBpbGUoJ1tcJ1wiL10/L3Jlc291cmNlcy90ZXN0
aGFybmVzcycpKSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zdXBwb3J0X2ZpbGVz
KHNlbGYsIGRvYyk6CisgICAgICAgICIiIiBTZWFyY2hlcyB0aGUgZmlsZSBmb3IgYWxsIHBhdGhz
IHNwZWNpZmllZCBpbiB1cmwoKSdzLCBocmVmIG9yIHNyYyBhdHRyaWJ1dGVzICIiIgorCisgICAg
ICAgIHN1cHBvcnRfZmlsZXMgPSBbXQorCisgICAgICAgIGlmIGRvYyBpcyBOb25lOgorICAgICAg
ICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMKKworICAgICAgICAjIExvb2sgZm9yIHRhZ3Mgd2l0
aCBzcmMgb3IgaHJlZiBhdHRyaWJ1dGVzCisgICAgICAgIHNyY19hdHRycyA9IGRvYy5maW5kQWxs
KHNyYz1yZS5jb21waWxlKCcuKicpKQorICAgICAgICBocmVmX2F0dHJzID0gZG9jLmZpbmRBbGwo
aHJlZj1yZS5jb21waWxlKCcuKicpKQorCisgICAgICAgICMgTG9vayBmb3IgdXJscworICAgICAg
ICB1cmxfcGF0dGVybiA9IHJlLmNvbXBpbGUoJ3VybFwoLipcKScpCisgICAgICAgIHVybHMgPSBb
XQorICAgICAgICBmb3IgdXJsIGluIGRvYy5maW5kQWxsKHRleHQ9dXJsX3BhdHRlcm4pOgorICAg
ICAgICAgICAgdXJsID0gcmUuc2VhcmNoKHVybF9wYXR0ZXJuLCB1cmwpCisgICAgICAgICAgICB1
cmwgPSByZS5zdWIoJ3VybFwoW1wnXCJdJywgJycsIHVybC5ncm91cCgwKSkKKyAgICAgICAgICAg
IHVybCA9IHJlLnN1YignW1wnXCJdXCknLCAnJywgdXJsKQorICAgICAgICAgICAgdXJscy5hcHBl
bmQodXJsKQorCisgICAgICAgIHNyY19wYXRocyA9IFtzcmNfdGFnWydzcmMnXSBmb3Igc3JjX3Rh
ZyBpbiBzcmNfYXR0cnNdCisgICAgICAgIGhyZWZfcGF0aHMgPSBbaHJlZl90YWdbJ2hyZWYnXSBm
b3IgaHJlZl90YWcgaW4gaHJlZl9hdHRyc10KKworICAgICAgICBwYXRocyA9IHNyY19wYXRocyAr
IGhyZWZfcGF0aHMgKyB1cmxzCisgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAg
ICAgIyBJZ25vcmUgaHR0cCBhbmQgbWFpbHRvIGxpbmtzCisgICAgICAgICAgICBpZiBub3QocGF0
aC5zdGFydHN3aXRoKCdodHRwOicpKSBhbmQgXAorICAgICAgICAgICAgICAgbm90KHBhdGguc3Rh
cnRzd2l0aCgnbWFpbHRvOicpKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0X2ZpbGVzLmFwcGVu
ZChwYXRoKQorCisgICAgICAgIHJldHVybiBzdXBwb3J0X2ZpbGVzCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NDRjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weQpAQCAtMCwwICsxLDI1
MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
ICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyMgU1VDSCBEQU1BR0UuCitpbXBvcnQgb3MKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0
IHN5cworaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LnczYy50
ZXN0X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNlcgorCisKK29wdGlvbnMgPSB7J2FsbCc6IEZhbHNl
LCAnbm9fb3ZlcndyaXRlJzogRmFsc2V9CisKKworY2xhc3MgVGVzdFBhcnNlclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2go
c2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIGJhc2ljIHJl
ZnRlc3Qgd2l0aCBvbmUgbWF0Y2ggbGluayBhbmQgbm8gbWlzbWF0Y2ggbGlua3MgIiIiCisKKyAg
ICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJncmVl
bi1ib3gtcmVmLnhodCIgLz4KKzwvaGVhZD4KKyIiIgorICAgICAgICB0ZXN0X3BhdGggPSAnL3Nv
bWUvbWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRl
c3RfcGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFu
YWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0
aGUgY29ycmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1
YWwodGVzdF9pbmZvLCBOb25lLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRl
c3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2lu
Zm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxm
LmFzc2VydFRydWUodGVzdF9pbmZvWydyZWZlcmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0aCks
ICdyZWZlcmVuY2UgcGF0aCBpcyBub3QgY29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8g
cmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVl
biBhbmFseXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplVGVzdFJlZnRl
c3RNdWx0aXBsZU1hdGNoZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3Qo
KSB1c2luZyBhIHJlZnRlc3Qgd2l0aCBtdWx0aXBsZSBtYXRjaCBsaW5rcyBhbmQgbm8gbWlzbWF0
Y2ggbGlua3MgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Cis8bGluayByZWw9
Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhy
ZWY9ImJsdWUtYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJvcmFuZ2Ut
Ym94LXJlZi54aHQiIC8+Cis8L2hlYWQ+CisiIiIKKyAgICAgICAgIyBDYXB0dXJlIHN0ZG91dCBm
b3IgdGhpcyB0ZXN0CisgICAgICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgb3V0cHV0
ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBzeXMuc3Rkb3V0ID0gb3V0cHV0CisKKyAg
ICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRl
dXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRo
ICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90
ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAgICAgICMgUmVzdG9yZSBzdGRvdXQK
KyAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3Jy
ZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0
X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxl
JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlz
KCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVy
ZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVm
c3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBw
b3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rl
c3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5
emVkIGFzIGEganN0ZXN0JykKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgdGhlIHdhcm5pbmcg
YWJvdXQgbXVsdGlwbGUgbWF0Y2hlcworICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0Lmdl
dHZhbHVlKCkuc3RhcnRzd2l0aCgnV2FybmluZycpLCAnbm8gd2FybmluZyBhYm91dCBtdWx0aXBs
ZSBtYXRjaGVzJykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE1hdGNoQW5kTWlz
bWF0Y2goc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHJl
ZnRlc3Qgd2l0aCBhIG9uZSBtYXRjaCBsaW5rIGFuZCBvbmUgbWlzbWF0Y2ggbGluayAiIiIKKwor
ICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9Imdy
ZWVuLWJveC1yZWYueGh0IiAvPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYmx1ZS1ib3gtcmVm
LnhodCIgLz4KKzxsaW5rIHJlbD0ibWlzbWF0Y2giIGhyZWY9Im9yYW5nZS1ib3gtbm90cmVmLnho
dCIgLz4KKzwvaGVhZD4KKyIiIgorICAgICAgICAjIENhcHR1cmUgc3Rkb3V0IGZvciB0aGlzIHRl
c3QKKyAgICAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICBvdXRwdXQgPSBTdHJpbmdJ
Ty5TdHJpbmdJTygpCisgICAgICAgIHN5cy5zdGRvdXQgPSBvdXRwdXQKKworICAgICAgICAjIEFu
YWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycK
KyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZp
bGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9j
b250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBSZXN0b3JlIHN0ZG91dAorICAgICAgICBz
eXMuc3Rkb3V0ID0gc3Rkb3V0CisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBp
bmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9u
ZSwgJ2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3Qn
IGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBu
b3QgZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3Rf
aW5mb1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGgg
aXMgbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBp
biB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMg
Zm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVz
dF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6ZWQgYXMgYSBq
c3Rlc3QnKQorCisgICAgICAgICMgVmVyaWZ5IHdlIGdvdCBtdWx0aXBsZSB3YXJuaW5ncworICAg
ICAgICB3YXJuaW5ncyA9IG91dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhsZW4od2FybmluZ3MpLCAyLCAnYWxsIHdhcm5pbmdzIHdlcmUgbm90
IGRpc3BsYXllZCcpCisgICAgICAgICMgVmVyaWZ5IHRoZSBib3RoIHdhcm5pbmdzIG1lbnRpb24g
dGhlIGlzc3VlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbXVsdGlwbGUgbWF0Y2hlcycsICdu
byB3YXJuaW5nIGFib3V0IG11bHRpcGxlIG1hdGNoZXMnKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ21pc21hdGNoJywgJ25vIHdhcm5pbmcgYWJvdXQgbWlzbWF0Y2hlcycpCisKKyAgICBkZWYg
dGVzdF9hbmFseXplVGVzdFJlZnRlc3RXaXRoUmVmU3VwcG9ydEZpbGVzKHNlbGYpOgorICAgICAg
ICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHRoYXQgaGFzIHJlZmVy
cyB0byBhIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUgb2YgdGhlIHRlc3RzIGRpcmVjdG9yeSBhbmQg
dGhlIHJlZmVyZW5jZSBmaWxlIGhhcyBwYXRocyB0byBvdGhlciBzdXBwb3J0IGZpbGVzICIiIgor
CisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9Im1hdGNo
IiBocmVmPSIuLi9yZWZlcmVuY2UvZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8L2hlYWQ+CisiIiIK
KyAgICAgICAgcmVmX2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIGhyZWY9InN1cHBvcnQvY3NzL3Jl
Zi1zdHlsZXNoZWV0LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4vc3Vw
cG9ydC9zb21lLWltYWdlLnBuZyIpCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2Pjxp
bWcgc3JjPSIuLi9zdXBwb3J0L2JsYWNrOTZ4OTYucG5nIiBhbHQ9IkltYWdlIGRvd25sb2FkIHN1
cHBvcnQgbXVzdCBiZSBlbmFibGVkIiAvPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorIiIiCisg
ICAgICAgICMgQW5hbHl6ZSB0aGUgdGVzdAorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFk
ZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0
aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVf
dGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCwgcmVmX2NvbnRlbnRzPXJlZl9odG1sKQorCisg
ICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0
JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
ZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZl
cmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmls
ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0
c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhl
cmUgc2hvdWxkIGJlIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGxlbih0ZXN0X2luZm9bJ3JlZnN1cHBvcnQnXSksIDMsICd0aGVyZSBz
aG91bGQgYmUgMyBzdXBwb3J0IGZpbGVzIGluIHRoaXMgcmVmZXJlbmNlJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQg
bm90IGhhdmUgYmVlbiBhbmFseXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFs
eXplSlNUZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcg
YSBqc3Rlc3QgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Cis8bGluayBocmVm
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0
L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+CisiIiIKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3Rf
cGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIo
b3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8g
PSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAgICAg
ICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5h
c3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9uZScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3Qg
ZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZmVyZW5jZScg
aW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVmZXJlbmNlIGZp
bGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8u
a2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVz
dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygp
LCAndGVzdCBzaG91bGQgYmUgYSBqc3Rlc3QnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVBpeGVs
VGVzdEFsbFRydWUoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2lu
ZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rlc3Qgd2l0aCBhbGw9RmFs
c2UgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5D
U1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIg
dGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFU
QVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVOVCBP
RiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBTZXQgb3B0aW9ucyB0byAn
YWxsJyBzbyB0aGlzIGdldHMgZm91bmQKKyAgICAgICAgb3B0aW9uc1snYWxsJ10gPSBUcnVlCisK
KyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9t
YWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9w
YXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6
ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBj
b3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0
ZXN0X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmls
ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtl
eXMoKSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUg
c2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxk
IG5vdCBiZSBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsRmFs
c2Uoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHRlc3Qg
dGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rlc3QsIHdpdGggLWFsbD1GYWxzZSAiIiIK
KworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0
OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0i
TkFNRV9PRl9BVVRIT1IiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NT
IEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QK
KzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIFNldCBhbGwgdG8gZmFsc2Ugc28gdGhp
cyBnZXRzIHNraXBwZWQKKyAgICAgICAgb3B0aW9uc1snYWxsJ10gPSBGYWxzZQorCisgICAgICAg
ICMgQW5hbHl6ZSB0aGUgdGVzdAorICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVwL3Bh
dGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdz
b21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCh0
ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVjdCB0
ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9pbmZvLCBO
b25lLCAndGVzdCBzaG91bGQgaGF2ZSBiZWVuIHNraXBwZWQnKQorCisgICAgZGVmIHRlc3RfYW5h
bHl6ZU5vbkhUTUxGaWxlKHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkg
d2l0aCBhIGZpbGUgdGhpcyBpc24ndCBodG1sICh0aGlzIG9uZSEpICIiIgorCisgICAgICAgICMg
VHJ5IHRvIGFuYWx5emUgdGhlIHNjcmlwdCBmaWxlIHdlJ3JlIHRlc3RpbmcgKGhvdyBtZXRhKQor
ICAgICAgICB0ZXN0X3BhcnNlcl9weV9maWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFt
ZShfX2ZpbGVfXyksICd0ZXN0X3BhcnNlci5weScpCisKKyAgICAgICAgIyBBbmFseXplIHRoZSBm
aWxlCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXJzZXJfcHlf
ZmlsZSkKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCgpCisKKyAgICAg
ICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ25vIHRlc3RzIHNob3VsZCBoYXZlIGJlZW4g
Zm91bmQgaW4gdGhpcyBmaWxlJykK
</data>
<flag name="review"
          id="221790"
          type_id="1"
          status="+"
          setter="dpranke"
    />
    <flag name="commit-queue"
          id="221789"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200462</attachid>
            <date>2013-05-03 12:30:44 -0700</date>
            <delta_ts>2013-05-09 15:02:39 -0700</delta_ts>
            <desc>Attempting to fix the __init__.py issue</desc>
            <filename>bug111513-05-03-13.patch</filename>
            <type>text/plain</type>
            <size>71694</size>
            <attacher name="Rebecca Hauck">rhauck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMDY1
MzZmLi42YzQwNTNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTMtMDUtMDEgIFJlYmVjY2EgSGF1Y2sgIDxyaGF1
Y2tAYWRvYmUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFByYW5rZS4KKworICAgICAgICBTY3JpcHQg
dG8gYXV0b21hdGUgdGhlIGltcG9ydCBvZiBXM0MgdGVzdHMgaW50byBXZWJLaXQuIAorICAgICAg
ICBGb3IgdGhlIGZ1bGwgZGVzY3JpcHRpb24gb2YgaG93IGl0IHdvcmtzLCBzZWUgdGhlIGNvbW1l
bnRzCisgICAgICAgIGF0IHRoZSB0b3Agb2YgdGVzdF9pbXBvcnRlci5weS4KKworICAgICAgICAq
IFNjcmlwdHMvaW1wb3J0LXczYy10ZXN0czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS93M2MvX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfY29udmVydGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIpOgor
ICAgICAgICAoVGVzdENvbnZlcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0Q29udmVydGVy
LmxvYWRfcHJlZml4ZWRfcHJvcF9saXN0KToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIubG9hZF9m
aWxlKToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KToKKyAgICAg
ICAgKFRlc3RDb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19wYXRocyk6CisgICAgICAgIChU
ZXN0Q29udmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgIChUZXN0
Q29udmVydGVyLnNjcnViX3VucHJlZml4ZWRfcHJvcHMpOgorICAgICAgICAoVGVzdENvbnZlcnRl
ci5yZXBsYWNlX3RhZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252
ZXJ0ZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QpOgor
ICAgICAgICAoVGVzdENvbnZlcnRlclRlc3QudGVzdExvYWRQcmVmaXhlZFByb3BMaXN0KToKKyAg
ICAgICAgKFRlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfY29udmVydEZvcldlYmtpdE5vdGhpbmdUb0Nv
bnZlcnQpOgorICAgICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkpOgorICAg
ICAgICAodGVzdF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNPbmx5KToKKyAgICAgICAgKHRlc3RfY29u
dmVydEZvcldlYmtpdEhhcm5lc3NBbmRQcm9wcyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRUZXN0
SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGllcyk6
CisgICAgICAgICh2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKToKKyAgICAgICAgKHZlcmlmeVByZWZp
eGVkUHJvcGVydGllcyk6CisgICAgICAgIChnZW5lcmF0ZVRlc3RDb250ZW50KToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5OiBBZGRlZC4KKyAgICAgICAg
KG1haW4pOgorICAgICAgICAocGFyc2VfYXJncyk6CisgICAgICAgICh2YWxpZGF0ZV9pbXBvcnRf
ZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlcik6CisgICAgICAgIChUZXN0SW1wb3J0
ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6CisgICAgICAg
IChUZXN0SW1wb3J0ZXIuZ2V0X2NoYW5nZXNldCk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuc2Nh
bl9zb3VyY2VfZGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5pbXBvcnRfdGVzdHMp
OgorICAgICAgICAoVGVzdEltcG9ydGVyLnNldHVwX2Rlc3RpbmF0aW9uX2RpcmVjdG9yeSk6Cisg
ICAgICAgIChUZXN0SW1wb3J0ZXIuZ2V0X3Rlc3Rfc3RhdHVzKToKKyAgICAgICAgKFRlc3RJbXBv
cnRlci5yZW1vdmVfZGVsZXRlZF9maWxlcyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3JpdGVf
aW1wb3J0X2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRl
cl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0KToKKyAgICAg
ICAgKFRlc3RJbXBvcnRlclRlc3QudGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHk6IEFkZGVkLgorICAgICAgICAo
VGVzdFBhcnNlcik6CisgICAgICAgIChUZXN0UGFyc2VyLl9faW5pdF9fKToKKyAgICAgICAgKFRl
c3RQYXJzZXIubG9hZF9maWxlKToKKyAgICAgICAgKFRlc3RQYXJzZXIuYW5hbHl6ZV90ZXN0KToK
KyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3JlZnRlc3RzKToKKyAgICAgICAgKFRlc3RQYXJzZXIu
aXNfanN0ZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXIuZ2V0X3N1cHBvcnRfZmlsZXMpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5OiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0KToKKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0LnRl
c3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2gpOgorICAgICAgICAodGVzdF9hbmFseXplVGVz
dFJlZnRlc3RNdWx0aXBsZU1hdGNoZXMpOgorICAgICAgICAodGVzdF9hbmFseXplVGVzdFJlZnRl
c3RNYXRjaEFuZE1pc21hdGNoKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0V2l0
aFJlZlN1cHBvcnRGaWxlcyk6CisgICAgICAgICh0ZXN0X2FuYWx5emVKU1Rlc3QpOgorICAgICAg
ICAodGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsVHJ1ZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVQ
aXhlbFRlc3RBbGxGYWxzZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVOb25IVE1MRmlsZSk6CisK
IDIwMTMtMDQtMzAgIEdsZW5uIEFkYW1zICA8Z2xlbm5Ac2t5bmF2LmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLiBBZGQgbXlzZWxmIHRvIHdhdGNobGlzdCBlbnRyaWVzLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiNzIwOTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMKQEAgLTAsMCArMSwz
NSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
ICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyMgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS53M2Mg
aW1wb3J0IHRlc3RfaW1wb3J0ZXIKKworCitzeXMuZXhpdCh0ZXN0X2ltcG9ydGVyLm1haW4oc3lz
LmFyZ3ZbMTpdLCBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93
M2MvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY2NWJl
ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL19faW5pdF9f
LnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBk
aXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMThm
YTIxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9j
b252ZXJ0ZXIucHkKQEAgLTAsMCArMSwyMDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisj
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIwor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgoraW1wb3J0IHJl
CitpbXBvcnQgb3MKKworZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1w
b3J0IEJlYXV0aWZ1bFNvdXAsIFRhZworCitTT1VSQ0VfU1VCRElSID0gJ1NvdXJjZScKK1dFQkNP
UkVfU1VCRElSID0gJ1dlYkNvcmUnCitDU1NfU1VCRElSID0gJ2NzcycKK0NTU19QUk9QRVJUWV9O
QU1FU19JTiA9ICdDU1NQcm9wZXJ0eU5hbWVzLmluJworTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSA9
ICdMYXlvdXRUZXN0cycKK1JFU09VUkNFU19ESVJFQ1RPUlkgPSAncmVzb3VyY2VzJworV0VCS0lU
X1JPT1QgPSBfX2ZpbGVfXy5zcGxpdChvcy5wYXRoLnNlcCArICdUb29scycpWzBdCisKKworY2xh
c3MgVGVzdENvbnZlcnRlcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAg
ICAgICBzZWxmLnByZWZpeGVkX3Byb3BlcnRpZXMgPSBzZWxmLmxvYWRfcHJlZml4ZWRfcHJvcF9s
aXN0KCkKKworICAgIGRlZiBsb2FkX3ByZWZpeGVkX3Byb3BfbGlzdChzZWxmKToKKyAgICAgICAg
IiIiIFJlYWRzIHRoZSBjdXJyZW50IGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRo
ZSAtd2Via2l0LSBwcmVmaXggZnJvbSBTb3VyY2UvV2ViQ29yZS9DU1MvQ1NTUHJvcGVydHlOYW1l
cy5pbiBhbmQgc3RvcmVzIHRoZW0gaW4gYW4gaW5zdGFuY2UgdmFyaWFibGUgIiIiCisKKyAgICAg
ICAgcHJlZml4ZWRfcHJvcF9saXN0ID0gW10KKworICAgICAgICAjIE9wZW4gQ1NTUHJvcGVydHlO
YW1lcy5pbiB0byBnZXQgdGhlIGN1cnJlbnQgbGlzdCBvZiB0aGluZ3MgcmVxdWlyaW5nIHByZWZp
eGVzCisgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgV0VCS0lUX1JP
T1QsIFNPVVJDRV9TVUJESVIsIFdFQkNPUkVfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU19TVUJESVIsIENTU19QUk9QRVJUWV9OQU1FU19JTikp
CisgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICBmb3IgbGluZSBpbiBsaW5l
czoKKyAgICAgICAgICAgICMgTG9vayBmb3IgYW55dGhpbmcgd2l0aCB0aGUgLXdlYmtpdC0gcHJl
Zml4CisgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgnXi13ZWJraXQtW1x3fC1dKicsIGxp
bmUpCisgICAgICAgICAgICBpZiBtYXRjaCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAj
IElnbm9yZSB0aGUgb25lcyB3aGVyZSBib3RoIHRoZSBwcmVmaXhlZCBhbmQgbm9uLXByZWZpeGVk
IHByb3BlcnR5CisgICAgICAgICAgICAgICAgIyBhcmUgc3VwcG9ydGVkIC0gZGVub3RlZCBieSAt
d2Via2l0LXNvbWUtcHJvcGVydHkgPSBzb21lLXByb3BlcnR5CisgICAgICAgICAgICAgICAgaWYg
bGVuKGxpbmUuc3BsaXQoJz0nKSkgPT0gMiBhbmQgXAorICAgICAgICAgICAgICAgICAgIGxpbmUu
c3BsaXQoJz0nKVsxXS5zdHJpcCgpIGluIGxpbmUuc3BsaXQoJz0nKVswXS5zdHJpcCgpOgorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIHByZWZpeGVkX3Byb3BfbGlzdC5hcHBlbmQobWF0Y2guZ3JvdXAoMCkpCisK
KyAgICAgICAgcmV0dXJuIHByZWZpeGVkX3Byb3BfbGlzdAorCisgICAgZGVmIGxvYWRfZmlsZShz
ZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIiBPcGVucyB0aGUgdGVzdCBmaWxlIHxmaWxlbmFt
ZXwgdG8gY29udmVydCAiIiIKKworICAgICAgICBmID0gb3BlbihmaWxlbmFtZSkKKyAgICAgICAg
Y29udGVudHMgPSBmLnJlYWQoKQorICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICByZXR1cm4g
Y29udGVudHMKKworICAgIGRlZiBjb252ZXJ0X2Zvcl93ZWJraXQoc2VsZiwgbmV3X3BhdGgsIGNv
bnRlbnRzPU5vbmUsIGZpbGVuYW1lPU5vbmUpOgorICAgICAgICAiIiIgQ29udmVydHMgYSBmaWxl
J3MgfGNvbnRlbnRzfCBzbyBpdCB3aWxsIGZ1bmN0aW9uIGNvcnJlY3RseSBpbiBpdHMgfG5ld19w
YXRofCBpbiBXZWJraXQuIFJldHVybnMgdGhlIGxpc3Qgb2YgcHJlZml4ZWQgQ1NTIHByb3BlcnRp
ZXMgYW5kIHRoZSBtb2RpZmllZCBjb250ZW50cy4iIiIKKworICAgICAgICBpZiBjb250ZW50cyBp
cyBOb25lIGFuZCBmaWxlbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwor
ICAgICAgICBpZiBjb250ZW50cyBpcyBOb25lOgorICAgICAgICAgICAgY29udGVudHMgPSBzZWxm
LmxvYWRfZmlsZShmaWxlbmFtZSkKKworICAgICAgICAjIEhhbmRsZSBwbGFpbiBvbGQgQ1NTIGZp
bGVzCisgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcuY3NzJyk6CisgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5zY3J1Yl91bnByZWZpeGVkX3Byb3BzKGNvbnRlbnRzKQorCisgICAgICAgICMg
T3RoZXJ3aXNlLCBwYXJzZSBpdCBhcyBpZiBIVE1MCisgICAgICAgIGRvYyA9IEJlYXV0aWZ1bFNv
dXAoY29udGVudHMpCisgICAgICAgIGpzdGVzdCA9IHNlbGYuY29udmVydF90ZXN0aGFybmVzc19w
YXRocyhkb2MsIG5ld19wYXRoKQorICAgICAgICBjb252ZXJ0ZWQgPSBzZWxmLmNvbnZlcnRfcHJl
Zml4ZWRfcHJvcGVydGllcyhkb2MpCisKKyAgICAgICAgaWYgbGVuKGNvbnZlcnRlZFswXSkgPiAw
IG9yIGpzdGVzdCBpcyBUcnVlOgorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZAorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBjb252ZXJ0X3Rlc3Ro
YXJuZXNzX3BhdGhzKHNlbGYsIGRvYywgbmV3X3BhdGgpOgorICAgICAgICAiIiIgVXBkYXRlIGxp
bmtzIHRvIHRlc3RoYXJuZXNzLmpzIGluIHRoZSBCZWF1dGlmdWxTb3VwIHxkb2N8IHRvIHBvaW50
IHRvIHRoZSBjb3B5IGluIHxuZXdfcGF0aHwuIFJldHVybnMgd2hldGhlciB0aGUgZG9jdW1lbnQg
d2FzIG1vZGlmaWVkLiIiIgorCisgICAgICAgICMgTG9vayBmb3IgdGhlIFczQy1zdHlsZSBwYXRo
IHRvIGFueSB0ZXN0aGFybmVzcyBmaWxlcyAtIHNjcmlwdHMgKC5qcykgb3IgbGlua3MgKC5jc3Mp
CisgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykK
KyAgICAgICAgc2NyaXB0X3RhZ3MgPSBkb2MuZmluZEFsbChzcmM9cGF0dGVybikKKyAgICAgICAg
bGlua190YWdzID0gZG9jLmZpbmRBbGwoaHJlZj1wYXR0ZXJuKQorICAgICAgICB0ZXN0aGFybmVz
c190YWdzID0gc2NyaXB0X3RhZ3MgKyBsaW5rX3RhZ3MKKworICAgICAgICBpZiBsZW4odGVzdGhh
cm5lc3NfdGFncykgIT0gMDoKKworICAgICAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIHJlbGF0aXZl
IHBhdGggZnJvbSB0aGUgbmV3IGRpcmVjdG9yeSB0byBMYXlvdXRUZXN0cy9yZXNvdXJjZXMKKyAg
ICAgICAgICAgIHJlc291cmNlc19wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCBXRUJL
SVRfUk9PVCwgTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwgUkVTT1VSQ0VTX0RJUkVDVE9SWSkKKyAg
ICAgICAgICAgIHJlc291cmNlc19yZWxwYXRoID0gb3MucGF0aC5yZWxwYXRoKHJlc291cmNlc19w
YXRoLCBuZXdfcGF0aCkKKworICAgICAgICAgICAgZm9yIHRhZyBpbiB0ZXN0aGFybmVzc190YWdz
OgorICAgICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgdGFnIHdpdGggdGhlIGNvcnJlY3QgcGF0
aAorICAgICAgICAgICAgICAgIGF0dHIgPSAnc3JjJworICAgICAgICAgICAgICAgIGlmIHRhZy5u
YW1lICE9ICdzY3JpcHQnOgorICAgICAgICAgICAgICAgICAgICBhdHRyID0gJ2hyZWYnCisKKyAg
ICAgICAgICAgICAgICAjIEJ1aWxkIGEgbmV3IHRhZyB3aXRoIHRoZSBjb3JyZWN0IHJlbGF0aXZl
IHBhdGgKKyAgICAgICAgICAgICAgICBvbGRfcGF0aCA9IHRhZ1thdHRyXQorICAgICAgICAgICAg
ICAgIG5ld190YWcgPSBUYWcoZG9jLCB0YWcubmFtZSwgdGFnLmF0dHJzKQorICAgICAgICAgICAg
ICAgIG5ld190YWdbYXR0cl0gPSByZS5zdWIocGF0dGVybiwgcmVzb3VyY2VzX3JlbHBhdGggKyAn
L3Rlc3RoYXJuZXNzJywgb2xkX3BhdGgpCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUg
ZG9jIHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFnKGRv
YywgdGFnLCBuZXdfdGFnKQorCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgY29udmVydF9wcmVmaXhlZF9w
cm9wZXJ0aWVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIiBTZWFyY2hlcyBhIEJlYXV0aWZ1bFNv
dXAgfGRvY3wgZm9yIGFueSBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHBy
ZWZpeCBhbmQgY29udmVydHMgdGhlbS4gUmV0dXJucyB0aGUgbGlzdCBvZiBjb252ZXJ0ZWQgcHJv
cGVydGllcyBhbmQgdGhlIG1vZGlmaWVkIGRvY3VtZW50IGFzIGEgc3RyaW5nICIiIgorCisgICAg
ICAgIGNvbnZlcnRlZF9wcm9wcyA9IFtdCisKKyAgICAgICAgIyBMb29rIGZvciBpbmxpbmUgYW5k
IGRvY3VtZW50IHN0eWxlcworICAgICAgICBpbmxpbmVfc3R5bGVzID0gZG9jLmZpbmRBbGwoc3R5
bGU9cmUuY29tcGlsZSgnLionKSkKKyAgICAgICAgc3R5bGVfdGFncyA9IGRvYy5maW5kQWxsKCdz
dHlsZScpCisgICAgICAgIGFsbF9zdHlsZXMgPSBpbmxpbmVfc3R5bGVzICsgc3R5bGVfdGFncwor
CisgICAgICAgIGZvciB0YWcgaW4gYWxsX3N0eWxlczoKKworICAgICAgICAgICAgIyBHZXQgdGhl
IHRleHQgd2hldGhlciBpbiBhIHN0eWxlIHRhZyBvciBzdHlsZSBhdHRyaWJ1dGUKKyAgICAgICAg
ICAgIHN0eWxlX3RleHQgPSAnJworICAgICAgICAgICAgaWYgdGFnLm5hbWUgPT0gJ3N0eWxlJzoK
KyAgICAgICAgICAgICAgICBpZiBsZW4odGFnLmNvbnRlbnRzKSA9PSAwOgorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgIHN0eWxlX3RleHQgPSB0YWcuY29udGVudHNbMF0KKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgc3R5bGVfdGV4dCA9IHRhZ1snc3R5bGUnXQorCisgICAgICAgICAgICAjIFNj
cnViIGl0IGZvciBwcm9wcyByZXF1aXJpbmcgcHJlZml4ZXMKKyAgICAgICAgICAgIHNjcnViYmVk
X3N0eWxlID0gc2VsZi5zY3J1Yl91bnByZWZpeGVkX3Byb3BzKHN0eWxlX3RleHQpCisKKyAgICAg
ICAgICAgICMgUmV3cml0ZSB0YWcgb25seSBpZiBjaGFuZ2VzIHdlcmUgbWFkZQorICAgICAgICAg
ICAgaWYgbGVuKHNjcnViYmVkX3N0eWxlWzBdKSA+IDA6CisgICAgICAgICAgICAgICAgY29udmVy
dGVkX3Byb3BzLmV4dGVuZChzY3J1YmJlZF9zdHlsZVswXSkKKworICAgICAgICAgICAgICAgICMg
QnVpbGQgYSBuZXcgdGFnIHdpdGggdGhlIG1vZGlmaWVkIHRleHQKKyAgICAgICAgICAgICAgICBu
ZXdfdGFnID0gVGFnKGRvYywgdGFnLm5hbWUsIHRhZy5hdHRycykKKyAgICAgICAgICAgICAgICBu
ZXdfdGFnLmluc2VydCgwLCBzY3J1YmJlZF9zdHlsZVsxXSkKKworICAgICAgICAgICAgICAgICMg
VXBkYXRlIHRoZSBkb2Mgd2l0aCB0aGUgbmV3IHRhZworICAgICAgICAgICAgICAgIHNlbGYucmVw
bGFjZV90YWcoZG9jLCB0YWcsIG5ld190YWcpCisKKyAgICAgICAgcmV0dXJuIChjb252ZXJ0ZWRf
cHJvcHMsIGRvYy5wcmV0dGlmeSgpKQorCisgICAgZGVmIHNjcnViX3VucHJlZml4ZWRfcHJvcHMo
c2VsZiwgdGV4dCk6CisgICAgICAgICIiIiBTZWFyY2hlcyB8dGV4dHwgZm9yIGluc3RhbmNlcyBv
ZiBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IGFuZCBhZGRzIHRoZSBw
cmVmaXguIFJldHVybnMgdGhlIGxpc3Qgb2YgY29udmVydGVkIHByb3BlcnRpZXMgYW5kIHRoZSBt
b2RpZmllZCBzdHJpbmcgIiIiCisKKyAgICAgICAgY29udmVydGVkX3Byb3BzID0gW10KKworICAg
ICAgICAjIFNwaW4gdGhyb3VnaCB0aGUgd2hvbGUgbGlzdCBvZiBwcmVmaXhlZCBwcm9wZXJ0aWVz
CisgICAgICAgIGZvciBwcmVmaXhlZF9wcm9wIGluIHNlbGYucHJlZml4ZWRfcHJvcGVydGllczoK
KworICAgICAgICAgICAgIyBQdWxsIHRoZSBwcmVmaXggb2ZmCisgICAgICAgICAgICB1bnByZWZp
eGVkX3Byb3AgPSBwcmVmaXhlZF9wcm9wLnJlcGxhY2UoJy13ZWJraXQtJywgJycpCisKKyAgICAg
ICAgICAgICMgTG9vayBmb3IgdGhlIHZhcmlvdXMgd2F5cyBpdCBtaWdodCBiZSBpbiB0aGUgQ1NT
CisgICAgICAgICAgICAjIE1hdGNoIHRoZSB0aGUgcHJvcGVydHkgcHJlY2VkZWQgYnkgZWl0aGVy
IHdoaXRlc3BhY2Ugb3IgbGVmdCBjdXJseSBicmFjZQorICAgICAgICAgICAgIyBvciBhdCB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgKGZvciBpbmxpbmUgc3R5bGUgYXR0cmlidXRlKQorICAg
ICAgICAgICAgcGF0dGVybiA9ICcoW1xze118XiknICsgdW5wcmVmaXhlZF9wcm9wICsgJyhccys6
fDopJworICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHBhdHRlcm4sIHRleHQpOgorICAgICAgICAg
ICAgICAgIHByaW50ICdjb252ZXJ0aW5nICcgKyB1bnByZWZpeGVkX3Byb3AgKyAnIC0+ICcgKyBw
cmVmaXhlZF9wcm9wCisgICAgICAgICAgICAgICAgY29udmVydGVkX3Byb3BzLmFwcGVuZChwcmVm
aXhlZF9wcm9wKQorICAgICAgICAgICAgICAgIHRleHQgPSByZS5zdWIocGF0dGVybiwgcHJlZml4
ZWRfcHJvcCArICc6JywgdGV4dCkKKworICAgICAgICAjIFRPRE86IEhhbmRsZSB0aGUgSlMgdmVy
c2lvbnMgb2YgdGhlc2UgcHJvcGVydGllcywgdG9vLgorCisgICAgICAgIHJldHVybiAoY29udmVy
dGVkX3Byb3BzLCB0ZXh0KQorCisgICAgZGVmIHJlcGxhY2VfdGFnKHNlbGYsIGRvYywgb2xkX3Rh
ZywgbmV3X3RhZyk6CisgICAgICAgICIiIiBJbnNlcnRzIGEgfG5ld190YWd8IGludG8gYSBCZWF1
dGlmdWxTb3VwIHxkb2N8IGFuZCByZW1vdmVzIHRoZSB8b2xkX3RhZ3wgIiIiCisKKyAgICAgICAg
IyBSZXBsYWNlIHRoZSBwcmV2aW91cyB0YWcgd2l0aCB0aGUgbmV3IG9uZQorICAgICAgICBpbmRl
eCA9IG9sZF90YWcucGFyZW50LmNvbnRlbnRzLmluZGV4KG9sZF90YWcpCisgICAgICAgIG9sZF90
YWcucGFyZW50Lmluc2VydChpbmRleCwgbmV3X3RhZykKKyAgICAgICAgb2xkX3RhZy5leHRyYWN0
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVy
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJf
dW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk4ODNiMAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVy
dGVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMzYxIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KworIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IKKyMgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KK2ltcG9y
dCBvcworZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQKK2ltcG9ydCByZQoraW1wb3J0IHVuaXR0
ZXN0MiBhcyB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291
cCBpbXBvcnQgQmVhdXRpZnVsU291cAorCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2NvbnZlcnRl
ciBpbXBvcnQgVGVzdENvbnZlcnRlcgorZnJvbSB3ZWJraXRweS53M2MgaW1wb3J0IHRlc3RfY29u
dmVydGVyCisKKworY2xhc3MgVGVzdENvbnZlcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgor
CisgICAgZGVmIHRlc3RMb2FkUHJlZml4ZWRQcm9wTGlzdChzZWxmKToKKyAgICAgICAgIiIiIFRl
c3RzIHRoYXQgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdl
YmtpdC0gcHJlZml4IGxvYWQgY29ycmVjdGx5ICIiIgorCisgICAgICAgICMgR2V0IHRoZSBmdWxs
IGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVydGllcworICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29u
dmVydGVyKCkKKyAgICAgICAgcHJvcF9saXN0ID0gY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRp
ZXMKKworICAgICAgICAjIFZlcmlmeSB3ZSBnb3QgcHJvcGVydGllcyBiYWNrCisgICAgICAgIHNl
bGYuYXNzZXJ0R3JlYXRlcihsZW4ocHJvcF9saXN0KSwgMCwgJ05vIHByZWZpeGVkIHByb3BlcnRp
ZXMgZm91bmQnKQorCisgICAgICAgICMgVmVyaWZ5IHRoZXkncmUgYWxsIHByZWZpeGVkCisgICAg
ICAgIGZvciBwcm9wIGluIHByb3BfbGlzdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
cm9wLnN0YXJ0c3dpdGgoJy13ZWJraXQtJykpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Vi
a2l0Tm90aGluZ1RvQ29udmVydChzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfZm9y
X3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgdGVzdCB0aGF0IGhhcyBub3RoaW5nIHRvIGNvbnZlcnQg
IiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
M0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKKyJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRt
bDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBU
RVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiCito
cmVmPSJtYWlsdG86RU1BSUwgT1IgaHR0cDovL0NPTlRBQ1RfUEFHRSIvPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJSRUxFVkFOVF9TUEVDX1NFQ1RJT04iLz4KKzxtZXRhIG5hbWU9ImFzc2VydCIg
Y29udGVudD0iVEVTVCBBU1NFUlRJT04iLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RB
VEFbCitDU1MgRk9SIFRFU1QKK11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK0NPTlRFTlQg
T0YgVEVTVAorPC9ib2R5PgorPC9odG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RD
b252ZXJ0ZXIoKQorCisgICAgICAgICMgVHJ5IHRvIGNvbnZlcnQgdGhlIGh0bWwKKyAgICAgICAg
Y29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdCgnL25vdGhpbmcvdG8vY29u
dmVydCcsIGNvbnRlbnRzPXRlc3RfaHRtbCwgZmlsZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQorCisg
ICAgICAgICMgVmVyaWZ5IG5vdGhpbmcgd2FzIGNvbnZlcnRlZAorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2FzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNv
bnZlcnRlZCcpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09ubHkoc2Vs
Zik6CisgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2lj
IEpTIHRlc3QgdGhhdCB1c2VzIHRlc3RoYXJuZXNzLmpzIG9ubHkgYW5kIGhhcyBubyBwcmVmaXhl
ZCBwcm9wZXJ0aWVzICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsg
aHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0i
dGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQor
CisgICAgICAgICMgQ3JlYXRlIHBhdGggdG8gYSBmYWtlIHRlc3QgZGlyZWN0b3J5CisgICAgICAg
IHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VC
S0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9jb252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXJuZXNzb25s
eScpCisKKyAgICAgICAgIyBDb252ZXJ0IHRoZSBodG1sCisgICAgICAgIGNvbnZlcnRlZCA9IGNv
bnZlcnRlci5jb252ZXJ0X2Zvcl93ZWJraXQodGVzdF9wYXRoLCBjb250ZW50cz10ZXN0X2h0bWws
IGZpbGVuYW1lPSdzb21lZmlsZS5odG1sJykKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNp
b24gaGFwcGVuZWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUs
ICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykKKworICAgICAgICAjIFZlcmlmeSB0aGF0IGJvdGgg
dGhlIGhhcm5lc3MgcGF0aHMgd2VyZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYu
dmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhjb252ZXJ0ZWRbMV0sIHRlc3RfcGF0aCwgMSwgMSkKKwor
ICAgICAgICAjIFZlcmlmeSBubyBwcm9wZXJ0aWVzIHdlcmUgY29udmVydGVkCisgICAgICAgIHNl
bGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKGNvbnZlcnRlZCwgW10pCisKKyAgICBkZWYgdGVz
dF9jb252ZXJ0Rm9yV2Via2l0UHJvcHNPbmx5KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29u
dmVydF9mb3Jfd2Via2l0KCkgdXNpbmcgYSB0ZXN0IHRoYXQgaGFzIDIgcHJlZml4ZWQgcHJvcGVy
dGllczogMSBpbiBhIHN0eWxlIGJsb2NrICsgMSBpbmxpbmUgc3R5bGUgIiIiCisKKyAgICAgICAg
dGVzdF9odG1sID0gIiIiPGh0bWw+Cis8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisKKyNibG9jazEgeyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKworPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxlPSJAdGVzdDFAOiBwcm9wdmFs
dWU7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorCisgICAgICAgIGNvbnZlcnRlciA9
IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgICMgQ3JlYXRlIHBhdGggdG8gYSBmYWtlIHRlc3Qg
ZGlyZWN0b3J5CisgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwg
dGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZl
cnRlci5DU1NfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdoYXJuZXNzYW5kcHJvcHMnKQorCisgICAgICAgICMgR2VuZXJhdGUgJiBpbnNlcnQg
dGhlIHRlc3QgcHJvcGVydGllcyBpbnRvIHRoZSB0ZXN0X2h0bWwKKyAgICAgICAgdGVzdF9jb250
ZW50ID0gc2VsZi5nZW5lcmF0ZVRlc3RDb250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0
aWVzLCAyLCB0ZXN0X2h0bWwpCisKKyAgICAgICAgIyBDb252ZXJ0IHRoZSBodG1sCisgICAgICAg
IGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X2Zvcl93ZWJraXQodGVzdF9wYXRoLCBjb250
ZW50cz10ZXN0X2NvbnRlbnRbMV0sIGZpbGVuYW1lPSdzb21lZmlsZS5odG1sJykKKworICAgICAg
ICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RF
cXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29udmVydGVkJykKKworICAgICAg
ICAjIFZlcmlmeSB0aGF0IGJvdGggdGhlIGhhcm5lc3MgcGF0aHMgYW5kIHByb3BlcnRpZXMgd2Vy
ZSBhbGwgY29udmVydGVkIGNvcnJlY3RseQorICAgICAgICBzZWxmLnZlcmlmeVRlc3RIYXJuZXNz
UGF0aHMoY29udmVydGVkWzFdLCB0ZXN0X3BhdGgsIDEsIDEpCisgICAgICAgIHNlbGYudmVyaWZ5
UHJlZml4ZWRQcm9wZXJ0aWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVm
IHRlc3RfY29udmVydEZvcldlYmtpdEhhcm5lc3NBbmRQcm9wcyhzZWxmKToKKyAgICAgICAgIiIi
IFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgSlMgdGVzdCB0aGF0IHVz
ZXMgdGVzdGhhcm5lc3MuanMgYW5kIHRlc3RoYXJuZXNzLmNzcyBhbmQgaGFzIDQgcHJlZml4ZWQg
cHJvcGVydGllczogMyBpbiBhIHN0eWxlIGJsb2NrICsgMSBpbmxpbmUgc3R5bGUgIiIiCisKKyAg
ICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+Cis8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisKKyNibG9jazEgeyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKyNibG9j
azIgeyBAdGVzdDFAOiBwcm9wdmFsdWU7IH0KKyNibG9jazMgeyBAdGVzdDJAOiBwcm9wdmFsdWU7
IH0KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxlPSJA
dGVzdDNAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAg
ICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRv
IGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4o
b3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNU
U19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnaGFybmVzc2FuZHByb3BzJykKKworICAgICAgICAjIEdlbmVy
YXRlICYgaW5zZXJ0IHRoZSB0ZXN0IHByb3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisgICAg
ICAgIHRlc3RfY29udGVudCA9IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIucHJl
Zml4ZWRfcHJvcGVydGllcywgNCwgdGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0aGUg
aHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRl
c3RfcGF0aCwgY29udGVudHM9dGVzdF9jb250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRt
bCcpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAgIHNl
bGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZlcnRl
ZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIGFuZCBw
cm9wZXJ0aWVzIHdlcmUgYWxsIGNvbnZlcnRlZCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi52ZXJp
ZnlUZXN0SGFybmVzc1BhdGhzKGNvbnZlcnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQorICAgICAg
ICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFsw
XSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRUZXN0SGFybmVzc1BhdGhzKHNlbGYpOgorICAgICAg
ICAiIiIgVGVzdHMgY29udmVydF90ZXN0aGFybmVzc19wYXRocygpIHdpdGggYSB0ZXN0IHRoYXQg
dXNlcyBhbGwgdGhyZWUgdGVzdGhhcm5lc3MgZmlsZXMgIiIiCisKKyAgICAgICAgIyBCYXNpYyB0
ZXN0IGNvbnRlbnQgdXNpbmcgYWxsIHRocmVlIHRlc3RoYXJuZXNzIGZpbGVzCisgICAgICAgIHRl
c3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5j
c3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorIiIiCisgICAgICAgIGNv
bnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgICMgQ3JlYXRlIHBhdGggdG8gYSBm
YWtlIHRlc3QgZGlyZWN0b3J5CisgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihvcy5w
YXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJ
UkVDVE9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X2NvbnZlcnRlci5DU1NfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0aGFybmVzc3BhdGhzJykKKworICAgICAgICAjIENvbnZlcnQg
dGhlIGh0bWwKKyAgICAgICAgZG9jID0gQmVhdXRpZnVsU291cCh0ZXN0X2h0bWwpCisgICAgICAg
IGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKGRvYywgdGVz
dF9wYXRoKQorCisgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5lZAorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY29udmVydGVkLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisK
KyAgICAgICAgIyBWZXJpZnkgYWxsIGdvdCBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNl
bGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhkb2MsIHRlc3RfcGF0aCwgMiwgMSkKKworICAgIGRl
ZiB0ZXN0X2NvbnZlcnRQcmVmaXhlZFByb3BlcnRpZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0
cyBjb252ZXJ0X3ByZWZpeGVkX3Byb3BlcnRpZXMoKSBmaWxlIHRoYXQgaGFzIDIwIHByb3BlcnRp
ZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXg6CisgICAgICAgIDEwIGluIG9uZSBzdHls
ZSBibG9jayArIDUgaW4gYW5vdGhlciBzdHlsZQorICAgICAgICBibG9jayArIDUgaW5saW5lIHN0
eWxlcywgaW5jbHVkaW5nIG9uZSB3aXRoIG11bHRpcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuCisg
ICAgICAgIFRoZSBwcm9wZXJ0aWVzIGluIHRoZSB0ZXN0IGNvbnRlbnQgYXJlIGluIGFsbCBzb3J0
cyBvZiB3YWNrIGZvcm1hdHRpbmcuCisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9
ICIiIjxodG1sPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMSB7
CisgICAgd2lkdGg6IDMwMHB4OworICAgIGhlaWdodDogMzAwcHgKK30KKworLmJsb2NrMiB7Cisg
ICAgQHRlc3QwQDogcHJvcHZhbHVlOworfQorCisuYmxvY2sze0B0ZXN0MUA6IHByb3B2YWx1ZTt9
CisKKy5ibG9jazQgeyBAdGVzdDJAOnByb3B2YWx1ZTsgfQorCisuYmxvY2s1eyBAdGVzdDNAIDpw
cm9wdmFsdWU7IH0KKworI2Jsb2NrNiB7ICAgIEB0ZXN0NEAgICA6ICAgcHJvcHZhbHVlOyAgfQor
CisjYmxvY2s3Cit7CisgICAgQHRlc3Q1QDogcHJvcHZhbHVlOworfQorCisjYmxvY2s4IHsgQHRl
c3Q2QDogcHJvcHZhbHVlOyB9CisKKyNibG9jazk6cHNldWRvCit7CisKKyAgICBAdGVzdDdAOiBw
cm9wdmFsdWU7CisgICAgQHRlc3Q4QDogIHByb3B2YWx1ZSBwcm9wdmFsdWUgcHJvcHZhbHVlOzsK
K30KKworXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVsZW0xIiBz
dHlsZT0iQHRlc3Q5QDogcHJvcHZhbHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0
eWxlPSJwcm9wbmFtZTogcHJvcHZhbHVlOyBAdGVzdDEwQCA6IHByb3B2YWx1ZTsgcHJvcG5hbWU6
cHJvcHZhbHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJAdGVzdDExQDog
cHJvcHZhbHVlOyBAdGVzdDEyQCA6IHByb3B2YWx1ZTsgQHRlc3QxM0AgICA6cHJvcHZhbHVlOyI+
PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTMiIHN0eWxlPSJAdGVzdDE0QDpwcm9wdmFsdWUiPjwv
ZGl2PgorPC9ib2R5PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2Nr
MTB7IEB0ZXN0MTVAOiBwcm9wdmFsdWU7IH0KKy5ibG9jazExeyBAdGVzdDE2QDogcHJvcHZhbHVl
OyB9CisuYmxvY2sxMnsgQHRlc3QxN0A6IHByb3B2YWx1ZTsgfQorI2Jsb2NrMTM6cHNldWRvCit7
CisgICAgQHRlc3QxOEA6IHByb3B2YWx1ZTsKKyAgICBAdGVzdDE5QDogcHJvcHZhbHVlOworfQor
CitdXT48L3N0eWxlPgorPC9odG1sPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252
ZXJ0ZXIoKQorCisgICAgICAgICMgR2VuZXJhdGUgJiBpbnNlcnQgdGhlIHRlc3QgcHJvcGVydGll
cyBpbnRvIHRoZSB0ZXN0X2h0bWwKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0
ZVRlc3RDb250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyMCwgdGVzdF9odG1s
KQorCisgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAgICBjb252ZXJ0ZWQgPSBjb252
ZXJ0ZXIuY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKEJlYXV0aWZ1bFNvdXAodGVzdF9jb250
ZW50WzFdKSkKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFwcGVuZWQKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBub3QgY29u
dmVydGVkJykKKworICAgICAgICAjIFZlcmlmeSBhbGwgdGhlIGdlbmVyYXRlZCB0ZXN0IHByb3Bl
cnRpZXMgd2VyZSBjb252ZXJ0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4
ZWRQcm9wZXJ0aWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHZlcmlm
eVRlc3RIYXJuZXNzUGF0aHMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3BhdGgsIG51bV9zcmNfcGF0
aHMsIG51bV9ocmVmX3BhdGhzKToKKyAgICAgICAgIiIiIFZlcmlmaWVzIGFsbCBXM0Mtc3R5bGUg
cGF0aHMgdG8gdGVzdCBoYXJuZXNzIGZpbGVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseSAiIiIK
KworICAgICAgICAjIE1ha2Ugc291cCBpZiB3ZSBuZWVkIHRvCisgICAgICAgIGlmIGlzaW5zdGFu
Y2UoY29udmVydGVkLCBiYXNlc3RyaW5nKToKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IEJlYXV0
aWZ1bFNvdXAoY29udmVydGVkKQorCisgICAgICAgICMgQnVpbGQgdGhlIHBhdGggdG8gTGF5b3V0
VGVzdHMvcmVzb3VyY2VzCisgICAgICAgIHJlc291cmNlc19kaXIgPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRlci5MQVlPVVRfVEVT
VFNfRElSRUNUT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2NvbnZlcnRlci5SRVNPVVJDRVNfRElSRUNUT1JZKQorCisgICAgICAgICMg
VmVyaWZ5IHRoZSBvcmlnaW5hbCBwYXRocyBhcmUgbm8gbG9uZ2VyIHRoZXJlCisgICAgICAgIG9y
aWdfcGF0aF9wYXR0ZXJuID0gcmUuY29tcGlsZSgnXCIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKHNyYz1vcmln
X3BhdGhfcGF0dGVybikpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5l
c3Mgc3JjIHBhdGggd2FzIG5vdCBjb252ZXJ0ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhsZW4oY29udmVydGVkLmZpbmRBbGwoaHJlZj1vcmlnX3BhdGhfcGF0dGVybikpLCAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5lc3MgaHJlZiBwYXRoIHdhcyBub3QgY29u
dmVydGVkJykKKworICAgICAgICAjIEdldCB0aGUgbmV3IHJlbHBhdGggZnJvbSB0aGUgdGVzdGVy
IGRpcgorICAgICAgICBuZXdfcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aChyZXNvdXJjZXNfZGly
LCB0ZXN0X3BhdGgpCisKKyAgICAgICAgIyBWZXJpZnkgaXQncyBpbiBhbGwgdGhlIHJpZ2h0IHBs
YWNlcworICAgICAgICByZWxwYXRoX3BhdHRlcm4gPSByZS5jb21waWxlKG5ld19yZWxwYXRoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29udmVydGVkLmZpbmRBbGwoc3JjPXJlbHBh
dGhfcGF0dGVybikpLCBudW1fc3JjX3BhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdGhhcm5lc3Mgc3JjIHJlbGF0aXZlIHBhdGggbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhsZW4oY29udmVydGVkLmZpbmRBbGwoaHJlZj1yZWxwYXRoX3BhdHRlcm4p
KSwgbnVtX2hyZWZfcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0aGFybmVz
cyBocmVmIHJlbGF0aXZlIHBhdGggbm90IGNvcnJlY3QnKQorCisgICAgZGVmIHZlcmlmeVByZWZp
eGVkUHJvcGVydGllcyhzZWxmLCBjb252ZXJ0ZWQsIHRlc3RfcHJvcGVydGllcyk6CisgICAgICAg
ICIiIiBWZXJpZmllcyBhIGxpc3Qgb2YgdGVzdF9wcm9wZXJ0aWVzIHdlcmUgY29udmVydGVkIGNv
cnJlY3RseSAiIiIKKworICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBudW1iZXIgb2YgdGVzdCBw
cm9wZXJ0aWVzIGVxdWFscyB0aGUgbnVtYmVyIHRoYXQgd2VyZSBjb252ZXJ0ZWQKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oY29udmVydGVkWzBdKSwgbGVuKHRlc3RfcHJvcGVydGllcyks
ICdJbmNvcnJlY3QgbnVtYmVyIG9mIHByb3BlcnRpZXMgY29udmVydGVkJykKKworICAgICAgICAj
IFZlcmlmeSB0aGV5J3JlIGFsbCBpbiB0aGUgY29udmVydGVkIGRvY3VtZW50CisgICAgICAgIGZv
ciB0ZXN0X3Byb3AgaW4gdGVzdF9wcm9wZXJ0aWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKCh0ZXN0X3Byb3AgaW4gY29udmVydGVkWzFdKSwgJ1Byb3BlcnR5ICcgKyB0ZXN0X3Byb3Ag
KyAnIG5vdCBmb3VuZCBpbiBjb252ZXJ0ZWQgZG9jJykKKworICAgIGRlZiBnZW5lcmF0ZVRlc3RD
b250ZW50KHNlbGYsIGZ1bGxfcHJvcF9saXN0LCBudW1fdGVzdF9wcm9wZXJ0aWVzLCBodG1sKToK
KyAgICAgICAgIiIiIEdlbmVyYXRlcyBhIHJhbmRvbSBsaXN0IG9mIHVuaXF1ZSBwcm9wZXJ0aWVz
IHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IGFuZCBpbnNlcnRzIHRoZW0gaW50byBodG1s
IGNvbnRlbnQgdGhhdCdzIGJlZW4gdG9rZW5pemVkIHVzaW5nIFwnQHRlc3RYWEBcJyBzeW50YXgg
IiIiCisKKyAgICAgICAgdGVzdF9wcm9wZXJ0aWVzID0gW10KKworICAgICAgICAjIEdyYWIgYSBy
YW5kb20gYnVuY2ggb2YgMjAgdW5pcXVlIHByb3BlcnRpZXMgcmVxdWlyaW5nIHByZWZpeGVzIHRv
IHRlc3Qgd2l0aAorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgd2hpbGUgY291bnQgPCBudW1f
dGVzdF9wcm9wZXJ0aWVzOgorICAgICAgICAgICAgaWR4ID0gcmFuZGludCgwLCBsZW4oZnVsbF9w
cm9wX2xpc3QpIC0gMSkKKyAgICAgICAgICAgIGlmIG5vdChmdWxsX3Byb3BfbGlzdFtpZHhdIGlu
IHRlc3RfcHJvcGVydGllcyk6CisgICAgICAgICAgICAgICAgdGVzdF9wcm9wZXJ0aWVzLmFwcGVu
ZChmdWxsX3Byb3BfbGlzdFtpZHhdKQorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKworICAg
ICAgICAjIFJlcGxhY2UgdGhlIHRva2VucyBpbiB0aGUgdGVzdGh0bWwgd2l0aCB0aGUgdGVzdCBw
cm9wZXJ0aWVzLiBXYWxrIGJhY2t3YXJkCisgICAgICAgICMgdGhyb3VnaCB0aGUgbGlzdCB0byBy
ZXBsYWNlIHRoZSBkb3VibGUtZGlnaXQgdG9rZW5zIGZpcnN0CisgICAgICAgIGlkeCA9IGxlbih0
ZXN0X3Byb3BlcnRpZXMpIC0gMQorICAgICAgICB3aGlsZSBpZHggPj0gMDoKKyAgICAgICAgICAg
ICMgVXNlIHRoZSB1bnByZWZpeGVkIHZlcnNpb24KKyAgICAgICAgICAgIHRlc3RfcHJvcCA9IHRl
c3RfcHJvcGVydGllc1tpZHhdLnJlcGxhY2UoJy13ZWJraXQtJywgJycpCisgICAgICAgICAgICAj
IFJlcGxhY2UgdGhlIHRva2VuCisgICAgICAgICAgICBodG1sID0gaHRtbC5yZXBsYWNlKCdAdGVz
dCcgKyBzdHIoaWR4KSArICdAJywgdGVzdF9wcm9wKQorICAgICAgICAgICAgaWR4IC09IDEKKwor
ICAgICAgICByZXR1cm4gKHRlc3RfcHJvcGVydGllcywgaHRtbCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjU1NDE3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBAIC0wLDAgKzEsNDc3IEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwor
IyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IKKyMgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4K
KworIiIiCisgVGhpcyBzY3JpcHQgaW1wb3J0cyBhIGRpcmVjdG9yeSBvZiBXM0MgQ1NTIHRlc3Rz
IGludG8gV2ViS2l0LgorCisgWW91IG11c3QgaGF2ZSBjaGVja2VkIG91dCB0aGUgVzNDIHJlcG9z
aXRvcnkgdG8geW91ciBsb2NhbCBkcml2ZS4KKworIFRoaXMgc2NyaXB0IHdpbGwgaW1wb3J0IHRo
ZSB0ZXN0cyBpbnRvIFdlYktpdCBmb2xsb3dpbmcgdGhlc2UgcnVsZXM6CisKKyAgICAtIE9ubHkg
dGVzdHMgdGhhdCBhcmUgYXBwcm92ZWQgb3Igb2ZmaWNpYWxseSBzdWJtaXR0ZWQgYXdhaXRpbmcg
cmV2aWV3IGFyZSBpbXBvcnRlZAorCisgICAgLSBBbGwgdGVzdHMgYXJlIGltcG9ydGVkIGludG8g
TGF5b3V0VGVzdHMvY3Nzd2cKKworICAgIC0gSWYgdGhlIHRlc3RzIGFyZSBhcHByb3ZlZCwgdGhl
eSdsbCBiZSBpbXBvcnRlZCBpbnRvIGEgZGlyZWN0b3J5IHRyZWUgdGhhdAorICAgICAgbWlycm9y
cyB0aGUgQ1NTIE1lcmN1cmlhbCByZXBvLiBGb3IgZXhhbXBsZSwgPGNzc3dnX3JlcG9fcm9vdD4v
YXBwcm92ZWQvY3NzMi4xIGlzIGJyb3VnaHQgaW4KKyAgICAgIGFzIExheW91dFRlc3RzL2Nzc3dn
L2FwcHJvdmVkL2NzczIuMSwgbWFpbnRhaW5pbmcgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0
dXJlIHVuZGVyIHRoYXQKKworICAgIC0gSWYgdGhlIHRlc3RzIGFyZSBzdWJtaXR0ZWQsIHRoZXkn
bGwgYmUgYnJvdWdodCBpbiBhcyBMYXlvdXRUZXN0cy9jc3N3Zy9zdWJtaXR0ZWQgYW5kIHdpbGwg
YWxzbworICAgICAgbWFpbnRhaW4gdGhlaXIgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0
LiBGb3IgZXhhbXBsZSwgZXZlcnl0aGluZyB1bmRlcgorICAgICAgPGNzc3dnX3JlcG9fcm9vdD4v
Y29udHJpYnV0b3JzL2Fkb2JlL3N1Ym1pdHRlZCBpcyBicm91Z2h0IGludG8gc3VibWl0dGVkLCBt
aXJyb3JpbmcgaXRzCisgICAgICBkaXJlY3Rvcnkgc3RydWN0dXJlIGluIHRoZSBjc3N3ZyByZXBv
CisKKyAgICAtIElmIHRoZSBpbXBvcnQgZGlyZWN0b3J5IHNwZWNpZmllZCBpcyBqdXN0IGEgY29u
dHJpYnV0b3IgZm9sZGVyLCBvbmx5IHRoZSBzdWJtaXR0ZWQgZm9sZGVyCisgICAgICBmb3IgdGhh
dCBjb250cmlidXRvciBpcyBicm91Z2h0IGluLiBGb3IgZXhhbXBsZSwgdG8gaW1wb3J0IGFsbCBv
ZiBNb3ppbGxhJ3MgdGVzdHMsIGVpdGhlcgorICAgICAgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJp
YnV0b3JzL21vemlsbGEgb3IgPGNzc3dnX3JlcG9fcm9vdD4vY29udHJpYnV0b3JzL21vemlsbGEv
c3VibWl0dGVkCisgICAgICB3aWxsIHdvcmsgYW5kIGFyZSBlcXVpdmFsZW50CisKKyAgICAtIEZv
ciB0aGUgdGltZSBiZWluZywgdGhpcyBzY3JpcHQgd29uJ3Qgd29yayBpZiB5b3UgdHJ5IHRvIGlt
cG9ydCB0aGUgZnVsbCBzZXQgb2Ygc3VibWl0dGVkCisgICAgICB0ZXN0cyB1bmRlciBjb250cmli
dXRvcnMvKi9zdWJtaXR0ZWQuIFNpbmNlIHRoZXNlIGFyZSBhd2FpdGluZyByZXZpZXcsIHRoaXMg
aXMganVzdCBhIHNtYWxsCisgICAgICBjb250cm9sIG1lY2hhbmlzbSB0byBlbmZvcmNlIGNhcmVm
dWxseSBzZWxlY3Rpbmcgd2hhdCBub24tYXBwcm92ZWQgdGVzdHMgYXJlIGltcG9ydGVkLgorICAg
ICAgSXQgY2FuIG9idmlvdXNseSBhbmQgZWFzaWx5IGJlIGNoYW5nZWQuCisKKyAgICAtIEJ5IGRl
ZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5kIGpzdGVzdCBhcmUgaW1wb3J0ZWQuIFRoaXMgY2FuIGJl
IG92ZXJyaWRkZW4gd2l0aCBhIC1hIG9yIC0tYWxsCisgICAgICBhcmd1bWVudAorCisgICAgLSBB
bHNvIGJ5IGRlZmF1bHQsIGlmIHRlc3QgZmlsZXMgYnkgdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4
aXN0IGluIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnksCisgICAgICB0aGV5IGFyZSBvdmVyd3Jp
dHRlbiB3aXRoIHRoZSBpZGVhIHRoYXQgcnVubmluZyB0aGlzIHNjcmlwdCB3b3VsZCByZWZyZXNo
IGZpbGVzIHBlcmlvZGljYWxseS4KKyAgICAgIFRoaXMgY2FuIGFsc28gYmUgb3ZlcnJpZGRlbiBi
eSBhIC1uIG9yIC0tbm8tb3ZlcndyaXRlIGZsYWcKKworICAgIC0gQWxsIGZpbGVzIGFyZSBjb252
ZXJ0ZWQgdG8gd29yayBpbiBXZWJLaXQ6CisgICAgICAgICAxLiAueGh0IGV4dGVuc2lvbnMgYXJl
IGNoYW5nZWQgdG8gLnhodG1sIHRvIG1ha2UgbmV3LXJ1bi13ZWJraXQtdGVzdHMgaGFwcHkKKyAg
ICAgICAgIDIuIFBhdGhzIHRvIHRlc3RoYXJuZXNzLmpzIGZpbGVzIGFyZSBtb2RpZmllZCBwb2lu
dCB0byBXZWJraXQncyBjb3B5IG9mIHRoZW0gaW4KKyAgICAgICAgICAgIExheW91dFRlc3RzL3Jl
c291cmNlcywgdXNpbmcgdGhlIGNvcnJlY3QgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBuZXcgbG9j
YXRpb24KKyAgICAgICAgIDMuIEFsbCBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJr
aXQtdmVuZG9yIHByZWZpeCBhcmUgcHJlZml4ZWQgLSB0aGlzIGN1cnJlbnQKKyAgICAgICAgICAg
IGxpc3Qgb2Ygd2hhdCBuZWVkcyBwcmVmaXhlcyBpcyByZWFkIGZyb20gU291cmNlL1dlYkNvcmUv
Q1NTL0NTU1Byb3BlcnRpZXMuaW4KKyAgICAgICAgIDQuIEVhY2ggcmVmdGVzdCBoYXMgaXRzIG93
biBjb3B5IG9mIGl0cyByZWZlcmVuY2UgZmlsZSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50
aW9ucworICAgICAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHMgZXhwZWN0cworICAgICAgICAg
NS4gSWYgYSBhIHJlZmVyZW5jZSBmaWxlcyBsaXZlcyBvdXRzaWRlIHRoZSBkaXJlY3Rvcnkgb2Yg
dGhlIHRlc3QgdGhhdCB1c2VzIGl0LCBpdCBpcyBjaGVja2VkCisgICAgICAgICAgICBmb3IgcGF0
aHMgdG8gc3VwcG9ydCBmaWxlcyBhcyBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gYSBkaWZmZXJl
bnQgcmVsYXRpdmUgcG9zaXRpb24gdG8gdGhlCisgICAgICAgICAgICB0ZXN0IGZpbGUgKGluIHRo
ZSBzYW1lIGRpcmVjdG9yeSkKKworICAgICAtIFVwb24gY29tcGxldGlvbiwgc2NyaXB0IG91dHB1
dHMgdGhlIHRvdGFsIG51bWJlciB0ZXN0cyBpbXBvcnRlZCwgYnJva2VuIGRvd24gYnkgdGVzdCB0
eXBlCisKKyAgICAgLSBBbHNvIHVwb24gY29tcGxldGlvbiwgZWFjaCBkaXJlY3Rvcnkgd2hlcmUg
ZmlsZXMgYXJlIGltcG9ydGVkIHdpbGwgaGF2ZSB3M2MtaW1wb3J0LmxvZyB3cml0dGVuCisgICAg
ICAgd2l0aCBhIHRpbWVzdGFtcCwgdGhlIFczQyBNZXJjdXJpYWwgY2hhbmdlc2V0IGlmIGF2YWls
YWJsZSwgdGhlIGxpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0aGF0CisgICAgICAgcmVxdWly
ZSBwcmVmaXhlcywgdGhlIGxpc3Qgb2YgaW1wb3J0ZWQgZmlsZXMsIGFuZCBndWlkYW5jZSBmb3Ig
ZnV0dXJlIHRlc3QgbW9kaWZpY2F0aW9uIGFuZAorICAgICAgIG1haW50ZW5hbmNlLgorCisgICAg
IC0gT24gc3Vic2VxdWVudCBpbXBvcnRzLCB0aGlzIGZpbGUgaXMgcmVhZCB0byBkZXRlcm1pbmUg
aWYgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5ld2VyIGNoYW5nZXNldHMuCisgICAg
ICAgVGhlIHNjcmlwdCByZW1vdmVzIHRoZXNlIGZpbGVzIGFjY29yZGluZ2x5LgorIiIiCitpbXBv
cnQgZGF0ZXRpbWUKK2ltcG9ydCBtaW1ldHlwZXMKK2Zyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlv
blBhcnNlcgoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1w
b3J0IHN5cworCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNl
cgorZnJvbSB3ZWJraXRweS53M2MudGVzdF9jb252ZXJ0ZXIgaW1wb3J0IFRlc3RDb252ZXJ0ZXIK
KworTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSA9ICdMYXlvdXRUZXN0cycKK0NTU1dHX0RJUkVDVE9S
WSA9ICdjc3N3ZycKK1JFU09VUkNFU19ESVJFQ1RPUlkgPSAncmVzb3VyY2VzJworQVBQUk9WRUQg
PSAnYXBwcm92ZWQnCitTVUJNSVRURUQgPSAnc3VibWl0dGVkJworVU5LTk9XTiA9ICd1bmtub3du
JworTk9UX0FWQUlMQUJMRSA9ICdOb3QgQXZhaWxhYmxlJworCisKK2RlZiBtYWluKGFyZ3YsIF8s
IHN0ZGVycik6CisKKyAgICBwYXJzZV9hcmdzKCkKKyAgICBpbXBvcnRfZGlyID0gdmFsaWRhdGVf
aW1wb3J0X2RpcmVjdG9yeSgpCisgICAgdGVzdF9pbXBvcnRlciA9IFRlc3RJbXBvcnRlcihpbXBv
cnRfZGlyLCBvcHRpb25zKQorICAgIHRlc3RfaW1wb3J0ZXIuZG9faW1wb3J0KCkKKworCitkZWYg
cGFyc2VfYXJncygpOgorCisgICAgZ2xvYmFsIG9wdGlvbnMKKyAgICBnbG9iYWwgYXJncworCisg
ICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIHcz
Y190ZXN0X2RpcmVjdG9yeScpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0tbm8tb3Zl
cndyaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAjYWN0aW9uPSdzdG9yZV90cnVlJywKKyAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J0ZsYWcgdG8gcHJldmVudCBkdXBsaWNhdGUgdGVzdCBmaWxlcyBmcm9tIG92ZXJ3cml0
aW5nIGV4aXN0aW5nIHRlc3RzLiBCeSBkZWZhdWx0LCB0aGV5IHdpbGwgYmUgb3ZlcndyaXR0ZW4n
KQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYScsICctLWFsbCcsCisgICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0ltcG9ydCBhbGwgdGVzdHMgaW5j
bHVkaW5nIHJlZnRlc3RzLCBKUyB0ZXN0cywgYW5kIG1hbnVhbC9waXhlbCB0ZXN0cy4gQnkgZGVm
YXVsdCwgb25seSByZWZ0ZXN0cyBhbmQgSlMgdGVzdHMgYXJlIGltcG9ydGVkJykKKworICAgIChv
cHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGxlbihhcmdzKSAh
PSAxOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ0luY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRz
JykKKworCitkZWYgdmFsaWRhdGVfaW1wb3J0X2RpcmVjdG9yeSgpOgorCisgICAgaW1wb3J0X2Rp
ciA9IGFyZ3NbMF0KKworICAgICMgTWFrZSBzdXJlIHRoZSB3M2MgdGVzdCBkaXJlY3RvcnkgZXhp
c3RzCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGltcG9ydF9kaXIpOgorICAgICAgICBzeXMu
ZXhpdCgnU291cmNlIGRpcmVjdG9yeSAlcyBub3QgZm91bmQhJyAlIGltcG9ydF9kaXIpCisKKyAg
ICAjIE1ha2Ugc3VyZSB0aGUgdGVzdHMgYXJlIG9mZmljaWFsbHkgc3VibWl0dGVkIHRvIHRoZSBX
M0MsIGVpdGhlciBhcHByb3ZlZCBvcgorICAgICMgc3VibWl0dGVkIGZvbGxvd2luZyB0aGVpciBk
aXJlY3RvcnkgbmFtaW5nIGNvbnZlbnRpb25zCisgICAgaWYgaW1wb3J0X2Rpci5maW5kKEFQUFJP
VkVEKSA9PSAtMSBhbmQgXAorICAgICAgIGltcG9ydF9kaXIuZmluZChTVUJNSVRURUQpID09IC0x
OgorICAgICAgICAjIElmIG5vdCBwb2ludGVkIGRpcmVjdGx5IHRvIHRoZSBhcHByb3ZlZCBkaXJl
Y3Rvcnkgb3IgdG8gYW55IHN1Ym1pdHRlZAorICAgICAgICAjIGRpcmVjdG9yeSwgY2hlY2sgZm9y
IGEgc3VibWl0dGVkIHN1YmRpcmVjdG9yeSBhbmQgZ28gd2l0aCB0aGF0CisgICAgICAgIGltcG9y
dF9kaXIgPSBvcy5wYXRoLmpvaW4oaW1wb3J0X2RpciwgJ3N1Ym1pdHRlZCcpCisgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oaW1wb3J0X2RpcikpOgorICAgICAgICAg
ICAgc3lzLmV4aXQoJ1VuYWJsZSB0byBpbXBvcnQgdGVzdHMgdGhhdCBhcmVuXCd0IGFwcHJvdmVk
IG9yIHN1Ym1pdHRlZCB0byB0aGUgVzNDJykKKworICAgIHJldHVybiBpbXBvcnRfZGlyCisKKwor
Y2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc291
cmNlX2RpcmVjdG9yeSwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMK
KworICAgICAgICBzZWxmLnNvdXJjZV9kaXJlY3RvcnkgPSBzb3VyY2VfZGlyZWN0b3J5CisgICAg
ICAgIHNlbGYud2Via2l0X3Jvb3QgPSBfX2ZpbGVfXy5zcGxpdChvcy5wYXRoLnNlcCArICdUb29s
cycpWzBdCisgICAgICAgIHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KG9zLnBhdGguc2VwLCBzZWxmLndlYmtpdF9yb290LCBMQVlPVVRfVEVTVFNfRElSRUNUT1JZLCBD
U1NXR19ESVJFQ1RPUlkpCisKKyAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBOT1RfQVZBSUxBQkxF
CisgICAgICAgIHNlbGYudGVzdF9zdGF0dXMgPSBVTktOT1dOCisKKyAgICAgICAgc2VsZi5pbXBv
cnRfbGlzdCA9IFtdCisKKyAgICBkZWYgZG9faW1wb3J0KHNlbGYpOgorICAgICAgICBzZWxmLnNj
YW5fc291cmNlX2RpcmVjdG9yeShzZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgIHNlbGYu
Z2V0X2NoYW5nZXNldCgpCisgICAgICAgIHNlbGYuaW1wb3J0X3Rlc3RzKCkKKworICAgIGRlZiBn
ZXRfY2hhbmdlc2V0KHNlbGYpOgorICAgICAgICAiIiIgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBj
dXJyZW50IGNoYW5nZXNldCBhbmQgcGFyc2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZSBjaGFuZ2Vz
ZXQuIElmIHRoYXQgZG9lc24ndCB3b3Jrb3V0IGZvciBzb21lIHJlYXNvbiwgaXQganVzdCBiZWNv
bWVzICdOb3QgQXZhaWxhYmxlJyAiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEFz
c3VtaW5nIE1lcmN1cmlhbCBpcyBzZXQgdXAgb24gdGhlIHN5c3RlbSwgdHJ5IHRvIGdyYWIgdGhl
IGNoYW5nZXNldCB3ZSdyZSBpbXBvcnRpbmcKKyAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNz
LlBvcGVuKFsnaGcnLCAndGlwJ10sIGVudj1vcy5lbnZpcm9uLCBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLCBjd2Q9c2VsZi5zb3VyY2VfZGlyZWN0b3J5KQorICAgICAgICAgICAgc2VsZi5jaGFuZ2Vz
ZXQgPSBwcm9jLnN0ZG91dC5yZWFkbGluZXMoKVswXQorICAgICAgICAgICAgc2VsZi5jaGFuZ2Vz
ZXQgPSBzZWxmLmNoYW5nZXNldC5zcGxpdCgnY2hhbmdlc2V0OicpWzFdCisgICAgICAgIGV4Y2Vw
dDoKKyAgICAgICAgICAgICMgT2ggd2VsbCwgd2UgdHJpZWQKKyAgICAgICAgICAgIHNlbGYuY2hh
bmdlc2V0ID0gJ05vdCBBdmFpbGFibGUnCisKKyAgICBkZWYgc2Nhbl9zb3VyY2VfZGlyZWN0b3J5
KHNlbGYsIGRpcmVjdG9yeSk6CisgICAgICAgICIiIiBXYWxrcyB0aGUgfGRpcmVjdG9yeXwgbG9v
a2luZyBmb3IgSFRNTCBmaWxlcyB0aGF0IGFyZSBpbXBvcnRhYmxlIHRlc3RzLiAiIiIKKworICAg
ICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgorCisgICAg
ICAgICAgICBwcmludCAnU2Nhbm5pbmcgJyArIHJvb3QgKyAnLi4uJworICAgICAgICAgICAgdG90
YWxfdGVzdHMgPSAwCisgICAgICAgICAgICByZWZ0ZXN0cyA9IDAKKyAgICAgICAgICAgIGpzdGVz
dHMgPSAwCisKKyAgICAgICAgICAgICMgSWdub3JlIGFueSByZXBvIHN0dWZmCisgICAgICAgICAg
ICBpZiAnLmdpdCcgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmdpdCcp
CisgICAgICAgICAgICBpZiAnLmhnJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVt
b3ZlKCcuaGcnKQorICAgICAgICAgICAgIyBhcmNoaXZlIGFuZCBkYXRhIGRpcnMgYXJlIGludGVy
bmFsIGNzc3dnIHRoaW5ncyB0aGF0IGxpdmUgaW4gZXZlcnkgYXBwcm92ZWQgZGlyZWN0b3J5Cisg
ICAgICAgICAgICBpZiAnZGF0YScgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92
ZSgnZGF0YScpCisgICAgICAgICAgICBpZiAnYXJjaGl2ZScgaW4gZGlyczoKKyAgICAgICAgICAg
ICAgICBkaXJzLnJlbW92ZSgnYXJjaGl2ZScpCisKKyAgICAgICAgICAgIGNvcHlfbGlzdCA9IFtd
CisKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKKworICAgICAgICAgICAgICAg
IGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGVuYW1lKQorCisgICAgICAgICAgICAg
ICAgIyBPbmx5IGh0bWwgb3IgeG1sIGFyZSBjb25zaWRlcmVkIHRlc3RzCisgICAgICAgICAgICAg
ICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmdWxscGF0aCkKKyAgICAgICAgICAg
ICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciAneG1sJyBpbiBzdHIobWltZXR5
cGVbMF0pOgorCisgICAgICAgICAgICAgICAgICAgIHRlc3RfcGFyc2VyID0gVGVzdFBhcnNlcih2
YXJzKG9wdGlvbnMpLCBmaWxlbmFtZT1mdWxscGF0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVz
dF9pbmZvID0gdGVzdF9wYXJzZXIuYW5hbHl6ZV90ZXN0KCkKKworICAgICAgICAgICAgICAgICAg
ICBpZiB0ZXN0X2luZm8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMo
KToKKworICAgICAgICAgICAgICAgICAgICAgICAgcmVmdGVzdHMgKz0gMQorICAgICAgICAgICAg
ICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdF9pbmZvWyd0ZXN0J10pCisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICMgQWRkIHRoZSByZWYgZmlsZSwgcmVuYW1pbmcgaXQgdG8gV2Vi
a2l0J3Mgd2F5CisgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGU6IFRoZSBwcmVmZXJhYmxl
IHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byBqdXN0CisgICAgICAgICAgICAgICAgICAg
ICAgICAjICAgICAgIGFkZCBzdXBwb3J0IGluIFdlYmtpdCdzIGhhcm5lc3MgdG8gcmVhZCBtZXRh
ZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICByYXRoZXIgdGhhbiByZWx5IG9u
IGEgZmlsZSBuYW1pbmcgY29udmVudGlvbi4gU2luY2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICMgICAgICAgdGhlIENTU1dHIHRlc3RzIHN1cHBvcnQgbWFueTpvbmUgdGVzdHM6cmVmZXJlbmNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICBlbmFibGluZyBtZXRhZGF0YSBwYXJz
aW5nIGluIG91ciBoYXJuZXNzIHdvdWxkIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICMg
ICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgZmlsZXMgY29waWVkIGluLiBBcyB0aGlzIGlzCisg
ICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgIGltcGxlbWVudGVkIGhlcmUsIHdlIGFyZSBr
bm93aW5nbHkgaW1wb3J0aW5nIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICAjICAg
ICAgIGNvcGllcyBvZiB0aGUgc2FtZSByZWYgZmlsZXMgdG8gYWRoZXJlIHRvIFdlYmtpdCdzIHdh
eQorICAgICAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KHRl
c3RfYmFzZW5hbWUpWzBdICsgJy1leHBlY3RlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
Zl9maWxlICs9IG9zLnBhdGguc3BsaXRleHQodGVzdF9iYXNlbmFtZSlbMV0KKworICAgICAgICAg
ICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJl
bmNlJ10sICdkZXN0JzogcmVmX2ZpbGV9KQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9s
aXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sndGVzdCddLCAnZGVzdCc6IGZpbGVuYW1lfSkK
KworICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGVyZSBhcmUgcmVmIHN1cHBvcnQgZmls
ZXMsIHRoZSBkZXN0aW5hdGlvbiBpcyBzaG91bGQgbm93IGJlIHJlbGF0aXZlIHRvIHRoZQorICAg
ICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0IGZpbGUgYW5kIG5ldyBsb2NhdGlvbiBvZiB0aGUg
cmVmIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdyZWZzdXBwb3J0JyBpbiB0ZXN0
X2luZm8ua2V5cygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdXBwb3J0X2Zp
bGUgaW4gdGVzdF9pbmZvWydyZWZzdXBwb3J0J106CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMgQnVpbGQgdGhlIGNvcnJlY3Qgc291cmNlIHBhdGgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KHRlc3RfaW5mb1sncmVmZXJlbmNlJ10pLCBzdXBwb3J0X2ZpbGUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5ub3JtcGF0aChzb3VyY2VfZmls
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBkZXN0IGFzIGl0
IHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19jb3B5ID0geydzcmMnOiBz
b3VyY2VfZmlsZSwgJ2Rlc3QnOiBzdXBwb3J0X2ZpbGV9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMgT25seSBhZGQgaXQgb25jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiBub3QodG9fY29weSBpbiBjb3B5X2xpc3QpOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh0b19jb3B5KQorCisgICAgICAgICAgICAg
ICAgICAgIGVsaWYgJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGpzdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVz
dHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6
IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZp
bGVuYW1lfSkKKworICAgICAgICAgICAgICAgICMgSWdub3JlIGRvdGZpbGVzIGFuZCByYW5kb20g
cGVybCBzY3JpcHRzIHRoYXQgYXJlIGluIHNvbWUgZGlycworICAgICAgICAgICAgICAgIGVsaWYg
bm90KGZpbGVuYW1lLnN0YXJ0c3dpdGgoJy4nKSkgYW5kIG5vdChmaWxlbmFtZS5lbmRzd2l0aCgn
LnBsJykpOgorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogZnVs
bHBhdGgsICdkZXN0JzogZmlsZW5hbWV9KQorCisgICAgICAgICAgICBpZiB0b3RhbF90ZXN0cyA9
PSAwOgorICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgYXJlIG5vIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5LCBza2lwIHRoZSBzdXBwb3J0IGRpciB0aGF0IGxpdmVzIGluIGFsbAorICAgICAgICAg
ICAgICAgICMgb2YgdGhlICdhcHByb3ZlZCcgZm9sZGVycyBhcyBwYXJ0IG9mIHRoZSBhdXRvbWF0
ZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgaWYgJ3N1cHBvcnQnIGluIGRpcnM6Cisg
ICAgICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdzdXBwb3J0JykKKworICAgICAgICAgICAg
ICAgIGlmIGxlbihjb3B5X2xpc3QpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGFk
ZCB0aGlzIGRpcmVjdG9yeSB0byB0aGUgbGlzdCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBv
cnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfbGlzdC5hcHBlbmQoeydkaXJuYW1l
Jzogcm9vdCwgJ2NvcHlfbGlzdCc6IGNvcHlfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3JlZnRlc3RzJzogcmVmdGVzdHMsICdqc3Rlc3RzJzoganN0
ZXN0cywgJ3RvdGFsX3Rlc3RzJzogdG90YWxfdGVzdHN9KQorCisgICAgZGVmIGltcG9ydF90ZXN0
cyhzZWxmKToKKyAgICAgICAgIiIiIENvcGllcyBhbmQgY29udmVydHMgdGhlIGZ1bGwgbGlzdCBv
ZiBpbXBvcnRhYmxlIHRlc3RzIGludG8gV2Via2l0IGFuZCBsb2dzIHdoYXQgd2FzIGltcG9ydGVk
IGluIGVhY2ggZGlyZWN0b3J5ICIiIgorCisgICAgICAgICMgT25seSBzZXQgdXAgdGhlIGRlc3Rp
bmF0aW9uIGRpcmVjdG9yeSBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAg
aWYgbGVuKHNlbGYuaW1wb3J0X2xpc3QpID4gMDoKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfZGVz
dGluYXRpb25fZGlyZWN0b3J5KCkKKworICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVy
KCkKKyAgICAgICAgdG90YWxfaW1wb3J0ZWRfdGVzdHMgPSAwCisgICAgICAgIHRvdGFsX2ltcG9y
dGVkX3JlZnRlc3RzID0gMAorICAgICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzID0gMAorCisg
ICAgICAgIGZvciBkaXJfdG9fY29weSBpbiBzZWxmLmltcG9ydF9saXN0OgorCisgICAgICAgICAg
ICB0b3RhbF9pbXBvcnRlZF90ZXN0cyArPSBkaXJfdG9fY29weVsndG90YWxfdGVzdHMnXQorICAg
ICAgICAgICAgdG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3JlZnRlc3Rz
J10KKyAgICAgICAgICAgIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ2pz
dGVzdHMnXQorCisgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KKworICAgICAg
ICAgICAgaWYgbGVuKGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXSkgPiAwOgorCisgICAgICAgICAg
ICAgICAgIyBCdWlsZCB0aGUgc3VicGF0aCBzdGFydGluZyB3aXRoIHRoZSBhcHByb3ZlZC9zdWJt
aXR0ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgb3JpZ19wYXRoID0gZGlyX3RvX2NvcHlb
J2Rpcm5hbWUnXQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gb3JpZ19wYXRoLmZpbmQoc2VsZi50
ZXN0X3N0YXR1cykKKyAgICAgICAgICAgICAgICBuZXdfc3VicGF0aCA9IG9yaWdfcGF0aFtzdGFy
dDpsZW4ob3JpZ19wYXRoKV0KKworICAgICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBuZXcgc3Vi
cGF0aCB0byB0aGUgZGVzdGluYXRpb25fZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgbmV3X3Bh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRo
KQorCisgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9y
aWVzIGlmIG5vdCB0aGVyZQorICAgICAgICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhu
ZXdfcGF0aCkpOgorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhuZXdfcGF0aCkKKwor
ICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcyA9IFtdCisKKyAgICAgICAgICAgICAgICBmb3Ig
ZmlsZV90b19jb3B5IGluIGRpcl90b19jb3B5Wydjb3B5X2xpc3QnXToKKworICAgICAgICAgICAg
ICAgICAgICBvcmlnX2ZpbGVwYXRoID0gb3MucGF0aC5ub3JtcGF0aChmaWxlX3RvX2NvcHlbJ3Ny
YyddKQorCisgICAgICAgICAgICAgICAgICAgICMgU2hvdWxkbid0IGJlIGFueSBkaXJlY3Rvcmll
cyBvbiB0aGUgbGlzdCwgYnV0IGNoZWNrIHRvIGJlIHNhZmUKKyAgICAgICAgICAgICAgICAgICAg
aWYgb3MucGF0aC5pc2RpcihvcmlnX2ZpbGVwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBjaG9rZSBpZiB0aGUgZmls
ZSBjYW4ndCBiZSBmb3VuZAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlz
dHMob3JpZ19maWxlcGF0aCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5p
bmc6ICcgKyBvcmlnX2ZpbGVwYXRoICsgJyBub3QgZm91bmQuIFBvc3NpYmxlIGVycm9yIGluIHRo
ZSB0ZXN0LicKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
ICAgICAgICAgIyBBcHBlbmQgdGhlIGNvcnJlY3QgZGVzdGluYXRpb24gZmlsZW5hbWUKKyAgICAg
ICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRoLCBmaWxl
X3RvX2NvcHlbJ2Rlc3QnXSkKKworICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBleHRlbnNp
b24gdG8gd29yayBpbiB0aGUgV2ViS2l0IGhhcm5lc3MKKyAgICAgICAgICAgICAgICAgICAgbmV3
X2ZpbGVwYXRoID0gbmV3X2ZpbGVwYXRoLnJlcGxhY2UoJy54aHQnLCAnLnhodG1sJykKKworICAg
ICAgICAgICAgICAgICAgICAjIE1ha2UgdGhlIGRpcmVjdG9yaWVzIG5lZWRlZAorICAgICAgICAg
ICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxl
cGF0aCkpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGly
bmFtZShuZXdfZmlsZXBhdGgpKQorCisgICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qgb3Zlcndy
aXRlIGV4aXN0aW5nIHRlc3RzIGlmIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBpZiBv
cHRpb25zLm5vX292ZXJ3cml0ZSBpcyBUcnVlIGFuZCBvcy5wYXRoLmV4aXN0cyhuZXdfZmlsZXBh
dGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBl
eGlzdGluZyBmaWxlICcgKyBuZXdfZmlsZXBhdGgKKyAgICAgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogTWF5YmUgZG9pbmcgYSBmaWxlIGRpZmYg
aXMgaW4gb3JkZXIgaGVyZSBmb3IgZXhpc3RpbmcgZmlsZXM/CisgICAgICAgICAgICAgICAgICAg
ICAgICAjICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGVyZSdzIG5vIHNlbnNlIGluIG92ZXJ3cml0
aW5nIGlkZW50aWNhbCBmaWxlcywgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAg
IHRoZXJlJ3Mgbm8gaGFybSBpbiBjb3B5aW5nIHRoZSBpZGVudGljYWwgdGhpbmcuCisgICAgICAg
ICAgICAgICAgICAgICAgICBwcmludCAnSW1wb3J0aW5nOiAnICsgb3JpZ19maWxlcGF0aAorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyAgICAgICBBczogJyArIG5ld19maWxlcGF0aAor
CisgICAgICAgICAgICAgICAgICAgICMgT25seSBodG1sLCB4bWwsIG9yIGNzcyBzaG91bGQgYmUg
Y29udmVydGVkCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogRXZlbnR1YWxseSwgc28gc2hv
dWxkIGpzIHdoZW4gc3VwcG9ydCBpcyBhZGRlZCBmb3IgdGhpcyB0eXBlIG9mIGNvbnZlcnNpb24K
KyAgICAgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmln
X2ZpbGVwYXRoKQorICAgICAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBl
WzBdKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICd4bWwnIGluIHN0cihtaW1ldHlwZVsw
XSkgIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NzcycgaW4gc3RyKG1pbWV0eXBlWzBd
KToKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IGZvciBXZWJLaXQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVydGVyLmNvbnZlcnRfZm9y
X3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCkKKworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgY29udmVydGVkX2ZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIFN0cmFpZ2h0IGNvcHkgaWYgbm90aGluZydzIGNoYW5nZWQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2Zp
bGVwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIFdyaXRlIG91dCB0aGUgY29udmVydGVkIHRlc3QKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzLmV4dGVuZChzZXQoY29udmVydGVkX2Zp
bGVbMF0pIC0gc2V0KHByZWZpeGVkX3Byb3BlcnRpZXMpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dGZpbGUgPSBvcGVuKG5ld19maWxlcGF0aCwgJ3cnKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoY29udmVydGVkX2ZpbGVbMV0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0ZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0
aCwgbmV3X2ZpbGVwYXRoKQorCisgICAgICAgICAgICAgICAgICAgIGNvcGllZF9maWxlcy5hcHBl
bmQobmV3X2ZpbGVwYXRoLnJlcGxhY2Uoc2VsZi53ZWJraXRfcm9vdCwgJycpKQorCisgICAgICAg
ICAgICAgICAgIyBUYWtlIGNhcmUgb2YgYW55dGhpbmcgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlbW92
ZWQgc2luY2UgdGhlIGxhc3QgaW1wb3J0CisgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVfZGVs
ZXRlZF9maWxlcyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzKQorCisgICAgICAgICAgICAgICAgIyBE
cm9wIHNvbWUgaW5mbyBhYm91dCB3aGF0IGp1c3QgaGFwcGVuZWQgaGVyZQorICAgICAgICAgICAg
ICAgIHNlbGYud3JpdGVfaW1wb3J0X2xvZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhl
ZF9wcm9wZXJ0aWVzKQorCisgICAgICAgIHByaW50ICdJbXBvcnQgY29tcGxldGUnCisKKyAgICAg
ICAgcHJpbnQgJ0lNUE9SVEVEICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfdGVzdHMpICsgJyBUT1RB
TCBURVNUUycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRf
cmVmdGVzdHMpICsgJyByZWZ0ZXN0cycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIo
dG90YWxfaW1wb3J0ZWRfanN0ZXN0cykgKyAnIEpTIHRlc3RzJworICAgICAgICBwcmludCAnSW1w
b3J0ZWQgJyArIHN0cih0b3RhbF9pbXBvcnRlZF90ZXN0cyAtIHRvdGFsX2ltcG9ydGVkX2pzdGVz
dHMgLSB0b3RhbF9pbXBvcnRlZF9yZWZ0ZXN0cykgKyAnIHBpeGVsL21hbnVhbCB0ZXN0cycKKwor
ICAgIGRlZiBzZXR1cF9kZXN0aW5hdGlvbl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIiBD
cmVhdGVzIGEgZGVzdGluYXRpb24gZGlyZWN0b3J5IHRoYXQgbWlycm9ycyB0aGF0IG9mIHRoZSBz
b3VyY2UgYXBwcm92ZWQgb3Igc3VibWl0dGVkIGRpcmVjdG9yeSAiIiIKKworICAgICAgICAjIFRo
ZSB0ZXN0IHN0YXR1cyBpcyBpbiB0aGUgcGF0aCwgc28gZ3JhYiBpdAorICAgICAgICBzZWxmLmdl
dF90ZXN0X3N0YXR1cygpCisKKyAgICAgICAgIyBNaXJyb3IgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1
cmUgaW4gdGhlIGNzc3dnIHJlcG8gdW5kZXIgYXBwcm92ZWQvIG9yIHN1Ym1pdHRlZC8KKyAgICAg
ICAgc3RhcnQgPSBzZWxmLnNvdXJjZV9kaXJlY3RvcnkuZmluZChzZWxmLnRlc3Rfc3RhdHVzKQor
ICAgICAgICBuZXdfc3VicGF0aCA9IHNlbGYuc291cmNlX2RpcmVjdG9yeVtzdGFydDpsZW4oc2Vs
Zi5zb3VyY2VfZGlyZWN0b3J5KV0KKworICAgICAgICBkZXN0aW5hdGlvbl9kaXJlY3RvcnkgPSBv
cy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5ld19zdWJwYXRoKQorCisg
ICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0aW5hdGlvbl9kaXJlY3RvcnkpOgorICAg
ICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGluYXRpb25fZGlyZWN0b3J5KQorCisgICAgICAgIHBy
aW50ICdUZXN0cyB3aWxsIGJlIGltcG9ydGVkIGludG86ICcgKyBkZXN0aW5hdGlvbl9kaXJlY3Rv
cnkKKworICAgIGRlZiBnZXRfdGVzdF9zdGF0dXMoc2VsZik6CisgICAgICAgICIiIiBTZXRzIHRo
ZSB0ZXN0IHN0YXR1cyB0byBlaXRoZXIgJ2FwcHJvdmVkJyBvciAnc3VibWl0dGVkJyAiIiIKKwor
ICAgICAgICBzdGF0dXMgPSBVTktOT1dOCisKKyAgICAgICAgaWYgc2VsZi5zb3VyY2VfZGlyZWN0
b3J5LmZpbmQoQVBQUk9WRUQpICE9IC0xOgorICAgICAgICAgICAgc3RhdHVzID0gQVBQUk9WRUQK
KyAgICAgICAgZWxpZiBzZWxmLnNvdXJjZV9kaXJlY3RvcnkuZmluZChTVUJNSVRURUQpICE9IC0x
OgorICAgICAgICAgICAgc3RhdHVzID0gU1VCTUlUVEVECisKKyAgICAgICAgc2VsZi50ZXN0X3N0
YXR1cyA9IHN0YXR1cworCisgICAgZGVmIHJlbW92ZV9kZWxldGVkX2ZpbGVzKHNlbGYsIGltcG9y
dF9kaXJlY3RvcnksIG5ld19maWxlX2xpc3QpOgorICAgICAgICAiIiIgUmVhZHMgYW4gaW1wb3J0
IGxvZyBpbiB8aW1wb3J0X2RpcmVjdG9yeXwgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSB8bmV3X2Zp
bGVfbGlzdHwgYW5kIHJlbW92ZXMgZmlsZXMgdGhhdCBhcmUgbm90IGluIHRoZSBuZXcgbGlzdCAi
IiIKKworICAgICAgICBwcmV2aW91c19maWxlX2xpc3QgPSBbXQorCisgICAgICAgICMgRmlyc3Qg
Y2hlY2sgaWYgdGhlcmUgd2FzIGEgcHJldmlvdXMgaW1wb3J0IGhlcmUgLSB0aGVyZSBzaG91bGQg
YmUgYSBsb2cKKyAgICAgICAgaW1wb3J0X2xvZ19maWxlID0gb3MucGF0aC5qb2luKGltcG9ydF9k
aXJlY3RvcnksICd3M2MtaW1wb3J0LmxvZycpCisgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0
cyhpbXBvcnRfbG9nX2ZpbGUpKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGltcG9y
dF9sb2cgPSBvcGVuKGltcG9ydF9sb2dfZmlsZSwgJ3InKQorICAgICAgICBjb250ZW50cyA9IGlt
cG9ydF9sb2cucmVhZGxpbmVzKCkKKworICAgICAgICAjIFB1bGwgbG9nIHRoZSBsaXN0IG9mIGZp
bGVzIGZyb20gdGhlIHByZXZpb3VzIGltcG9ydAorICAgICAgICBpZiAnTGlzdCBvZiBmaWxlc1xu
JyBpbiBjb250ZW50czoKKyAgICAgICAgICAgIGxpc3RfaWR4ID0gY29udGVudHMuaW5kZXgoJ0xp
c3Qgb2YgZmlsZXM6XG4nKSArIDEKKyAgICAgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IGNv
bnRlbnRzW2xpc3RfaWR4Ol0KKyAgICAgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IG1hcChs
YW1iZGEgczogcy5zdHJpcCgpLCBwcmV2aW91c19maWxlX2xpc3QpCisKKyAgICAgICAgZGVsZXRl
ZF9maWxlcyA9IHNldChwcmV2aW91c19maWxlX2xpc3QpIC0gc2V0KG5ld19maWxlX2xpc3QpCisK
KyAgICAgICAgIyBMb29wIHRocm91Z2ggYW5kIHJlbW92ZSB0aGVtIGFsbAorICAgICAgICBmb3Ig
ZGVsZXRlZF9maWxlIGluIGRlbGV0ZWRfZmlsZXM6CisgICAgICAgICAgICBwcmludCAnRGVsZXRp
bmcgZmlsZSByZW1vdmVkIGZyb20gdGhlIFczQyByZXBvOicgKyBkZWxldGVkX2ZpbGUKKyAgICAg
ICAgICAgIGRlbGV0ZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndlYmtpdF9yb290LCBkZWxl
dGVkX2ZpbGUpCisgICAgICAgICAgICBvcy5yZW1vdmUoZGVsZXRlZF9maWxlKQorCisgICAgICAg
IGltcG9ydF9sb2cuY2xvc2UoKQorCisgICAgZGVmIHdyaXRlX2ltcG9ydF9sb2coc2VsZiwgaW1w
b3J0X2RpcmVjdG9yeSwgZmlsZV9saXN0LCBwcm9wX2xpc3QpOgorICAgICAgICAiIiIgV3JpdGVz
IGEgdzNjLWltcG9ydC5sb2cgZmlsZSBpbiBlYWNoIGRpcmVjdG9yeSB3aXRoIGltcG9ydGVkIGZp
bGVzLiAiIiIKKworICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorCisgICAg
ICAgICMgQ3JlYXRlIGEgbG9nIG9mIHRoaXMgaW1wb3J0IHdpdGggYWxsIHNvcnRzIG9mIGdvb2Qg
aW5mb3JtYXRpb24KKyAgICAgICAgaW1wb3J0X2xvZyA9IG9wZW4ob3MucGF0aC5qb2luKGltcG9y
dF9kaXJlY3RvcnksICd3M2MtaW1wb3J0LmxvZycpLCAndycpCisgICAgICAgIGltcG9ydF9sb2cu
d3JpdGUoJ1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LlxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJraXQuIEluc3RlYWQsIHB1c2ggY2hhbmdl
cyB0byB0aGUgVzNDIENTUyByZXBvOlxuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdo
dHRwOi8vaGcuY3Nzd2cub3JnL3Rlc3RcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgn
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJraXQgdG8g
cmVpbXBvcnRcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlXG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLVxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnTGFzdCBJbXBvcnQ6ICcg
KyBub3cuc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNJykgKyAnXG4nKQorICAgICAgICBpbXBvcnRf
bG9nLndyaXRlKCdXM0MgTWVyY3VyaWFsIGNoYW5nZXNldDogJyArIHNlbGYuY2hhbmdlc2V0ICsg
J1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGVzdCBzdGF0dXMgYXQgdGltZSBvZiBp
bXBvcnQ6ICcgKyBzZWxmLnRlc3Rfc3RhdHVzICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdQcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6XG4nKQorICAgICAgICBpZiBsZW4ocHJv
cF9saXN0KSA9PSAwOgorICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnTm9uZVxuJykKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBwcm9wIGluIHByb3BfbGlzdDoKKyAgICAgICAg
ICAgICAgICBpbXBvcnRfbG9nLndyaXRlKHByb3AgKyAnXG4nKQorICAgICAgICBpbXBvcnRfbG9n
LndyaXRlKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xp
c3Qgb2YgZmlsZXM6XG4nKQorICAgICAgICBmb3IgaXRlbSBpbiBmaWxlX2xpc3Q6CisgICAgICAg
ICAgICBpbXBvcnRfbG9nLndyaXRlKGl0ZW0gKyAnXG4nKQorCisgICAgICAgIGltcG9ydF9sb2cu
Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBv
cnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0
ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4MDll
ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1w
b3J0ZXJfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw1MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMg
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCitpbXBv
cnQgb3MKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS53M2Mg
aW1wb3J0IHRlc3RfY29udmVydGVyCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X2ltcG9ydGVyIGlt
cG9ydCBUZXN0SW1wb3J0ZXIKKworV0VCS0lUX1JPT1QgPSBfX2ZpbGVfXy5zcGxpdChvcy5wYXRo
LnNlcCArICdUb29scycpWzBdCisKKworY2xhc3MgVGVzdEltcG9ydGVyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9JbXBvcnREaXJXaXRoTm9UZXN0cyhzZWxmKToKKyAg
ICAgICAgIiIiIFRlc3RzIGRvX2ltcG9ydCgpIHdpdGggYSBkaXJlY3RvcnkgdGhhdCBjb250YWlu
cyBubyB0ZXN0cyAiIiIKKyAgICAgICAgZGlyX3dpdGhfbm9fdGVzdHMgPSBvcy5wYXRoLmpvaW4o
b3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuU09V
UkNFX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfY29udmVydGVyLldFQkNPUkVfU1VCRElSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NT
X1NVQkRJUikKKworICAgICAgICBpbXBvcnRlciA9IFRlc3RJbXBvcnRlcihkaXJfd2l0aF9ub190
ZXN0cywgTm9uZSkKKyAgICAgICAgaW1wb3J0ZXIuZG9faW1wb3J0KCkKKworCisgICAgIyBUT0RP
OiBOZWVkIG1vcmUgdGVzdHMsIGJ1dCB3aGF0IHRvIHVzZSBmb3IgdmFsaWQgc291cmNlIGRpcmVj
dG9yeT8gTWFrZSBpdCBvbiB0aGUgZmx5CisgICAgIyAgICAgICBhbmQgY2xlYW4gaXQgdXAgYWZ0
ZXJ3YXJkPwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJz
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTMyNTU4Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXIucHkKQEAgLTAsMCArMSwxNjAg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAi
QVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GCisjIFNVQ0ggREFNQUdFLgoraW1wb3J0IG9zCitpbXBvcnQgcmUKKworZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAgYXMgUGFyc2Vy
CisKKworY2xhc3MgVGVzdFBhcnNlcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbnMsIGZpbGVuYW1lKToKKyAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucworICAg
ICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi50ZXN0X2RvYyA9IHNl
bGYubG9hZF9maWxlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLnJlZl9kb2MgPSBOb25lCisKKyAg
ICBkZWYgbG9hZF9maWxlKHNlbGYsIGZpbGVfdG9fcGFyc2UpOgorICAgICAgICAiIiIgT3BlbnMg
YW5kIHJlYWQgdGhlIHxmaWxlX3RvX3BhcnNlfCAiIiIKKyAgICAgICAgZG9jID0gTm9uZQorCisg
ICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVfdG9fcGFyc2UpOgorICAgICAgICAgICAgZiA9
IG9wZW4oZmlsZV90b19wYXJzZSkKKyAgICAgICAgICAgIGh0bWwgPSBmLnJlYWQoKQorICAgICAg
ICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgICAgIGRvYyA9IFBhcnNlcihodG1sKQorCisgICAg
ICAgIHJldHVybiBkb2MKKworICAgIGRlZiBhbmFseXplX3Rlc3Qoc2VsZiwgdGVzdF9jb250ZW50
cz1Ob25lLCByZWZfY29udGVudHM9Tm9uZSk6CisgICAgICAgICIiIiBBbmFseXplcyBhIGZpbGUg
dG8gZGV0ZXJtaW5lIGlmIGl0J3MgYSB0ZXN0LCB3aGF0IHR5cGUgb2YgdGVzdCwgYW5kIHdoYXQg
cmVmZXJlbmNlIG9yIHN1cHBvcnQgZmlsZXMgaXQgcmVxdWlyZXMuIFJldHVybnMgYWxsIG9mIHRo
ZSB0ZXN0IGluZm8gIiIiCisKKyAgICAgICAgdGVzdF9pbmZvID0gTm9uZQorCisgICAgICAgIGlm
IHRlc3RfY29udGVudHMgaXMgTm9uZSBhbmQgc2VsZi50ZXN0X2RvYyBpcyBOb25lOgorICAgICAg
ICAgICAgcmV0dXJuIHRlc3RfaW5mbworCisgICAgICAgIGlmIHRlc3RfY29udGVudHMgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBzZWxmLnRlc3RfZG9jID0gUGFyc2VyKHRlc3RfY29udGVudHMp
CisKKyAgICAgICAgaWYgcmVmX2NvbnRlbnRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2Vs
Zi5yZWZfZG9jID0gUGFyc2VyKHJlZl9jb250ZW50cykKKworICAgICAgICAjIEZpcnN0IGNoZWNr
IGlmIGl0J3MgYSByZWZ0ZXN0CisgICAgICAgIG1hdGNoZXMgPSBzZWxmLmdldF9yZWZ0ZXN0cyhU
cnVlKQorICAgICAgICBpZiBsZW4obWF0Y2hlcykgIT0gMDoKKworICAgICAgICAgICAgaWYgbGVu
KG1hdGNoZXMpID4gMToKKyAgICAgICAgICAgICAgICBwcmludCAnV2FybmluZzogV2Via2l0IGRv
ZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcmVmZXJlbmNlcy4gSW1wb3J0aW5nIHRoZSBmaXJzdCBy
ZWYgZGVmaW5lZCBpbiAnICsgb3MucGF0aC5iYXNlbmFtZShzZWxmLmZpbGVuYW1lKQorCisgICAg
ICAgICAgICByZWZfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5maWxl
bmFtZSksIG1hdGNoZXNbMF1bJ2hyZWYnXSkKKyAgICAgICAgICAgIGlmIHNlbGYucmVmX2RvYyBp
cyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYucmVmX2RvYyA9IHNlbGYubG9hZF9maWxlKHJl
Zl9maWxlKQorCisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1l
LCAncmVmZXJlbmNlJzogcmVmX2ZpbGV9CisKKyAgICAgICAgICAgICMgSWYgdGhlIHJlZiBmaWxl
IHBhdGggaXMgcmVsYXRpdmUsIHdlIG5lZWQgdG8gY2hlY2sgaXQgZm9yIHJlbGF0aXZlIHBhdGhz
CisgICAgICAgICAgICAjIGJlY2F1c2Ugd2hlbiBpdCBsYW5kcyBpbiBXZWJraXQsIGl0IHdpbGwg
YmUgbW92ZWQgZG93biBpbnRvIHRoZSB0ZXN0IGRpcgorICAgICAgICAgICAgIyBOb3RlOiBUaGUg
dGVzdCBmaWxlcyB0aGVtc2VsdmVzIGFyZSBub3QgY2hlY2tlZCBmb3Igc3VwcG9ydCBmaWxlcwor
ICAgICAgICAgICAgIyB0aGF0IGxpdmUgb3V0c2lkZSB0aGVpciBkaXJlY3RvcmllcyBhcyBpdCdz
IHRoZSBjb252ZW50aW9uIGluIHRoZSBDU1NXRworICAgICAgICAgICAgIyB0byBwdXQgYWxsIHN1
cHBvcnQgZmlsZXMgaW4gdGhlIHNhbWUgZGlyIG9yIHN1YmRpciBhcyB0aGUgdGVzdC4gQWxsIG5v
bi10ZXN0CisgICAgICAgICAgICAjIGZpbGVzIGluIHRoZSB0ZXN0J3MgZGlyZWN0b3J5IHRyZWUg
YXJlIGF1dG9tYXRpY2FsbHkgY29waWVkIGFzIHBhcnQgb2YgdGhlIGltcG9ydCBhcworICAgICAg
ICAgICAgIyB0aGV5IGFyZSBhc3N1bWVkIHRvIGJlIHJlcXVpcmVkIHN1cHBvcnQgZmlsZXMgVGhl
cmUgaXMgZXhhY3RseSBvbmUgY2FzZSBpbiB0aGUgZW50aXJlCisgICAgICAgICAgICAjIGNzczIu
MSBzdWl0ZSB3aGVyZSBhdCB0ZXN0IGRlcGVuZHMgb24gYSBmaWxlIHRoYXQgbGl2ZXMgaW4gYSBk
aWZmZXJlbnQgZGlyZWN0b3J5LCB3aGljaAorICAgICAgICAgICAgIyBkZXBlbmRzIG9uIGFub3Ro
ZXIgZmlsZSB0aGF0IGxpdmVzIG91dHNpZGUgb2YgaXRzIGRpcmVjdG9yeS4gVGhpcyBjb2RlIGNv
dmVycyB0aGF0IGNhc2UgOikKKyAgICAgICAgICAgIGlmIG1hdGNoZXNbMF1bJ2hyZWYnXS5zdGFy
dHN3aXRoKCcuLicpOgorICAgICAgICAgICAgICAgIHN1cHBvcnRGaWxlcyA9IHNlbGYuZ2V0X3N1
cHBvcnRfZmlsZXMoc2VsZi5yZWZfZG9jKQorICAgICAgICAgICAgICAgIHRlc3RfaW5mb1sncmVm
c3VwcG9ydCddID0gc3VwcG9ydEZpbGVzCisKKyAgICAgICAgIyBOZXh0LCBpZiBpdCdzIGEgSlMg
dGVzdAorICAgICAgICBlbGlmIHNlbGYuaXNfanN0ZXN0KCk6CisgICAgICAgICAgICB0ZXN0X2lu
Zm8gPSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAnanN0ZXN0JzogVHJ1ZX0KKworICAgICAgICAj
IE9yIGlmIHdlIGV4cGxpY2l0bHkgd2FudCBldmVyeXRoaW5nCisgICAgICAgIGVsaWYgc2VsZi5v
cHRpb25zWydhbGwnXSBpcyBUcnVlIGFuZCBcCisgICAgICAgICAgICAgbm90KCctcmVmJyBpbiBz
ZWxmLmZpbGVuYW1lKSBhbmQgXAorICAgICAgICAgICAgIG5vdCgncmVmZXJlbmNlJyBpbiBzZWxm
LmZpbGVuYW1lKToKKyAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5h
bWV9CisKKyAgICAgICAgIyBDb3VydGVzeSBjaGVjayBhbmQgd2FybmluZyBpZiB0aGVyZSBhcmUg
YW55IG1pc21hdGNoZXMKKyAgICAgICAgbWlzbWF0Y2hlcyA9IHNlbGYuZ2V0X3JlZnRlc3RzKEZh
bHNlKQorICAgICAgICBpZiBsZW4obWlzbWF0Y2hlcykgIT0gMDoKKyAgICAgICAgICAgIHByaW50
ICJXYXJuaW5nOiBXZWJraXQgZG9lcyBub3Qgc3VwcG9ydCBtaXNtYXRjaCByZWZlcmVuY2VzLiBJ
Z25vcmluZyBtaXNtYXRjaCBkZWZpbmVkIGluICIgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZmls
ZW5hbWUpCisKKyAgICAgICAgcmV0dXJuIHRlc3RfaW5mbworCisgICAgZGVmIGdldF9yZWZ0ZXN0
cyhzZWxmLCBmaW5kX21hdGNoKToKKyAgICAgICAgIiIiIFNlYXJjaGVzIGZvciBhbGwgcmVmZXJl
bmNlIGxpbmtzIGluIHRoZSBmaWxlLiBJZiB8ZmluZF9tYXRjaHwgaXMgc2VhcmNoZXMgZm9yIG1h
dGNoZXMsIG90aGVyd2lzZSBmb3IgbWlzbWF0Y2hlcyAiIiIKKworICAgICAgICBpZiBmaW5kX21h
dGNoOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9kb2MuZmluZEFsbChyZWw9J21hdGNo
JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRlc3RfZG9jLmZpbmRB
bGwocmVsPSdtaXNtYXRjaCcpCisKKyAgICBkZWYgaXNfanN0ZXN0KHNlbGYpOgorICAgICAgICAi
IiIgU2VhcmNoZXMgdGhlIGZpbGUgZm9yIHVzYWdlIG9mIFczQy1zdHlsZSB0ZXN0aGFybmVzcyBw
YXRocyAiIiIKKworICAgICAgICBpZiBzZWxmLnRlc3RfZG9jLmZpbmQoc3JjPXJlLmNvbXBpbGUo
J1tcJ1wiL10/L3Jlc291cmNlcy90ZXN0aGFybmVzcycpKSBpcyBOb25lOgorICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisg
ICAgZGVmIGdldF9zdXBwb3J0X2ZpbGVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIiBTZWFyY2hl
cyB0aGUgZmlsZSBmb3IgYWxsIHBhdGhzIHNwZWNpZmllZCBpbiB1cmwoKSdzLCBocmVmIG9yIHNy
YyBhdHRyaWJ1dGVzICIiIgorCisgICAgICAgIHN1cHBvcnRfZmlsZXMgPSBbXQorCisgICAgICAg
IGlmIGRvYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMKKworICAg
ICAgICAjIExvb2sgZm9yIHRhZ3Mgd2l0aCBzcmMgb3IgaHJlZiBhdHRyaWJ1dGVzCisgICAgICAg
IHNyY19hdHRycyA9IGRvYy5maW5kQWxsKHNyYz1yZS5jb21waWxlKCcuKicpKQorICAgICAgICBo
cmVmX2F0dHJzID0gZG9jLmZpbmRBbGwoaHJlZj1yZS5jb21waWxlKCcuKicpKQorCisgICAgICAg
ICMgTG9vayBmb3IgdXJscworICAgICAgICB1cmxfcGF0dGVybiA9IHJlLmNvbXBpbGUoJ3VybFwo
LipcKScpCisgICAgICAgIHVybHMgPSBbXQorICAgICAgICBmb3IgdXJsIGluIGRvYy5maW5kQWxs
KHRleHQ9dXJsX3BhdHRlcm4pOgorICAgICAgICAgICAgdXJsID0gcmUuc2VhcmNoKHVybF9wYXR0
ZXJuLCB1cmwpCisgICAgICAgICAgICB1cmwgPSByZS5zdWIoJ3VybFwoW1wnXCJdJywgJycsIHVy
bC5ncm91cCgwKSkKKyAgICAgICAgICAgIHVybCA9IHJlLnN1YignW1wnXCJdXCknLCAnJywgdXJs
KQorICAgICAgICAgICAgdXJscy5hcHBlbmQodXJsKQorCisgICAgICAgIHNyY19wYXRocyA9IFtz
cmNfdGFnWydzcmMnXSBmb3Igc3JjX3RhZyBpbiBzcmNfYXR0cnNdCisgICAgICAgIGhyZWZfcGF0
aHMgPSBbaHJlZl90YWdbJ2hyZWYnXSBmb3IgaHJlZl90YWcgaW4gaHJlZl9hdHRyc10KKworICAg
ICAgICBwYXRocyA9IHNyY19wYXRocyArIGhyZWZfcGF0aHMgKyB1cmxzCisgICAgICAgIGZvciBw
YXRoIGluIHBhdGhzOgorICAgICAgICAgICAgIyBJZ25vcmUgaHR0cCBhbmQgbWFpbHRvIGxpbmtz
CisgICAgICAgICAgICBpZiBub3QocGF0aC5zdGFydHN3aXRoKCdodHRwOicpKSBhbmQgXAorICAg
ICAgICAgICAgICAgbm90KHBhdGguc3RhcnRzd2l0aCgnbWFpbHRvOicpKToKKyAgICAgICAgICAg
ICAgICBzdXBwb3J0X2ZpbGVzLmFwcGVuZChwYXRoKQorCisgICAgICAgIHJldHVybiBzdXBwb3J0
X2ZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNl
cl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3Vu
aXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NDRjZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91
bml0dGVzdC5weQpAQCAtMCwwICsxLDI1MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMg
Q29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
KyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCitpbXBvcnQgb3MK
K2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVz
dAorCitmcm9tIHdlYmtpdHB5LnczYy50ZXN0X3BhcnNlciBpbXBvcnQgVGVzdFBhcnNlcgorCisK
K29wdGlvbnMgPSB7J2FsbCc6IEZhbHNlLCAnbm9fb3ZlcndyaXRlJzogRmFsc2V9CisKKworY2xh
c3MgVGVzdFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW5h
bHl6ZVRlc3RSZWZ0ZXN0T25lTWF0Y2goc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXpl
X3Rlc3QoKSB1c2luZyBhIGJhc2ljIHJlZnRlc3Qgd2l0aCBvbmUgbWF0Y2ggbGluayBhbmQgbm8g
bWlzbWF0Y2ggbGlua3MgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Cis8bGlu
ayByZWw9Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KKzwvaGVhZD4KKyIiIgor
ICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIg
PSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAg
ICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRt
bCkKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCisg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdF9pbmZvLCBOb25lLCAnZGlkIG5vdCBmaW5k
IGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtl
eXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgcmVmZXJl
bmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdF9pbmZvWydyZWZlcmVuY2Un
XS5zdGFydHN3aXRoKHRlc3RfcGF0aCksICdyZWZlcmVuY2UgcGF0aCBpcyBub3QgY29ycmVjdCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlz
KCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
dGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBhbmFseXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBk
ZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RNdWx0aXBsZU1hdGNoZXMoc2VsZik6CisgICAgICAg
ICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHJlZnRlc3Qgd2l0aCBtdWx0aXBsZSBt
YXRjaCBsaW5rcyBhbmQgbm8gbWlzbWF0Y2ggbGlua3MgIiIiCisKKyAgICAgICAgdGVzdF9odG1s
ID0gIiIiPGhlYWQ+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIg
Lz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsdWUtYm94LXJlZi54aHQiIC8+Cis8bGluayBy
ZWw9Im1hdGNoIiBocmVmPSJvcmFuZ2UtYm94LXJlZi54aHQiIC8+Cis8L2hlYWQ+CisiIiIKKyAg
ICAgICAgIyBDYXB0dXJlIHN0ZG91dCBmb3IgdGhpcyB0ZXN0CisgICAgICAgIHN0ZG91dCA9IHN5
cy5zdGRvdXQKKyAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBz
eXMuc3Rkb3V0ID0gb3V0cHV0CisKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAg
IHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQ
YXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0
X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisg
ICAgICAgICMgUmVzdG9yZSBzdGRvdXQKKyAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAorCisg
ICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0
JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
ZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZl
cmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmls
ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0
c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Ro
ZXJlIHNob3VsZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNo
b3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0JykKKworICAgICAgICAjIFZl
cmlmeSB3ZSBnb3QgdGhlIHdhcm5pbmcgYWJvdXQgbXVsdGlwbGUgbWF0Y2hlcworICAgICAgICBz
ZWxmLmFzc2VydFRydWUob3V0cHV0LmdldHZhbHVlKCkuc3RhcnRzd2l0aCgnV2FybmluZycpLCAn
bm8gd2FybmluZyBhYm91dCBtdWx0aXBsZSBtYXRjaGVzJykKKworICAgIGRlZiB0ZXN0X2FuYWx5
emVUZXN0UmVmdGVzdE1hdGNoQW5kTWlzbWF0Y2goc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBh
bmFseXplX3Rlc3QoKSB1c2luZyBhIHJlZnRlc3Qgd2l0aCBhIG9uZSBtYXRjaCBsaW5rIGFuZCBv
bmUgbWlzbWF0Y2ggbGluayAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aGVhZD4KKzxs
aW5rIHJlbD0ibWF0Y2giIGhyZWY9ImdyZWVuLWJveC1yZWYueGh0IiAvPgorPGxpbmsgcmVsPSJt
YXRjaCIgaHJlZj0iYmx1ZS1ib3gtcmVmLnhodCIgLz4KKzxsaW5rIHJlbD0ibWlzbWF0Y2giIGhy
ZWY9Im9yYW5nZS1ib3gtbm90cmVmLnhodCIgLz4KKzwvaGVhZD4KKyIiIgorICAgICAgICAjIENh
cHR1cmUgc3Rkb3V0IGZvciB0aGlzIHRlc3QKKyAgICAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAor
ICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHN5cy5zdGRvdXQg
PSBvdXRwdXQKKworICAgICAgICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVzdF9wYXRo
ID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRp
b25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBh
cnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgIyBS
ZXN0b3JlIHN0ZG91dAorICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisKKyAgICAgICAgIyBW
ZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2Vy
dE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZp
bmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4g
dGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfaW5mb1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0
X3BhdGgpLCAncmVmZXJlbmNlIHBhdGggaXMgbm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxk
IGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gYW5hbHl6ZWQgYXMgYSBqc3Rlc3QnKQorCisgICAgICAgICMgVmVyaWZ5IHdlIGdv
dCBtdWx0aXBsZSB3YXJuaW5ncworICAgICAgICB3YXJuaW5ncyA9IG91dHB1dC5nZXR2YWx1ZSgp
LnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4od2FybmluZ3MpLCAy
LCAnYWxsIHdhcm5pbmdzIHdlcmUgbm90IGRpc3BsYXllZCcpCisgICAgICAgICMgVmVyaWZ5IHRo
ZSBib3RoIHdhcm5pbmdzIG1lbnRpb24gdGhlIGlzc3VlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgnbXVsdGlwbGUgbWF0Y2hlcycsICdubyB3YXJuaW5nIGFib3V0IG11bHRpcGxlIG1hdGNoZXMn
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ21pc21hdGNoJywgJ25vIHdhcm5pbmcgYWJvdXQg
bWlzbWF0Y2hlcycpCisKKyAgICBkZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RXaXRoUmVmU3Vw
cG9ydEZpbGVzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcg
YSByZWZ0ZXN0IHRoYXQgaGFzIHJlZmVycyB0byBhIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUgb2Yg
dGhlIHRlc3RzIGRpcmVjdG9yeSBhbmQgdGhlIHJlZmVyZW5jZSBmaWxlIGhhcyBwYXRocyB0byBv
dGhlciBzdXBwb3J0IGZpbGVzICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSIuLi9yZWZlcmVuY2UvZ3JlZW4tYm94LXJl
Zi54aHQiIC8+Cis8L2hlYWQ+CisiIiIKKyAgICAgICAgcmVmX2h0bWwgPSAiIiI8aGVhZD4KKzxs
aW5rIGhyZWY9InN1cHBvcnQvY3NzL3JlZi1zdHlsZXNoZWV0LmNzcyIgcmVsPSJzdHlsZXNoZWV0
IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCgiLi4vLi4vc3VwcG9ydC9zb21lLWltYWdlLnBuZyIpCis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2PjxpbWcgc3JjPSIuLi9zdXBwb3J0L2JsYWNrOTZ4OTYucG5n
IiBhbHQ9IkltYWdlIGRvd25sb2FkIHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIiAvPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgorIiIiCisgICAgICAgICMgQW5hbHl6ZSB0aGUgdGVzdAorICAgICAg
ICB0ZXN0X3BhdGggPSAnL3NvbWUvbWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0
UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVz
dF9pbmZvID0gcGFyc2VyLmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCwgcmVm
X2NvbnRlbnRzPXJlZl9odG1sKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3Qg
aW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5v
bmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0
JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQg
bm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0
X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRo
IGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZzdXBwb3J0JyBp
biB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIHJlZnN1cHBvcnQgZmlsZXMgZm9y
IHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbih0ZXN0X2luZm9bJ3Jl
ZnN1cHBvcnQnXSksIDMsICd0aGVyZSBzaG91bGQgYmUgMyBzdXBwb3J0IGZpbGVzIGluIHRoaXMg
cmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2lu
Zm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBhbmFseXplZCBhcyBhIGpzdGVz
dCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplSlNUZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGVz
dHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSBqc3Rlc3QgIiIiCisKKyAgICAgICAgdGVzdF9odG1s
ID0gIiIiPGhlYWQ+Cis8bGluayBocmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVs
PSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisiIiIKKyAgICAgICAgIyBBbmFseXpl
IHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAg
ICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0
bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVu
dHM9dGVzdF9odG1sKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3
YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0
ZXN0X2luZm8gaXMgTm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVz
dF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBo
YXZlIGZvdW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdy
ZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1
cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnanN0
ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgYmUgYSBqc3Rlc3QnKQorCisg
ICAgZGVmIHRlc3RfYW5hbHl6ZVBpeGVsVGVzdEFsbFRydWUoc2VsZik6CisgICAgICAgICIiIiBU
ZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVz
dCBvciBqc3Rlc3Qgd2l0aCBhbGw9RmFsc2UgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIi
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0
bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiAvPgorPHN0eWxl
IHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorQ09OVEVOVCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAg
ICAgICAgIyBTZXQgb3B0aW9ucyB0byAnYWxsJyBzbyB0aGlzIGdldHMgZm91bmQKKyAgICAgICAg
b3B0aW9uc1snYWxsJ10gPSBUcnVlCisKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAg
ICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRl
c3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0
ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQor
CisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9u
ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwg
J2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3Jl
ZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVm
ZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0
ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9y
IHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9p
bmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5vdCBiZSBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVz
dF9hbmFseXplUGl4ZWxUZXN0QWxsRmFsc2Uoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFs
eXplX3Rlc3QoKSB1c2luZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rl
c3QsIHdpdGggLWFsbD1GYWxzZSAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aHRtbD4K
KzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxs
aW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiIC8+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAj
IFNldCBhbGwgdG8gZmFsc2Ugc28gdGhpcyBnZXRzIHNraXBwZWQKKyAgICAgICAgb3B0aW9uc1sn
YWxsJ10gPSBGYWxzZQorCisgICAgICAgICMgQW5hbHl6ZSB0aGUgdGVzdAorICAgICAgICB0ZXN0
X3BhdGggPSAnL3NvbWUvbWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2Vy
KG9wdGlvbnMsIHRlc3RfcGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZv
ID0gcGFyc2VyLmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAg
ICAjIFZlcmlmeSB0aGUgY29ycmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodGVzdF9pbmZvLCBOb25lLCAndGVzdCBzaG91bGQgaGF2ZSBiZWVuIHNraXBw
ZWQnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZU5vbkhUTUxGaWxlKHNlbGYpOgorICAgICAgICAi
IiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgd2l0aCBhIGZpbGUgdGhpcyBpc24ndCBodG1sICh0aGlz
IG9uZSEpICIiIgorCisgICAgICAgICMgVHJ5IHRvIGFuYWx5emUgdGhlIHNjcmlwdCBmaWxlIHdl
J3JlIHRlc3RpbmcgKGhvdyBtZXRhKQorICAgICAgICB0ZXN0X3BhcnNlcl9weV9maWxlID0gb3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICd0ZXN0X3BhcnNlci5weScpCisK
KyAgICAgICAgIyBBbmFseXplIHRoZSBmaWxlCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIo
b3B0aW9ucywgdGVzdF9wYXJzZXJfcHlfZmlsZSkKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2Vy
LmFuYWx5emVfdGVzdCgpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZv
IHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ25v
IHRlc3RzIHNob3VsZCBoYXZlIGJlZW4gZm91bmQgaW4gdGhpcyBmaWxlJykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201279</attachid>
            <date>2013-05-09 15:02:45 -0700</date>
            <delta_ts>2013-05-09 19:09:14 -0700</delta_ts>
            <desc>cleaned-up patch for relanding</desc>
            <filename>bug-111513-20130509150148.patch</filename>
            <type>text/plain</type>
            <size>73856</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5ODM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjIxNTAxYzI0MzA5MmEwZGZlMWFjNmI5OWMwNmZmN2Vk
MWE3M2I5ZC4uMWE3ODQwMWY0YTNmMjRhNDc2OTU5NThkYjhmNTMzOTg1MzgzM2RjZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgw
IEBACisyMDEzLTA1LTA5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRlc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRv
IHJlLWxhbmQgdGhlICdpbXBvcnQtdzNjLXRlc3RzJworICAgICAgICBzY3JpcHQgYW5kIGFjY29t
cGFueWluZyBtb2R1bGVzLiBUaGUgdGVzdHMgYW5kIGNvZGUgaGF2ZQorICAgICAgICBiZWVuIGNs
ZWFuZWQgdXAgc28gdGhhdCB3ZSBkbyBub3QgbG9nIGFueXRoaW5nIHRvIHN0ZG91dC9zdGRlcnIK
KyAgICAgICAgd2hpbGUgcnVubmluZyB0aGUgdGVzdHMgKHRoYW5rcyB0byBvdXRwdXRjYXB0dXJl
KSBhbmQgZG8gbm90CisgICAgICAgIHdyaXRlIGludG8gdGhlIHNvdXJjZSB0cmVlIHdoaWxlIHJ1
bm5pbmcgdGhlIHRlc3RzLgorCisgICAgICAgIFRoZSBjb2RlIHNob3VsZCBzdGlsbCBiZSBjb252
ZXJ0ZWQgb3ZlciB0byB0aGUgd2Via2l0cHkgc3lzdGVtCisgICAgICAgIGFic3RyYWN0aW9ucywg
YnV0IEknZCBwcmVmZXIgdG8gbGFuZCB0aGlzIGFzLWlzIGFuZCB0aGVuIG1ha2UKKyAgICAgICAg
dGhvc2UgY2hhbmdlcyBpbmNyZW1lbnRhbGx5IGFmdGVyd2FyZHMuCisKKyAgICAgICAgKiBTY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dzNjL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlci5weTogQWRkZWQuCisgICAgICAgIChUZXN0Q29udmVydGVyKToKKyAgICAg
ICAgKFRlc3RDb252ZXJ0ZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdENvbnZlcnRlci5sb2Fk
X3ByZWZpeGVkX3Byb3BfbGlzdCk6CisgICAgICAgIChUZXN0Q29udmVydGVyLmxvYWRfZmlsZSk6
CisgICAgICAgIChUZXN0Q29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdCk6CisgICAgICAgIChU
ZXN0Q29udmVydGVyLmNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMpOgorICAgICAgICAoVGVzdENv
bnZlcnRlci5jb252ZXJ0X3ByZWZpeGVkX3Byb3BlcnRpZXMpOgorICAgICAgICAoVGVzdENvbnZl
cnRlci5zY3J1Yl91bnByZWZpeGVkX3Byb3BzKToKKyAgICAgICAgKFRlc3RDb252ZXJ0ZXIucmVw
bGFjZV90YWcpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVy
X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RDb252ZXJ0ZXJUZXN0KToKKyAgICAg
ICAgKFRlc3RDb252ZXJ0ZXJUZXN0LnRlc3RMb2FkUHJlZml4ZWRQcm9wTGlzdCk6CisgICAgICAg
IChUZXN0Q29udmVydGVyVGVzdC50ZXN0X2NvbnZlcnRGb3JXZWJraXROb3RoaW5nVG9Db252ZXJ0
KToKKyAgICAgICAgKHRlc3RfY29udmVydEZvcldlYmtpdEhhcm5lc3NPbmx5KToKKyAgICAgICAg
KHRlc3RfY29udmVydEZvcldlYmtpdFByb3BzT25seSk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRG
b3JXZWJraXRIYXJuZXNzQW5kUHJvcHMpOgorICAgICAgICAodGVzdF9jb252ZXJ0VGVzdEhhcm5l
c3NQYXRocyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRQcmVmaXhlZFByb3BlcnRpZXMpOgorICAg
ICAgICAodmVyaWZ5VGVzdEhhcm5lc3NQYXRocyk6CisgICAgICAgICh2ZXJpZnlQcmVmaXhlZFBy
b3BlcnRpZXMpOgorICAgICAgICAoZ2VuZXJhdGVUZXN0Q29udGVudCk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weTogQWRkZWQuCisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAodmFsaWRhdGVfaW1wb3J0X2RpcmVj
dG9yeSk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIpOgorICAgICAgICAoVGVzdEltcG9ydGVyLl9f
aW5pdF9fKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5kb19pbXBvcnQpOgorICAgICAgICAoVGVz
dEltcG9ydGVyLmdldF9jaGFuZ2VzZXQpOgorICAgICAgICAoVGVzdEltcG9ydGVyLnNjYW5fc291
cmNlX2RpcmVjdG9yeSk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAg
ICAgICAgKFRlc3RJbXBvcnRlci5zZXR1cF9kZXN0aW5hdGlvbl9kaXJlY3RvcnkpOgorICAgICAg
ICAoVGVzdEltcG9ydGVyLmdldF90ZXN0X3N0YXR1cyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIu
cmVtb3ZlX2RlbGV0ZWRfZmlsZXMpOgorICAgICAgICAoVGVzdEltcG9ydGVyLndyaXRlX2ltcG9y
dF9sb2cpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5p
dHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdEltcG9ydGVyVGVzdCk6CisgICAgICAgIChU
ZXN0SW1wb3J0ZXJUZXN0LnRlc3RfSW1wb3J0RGlyV2l0aE5vVGVzdHMpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RQ
YXJzZXIpOgorICAgICAgICAoVGVzdFBhcnNlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0UGFy
c2VyLmxvYWRfZmlsZSk6CisgICAgICAgIChUZXN0UGFyc2VyLmFuYWx5emVfdGVzdCk6CisgICAg
ICAgIChUZXN0UGFyc2VyLmdldF9yZWZ0ZXN0cyk6CisgICAgICAgIChUZXN0UGFyc2VyLmlzX2pz
dGVzdCk6CisgICAgICAgIChUZXN0UGFyc2VyLmdldF9zdXBwb3J0X2ZpbGVzKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weTogQWRkZWQuCisg
ICAgICAgIChUZXN0UGFyc2VyVGVzdCk6CisgICAgICAgIChUZXN0UGFyc2VyVGVzdC50ZXN0X2Fu
YWx5emVUZXN0UmVmdGVzdE9uZU1hdGNoKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0
ZXN0TXVsdGlwbGVNYXRjaGVzKToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0TWF0
Y2hBbmRNaXNtYXRjaCk6CisgICAgICAgICh0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdFdpdGhSZWZT
dXBwb3J0RmlsZXMpOgorICAgICAgICAodGVzdF9hbmFseXplSlNUZXN0KToKKyAgICAgICAgKHRl
c3RfYW5hbHl6ZVBpeGVsVGVzdEFsbFRydWUpOgorICAgICAgICAodGVzdF9hbmFseXplUGl4ZWxU
ZXN0QWxsRmFsc2UpOgorICAgICAgICAodGVzdF9hbmFseXplTm9uSFRNTEZpbGUpOgorCiAyMDEz
LTA1LTA5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIFNpbW9uIFBlbmEgZW1haWwgb24gaGlzIGJlaGFs
Zi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBiL1Rvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjcyMDk2YzA2MTU2YjNlZTUxODQy
ZWNlOWM3Yzk5ZDQyOTFmODJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzCkBAIC0wLDAgKzEsMzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisj
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIwor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
c3lzCisKK2Zyb20gd2Via2l0cHkudzNjIGltcG9ydCB0ZXN0X2ltcG9ydGVyCisKKworc3lzLmV4
aXQodGVzdF9pbXBvcnRlci5tYWluKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCwgc3lzLnN0ZGVy
cikpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9fX2luaXRfXy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNjVi
ZWU1YmI3N2U5NmViYzdjZDljNDc2NDA2OTBmYmRhOGFjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFJl
cXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmls
ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDE4ZmEyMWYzYjcwODhiMTgyOTIzMmU4YWY0Y2JkY2EyNzRlMzM5YgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CkBA
IC0wLDAgKzEsMjA0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMp
IDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAg
ICBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GCisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KK2ltcG9ydCByZQoraW1wb3J0IG9zCisK
K2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxT
b3VwLCBUYWcKKworU09VUkNFX1NVQkRJUiA9ICdTb3VyY2UnCitXRUJDT1JFX1NVQkRJUiA9ICdX
ZWJDb3JlJworQ1NTX1NVQkRJUiA9ICdjc3MnCitDU1NfUFJPUEVSVFlfTkFNRVNfSU4gPSAnQ1NT
UHJvcGVydHlOYW1lcy5pbicKK0xBWU9VVF9URVNUU19ESVJFQ1RPUlkgPSAnTGF5b3V0VGVzdHMn
CitSRVNPVVJDRVNfRElSRUNUT1JZID0gJ3Jlc291cmNlcycKK1dFQktJVF9ST09UID0gX19maWxl
X18uc3BsaXQob3MucGF0aC5zZXAgKyAnVG9vbHMnKVswXQorCisKK2NsYXNzIFRlc3RDb252ZXJ0
ZXIob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5wcmVm
aXhlZF9wcm9wZXJ0aWVzID0gc2VsZi5sb2FkX3ByZWZpeGVkX3Byb3BfbGlzdCgpCisKKyAgICBk
ZWYgbG9hZF9wcmVmaXhlZF9wcm9wX2xpc3Qoc2VsZik6CisgICAgICAgICIiIiBSZWFkcyB0aGUg
Y3VycmVudCBsaXN0IG9mIENTUyBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJl
Zml4IGZyb20gU291cmNlL1dlYkNvcmUvQ1NTL0NTU1Byb3BlcnR5TmFtZXMuaW4gYW5kIHN0b3Jl
cyB0aGVtIGluIGFuIGluc3RhbmNlIHZhcmlhYmxlICIiIgorCisgICAgICAgIHByZWZpeGVkX3By
b3BfbGlzdCA9IFtdCisKKyAgICAgICAgIyBPcGVuIENTU1Byb3BlcnR5TmFtZXMuaW4gdG8gZ2V0
IHRoZSBjdXJyZW50IGxpc3Qgb2YgdGhpbmdzIHJlcXVpcmluZyBwcmVmaXhlcworICAgICAgICBm
ID0gb3Blbihvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIFdFQktJVF9ST09ULCBTT1VSQ0VfU1VC
RElSLCBXRUJDT1JFX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NfU1VCRElSLCBDU1NfUFJPUEVSVFlfTkFNRVNfSU4pKQorICAgICAgICBsaW5l
cyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAg
ICAjIExvb2sgZm9yIGFueXRoaW5nIHdpdGggdGhlIC13ZWJraXQtIHByZWZpeAorICAgICAgICAg
ICAgbWF0Y2ggPSByZS5zZWFyY2goJ14td2Via2l0LVtcd3wtXSonLCBsaW5lKQorICAgICAgICAg
ICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgdGhlIG9u
ZXMgd2hlcmUgYm90aCB0aGUgcHJlZml4ZWQgYW5kIG5vbi1wcmVmaXhlZCBwcm9wZXJ0eQorICAg
ICAgICAgICAgICAgICMgYXJlIHN1cHBvcnRlZCAtIGRlbm90ZWQgYnkgLXdlYmtpdC1zb21lLXBy
b3BlcnR5ID0gc29tZS1wcm9wZXJ0eQorICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lLnNwbGl0
KCc9JykpID09IDIgYW5kIFwKKyAgICAgICAgICAgICAgICAgICBsaW5lLnNwbGl0KCc9JylbMV0u
c3RyaXAoKSBpbiBsaW5lLnNwbGl0KCc9JylbMF0uc3RyaXAoKToKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBw
cmVmaXhlZF9wcm9wX2xpc3QuYXBwZW5kKG1hdGNoLmdyb3VwKDApKQorCisgICAgICAgIHJldHVy
biBwcmVmaXhlZF9wcm9wX2xpc3QKKworICAgIGRlZiBsb2FkX2ZpbGUoc2VsZiwgZmlsZW5hbWUp
OgorICAgICAgICAiIiIgT3BlbnMgdGhlIHRlc3QgZmlsZSB8ZmlsZW5hbWV8IHRvIGNvbnZlcnQg
IiIiCisKKyAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUpCisgICAgICAgIGNvbnRlbnRzID0gZi5y
ZWFkKCkKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzCisKKyAg
ICBkZWYgY29udmVydF9mb3Jfd2Via2l0KHNlbGYsIG5ld19wYXRoLCBjb250ZW50cz1Ob25lLCBm
aWxlbmFtZT1Ob25lKToKKyAgICAgICAgIiIiIENvbnZlcnRzIGEgZmlsZSdzIHxjb250ZW50c3wg
c28gaXQgd2lsbCBmdW5jdGlvbiBjb3JyZWN0bHkgaW4gaXRzIHxuZXdfcGF0aHwgaW4gV2Via2l0
LiBSZXR1cm5zIHRoZSBsaXN0IG9mIHByZWZpeGVkIENTUyBwcm9wZXJ0aWVzIGFuZCB0aGUgbW9k
aWZpZWQgY29udGVudHMuIiIiCisKKyAgICAgICAgaWYgY29udGVudHMgaXMgTm9uZSBhbmQgZmls
ZW5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgY29u
dGVudHMgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5sb2FkX2ZpbGUoZmls
ZW5hbWUpCisKKyAgICAgICAgIyBIYW5kbGUgcGxhaW4gb2xkIENTUyBmaWxlcworICAgICAgICBp
ZiBmaWxlbmFtZS5lbmRzd2l0aCgnLmNzcycpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2Ny
dWJfdW5wcmVmaXhlZF9wcm9wcyhjb250ZW50cykKKworICAgICAgICAjIE90aGVyd2lzZSwgcGFy
c2UgaXQgYXMgaWYgSFRNTAorICAgICAgICBkb2MgPSBCZWF1dGlmdWxTb3VwKGNvbnRlbnRzKQor
ICAgICAgICBqc3Rlc3QgPSBzZWxmLmNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMoZG9jLCBuZXdf
cGF0aCkKKyAgICAgICAgY29udmVydGVkID0gc2VsZi5jb252ZXJ0X3ByZWZpeGVkX3Byb3BlcnRp
ZXMoZG9jKQorCisgICAgICAgIGlmIGxlbihjb252ZXJ0ZWRbMF0pID4gMCBvciBqc3Rlc3QgaXMg
VHJ1ZToKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZWQKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgY29udmVydF90ZXN0aGFybmVzc19wYXRocyhz
ZWxmLCBkb2MsIG5ld19wYXRoKToKKyAgICAgICAgIiIiIFVwZGF0ZSBsaW5rcyB0byB0ZXN0aGFy
bmVzcy5qcyBpbiB0aGUgQmVhdXRpZnVsU291cCB8ZG9jfCB0byBwb2ludCB0byB0aGUgY29weSBp
biB8bmV3X3BhdGh8LiBSZXR1cm5zIHdoZXRoZXIgdGhlIGRvY3VtZW50IHdhcyBtb2RpZmllZC4i
IiIKKworICAgICAgICAjIExvb2sgZm9yIHRoZSBXM0Mtc3R5bGUgcGF0aCB0byBhbnkgdGVzdGhh
cm5lc3MgZmlsZXMgLSBzY3JpcHRzICguanMpIG9yIGxpbmtzICguY3NzKQorICAgICAgICBwYXR0
ZXJuID0gcmUuY29tcGlsZSgnL3Jlc291cmNlcy90ZXN0aGFybmVzcycpCisgICAgICAgIHNjcmlw
dF90YWdzID0gZG9jLmZpbmRBbGwoc3JjPXBhdHRlcm4pCisgICAgICAgIGxpbmtfdGFncyA9IGRv
Yy5maW5kQWxsKGhyZWY9cGF0dGVybikKKyAgICAgICAgdGVzdGhhcm5lc3NfdGFncyA9IHNjcmlw
dF90YWdzICsgbGlua190YWdzCisKKyAgICAgICAgaWYgbGVuKHRlc3RoYXJuZXNzX3RhZ3MpICE9
IDA6CisKKyAgICAgICAgICAgICMgQ29uc3RydWN0IHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhl
IG5ldyBkaXJlY3RvcnkgdG8gTGF5b3V0VGVzdHMvcmVzb3VyY2VzCisgICAgICAgICAgICByZXNv
dXJjZXNfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgV0VCS0lUX1JPT1QsIExBWU9V
VF9URVNUU19ESVJFQ1RPUlksIFJFU09VUkNFU19ESVJFQ1RPUlkpCisgICAgICAgICAgICByZXNv
dXJjZXNfcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aChyZXNvdXJjZXNfcGF0aCwgbmV3X3BhdGgp
CisKKyAgICAgICAgICAgIGZvciB0YWcgaW4gdGVzdGhhcm5lc3NfdGFnczoKKyAgICAgICAgICAg
ICAgICAjIEJ1aWxkIGEgbmV3IHRhZyB3aXRoIHRoZSBjb3JyZWN0IHBhdGgKKyAgICAgICAgICAg
ICAgICBhdHRyID0gJ3NyYycKKyAgICAgICAgICAgICAgICBpZiB0YWcubmFtZSAhPSAnc2NyaXB0
JzoKKyAgICAgICAgICAgICAgICAgICAgYXR0ciA9ICdocmVmJworCisgICAgICAgICAgICAgICAg
IyBCdWlsZCBhIG5ldyB0YWcgd2l0aCB0aGUgY29ycmVjdCByZWxhdGl2ZSBwYXRoCisgICAgICAg
ICAgICAgICAgb2xkX3BhdGggPSB0YWdbYXR0cl0KKyAgICAgICAgICAgICAgICBuZXdfdGFnID0g
VGFnKGRvYywgdGFnLm5hbWUsIHRhZy5hdHRycykKKyAgICAgICAgICAgICAgICBuZXdfdGFnW2F0
dHJdID0gcmUuc3ViKHBhdHRlcm4sIHJlc291cmNlc19yZWxwYXRoICsgJy90ZXN0aGFybmVzcycs
IG9sZF9wYXRoKQorCisgICAgICAgICAgICAgICAgIyBVcGRhdGUgdGhlIGRvYyB3aXRoIHRoZSBu
ZXcgdGFnCisgICAgICAgICAgICAgICAgc2VsZi5yZXBsYWNlX3RhZyhkb2MsIHRhZywgbmV3X3Rh
ZykKKworICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgZGVmIGNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhzZWxm
LCBkb2MpOgorICAgICAgICAiIiIgU2VhcmNoZXMgYSBCZWF1dGlmdWxTb3VwIHxkb2N8IGZvciBh
bnkgQ1NTIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggYW5kIGNvbnZl
cnRzIHRoZW0uIFJldHVybnMgdGhlIGxpc3Qgb2YgY29udmVydGVkIHByb3BlcnRpZXMgYW5kIHRo
ZSBtb2RpZmllZCBkb2N1bWVudCBhcyBhIHN0cmluZyAiIiIKKworICAgICAgICBjb252ZXJ0ZWRf
cHJvcHMgPSBbXQorCisgICAgICAgICMgTG9vayBmb3IgaW5saW5lIGFuZCBkb2N1bWVudCBzdHls
ZXMKKyAgICAgICAgaW5saW5lX3N0eWxlcyA9IGRvYy5maW5kQWxsKHN0eWxlPXJlLmNvbXBpbGUo
Jy4qJykpCisgICAgICAgIHN0eWxlX3RhZ3MgPSBkb2MuZmluZEFsbCgnc3R5bGUnKQorICAgICAg
ICBhbGxfc3R5bGVzID0gaW5saW5lX3N0eWxlcyArIHN0eWxlX3RhZ3MKKworICAgICAgICBmb3Ig
dGFnIGluIGFsbF9zdHlsZXM6CisKKyAgICAgICAgICAgICMgR2V0IHRoZSB0ZXh0IHdoZXRoZXIg
aW4gYSBzdHlsZSB0YWcgb3Igc3R5bGUgYXR0cmlidXRlCisgICAgICAgICAgICBzdHlsZV90ZXh0
ID0gJycKKyAgICAgICAgICAgIGlmIHRhZy5uYW1lID09ICdzdHlsZSc6CisgICAgICAgICAgICAg
ICAgaWYgbGVuKHRhZy5jb250ZW50cykgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzdHlsZV90ZXh0
ID0gdGFnLmNvbnRlbnRzWzBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0
eWxlX3RleHQgPSB0YWdbJ3N0eWxlJ10KKworICAgICAgICAgICAgIyBTY3J1YiBpdCBmb3IgcHJv
cHMgcmVxdWlyaW5nIHByZWZpeGVzCisgICAgICAgICAgICBzY3J1YmJlZF9zdHlsZSA9IHNlbGYu
c2NydWJfdW5wcmVmaXhlZF9wcm9wcyhzdHlsZV90ZXh0KQorCisgICAgICAgICAgICAjIFJld3Jp
dGUgdGFnIG9ubHkgaWYgY2hhbmdlcyB3ZXJlIG1hZGUKKyAgICAgICAgICAgIGlmIGxlbihzY3J1
YmJlZF9zdHlsZVswXSkgPiAwOgorICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9wcm9wcy5leHRl
bmQoc2NydWJiZWRfc3R5bGVbMF0pCisKKyAgICAgICAgICAgICAgICAjIEJ1aWxkIGEgbmV3IHRh
ZyB3aXRoIHRoZSBtb2RpZmllZCB0ZXh0CisgICAgICAgICAgICAgICAgbmV3X3RhZyA9IFRhZyhk
b2MsIHRhZy5uYW1lLCB0YWcuYXR0cnMpCisgICAgICAgICAgICAgICAgbmV3X3RhZy5pbnNlcnQo
MCwgc2NydWJiZWRfc3R5bGVbMV0pCisKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUgZG9j
IHdpdGggdGhlIG5ldyB0YWcKKyAgICAgICAgICAgICAgICBzZWxmLnJlcGxhY2VfdGFnKGRvYywg
dGFnLCBuZXdfdGFnKQorCisgICAgICAgIHJldHVybiAoY29udmVydGVkX3Byb3BzLCBkb2MucHJl
dHRpZnkoKSkKKworICAgIGRlZiBzY3J1Yl91bnByZWZpeGVkX3Byb3BzKHNlbGYsIHRleHQpOgor
ICAgICAgICAiIiIgU2VhcmNoZXMgfHRleHR8IGZvciBpbnN0YW5jZXMgb2YgcHJvcGVydGllcyBy
ZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBhbmQgYWRkcyB0aGUgcHJlZml4LiBSZXR1cm5z
IHRoZSBsaXN0IG9mIGNvbnZlcnRlZCBwcm9wZXJ0aWVzIGFuZCB0aGUgbW9kaWZpZWQgc3RyaW5n
ICIiIgorCisgICAgICAgIGNvbnZlcnRlZF9wcm9wcyA9IFtdCisKKyAgICAgICAgIyBTcGluIHRo
cm91Z2ggdGhlIHdob2xlIGxpc3Qgb2YgcHJlZml4ZWQgcHJvcGVydGllcworICAgICAgICBmb3Ig
cHJlZml4ZWRfcHJvcCBpbiBzZWxmLnByZWZpeGVkX3Byb3BlcnRpZXM6CisKKyAgICAgICAgICAg
ICMgUHVsbCB0aGUgcHJlZml4IG9mZgorICAgICAgICAgICAgdW5wcmVmaXhlZF9wcm9wID0gcHJl
Zml4ZWRfcHJvcC5yZXBsYWNlKCctd2Via2l0LScsICcnKQorCisgICAgICAgICAgICAjIExvb2sg
Zm9yIHRoZSB2YXJpb3VzIHdheXMgaXQgbWlnaHQgYmUgaW4gdGhlIENTUworICAgICAgICAgICAg
IyBNYXRjaCB0aGUgdGhlIHByb3BlcnR5IHByZWNlZGVkIGJ5IGVpdGhlciB3aGl0ZXNwYWNlIG9y
IGxlZnQgY3VybHkgYnJhY2UKKyAgICAgICAgICAgICMgb3IgYXQgdGhlIGJlZ2lubmluZyBvZiB0
aGUgc3RyaW5nIChmb3IgaW5saW5lIHN0eWxlIGF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHBhdHRl
cm4gPSAnKFtcc3tdfF4pJyArIHVucHJlZml4ZWRfcHJvcCArICcoXHMrOnw6KScKKyAgICAgICAg
ICAgIGlmIHJlLnNlYXJjaChwYXR0ZXJuLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwcmludCAn
Y29udmVydGluZyAnICsgdW5wcmVmaXhlZF9wcm9wICsgJyAtPiAnICsgcHJlZml4ZWRfcHJvcAor
ICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9wcm9wcy5hcHBlbmQocHJlZml4ZWRfcHJvcCkKKyAg
ICAgICAgICAgICAgICB0ZXh0ID0gcmUuc3ViKHBhdHRlcm4sIHByZWZpeGVkX3Byb3AgKyAnOics
IHRleHQpCisKKyAgICAgICAgIyBUT0RPOiBIYW5kbGUgdGhlIEpTIHZlcnNpb25zIG9mIHRoZXNl
IHByb3BlcnRpZXMsIHRvby4KKworICAgICAgICByZXR1cm4gKGNvbnZlcnRlZF9wcm9wcywgdGV4
dCkKKworICAgIGRlZiByZXBsYWNlX3RhZyhzZWxmLCBkb2MsIG9sZF90YWcsIG5ld190YWcpOgor
ICAgICAgICAiIiIgSW5zZXJ0cyBhIHxuZXdfdGFnfCBpbnRvIGEgQmVhdXRpZnVsU291cCB8ZG9j
fCBhbmQgcmVtb3ZlcyB0aGUgfG9sZF90YWd8ICIiIgorCisgICAgICAgICMgUmVwbGFjZSB0aGUg
cHJldmlvdXMgdGFnIHdpdGggdGhlIG5ldyBvbmUKKyAgICAgICAgaW5kZXggPSBvbGRfdGFnLnBh
cmVudC5jb250ZW50cy5pbmRleChvbGRfdGFnKQorICAgICAgICBvbGRfdGFnLnBhcmVudC5pbnNl
cnQoaW5kZXgsIG5ld190YWcpCisgICAgICAgIG9sZF90YWcuZXh0cmFjdCgpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg3ODg1MmM5MDk5MDE1Zjg2YmM0M2I1MDdiZTllNjgyMzJjZGQyMzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91
bml0dGVzdC5weQpAQCAtMCwwICsxLDM4NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMg
Q29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
KyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCitpbXBvcnQgb3MK
K2Zyb20gcmFuZG9tIGltcG9ydCByYW5kaW50CitpbXBvcnQgcmUKK2ltcG9ydCB1bml0dGVzdDIg
YXMgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUg
aW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxT
b3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCisKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVy
dGVyIGltcG9ydCBUZXN0Q29udmVydGVyCitmcm9tIHdlYmtpdHB5LnczYyBpbXBvcnQgdGVzdF9j
b252ZXJ0ZXIKKworCitjbGFzcyBUZXN0Q29udmVydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CisKKyAgICBkZWYgdGVzdExvYWRQcmVmaXhlZFByb3BMaXN0KHNlbGYpOgorICAgICAgICAiIiIg
VGVzdHMgdGhhdCB0aGUgY3VycmVudCBsaXN0IG9mIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAt
d2Via2l0LSBwcmVmaXggbG9hZCBjb3JyZWN0bHkgIiIiCisKKyAgICAgICAgIyBHZXQgdGhlIGZ1
bGwgbGlzdCBvZiBwcmVmaXhlZCBwcm9wZXJ0aWVzCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RD
b252ZXJ0ZXIoKQorICAgICAgICBwcm9wX2xpc3QgPSBjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVy
dGllcworCisgICAgICAgICMgVmVyaWZ5IHdlIGdvdCBwcm9wZXJ0aWVzIGJhY2sKKyAgICAgICAg
c2VsZi5hc3NlcnRHcmVhdGVyKGxlbihwcm9wX2xpc3QpLCAwLCAnTm8gcHJlZml4ZWQgcHJvcGVy
dGllcyBmb3VuZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhleSdyZSBhbGwgcHJlZml4ZWQKKyAg
ICAgICAgZm9yIHByb3AgaW4gcHJvcF9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHByb3Auc3RhcnRzd2l0aCgnLXdlYmtpdC0nKSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRGb3JX
ZWJraXROb3RoaW5nVG9Db252ZXJ0KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29udmVydF9m
b3Jfd2Via2l0KCkgdXNpbmcgYSBiYXNpYyB0ZXN0IHRoYXQgaGFzIG5vdGhpbmcgdG8gY29udmVy
dCAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0v
L1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RSL3ho
dG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9OIE9G
IFRFU1Q8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhPUiIK
K2hyZWY9Im1haWx0bzpFTUFJTCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9IlJFTEVWQU5UX1NQRUNfU0VDVElPTiIvPgorPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJURVNUIEFTU0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtD
REFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVO
VCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgY29udmVydGVyID0gVGVz
dENvbnZlcnRlcigpCisKKyAgICAgICAgIyBUcnkgdG8gY29udmVydCB0aGUgaHRtbAorICAgICAg
ICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X2Zvcl93
ZWJraXQoJy9ub3RoaW5nL3RvL2NvbnZlcnQnLCBjb250ZW50cz10ZXN0X2h0bWwsIGZpbGVuYW1l
PSdzb21lZmlsZS5odG1sJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9jLnJlc3Rv
cmVfb3V0cHV0KCkKKworICAgICAgICAjIFZlcmlmeSBub3RoaW5nIHdhcyBjb252ZXJ0ZWQKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHdhcyBzaG91bGQg
bm90IGhhdmUgYmVlbiBjb252ZXJ0ZWQnKQorCisgICAgZGVmIHRlc3RfY29udmVydEZvcldlYmtp
dEhhcm5lc3NPbmx5KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29udmVydF9mb3Jfd2Via2l0
KCkgdXNpbmcgYSBiYXNpYyBKUyB0ZXN0IHRoYXQgdXNlcyB0ZXN0aGFybmVzcy5qcyBvbmx5IGFu
ZCBoYXMgbm8gcHJlZml4ZWQgcHJvcGVydGllcyAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAi
IiI8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBU
ZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRp
cmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRl
c3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0
ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnaGFybmVzc29ubHknKQorCisgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAorICAgICAg
ICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3RfcGF0aCwgY29u
dGVudHM9dGVzdF9odG1sLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisKKyAgICAgICAgIyBW
ZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwo
Y29udmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBW
ZXJpZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIHdlcmUgY29udmVydGVkIGNvcnJlY3Rs
eQorICAgICAgICBzZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoY29udmVydGVkWzFdLCB0ZXN0
X3BhdGgsIDEsIDEpCisKKyAgICAgICAgIyBWZXJpZnkgbm8gcHJvcGVydGllcyB3ZXJlIGNvbnZl
cnRlZAorICAgICAgICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIFtd
KQorCisgICAgZGVmIHRlc3RfY29udmVydEZvcldlYmtpdFByb3BzT25seShzZWxmKToKKyAgICAg
ICAgIiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGhhcyAy
IHByZWZpeGVkIHByb3BlcnRpZXM6IDEgaW4gYSBzdHlsZSBibG9jayArIDEgaW5saW5lIHN0eWxl
ICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayBocmVm
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0
L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCisjYmxvY2sxIHsgQHRlc3QwQDogcHJvcHZhbHVl
OyB9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0i
QHRlc3QxQDogcHJvcHZhbHVlOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKworICAg
ICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKKworICAgICAgICAjIENyZWF0ZSBwYXRo
IHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVyLldFQktJVF9ST09ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9U
RVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaGFybmVzc2FuZHByb3BzJykKKworICAgICAgICAjIEdl
bmVyYXRlICYgaW5zZXJ0IHRoZSB0ZXN0IHByb3BlcnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisg
ICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIu
cHJlZml4ZWRfcHJvcGVydGllcywgMiwgdGVzdF9odG1sKQorCisgICAgICAgICMgQ29udmVydCB0
aGUgaHRtbAorICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5jYXB0dXJl
X291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRl
ci5jb252ZXJ0X2Zvcl93ZWJraXQodGVzdF9wYXRoLCBjb250ZW50cz10ZXN0X2NvbnRlbnRbMV0s
IGZpbGVuYW1lPSdzb21lZmlsZS5odG1sJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAg
IG9jLnJlc3RvcmVfb3V0cHV0KCkKKworICAgICAgICAjIFZlcmlmeSBhIGNvbnZlcnNpb24gaGFw
cGVuZWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0
IHdhcyBub3QgY29udmVydGVkJykKKworICAgICAgICAjIFZlcmlmeSB0aGF0IGJvdGggdGhlIGhh
cm5lc3MgcGF0aHMgYW5kIHByb3BlcnRpZXMgd2VyZSBhbGwgY29udmVydGVkIGNvcnJlY3RseQor
ICAgICAgICBzZWxmLnZlcmlmeVRlc3RIYXJuZXNzUGF0aHMoY29udmVydGVkWzFdLCB0ZXN0X3Bh
dGgsIDEsIDEpCisgICAgICAgIHNlbGYudmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKGNvbnZlcnRl
ZCwgdGVzdF9jb250ZW50WzBdKQorCisgICAgZGVmIHRlc3RfY29udmVydEZvcldlYmtpdEhhcm5l
c3NBbmRQcm9wcyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgp
IHVzaW5nIGEgYmFzaWMgSlMgdGVzdCB0aGF0IHVzZXMgdGVzdGhhcm5lc3MuanMgYW5kIHRlc3Ro
YXJuZXNzLmNzcyBhbmQgaGFzIDQgcHJlZml4ZWQgcHJvcGVydGllczogMyBpbiBhIHN0eWxlIGJs
b2NrICsgMSBpbmxpbmUgc3R5bGUgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisKKyNibG9jazEg
eyBAdGVzdDBAOiBwcm9wdmFsdWU7IH0KKyNibG9jazIgeyBAdGVzdDFAOiBwcm9wdmFsdWU7IH0K
KyNibG9jazMgeyBAdGVzdDJAOiBwcm9wdmFsdWU7IH0KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxlPSJAdGVzdDNAOiBwcm9wdmFsdWU7Ij48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVy
KCkKKworICAgICAgICAjIENyZWF0ZSBwYXRoIHRvIGEgZmFrZSB0ZXN0IGRpcmVjdG9yeQorICAg
ICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAsIHRlc3RfY29udmVydGVy
LldFQktJVF9ST09ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfY29udmVydGVyLkxBWU9VVF9URVNUU19ESVJFQ1RPUlksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuQ1NTX1NVQkRJ
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFybmVz
c2FuZHByb3BzJykKKworICAgICAgICAjIEdlbmVyYXRlICYgaW5zZXJ0IHRoZSB0ZXN0IHByb3Bl
cnRpZXMgaW50byB0aGUgdGVzdF9odG1sCisKKyAgICAgICAgIyBDb252ZXJ0IHRoZSBodG1sCisg
ICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRl
c3RDb250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCA0LCB0ZXN0X2h0bWwpCisg
ICAgICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3Rf
cGF0aCwgY29udGVudHM9dGVzdF9jb250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRtbCcp
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCisKKyAg
ICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0
Tm90RXF1YWwoY29udmVydGVkLCBOb25lLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAg
ICAgICAgIyBWZXJpZnkgdGhhdCBib3RoIHRoZSBoYXJuZXNzIHBhdGhzIGFuZCBwcm9wZXJ0aWVz
IHdlcmUgYWxsIGNvbnZlcnRlZCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi52ZXJpZnlUZXN0SGFy
bmVzc1BhdGhzKGNvbnZlcnRlZFsxXSwgdGVzdF9wYXRoLCAxLCAxKQorICAgICAgICBzZWxmLnZl
cmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFswXSkKKworICAg
IGRlZiB0ZXN0X2NvbnZlcnRUZXN0SGFybmVzc1BhdGhzKHNlbGYpOgorICAgICAgICAiIiIgVGVz
dHMgY29udmVydF90ZXN0aGFybmVzc19wYXRocygpIHdpdGggYSB0ZXN0IHRoYXQgdXNlcyBhbGwg
dGhyZWUgdGVzdGhhcm5lc3MgZmlsZXMgIiIiCisKKyAgICAgICAgIyBCYXNpYyB0ZXN0IGNvbnRl
bnQgdXNpbmcgYWxsIHRocmVlIHRlc3RoYXJuZXNzIGZpbGVzCisgICAgICAgIHRlc3RfaHRtbCA9
ICIiIjxoZWFkPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0i
c3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9
IFRlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgICMgQ3JlYXRlIHBhdGggdG8gYSBmYWtlIHRlc3Qg
ZGlyZWN0b3J5CisgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwg
dGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZl
cnRlci5DU1NfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0ZXN0aGFybmVzc3BhdGhzJykKKworICAgICAgICAjIENvbnZlcnQgdGhlIGh0bWwK
KyAgICAgICAgZG9jID0gQmVhdXRpZnVsU291cCh0ZXN0X2h0bWwpCisgICAgICAgIG9jID0gT3V0
cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0
aHMoZG9jLCB0ZXN0X3BhdGgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYy5yZXN0
b3JlX291dHB1dCgpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJzaW9uIGhhcHBlbmVkCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb252ZXJ0ZWQsICd0ZXN0IHdhcyBub3QgY29udmVydGVk
JykKKworICAgICAgICAjIFZlcmlmeSBhbGwgZ290IGNvbnZlcnRlZCBjb3JyZWN0bHkKKyAgICAg
ICAgc2VsZi52ZXJpZnlUZXN0SGFybmVzc1BhdGhzKGRvYywgdGVzdF9wYXRoLCAyLCAxKQorCisg
ICAgZGVmIHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgIiIi
IFRlc3RzIGNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcygpIGZpbGUgdGhhdCBoYXMgMjAgcHJv
cGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeDoKKyAgICAgICAgMTAgaW4gb25l
IHN0eWxlIGJsb2NrICsgNSBpbiBhbm90aGVyIHN0eWxlCisgICAgICAgIGJsb2NrICsgNSBpbmxp
bmUgc3R5bGVzLCBpbmNsdWRpbmcgb25lIHdpdGggbXVsdGlwbGUgcHJlZml4ZWQgcHJvcGVydGll
cy4KKyAgICAgICAgVGhlIHByb3BlcnRpZXMgaW4gdGhlIHRlc3QgY29udGVudCBhcmUgaW4gYWxs
IHNvcnRzIG9mIHdhY2sgZm9ybWF0dGluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9o
dG1sID0gIiIiPGh0bWw+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworCisuYmxv
Y2sxIHsKKyAgICB3aWR0aDogMzAwcHg7CisgICAgaGVpZ2h0OiAzMDBweAorfQorCisuYmxvY2sy
IHsKKyAgICBAdGVzdDBAOiBwcm9wdmFsdWU7Cit9CisKKy5ibG9jazN7QHRlc3QxQDogcHJvcHZh
bHVlO30KKworLmJsb2NrNCB7IEB0ZXN0MkA6cHJvcHZhbHVlOyB9CisKKy5ibG9jazV7IEB0ZXN0
M0AgOnByb3B2YWx1ZTsgfQorCisjYmxvY2s2IHsgICAgQHRlc3Q0QCAgIDogICBwcm9wdmFsdWU7
ICB9CisKKyNibG9jazcKK3sKKyAgICBAdGVzdDVAOiBwcm9wdmFsdWU7Cit9CisKKyNibG9jazgg
eyBAdGVzdDZAOiBwcm9wdmFsdWU7IH0KKworI2Jsb2NrOTpwc2V1ZG8KK3sKKworICAgIEB0ZXN0
N0A6IHByb3B2YWx1ZTsKKyAgICBAdGVzdDhAOiAgcHJvcHZhbHVlIHByb3B2YWx1ZSBwcm9wdmFs
dWU7OworfQorCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWxl
bTEiIHN0eWxlPSJAdGVzdDlAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJlbGVt
MiIgc3R5bGU9InByb3BuYW1lOiBwcm9wdmFsdWU7IEB0ZXN0MTBAIDogcHJvcHZhbHVlOyBwcm9w
bmFtZTpwcm9wdmFsdWU7Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJlbGVtMiIgc3R5bGU9IkB0ZXN0
MTFAOiBwcm9wdmFsdWU7IEB0ZXN0MTJAIDogcHJvcHZhbHVlOyBAdGVzdDEzQCAgIDpwcm9wdmFs
dWU7Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJlbGVtMyIgc3R5bGU9IkB0ZXN0MTRAOnByb3B2YWx1
ZSI+PC9kaXY+Cis8L2JvZHk+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworCisu
YmxvY2sxMHsgQHRlc3QxNUA6IHByb3B2YWx1ZTsgfQorLmJsb2NrMTF7IEB0ZXN0MTZAOiBwcm9w
dmFsdWU7IH0KKy5ibG9jazEyeyBAdGVzdDE3QDogcHJvcHZhbHVlOyB9CisjYmxvY2sxMzpwc2V1
ZG8KK3sKKyAgICBAdGVzdDE4QDogcHJvcHZhbHVlOworICAgIEB0ZXN0MTlAOiBwcm9wdmFsdWU7
Cit9CisKK11dPjwvc3R5bGU+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgY29udmVydGVyID0gVGVz
dENvbnZlcnRlcigpCisKKyAgICAgICAgIyBHZW5lcmF0ZSAmIGluc2VydCB0aGUgdGVzdCBwcm9w
ZXJ0aWVzIGludG8gdGhlIHRlc3RfaHRtbAorICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdl
bmVyYXRlVGVzdENvbnRlbnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDIwLCB0ZXN0
X2h0bWwpCisKKyAgICAgICAgIyBDb252ZXJ0IHRoZSBodG1sCisgICAgICAgIG9jID0gT3V0cHV0
Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGll
cyhCZWF1dGlmdWxTb3VwKHRlc3RfY29udGVudFsxXSkpCisgICAgICAgIGZpbmFsbHk6CisgICAg
ICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCisKKyAgICAgICAgIyBWZXJpZnkgYSBjb252ZXJz
aW9uIGhhcHBlbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY29udmVydGVkLCBOb25l
LCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgYWxsIHRoZSBn
ZW5lcmF0ZWQgdGVzdCBwcm9wZXJ0aWVzIHdlcmUgY29udmVydGVkIGNvcnJlY3RseQorICAgICAg
ICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFsw
XSkKKworICAgIGRlZiB2ZXJpZnlUZXN0SGFybmVzc1BhdGhzKHNlbGYsIGNvbnZlcnRlZCwgdGVz
dF9wYXRoLCBudW1fc3JjX3BhdGhzLCBudW1faHJlZl9wYXRocyk6CisgICAgICAgICIiIiBWZXJp
ZmllcyBhbGwgVzNDLXN0eWxlIHBhdGhzIHRvIHRlc3QgaGFybmVzcyBmaWxlcyB3ZXJlIGNvbnZl
cnRlZCBjb3JyZWN0bHkgIiIiCisKKyAgICAgICAgIyBNYWtlIHNvdXAgaWYgd2UgbmVlZCB0bwor
ICAgICAgICBpZiBpc2luc3RhbmNlKGNvbnZlcnRlZCwgYmFzZXN0cmluZyk6CisgICAgICAgICAg
ICBjb252ZXJ0ZWQgPSBCZWF1dGlmdWxTb3VwKGNvbnZlcnRlZCkKKworICAgICAgICAjIEJ1aWxk
IHRoZSBwYXRoIHRvIExheW91dFRlc3RzL3Jlc291cmNlcworICAgICAgICByZXNvdXJjZXNfZGly
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCB0ZXN0X2NvbnZlcnRlci5XRUJLSVRfUk9PVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9j
b252ZXJ0ZXIuTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuUkVTT1VSQ0VTX0RJUkVD
VE9SWSkKKworICAgICAgICAjIFZlcmlmeSB0aGUgb3JpZ2luYWwgcGF0aHMgYXJlIG5vIGxvbmdl
ciB0aGVyZQorICAgICAgICBvcmlnX3BhdGhfcGF0dGVybiA9IHJlLmNvbXBpbGUoJ1wiL3Jlc291
cmNlcy90ZXN0aGFybmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0
ZWQuZmluZEFsbChzcmM9b3JpZ19wYXRoX3BhdHRlcm4pKSwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RoYXJuZXNzIHNyYyBwYXRoIHdhcyBub3QgY29udmVydGVkJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKGhyZWY9b3JpZ19wYXRo
X3BhdHRlcm4pKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIGhy
ZWYgcGF0aCB3YXMgbm90IGNvbnZlcnRlZCcpCisKKyAgICAgICAgIyBHZXQgdGhlIG5ldyByZWxw
YXRoIGZyb20gdGhlIHRlc3RlciBkaXIKKyAgICAgICAgbmV3X3JlbHBhdGggPSBvcy5wYXRoLnJl
bHBhdGgocmVzb3VyY2VzX2RpciwgdGVzdF9wYXRoKQorCisgICAgICAgICMgVmVyaWZ5IGl0J3Mg
aW4gYWxsIHRoZSByaWdodCBwbGFjZXMKKyAgICAgICAgcmVscGF0aF9wYXR0ZXJuID0gcmUuY29t
cGlsZShuZXdfcmVscGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRl
ZC5maW5kQWxsKHNyYz1yZWxwYXRoX3BhdHRlcm4pKSwgbnVtX3NyY19wYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIHNyYyByZWxhdGl2ZSBwYXRoIG5vdCBjb3Jy
ZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKGhy
ZWY9cmVscGF0aF9wYXR0ZXJuKSksIG51bV9ocmVmX3BhdGhzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGVzdGhhcm5lc3MgaHJlZiByZWxhdGl2ZSBwYXRoIG5vdCBjb3JyZWN0JykKKwor
ICAgIGRlZiB2ZXJpZnlQcmVmaXhlZFByb3BlcnRpZXMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3By
b3BlcnRpZXMpOgorICAgICAgICAiIiIgVmVyaWZpZXMgYSBsaXN0IG9mIHRlc3RfcHJvcGVydGll
cyB3ZXJlIGNvbnZlcnRlZCBjb3JyZWN0bHkgIiIiCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCB0
aGUgbnVtYmVyIG9mIHRlc3QgcHJvcGVydGllcyBlcXVhbHMgdGhlIG51bWJlciB0aGF0IHdlcmUg
Y29udmVydGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnZlcnRlZFswXSksIGxl
bih0ZXN0X3Byb3BlcnRpZXMpLCAnSW5jb3JyZWN0IG51bWJlciBvZiBwcm9wZXJ0aWVzIGNvbnZl
cnRlZCcpCisKKyAgICAgICAgIyBWZXJpZnkgdGhleSdyZSBhbGwgaW4gdGhlIGNvbnZlcnRlZCBk
b2N1bWVudAorICAgICAgICBmb3IgdGVzdF9wcm9wIGluIHRlc3RfcHJvcGVydGllczoKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgodGVzdF9wcm9wIGluIGNvbnZlcnRlZFsxXSksICdQcm9w
ZXJ0eSAnICsgdGVzdF9wcm9wICsgJyBub3QgZm91bmQgaW4gY29udmVydGVkIGRvYycpCisKKyAg
ICBkZWYgZ2VuZXJhdGVUZXN0Q29udGVudChzZWxmLCBmdWxsX3Byb3BfbGlzdCwgbnVtX3Rlc3Rf
cHJvcGVydGllcywgaHRtbCk6CisgICAgICAgICIiIiBHZW5lcmF0ZXMgYSByYW5kb20gbGlzdCBv
ZiB1bmlxdWUgcHJvcGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBhbmQgaW5z
ZXJ0cyB0aGVtIGludG8gaHRtbCBjb250ZW50IHRoYXQncyBiZWVuIHRva2VuaXplZCB1c2luZyBc
J0B0ZXN0WFhAXCcgc3ludGF4ICIiIgorCisgICAgICAgIHRlc3RfcHJvcGVydGllcyA9IFtdCisK
KyAgICAgICAgIyBHcmFiIGEgcmFuZG9tIGJ1bmNoIG9mIDIwIHVuaXF1ZSBwcm9wZXJ0aWVzIHJl
cXVpcmluZyBwcmVmaXhlcyB0byB0ZXN0IHdpdGgKKyAgICAgICAgY291bnQgPSAwCisgICAgICAg
IHdoaWxlIGNvdW50IDwgbnVtX3Rlc3RfcHJvcGVydGllczoKKyAgICAgICAgICAgIGlkeCA9IHJh
bmRpbnQoMCwgbGVuKGZ1bGxfcHJvcF9saXN0KSAtIDEpCisgICAgICAgICAgICBpZiBub3QoZnVs
bF9wcm9wX2xpc3RbaWR4XSBpbiB0ZXN0X3Byb3BlcnRpZXMpOgorICAgICAgICAgICAgICAgIHRl
c3RfcHJvcGVydGllcy5hcHBlbmQoZnVsbF9wcm9wX2xpc3RbaWR4XSkKKyAgICAgICAgICAgICAg
ICBjb3VudCArPSAxCisKKyAgICAgICAgIyBSZXBsYWNlIHRoZSB0b2tlbnMgaW4gdGhlIHRlc3Ro
dG1sIHdpdGggdGhlIHRlc3QgcHJvcGVydGllcy4gV2FsayBiYWNrd2FyZAorICAgICAgICAjIHRo
cm91Z2ggdGhlIGxpc3QgdG8gcmVwbGFjZSB0aGUgZG91YmxlLWRpZ2l0IHRva2VucyBmaXJzdAor
ICAgICAgICBpZHggPSBsZW4odGVzdF9wcm9wZXJ0aWVzKSAtIDEKKyAgICAgICAgd2hpbGUgaWR4
ID49IDA6CisgICAgICAgICAgICAjIFVzZSB0aGUgdW5wcmVmaXhlZCB2ZXJzaW9uCisgICAgICAg
ICAgICB0ZXN0X3Byb3AgPSB0ZXN0X3Byb3BlcnRpZXNbaWR4XS5yZXBsYWNlKCctd2Via2l0LScs
ICcnKQorICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSB0b2tlbgorICAgICAgICAgICAgaHRtbCA9
IGh0bWwucmVwbGFjZSgnQHRlc3QnICsgc3RyKGlkeCkgKyAnQCcsIHRlc3RfcHJvcCkKKyAgICAg
ICAgICAgIGlkeCAtPSAxCisKKyAgICAgICAgcmV0dXJuICh0ZXN0X3Byb3BlcnRpZXMsIGh0bWwp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NzUxZWZhOWEzMDBiODAyYzVkMDMwMzY3M2M3ZTQ5NzVhNTdjMDZlCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQpAQCAtMCww
ICsxLDQ3NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
QkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisKKyIiIgorIFRoaXMgc2NyaXB0IGltcG9ydHMg
YSBkaXJlY3Rvcnkgb2YgVzNDIENTUyB0ZXN0cyBpbnRvIFdlYktpdC4KKworIFlvdSBtdXN0IGhh
dmUgY2hlY2tlZCBvdXQgdGhlIFczQyByZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgZHJpdmUuCisK
KyBUaGlzIHNjcmlwdCB3aWxsIGltcG9ydCB0aGUgdGVzdHMgaW50byBXZWJLaXQgZm9sbG93aW5n
IHRoZXNlIHJ1bGVzOgorCisgICAgLSBPbmx5IHRlc3RzIHRoYXQgYXJlIGFwcHJvdmVkIG9yIG9m
ZmljaWFsbHkgc3VibWl0dGVkIGF3YWl0aW5nIHJldmlldyBhcmUgaW1wb3J0ZWQKKworICAgIC0g
QWxsIHRlc3RzIGFyZSBpbXBvcnRlZCBpbnRvIExheW91dFRlc3RzL2Nzc3dnCisKKyAgICAtIElm
IHRoZSB0ZXN0cyBhcmUgYXBwcm92ZWQsIHRoZXknbGwgYmUgaW1wb3J0ZWQgaW50byBhIGRpcmVj
dG9yeSB0cmVlIHRoYXQKKyAgICAgIG1pcnJvcnMgdGhlIENTUyBNZXJjdXJpYWwgcmVwby4gRm9y
IGV4YW1wbGUsIDxjc3N3Z19yZXBvX3Jvb3Q+L2FwcHJvdmVkL2NzczIuMSBpcyBicm91Z2h0IGlu
CisgICAgICBhcyBMYXlvdXRUZXN0cy9jc3N3Zy9hcHByb3ZlZC9jc3MyLjEsIG1haW50YWluaW5n
IHRoZSBlbnRpcmUgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciB0aGF0CisKKyAgICAtIElmIHRo
ZSB0ZXN0cyBhcmUgc3VibWl0dGVkLCB0aGV5J2xsIGJlIGJyb3VnaHQgaW4gYXMgTGF5b3V0VGVz
dHMvY3Nzd2cvc3VibWl0dGVkIGFuZCB3aWxsIGFsc28KKyAgICAgIG1haW50YWluIHRoZWlyIGRp
cmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgdGhhdC4gRm9yIGV4YW1wbGUsIGV2ZXJ5dGhpbmcgdW5k
ZXIKKyAgICAgIDxjc3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9hZG9iZS9zdWJtaXR0ZWQg
aXMgYnJvdWdodCBpbnRvIHN1Ym1pdHRlZCwgbWlycm9yaW5nIGl0cworICAgICAgZGlyZWN0b3J5
IHN0cnVjdHVyZSBpbiB0aGUgY3Nzd2cgcmVwbworCisgICAgLSBJZiB0aGUgaW1wb3J0IGRpcmVj
dG9yeSBzcGVjaWZpZWQgaXMganVzdCBhIGNvbnRyaWJ1dG9yIGZvbGRlciwgb25seSB0aGUgc3Vi
bWl0dGVkIGZvbGRlcgorICAgICAgZm9yIHRoYXQgY29udHJpYnV0b3IgaXMgYnJvdWdodCBpbi4g
Rm9yIGV4YW1wbGUsIHRvIGltcG9ydCBhbGwgb2YgTW96aWxsYSdzIHRlc3RzLCBlaXRoZXIKKyAg
ICAgIDxjc3N3Z19yZXBvX3Jvb3Q+L2NvbnRyaWJ1dG9ycy9tb3ppbGxhIG9yIDxjc3N3Z19yZXBv
X3Jvb3Q+L2NvbnRyaWJ1dG9ycy9tb3ppbGxhL3N1Ym1pdHRlZAorICAgICAgd2lsbCB3b3JrIGFu
ZCBhcmUgZXF1aXZhbGVudAorCisgICAgLSBGb3IgdGhlIHRpbWUgYmVpbmcsIHRoaXMgc2NyaXB0
IHdvbid0IHdvcmsgaWYgeW91IHRyeSB0byBpbXBvcnQgdGhlIGZ1bGwgc2V0IG9mIHN1Ym1pdHRl
ZAorICAgICAgdGVzdHMgdW5kZXIgY29udHJpYnV0b3JzLyovc3VibWl0dGVkLiBTaW5jZSB0aGVz
ZSBhcmUgYXdhaXRpbmcgcmV2aWV3LCB0aGlzIGlzIGp1c3QgYSBzbWFsbAorICAgICAgY29udHJv
bCBtZWNoYW5pc20gdG8gZW5mb3JjZSBjYXJlZnVsbHkgc2VsZWN0aW5nIHdoYXQgbm9uLWFwcHJv
dmVkIHRlc3RzIGFyZSBpbXBvcnRlZC4KKyAgICAgIEl0IGNhbiBvYnZpb3VzbHkgYW5kIGVhc2ls
eSBiZSBjaGFuZ2VkLgorCisgICAgLSBCeSBkZWZhdWx0LCBvbmx5IHJlZnRlc3RzIGFuZCBqc3Rl
c3QgYXJlIGltcG9ydGVkLiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggYSAtYSBvciAtLWFs
bAorICAgICAgYXJndW1lbnQKKworICAgIC0gQWxzbyBieSBkZWZhdWx0LCBpZiB0ZXN0IGZpbGVz
IGJ5IHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdCBpbiB0aGUgZGVzdGluYXRpb24gZGlyZWN0
b3J5LAorICAgICAgdGhleSBhcmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgaWRlYSB0aGF0IHJ1bm5p
bmcgdGhpcyBzY3JpcHQgd291bGQgcmVmcmVzaCBmaWxlcyBwZXJpb2RpY2FsbHkuCisgICAgICBU
aGlzIGNhbiBhbHNvIGJlIG92ZXJyaWRkZW4gYnkgYSAtbiBvciAtLW5vLW92ZXJ3cml0ZSBmbGFn
CisKKyAgICAtIEFsbCBmaWxlcyBhcmUgY29udmVydGVkIHRvIHdvcmsgaW4gV2ViS2l0OgorICAg
ICAgICAgMS4gLnhodCBleHRlbnNpb25zIGFyZSBjaGFuZ2VkIHRvIC54aHRtbCB0byBtYWtlIG5l
dy1ydW4td2Via2l0LXRlc3RzIGhhcHB5CisgICAgICAgICAyLiBQYXRocyB0byB0ZXN0aGFybmVz
cy5qcyBmaWxlcyBhcmUgbW9kaWZpZWQgcG9pbnQgdG8gV2Via2l0J3MgY29weSBvZiB0aGVtIGlu
CisgICAgICAgICAgICBMYXlvdXRUZXN0cy9yZXNvdXJjZXMsIHVzaW5nIHRoZSBjb3JyZWN0IHJl
bGF0aXZlIHBhdGggZnJvbSB0aGUgbmV3IGxvY2F0aW9uCisgICAgICAgICAzLiBBbGwgQ1NTIHBy
b3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LXZlbmRvciBwcmVmaXggYXJlIHByZWZpeGVk
IC0gdGhpcyBjdXJyZW50CisgICAgICAgICAgICBsaXN0IG9mIHdoYXQgbmVlZHMgcHJlZml4ZXMg
aXMgcmVhZCBmcm9tIFNvdXJjZS9XZWJDb3JlL0NTUy9DU1NQcm9wZXJ0aWVzLmluCisgICAgICAg
ICA0LiBFYWNoIHJlZnRlc3QgaGFzIGl0cyBvd24gY29weSBvZiBpdHMgcmVmZXJlbmNlIGZpbGUg
Zm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbnMKKyAgICAgICAgICAgIG5ldy1ydW4td2Vi
a2l0LXRlc3RzIGV4cGVjdHMKKyAgICAgICAgIDUuIElmIGEgYSByZWZlcmVuY2UgZmlsZXMgbGl2
ZXMgb3V0c2lkZSB0aGUgZGlyZWN0b3J5IG9mIHRoZSB0ZXN0IHRoYXQgdXNlcyBpdCwgaXQgaXMg
Y2hlY2tlZAorICAgICAgICAgICAgZm9yIHBhdGhzIHRvIHN1cHBvcnQgZmlsZXMgYXMgaXQgd2ls
bCBiZSBpbXBvcnRlZCBpbnRvIGEgZGlmZmVyZW50IHJlbGF0aXZlIHBvc2l0aW9uIHRvIHRoZQor
ICAgICAgICAgICAgdGVzdCBmaWxlIChpbiB0aGUgc2FtZSBkaXJlY3RvcnkpCisKKyAgICAgLSBV
cG9uIGNvbXBsZXRpb24sIHNjcmlwdCBvdXRwdXRzIHRoZSB0b3RhbCBudW1iZXIgdGVzdHMgaW1w
b3J0ZWQsIGJyb2tlbiBkb3duIGJ5IHRlc3QgdHlwZQorCisgICAgIC0gQWxzbyB1cG9uIGNvbXBs
ZXRpb24sIGVhY2ggZGlyZWN0b3J5IHdoZXJlIGZpbGVzIGFyZSBpbXBvcnRlZCB3aWxsIGhhdmUg
dzNjLWltcG9ydC5sb2cgd3JpdHRlbgorICAgICAgIHdpdGggYSB0aW1lc3RhbXAsIHRoZSBXM0Mg
TWVyY3VyaWFsIGNoYW5nZXNldCBpZiBhdmFpbGFibGUsIHRoZSBsaXN0IG9mIENTUyBwcm9wZXJ0
aWVzIHVzZWQgdGhhdAorICAgICAgIHJlcXVpcmUgcHJlZml4ZXMsIHRoZSBsaXN0IG9mIGltcG9y
dGVkIGZpbGVzLCBhbmQgZ3VpZGFuY2UgZm9yIGZ1dHVyZSB0ZXN0IG1vZGlmaWNhdGlvbiBhbmQK
KyAgICAgICBtYWludGVuYW5jZS4KKworICAgICAtIE9uIHN1YnNlcXVlbnQgaW1wb3J0cywgdGhp
cyBmaWxlIGlzIHJlYWQgdG8gZGV0ZXJtaW5lIGlmIGZpbGVzIGhhdmUgYmVlbiByZW1vdmVkIGlu
IHRoZSBuZXdlciBjaGFuZ2VzZXRzLgorICAgICAgIFRoZSBzY3JpcHQgcmVtb3ZlcyB0aGVzZSBm
aWxlcyBhY2NvcmRpbmdseS4KKyIiIgoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbWltZXR5cGVz
Citmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKK2ltcG9ydCBvcworaW1wb3J0IHNo
dXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS53M2Mu
dGVzdF9wYXJzZXIgaW1wb3J0IFRlc3RQYXJzZXIKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfY29u
dmVydGVyIGltcG9ydCBUZXN0Q29udmVydGVyCisKK0xBWU9VVF9URVNUU19ESVJFQ1RPUlkgPSAn
TGF5b3V0VGVzdHMnCitDU1NXR19ESVJFQ1RPUlkgPSAnY3Nzd2cnCitSRVNPVVJDRVNfRElSRUNU
T1JZID0gJ3Jlc291cmNlcycKK0FQUFJPVkVEID0gJ2FwcHJvdmVkJworU1VCTUlUVEVEID0gJ3N1
Ym1pdHRlZCcKK1VOS05PV04gPSAndW5rbm93bicKK05PVF9BVkFJTEFCTEUgPSAnTm90IEF2YWls
YWJsZScKKworCitkZWYgbWFpbihhcmd2LCBfLCBzdGRlcnIpOgorCisgICAgcGFyc2VfYXJncygp
CisgICAgaW1wb3J0X2RpciA9IHZhbGlkYXRlX2ltcG9ydF9kaXJlY3RvcnkoKQorICAgIHRlc3Rf
aW1wb3J0ZXIgPSBUZXN0SW1wb3J0ZXIoaW1wb3J0X2Rpciwgb3B0aW9ucykKKyAgICB0ZXN0X2lt
cG9ydGVyLmRvX2ltcG9ydCgpCisKKworZGVmIHBhcnNlX2FyZ3MoKToKKworICAgIGdsb2JhbCBv
cHRpb25zCisgICAgZ2xvYmFsIGFyZ3MKKworICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcih1c2Fn
ZT0ndXNhZ2U6ICVwcm9nIFtvcHRpb25zXSB3M2NfdGVzdF9kaXJlY3RvcnknKQorICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctbicsICctLW5vLW92ZXJ3cml0ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgI2FjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1G
YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdGbGFnIHRvIHByZXZlbnQgZHVwbGlj
YXRlIHRlc3QgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBleGlzdGluZyB0ZXN0cy4gQnkgZGVmYXVs
dCwgdGhleSB3aWxsIGJlIG92ZXJ3cml0dGVuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWEn
LCAnLS1hbGwnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdJbXBvcnQgYWxsIHRlc3RzIGluY2x1ZGluZyByZWZ0ZXN0cywgSlMgdGVzdHMsIGFu
ZCBtYW51YWwvcGl4ZWwgdGVzdHMuIEJ5IGRlZmF1bHQsIG9ubHkgcmVmdGVzdHMgYW5kIEpTIHRl
c3RzIGFyZSBpbXBvcnRlZCcpCisKKyAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2Vf
YXJncygpCisKKyAgICBpZiBsZW4oYXJncykgIT0gMToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdJ
bmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cycpCisKKworZGVmIHZhbGlkYXRlX2ltcG9ydF9k
aXJlY3RvcnkoKToKKworICAgIGltcG9ydF9kaXIgPSBhcmdzWzBdCisKKyAgICAjIE1ha2Ugc3Vy
ZSB0aGUgdzNjIHRlc3QgZGlyZWN0b3J5IGV4aXN0cworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyhpbXBvcnRfZGlyKToKKyAgICAgICAgc3lzLmV4aXQoJ1NvdXJjZSBkaXJlY3RvcnkgJXMgbm90
IGZvdW5kIScgJSBpbXBvcnRfZGlyKQorCisgICAgIyBNYWtlIHN1cmUgdGhlIHRlc3RzIGFyZSBv
ZmZpY2lhbGx5IHN1Ym1pdHRlZCB0byB0aGUgVzNDLCBlaXRoZXIgYXBwcm92ZWQgb3IKKyAgICAj
IHN1Ym1pdHRlZCBmb2xsb3dpbmcgdGhlaXIgZGlyZWN0b3J5IG5hbWluZyBjb252ZW50aW9ucwor
ICAgIGlmIGltcG9ydF9kaXIuZmluZChBUFBST1ZFRCkgPT0gLTEgYW5kIFwKKyAgICAgICBpbXBv
cnRfZGlyLmZpbmQoU1VCTUlUVEVEKSA9PSAtMToKKyAgICAgICAgIyBJZiBub3QgcG9pbnRlZCBk
aXJlY3RseSB0byB0aGUgYXBwcm92ZWQgZGlyZWN0b3J5IG9yIHRvIGFueSBzdWJtaXR0ZWQKKyAg
ICAgICAgIyBkaXJlY3RvcnksIGNoZWNrIGZvciBhIHN1Ym1pdHRlZCBzdWJkaXJlY3RvcnkgYW5k
IGdvIHdpdGggdGhhdAorICAgICAgICBpbXBvcnRfZGlyID0gb3MucGF0aC5qb2luKGltcG9ydF9k
aXIsICdzdWJtaXR0ZWQnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5q
b2luKGltcG9ydF9kaXIpKToKKyAgICAgICAgICAgIHN5cy5leGl0KCdVbmFibGUgdG8gaW1wb3J0
IHRlc3RzIHRoYXQgYXJlblwndCBhcHByb3ZlZCBvciBzdWJtaXR0ZWQgdG8gdGhlIFczQycpCisK
KyAgICByZXR1cm4gaW1wb3J0X2RpcgorCisKK2NsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZV9kaXJlY3RvcnksIG9wdGlvbnMpOgorICAg
ICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisKKyAgICAgICAgc2VsZi5zb3VyY2VfZGlyZWN0
b3J5ID0gc291cmNlX2RpcmVjdG9yeQorICAgICAgICBzZWxmLndlYmtpdF9yb290ID0gX19maWxl
X18uc3BsaXQob3MucGF0aC5zZXAgKyAnVG9vbHMnKVswXQorICAgICAgICBzZWxmLmRlc3RpbmF0
aW9uX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNlcCwgc2VsZi53ZWJraXRfcm9v
dCwgTEFZT1VUX1RFU1RTX0RJUkVDVE9SWSwgQ1NTV0dfRElSRUNUT1JZKQorCisgICAgICAgIHNl
bGYuY2hhbmdlc2V0ID0gTk9UX0FWQUlMQUJMRQorICAgICAgICBzZWxmLnRlc3Rfc3RhdHVzID0g
VU5LTk9XTgorCisgICAgICAgIHNlbGYuaW1wb3J0X2xpc3QgPSBbXQorCisgICAgZGVmIGRvX2lt
cG9ydChzZWxmKToKKyAgICAgICAgc2VsZi5zY2FuX3NvdXJjZV9kaXJlY3Rvcnkoc2VsZi5zb3Vy
Y2VfZGlyZWN0b3J5KQorICAgICAgICBzZWxmLmdldF9jaGFuZ2VzZXQoKQorICAgICAgICBzZWxm
LmltcG9ydF90ZXN0cygpCisKKyAgICBkZWYgZ2V0X2NoYW5nZXNldChzZWxmKToKKyAgICAgICAg
IiIiIFJ1bnMgaGcgdGlwIHRvIGdldCB0aGUgY3VycmVudCBjaGFuZ2VzZXQgYW5kIHBhcnNlcyB0
aGUgb3V0cHV0IHRvIGdldCB0aGUgY2hhbmdlc2V0LiBJZiB0aGF0IGRvZXNuJ3Qgd29ya291dCBm
b3Igc29tZSByZWFzb24sIGl0IGp1c3QgYmVjb21lcyAnTm90IEF2YWlsYWJsZScgIiIiCisKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgIyBBc3N1bWluZyBNZXJjdXJpYWwgaXMgc2V0IHVwIG9u
IHRoZSBzeXN0ZW0sIHRyeSB0byBncmFiIHRoZSBjaGFuZ2VzZXQgd2UncmUgaW1wb3J0aW5nCisg
ICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2hnJywgJ3RpcCddLCBlbnY9b3Mu
ZW52aXJvbiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPW9zLmRldm51bGwsIGN3ZD1z
ZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgICAgICBzZWxmLmNoYW5nZXNldCA9IHByb2Mu
c3Rkb3V0LnJlYWRsaW5lcygpWzBdCisgICAgICAgICAgICBzZWxmLmNoYW5nZXNldCA9IHNlbGYu
Y2hhbmdlc2V0LnNwbGl0KCdjaGFuZ2VzZXQ6JylbMV0KKyAgICAgICAgZXhjZXB0OgorICAgICAg
ICAgICAgIyBPaCB3ZWxsLCB3ZSB0cmllZAorICAgICAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSAn
Tm90IEF2YWlsYWJsZScKKworICAgIGRlZiBzY2FuX3NvdXJjZV9kaXJlY3Rvcnkoc2VsZiwgZGly
ZWN0b3J5KToKKyAgICAgICAgIiIiIFdhbGtzIHRoZSB8ZGlyZWN0b3J5fCBsb29raW5nIGZvciBI
VE1MIGZpbGVzIHRoYXQgYXJlIGltcG9ydGFibGUgdGVzdHMuICIiIgorCisgICAgICAgIGZvciBy
b290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6CisKKyAgICAgICAgICAgIHBy
aW50ICdTY2FubmluZyAnICsgcm9vdCArICcuLi4nCisgICAgICAgICAgICB0b3RhbF90ZXN0cyA9
IDAKKyAgICAgICAgICAgIHJlZnRlc3RzID0gMAorICAgICAgICAgICAganN0ZXN0cyA9IDAKKwor
ICAgICAgICAgICAgIyBJZ25vcmUgYW55IHJlcG8gc3R1ZmYKKyAgICAgICAgICAgIGlmICcuZ2l0
JyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuZ2l0JykKKyAgICAgICAg
ICAgIGlmICcuaGcnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJy5oZycp
CisgICAgICAgICAgICAjIGFyY2hpdmUgYW5kIGRhdGEgZGlycyBhcmUgaW50ZXJuYWwgY3Nzd2cg
dGhpbmdzIHRoYXQgbGl2ZSBpbiBldmVyeSBhcHByb3ZlZCBkaXJlY3RvcnkKKyAgICAgICAgICAg
IGlmICdkYXRhJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdkYXRhJykK
KyAgICAgICAgICAgIGlmICdhcmNoaXZlJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMu
cmVtb3ZlKCdhcmNoaXZlJykKKworICAgICAgICAgICAgY29weV9saXN0ID0gW10KKworICAgICAg
ICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgorCisgICAgICAgICAgICAgICAgZnVsbHBhdGgg
PSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpCisKKyAgICAgICAgICAgICAgICAjIE9ubHkg
aHRtbCBvciB4bWwgYXJlIGNvbnNpZGVyZWQgdGVzdHMKKyAgICAgICAgICAgICAgICBtaW1ldHlw
ZSA9IG1pbWV0eXBlcy5ndWVzc190eXBlKGZ1bGxwYXRoKQorICAgICAgICAgICAgICAgIGlmICdo
dG1sJyBpbiBzdHIobWltZXR5cGVbMF0pIG9yICd4bWwnIGluIHN0cihtaW1ldHlwZVswXSk6CisK
KyAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXJzZXIgPSBUZXN0UGFyc2VyKHZhcnMob3B0aW9u
cyksIGZpbGVuYW1lPWZ1bGxwYXRoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm8gPSB0
ZXN0X3BhcnNlci5hbmFseXplX3Rlc3QoKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Rf
aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgICAgICAgICBpZiAncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpOgorCisgICAg
ICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0cyArPSAxCisgICAgICAgICAgICAgICAgICAgICAg
ICB0b3RhbF90ZXN0cyArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Jhc2VuYW1l
ID0gb3MucGF0aC5iYXNlbmFtZSh0ZXN0X2luZm9bJ3Rlc3QnXSkKKworICAgICAgICAgICAgICAg
ICAgICAgICAgIyBBZGQgdGhlIHJlZiBmaWxlLCByZW5hbWluZyBpdCB0byBXZWJraXQncyB3YXkK
KyAgICAgICAgICAgICAgICAgICAgICAgICMgTm90ZTogVGhlIHByZWZlcmFibGUgd2F5IHRvIGhh
bmRsZSB0aGlzIHdvdWxkIGJlIHRvIGp1c3QKKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAg
ICAgYWRkIHN1cHBvcnQgaW4gV2Via2l0J3MgaGFybmVzcyB0byByZWFkIG1ldGFkYXRhCisgICAg
ICAgICAgICAgICAgICAgICAgICAjICAgICAgIHJhdGhlciB0aGFuIHJlbHkgb24gYSBmaWxlIG5h
bWluZyBjb252ZW50aW9uLiBTaW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICB0
aGUgQ1NTV0cgdGVzdHMgc3VwcG9ydCBtYW55Om9uZSB0ZXN0czpyZWZlcmVuY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAjICAgICAgIGVuYWJsaW5nIG1ldGFkYXRhIHBhcnNpbmcgaW4gb3Vy
IGhhcm5lc3Mgd291bGQgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICByZWR1
Y2UgdGhlIG51bWJlciBvZiBmaWxlcyBjb3BpZWQgaW4uIEFzIHRoaXMgaXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgICAgICAgaW1wbGVtZW50ZWQgaGVyZSwgd2UgYXJlIGtub3dpbmdseSBp
bXBvcnRpbmcgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgY29waWVz
IG9mIHRoZSBzYW1lIHJlZiBmaWxlcyB0byBhZGhlcmUgdG8gV2Via2l0J3Mgd2F5CisgICAgICAg
ICAgICAgICAgICAgICAgICByZWZfZmlsZSA9IG9zLnBhdGguc3BsaXRleHQodGVzdF9iYXNlbmFt
ZSlbMF0gKyAnLWV4cGVjdGVkJworICAgICAgICAgICAgICAgICAgICAgICAgcmVmX2ZpbGUgKz0g
b3MucGF0aC5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1lKVsxXQorCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogdGVzdF9pbmZvWydyZWZlcmVuY2UnXSwgJ2Rl
c3QnOiByZWZfZmlsZX0pCisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5k
KHsnc3JjJzogdGVzdF9pbmZvWyd0ZXN0J10sICdkZXN0JzogZmlsZW5hbWV9KQorCisgICAgICAg
ICAgICAgICAgICAgICAgICAjIElmIHRoZXJlIGFyZSByZWYgc3VwcG9ydCBmaWxlcywgdGhlIGRl
c3RpbmF0aW9uIGlzIHNob3VsZCBub3cgYmUgcmVsYXRpdmUgdG8gdGhlCisgICAgICAgICAgICAg
ICAgICAgICAgICAjIHRlc3QgZmlsZSBhbmQgbmV3IGxvY2F0aW9uIG9mIHRoZSByZWYgZmlsZQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlz
KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHN1cHBvcnRfZmlsZSBpbiB0ZXN0
X2luZm9bJ3JlZnN1cHBvcnQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBC
dWlsZCB0aGUgY29ycmVjdCBzb3VyY2UgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzb3VyY2VfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUodGVzdF9pbmZv
WydyZWZlcmVuY2UnXSksIHN1cHBvcnRfZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLm5vcm1wYXRoKHNvdXJjZV9maWxlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEtlZXAgdGhlIGRlc3QgYXMgaXQgd2FzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX2NvcHkgPSB7J3NyYyc6IHNvdXJjZV9maWxl
LCAnZGVzdCc6IHN1cHBvcnRfZmlsZX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyBPbmx5IGFkZCBpdCBvbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5v
dCh0b19jb3B5IGluIGNvcHlfbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb3B5X2xpc3QuYXBwZW5kKHRvX2NvcHkpCisKKyAgICAgICAgICAgICAgICAgICAgZWxp
ZiAnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgorICAgICAgICAgICAgICAgICAgICAgICAg
anN0ZXN0cyArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF90ZXN0cyArPSAxCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogZnVsbHBhdGgs
ICdkZXN0JzogZmlsZW5hbWV9KQorCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICAgICB0b3RhbF90ZXN0cyArPSAxCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogZnVsbHBhdGgsICdkZXN0JzogZmlsZW5hbWV9KQor
CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgZG90ZmlsZXMgYW5kIHJhbmRvbSBwZXJsIHNjcmlw
dHMgdGhhdCBhcmUgaW4gc29tZSBkaXJzCisgICAgICAgICAgICAgICAgZWxpZiBub3QoZmlsZW5h
bWUuc3RhcnRzd2l0aCgnLicpKSBhbmQgbm90KGZpbGVuYW1lLmVuZHN3aXRoKCcucGwnKSk6Cisg
ICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBmdWxscGF0aCwgJ2Rl
c3QnOiBmaWxlbmFtZX0pCisKKyAgICAgICAgICAgIGlmIHRvdGFsX3Rlc3RzID09IDA6CisgICAg
ICAgICAgICAgICAgIyBJZiB0aGVyZSBhcmUgbm8gdGVzdHMgaW4gdGhpcyBkaXJlY3RvcnksIHNr
aXAgdGhlIHN1cHBvcnQgZGlyIHRoYXQgbGl2ZXMgaW4gYWxsCisgICAgICAgICAgICAgICAgIyBv
ZiB0aGUgJ2FwcHJvdmVkJyBmb2xkZXJzIGFzIHBhcnQgb2YgdGhlIGF1dG9tYXRlZCBidWlsZCBz
eXN0ZW0KKyAgICAgICAgICAgICAgICBpZiAnc3VwcG9ydCcgaW4gZGlyczoKKyAgICAgICAgICAg
ICAgICAgICAgZGlycy5yZW1vdmUoJ3N1cHBvcnQnKQorCisgICAgICAgICAgICAgICAgaWYgbGVu
KGNvcHlfbGlzdCkgPiAwOgorICAgICAgICAgICAgICAgICAgICAjIE9ubHkgYWRkIHRoaXMgZGly
ZWN0b3J5IHRvIHRoZSBsaXN0IGlmIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGltcG9ydAorICAgICAg
ICAgICAgICAgICAgICBzZWxmLmltcG9ydF9saXN0LmFwcGVuZCh7J2Rpcm5hbWUnOiByb290LCAn
Y29weV9saXN0JzogY29weV9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncmVmdGVzdHMnOiByZWZ0ZXN0cywgJ2pzdGVzdHMnOiBqc3Rlc3RzLCAndG90
YWxfdGVzdHMnOiB0b3RhbF90ZXN0c30pCisKKyAgICBkZWYgaW1wb3J0X3Rlc3RzKHNlbGYpOgor
ICAgICAgICAiIiIgQ29waWVzIGFuZCBjb252ZXJ0cyB0aGUgZnVsbCBsaXN0IG9mIGltcG9ydGFi
bGUgdGVzdHMgaW50byBXZWJraXQgYW5kIGxvZ3Mgd2hhdCB3YXMgaW1wb3J0ZWQgaW4gZWFjaCBk
aXJlY3RvcnkgIiIiCisKKyAgICAgICAgIyBPbmx5IHNldCB1cCB0aGUgZGVzdGluYXRpb24gZGly
ZWN0b3J5IGlmIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGltcG9ydAorICAgICAgICBpZiBsZW4oc2Vs
Zi5pbXBvcnRfbGlzdCkgPiAwOgorICAgICAgICAgICAgc2VsZi5zZXR1cF9kZXN0aW5hdGlvbl9k
aXJlY3RvcnkoKQorCisgICAgICAgIGNvbnZlcnRlciA9IFRlc3RDb252ZXJ0ZXIoKQorICAgICAg
ICB0b3RhbF9pbXBvcnRlZF90ZXN0cyA9IDAKKyAgICAgICAgdG90YWxfaW1wb3J0ZWRfcmVmdGVz
dHMgPSAwCisgICAgICAgIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgPSAwCisKKyAgICAgICAgZm9y
IGRpcl90b19jb3B5IGluIHNlbGYuaW1wb3J0X2xpc3Q6CisKKyAgICAgICAgICAgIHRvdGFsX2lt
cG9ydGVkX3Rlc3RzICs9IGRpcl90b19jb3B5Wyd0b3RhbF90ZXN0cyddCisgICAgICAgICAgICB0
b3RhbF9pbXBvcnRlZF9yZWZ0ZXN0cyArPSBkaXJfdG9fY29weVsncmVmdGVzdHMnXQorICAgICAg
ICAgICAgdG90YWxfaW1wb3J0ZWRfanN0ZXN0cyArPSBkaXJfdG9fY29weVsnanN0ZXN0cyddCisK
KyAgICAgICAgICAgIHByZWZpeGVkX3Byb3BlcnRpZXMgPSBbXQorCisgICAgICAgICAgICBpZiBs
ZW4oZGlyX3RvX2NvcHlbJ2NvcHlfbGlzdCddKSA+IDA6CisKKyAgICAgICAgICAgICAgICAjIEJ1
aWxkIHRoZSBzdWJwYXRoIHN0YXJ0aW5nIHdpdGggdGhlIGFwcHJvdmVkL3N1Ym1pdHRlZCBkaXJl
Y3RvcnkKKyAgICAgICAgICAgICAgICBvcmlnX3BhdGggPSBkaXJfdG9fY29weVsnZGlybmFtZSdd
CisgICAgICAgICAgICAgICAgc3RhcnQgPSBvcmlnX3BhdGguZmluZChzZWxmLnRlc3Rfc3RhdHVz
KQorICAgICAgICAgICAgICAgIG5ld19zdWJwYXRoID0gb3JpZ19wYXRoW3N0YXJ0Omxlbihvcmln
X3BhdGgpXQorCisgICAgICAgICAgICAgICAgIyBBcHBlbmQgdGhlIG5ldyBzdWJwYXRoIHRvIHRo
ZSBkZXN0aW5hdGlvbl9kaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBuZXdfcGF0aCA9IG9zLnBh
dGguam9pbihzZWxmLmRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgbmV3X3N1YnBhdGgpCisKKyAgICAg
ICAgICAgICAgICAjIENyZWF0ZSB0aGUgZGVzdGluYXRpb24gc3ViZGlyZWN0b3JpZXMgaWYgbm90
IHRoZXJlCisgICAgICAgICAgICAgICAgaWYgbm90KG9zLnBhdGguZXhpc3RzKG5ld19wYXRoKSk6
CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG5ld19wYXRoKQorCisgICAgICAgICAg
ICAgICAgY29waWVkX2ZpbGVzID0gW10KKworICAgICAgICAgICAgICAgIGZvciBmaWxlX3RvX2Nv
cHkgaW4gZGlyX3RvX2NvcHlbJ2NvcHlfbGlzdCddOgorCisgICAgICAgICAgICAgICAgICAgIG9y
aWdfZmlsZXBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGZpbGVfdG9fY29weVsnc3JjJ10pCisKKyAg
ICAgICAgICAgICAgICAgICAgIyBTaG91bGRuJ3QgYmUgYW55IGRpcmVjdG9yaWVzIG9uIHRoZSBs
aXN0LCBidXQgY2hlY2sgdG8gYmUgc2FmZQorICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRo
LmlzZGlyKG9yaWdfZmlsZXBhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgICAgICAjIERvbid0IGNob2tlIGlmIHRoZSBmaWxlIGNhbid0IGJl
IGZvdW5kCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdChvcy5wYXRoLmV4aXN0cyhvcmlnX2Zp
bGVwYXRoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAnV2FybmluZzogJyArIG9y
aWdfZmlsZXBhdGggKyAnIG5vdCBmb3VuZC4gUG9zc2libGUgZXJyb3IgaW4gdGhlIHRlc3QuJwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAj
IEFwcGVuZCB0aGUgY29ycmVjdCBkZXN0aW5hdGlvbiBmaWxlbmFtZQorICAgICAgICAgICAgICAg
ICAgICBuZXdfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4obmV3X3BhdGgsIGZpbGVfdG9fY29weVsn
ZGVzdCddKQorCisgICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIGV4dGVuc2lvbiB0byB3b3Jr
IGluIHRoZSBXZWJLaXQgaGFybmVzcworICAgICAgICAgICAgICAgICAgICBuZXdfZmlsZXBhdGgg
PSBuZXdfZmlsZXBhdGgucmVwbGFjZSgnLnhodCcsICcueGh0bWwnKQorCisgICAgICAgICAgICAg
ICAgICAgICMgTWFrZSB0aGUgZGlyZWN0b3JpZXMgbmVlZGVkCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vdChvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmRpcm5hbWUobmV3X2ZpbGVwYXRoKSkpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKG5ld19m
aWxlcGF0aCkpCisKKyAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBvdmVyd3JpdGUgZXhpc3Rp
bmcgdGVzdHMgaWYgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYub3B0aW9u
cy5ub19vdmVyd3JpdGUgaXMgVHJ1ZSBhbmQgb3MucGF0aC5leGlzdHMobmV3X2ZpbGVwYXRoKToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdTa2lwcGluZyBpbXBvcnQgb2YgZXhpc3Rp
bmcgZmlsZSAnICsgbmV3X2ZpbGVwYXRoCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgICAgICAjIFRPRE86IE1heWJlIGRvaW5nIGEgZmlsZSBkaWZmIGlzIGlu
IG9yZGVyIGhlcmUgZm9yIGV4aXN0aW5nIGZpbGVzPworICAgICAgICAgICAgICAgICAgICAgICAg
IyAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlcmUncyBubyBzZW5zZSBpbiBvdmVyd3JpdGluZyBp
ZGVudGljYWwgZmlsZXMsIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICB0aGVy
ZSdzIG5vIGhhcm0gaW4gY29weWluZyB0aGUgaWRlbnRpY2FsIHRoaW5nLgorICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgJ0ltcG9ydGluZzogJyArIG9yaWdfZmlsZXBhdGgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ICcgICAgICAgQXM6ICcgKyBuZXdfZmlsZXBhdGgKKworICAg
ICAgICAgICAgICAgICAgICAjIE9ubHkgaHRtbCwgeG1sLCBvciBjc3Mgc2hvdWxkIGJlIGNvbnZl
cnRlZAorICAgICAgICAgICAgICAgICAgICAjIFRPRE86IEV2ZW50dWFsbHksIHNvIHNob3VsZCBq
cyB3aGVuIHN1cHBvcnQgaXMgYWRkZWQgZm9yIHRoaXMgdHlwZSBvZiBjb252ZXJzaW9uCisgICAg
ICAgICAgICAgICAgICAgIG1pbWV0eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUob3JpZ19maWxl
cGF0aCkKKyAgICAgICAgICAgICAgICAgICAgaWYgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkg
b3IgXAorICAgICAgICAgICAgICAgICAgICAgICAneG1sJyBpbiBzdHIobWltZXR5cGVbMF0pICBv
ciBcCisgICAgICAgICAgICAgICAgICAgICAgICdjc3MnIGluIHN0cihtaW1ldHlwZVswXSk6CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICMgQ29udmVydCBmb3IgV2ViS2l0CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb252ZXJ0ZWRfZmlsZSA9IGNvbnZlcnRlci5jb252ZXJ0X2Zvcl93ZWJr
aXQobmV3X3BhdGgsIGZpbGVuYW1lPW9yaWdfZmlsZXBhdGgpCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGNvbnZlcnRlZF9maWxlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBTdHJhaWdodCBjb3B5IGlmIG5vdGhpbmcncyBjaGFuZ2VkCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9yaWdfZmlsZXBhdGgsIG5ld19maWxlcGF0
aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBXcml0ZSBvdXQgdGhlIGNvbnZlcnRlZCB0ZXN0CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlZml4ZWRfcHJvcGVydGllcy5leHRlbmQoc2V0KGNvbnZlcnRlZF9maWxlWzBd
KSAtIHNldChwcmVmaXhlZF9wcm9wZXJ0aWVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRmaWxlID0gb3BlbihuZXdfZmlsZXBhdGgsICd3JykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXRmaWxlLndyaXRlKGNvbnZlcnRlZF9maWxlWzFdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9yaWdfZmlsZXBhdGgsIG5l
d19maWxlcGF0aCkKKworICAgICAgICAgICAgICAgICAgICBjb3BpZWRfZmlsZXMuYXBwZW5kKG5l
d19maWxlcGF0aC5yZXBsYWNlKHNlbGYud2Via2l0X3Jvb3QsICcnKSkKKworICAgICAgICAgICAg
ICAgICMgVGFrZSBjYXJlIG9mIGFueXRoaW5nIHRoYXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIHNp
bmNlIHRoZSBsYXN0IGltcG9ydAorICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlX2RlbGV0ZWRf
ZmlsZXMobmV3X3BhdGgsIGNvcGllZF9maWxlcykKKworICAgICAgICAgICAgICAgICMgRHJvcCBz
b21lIGluZm8gYWJvdXQgd2hhdCBqdXN0IGhhcHBlbmVkIGhlcmUKKyAgICAgICAgICAgICAgICBz
ZWxmLndyaXRlX2ltcG9ydF9sb2cobmV3X3BhdGgsIGNvcGllZF9maWxlcywgcHJlZml4ZWRfcHJv
cGVydGllcykKKworICAgICAgICBwcmludCAnSW1wb3J0IGNvbXBsZXRlJworCisgICAgICAgIHBy
aW50ICdJTVBPUlRFRCAnICsgc3RyKHRvdGFsX2ltcG9ydGVkX3Rlc3RzKSArICcgVE9UQUwgVEVT
VFMnCisgICAgICAgIHByaW50ICdJbXBvcnRlZCAnICsgc3RyKHRvdGFsX2ltcG9ydGVkX3JlZnRl
c3RzKSArICcgcmVmdGVzdHMnCisgICAgICAgIHByaW50ICdJbXBvcnRlZCAnICsgc3RyKHRvdGFs
X2ltcG9ydGVkX2pzdGVzdHMpICsgJyBKUyB0ZXN0cycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVk
ICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfdGVzdHMgLSB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzIC0g
dG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMpICsgJyBwaXhlbC9tYW51YWwgdGVzdHMnCisKKyAgICBk
ZWYgc2V0dXBfZGVzdGluYXRpb25fZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICAiIiIgQ3JlYXRl
cyBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSB0aGF0IG1pcnJvcnMgdGhhdCBvZiB0aGUgc291cmNl
IGFwcHJvdmVkIG9yIHN1Ym1pdHRlZCBkaXJlY3RvcnkgIiIiCisKKyAgICAgICAgIyBUaGUgdGVz
dCBzdGF0dXMgaXMgaW4gdGhlIHBhdGgsIHNvIGdyYWIgaXQKKyAgICAgICAgc2VsZi5nZXRfdGVz
dF9zdGF0dXMoKQorCisgICAgICAgICMgTWlycm9yIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGlu
IHRoZSBjc3N3ZyByZXBvIHVuZGVyIGFwcHJvdmVkLyBvciBzdWJtaXR0ZWQvCisgICAgICAgIHN0
YXJ0ID0gc2VsZi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQoc2VsZi50ZXN0X3N0YXR1cykKKyAgICAg
ICAgbmV3X3N1YnBhdGggPSBzZWxmLnNvdXJjZV9kaXJlY3Rvcnlbc3RhcnQ6bGVuKHNlbGYuc291
cmNlX2RpcmVjdG9yeSldCisKKyAgICAgICAgZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gb3MucGF0
aC5qb2luKHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5LCBuZXdfc3VicGF0aCkKKworICAgICAg
ICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGVzdGluYXRpb25fZGlyZWN0b3J5KToKKyAgICAgICAg
ICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcmVjdG9yeSkKKworICAgICAgICBwcmludCAn
VGVzdHMgd2lsbCBiZSBpbXBvcnRlZCBpbnRvOiAnICsgZGVzdGluYXRpb25fZGlyZWN0b3J5CisK
KyAgICBkZWYgZ2V0X3Rlc3Rfc3RhdHVzKHNlbGYpOgorICAgICAgICAiIiIgU2V0cyB0aGUgdGVz
dCBzdGF0dXMgdG8gZWl0aGVyICdhcHByb3ZlZCcgb3IgJ3N1Ym1pdHRlZCcgIiIiCisKKyAgICAg
ICAgc3RhdHVzID0gVU5LTk9XTgorCisgICAgICAgIGlmIHNlbGYuc291cmNlX2RpcmVjdG9yeS5m
aW5kKEFQUFJPVkVEKSAhPSAtMToKKyAgICAgICAgICAgIHN0YXR1cyA9IEFQUFJPVkVECisgICAg
ICAgIGVsaWYgc2VsZi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQoU1VCTUlUVEVEKSAhPSAtMToKKyAg
ICAgICAgICAgIHN0YXR1cyA9IFNVQk1JVFRFRAorCisgICAgICAgIHNlbGYudGVzdF9zdGF0dXMg
PSBzdGF0dXMKKworICAgIGRlZiByZW1vdmVfZGVsZXRlZF9maWxlcyhzZWxmLCBpbXBvcnRfZGly
ZWN0b3J5LCBuZXdfZmlsZV9saXN0KToKKyAgICAgICAgIiIiIFJlYWRzIGFuIGltcG9ydCBsb2cg
aW4gfGltcG9ydF9kaXJlY3Rvcnl8IGFuZCBjb21wYXJlcyBpdCB0byB0aGUgfG5ld19maWxlX2xp
c3R8IGFuZCByZW1vdmVzIGZpbGVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgbmV3IGxpc3QgIiIiCisK
KyAgICAgICAgcHJldmlvdXNfZmlsZV9saXN0ID0gW10KKworICAgICAgICAjIEZpcnN0IGNoZWNr
IGlmIHRoZXJlIHdhcyBhIHByZXZpb3VzIGltcG9ydCBoZXJlIC0gdGhlcmUgc2hvdWxkIGJlIGEg
bG9nCisgICAgICAgIGltcG9ydF9sb2dfZmlsZSA9IG9zLnBhdGguam9pbihpbXBvcnRfZGlyZWN0
b3J5LCAndzNjLWltcG9ydC5sb2cnKQorICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMoaW1w
b3J0X2xvZ19maWxlKSk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpbXBvcnRfbG9n
ID0gb3BlbihpbXBvcnRfbG9nX2ZpbGUsICdyJykKKyAgICAgICAgY29udGVudHMgPSBpbXBvcnRf
bG9nLnJlYWRsaW5lcygpCisKKyAgICAgICAgIyBQdWxsIGxvZyB0aGUgbGlzdCBvZiBmaWxlcyBm
cm9tIHRoZSBwcmV2aW91cyBpbXBvcnQKKyAgICAgICAgaWYgJ0xpc3Qgb2YgZmlsZXNcbicgaW4g
Y29udGVudHM6CisgICAgICAgICAgICBsaXN0X2lkeCA9IGNvbnRlbnRzLmluZGV4KCdMaXN0IG9m
IGZpbGVzOlxuJykgKyAxCisgICAgICAgICAgICBwcmV2aW91c19maWxlX2xpc3QgPSBjb250ZW50
c1tsaXN0X2lkeDpdCisgICAgICAgICAgICBwcmV2aW91c19maWxlX2xpc3QgPSBtYXAobGFtYmRh
IHM6IHMuc3RyaXAoKSwgcHJldmlvdXNfZmlsZV9saXN0KQorCisgICAgICAgIGRlbGV0ZWRfZmls
ZXMgPSBzZXQocHJldmlvdXNfZmlsZV9saXN0KSAtIHNldChuZXdfZmlsZV9saXN0KQorCisgICAg
ICAgICMgTG9vcCB0aHJvdWdoIGFuZCByZW1vdmUgdGhlbSBhbGwKKyAgICAgICAgZm9yIGRlbGV0
ZWRfZmlsZSBpbiBkZWxldGVkX2ZpbGVzOgorICAgICAgICAgICAgcHJpbnQgJ0RlbGV0aW5nIGZp
bGUgcmVtb3ZlZCBmcm9tIHRoZSBXM0MgcmVwbzonICsgZGVsZXRlZF9maWxlCisgICAgICAgICAg
ICBkZWxldGVkX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53ZWJraXRfcm9vdCwgZGVsZXRlZF9m
aWxlKQorICAgICAgICAgICAgb3MucmVtb3ZlKGRlbGV0ZWRfZmlsZSkKKworICAgICAgICBpbXBv
cnRfbG9nLmNsb3NlKCkKKworICAgIGRlZiB3cml0ZV9pbXBvcnRfbG9nKHNlbGYsIGltcG9ydF9k
aXJlY3RvcnksIGZpbGVfbGlzdCwgcHJvcF9saXN0KToKKyAgICAgICAgIiIiIFdyaXRlcyBhIHcz
Yy1pbXBvcnQubG9nIGZpbGUgaW4gZWFjaCBkaXJlY3Rvcnkgd2l0aCBpbXBvcnRlZCBmaWxlcy4g
IiIiCisKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKworICAgICAgICAj
IENyZWF0ZSBhIGxvZyBvZiB0aGlzIGltcG9ydCB3aXRoIGFsbCBzb3J0cyBvZiBnb29kIGluZm9y
bWF0aW9uCisgICAgICAgIGltcG9ydF9sb2cgPSBvcGVuKG9zLnBhdGguam9pbihpbXBvcnRfZGly
ZWN0b3J5LCAndzNjLWltcG9ydC5sb2cnKSwgJ3cnKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRl
KCdUaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0RvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Via2l0LiBJbnN0ZWFkLCBwdXNoIGNoYW5nZXMgdG8g
dGhlIFczQyBDU1MgcmVwbzpcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnaHR0cDov
L2hnLmNzc3dnLm9yZy90ZXN0XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1RoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Via2l0IHRvIHJlaW1w
b3J0XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0RvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZVxuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCctLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS1cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xhc3QgSW1wb3J0OiAnICsgbm93
LnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTScpICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQ6ICcgKyBzZWxmLmNoYW5nZXNldCArICdcbicp
CisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1Rlc3Qgc3RhdHVzIGF0IHRpbWUgb2YgaW1wb3J0
OiAnICsgc2VsZi50ZXN0X3N0YXR1cyArICdcbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUo
Jy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOlxuJykKKyAgICAgICAgaWYgbGVuKHByb3BfbGlz
dCkgPT0gMDoKKyAgICAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ05vbmVcbicpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBmb3IgcHJvcCBpbiBwcm9wX2xpc3Q6CisgICAgICAgICAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZShwcm9wICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0
ZSgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdMaXN0IG9m
IGZpbGVzOlxuJykKKyAgICAgICAgZm9yIGl0ZW0gaW4gZmlsZV9saXN0OgorICAgICAgICAgICAg
aW1wb3J0X2xvZy53cml0ZShpdGVtICsgJ1xuJykKKworICAgICAgICBpbXBvcnRfbG9nLmNsb3Nl
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3Vu
aXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1MTRlNmM4OGNiMjhmMDcxNDlmNjczN2EyMzM4MzM1MDZl
MWQ1MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisj
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBm
aWxlCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCitmcm9tIHdlYmtpdHB5
LnczYyBpbXBvcnQgdGVzdF9jb252ZXJ0ZXIKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfaW1wb3J0
ZXIgaW1wb3J0IFRlc3RJbXBvcnRlcgorCitXRUJLSVRfUk9PVCA9IF9fZmlsZV9fLnNwbGl0KG9z
LnBhdGguc2VwICsgJ1Rvb2xzJylbMF0KKworCitjbGFzcyBUZXN0SW1wb3J0ZXJUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X0ltcG9ydERpcldpdGhOb1Rlc3RzKHNlbGYp
OgorICAgICAgICAiIiIgVGVzdHMgZG9faW1wb3J0KCkgd2l0aCBhIGRpcmVjdG9yeSB0aGF0IGNv
bnRhaW5zIG5vIHRlc3RzICIiIgorICAgICAgICBkaXJfd2l0aF9ub190ZXN0cyA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLnNlcCwgdGVzdF9jb252ZXJ0ZXIuV0VCS0lUX1JPT1QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRl
ci5TT1VSQ0VfU1VCRElSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuV0VCQ09SRV9TVUJESVIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRl
ci5DU1NfU1VCRElSKQorCisgICAgICAgIGltcG9ydGVyID0gVGVzdEltcG9ydGVyKGRpcl93aXRo
X25vX3Rlc3RzLCBvcHRwYXJzZS5WYWx1ZXMoeyJub19vdmVyd3JpdGUiOiBUcnVlfSkpCisgICAg
ICAgIGltcG9ydGVyLmRlc3RpbmF0aW9uX2RpcmVjdG9yeSA9IHRlbXBmaWxlLm1rZHRlbXAocHJl
Zml4PSdjc3N3ZycpCisgICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNh
cHR1cmVfb3V0cHV0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0ZXIuZG9faW1w
b3J0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkK
KyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoaW1wb3J0ZXIuZGVzdGluYXRpb25fZGlyZWN0b3J5
LCBpZ25vcmVfZXJyb3JzPVRydWUpCisKKyAgICAjIFRPRE86IE5lZWQgbW9yZSB0ZXN0cywgYnV0
IHdoYXQgdG8gdXNlIGZvciB2YWxpZCBzb3VyY2UgZGlyZWN0b3J5PyBNYWtlIGl0IG9uIHRoZSBm
bHkKKyAgICAjICAgICAgIGFuZCBjbGVhbiBpdCB1cCBhZnRlcndhcmQ/CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMzI1NThiZTk5OTFlZjBh
ODNiODU2MjA0YmIwZWQzZDI0YjgwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpAQCAtMCwwICsxLDE2MCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jw
b3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBE
QU1BR0UuCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHku
QmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cCBhcyBQYXJzZXIKKworCitjbGFzcyBU
ZXN0UGFyc2VyKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZmls
ZW5hbWUpOgorICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuZmls
ZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLnRlc3RfZG9jID0gc2VsZi5sb2FkX2ZpbGUo
ZmlsZW5hbWUpCisgICAgICAgIHNlbGYucmVmX2RvYyA9IE5vbmUKKworICAgIGRlZiBsb2FkX2Zp
bGUoc2VsZiwgZmlsZV90b19wYXJzZSk6CisgICAgICAgICIiIiBPcGVucyBhbmQgcmVhZCB0aGUg
fGZpbGVfdG9fcGFyc2V8ICIiIgorICAgICAgICBkb2MgPSBOb25lCisKKyAgICAgICAgaWYgb3Mu
cGF0aC5leGlzdHMoZmlsZV90b19wYXJzZSk6CisgICAgICAgICAgICBmID0gb3BlbihmaWxlX3Rv
X3BhcnNlKQorICAgICAgICAgICAgaHRtbCA9IGYucmVhZCgpCisgICAgICAgICAgICBmLmNsb3Nl
KCkKKworICAgICAgICAgICAgZG9jID0gUGFyc2VyKGh0bWwpCisKKyAgICAgICAgcmV0dXJuIGRv
YworCisgICAgZGVmIGFuYWx5emVfdGVzdChzZWxmLCB0ZXN0X2NvbnRlbnRzPU5vbmUsIHJlZl9j
b250ZW50cz1Ob25lKToKKyAgICAgICAgIiIiIEFuYWx5emVzIGEgZmlsZSB0byBkZXRlcm1pbmUg
aWYgaXQncyBhIHRlc3QsIHdoYXQgdHlwZSBvZiB0ZXN0LCBhbmQgd2hhdCByZWZlcmVuY2Ugb3Ig
c3VwcG9ydCBmaWxlcyBpdCByZXF1aXJlcy4gUmV0dXJucyBhbGwgb2YgdGhlIHRlc3QgaW5mbyAi
IiIKKworICAgICAgICB0ZXN0X2luZm8gPSBOb25lCisKKyAgICAgICAgaWYgdGVzdF9jb250ZW50
cyBpcyBOb25lIGFuZCBzZWxmLnRlc3RfZG9jIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4g
dGVzdF9pbmZvCisKKyAgICAgICAgaWYgdGVzdF9jb250ZW50cyBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIHNlbGYudGVzdF9kb2MgPSBQYXJzZXIodGVzdF9jb250ZW50cykKKworICAgICAgICBp
ZiByZWZfY29udGVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBQ
YXJzZXIocmVmX2NvbnRlbnRzKQorCisgICAgICAgICMgRmlyc3QgY2hlY2sgaWYgaXQncyBhIHJl
ZnRlc3QKKyAgICAgICAgbWF0Y2hlcyA9IHNlbGYuZ2V0X3JlZnRlc3RzKFRydWUpCisgICAgICAg
IGlmIGxlbihtYXRjaGVzKSAhPSAwOgorCisgICAgICAgICAgICBpZiBsZW4obWF0Y2hlcykgPiAx
OgorICAgICAgICAgICAgICAgIHByaW50ICdXYXJuaW5nOiBXZWJraXQgZG9lcyBub3Qgc3VwcG9y
dCBtdWx0aXBsZSByZWZlcmVuY2VzLiBJbXBvcnRpbmcgdGhlIGZpcnN0IHJlZiBkZWZpbmVkIGlu
ICcgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZmlsZW5hbWUpCisKKyAgICAgICAgICAgIHJlZl9m
aWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzZWxmLmZpbGVuYW1lKSwgbWF0Y2hl
c1swXVsnaHJlZiddKQorICAgICAgICAgICAgaWYgc2VsZi5yZWZfZG9jIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgc2VsZi5yZWZfZG9jID0gc2VsZi5sb2FkX2ZpbGUocmVmX2ZpbGUpCisKKyAg
ICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWUsICdyZWZlcmVuY2Un
OiByZWZfZmlsZX0KKworICAgICAgICAgICAgIyBJZiB0aGUgcmVmIGZpbGUgcGF0aCBpcyByZWxh
dGl2ZSwgd2UgbmVlZCB0byBjaGVjayBpdCBmb3IgcmVsYXRpdmUgcGF0aHMKKyAgICAgICAgICAg
ICMgYmVjYXVzZSB3aGVuIGl0IGxhbmRzIGluIFdlYmtpdCwgaXQgd2lsbCBiZSBtb3ZlZCBkb3du
IGludG8gdGhlIHRlc3QgZGlyCisgICAgICAgICAgICAjIE5vdGU6IFRoZSB0ZXN0IGZpbGVzIHRo
ZW1zZWx2ZXMgYXJlIG5vdCBjaGVja2VkIGZvciBzdXBwb3J0IGZpbGVzCisgICAgICAgICAgICAj
IHRoYXQgbGl2ZSBvdXRzaWRlIHRoZWlyIGRpcmVjdG9yaWVzIGFzIGl0J3MgdGhlIGNvbnZlbnRp
b24gaW4gdGhlIENTU1dHCisgICAgICAgICAgICAjIHRvIHB1dCBhbGwgc3VwcG9ydCBmaWxlcyBp
biB0aGUgc2FtZSBkaXIgb3Igc3ViZGlyIGFzIHRoZSB0ZXN0LiBBbGwgbm9uLXRlc3QKKyAgICAg
ICAgICAgICMgZmlsZXMgaW4gdGhlIHRlc3QncyBkaXJlY3RvcnkgdHJlZSBhcmUgYXV0b21hdGlj
YWxseSBjb3BpZWQgYXMgcGFydCBvZiB0aGUgaW1wb3J0IGFzCisgICAgICAgICAgICAjIHRoZXkg
YXJlIGFzc3VtZWQgdG8gYmUgcmVxdWlyZWQgc3VwcG9ydCBmaWxlcyBUaGVyZSBpcyBleGFjdGx5
IG9uZSBjYXNlIGluIHRoZSBlbnRpcmUKKyAgICAgICAgICAgICMgY3NzMi4xIHN1aXRlIHdoZXJl
IGF0IHRlc3QgZGVwZW5kcyBvbiBhIGZpbGUgdGhhdCBsaXZlcyBpbiBhIGRpZmZlcmVudCBkaXJl
Y3RvcnksIHdoaWNoCisgICAgICAgICAgICAjIGRlcGVuZHMgb24gYW5vdGhlciBmaWxlIHRoYXQg
bGl2ZXMgb3V0c2lkZSBvZiBpdHMgZGlyZWN0b3J5LiBUaGlzIGNvZGUgY292ZXJzIHRoYXQgY2Fz
ZSA6KQorICAgICAgICAgICAgaWYgbWF0Y2hlc1swXVsnaHJlZiddLnN0YXJ0c3dpdGgoJy4uJyk6
CisgICAgICAgICAgICAgICAgc3VwcG9ydEZpbGVzID0gc2VsZi5nZXRfc3VwcG9ydF9maWxlcyhz
ZWxmLnJlZl9kb2MpCisgICAgICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZzdXBwb3J0J10gPSBz
dXBwb3J0RmlsZXMKKworICAgICAgICAjIE5leHQsIGlmIGl0J3MgYSBKUyB0ZXN0CisgICAgICAg
IGVsaWYgc2VsZi5pc19qc3Rlc3QoKToKKyAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6
IHNlbGYuZmlsZW5hbWUsICdqc3Rlc3QnOiBUcnVlfQorCisgICAgICAgICMgT3IgaWYgd2UgZXhw
bGljaXRseSB3YW50IGV2ZXJ5dGhpbmcKKyAgICAgICAgZWxpZiBzZWxmLm9wdGlvbnNbJ2FsbCdd
IGlzIFRydWUgYW5kIFwKKyAgICAgICAgICAgICBub3QoJy1yZWYnIGluIHNlbGYuZmlsZW5hbWUp
IGFuZCBcCisgICAgICAgICAgICAgbm90KCdyZWZlcmVuY2UnIGluIHNlbGYuZmlsZW5hbWUpOgor
ICAgICAgICAgICAgdGVzdF9pbmZvID0geyd0ZXN0Jzogc2VsZi5maWxlbmFtZX0KKworICAgICAg
ICAjIENvdXJ0ZXN5IGNoZWNrIGFuZCB3YXJuaW5nIGlmIHRoZXJlIGFyZSBhbnkgbWlzbWF0Y2hl
cworICAgICAgICBtaXNtYXRjaGVzID0gc2VsZi5nZXRfcmVmdGVzdHMoRmFsc2UpCisgICAgICAg
IGlmIGxlbihtaXNtYXRjaGVzKSAhPSAwOgorICAgICAgICAgICAgcHJpbnQgIldhcm5pbmc6IFdl
YmtpdCBkb2VzIG5vdCBzdXBwb3J0IG1pc21hdGNoIHJlZmVyZW5jZXMuIElnbm9yaW5nIG1pc21h
dGNoIGRlZmluZWQgaW4gIiArIG9zLnBhdGguYmFzZW5hbWUoc2VsZi5maWxlbmFtZSkKKworICAg
ICAgICByZXR1cm4gdGVzdF9pbmZvCisKKyAgICBkZWYgZ2V0X3JlZnRlc3RzKHNlbGYsIGZpbmRf
bWF0Y2gpOgorICAgICAgICAiIiIgU2VhcmNoZXMgZm9yIGFsbCByZWZlcmVuY2UgbGlua3MgaW4g
dGhlIGZpbGUuIElmIHxmaW5kX21hdGNofCBpcyBzZWFyY2hlcyBmb3IgbWF0Y2hlcywgb3RoZXJ3
aXNlIGZvciBtaXNtYXRjaGVzICIiIgorCisgICAgICAgIGlmIGZpbmRfbWF0Y2g6CisgICAgICAg
ICAgICByZXR1cm4gc2VsZi50ZXN0X2RvYy5maW5kQWxsKHJlbD0nbWF0Y2gnKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9kb2MuZmluZEFsbChyZWw9J21pc21h
dGNoJykKKworICAgIGRlZiBpc19qc3Rlc3Qoc2VsZik6CisgICAgICAgICIiIiBTZWFyY2hlcyB0
aGUgZmlsZSBmb3IgdXNhZ2Ugb2YgVzNDLXN0eWxlIHRlc3RoYXJuZXNzIHBhdGhzICIiIgorCisg
ICAgICAgIGlmIHNlbGYudGVzdF9kb2MuZmluZChzcmM9cmUuY29tcGlsZSgnW1wnXCIvXT8vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzJykpIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgZ2V0X3N1
cHBvcnRfZmlsZXMoc2VsZiwgZG9jKToKKyAgICAgICAgIiIiIFNlYXJjaGVzIHRoZSBmaWxlIGZv
ciBhbGwgcGF0aHMgc3BlY2lmaWVkIGluIHVybCgpJ3MsIGhyZWYgb3Igc3JjIGF0dHJpYnV0ZXMg
IiIiCisKKyAgICAgICAgc3VwcG9ydF9maWxlcyA9IFtdCisKKyAgICAgICAgaWYgZG9jIGlzIE5v
bmU6CisgICAgICAgICAgICByZXR1cm4gc3VwcG9ydF9maWxlcworCisgICAgICAgICMgTG9vayBm
b3IgdGFncyB3aXRoIHNyYyBvciBocmVmIGF0dHJpYnV0ZXMKKyAgICAgICAgc3JjX2F0dHJzID0g
ZG9jLmZpbmRBbGwoc3JjPXJlLmNvbXBpbGUoJy4qJykpCisgICAgICAgIGhyZWZfYXR0cnMgPSBk
b2MuZmluZEFsbChocmVmPXJlLmNvbXBpbGUoJy4qJykpCisKKyAgICAgICAgIyBMb29rIGZvciB1
cmxzCisgICAgICAgIHVybF9wYXR0ZXJuID0gcmUuY29tcGlsZSgndXJsXCguKlwpJykKKyAgICAg
ICAgdXJscyA9IFtdCisgICAgICAgIGZvciB1cmwgaW4gZG9jLmZpbmRBbGwodGV4dD11cmxfcGF0
dGVybik6CisgICAgICAgICAgICB1cmwgPSByZS5zZWFyY2godXJsX3BhdHRlcm4sIHVybCkKKyAg
ICAgICAgICAgIHVybCA9IHJlLnN1YigndXJsXChbXCdcIl0nLCAnJywgdXJsLmdyb3VwKDApKQor
ICAgICAgICAgICAgdXJsID0gcmUuc3ViKCdbXCdcIl1cKScsICcnLCB1cmwpCisgICAgICAgICAg
ICB1cmxzLmFwcGVuZCh1cmwpCisKKyAgICAgICAgc3JjX3BhdGhzID0gW3NyY190YWdbJ3NyYydd
IGZvciBzcmNfdGFnIGluIHNyY19hdHRyc10KKyAgICAgICAgaHJlZl9wYXRocyA9IFtocmVmX3Rh
Z1snaHJlZiddIGZvciBocmVmX3RhZyBpbiBocmVmX2F0dHJzXQorCisgICAgICAgIHBhdGhzID0g
c3JjX3BhdGhzICsgaHJlZl9wYXRocyArIHVybHMKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6
CisgICAgICAgICAgICAjIElnbm9yZSBodHRwIGFuZCBtYWlsdG8gbGlua3MKKyAgICAgICAgICAg
IGlmIG5vdChwYXRoLnN0YXJ0c3dpdGgoJ2h0dHA6JykpIGFuZCBcCisgICAgICAgICAgICAgICBu
b3QocGF0aC5zdGFydHN3aXRoKCdtYWlsdG86JykpOgorICAgICAgICAgICAgICAgIHN1cHBvcnRf
ZmlsZXMuYXBwZW5kKHBhdGgpCisKKyAgICAgICAgcmV0dXJuIHN1cHBvcnRfZmlsZXMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXJfdW5pdHRlc3QucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODc0NGNmNGI2MjU1M2ZkOGJlNzdhZmNmYmViNTcwNDQ5NjFhOTdlMAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0
ZXN0LnB5CkBAIC0wLDAgKzEsMjUzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5
cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworIyAgICBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKKyMgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GCisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KK2ltcG9ydCBvcworaW1w
b3J0IFN0cmluZ0lPCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CisK
K2Zyb20gd2Via2l0cHkudzNjLnRlc3RfcGFyc2VyIGltcG9ydCBUZXN0UGFyc2VyCisKKworb3B0
aW9ucyA9IHsnYWxsJzogRmFsc2UsICdub19vdmVyd3JpdGUnOiBGYWxzZX0KKworCitjbGFzcyBU
ZXN0UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbmFseXpl
VGVzdFJlZnRlc3RPbmVNYXRjaChzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGFuYWx5emVfdGVz
dCgpIHVzaW5nIGEgYmFzaWMgcmVmdGVzdCB3aXRoIG9uZSBtYXRjaCBsaW5rIGFuZCBubyBtaXNt
YXRjaCBsaW5rcyAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIHJl
bD0ibWF0Y2giIGhyZWY9ImdyZWVuLWJveC1yZWYueGh0IiAvPgorPC9oZWFkPgorIiIiCisgICAg
ICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRl
c3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0
ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQor
CisgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0
ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygp
LCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdy
ZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2Ug
ZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0
YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwg
J3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0JykKKworICAgIGRlZiB0
ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE11bHRpcGxlTWF0Y2hlcyhzZWxmKToKKyAgICAgICAgIiIi
IFRlc3RzIGFuYWx5emVfdGVzdCgpIHVzaW5nIGEgcmVmdGVzdCB3aXRoIG11bHRpcGxlIG1hdGNo
IGxpbmtzIGFuZCBubyBtaXNtYXRjaCBsaW5rcyAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAi
IiI8aGVhZD4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImdyZWVuLWJveC1yZWYueGh0IiAvPgor
PGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYmx1ZS1ib3gtcmVmLnhodCIgLz4KKzxsaW5rIHJlbD0i
bWF0Y2giIGhyZWY9Im9yYW5nZS1ib3gtcmVmLnhodCIgLz4KKzwvaGVhZD4KKyIiIgorICAgICAg
ICAjIENhcHR1cmUgc3Rkb3V0IGZvciB0aGlzIHRlc3QKKyAgICAgICAgc3Rkb3V0ID0gc3lzLnN0
ZG91dAorICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHN5cy5z
dGRvdXQgPSBvdXRwdXQKKworICAgICAgICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAgdGVz
dF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNl
cihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5m
byA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAg
ICAgIyBSZXN0b3JlIHN0ZG91dAorICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisKKyAgICAg
ICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ2RpZCBub3QgZmluZCBhIHRlc3QnKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQg
bm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5j
ZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHJlZmVyZW5jZSBmaWxlJykK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfaW5mb1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0
aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGggaXMgbm90IGNvcnJlY3QnKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUg
c2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxk
IG5vdCBoYXZlIGJlZW4gYW5hbHl6ZWQgYXMgYSBqc3Rlc3QnKQorCisgICAgICAgICMgVmVyaWZ5
IHdlIGdvdCB0aGUgd2FybmluZyBhYm91dCBtdWx0aXBsZSBtYXRjaGVzCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShvdXRwdXQuZ2V0dmFsdWUoKS5zdGFydHN3aXRoKCdXYXJuaW5nJyksICdubyB3
YXJuaW5nIGFib3V0IG11bHRpcGxlIG1hdGNoZXMnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZVRl
c3RSZWZ0ZXN0TWF0Y2hBbmRNaXNtYXRjaChzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGFuYWx5
emVfdGVzdCgpIHVzaW5nIGEgcmVmdGVzdCB3aXRoIGEgb25lIG1hdGNoIGxpbmsgYW5kIG9uZSBt
aXNtYXRjaCBsaW5rICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsg
cmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1hdGNo
IiBocmVmPSJibHVlLWJveC1yZWYueGh0IiAvPgorPGxpbmsgcmVsPSJtaXNtYXRjaCIgaHJlZj0i
b3JhbmdlLWJveC1ub3RyZWYueGh0IiAvPgorPC9oZWFkPgorIiIiCisgICAgICAgICMgQ2FwdHVy
ZSBzdGRvdXQgZm9yIHRoaXMgdGVzdAorICAgICAgICBzdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAg
ICAgIG91dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKKyAgICAgICAgc3lzLnN0ZG91dCA9IG91
dHB1dAorCisgICAgICAgICMgQW5hbHl6ZSB0aGUgdGVzdAorICAgICAgICB0ZXN0X3BhdGggPSAn
L3NvbWUvbWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMs
IHRlc3RfcGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2Vy
LmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICAjIFJlc3Rv
cmUgc3Rkb3V0CisgICAgICAgIHN5cy5zdGRvdXQgPSBzdGRvdXQKKworICAgICAgICAjIFZlcmlm
eSB0aGUgY29ycmVjdCB0ZXN0IGluZm8gd2FzIGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90
RXF1YWwodGVzdF9pbmZvLCBOb25lLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBh
IHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncmVmZXJlbmNlJyBpbiB0ZXN0
X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUodGVzdF9pbmZvWydyZWZlcmVuY2UnXS5zdGFydHN3aXRoKHRlc3RfcGF0
aCksICdyZWZlcmVuY2UgcGF0aCBpcyBub3QgY29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUg
bm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUg
YmVlbiBhbmFseXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICAgICAgIyBWZXJpZnkgd2UgZ290IG11
bHRpcGxlIHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzID0gb3V0cHV0LmdldHZhbHVlKCkuc3Bs
aXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbih3YXJuaW5ncyksIDIsICdh
bGwgd2FybmluZ3Mgd2VyZSBub3QgZGlzcGxheWVkJykKKyAgICAgICAgIyBWZXJpZnkgdGhlIGJv
dGggd2FybmluZ3MgbWVudGlvbiB0aGUgaXNzdWUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdt
dWx0aXBsZSBtYXRjaGVzJywgJ25vIHdhcm5pbmcgYWJvdXQgbXVsdGlwbGUgbWF0Y2hlcycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbWlzbWF0Y2gnLCAnbm8gd2FybmluZyBhYm91dCBtaXNt
YXRjaGVzJykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdFdpdGhSZWZTdXBwb3J0
RmlsZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHJl
ZnRlc3QgdGhhdCBoYXMgcmVmZXJzIHRvIGEgcmVmZXJlbmNlIGZpbGUgb3V0c2lkZSBvZiB0aGUg
dGVzdHMgZGlyZWN0b3J5IGFuZCB0aGUgcmVmZXJlbmNlIGZpbGUgaGFzIHBhdGhzIHRvIG90aGVy
IHN1cHBvcnQgZmlsZXMgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9Ii4uL3JlZmVyZW5jZS9ncmVlbi1ib3gtcmVmLnho
dCIgLz4KKzwvaGVhZD4KKyIiIgorICAgICAgICByZWZfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsg
aHJlZj0ic3VwcG9ydC9jc3MvcmVmLXN0eWxlc2hlZXQuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5
cGU9InRleHQvY3NzIj4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCIuLi8uLi9zdXBwb3J0L3NvbWUtaW1hZ2UucG5nIikKKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXY+PGltZyBzcmM9Ii4uL3N1cHBvcnQvYmxhY2s5Nng5Ni5wbmciIGFs
dD0iSW1hZ2UgZG93bmxvYWQgc3VwcG9ydCBtdXN0IGJlIGVuYWJsZWQiIC8+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRl
c3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJz
ZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2lu
Zm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sLCByZWZfY29u
dGVudHM9cmVmX2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZv
IHdhcyBmb3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwg
J2RpZCBub3QgZmluZCBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGlu
IHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3Qg
ZmluZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfaW5m
b1sncmVmZXJlbmNlJ10uc3RhcnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGggaXMg
bm90IGNvcnJlY3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3JlZnN1cHBvcnQnIGluIHRl
c3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhp
cyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKHRlc3RfaW5mb1sncmVmc3Vw
cG9ydCddKSwgMywgJ3RoZXJlIHNob3VsZCBiZSAzIHN1cHBvcnQgZmlsZXMgaW4gdGhpcyByZWZl
cmVuY2UnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5mby5r
ZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0JykK
KworICAgIGRlZiB0ZXN0X2FuYWx5emVKU1Rlc3Qoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBh
bmFseXplX3Rlc3QoKSB1c2luZyBhIGpzdGVzdCAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAi
IiI8aGVhZD4KKzxsaW5rIGhyZWY9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKyIiIgorICAgICAgICAjIEFuYWx5emUgdGhl
IHRlc3QKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAg
cGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcp
CisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10
ZXN0X2h0bWwpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBm
b3VuZAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ3Rlc3Rf
aW5mbyBpcyBOb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2lu
Zm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZSgncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnc2hvbGQgbm90IGhhdmUg
Zm91bmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZnN1
cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3VwcG9y
dCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdqc3Rlc3Qn
IGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBiZSBhIGpzdGVzdCcpCisKKyAgICBk
ZWYgdGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsVHJ1ZShzZWxmKToKKyAgICAgICAgIiIiIFRlc3Rz
IGFuYWx5emVfdGVzdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGlzIG5laXRoZXIgYSByZWZ0ZXN0IG9y
IGpzdGVzdCB3aXRoIGFsbD1GYWxzZSAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4K
KzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiIC8+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAg
ICAjIFNldCBvcHRpb25zIHRvICdhbGwnIHNvIHRoaXMgZ2V0cyBmb3VuZAorICAgICAgICBvcHRp
b25zWydhbGwnXSA9IFRydWUKKworICAgICAgICAjIEFuYWx5emUgdGhlIHRlc3QKKyAgICAgICAg
dGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBh
cnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3Rf
aW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAg
ICAgICAgIyBWZXJpZnkgdGhlIGNvcnJlY3QgdGVzdCBpbmZvIHdhcyBmb3VuZAorICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ3Rlc3RfaW5mbyBpcyBOb25lJykK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlk
IG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmZXJl
bmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnc2hvbGQgbm90IGhhdmUgZm91bmQgYSByZWZlcmVu
Y2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3Rf
aW5mby5rZXlzKCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhp
cyB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8u
a2V5cygpLCAndGVzdCBzaG91bGQgbm90IGJlIGEganN0ZXN0JykKKworICAgIGRlZiB0ZXN0X2Fu
YWx5emVQaXhlbFRlc3RBbGxGYWxzZShzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGFuYWx5emVf
dGVzdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGlzIG5laXRoZXIgYSByZWZ0ZXN0IG9yIGpzdGVzdCwg
d2l0aCAtYWxsPUZhbHNlICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxpbmsg
cmVsPSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhPUiIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+PCFbQ0RBVEFbCitDU1MgRk9SIFRFU1QKK11dPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KK0NPTlRFTlQgT0YgVEVTVAorPC9ib2R5PgorPC9odG1sPgorIiIiCisgICAgICAgICMgU2V0
IGFsbCB0byBmYWxzZSBzbyB0aGlzIGdldHMgc2tpcHBlZAorICAgICAgICBvcHRpb25zWydhbGwn
XSA9IEZhbHNlCisKKyAgICAgICAgIyBBbmFseXplIHRoZSB0ZXN0CisgICAgICAgIHRlc3RfcGF0
aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0
aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2luZm8gPSBw
YXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAgICAgICMg
VmVyaWZ5IHRoZSBjb3JyZWN0IHRlc3QgaW5mbyB3YXMgZm91bmQKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0IHNob3VsZCBoYXZlIGJlZW4gc2tpcHBlZCcp
CisKKyAgICBkZWYgdGVzdF9hbmFseXplTm9uSFRNTEZpbGUoc2VsZik6CisgICAgICAgICIiIiBU
ZXN0cyBhbmFseXplX3Rlc3QoKSB3aXRoIGEgZmlsZSB0aGlzIGlzbid0IGh0bWwgKHRoaXMgb25l
ISkgIiIiCisKKyAgICAgICAgIyBUcnkgdG8gYW5hbHl6ZSB0aGUgc2NyaXB0IGZpbGUgd2UncmUg
dGVzdGluZyAoaG93IG1ldGEpCisgICAgICAgIHRlc3RfcGFyc2VyX3B5X2ZpbGUgPSBvcy5wYXRo
LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ3Rlc3RfcGFyc2VyLnB5JykKKworICAg
ICAgICAjIEFuYWx5emUgdGhlIGZpbGUKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRp
b25zLCB0ZXN0X3BhcnNlcl9weV9maWxlKQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5h
bHl6ZV90ZXN0KCkKKworICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVjdCB0ZXN0IGluZm8gd2Fz
IGZvdW5kCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9pbmZvLCBOb25lLCAnbm8gdGVz
dHMgc2hvdWxkIGhhdmUgYmVlbiBmb3VuZCBpbiB0aGlzIGZpbGUnKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201281</attachid>
            <date>2013-05-09 15:03:43 -0700</date>
            <delta_ts>2013-05-09 19:09:19 -0700</delta_ts>
            <desc>delta from patch that landed initially, for ease of review</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>6631</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5p
dHRlc3QucHkKaW5kZXggYjk4ODNiMC4uODc4ODUyYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKQEAgLTMxLDYgKzMx
LDcgQEAgZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQKIGltcG9ydCByZQogaW1wb3J0IHVuaXR0
ZXN0MiBhcyB1bml0dGVzdAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0
aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIAogZnJvbSB3ZWJraXRweS53M2MudGVzdF9j
b252ZXJ0ZXIgaW1wb3J0IFRlc3RDb252ZXJ0ZXIKQEAgLTc3LDcgKzc4LDEyIEBAIENPTlRFTlQg
T0YgVEVTVAogICAgICAgICBjb252ZXJ0ZXIgPSBUZXN0Q29udmVydGVyKCkKIAogICAgICAgICAj
IFRyeSB0byBjb252ZXJ0IHRoZSBodG1sCi0gICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5j
b252ZXJ0X2Zvcl93ZWJraXQoJy9ub3RoaW5nL3RvL2NvbnZlcnQnLCBjb250ZW50cz10ZXN0X2h0
bWwsIGZpbGVuYW1lPSdzb21lZmlsZS5odG1sJykKKyAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJl
KCkKKyAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAg
ICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KCcvbm90aGluZy90by9j
b252ZXJ0JywgY29udGVudHM9dGVzdF9odG1sLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCiAKICAgICAg
ICAgIyBWZXJpZnkgbm90aGluZyB3YXMgY29udmVydGVkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29udmVydGVkLCBOb25lLCAndGVzdCB3YXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29udmVy
dGVkJykKQEAgLTE0MSw3ICsxNDcsMTIgQEAgQ09OVEVOVCBPRiBURVNUCiAgICAgICAgIHRlc3Rf
Y29udGVudCA9IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIucHJlZml4ZWRfcHJv
cGVydGllcywgMiwgdGVzdF9odG1sKQogCiAgICAgICAgICMgQ29udmVydCB0aGUgaHRtbAotICAg
ICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KHRlc3RfcGF0aCwg
Y29udGVudHM9dGVzdF9jb250ZW50WzFdLCBmaWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisgICAg
ICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfZm9y
X3dlYmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfY29udGVudFsxXSwgZmlsZW5hbWU9J3Nv
bWVmaWxlLmh0bWwnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9v
dXRwdXQoKQogCiAgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5lZAogICAgICAg
ICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2FzIG5vdCBjb252
ZXJ0ZWQnKQpAQCAtMTc5LDEwICsxOTAsMTUgQEAgQ09OVEVOVCBPRiBURVNUCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcm5lc3NhbmRwcm9wcycpCiAK
ICAgICAgICAgIyBHZW5lcmF0ZSAmIGluc2VydCB0aGUgdGVzdCBwcm9wZXJ0aWVzIGludG8gdGhl
IHRlc3RfaHRtbAotICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlVGVzdENvbnRl
bnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDQsIHRlc3RfaHRtbCkKIAogICAgICAg
ICAjIENvbnZlcnQgdGhlIGh0bWwKLSAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZl
cnRfZm9yX3dlYmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfY29udGVudFsxXSwgZmlsZW5h
bWU9J3NvbWVmaWxlLmh0bWwnKQorICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAg
ICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RfY29u
dGVudCA9IHNlbGYuZ2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVy
dGllcywgNCwgdGVzdF9odG1sKQorICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNv
bnZlcnRfZm9yX3dlYmtpdCh0ZXN0X3BhdGgsIGNvbnRlbnRzPXRlc3RfY29udGVudFsxXSwgZmls
ZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb2Mu
cmVzdG9yZV9vdXRwdXQoKQogCiAgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5l
ZAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2Fz
IG5vdCBjb252ZXJ0ZWQnKQpAQCAtMjExLDcgKzIyNywxMiBAQCBDT05URU5UIE9GIFRFU1QKIAog
ICAgICAgICAjIENvbnZlcnQgdGhlIGh0bWwKICAgICAgICAgZG9jID0gQmVhdXRpZnVsU291cCh0
ZXN0X2h0bWwpCi0gICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X3Rlc3RoYXJu
ZXNzX3BhdGhzKGRvYywgdGVzdF9wYXRoKQorICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQor
ICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNv
bnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKGRvYywgdGVzdF9w
YXRoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQog
CiAgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5lZAogICAgICAgICBzZWxmLmFz
c2VydFRydWUoY29udmVydGVkLCAndGVzdCB3YXMgbm90IGNvbnZlcnRlZCcpCkBAIC0yODgsNyAr
MzA5LDEyIEBAIENPTlRFTlQgT0YgVEVTVAogICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdl
bmVyYXRlVGVzdENvbnRlbnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDIwLCB0ZXN0
X2h0bWwpCiAKICAgICAgICAgIyBDb252ZXJ0IHRoZSBodG1sCi0gICAgICAgIGNvbnZlcnRlZCA9
IGNvbnZlcnRlci5jb252ZXJ0X3ByZWZpeGVkX3Byb3BlcnRpZXMoQmVhdXRpZnVsU291cCh0ZXN0
X2NvbnRlbnRbMV0pKQorICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5j
YXB0dXJlX291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IGNv
bnZlcnRlci5jb252ZXJ0X3ByZWZpeGVkX3Byb3BlcnRpZXMoQmVhdXRpZnVsU291cCh0ZXN0X2Nv
bnRlbnRbMV0pKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRw
dXQoKQogCiAgICAgICAgICMgVmVyaWZ5IGEgY29udmVyc2lvbiBoYXBwZW5lZAogICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFsKGNvbnZlcnRlZCwgTm9uZSwgJ3Rlc3Qgd2FzIG5vdCBjb252ZXJ0
ZWQnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKaW5kZXgg
NTU0MTcyMi4uNjc1MWVmYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9pbXBvcnRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2lt
cG9ydGVyLnB5CkBAIC0xODAsNyArMTgwLDcgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6
CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBBc3N1bWluZyBNZXJjdXJpYWwgaXMgc2V0
IHVwIG9uIHRoZSBzeXN0ZW0sIHRyeSB0byBncmFiIHRoZSBjaGFuZ2VzZXQgd2UncmUgaW1wb3J0
aW5nCi0gICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2hnJywgJ3RpcCddLCBl
bnY9b3MuZW52aXJvbiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgY3dkPXNlbGYuc291cmNlX2Rp
cmVjdG9yeSkKKyAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnaGcnLCAndGlw
J10sIGVudj1vcy5lbnZpcm9uLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9b3MuZGV2
bnVsbCwgY3dkPXNlbGYuc291cmNlX2RpcmVjdG9yeSkKICAgICAgICAgICAgIHNlbGYuY2hhbmdl
c2V0ID0gcHJvYy5zdGRvdXQucmVhZGxpbmVzKClbMF0KICAgICAgICAgICAgIHNlbGYuY2hhbmdl
c2V0ID0gc2VsZi5jaGFuZ2VzZXQuc3BsaXQoJ2NoYW5nZXNldDonKVsxXQogICAgICAgICBleGNl
cHQ6CkBAIC0zNDIsNyArMzQyLDcgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUobmV3X2ZpbGVw
YXRoKSkKIAogICAgICAgICAgICAgICAgICAgICAjIERvbid0IG92ZXJ3cml0ZSBleGlzdGluZyB0
ZXN0cyBpZiBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICAgICAgaWYgb3B0aW9ucy5ub19vdmVy
d3JpdGUgaXMgVHJ1ZSBhbmQgb3MucGF0aC5leGlzdHMobmV3X2ZpbGVwYXRoKToKKyAgICAgICAg
ICAgICAgICAgICAgaWYgc2VsZi5vcHRpb25zLm5vX292ZXJ3cml0ZSBpcyBUcnVlIGFuZCBvcy5w
YXRoLmV4aXN0cyhuZXdfZmlsZXBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQg
J1NraXBwaW5nIGltcG9ydCBvZiBleGlzdGluZyBmaWxlICcgKyBuZXdfZmlsZXBhdGgKICAgICAg
ICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogTWF5
YmUgZG9pbmcgYSBmaWxlIGRpZmYgaXMgaW4gb3JkZXIgaGVyZSBmb3IgZXhpc3RpbmcgZmlsZXM/
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0
dGVzdC5weQppbmRleCBkNTgwOWVkLi4yNTE0ZTZjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKQEAgLTI2LDkgKzI2LDE0
IEBACiAjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgogIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICMgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcHRw
YXJzZQogaW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1
bml0dGVzdDIgYXMgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1
dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudzNjIGltcG9ydCB0
ZXN0X2NvbnZlcnRlcgogZnJvbSB3ZWJraXRweS53M2MudGVzdF9pbXBvcnRlciBpbXBvcnQgVGVz
dEltcG9ydGVyCiAKQEAgLTQ0LDkgKzQ5LDE1IEBAIGNsYXNzIFRlc3RJbXBvcnRlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdF9jb252ZXJ0ZXIuV0VCQ09SRV9TVUJESVIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbnZlcnRl
ci5DU1NfU1VCRElSKQogCi0gICAgICAgIGltcG9ydGVyID0gVGVzdEltcG9ydGVyKGRpcl93aXRo
X25vX3Rlc3RzLCBOb25lKQotICAgICAgICBpbXBvcnRlci5kb19pbXBvcnQoKQotCisgICAgICAg
IGltcG9ydGVyID0gVGVzdEltcG9ydGVyKGRpcl93aXRoX25vX3Rlc3RzLCBvcHRwYXJzZS5WYWx1
ZXMoeyJub19vdmVyd3JpdGUiOiBUcnVlfSkpCisgICAgICAgIGltcG9ydGVyLmRlc3RpbmF0aW9u
X2RpcmVjdG9yeSA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdjc3N3ZycpCisgICAgICAgIG9j
ID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgaW1wb3J0ZXIuZG9faW1wb3J0KCkKKyAgICAgICAgZmluYWxseToK
KyAgICAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgICAgIHNodXRpbC5ybXRy
ZWUoaW1wb3J0ZXIuZGVzdGluYXRpb25fZGlyZWN0b3J5LCBpZ25vcmVfZXJyb3JzPVRydWUpCiAK
ICAgICAjIFRPRE86IE5lZWQgbW9yZSB0ZXN0cywgYnV0IHdoYXQgdG8gdXNlIGZvciB2YWxpZCBz
b3VyY2UgZGlyZWN0b3J5PyBNYWtlIGl0IG9uIHRoZSBmbHkKICAgICAjICAgICAgIGFuZCBjbGVh
biBpdCB1cCBhZnRlcndhcmQ/Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>201298</attachid>
            <date>2013-05-09 16:00:38 -0700</date>
            <delta_ts>2013-05-09 16:00:38 -0700</delta_ts>
            <desc>Archive of layout-test-results from webkit-ews-05 for mac-mountainlion</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>652912</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
L2phdmFzY3JpcHQtdXJsLWluLW9iamVjdC1hY3R1YWwudHh0VVQJAAM4JIxROCSMUXV4CwABBPUB
AAAEUAAAAE2OQQrCMBRE9z3F0E3aTfcWXKhEEaou6gW+6aemxESSn6K3t7pyMwzDgze7y7m/dBon
3febg27hrGesWlzfT9YxhthC+eycgk3wQUAe4TaxEVQ8k8sk1o9QQzD5wV6akUU7/tbt+zhUpVBc
prJuUjRYo5xopmSifUpLjqNUar85dqouVV1c74tEOMmSdxL8scjRJVj/5xcaMYTfqcUAfrHJwkNT
FMUHUEsDBBQAAgAIAC58qUJS0Vh6EAEAANcBAAAtABwAZmFzdC9sb2FkZXIvamF2YXNjcmlwdC11
cmwtaW4tb2JqZWN0LWRpZmYudHh0VVQJAAM4JIxROSSMUXV4CwABBPUBAAAEUAAAAL2QwWoCQQyG
7z5F2Msq6zhIe+lCYbXdFqmt0JV6jrupjqQzMpMRffuOtlCfoASSEEK+/49SCvSH4/hFQT+ioK5X
jV7R+sXIb5lGw51+JyYMpBlPLooSCqI8hcgS9CcG0eywI693eMDQerMXFT0rY5Vb76gVRcd9KtSN
5Ci9oij+CYutROQLtKpAjYc3UIyHt1BVveJh8dYs5jW81k0zea5LYGMJ7kpYnvZUe+98CbmNzDmY
ANYJoIWfu9CnA3JEMXYDeefa5MTKaENSM53b6WnW9TNBn0bZYBR8C/eQ/ckskclLP3+azOb5IMsH
PVhuE+XsMOUtClwtQzIVwNgrAYIb6NxFVUIAHamN5/f2IMU3UEsDBBQAAgAIAC58qUIOCRBoRAAA
AEkAAAAxABwAZmFzdC9sb2FkZXIvamF2YXNjcmlwdC11cmwtaW4tb2JqZWN0LWV4cGVjdGVkLnR4
dFVUCQADOCSMUTgkjFF1eAsAAQT1AQAABFAAAAANxNENgCAMBcB/pngTOIBzuECFBkoMNfRhHF/v
445mAWrwvwnR5ZHI027uWPMK2IAM+Nk1E5SK4hhOVCX01byoZUspfVBLAwQUAAIACAAvfKlCguz5
tNcHAADdGAAANQAcAGZhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWluLW9iamVjdC1wcmV0dHkt
ZGlmZi5odG1sVVQJAAM5JIxROSSMUXV4CwABBPUBAAAEUAAAAK1Za3PbNhb97l+BsadV0jFJyZKy
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
KgNwHKTAXprkQqCYFSP68dPh+/TNt7+XXC3gDgHj9vltCLhAH5B9O4ZgjhmwwJvB3cfvPw/e2tnB
W6c6IAQc5n/qzqsBfrB0027tXw6N3MBd5+XovBiZ0SuCctUflC8bqm9eUjnWrfkIAU4lFKJaGBRe
o5Sb2Gh6J3uSAOGlYdtz/5tJV68wadxv0v9XmfErlJm8Xpm/gqnWj+Er4Ajzrxp/AlBLAwQKAAAA
AABHfKlCAAAAAAAAAAAAAAAAGAAcAGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uL1VUCQADZiSMUZ0l
jFF1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAR3ypQiGPvTgyAAAAMwAAADYAHABmYXN0L3NwYXRp
YWwtbmF2aWdhdGlvbi9zbmF2LW1lZGlhLWVsZW1lbnRzLXN0ZGVyci50eHRVVAkAA2YkjFFmJIxR
dXgLAAEE9QEAAARQAAAAc8tJLEl1SU3OT0m1UkgB0Zl56QqpRUX5RVYKmXnJ+UVFqcklCimJJYkK
yRmpydl6XABQSwMECgAAAAAAU3ypQgAAAAAAAAAAAAAAAAkAHABmYXN0L3hzbC9VVAkAA30kjFGd
JYxRdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFJ8qUJy/WXyhQAAAOkAAAAlABwAZmFzdC94c2wv
dHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUCQADfCSMUXwkjFF1eAsAAQT1AQAABFAAAACt
TjEOwkAM2/uKfKBkYLsZJthAdE7bVJyUu1S5nNT+noN+gcWybMv2pGmNQh41A5upBVii8A8CIr5U
auKCF3LC6/DAgcdbdLzTrtWfXLzgQsVxK4LGRatNLb69rZ91OjUVJGaGM7Bw4uwQ06rmXXPCQSFA
zTS2UVcQpflP4/1Rz/P3RfcBUEsDBBQAAgAIAFJ8qULOCSgCjQAAAPAAAAAnABwAZmFzdC94c2wv
eHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0VVQJAAN8JIxRfCSMUXV4CwABBPUBAAAEUAAA
AKWOMQ7CMAxF957CFyge2DLDBBuIzk7rikhOXDmOBLcn0COwfPn/Z1t/1rwlIU9agM3UAqxJ+CcB
ER8qLXPFEznhebrhxPGSHK/01uZ3rl5xper4qoLGVZvNfb07HyMtY8qbmo/N0qFnIKkwHIGFMxeH
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
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQJAAPZJIxRnSWMUXV4CwABBPUBAAAEUAAAAFBLAwQU
AAIACACFfKlCY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA9kkjFHZJIxRdXgLAAEE9QEAAARQ
AAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5S
CMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeS
yp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACACFfKlCY6qsbIIAAACoAAAAUgAcAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxl
LXNyYy0yLXN0ZGVyci50eHRVVAkAA9kkjFHZJIxRdXgLAAEE9QEAAARQAAAALY1BCsMwDATveYVe
EDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbv
IUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN
1PGavlBLAwQKAAAAAACNfKlCAAAAAAAAAAAAAAAAIQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L1VUCQAD6iSMUZ0ljFF1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAjXypQj4ycCaj
AQAAeQQAAFcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9yZWRpcmVjdC1odHRw
cy10by1odHRwLWlmcmFtZS1pbi1tYWluLWZyYW1lLWFjdHVhbC50eHRVVAkAA+okjFHqJIxRdXgL
AAEE9QEAAARQAAAArZNNb9swDIbv+RVcT9vBdroVWBF0K4Y2WQd0SwAH2JmW2UiIPgyJTpZ/P9oJ
0maHrGkL+6CPl+RD6ZVD4+EhoiPIoDZ1yRh5FsPKJBM82vuA9STESacYuH/EE+NN0rdBtY48H5Xe
oa8tTb0V0Xgl6vSfrEez3QTnzGHB7e7Z1bss64czZA1FsZ8Ps+yr/GfPaPNm+quc3o/h57gsv30f
j2CuCRpcECADVqHlUWXRLyVRaixuqAbjE6k2EqjgWboT2OBAMzejojj/+Dkfync+uhxeDoteaXhT
REqhjYqSjGoT80Y31220X7qwdBh3cfHpMc6ZPyRH0Bd6kqQK0fhFrtnZfDCQJm+3eD92bLuIU27x
tEN99a28GckJbjsifQn8M97LgWSuTQKmxBAa8gkQ1sbXYQ2sxWwdlKz5R3+Zbbr3K4Oi5WjUcgO9
fUjxhxx+EyQdWlt3e4sFRVH1ftk7U6G1FaolVKSwTSSVCJ6QyqBb2WEI3d18Piuharmb7CwvRtsn
7EmVQFZb+8dgrdSrNh04KjYrAk+8DnEpD4ilNMV88BdQSwMEFAACAAgAjXypQsKXkFITAQAAygIA
AFUAHABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9yZWRpcmVjdC1odHRwcy10by1o
dHRwLWlmcmFtZS1pbi1tYWluLWZyYW1lLWRpZmYudHh0VVQJAAPqJIxR6iSMUXV4CwABBPUBAAAE
UAAAAM2PTUsDMRCG7/srYq/bcTxpDyKL/UBRsLRgz+lmZAeyyZLMLu2/N/tBwYtQvAhhMpO8PO87
AKDw09u2pogrLRrXhz0e6PjGMl3PLVuDO7KkI6HVZ98KCEWBQLG1ErESabB/iRipbAPLGWs+kVl6
J+QEAxkOVAr0ygjihwb4K+iagB3UOpVxolOTlGRu5SRZnuf/LJ4updV2CFcUChbzB5Uv5veqKDKV
KcNmxbFJKV7d4EWTR6Z6hhoYCnrdhh3HauXLtJuTd6/NxodN/5+NVmr2eANju9VSKcTLfAfwlM5s
JO2oJO5oT6GjsJt2SbBt8B1H9k7bH3h1HX7p65rlL4RfVr2S9KKdsfThbGKsuwSLF9I3UEsDBBQA
AgAIAI18qUKOqrFUtgEAANcEAABZABwAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQv
cmVkaXJlY3QtaHR0cHMtdG8taHR0cC1pZnJhbWUtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHRV
VAkAA+okjFHqJIxRdXgLAAEE9QEAAARQAAAArVNNb9NAEL3nVww9wcF2CpWoogJCbUKRShPVkXoe
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
MXmReexwC9PfUP31a4H2RqPDyeg4fPTqu/ZdRStluutj1z/mE8bpwP5D598AUEsDBAoAAAAAAKN8
qUIAAAAAAAAAAAAAAAAGABwAbWVkaWEvVVQJAAMSJYxRnSWMUXV4CwABBPUBAAAEUAAAAFBLAwQU
AAIACAB6fKlCIY+9ODIAAAAzAAAALQAcAG1lZGlhL2NsaWNrLXZvbHVtZS1iYXItbm90LXBhdXNp
bmctc3RkZXJyLnR4dFVUCQADxySMUcckjFF1eAsAAQT1AQAABFAAAABzy0ksSXVJTc5PSbVSSAHR
mXnpCqlFRflFVgqZecn5RUWpySUKKYkliQrJGanJ2XpcAFBLAwQUAAIACAB8fKlCKGN3lKEAAABb
AwAAIQAcAG1lZGlhL2V2ZW50LWF0dHJpYnV0ZXMtc3RkZXJyLnR4dFVUCQADyySMUcskjFF1eAsA
AQT1AQAABFAAAADdkUEKwjAQRfeeYi5QiZYIBhGklSJYkNqduBiTAYMxLdNo29srunZZQdf/wePx
c+wB5jCRKpZKSmjpdLEhoraJhBy7SqOD9HatC/KGuGSiw3QWS3GExZq54qWCJEsqH6gL+ydMSZkr
sP6OzhrQ7wFEJ0b5T5pKRt84DN+xrYzZYTgPJtLO1sNXpIzt1npCzhiNJR/+7adXIfbEG1+Q/pD3
AFBLAwQUAAIACACCfKlCP2GK4aEAAABbAwAAKgAcAG1lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlv
LXNpemUtc3RkZXJyLnR4dFVUCQAD0ySMUdMkjFF1eAsAAQT1AQAABFAAAADdkcEKgkAURfd9xfsB
Y0oUGiIIDQkSwtxFi9fMA4emUZ5T6t8XtW5pUOt74HC4OQ4AC5hFMoylCKGj88X4gLo2ENHU1got
pLdrU5DTxCUTHedxGIkTLDfMNa8kJFlSO0+9PzxhSspcgnF3tEaDeg8gejHJf9JUMrrWov+Oba31
Hn01mkhZ04xfkTJ2O+MIOWPUhpz/t59ehTgQb11B6kPeA1BLAwQUAAIACACEfKlCIY+9ODIAAAAz
AAAAKAAcAG1lZGlhL21lZGlhLWZ1bGxzY3JlZW4taW5saW5lLXN0ZGVyci50eHRVVAkAA9gkjFHY
JIxRdXgLAAEE9QEAAARQAAAAc8tJLEl1SU3OT0m1UkgB0Zl56QqpRUX5RVYKmXnJ+UVFqcklCimJ
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
AAAAAAAZABwAc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L1VUCQADLiWMUZ0ljFF1eAsAAQT1AQAA
BFAAAABQSwMEFAACAAgAsXypQitSoNFWAAAAXQAAAEAAHABzdmcvZG9tL1NWR1NjcmlwdEVsZW1l
bnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy1hY3R1YWwudHh0VVQJAAMuJYxRLiWMUXV4
CwABBPUBAAAEUAAAABWMMQ6AIBAEe16xr7Cgs1BjYgexJ3IIyQkGLvp9sZ2ZjKUm4OI8XPagWksF
PZQFsQNO+cSbJMLsizlqumViurpW87huGjYSQmEu719KnzUEl5i8xqA+UEsDBBQAAgAIALF8qULi
tLvyyQAAAIMBAAA+ABwAc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1l
cnJvci1ldmVudHMtZGlmZi50eHRVVAkAAy4ljFEuJYxRdXgLAAEE9QEAAARQAAAAxY6/TgMxDIf3
PIX3YCwYOnS6IgpCMFRN1c7h4vYi+S5V4vTP23N3YuIFWGz5Z332h4hA+yS150KvXj2tD44O/P0Z
9be91CiBtizsC5P4e6qKykUxc6mihcrlRCH15Pbvrs3xrGvhngelMk8oyQf0Q0DOOWXky7gryLcz
t8rhUW9qrLX/5eFbrV5mi6YBfHp4BjuVpjGwG8/DhMGIwYzBjEE3BhKHE1yjdvD3o8HNyjlj31Yf
X0vYdQzHJJKuEzApFzj6KByWsDA/UEsDBBQAAgAIALF8qUJH/omuPQAAAD4AAABCABwAc3ZnL2Rv
bS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVudHMtZXhwZWN0ZWQu
dHh0VVQJAAMuJYxRLiWMUXV4CwABBPUBAAAEUAAAAAtJLS5RyMlPTFFIzEtRSC0qyi9SSC1LzStR
yAAK5GTmpSuUZ5ZkKASHuQcnF2UWlLjmpOYCpbkCHIODuQBQSwMEFAACAAgAsXypQj88M1GYBwAA
OhgAAEYAHABzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2
ZW50cy1wcmV0dHktZGlmZi5odG1sVVQJAAMuJYxRLiWMUXV4CwABBPUBAAAEUAAAAKVZa2/jNhb9
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
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAHHypQiGPvTgyAAAAMwAAAD8AGAAAAAAAAQAAAKSB5uIA
AGZhc3QvZXZlbnRzL21lZGlhLWZvY3VzLWluLXN0YW5kYWxvbmUtbWVkaWEtZG9jdW1lbnQtc3Rk
ZXJyLnR4dFVUBQADGCSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAC98qUIAAAAAAAAAAAAA
AAAMABgAAAAAAAAAEADtQZHjAABmYXN0L2xvYWRlci9VVAUAAzkkjFF1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAAufKlCFLlhIqcAAADXAAAALwAYAAAAAAABAAAApIHX4wAAZmFzdC9sb2FkZXIv
amF2YXNjcmlwdC11cmwtaW4tb2JqZWN0LWFjdHVhbC50eHRVVAUAAzgkjFF1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACAAufKlCUtFYehABAADXAQAALQAYAAAAAAABAAAApIHn5AAAZmFzdC9sb2Fk
ZXIvamF2YXNjcmlwdC11cmwtaW4tb2JqZWN0LWRpZmYudHh0VVQFAAM4JIxRdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgALnypQg4JEGhEAAAASQAAADEAGAAAAAAAAQAAAKSBXuYAAGZhc3QvbG9h
ZGVyL2phdmFzY3JpcHQtdXJsLWluLW9iamVjdC1leHBlY3RlZC50eHRVVAUAAzgkjFF1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAAvfKlCguz5tNcHAADdGAAANQAYAAAAAAABAAAApIEN5wAAZmFz
dC9sb2FkZXIvamF2YXNjcmlwdC11cmwtaW4tb2JqZWN0LXByZXR0eS1kaWZmLmh0bWxVVAUAAzkk
jFF1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABHfKlCAAAAAAAAAAAAAAAAGAAYAAAAAAAAABAA
7UFT7wAAZmFzdC9zcGF0aWFsLW5hdmlnYXRpb24vVVQFAANmJIxRdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAR3ypQiGPvTgyAAAAMwAAADYAGAAAAAAAAQAAAKSBpe8AAGZhc3Qvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtbWVkaWEtZWxlbWVudHMtc3RkZXJyLnR4dFVUBQADZiSMUXV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAFN8qUIAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQUfwAABmYXN0
L3hzbC9VVAUAA30kjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABSfKlCcv1l8oUAAADpAAAA
JQAYAAAAAAABAAAApIGK8AAAZmFzdC94c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVU
BQADfCSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFJ8qULOCSgCjQAAAPAAAAAnABgAAAAA
AAEAAACkgW7xAABmYXN0L3hzbC94c2x0LWJhZC1pbXBvcnQtdXJpLXN0ZGVyci50eHRVVAUAA3wk
jFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABTfKlCgUp3rUsAAACsAAAANAAYAAAAAAABAAAA
pIFc8gAAZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4
dFVUBQADfSSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAOp8qUJ/lAdzGwIAAMAEAAARABgA
AAAAAAEAAACkgRXzAABmdWxsX3Jlc3VsdHMuanNvblVUBQADlyWMUXV4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAFd8qUIAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQXv1AABmdWxsc2NyZWVuL1VU
BQADhSSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFd8qUIhj704MgAAADMAAAAsABgAAAAA
AAEAAACkgcD1AABmdWxsc2NyZWVuL3ZpZGVvLWN1cnNvci1hdXRvLWhpZGUtc3RkZXJyLnR4dFVU
BQADhSSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAANl7qUIAAAAAAAAAAAAAAAAFABgAAAAA
AAAAEADtQVj2AABodHRwL1VUBQADmiOMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAHZ8qUIA
AAAAAAAAAAAAAAALABgAAAAAAAAAEADtQZf2AABodHRwL3Rlc3RzL1VUBQADvySMUXV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAANl7qUIAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQdz2AABodHRw
L3Rlc3RzL2FwcGNhY2hlL1VUBQADmiOMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIANl7qUIh
j704MgAAADMAAAAkABgAAAAAAAEAAACkgSr3AABodHRwL3Rlc3RzL2FwcGNhY2hlL3ZpZGVvLXN0
ZGVyci50eHRVVAUAA5ojjFF1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABKfKlCAAAAAAAAAAAA
AAAAEAAYAAAAAAAAABAA7UG69wAAaHR0cC90ZXN0cy9taXNjL1VUBQADaySMUXV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAEp8qUIVNTWSegAAALwAAAAqABgAAAAAAAEAAACkgQT4AABodHRwL3Rl
c3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAUAA2skjFF1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAACNfKlCAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UHi+AAAaHR0cC90ZXN0
cy9zZWN1cml0eS9VVAUAA+okjFF1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACFfKlCAAAAAAAA
AAAAAAAAKgAYAAAAAAAAABAA7UEw+QAAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvVVQFAAPZJIxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAhXypQmOqrGyCAAAA
qAAAAEAAGAAAAAAAAQAAAKSBlPkAAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA9kkjFF1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACFfKlCY6qsbIIAAACoAAAAUgAYAAAAAAABAAAApIGQ+gAAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3JjLTIt
c3RkZXJyLnR4dFVUBQAD2SSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAI18qUIAAAAAAAAA
AAAAAAAhABgAAAAAAAAAEADtQZ77AABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9V
VAUAA+okjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACNfKlCPjJwJqMBAAB5BAAAVwAYAAAA
AAABAAAApIH5+wAAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVkaXJlY3QtaHR0
cHMtdG8taHR0cC1pZnJhbWUtaW4tbWFpbi1mcmFtZS1hY3R1YWwudHh0VVQFAAPqJIxRdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAjXypQsKXkFITAQAAygIAAFUAGAAAAAAAAQAAAKSBLf4AAGh0
dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3JlZGlyZWN0LWh0dHBzLXRvLWh0dHAtaWZy
YW1lLWluLW1haW4tZnJhbWUtZGlmZi50eHRVVAUAA+okjFF1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACACNfKlCjqqxVLYBAADXBAAAWQAYAAAAAAABAAAApIHP/wAAaHR0cC90ZXN0cy9zZWN1cml0
eS9taXhlZENvbnRlbnQvcmVkaXJlY3QtaHR0cHMtdG8taHR0cC1pZnJhbWUtaW4tbWFpbi1mcmFt
ZS1leHBlY3RlZC50eHRVVAUAA+okjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACNfKlCxzxr
m/AHAAADHAAAXQAYAAAAAAABAAAApIEYAgEAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRl
bnQvcmVkaXJlY3QtaHR0cHMtdG8taHR0cC1pZnJhbWUtaW4tbWFpbi1mcmFtZS1wcmV0dHktZGlm
Zi5odG1sVVQFAAPqJIxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAdnypQmBLZhCRAAAA+wEA
AEUAGAAAAAAAAQAAAKSBnwoBAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZG9j
dW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUBQADvySMUXV4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAOd8qULqinxCYQUAAAUPAAAKABgAAAAAAAEAAACkga8LAQBodHRwZC5jb25mVVQF
AAORJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAbXypQgAAAAAAAAAAAAAAAAoAGAAAAAAA
AAAQAO1BVBEBAGluc3BlY3Rvci9VVAUAA60kjFF1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABg
fKlCAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGYEQEAaW5zcGVjdG9yL2NvbnNvbGUvVVQFAAOT
JIxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAYHypQoiwkLk0AQAA8wIAAC0AGAAAAAAAAQAA
AKSB5BEBAGluc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktYWN0dWFsLnR4dFVUBQAD
kySMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGB8qUKR5VdCCQEAAEICAAArABgAAAAAAAEA
AACkgX8TAQBpbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLWRpZmYudHh0VVQFAAOT
JIxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAYHypQo9zrzc0AQAA8wIAAC8AGAAAAAAAAQAA
AKSB7RQBAGluc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktZXhwZWN0ZWQudHh0VVQF
AAOTJIxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAYHypQuADye/kBwAAIBoAADMAGAAAAAAA
AQAAAKSBihYBAGluc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktcHJldHR5LWRpZmYu
aHRtbFVUBQADkySMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAG18qUIAAAAAAAAAAAAAAAAT
ABgAAAAAAAAAEADtQdseAQBpbnNwZWN0b3IvZGVidWdnZXIvVVQFAAOtJIxRdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAbXypQpGZOCe/AAAAIAIAACwAGAAAAAAAAQAAAKSBKB8BAGluc3BlY3Rv
ci9kZWJ1Z2dlci9kaXNhYmxlLXNjcmlwdC1hY3R1YWwudHh0VVQFAAOtJIxRdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAbXypQnucWK0IAQAArQIAACoAGAAAAAAAAQAAAKSBTSABAGluc3BlY3Rv
ci9kZWJ1Z2dlci9kaXNhYmxlLXNjcmlwdC1kaWZmLnR4dFVUBQADrSSMUXV4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAG18qUKv7nHJfgAAAPcAAAAuABgAAAAAAAEAAACkgbkhAQBpbnNwZWN0b3Iv
ZGVidWdnZXIvZGlzYWJsZS1zY3JpcHQtZXhwZWN0ZWQudHh0VVQFAAOtJIxRdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAbXypQq1cmT3nBwAAbx0AADIAGAAAAAAAAQAAAKSBnyIBAGluc3BlY3Rv
ci9kZWJ1Z2dlci9kaXNhYmxlLXNjcmlwdC1wcmV0dHktZGlmZi5odG1sVVQFAAOtJIxRdXgLAAEE
9QEAAARQAAAAUEsBAh4DCgAAAAAAc3ypQgAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1B8ioBAGxv
YWRlci9VVAUAA7kkjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABzfKlCZpdC9Y0BAAD2BwAA
MgAYAAAAAAABAAAApIEzKwEAbG9hZGVyL2dvLWJhY2stdG8tZGlmZmVyZW50LXdpbmRvdy1zaXpl
LWFjdHVhbC50eHRVVAUAA7kkjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABzfKlCTBkE0A0C
AAAWCQAAMAAYAAAAAAABAAAApIEsLQEAbG9hZGVyL2dvLWJhY2stdG8tZGlmZmVyZW50LXdpbmRv
dy1zaXplLWRpZmYudHh0VVQFAAO5JIxRdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAc3ypQu5w
IMIFAAAABQAAADQAGAAAAAAAAQAAAKSBoy8BAGxvYWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13
aW5kb3ctc2l6ZS1leHBlY3RlZC50eHRVVAUAA7kkjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABzfKlC2krVviUJAADwLAAAOAAYAAAAAAABAAAApIEWMAEAbG9hZGVyL2dvLWJhY2stdG8tZGlm
ZmVyZW50LXdpbmRvdy1zaXplLXByZXR0eS1kaWZmLmh0bWxVVAUAA7kkjFF1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAACjfKlCAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UGtOQEAbWVkaWEvVVQF
AAMSJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAenypQiGPvTgyAAAAMwAAAC0AGAAAAAAA
AQAAAKSB7TkBAG1lZGlhL2NsaWNrLXZvbHVtZS1iYXItbm90LXBhdXNpbmctc3RkZXJyLnR4dFVU
BQADxySMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHx8qUIoY3eUoQAAAFsDAAAhABgAAAAA
AAEAAACkgYY6AQBtZWRpYS9ldmVudC1hdHRyaWJ1dGVzLXN0ZGVyci50eHRVVAUAA8skjFF1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACACCfKlCP2GK4aEAAABbAwAAKgAYAAAAAAABAAAApIGCOwEA
bWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8tc2l6ZS1zdGRlcnIudHh0VVQFAAPTJIxRdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAhHypQiGPvTgyAAAAMwAAACgAGAAAAAAAAQAAAKSBhzwBAG1l
ZGlhL21lZGlhLWZ1bGxzY3JlZW4taW5saW5lLXN0ZGVyci50eHRVVAUAA9gkjFF1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACACifKlCDAY9IawAAAC2BgAAGwAYAAAAAAABAAAApIEbPQEAbWVkaWEv
dmlkZW8tc2l6ZS1zdGRlcnIudHh0VVQFAAMQJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
o3ypQioUFBuhAAAAWwMAACIAGAAAAAAAAQAAAKSBHD4BAG1lZGlhL3ZpZGVvLXNvdXJjZS1sb2Fk
LXN0ZGVyci50eHRVVAUAAxIljFF1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAB6fKlCAAAAAAAA
AAAAAAAACgAYAAAAAAAAABAA7UEZPwEAbWVkaWEvVzNDL1VUBQADyCSMUXV4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAHd8qUIAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQV0/AQBtZWRpYS9XM0Mv
YXVkaW8vVVQFAAPBJIxRdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAd3ypQgAAAAAAAAAAAAAA
ABcAGAAAAAAAAAAQAO1Bpz8BAG1lZGlhL1czQy9hdWRpby9ldmVudHMvVVQFAAPBJIxRdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAd3ypQiGPvTgyAAAAMwAAAC8AGAAAAAAAAQAAAKSB+D8BAG1l
ZGlhL1czQy9hdWRpby9ldmVudHMvZXZlbnRfY2FucGxheS1zdGRlcnIudHh0VVQFAAPBJIxRdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAenypQgAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1Bk0AB
AG1lZGlhL1czQy92aWRlby9VVAUAA8gkjFF1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAB6fKlC
AAAAAAAAAAAAAAAAFwAYAAAAAAAAABAA7UHdQAEAbWVkaWEvVzNDL3ZpZGVvL3BhdXNlZC9VVAUA
A8gkjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB6fKlCIY+9ODIAAAAzAAAAOgAYAAAAAAAB
AAAApIEuQQEAbWVkaWEvVzNDL3ZpZGVvL3BhdXNlZC9wYXVzZWRfZmFsc2VfZHVyaW5nX3BsYXkt
c3RkZXJyLnR4dFVUBQADyCSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAIF8qUIAAAAAAAAA
AAAAAAAJABgAAAAAAAAAEADtQdRBAQBwbGF0Zm9ybS9VVAUAA9IkjFF1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAACEfKlCAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UEXQgEAcGxhdGZvcm0vbWFj
L1VUBQAD2CSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAIF8qUIAAAAAAAAAAAAAAAAVABgA
AAAAAAAAEADtQV5CAQBwbGF0Zm9ybS9tYWMvZWRpdGluZy9VVAUAA9IkjFF1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAACBfKlCAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UGtQgEAcGxhdGZvcm0v
bWFjL2VkaXRpbmcvZGVsZXRpbmcvVVQFAAPSJIxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
gXypQrH9vTHbAwAAdAkAAEMAGAAAAAAAAQAAAKSBBUMBAHBsYXRmb3JtL21hYy9lZGl0aW5nL2Rl
bGV0aW5nL2RlbGV0aW9uVUktc2luZ2xlLWluc3RhbmNlLWFjdHVhbC50eHRVVAUAA9IkjFF1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACACBfKlCWrsOp54BAACoAwAAQQAYAAAAAAABAAAApIFdRwEA
cGxhdGZvcm0vbWFjL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRpb25VSS1zaW5nbGUtaW5zdGFuY2Ut
ZGlmZi50eHRVVAUAA9IkjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACBfKlCtQ5IZdkDAAB0
CQAARQAYAAAAAAABAAAApIF2SQEAcGxhdGZvcm0vbWFjL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRp
b25VSS1zaW5nbGUtaW5zdGFuY2UtZXhwZWN0ZWQudHh0VVQFAAPSJIxRdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAgXypQkAFUtmPCAAAvR4AAEkAGAAAAAAAAQAAAKSBzk0BAHBsYXRmb3JtL21h
Yy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW9uVUktc2luZ2xlLWluc3RhbmNlLXByZXR0eS1kaWZm
Lmh0bWxVVAUAA9IkjFF1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACEfKlCAAAAAAAAAAAAAAAA
EgAYAAAAAAAAABAA7UHgVgEAcGxhdGZvcm0vbWFjL2Zhc3QvVVQFAAPYJIxRdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAhHypQgAAAAAAAAAAAAAAAB4AGAAAAAAAAAAQAO1BLFcBAHBsYXRmb3Jt
L21hYy9mYXN0L0FwcGxlU2NyaXB0L1VUBQAD2CSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AIR8qUJ9vYN65QAAAEQCAAAsABgAAAAAAAEAAACkgYRXAQBwbGF0Zm9ybS9tYWMvZmFzdC9BcHBs
ZVNjcmlwdC8wMDEtYWN0dWFsLnR4dFVUBQAD2CSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AIR8qUJ4kpTRrQAAADEBAAAqABgAAAAAAAEAAACkgc9YAQBwbGF0Zm9ybS9tYWMvZmFzdC9BcHBs
ZVNjcmlwdC8wMDEtZGlmZi50eHRVVAUAA9gkjFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACE
fKlCYqGidOcAAABGAgAALgAYAAAAAAABAAAApIHgWQEAcGxhdGZvcm0vbWFjL2Zhc3QvQXBwbGVT
Y3JpcHQvMDAxLWV4cGVjdGVkLnR4dFVUBQAD2CSMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AIR8qUKxWrn+eAcAANMYAAAyABgAAAAAAAEAAACkgS9bAQBwbGF0Zm9ybS9tYWMvZmFzdC9BcHBs
ZVNjcmlwdC8wMDEtcHJldHR5LWRpZmYuaHRtbFVUBQAD2CSMUXV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIALp8qUIoaefr+gMAAMIfAAArABgAAAAAAAEAAACkgRNjAQBweXdlYnNvY2tldC53cy5s
b2ctMDlNYXkyMDEzLTE1MzA0MS1lcnIudHh0VVQFAAM/JYxRdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAq3ypQpvw0c8JAQAAjwIAACsAGAAAAAAAAQAAAKSBcmcBAHB5d2Vic29ja2V0LndzLmxv
Zy0wOU1heTIwMTMtMTUzMDQxLW91dC50eHRVVAUAAyEljFF1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACADqfKlCyjA9bJslAABeoAAADAAYAAAAAAABAAAApIHgaAEAcmVzdWx0cy5odG1sVVQFAAOX
JYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA6XypQgAAAAAAAAAAAAAAAAgAGAAAAAAAAAAQ
AO1BwY4BAHJldHJpZXMvVVQFAAOWJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA6HypQgAA
AAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BA48BAHJldHJpZXMvaW5zcGVjdG9yL1VUBQADlCWMUXV4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAOh8qUIAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQU+P
AQByZXRyaWVzL2luc3BlY3Rvci9jb25zb2xlL1VUBQADlCWMUXV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAOh8qUKIsJC5NAEAAPMCAAA1ABgAAAAAAAEAAACkgaOPAQByZXRyaWVzL2luc3BlY3Rv
ci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktYWN0dWFsLnR4dFVUBQADlCWMUXV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAOh8qUItl/NFDgEAAFICAAAzABgAAAAAAAEAAACkgUaRAQByZXRyaWVz
L2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktZGlmZi50eHRVVAUAA5QljFF1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACADofKlCj3OvNzQBAADzAgAANwAYAAAAAAABAAAApIHBkgEA
cmV0cmllcy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLWV4cGVjdGVkLnR4dFVU
BQADlCWMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAOh8qUKHp5wM6QcAACgaAAA7ABgAAAAA
AAEAAACkgWaUAQByZXRyaWVzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktcHJl
dHR5LWRpZmYuaHRtbFVUBQADlCWMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAOl8qUIAAAAA
AAAAAAAAAAAMABgAAAAAAAAAEADtQcScAQByZXRyaWVzL3N2Zy9VVAUAA5YljFF1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAADpfKlCAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UEKnQEAcmV0cmll
cy9zdmcvYmF0aWsvVVQFAAOWJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA6XypQgAAAAAA
AAAAAAAAABoAGAAAAAAAAAAQAO1BVp0BAHJldHJpZXMvc3ZnL2JhdGlrL2ZpbHRlcnMvVVQFAAOW
JYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA6XypQklmbgsi+QAA6BQBACsAGAAAAAAAAAAA
AKSBqp0BAHJldHJpZXMvc3ZnL2JhdGlrL2ZpbHRlcnMvZmVUaWxlLWFjdHVhbC5wbmdVVAUAA5Yl
jFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADpfKlCcVQqfdJNAADTVAAAKQAYAAAAAAAAAAAA
pIExlwIAcmV0cmllcy9zdmcvYmF0aWsvZmlsdGVycy9mZVRpbGUtZGlmZi5wbmdVVAUAA5YljFF1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADpfKlCV4Cety0CAAB2BQAAKwAYAAAAAAABAAAApIFm
5QIAcmV0cmllcy9zdmcvYmF0aWsvZmlsdGVycy9mZVRpbGUtZGlmZnMuaHRtbFVUBQADliWMUXV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAOl8qUIHIqggKNUAAB/oAAAtABgAAAAAAAAAAACkgfjn
AgByZXRyaWVzL3N2Zy9iYXRpay9maWx0ZXJzL2ZlVGlsZS1leHBlY3RlZC5wbmdVVAUAA5YljFF1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADqfKlCiwH6plLdBQCV4SAACgAYAAAAAAABAAAApIGH
vQMAc3RhdHMuanNvblVUBQADlyWMUXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAALZ8qUIAAAAA
AAAAAAAAAAAEABgAAAAAAAAAEADtQR2bCQBzdmcvVVQFAAM3JYxRdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAArnypQgAAAAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1BW5sJAHN2Zy9iYXRpay9VVAUA
AygljFF1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACvfKlCAAAAAAAAAAAAAAAAEgAYAAAAAAAA
ABAA7UGfmwkAc3ZnL2JhdGlrL2ZpbHRlcnMvVVQFAAMpJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgArnypQszyN+z/BAAA0h8AACMAGAAAAAAAAQAAAKSB65sJAHN2Zy9iYXRpay9maWx0ZXJz
L2ZlVGlsZS1hY3R1YWwudHh0VVQFAAMoJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgArnyp
Qlm11jU/BAAAEgoAACEAGAAAAAAAAQAAAKSBR6EJAHN2Zy9iYXRpay9maWx0ZXJzL2ZlVGlsZS1k
aWZmLnR4dFVUBQADKCWMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAK58qULG1S1lewcAACEm
AAAlABgAAAAAAAEAAACkgeGlCQBzdmcvYmF0aWsvZmlsdGVycy9mZVRpbGUtZXhwZWN0ZWQudHh0
VVQFAAMoJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAr3ypQlliBta7CwAAUSwAACkAGAAA
AAAAAQAAAKSBu60JAHN2Zy9iYXRpay9maWx0ZXJzL2ZlVGlsZS1wcmV0dHktZGlmZi5odG1sVVQF
AAMpJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAsXypQgAAAAAAAAAAAAAAAAgAGAAAAAAA
AAAQAO1B2bkJAHN2Zy9kb20vVVQFAAMuJYxRdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAsXyp
QgAAAAAAAAAAAAAAABkAGAAAAAAAAAAQAO1BG7oJAHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9V
VAUAAy4ljFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACxfKlCK1Kg0VYAAABdAAAAQAAYAAAA
AAABAAAApIFuugkAc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJv
ci1ldmVudHMtYWN0dWFsLnR4dFVUBQADLiWMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALF8
qULitLvyyQAAAIMBAAA+ABgAAAAAAAEAAACkgT67CQBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQv
c2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy1kaWZmLnR4dFVUBQADLiWMUXV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIALF8qUJH/omuPQAAAD4AAABCABgAAAAAAAEAAACkgX+8CQBzdmcvZG9t
L1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy1leHBlY3RlZC50
eHRVVAUAAy4ljFF1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACxfKlCPzwzUZgHAAA6GAAARgAY
AAAAAAABAAAApIE4vQkAc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1l
cnJvci1ldmVudHMtcHJldHR5LWRpZmYuaHRtbFVUBQADLiWMUXV4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAALZ8qUIAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQVDFCQBzdmcvc3Ryb2tlL1VUBQAD
NyWMUXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALZ8qULz7sfzhAAAAJQAAAAlABgAAAAAAAEA
AACkgZXFCQBzdmcvc3Ryb2tlL3plcm8td2lkdGgtaGFuZy1zdGRlcnIudHh0VVQFAAM3JYxRdXgL
AAEE9QEAAARQAAAAUEsFBgAAAABzAHMA4i8AAHjGCQAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201312</attachid>
            <date>2013-05-09 19:09:23 -0700</date>
            <delta_ts>2013-05-17 18:02:36 -0700</delta_ts>
            <desc>update w/ review feedback</desc>
            <filename>bug-111513-20130509190826.patch</filename>
            <type>text/plain</type>
            <size>66912</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5ODM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjIxNTAxYzI0MzA5MmEwZGZlMWFjNmI5OWMwNmZmN2Vk
MWE3M2I5ZC4uODY4OTY4YWQ4NmRmYTczNDQ5OWU2NTUyOTdlODc2NDI3OTczOWJhNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgy
IEBACisyMDEzLTA1LTA5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRlc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMgdG8g
cmUtbGFuZCB0aGUgJ2ltcG9ydC13M2MtdGVzdHMnCisgICAgICAgc2NyaXB0IGFuZCBhY2NvbXBh
bnlpbmcgbW9kdWxlcy4gIFRoZSB0ZXN0cyBhbmQgY29kZSBoYXZlCisgICAgICAgYmVlbiBjbGVh
bmVkIHVwIHNvIHRoYXQgd2UgZG8gbm90IGxvZyBhbnl0aGluZyB0byBzdGRvdXQvc3RkZXJyCisg
ICAgICAgd2hpbGUgcnVubmluZyB0aGUgdGVzdHMgKHRoYW5rcyB0byBvdXRwdXRjYXB0dXJlKSBh
bmQgZG8gbm90CisgICAgICAgd3JpdGUgaW50byB0aGUgc291cmNlIHRyZWUgd2hpbGUgcnVubmlu
ZyB0aGUgdGVzdHMsIGFuZCBtdWNoCisgICAgICAgYnV0IG5vdCBhbGwgb2YgdGhlIGNvZGUgaGFz
IGJlZW4gY29udmVydGVkIG92ZXIgdG8gdXNpbmcgdGhlIHdlYmtpdHB5CisgICAgICAgYWJzdHJh
Y3Rpb25zLgorCisgICAgICAgICogU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzOiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHk6IEFkZGVkLgorICAgICAg
ICAoVzNDVGVzdENvbnZlcnRlcik6CisgICAgICAgIChXM0NUZXN0Q29udmVydGVyLl9faW5pdF9f
KToKKyAgICAgICAgKFczQ1Rlc3RDb252ZXJ0ZXIucGF0aF9mcm9tX3dlYmtpdF9yb290KToKKyAg
ICAgICAgKFczQ1Rlc3RDb252ZXJ0ZXIubG9hZF9wcmVmaXhlZF9wcm9wX2xpc3QpOgorICAgICAg
ICAoVzNDVGVzdENvbnZlcnRlci5jb252ZXJ0X2Zvcl93ZWJraXQpOgorICAgICAgICAoVzNDVGVz
dENvbnZlcnRlci5jb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKToKKyAgICAgICAgKFczQ1Rlc3RD
b252ZXJ0ZXIuY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKToKKyAgICAgICAgKFczQ1Rlc3RD
b252ZXJ0ZXIuc2NydWJfdW5wcmVmaXhlZF9wcm9wcyk6CisgICAgICAgIChXM0NUZXN0Q29udmVy
dGVyLnJlcGxhY2VfdGFnKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2Nv
bnZlcnRlcl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChXM0NUZXN0Q29udmVydGVyVGVz
dCk6CisgICAgICAgIChXM0NUZXN0Q29udmVydGVyVGVzdC5mYWtlX2Rpcl9wYXRoKToKKyAgICAg
ICAgKFczQ1Rlc3RDb252ZXJ0ZXJUZXN0LnRlc3RMb2FkUHJlZml4ZWRQcm9wTGlzdCk6CisgICAg
ICAgIChXM0NUZXN0Q29udmVydGVyVGVzdC50ZXN0X2NvbnZlcnRGb3JXZWJraXROb3RoaW5nVG9D
b252ZXJ0KToKKyAgICAgICAgKHRlc3RfY29udmVydEZvcldlYmtpdEhhcm5lc3NPbmx5KToKKyAg
ICAgICAgKHRlc3RfY29udmVydEZvcldlYmtpdFByb3BzT25seSk6CisgICAgICAgICh0ZXN0X2Nv
bnZlcnRGb3JXZWJraXRIYXJuZXNzQW5kUHJvcHMpOgorICAgICAgICAodGVzdF9jb252ZXJ0VGVz
dEhhcm5lc3NQYXRocyk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRQcmVmaXhlZFByb3BlcnRpZXMp
OgorICAgICAgICAodmVyaWZ5Q29udmVyc2lvbkhhcHBlbmVkKToKKyAgICAgICAgKHZlcmlmeU5v
Q29udmVyc2lvbkhhcHBlbmVkKToKKyAgICAgICAgKHZlcmlmeVRlc3RIYXJuZXNzUGF0aHMpOgor
ICAgICAgICAodmVyaWZ5UHJlZml4ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKGdlbmVyYXRlVGVz
dENvbnRlbnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIu
cHk6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAgIChwYXJzZV9hcmdzKToKKyAgICAg
ICAgKHZhbGlkYXRlX2ltcG9ydF9kaXJlY3RvcnkpOgorICAgICAgICAoVGVzdEltcG9ydGVyKToK
KyAgICAgICAgKFRlc3RJbXBvcnRlci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIu
cGF0aF9mcm9tX3dlYmtpdF9yb290KToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5kb19pbXBvcnQp
OgorICAgICAgICAoVGVzdEltcG9ydGVyLmdldF9jaGFuZ2VzZXQpOgorICAgICAgICAoVGVzdElt
cG9ydGVyLnNjYW5fc291cmNlX2RpcmVjdG9yeSk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1w
b3J0X3Rlc3RzKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5zZXR1cF9kZXN0aW5hdGlvbl9kaXJl
Y3RvcnkpOgorICAgICAgICAoVGVzdEltcG9ydGVyLnVwZGF0ZV90ZXN0X3N0YXR1cyk6CisgICAg
ICAgIChUZXN0SW1wb3J0ZXIucmVtb3ZlX2RlbGV0ZWRfZmlsZXMpOgorICAgICAgICAoVGVzdElt
cG9ydGVyLndyaXRlX2ltcG9ydF9sb2cpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdEltcG9ydGVy
VGVzdCk6CisgICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0LnRlc3RfSW1wb3J0RGlyV2l0aE5vVGVz
dHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5OiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RQYXJzZXIpOgorICAgICAgICAoVGVzdFBhcnNlci5fX2luaXRfXyk6
CisgICAgICAgIChUZXN0UGFyc2VyLmxvYWRfZmlsZSk6CisgICAgICAgIChUZXN0UGFyc2VyLmFu
YWx5emVfdGVzdCk6CisgICAgICAgIChUZXN0UGFyc2VyLmdldF9yZWZ0ZXN0cyk6CisgICAgICAg
IChUZXN0UGFyc2VyLmlzX2pzdGVzdCk6CisgICAgICAgIChUZXN0UGFyc2VyLmdldF9zdXBwb3J0
X2ZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0
dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXN0UGFyc2VyVGVzdCk6CisgICAgICAgIChUZXN0
UGFyc2VyVGVzdC50ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE9uZU1hdGNoKToKKyAgICAgICAgKHRl
c3RfYW5hbHl6ZVRlc3RSZWZ0ZXN0TXVsdGlwbGVNYXRjaGVzKToKKyAgICAgICAgKHRlc3RfYW5h
bHl6ZVRlc3RSZWZ0ZXN0TWF0Y2hBbmRNaXNtYXRjaCk6CisgICAgICAgICh0ZXN0X2FuYWx5emVU
ZXN0UmVmdGVzdFdpdGhSZWZTdXBwb3J0RmlsZXMpOgorICAgICAgICAodGVzdF9hbmFseXplSlNU
ZXN0KToKKyAgICAgICAgKHRlc3RfYW5hbHl6ZVBpeGVsVGVzdEFsbFRydWUpOgorICAgICAgICAo
dGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsRmFsc2UpOgorICAgICAgICAodGVzdF9hbmFseXplTm9u
SFRNTEZpbGUpOgorCiAyMDEzLTA1LTA5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJh
ZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIFNpbW9uIFBlbmEg
ZW1haWwgb24gaGlzIGJlaGFsZi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cwpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjcy
MDk2YzA2MTU2YjNlZTUxODQyZWNlOWM3Yzk5ZDQyOTFmODJhCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzCkBAIC0wLDAgKzEsMzUgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29y
cG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBB
TlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0gg
REFNQUdFLgorCitpbXBvcnQgc3lzCisKK2Zyb20gd2Via2l0cHkudzNjIGltcG9ydCB0ZXN0X2lt
cG9ydGVyCisKKworc3lzLmV4aXQodGVzdF9pbXBvcnRlci5tYWluKHN5cy5hcmd2WzE6XSwgc3lz
LnN0ZG91dCwgc3lzLnN0ZGVycikpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL19faW5pdF9fLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVmNjViZWU1YmI3N2U5NmViYzdjZDljNDc2NDA2OTBmYmRhOGFjMTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9fX2luaXRfXy5weQpA
QCAtMCwwICsxIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0
b3J5IGZvciBtb2R1bGUgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfY29udmVydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9j
b252ZXJ0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI2M2NmOTk4M2E0ZjFmMjJhN2VlMDFjNTY1ZDJiNzEz
ZjRlODJiMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfY29udmVydGVyLnB5CkBAIC0wLDAgKzEsMTc0IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KworIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IKKyMgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKworaW1w
b3J0IHJlCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBUYWcK
KworCitjbGFzcyBXM0NUZXN0Q29udmVydGVyKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18o
c2VsZik6CisgICAgICAgIHNlbGYuaG9zdCA9IEhvc3QoKQorICAgICAgICBzZWxmLmZpbGVzeXN0
ZW0gPSBzZWxmLmhvc3QuZmlsZXN5c3RlbQorICAgICAgICBzZWxmLl93ZWJraXRfcm9vdCA9IF9f
ZmlsZV9fLnNwbGl0KHNlbGYuZmlsZXN5c3RlbS5zZXAgKyAnVG9vbHMnKVswXQorICAgICAgICBz
ZWxmLnByZWZpeGVkX3Byb3BlcnRpZXMgPSBzZWxmLmxvYWRfcHJlZml4ZWRfcHJvcF9saXN0KCkK
KworICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X3Jvb3Qoc2VsZiwgKmNvbXBzKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5hYnNwYXRoKHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYu
X3dlYmtpdF9yb290LCAqY29tcHMpKQorCisgICAgZGVmIGxvYWRfcHJlZml4ZWRfcHJvcF9saXN0
KHNlbGYpOgorICAgICAgICAiIiIgUmVhZHMgdGhlIGN1cnJlbnQgbGlzdCBvZiBDU1MgcHJvcGVy
dGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBmcm9tIFNvdXJjZS9XZWJDb3JlL0NT
Uy9DU1NQcm9wZXJ0eU5hbWVzLmluIGFuZCBzdG9yZXMgdGhlbSBpbiBhbiBpbnN0YW5jZSB2YXJp
YWJsZSAiIiIKKworICAgICAgICBwcmVmaXhlZF9wcm9wX2xpc3QgPSBbXQorCisgICAgICAgICMg
T3BlbiBDU1NQcm9wZXJ0eU5hbWVzLmluIHRvIGdldCB0aGUgY3VycmVudCBsaXN0IG9mIHRoaW5n
cyByZXF1aXJpbmcgcHJlZml4ZXMKKyAgICAgICAgY29udGVudHMgPSBzZWxmLmZpbGVzeXN0ZW0u
cmVhZF90ZXh0X2ZpbGUoc2VsZi5wYXRoX2Zyb21fd2Via2l0X3Jvb3QoJ1NvdXJjZScsICdXZWJD
b3JlJywgJ2NzcycsICdDc3NQcm9wZXJ0eU5hbWVzLmluJykpCisgICAgICAgIGZvciBsaW5lIGlu
IGNvbnRlbnRzLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICMgTG9vayBmb3IgYW55dGhpbmcg
d2l0aCB0aGUgLXdlYmtpdC0gcHJlZml4CisgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgn
Xi13ZWJraXQtW1x3fC1dKicsIGxpbmUpCisgICAgICAgICAgICBpZiBtYXRjaCBpcyBub3QgTm9u
ZToKKyAgICAgICAgICAgICAgICAjIElnbm9yZSB0aGUgb25lcyB3aGVyZSBib3RoIHRoZSBwcmVm
aXhlZCBhbmQgbm9uLXByZWZpeGVkIHByb3BlcnR5CisgICAgICAgICAgICAgICAgIyBhcmUgc3Vw
cG9ydGVkIC0gZGVub3RlZCBieSAtd2Via2l0LXNvbWUtcHJvcGVydHkgPSBzb21lLXByb3BlcnR5
CisgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmUuc3BsaXQoJz0nKSkgPT0gMiBhbmQgbGluZS5z
cGxpdCgnPScpWzFdLnN0cmlwKCkgaW4gbGluZS5zcGxpdCgnPScpWzBdLnN0cmlwKCk6CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgcHJlZml4ZWRfcHJvcF9saXN0LmFwcGVuZChtYXRjaC5ncm91cCgwKSkKKwor
ICAgICAgICByZXR1cm4gcHJlZml4ZWRfcHJvcF9saXN0CisKKyAgICBkZWYgY29udmVydF9mb3Jf
d2Via2l0KHNlbGYsIG5ld19wYXRoLCBjb250ZW50cz1Ob25lLCBmaWxlbmFtZT1Ob25lKToKKyAg
ICAgICAgIiIiIENvbnZlcnRzIGEgZmlsZSdzIHxjb250ZW50c3wgc28gaXQgd2lsbCBmdW5jdGlv
biBjb3JyZWN0bHkgaW4gaXRzIHxuZXdfcGF0aHwgaW4gV2Via2l0LiBSZXR1cm5zIHRoZSBsaXN0
IG9mIHByZWZpeGVkIENTUyBwcm9wZXJ0aWVzIGFuZCB0aGUgbW9kaWZpZWQgY29udGVudHMuIiIi
CisKKyAgICAgICAgaWYgY29udGVudHMgaXMgTm9uZSBhbmQgZmlsZW5hbWUgaXMgTm9uZToKKyAg
ICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgaWYgY29udGVudHMgaXMgTm9uZToKKyAg
ICAgICAgICAgIGNvbnRlbnRzID0gc2VsZi5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGZpbGVu
YW1lKQorCisgICAgICAgICMgSGFuZGxlIHBsYWluIG9sZCBDU1MgZmlsZXMKKyAgICAgICAgaWYg
ZmlsZW5hbWUuZW5kc3dpdGgoJy5jc3MnKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnNjcnVi
X3VucHJlZml4ZWRfcHJvcHMoY29udGVudHMpCisKKyAgICAgICAgIyBPdGhlcndpc2UsIHBhcnNl
IGl0IGFzIGlmIEhUTUwKKyAgICAgICAgZG9jID0gQmVhdXRpZnVsU291cChjb250ZW50cykKKyAg
ICAgICAganN0ZXN0ID0gc2VsZi5jb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKGRvYywgbmV3X3Bh
dGgpCisgICAgICAgIGNvbnZlcnRlZCA9IHNlbGYuY29udmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVz
KGRvYykKKworICAgICAgICByZXR1cm4gY29udmVydGVkIGlmIGNvbnZlcnRlZFswXSBvciBqc3Rl
c3QgZWxzZSBOb25lCisKKyAgICBkZWYgY29udmVydF90ZXN0aGFybmVzc19wYXRocyhzZWxmLCBk
b2MsIG5ld19wYXRoKToKKyAgICAgICAgIiIiIFVwZGF0ZSBsaW5rcyB0byB0ZXN0aGFybmVzcy5q
cyBpbiB0aGUgQmVhdXRpZnVsU291cCB8ZG9jfCB0byBwb2ludCB0byB0aGUgY29weSBpbiB8bmV3
X3BhdGh8LiBSZXR1cm5zIHdoZXRoZXIgdGhlIGRvY3VtZW50IHdhcyBtb2RpZmllZC4iIiIKKwor
ICAgICAgICAjIExvb2sgZm9yIHRoZSBXM0Mtc3R5bGUgcGF0aCB0byBhbnkgdGVzdGhhcm5lc3Mg
ZmlsZXMgLSBzY3JpcHRzICguanMpIG9yIGxpbmtzICguY3NzKQorICAgICAgICBwYXR0ZXJuID0g
cmUuY29tcGlsZSgnL3Jlc291cmNlcy90ZXN0aGFybmVzcycpCisgICAgICAgIHNjcmlwdF90YWdz
ID0gZG9jLmZpbmRBbGwoc3JjPXBhdHRlcm4pCisgICAgICAgIGxpbmtfdGFncyA9IGRvYy5maW5k
QWxsKGhyZWY9cGF0dGVybikKKyAgICAgICAgdGVzdGhhcm5lc3NfdGFncyA9IHNjcmlwdF90YWdz
ICsgbGlua190YWdzCisKKyAgICAgICAgaWYgbm90IHRlc3RoYXJuZXNzX3RhZ3M6CisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXNvdXJjZXNfcGF0aCA9IHNlbGYucGF0aF9m
cm9tX3dlYmtpdF9yb290KCdMYXlvdXRUZXN0cycsICdyZXNvdXJjZXMnKQorICAgICAgICByZXNv
dXJjZXNfcmVscGF0aCA9IHNlbGYuZmlsZXN5c3RlbS5yZWxwYXRoKHJlc291cmNlc19wYXRoLCBu
ZXdfcGF0aCkKKworICAgICAgICBmb3IgdGFnIGluIHRlc3RoYXJuZXNzX3RhZ3M6CisgICAgICAg
ICAgICBhdHRyID0gJ3NyYycKKyAgICAgICAgICAgIGlmIHRhZy5uYW1lICE9ICdzY3JpcHQnOgor
ICAgICAgICAgICAgICAgIGF0dHIgPSAnaHJlZicKKworICAgICAgICAgICAgb2xkX3BhdGggPSB0
YWdbYXR0cl0KKyAgICAgICAgICAgIG5ld190YWcgPSBUYWcoZG9jLCB0YWcubmFtZSwgdGFnLmF0
dHJzKQorICAgICAgICAgICAgbmV3X3RhZ1thdHRyXSA9IHJlLnN1YihwYXR0ZXJuLCByZXNvdXJj
ZXNfcmVscGF0aCArICcvdGVzdGhhcm5lc3MnLCBvbGRfcGF0aCkKKworICAgICAgICAgICAgc2Vs
Zi5yZXBsYWNlX3RhZyh0YWcsIG5ld190YWcpCisKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAg
IGRlZiBjb252ZXJ0X3ByZWZpeGVkX3Byb3BlcnRpZXMoc2VsZiwgZG9jKToKKyAgICAgICAgIiIi
IFNlYXJjaGVzIGEgQmVhdXRpZnVsU291cCB8ZG9jfCBmb3IgYW55IENTUyBwcm9wZXJ0aWVzIHJl
cXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IGFuZCBjb252ZXJ0cyB0aGVtLiBSZXR1cm5zIHRo
ZSBsaXN0IG9mIGNvbnZlcnRlZCBwcm9wZXJ0aWVzIGFuZCB0aGUgbW9kaWZpZWQgZG9jdW1lbnQg
YXMgYSBzdHJpbmcgIiIiCisKKyAgICAgICAgY29udmVydGVkX3Byb3BzID0gW10KKworICAgICAg
ICAjIExvb2sgZm9yIGlubGluZSBhbmQgZG9jdW1lbnQgc3R5bGVzCisgICAgICAgIGlubGluZV9z
dHlsZXMgPSBkb2MuZmluZEFsbChzdHlsZT1yZS5jb21waWxlKCcuKicpKQorICAgICAgICBzdHls
ZV90YWdzID0gZG9jLmZpbmRBbGwoJ3N0eWxlJykKKyAgICAgICAgYWxsX3N0eWxlcyA9IGlubGlu
ZV9zdHlsZXMgKyBzdHlsZV90YWdzCisKKyAgICAgICAgZm9yIHRhZyBpbiBhbGxfc3R5bGVzOgor
CisgICAgICAgICAgICAjIEdldCB0aGUgdGV4dCB3aGV0aGVyIGluIGEgc3R5bGUgdGFnIG9yIHN0
eWxlIGF0dHJpYnV0ZQorICAgICAgICAgICAgc3R5bGVfdGV4dCA9ICcnCisgICAgICAgICAgICBp
ZiB0YWcubmFtZSA9PSAnc3R5bGUnOgorICAgICAgICAgICAgICAgIGlmIG5vdCB0YWcuY29udGVu
dHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc3R5bGVf
dGV4dCA9IHRhZy5jb250ZW50c1swXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBzdHlsZV90ZXh0ID0gdGFnWydzdHlsZSddCisKKyAgICAgICAgICAgIHNjcnViYmVkX3N0eWxl
ID0gc2VsZi5zY3J1Yl91bnByZWZpeGVkX3Byb3BzKHN0eWxlX3RleHQpCisKKyAgICAgICAgICAg
ICMgUmV3cml0ZSB0YWcgb25seSBpZiBjaGFuZ2VzIHdlcmUgbWFkZQorICAgICAgICAgICAgaWYg
c2NydWJiZWRfc3R5bGVbMF06CisgICAgICAgICAgICAgICAgY29udmVydGVkX3Byb3BzLmV4dGVu
ZChzY3J1YmJlZF9zdHlsZVswXSkKKworICAgICAgICAgICAgICAgIG5ld190YWcgPSBUYWcoZG9j
LCB0YWcubmFtZSwgdGFnLmF0dHJzKQorICAgICAgICAgICAgICAgIG5ld190YWcuaW5zZXJ0KDAs
IHNjcnViYmVkX3N0eWxlWzFdKQorCisgICAgICAgICAgICAgICAgc2VsZi5yZXBsYWNlX3RhZyh0
YWcsIG5ld190YWcpCisKKyAgICAgICAgcmV0dXJuIChjb252ZXJ0ZWRfcHJvcHMsIGRvYy5wcmV0
dGlmeSgpKQorCisgICAgZGVmIHNjcnViX3VucHJlZml4ZWRfcHJvcHMoc2VsZiwgdGV4dCk6Cisg
ICAgICAgICIiIiBTZWFyY2hlcyB8dGV4dHwgZm9yIGluc3RhbmNlcyBvZiBwcm9wZXJ0aWVzIHJl
cXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IGFuZCBhZGRzIHRoZSBwcmVmaXguIFJldHVybnMg
dGhlIGxpc3Qgb2YgY29udmVydGVkIHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCBzdHJpbmcg
IiIiCisKKyAgICAgICAgY29udmVydGVkX3Byb3BzID0gW10KKworICAgICAgICBmb3IgcHJlZml4
ZWRfcHJvcCBpbiBzZWxmLnByZWZpeGVkX3Byb3BlcnRpZXM6CisKKyAgICAgICAgICAgIHVucHJl
Zml4ZWRfcHJvcCA9IHByZWZpeGVkX3Byb3AucmVwbGFjZSgnLXdlYmtpdC0nLCAnJykKKworICAg
ICAgICAgICAgIyBMb29rIGZvciB0aGUgdmFyaW91cyB3YXlzIGl0IG1pZ2h0IGJlIGluIHRoZSBD
U1MKKyAgICAgICAgICAgICMgTWF0Y2ggdGhlIHRoZSBwcm9wZXJ0eSBwcmVjZWRlZCBieSBlaXRo
ZXIgd2hpdGVzcGFjZSBvciBsZWZ0IGN1cmx5IGJyYWNlCisgICAgICAgICAgICAjIG9yIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyAoZm9yIGlubGluZSBzdHlsZSBhdHRyaWJ1dGUpCisg
ICAgICAgICAgICBwYXR0ZXJuID0gJyhbXHN7XXxeKScgKyB1bnByZWZpeGVkX3Byb3AgKyAnKFxz
Kzp8OiknCisgICAgICAgICAgICBpZiByZS5zZWFyY2gocGF0dGVybiwgdGV4dCk6CisgICAgICAg
ICAgICAgICAgcHJpbnQgJ2NvbnZlcnRpbmcgJyArIHVucHJlZml4ZWRfcHJvcCArICcgLT4gJyAr
IHByZWZpeGVkX3Byb3AKKyAgICAgICAgICAgICAgICBjb252ZXJ0ZWRfcHJvcHMuYXBwZW5kKHBy
ZWZpeGVkX3Byb3ApCisgICAgICAgICAgICAgICAgdGV4dCA9IHJlLnN1YihwYXR0ZXJuLCBwcmVm
aXhlZF9wcm9wICsgJzonLCB0ZXh0KQorCisgICAgICAgICMgRklYTUU6IEhhbmRsZSB0aGUgSlMg
dmVyc2lvbnMgb2YgdGhlc2UgcHJvcGVydGllcywgdG9vLgorCisgICAgICAgIHJldHVybiAoY29u
dmVydGVkX3Byb3BzLCB0ZXh0KQorCisgICAgZGVmIHJlcGxhY2VfdGFnKHNlbGYsIG9sZF90YWcs
IG5ld190YWcpOgorICAgICAgICBpbmRleCA9IG9sZF90YWcucGFyZW50LmNvbnRlbnRzLmluZGV4
KG9sZF90YWcpCisgICAgICAgIG9sZF90YWcucGFyZW50Lmluc2VydChpbmRleCwgbmV3X3RhZykK
KyAgICAgICAgb2xkX3RhZy5leHRyYWN0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNiNDEzNDRk
ZDJjYTMxOTUxYjg2OTMyYmRhZGJjMDA5YjZmZjM0MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAg
KzEsMzM4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTMg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVIgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBC
RQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
CisjIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCitp
bXBvcnQgcmUKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCitmcm9t
IHdlYmtpdHB5LnczYy50ZXN0X2NvbnZlcnRlciBpbXBvcnQgVzNDVGVzdENvbnZlcnRlcgorCisK
K2NsYXNzIFczQ1Rlc3RDb252ZXJ0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRl
ZiBmYWtlX2Rpcl9wYXRoKHNlbGYsIGNvbnZlcnRlciwgZGlybmFtZSk6CisgICAgICAgIHJldHVy
biBjb252ZXJ0ZXIucGF0aF9mcm9tX3dlYmtpdF9yb290KCJMYXlvdXRUZXN0cyIsICJjc3MiLCBk
aXJuYW1lKQorCisgICAgZGVmIHRlc3RMb2FkUHJlZml4ZWRQcm9wTGlzdChzZWxmKToKKyAgICAg
ICAgIiIiIFRlc3RzIHRoYXQgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB0aGUgLXdlYmtpdC0gcHJlZml4IGxvYWQgY29ycmVjdGx5ICIiIgorCisgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZCBiZSBwYXNzaW5nIGluIGEgTW9ja0hvc3QgaGVyZSAuLi4KKyAgICAgICAg
Y29udmVydGVyID0gVzNDVGVzdENvbnZlcnRlcigpCisgICAgICAgIHByb3BfbGlzdCA9IGNvbnZl
cnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9wX2xp
c3QsICdObyBwcmVmaXhlZCBwcm9wZXJ0aWVzIGZvdW5kJykKKyAgICAgICAgZm9yIHByb3AgaW4g
cHJvcF9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb3Auc3RhcnRzd2l0aCgn
LXdlYmtpdC0nKSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRGb3JXZWJraXROb3RoaW5nVG9Db252
ZXJ0KHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgY29udmVydF9mb3Jfd2Via2l0KCkgdXNpbmcg
YSBiYXNpYyB0ZXN0IHRoYXQgaGFzIG5vdGhpbmcgdG8gY29udmVydCAiIiIKKworICAgICAgICB0
ZXN0X2h0bWwgPSAiIiI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEu
MCBTdHJpY3QvL0VOIgorImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0
cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgor
PGhlYWQ+Cis8dGl0bGU+Q1NTIFRlc3Q6IERFU0NSSVBUSU9OIE9GIFRFU1Q8L3RpdGxlPgorPGxp
bmsgcmVsPSJhdXRob3IiIHRpdGxlPSJOQU1FX09GX0FVVEhPUiIKK2hyZWY9Im1haWx0bzpFTUFJ
TCBPUiBodHRwOi8vQ09OVEFDVF9QQUdFIi8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9IlJFTEVW
QU5UX1NQRUNfU0VDVElPTiIvPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJURVNUIEFT
U0VSVElPTiIvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKK0NTUyBGT1IgVEVT
VAorXV0+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorQ09OVEVOVCBPRiBURVNUCis8L2JvZHk+
Cis8L2h0bWw+CisiIiIKKyAgICAgICAgY29udmVydGVyID0gVzNDVGVzdENvbnZlcnRlcigpCisK
KyAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQo
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29udmVy
dF9mb3Jfd2Via2l0KCcvbm90aGluZy90by9jb252ZXJ0JywgY29udGVudHM9dGVzdF9odG1sLCBm
aWxlbmFtZT0nc29tZWZpbGUuaHRtbCcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBv
Yy5yZXN0b3JlX291dHB1dCgpCisKKyAgICAgICAgc2VsZi52ZXJpZnlOb0NvbnZlcnNpb25IYXBw
ZW5lZChjb252ZXJ0ZWQpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0Rm9yV2Via2l0SGFybmVzc09u
bHkoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBh
IGJhc2ljIEpTIHRlc3QgdGhhdCB1c2VzIHRlc3RoYXJuZXNzLmpzIG9ubHkgYW5kIGhhcyBubyBw
cmVmaXhlZCBwcm9wZXJ0aWVzICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgor
PGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFczQ1Rlc3RDb252
ZXJ0ZXIoKQorICAgICAgICBmYWtlX2Rpcl9wYXRoID0gc2VsZi5mYWtlX2Rpcl9wYXRoKGNvbnZl
cnRlciwgImhhcm5lc3Nvbmx5IikKKworICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIuY29u
dmVydF9mb3Jfd2Via2l0KGZha2VfZGlyX3BhdGgsIGNvbnRlbnRzPXRlc3RfaHRtbCwgZmlsZW5h
bWU9J3NvbWVmaWxlLmh0bWwnKQorCisgICAgICAgIHNlbGYudmVyaWZ5Q29udmVyc2lvbkhhcHBl
bmVkKGNvbnZlcnRlZCkKKyAgICAgICAgc2VsZi52ZXJpZnlUZXN0SGFybmVzc1BhdGhzKGNvbnZl
cnRlciwgY29udmVydGVkWzFdLCBmYWtlX2Rpcl9wYXRoLCAxLCAxKQorICAgICAgICBzZWxmLnZl
cmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIFtdKQorCisgICAgZGVmIHRlc3RfY29u
dmVydEZvcldlYmtpdFByb3BzT25seShzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRf
Zm9yX3dlYmtpdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGhhcyAyIHByZWZpeGVkIHByb3BlcnRpZXM6
IDEgaW4gYSBzdHlsZSBibG9jayArIDEgaW5saW5lIHN0eWxlICIiIgorCisgICAgICAgIHRlc3Rf
aHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayBocmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorCisjYmxvY2sxIHsgQHRlc3QwQDogcHJvcHZhbHVlOyB9CisKKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRlc3QxQDogcHJvcHZhbHVlOyI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgY29udmVydGVyID0gVzNDVGVz
dENvbnZlcnRlcigpCisgICAgICAgIGZha2VfZGlyX3BhdGggPSBzZWxmLmZha2VfZGlyX3BhdGgo
Y29udmVydGVyLCAnaGFybmVzc2FuZHByb3BzJykKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2Vs
Zi5nZW5lcmF0ZVRlc3RDb250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyLCB0
ZXN0X2h0bWwpCisKKyAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2MuY2Fw
dHVyZV9vdXRwdXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb252ZXJ0ZWQgPSBjb252
ZXJ0ZXIuY29udmVydF9mb3Jfd2Via2l0KGZha2VfZGlyX3BhdGgsIGNvbnRlbnRzPXRlc3RfY29u
dGVudFsxXSwgZmlsZW5hbWU9J3NvbWVmaWxlLmh0bWwnKQorICAgICAgICBmaW5hbGx5OgorICAg
ICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQorCisgICAgICAgIHNlbGYudmVyaWZ5Q29udmVy
c2lvbkhhcHBlbmVkKGNvbnZlcnRlZCkKKyAgICAgICAgc2VsZi52ZXJpZnlUZXN0SGFybmVzc1Bh
dGhzKGNvbnZlcnRlciwgY29udmVydGVkWzFdLCBmYWtlX2Rpcl9wYXRoLCAxLCAxKQorICAgICAg
ICBzZWxmLnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFsw
XSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRGb3JXZWJraXRIYXJuZXNzQW5kUHJvcHMoc2VsZik6
CisgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2ljIEpT
IHRlc3QgdGhhdCB1c2VzIHRlc3RoYXJuZXNzLmpzIGFuZCB0ZXN0aGFybmVzcy5jc3MgYW5kIGhh
cyA0IHByZWZpeGVkIHByb3BlcnRpZXM6IDMgaW4gYSBzdHlsZSBibG9jayArIDEgaW5saW5lIHN0
eWxlICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayBo
cmVmPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCisjYmxvY2sxIHsgQHRlc3QwQDogcHJvcHZh
bHVlOyB9CisjYmxvY2syIHsgQHRlc3QxQDogcHJvcHZhbHVlOyB9CisjYmxvY2szIHsgQHRlc3Qy
QDogcHJvcHZhbHVlOyB9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVs
ZW0xIiBzdHlsZT0iQHRlc3QzQDogcHJvcHZhbHVlOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CisiIiIKKyAgICAgICAgY29udmVydGVyID0gVzNDVGVzdENvbnZlcnRlcigpCisgICAgICAgIGZh
a2VfZGlyX3BhdGggPSBzZWxmLmZha2VfZGlyX3BhdGgoY29udmVydGVyLCAnaGFybmVzc2FuZHBy
b3BzJykKKworICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5jYXB0dXJl
X291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYu
Z2VuZXJhdGVUZXN0Q29udGVudChjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcywgNCwgdGVz
dF9odG1sKQorICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfZm9yX3dl
YmtpdChmYWtlX2Rpcl9wYXRoLCBjb250ZW50cz10ZXN0X2NvbnRlbnRbMV0sIGZpbGVuYW1lPSdz
b21lZmlsZS5odG1sJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9jLnJlc3RvcmVf
b3V0cHV0KCkKKworICAgICAgICBzZWxmLnZlcmlmeUNvbnZlcnNpb25IYXBwZW5lZChjb252ZXJ0
ZWQpCisgICAgICAgIHNlbGYudmVyaWZ5VGVzdEhhcm5lc3NQYXRocyhjb252ZXJ0ZXIsIGNvbnZl
cnRlZFsxXSwgZmFrZV9kaXJfcGF0aCwgMSwgMSkKKyAgICAgICAgc2VsZi52ZXJpZnlQcmVmaXhl
ZFByb3BlcnRpZXMoY29udmVydGVkLCB0ZXN0X2NvbnRlbnRbMF0pCisKKyAgICBkZWYgdGVzdF9j
b252ZXJ0VGVzdEhhcm5lc3NQYXRocyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRf
dGVzdGhhcm5lc3NfcGF0aHMoKSB3aXRoIGEgdGVzdCB0aGF0IHVzZXMgYWxsIHRocmVlIHRlc3Ro
YXJuZXNzIGZpbGVzICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsg
aHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0i
dGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFczQ1Rlc3RDb252ZXJ0ZXIo
KQorCisgICAgICAgIGZha2VfZGlyX3BhdGggPSBzZWxmLmZha2VfZGlyX3BhdGgoY29udmVydGVy
LCAndGVzdGhhcm5lc3NwYXRocycpCisKKyAgICAgICAgZG9jID0gQmVhdXRpZnVsU291cCh0ZXN0
X2h0bWwpCisgICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVf
b3V0cHV0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVy
LmNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMoZG9jLCBmYWtlX2Rpcl9wYXRoKQorICAgICAgICBm
aW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQorCisgICAgICAgIHNlbGYu
dmVyaWZ5Q29udmVyc2lvbkhhcHBlbmVkKGNvbnZlcnRlZCkKKyAgICAgICAgc2VsZi52ZXJpZnlU
ZXN0SGFybmVzc1BhdGhzKGNvbnZlcnRlciwgZG9jLCBmYWtlX2Rpcl9wYXRoLCAyLCAxKQorCisg
ICAgZGVmIHRlc3RfY29udmVydFByZWZpeGVkUHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgIiIi
IFRlc3RzIGNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcygpIGZpbGUgdGhhdCBoYXMgMjAgcHJv
cGVydGllcyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeDoKKyAgICAgICAgMTAgaW4gb25l
IHN0eWxlIGJsb2NrICsgNSBpbiBhbm90aGVyIHN0eWxlCisgICAgICAgIGJsb2NrICsgNSBpbmxp
bmUgc3R5bGVzLCBpbmNsdWRpbmcgb25lIHdpdGggbXVsdGlwbGUgcHJlZml4ZWQgcHJvcGVydGll
cy4KKyAgICAgICAgVGhlIHByb3BlcnRpZXMgaW4gdGhlIHRlc3QgY29udGVudCBhcmUgaW4gYWxs
IHNvcnRzIG9mIHdhY2sgZm9ybWF0dGluZy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9o
dG1sID0gIiIiPGh0bWw+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworCisuYmxv
Y2sxIHsKKyAgICB3aWR0aDogMzAwcHg7CisgICAgaGVpZ2h0OiAzMDBweAorfQorCisuYmxvY2sy
IHsKKyAgICBAdGVzdDBAOiBwcm9wdmFsdWU7Cit9CisKKy5ibG9jazN7QHRlc3QxQDogcHJvcHZh
bHVlO30KKworLmJsb2NrNCB7IEB0ZXN0MkA6cHJvcHZhbHVlOyB9CisKKy5ibG9jazV7IEB0ZXN0
M0AgOnByb3B2YWx1ZTsgfQorCisjYmxvY2s2IHsgICAgQHRlc3Q0QCAgIDogICBwcm9wdmFsdWU7
ICB9CisKKyNibG9jazcKK3sKKyAgICBAdGVzdDVAOiBwcm9wdmFsdWU7Cit9CisKKyNibG9jazgg
eyBAdGVzdDZAOiBwcm9wdmFsdWU7IH0KKworI2Jsb2NrOTpwc2V1ZG8KK3sKKworICAgIEB0ZXN0
N0A6IHByb3B2YWx1ZTsKKyAgICBAdGVzdDhAOiAgcHJvcHZhbHVlIHByb3B2YWx1ZSBwcm9wdmFs
dWU7OworfQorCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWxl
bTEiIHN0eWxlPSJAdGVzdDlAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJlbGVt
MiIgc3R5bGU9InByb3BuYW1lOiBwcm9wdmFsdWU7IEB0ZXN0MTBAIDogcHJvcHZhbHVlOyBwcm9w
bmFtZTpwcm9wdmFsdWU7Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJlbGVtMiIgc3R5bGU9IkB0ZXN0
MTFAOiBwcm9wdmFsdWU7IEB0ZXN0MTJAIDogcHJvcHZhbHVlOyBAdGVzdDEzQCAgIDpwcm9wdmFs
dWU7Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJlbGVtMyIgc3R5bGU9IkB0ZXN0MTRAOnByb3B2YWx1
ZSI+PC9kaXY+Cis8L2JvZHk+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworCisu
YmxvY2sxMHsgQHRlc3QxNUA6IHByb3B2YWx1ZTsgfQorLmJsb2NrMTF7IEB0ZXN0MTZAOiBwcm9w
dmFsdWU7IH0KKy5ibG9jazEyeyBAdGVzdDE3QDogcHJvcHZhbHVlOyB9CisjYmxvY2sxMzpwc2V1
ZG8KK3sKKyAgICBAdGVzdDE4QDogcHJvcHZhbHVlOworICAgIEB0ZXN0MTlAOiBwcm9wdmFsdWU7
Cit9CisKK11dPjwvc3R5bGU+Cis8L2h0bWw+CisiIiIKKyAgICAgICAgY29udmVydGVyID0gVzND
VGVzdENvbnZlcnRlcigpCisKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZVRl
c3RDb250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyMCwgdGVzdF9odG1sKQor
CisgICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0
KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZl
cnRfcHJlZml4ZWRfcHJvcGVydGllcyhCZWF1dGlmdWxTb3VwKHRlc3RfY29udGVudFsxXSkpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCisKKyAgICAg
ICAgc2VsZi52ZXJpZnlDb252ZXJzaW9uSGFwcGVuZWQoY29udmVydGVkKQorICAgICAgICBzZWxm
LnZlcmlmeVByZWZpeGVkUHJvcGVydGllcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFswXSkKKwor
ICAgIGRlZiB2ZXJpZnlDb252ZXJzaW9uSGFwcGVuZWQoc2VsZiwgY29udmVydGVkKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGNvbnZlcnRlZCwgImNvbnZlcnNpb24gZGlkbid0IGhhcHBlbiIp
CisKKyAgICBkZWYgdmVyaWZ5Tm9Db252ZXJzaW9uSGFwcGVuZWQoc2VsZiwgY29udmVydGVkKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHNob3VsZCBu
b3QgaGF2ZSBiZWVuIGNvbnZlcnRlZCcpCisKKyAgICBkZWYgdmVyaWZ5VGVzdEhhcm5lc3NQYXRo
cyhzZWxmLCBjb252ZXJ0ZXIsIGNvbnZlcnRlZCwgdGVzdF9wYXRoLCBudW1fc3JjX3BhdGhzLCBu
dW1faHJlZl9wYXRocyk6CisgICAgICAgICIiIiBWZXJpZmllcyBhbGwgVzNDLXN0eWxlIHBhdGhz
IHRvIHRlc3QgaGFybmVzcyBmaWxlcyB3ZXJlIGNvbnZlcnRlZCBjb3JyZWN0bHkgIiIiCisKKyAg
ICAgICAgIyBNYWtlIHNvdXAgaWYgd2UgbmVlZCB0bworICAgICAgICBpZiBpc2luc3RhbmNlKGNv
bnZlcnRlZCwgYmFzZXN0cmluZyk6CisgICAgICAgICAgICBjb252ZXJ0ZWQgPSBCZWF1dGlmdWxT
b3VwKGNvbnZlcnRlZCkKKworICAgICAgICByZXNvdXJjZXNfZGlyID0gY29udmVydGVyLnBhdGhf
ZnJvbV93ZWJraXRfcm9vdCgiTGF5b3V0VGVzdHMiLCAicmVzb3VyY2VzIikKKworICAgICAgICAj
IFZlcmlmeSB0aGUgb3JpZ2luYWwgcGF0aHMgYXJlIG5vIGxvbmdlciB0aGVyZQorICAgICAgICBv
cmlnX3BhdGhfcGF0dGVybiA9IHJlLmNvbXBpbGUoJ1wiL3Jlc291cmNlcy90ZXN0aGFybmVzcycp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFsbChzcmM9b3Jp
Z19wYXRoX3BhdHRlcm4pKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RoYXJu
ZXNzIHNyYyBwYXRoIHdhcyBub3QgY29udmVydGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKGhyZWY9b3JpZ19wYXRoX3BhdHRlcm4pKSwgMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzIGhyZWYgcGF0aCB3YXMgbm90IGNv
bnZlcnRlZCcpCisKKyAgICAgICAgIyBHZXQgdGhlIG5ldyByZWxwYXRoIGZyb20gdGhlIHRlc3Rl
ciBkaXIKKyAgICAgICAgbmV3X3JlbHBhdGggPSBvcy5wYXRoLnJlbHBhdGgocmVzb3VyY2VzX2Rp
ciwgdGVzdF9wYXRoKQorCisgICAgICAgICMgVmVyaWZ5IGl0J3MgaW4gYWxsIHRoZSByaWdodCBw
bGFjZXMKKyAgICAgICAgcmVscGF0aF9wYXR0ZXJuID0gcmUuY29tcGlsZShuZXdfcmVscGF0aCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKHNyYz1yZWxw
YXRoX3BhdHRlcm4pKSwgbnVtX3NyY19wYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Rlc3RoYXJuZXNzIHNyYyByZWxhdGl2ZSBwYXRoIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKGhyZWY9cmVscGF0aF9wYXR0ZXJu
KSksIG51bV9ocmVmX3BhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdGhhcm5l
c3MgaHJlZiByZWxhdGl2ZSBwYXRoIG5vdCBjb3JyZWN0JykKKworICAgIGRlZiB2ZXJpZnlQcmVm
aXhlZFByb3BlcnRpZXMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3Byb3BlcnRpZXMpOgorICAgICAg
ICAiIiIgVmVyaWZpZXMgYSBsaXN0IG9mIHRlc3RfcHJvcGVydGllcyB3ZXJlIGNvbnZlcnRlZCBj
b3JyZWN0bHkgIiIiCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbnVtYmVyIG9mIHRlc3Qg
cHJvcGVydGllcyBlcXVhbHMgdGhlIG51bWJlciB0aGF0IHdlcmUgY29udmVydGVkCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnZlcnRlZFswXSksIGxlbih0ZXN0X3Byb3BlcnRpZXMp
LCAnSW5jb3JyZWN0IG51bWJlciBvZiBwcm9wZXJ0aWVzIGNvbnZlcnRlZCcpCisKKyAgICAgICAg
IyBWZXJpZnkgdGhleSdyZSBhbGwgaW4gdGhlIGNvbnZlcnRlZCBkb2N1bWVudAorICAgICAgICBm
b3IgdGVzdF9wcm9wIGluIHRlc3RfcHJvcGVydGllczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgodGVzdF9wcm9wIGluIGNvbnZlcnRlZFsxXSksICdQcm9wZXJ0eSAnICsgdGVzdF9wcm9w
ICsgJyBub3QgZm91bmQgaW4gY29udmVydGVkIGRvYycpCisKKyAgICBkZWYgZ2VuZXJhdGVUZXN0
Q29udGVudChzZWxmLCBmdWxsX3Byb3BfbGlzdCwgbnVtX3Rlc3RfcHJvcGVydGllcywgaHRtbCk6
CisgICAgICAgICIiIiBHZW5lcmF0ZXMgYSByYW5kb20gbGlzdCBvZiB1bmlxdWUgcHJvcGVydGll
cyByZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBhbmQgaW5zZXJ0cyB0aGVtIGludG8gaHRt
bCBjb250ZW50IHRoYXQncyBiZWVuIHRva2VuaXplZCB1c2luZyBcJ0B0ZXN0WFhAXCcgc3ludGF4
ICIiIgorCisgICAgICAgIHRlc3RfcHJvcGVydGllcyA9IFtdCisKKyAgICAgICAgIyBHcmFiIGEg
cmFuZG9tIGJ1bmNoIG9mIDIwIHVuaXF1ZSBwcm9wZXJ0aWVzIHJlcXVpcmluZyBwcmVmaXhlcyB0
byB0ZXN0IHdpdGgKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIGNvdW50IDwgbnVt
X3Rlc3RfcHJvcGVydGllczoKKyAgICAgICAgICAgIGlkeCA9IHJhbmRvbS5yYW5kaW50KDAsIGxl
bihmdWxsX3Byb3BfbGlzdCkgLSAxKQorICAgICAgICAgICAgaWYgbm90KGZ1bGxfcHJvcF9saXN0
W2lkeF0gaW4gdGVzdF9wcm9wZXJ0aWVzKToKKyAgICAgICAgICAgICAgICB0ZXN0X3Byb3BlcnRp
ZXMuYXBwZW5kKGZ1bGxfcHJvcF9saXN0W2lkeF0pCisgICAgICAgICAgICAgICAgY291bnQgKz0g
MQorCisgICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW5zIGluIHRoZSB0ZXN0aHRtbCB3aXRoIHRo
ZSB0ZXN0IHByb3BlcnRpZXMuIFdhbGsgYmFja3dhcmQKKyAgICAgICAgIyB0aHJvdWdoIHRoZSBs
aXN0IHRvIHJlcGxhY2UgdGhlIGRvdWJsZS1kaWdpdCB0b2tlbnMgZmlyc3QKKyAgICAgICAgaWR4
ID0gbGVuKHRlc3RfcHJvcGVydGllcykgLSAxCisgICAgICAgIHdoaWxlIGlkeCA+PSAwOgorICAg
ICAgICAgICAgIyBVc2UgdGhlIHVucHJlZml4ZWQgdmVyc2lvbgorICAgICAgICAgICAgdGVzdF9w
cm9wID0gdGVzdF9wcm9wZXJ0aWVzW2lkeF0ucmVwbGFjZSgnLXdlYmtpdC0nLCAnJykKKyAgICAg
ICAgICAgICMgUmVwbGFjZSB0aGUgdG9rZW4KKyAgICAgICAgICAgIGh0bWwgPSBodG1sLnJlcGxh
Y2UoJ0B0ZXN0JyArIHN0cihpZHgpICsgJ0AnLCB0ZXN0X3Byb3ApCisgICAgICAgICAgICBpZHgg
LT0gMQorCisgICAgICAgIHJldHVybiAodGVzdF9wcm9wZXJ0aWVzLCBodG1sKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0MDFiZWRl
YTFmY2RkYzlhYzVmMDdjMWE0NTM2OWI2NDFlNmYyZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTAsMCArMSw0NDQgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMg
SVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisjIFNVQ0ggREFNQUdFLgorCisiIiIKKyBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGlyZWN0b3J5
IG9mIFczQyBDU1MgdGVzdHMgaW50byBXZWJLaXQuCisKKyBZb3UgbXVzdCBoYXZlIGNoZWNrZWQg
b3V0IHRoZSBXM0MgcmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZlLgorCisgVGhpcyBzY3Jp
cHQgd2lsbCBpbXBvcnQgdGhlIHRlc3RzIGludG8gV2ViS2l0IGZvbGxvd2luZyB0aGVzZSBydWxl
czoKKworICAgIC0gT25seSB0ZXN0cyB0aGF0IGFyZSBhcHByb3ZlZCBvciBvZmZpY2lhbGx5IHN1
Ym1pdHRlZCBhd2FpdGluZyByZXZpZXcgYXJlIGltcG9ydGVkCisKKyAgICAtIEFsbCB0ZXN0cyBh
cmUgaW1wb3J0ZWQgaW50byBMYXlvdXRUZXN0cy9jc3N3ZworCisgICAgLSBJZiB0aGUgdGVzdHMg
YXJlIGFwcHJvdmVkLCB0aGV5J2xsIGJlIGltcG9ydGVkIGludG8gYSBkaXJlY3RvcnkgdHJlZSB0
aGF0CisgICAgICBtaXJyb3JzIHRoZSBDU1MgTWVyY3VyaWFsIHJlcG8uIEZvciBleGFtcGxlLCA8
Y3Nzd2dfcmVwb19yb290Pi9hcHByb3ZlZC9jc3MyLjEgaXMgYnJvdWdodCBpbgorICAgICAgYXMg
TGF5b3V0VGVzdHMvY3Nzd2cvYXBwcm92ZWQvY3NzMi4xLCBtYWludGFpbmluZyB0aGUgZW50aXJl
IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgdGhhdAorCisgICAgLSBJZiB0aGUgdGVzdHMgYXJl
IHN1Ym1pdHRlZCwgdGhleSdsbCBiZSBicm91Z2h0IGluIGFzIExheW91dFRlc3RzL2Nzc3dnL3N1
Ym1pdHRlZCBhbmQgd2lsbCBhbHNvCisgICAgICBtYWludGFpbiB0aGVpciBkaXJlY3Rvcnkgc3Ry
dWN0dXJlIHVuZGVyIHRoYXQuIEZvciBleGFtcGxlLCBldmVyeXRoaW5nIHVuZGVyCisgICAgICA8
Y3Nzd2dfcmVwb19yb290Pi9jb250cmlidXRvcnMvYWRvYmUvc3VibWl0dGVkIGlzIGJyb3VnaHQg
aW50byBzdWJtaXR0ZWQsIG1pcnJvcmluZyBpdHMKKyAgICAgIGRpcmVjdG9yeSBzdHJ1Y3R1cmUg
aW4gdGhlIGNzc3dnIHJlcG8KKworICAgIC0gSWYgdGhlIGltcG9ydCBkaXJlY3Rvcnkgc3BlY2lm
aWVkIGlzIGp1c3QgYSBjb250cmlidXRvciBmb2xkZXIsIG9ubHkgdGhlIHN1Ym1pdHRlZCBmb2xk
ZXIKKyAgICAgIGZvciB0aGF0IGNvbnRyaWJ1dG9yIGlzIGJyb3VnaHQgaW4uIEZvciBleGFtcGxl
LCB0byBpbXBvcnQgYWxsIG9mIE1vemlsbGEncyB0ZXN0cywgZWl0aGVyCisgICAgICA8Y3Nzd2df
cmVwb19yb290Pi9jb250cmlidXRvcnMvbW96aWxsYSBvciA8Y3Nzd2dfcmVwb19yb290Pi9jb250
cmlidXRvcnMvbW96aWxsYS9zdWJtaXR0ZWQKKyAgICAgIHdpbGwgd29yayBhbmQgYXJlIGVxdWl2
YWxlbnQKKworICAgIC0gRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGlzIHNjcmlwdCB3b24ndCB3b3Jr
IGlmIHlvdSB0cnkgdG8gaW1wb3J0IHRoZSBmdWxsIHNldCBvZiBzdWJtaXR0ZWQKKyAgICAgIHRl
c3RzIHVuZGVyIGNvbnRyaWJ1dG9ycy8qL3N1Ym1pdHRlZC4gU2luY2UgdGhlc2UgYXJlIGF3YWl0
aW5nIHJldmlldywgdGhpcyBpcyBqdXN0IGEgc21hbGwKKyAgICAgIGNvbnRyb2wgbWVjaGFuaXNt
IHRvIGVuZm9yY2UgY2FyZWZ1bGx5IHNlbGVjdGluZyB3aGF0IG5vbi1hcHByb3ZlZCB0ZXN0cyBh
cmUgaW1wb3J0ZWQuCisgICAgICBJdCBjYW4gb2J2aW91c2x5IGFuZCBlYXNpbHkgYmUgY2hhbmdl
ZC4KKworICAgIC0gQnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0cyBhbmQganN0ZXN0IGFyZSBpbXBv
cnRlZC4gVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEgLWEgb3IgLS1hbGwKKyAgICAgIGFy
Z3VtZW50CisKKyAgICAtIEFsc28gYnkgZGVmYXVsdCwgaWYgdGVzdCBmaWxlcyBieSB0aGUgc2Ft
ZSBuYW1lIGFscmVhZHkgZXhpc3QgaW4gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSwKKyAgICAg
IHRoZXkgYXJlIG92ZXJ3cml0dGVuIHdpdGggdGhlIGlkZWEgdGhhdCBydW5uaW5nIHRoaXMgc2Ny
aXB0IHdvdWxkIHJlZnJlc2ggZmlsZXMgcGVyaW9kaWNhbGx5LgorICAgICAgVGhpcyBjYW4gYWxz
byBiZSBvdmVycmlkZGVuIGJ5IGEgLW4gb3IgLS1uby1vdmVyd3JpdGUgZmxhZworCisgICAgLSBB
bGwgZmlsZXMgYXJlIGNvbnZlcnRlZCB0byB3b3JrIGluIFdlYktpdDoKKyAgICAgICAgIDEuIC54
aHQgZXh0ZW5zaW9ucyBhcmUgY2hhbmdlZCB0byAueGh0bWwgdG8gbWFrZSBuZXctcnVuLXdlYmtp
dC10ZXN0cyBoYXBweQorICAgICAgICAgMi4gUGF0aHMgdG8gdGVzdGhhcm5lc3MuanMgZmlsZXMg
YXJlIG1vZGlmaWVkIHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbgorICAgICAgICAg
ICAgTGF5b3V0VGVzdHMvcmVzb3VyY2VzLCB1c2luZyB0aGUgY29ycmVjdCByZWxhdGl2ZSBwYXRo
IGZyb20gdGhlIG5ldyBsb2NhdGlvbgorICAgICAgICAgMy4gQWxsIENTUyBwcm9wZXJ0aWVzIHJl
cXVpcmluZyB0aGUgLXdlYmtpdC12ZW5kb3IgcHJlZml4IGFyZSBwcmVmaXhlZCAtIHRoaXMgY3Vy
cmVudAorICAgICAgICAgICAgbGlzdCBvZiB3aGF0IG5lZWRzIHByZWZpeGVzIGlzIHJlYWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9DU1MvQ1NTUHJvcGVydGllcy5pbgorICAgICAgICAgNC4gRWFjaCBy
ZWZ0ZXN0IGhhcyBpdHMgb3duIGNvcHkgb2YgaXRzIHJlZmVyZW5jZSBmaWxlIGZvbGxvd2luZyB0
aGUgbmFtaW5nIGNvbnZlbnRpb25zCisgICAgICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0cyBl
eHBlY3RzCisgICAgICAgICA1LiBJZiBhIGEgcmVmZXJlbmNlIGZpbGVzIGxpdmVzIG91dHNpZGUg
dGhlIGRpcmVjdG9yeSBvZiB0aGUgdGVzdCB0aGF0IHVzZXMgaXQsIGl0IGlzIGNoZWNrZWQKKyAg
ICAgICAgICAgIGZvciBwYXRocyB0byBzdXBwb3J0IGZpbGVzIGFzIGl0IHdpbGwgYmUgaW1wb3J0
ZWQgaW50byBhIGRpZmZlcmVudCByZWxhdGl2ZSBwb3NpdGlvbiB0byB0aGUKKyAgICAgICAgICAg
IHRlc3QgZmlsZSAoaW4gdGhlIHNhbWUgZGlyZWN0b3J5KQorCisgICAgIC0gVXBvbiBjb21wbGV0
aW9uLCBzY3JpcHQgb3V0cHV0cyB0aGUgdG90YWwgbnVtYmVyIHRlc3RzIGltcG9ydGVkLCBicm9r
ZW4gZG93biBieSB0ZXN0IHR5cGUKKworICAgICAtIEFsc28gdXBvbiBjb21wbGV0aW9uLCBlYWNo
IGRpcmVjdG9yeSB3aGVyZSBmaWxlcyBhcmUgaW1wb3J0ZWQgd2lsbCBoYXZlIHczYy1pbXBvcnQu
bG9nIHdyaXR0ZW4KKyAgICAgICB3aXRoIGEgdGltZXN0YW1wLCB0aGUgVzNDIE1lcmN1cmlhbCBj
aGFuZ2VzZXQgaWYgYXZhaWxhYmxlLCB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyB1c2VkIHRo
YXQKKyAgICAgICByZXF1aXJlIHByZWZpeGVzLCB0aGUgbGlzdCBvZiBpbXBvcnRlZCBmaWxlcywg
YW5kIGd1aWRhbmNlIGZvciBmdXR1cmUgdGVzdCBtb2RpZmljYXRpb24gYW5kCisgICAgICAgbWFp
bnRlbmFuY2UuCisKKyAgICAgLSBPbiBzdWJzZXF1ZW50IGltcG9ydHMsIHRoaXMgZmlsZSBpcyBy
ZWFkIHRvIGRldGVybWluZSBpZiBmaWxlcyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbmV3ZXIg
Y2hhbmdlc2V0cy4KKyAgICAgICBUaGUgc2NyaXB0IHJlbW92ZXMgdGhlc2UgZmlsZXMgYWNjb3Jk
aW5nbHkuCisiIiIKKworIyBGSVhNRTogQ2hhbmdlIHRoaXMgZmlsZSB0byB1c2UgdGhlIEhvc3Qg
YWJzdHJhY3Rpb25zIHJhdGhlciB0aGF0IG9zLCBzeXMsIHNodXRpbHMsIGV0Yy4KKworaW1wb3J0
IGRhdGV0aW1lCitpbXBvcnQgbWltZXR5cGVzCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcwor
aW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGlt
cG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRlc3RQYXJz
ZXIKK2Zyb20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBXM0NUZXN0Q29udmVy
dGVyCisKKworVEVTVF9TVEFUVVNfVU5LTk9XTiA9ICd1bmtub3duJworVEVTVF9TVEFUVVNfQVBQ
Uk9WRUQgPSAnYXBwcm92ZWQnCitURVNUX1NUQVRVU19TVUJNSVRURUQgPSAnc3VibWl0dGVkJwor
CitDSEFOR0VTRVRfTk9UX0FWQUlMQUJMRSA9ICdOb3QgQXZhaWxhYmxlJworCisKK2RlZiBtYWlu
KF9hcmd2LCBfc3Rkb3V0LCBfc3RkZXJyKToKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VfYXJn
cygpCisgICAgaW1wb3J0X2RpciA9IHZhbGlkYXRlX2ltcG9ydF9kaXJlY3RvcnkoYXJnc1swXSkK
KyAgICB0ZXN0X2ltcG9ydGVyID0gVGVzdEltcG9ydGVyKGltcG9ydF9kaXIsIG9wdGlvbnMpCisg
ICAgdGVzdF9pbXBvcnRlci5kb19pbXBvcnQoKQorCisKK2RlZiBwYXJzZV9hcmdzKCk6CisgICAg
cGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlv
bnNdIHczY190ZXN0X2RpcmVjdG9yeScpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0t
bm8tb3ZlcndyaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdvdmVyd3JpdGUnLAor
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAorICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdGbGFn
IHRvIHByZXZlbnQgZHVwbGljYXRlIHRlc3QgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBleGlzdGlu
ZyB0ZXN0cy4gQnkgZGVmYXVsdCwgdGhleSB3aWxsIGJlIG92ZXJ3cml0dGVuJykKKyAgICBwYXJz
ZXIuYWRkX29wdGlvbignLWEnLCAnLS1hbGwnLAorICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdJbXBvcnQgYWxsIHRlc3RzIGluY2x1ZGluZyByZWZ0
ZXN0cywgSlMgdGVzdHMsIGFuZCBtYW51YWwvcGl4ZWwgdGVzdHMuIEJ5IGRlZmF1bHQsIG9ubHkg
cmVmdGVzdHMgYW5kIEpTIHRlc3RzIGFyZSBpbXBvcnRlZCcpCisKKyAgICBvcHRpb25zLCBhcmdz
ID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGlmIGxlbihhcmdzKSAhPSAxOgorICAgICAgICBw
YXJzZXIuZXJyb3IoJ0luY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzJykKKyAgICByZXR1cm4g
b3B0aW9ucywgYXJncworCisKK2RlZiB2YWxpZGF0ZV9pbXBvcnRfZGlyZWN0b3J5KGltcG9ydF9k
aXIpOgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbXBvcnRfZGlyKToKKyAgICAgICAgc3lz
LmV4aXQoJ1NvdXJjZSBkaXJlY3RvcnkgJXMgbm90IGZvdW5kIScgJSBpbXBvcnRfZGlyKQorCisg
ICAgIyBNYWtlIHN1cmUgdGhlIHRlc3RzIGFyZSBvZmZpY2lhbGx5IHN1Ym1pdHRlZCB0byB0aGUg
VzNDLCBlaXRoZXIgYXBwcm92ZWQgb3IKKyAgICAjIHN1Ym1pdHRlZCBmb2xsb3dpbmcgdGhlaXIg
ZGlyZWN0b3J5IG5hbWluZyBjb252ZW50aW9ucworICAgIGlmIGltcG9ydF9kaXIuZmluZCgnYXBw
cm92ZWQnKSA9PSAtMSBhbmQgaW1wb3J0X2Rpci5maW5kKCdzdWJtaXR0ZWQnKSA9PSAtMToKKyAg
ICAgICAgIyBJZiBub3QgcG9pbnRlZCBkaXJlY3RseSB0byB0aGUgYXBwcm92ZWQgZGlyZWN0b3J5
IG9yIHRvIGFueSBzdWJtaXR0ZWQKKyAgICAgICAgIyBkaXJlY3RvcnksIGNoZWNrIGZvciBhIHN1
Ym1pdHRlZCBzdWJkaXJlY3RvcnkgYW5kIGdvIHdpdGggdGhhdAorICAgICAgICBpbXBvcnRfZGly
ID0gb3MucGF0aC5qb2luKGltcG9ydF9kaXIsICdzdWJtaXR0ZWQnKQorICAgICAgICBpZiBub3Qg
b3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGltcG9ydF9kaXIpKToKKyAgICAgICAgICAgIHN5
cy5leGl0KCdVbmFibGUgdG8gaW1wb3J0IHRlc3RzIHRoYXQgYXJlblwndCBhcHByb3ZlZCBvciBz
dWJtaXR0ZWQgdG8gdGhlIFczQycpCisKKyAgICByZXR1cm4gaW1wb3J0X2RpcgorCisKK2NsYXNz
IFRlc3RJbXBvcnRlcihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZV9k
aXJlY3RvcnksIG9wdGlvbnMpOgorICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisKKyAg
ICAgICAgc2VsZi5ob3N0ID0gSG9zdCgpCisgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IHNlbGYu
aG9zdC5maWxlc3lzdGVtCisgICAgICAgIHNlbGYuX3dlYmtpdF9yb290ID0gX19maWxlX18uc3Bs
aXQoc2VsZi5maWxlc3lzdGVtLnNlcCArICdUb29scycpWzBdCisKKyAgICAgICAgc2VsZi5zb3Vy
Y2VfZGlyZWN0b3J5ID0gc291cmNlX2RpcmVjdG9yeQorICAgICAgICBzZWxmLmRlc3RpbmF0aW9u
X2RpcmVjdG9yeSA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9yb290KCJMYXlvdXRUZXN0cyIsICJj
c3N3ZyIpCisKKyAgICAgICAgc2VsZi5jaGFuZ2VzZXQgPSBDSEFOR0VTRVRfTk9UX0FWQUlMQUJM
RQorICAgICAgICBzZWxmLnRlc3Rfc3RhdHVzID0gVEVTVF9TVEFUVVNfVU5LTk9XTgorCisgICAg
ICAgIHNlbGYuaW1wb3J0X2xpc3QgPSBbXQorCisgICAgZGVmIHBhdGhfZnJvbV93ZWJraXRfcm9v
dChzZWxmLCAqY29tcHMpOgorICAgICAgICByZXR1cm4gc2VsZi5maWxlc3lzdGVtLmFic3BhdGgo
c2VsZi5maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X3Jvb3QsICpjb21wcykpCisKKyAgICBk
ZWYgZG9faW1wb3J0KHNlbGYpOgorICAgICAgICBzZWxmLnNjYW5fc291cmNlX2RpcmVjdG9yeShz
ZWxmLnNvdXJjZV9kaXJlY3RvcnkpCisgICAgICAgIHNlbGYuZ2V0X2NoYW5nZXNldCgpCisgICAg
ICAgIHNlbGYuaW1wb3J0X3Rlc3RzKCkKKworICAgIGRlZiBnZXRfY2hhbmdlc2V0KHNlbGYpOgor
ICAgICAgICAiIiIgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBjdXJyZW50IGNoYW5nZXNldCBhbmQg
cGFyc2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZSBjaGFuZ2VzZXQuIElmIHRoYXQgZG9lc24ndCB3
b3Jrb3V0IGZvciBzb21lIHJlYXNvbiwgaXQganVzdCBiZWNvbWVzICdOb3QgQXZhaWxhYmxlJyAi
IiIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFRyeSB0byBmaW5kIHRoZSBjaGFuZ2Vz
ZXQgdXNpbmcgbWVyY3VyaWFsLCBidXQgZmFpbCBncmFjZWZ1bGx5IGFzIHdlIGRvbid0IHdhbnQg
dG8gcmVxdWlyZSBpdCB0byBiZSBpbnN0YWxsZWQuCisgICAgICAgICAgICBzZWxmLmNoYW5nZXNl
dCA9IHNlbGYuaG9zdC5leGVjdXRpdmUucnVuX2NvbW1hbmQoWydoZycsICd0aXAnXSkuc3BsaXQo
J2NoYW5nZXNldDonKVsxXQorICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3I6CisgICAgICAgICAg
ICBzZWxmLmNoYW5nZXNldCA9IENIQU5HRVNFVF9OT1RfQVZBSUxBQkxFCisKKyAgICBkZWYgc2Nh
bl9zb3VyY2VfZGlyZWN0b3J5KHNlbGYsIGRpcmVjdG9yeSk6CisgICAgICAgICIiIiBXYWxrcyB0
aGUgfGRpcmVjdG9yeXwgbG9va2luZyBmb3IgSFRNTCBmaWxlcyB0aGF0IGFyZSBpbXBvcnRhYmxl
IHRlc3RzLiAiIiIKKworICAgICAgICAjIEZJWE1FOiB1c2UgZmlsZXN5c3RlbQorICAgICAgICBm
b3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgorICAgICAgICAgICAg
cHJpbnQgJ1NjYW5uaW5nICcgKyByb290ICsgJy4uLicKKyAgICAgICAgICAgIHRvdGFsX3Rlc3Rz
ID0gMAorICAgICAgICAgICAgcmVmdGVzdHMgPSAwCisgICAgICAgICAgICBqc3Rlc3RzID0gMAor
CisgICAgICAgICAgICAjIElnbm9yZSBhbnkgcmVwbyBzdHVmZgorICAgICAgICAgICAgaWYgJy5n
aXQnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJy5naXQnKQorICAgICAg
ICAgICAgaWYgJy5oZycgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmhn
JykKKworICAgICAgICAgICAgIyBhcmNoaXZlIGFuZCBkYXRhIGRpcnMgYXJlIGludGVybmFsIGNz
c3dnIHRoaW5ncyB0aGF0IGxpdmUgaW4gZXZlcnkgYXBwcm92ZWQgZGlyZWN0b3J5CisgICAgICAg
ICAgICBpZiAnZGF0YScgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnZGF0
YScpCisgICAgICAgICAgICBpZiAnYXJjaGl2ZScgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBk
aXJzLnJlbW92ZSgnYXJjaGl2ZScpCisKKyAgICAgICAgICAgIGNvcHlfbGlzdCA9IFtdCisKKyAg
ICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBpZiBmaWxl
bmFtZS5zdGFydHN3aXRoKCcuJykgb3IgZmlsZW5hbWUuZW5kc3dpdGgoJy5wbCcpOgorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZSAgIyBGb3Igc29tZSByZWFzb24gdGhlIHczYyByZXBvIGNv
bnRhaW5zIHJhbmRvbSBwZXJsIHNjcmlwdHMgd2UgZG9uJ3QgY2FyZSBhYm91dC4KKworICAgICAg
ICAgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGVuYW1lKQorCisgICAg
ICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmdWxscGF0aCkKKyAg
ICAgICAgICAgICAgICBpZiBub3QgJ2h0bWwnIGluIHN0cihtaW1ldHlwZVswXSkgYW5kIG5vdCAn
eG1sJyBpbiBzdHIobWltZXR5cGVbMF0pOgorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3Qu
YXBwZW5kKHsnc3JjJzogZnVsbHBhdGgsICdkZXN0JzogZmlsZW5hbWV9KQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgdGVzdF9wYXJzZXIgPSBUZXN0UGFy
c2VyKHZhcnMoc2VsZi5vcHRpb25zKSwgZmlsZW5hbWU9ZnVsbHBhdGgpCisgICAgICAgICAgICAg
ICAgdGVzdF9pbmZvID0gdGVzdF9wYXJzZXIuYW5hbHl6ZV90ZXN0KCkKKyAgICAgICAgICAgICAg
ICBpZiB0ZXN0X2luZm8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgICAgIGlmICdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCk6CisgICAg
ICAgICAgICAgICAgICAgIHJlZnRlc3RzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgdG90YWxf
dGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Jhc2VuYW1lID0gb3MucGF0aC5i
YXNlbmFtZSh0ZXN0X2luZm9bJ3Rlc3QnXSkKKworICAgICAgICAgICAgICAgICAgICAjIEFkZCB0
aGUgcmVmIGZpbGUsIGZvbGxvd2luZyBXZWJLaXQgc3R5bGUuCisgICAgICAgICAgICAgICAgICAg
ICMgRklYTUU6IElkZWFsbHkgd2UnZCBzdXBwb3J0IHJlYWRpbmcgdGhlIG1ldGFkYXRhCisgICAg
ICAgICAgICAgICAgICAgICMgZGlyZWN0bHkgcmF0aGVyIHRoYW4gcmVseWluZyAgb24gYSBuYW1p
bmcgY29udmVudGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIyBVc2luZyBhIG5hbWluZyBjb252
ZW50aW9uIGNyZWF0ZXMgZHVwbGljYXRlIGNvcGllcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgIyByZWZlcmVuY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIHJlZl9maWxlID0gb3Mu
cGF0aC5zcGxpdGV4dCh0ZXN0X2Jhc2VuYW1lKVswXSArICctZXhwZWN0ZWQnCisgICAgICAgICAg
ICAgICAgICAgIHJlZl9maWxlICs9IG9zLnBhdGguc3BsaXRleHQodGVzdF9iYXNlbmFtZSlbMV0K
KworICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogdGVzdF9pbmZv
WydyZWZlcmVuY2UnXSwgJ2Rlc3QnOiByZWZfZmlsZX0pCisgICAgICAgICAgICAgICAgICAgIGNv
cHlfbGlzdC5hcHBlbmQoeydzcmMnOiB0ZXN0X2luZm9bJ3Rlc3QnXSwgJ2Rlc3QnOiBmaWxlbmFt
ZX0pCisKKyAgICAgICAgICAgICAgICAgICAgIyBVcGRhdGUgYW55IHN1cHBvcnQgZmlsZXMgdGhh
dCBuZWVkIHRvIG1vdmUgYXMgd2VsbCB0byByZW1haW4gcmVsYXRpdmUgdG8gdGhlIC1leHBlY3Rl
ZCBmaWxlLgorICAgICAgICAgICAgICAgICAgICBpZiAncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZv
LmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdXBwb3J0X2ZpbGUgaW4gdGVz
dF9pbmZvWydyZWZzdXBwb3J0J106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
X2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHRlc3RfaW5mb1sncmVmZXJlbmNl
J10pLCBzdXBwb3J0X2ZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2Zp
bGUgPSBvcy5wYXRoLm5vcm1wYXRoKHNvdXJjZV9maWxlKQorCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBLZWVwIHRoZSBkZXN0IGFzIGl0IHdhcworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRvX2NvcHkgPSB7J3NyYyc6IHNvdXJjZV9maWxlLCAnZGVzdCc6IHN1cHBvcnRfZmls
ZX0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT25seSBhZGQgaXQgb25jZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCh0b19jb3B5IGluIGNvcHlfbGlzdCk6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQodG9fY29weSkK
KyAgICAgICAgICAgICAgICBlbGlmICdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCk6CisgICAg
ICAgICAgICAgICAgICAgIGpzdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICB0b3RhbF90
ZXN0cyArPSAxCisgICAgICAgICAgICAgICAgICAgIGNvcHlfbGlzdC5hcHBlbmQoeydzcmMnOiBm
dWxscGF0aCwgJ2Rlc3QnOiBmaWxlbmFtZX0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0gMQorICAgICAgICAgICAgICAgICAgICBjb3B5
X2xpc3QuYXBwZW5kKHsnc3JjJzogZnVsbHBhdGgsICdkZXN0JzogZmlsZW5hbWV9KQorCisgICAg
ICAgICAgICBpZiBub3QgdG90YWxfdGVzdHM6CisgICAgICAgICAgICAgICAgIyBXZSBjYW4gc2tp
cCB0aGUgc3VwcG9ydCBkaXJlY3RvcnkgaWYgbm8gdGVzdHMgd2VyZSBmb3VuZC4KKyAgICAgICAg
ICAgICAgICBpZiAnc3VwcG9ydCcgaW4gZGlyczoKKyAgICAgICAgICAgICAgICAgICAgZGlycy5y
ZW1vdmUoJ3N1cHBvcnQnKQorCisgICAgICAgICAgICAgICAgaWYgY29weV9saXN0OgorICAgICAg
ICAgICAgICAgICAgICAjIE9ubHkgYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBsaXN0IGlmIHRo
ZXJlJ3Mgc29tZXRoaW5nIHRvIGltcG9ydAorICAgICAgICAgICAgICAgICAgICBzZWxmLmltcG9y
dF9saXN0LmFwcGVuZCh7J2Rpcm5hbWUnOiByb290LCAnY29weV9saXN0JzogY29weV9saXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZnRlc3RzJzog
cmVmdGVzdHMsICdqc3Rlc3RzJzoganN0ZXN0cywgJ3RvdGFsX3Rlc3RzJzogdG90YWxfdGVzdHN9
KQorCisgICAgZGVmIGltcG9ydF90ZXN0cyhzZWxmKToKKyAgICAgICAgIiIiIENvcGllcyBhbmQg
Y29udmVydHMgdGhlIGZ1bGwgbGlzdCBvZiBpbXBvcnRhYmxlIHRlc3RzIGludG8gV2Via2l0IGFu
ZCBsb2dzIHdoYXQgd2FzIGltcG9ydGVkIGluIGVhY2ggZGlyZWN0b3J5ICIiIgorCisgICAgICAg
IGlmIHNlbGYuaW1wb3J0X2xpc3Q6CisgICAgICAgICAgICBzZWxmLnNldHVwX2Rlc3RpbmF0aW9u
X2RpcmVjdG9yeSgpCisKKyAgICAgICAgY29udmVydGVyID0gVzNDVGVzdENvbnZlcnRlcigpCisg
ICAgICAgIHRvdGFsX2ltcG9ydGVkX3Rlc3RzID0gMAorICAgICAgICB0b3RhbF9pbXBvcnRlZF9y
ZWZ0ZXN0cyA9IDAKKyAgICAgICAgdG90YWxfaW1wb3J0ZWRfanN0ZXN0cyA9IDAKKworICAgICAg
ICBmb3IgZGlyX3RvX2NvcHkgaW4gc2VsZi5pbXBvcnRfbGlzdDoKKworICAgICAgICAgICAgdG90
YWxfaW1wb3J0ZWRfdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3RvdGFsX3Rlc3RzJ10KKyAgICAgICAg
ICAgIHRvdGFsX2ltcG9ydGVkX3JlZnRlc3RzICs9IGRpcl90b19jb3B5WydyZWZ0ZXN0cyddCisg
ICAgICAgICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzICs9IGRpcl90b19jb3B5Wydqc3Rlc3Rz
J10KKworICAgICAgICAgICAgcHJlZml4ZWRfcHJvcGVydGllcyA9IFtdCisKKyAgICAgICAgICAg
IGlmIG5vdCBkaXJfdG9fY29weVsnY29weV9saXN0J106CisgICAgICAgICAgICAgICAgY29udGlu
dWUKKworICAgICAgICAgICAgIyBCdWlsZCB0aGUgc3VicGF0aCBzdGFydGluZyB3aXRoIHRoZSBh
cHByb3ZlZC9zdWJtaXR0ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICBvcmlnX3BhdGggPSBkaXJf
dG9fY29weVsnZGlybmFtZSddCisgICAgICAgICAgICBzdGFydCA9IG9yaWdfcGF0aC5maW5kKHNl
bGYudGVzdF9zdGF0dXMpCisgICAgICAgICAgICBuZXdfc3VicGF0aCA9IG9yaWdfcGF0aFtzdGFy
dDpsZW4ob3JpZ19wYXRoKV0KKworICAgICAgICAgICAgIyBBcHBlbmQgdGhlIG5ldyBzdWJwYXRo
IHRvIHRoZSBkZXN0aW5hdGlvbl9kaXJlY3RvcnkKKyAgICAgICAgICAgIG5ld19wYXRoID0gb3Mu
cGF0aC5qb2luKHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5LCBuZXdfc3VicGF0aCkKKworICAg
ICAgICAgICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9yaWVzIGlmIG5vdCB0
aGVyZQorICAgICAgICAgICAgaWYgbm90KG9zLnBhdGguZXhpc3RzKG5ld19wYXRoKSk6CisgICAg
ICAgICAgICAgICAgb3MubWFrZWRpcnMobmV3X3BhdGgpCisKKyAgICAgICAgICAgIGNvcGllZF9m
aWxlcyA9IFtdCisKKyAgICAgICAgICAgIGZvciBmaWxlX3RvX2NvcHkgaW4gZGlyX3RvX2NvcHlb
J2NvcHlfbGlzdCddOgorICAgICAgICAgICAgICAgICMgRklYTUU6IFNwbGl0IHRoaXMgYmxvY2sg
aW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIG9yaWdfZmlsZXBhdGgg
PSBvcy5wYXRoLm5vcm1wYXRoKGZpbGVfdG9fY29weVsnc3JjJ10pCisKKyAgICAgICAgICAgICAg
ICBhc3NlcnQobm90IG9zLnBhdGguaXNkaXIob3JpZ19maWxlcGF0aCkpCisKKyAgICAgICAgICAg
ICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3JpZ19maWxlcGF0aCkpOgorICAgICAgICAgICAg
ICAgICAgICBwcmludCAnV2FybmluZzogJyArIG9yaWdfZmlsZXBhdGggKyAnIG5vdCBmb3VuZC4g
UG9zc2libGUgZXJyb3IgaW4gdGhlIHRlc3QuJworICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQorCisgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG5ld19wYXRo
LCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkKKworICAgICAgICAgICAgICAgICMgRklYTUU6IHdlIHNo
b3VsZCBqdXN0IHN1cHBvcnQgJy54aHQnIGRpcmVjdGx5LgorICAgICAgICAgICAgICAgIG5ld19m
aWxlcGF0aCA9IG5ld19maWxlcGF0aC5yZXBsYWNlKCcueGh0JywgJy54aHRtbCcpCisKKyAgICAg
ICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKG5ld19maWxl
cGF0aCkpKToKKyAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5kaXJuYW1l
KG5ld19maWxlcGF0aCkpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5vcHRpb25zLm92
ZXJ3cml0ZSBhbmQgb3MucGF0aC5leGlzdHMobmV3X2ZpbGVwYXRoKToKKyAgICAgICAgICAgICAg
ICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBleGlzdGluZyBmaWxlICcgKyBuZXdfZmls
ZXBhdGgKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFRPRE86
IE1heWJlIGRvaW5nIGEgZmlsZSBkaWZmIGlzIGluIG9yZGVyIGhlcmUgZm9yIGV4aXN0aW5nIGZp
bGVzPworICAgICAgICAgICAgICAgICAgICAjICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGVyZSdz
IG5vIHNlbnNlIGluIG92ZXJ3cml0aW5nIGlkZW50aWNhbCBmaWxlcywgYnV0CisgICAgICAgICAg
ICAgICAgICAgICMgICAgICAgdGhlcmUncyBubyBoYXJtIGluIGNvcHlpbmcgdGhlIGlkZW50aWNh
bCB0aGluZy4KKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ0ltcG9ydGluZzogJyArIG9yaWdf
ZmlsZXBhdGgKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyAgICAgICBBczogJyArIG5ld19m
aWxlcGF0aAorCisgICAgICAgICAgICAgICAgIyBPbmx5IGh0bWwsIHhtbCwgb3IgY3NzIHNob3Vs
ZCBiZSBjb252ZXJ0ZWQKKyAgICAgICAgICAgICAgICAjIFRPRE86IEV2ZW50dWFsbHksIHNvIHNo
b3VsZCBqcyB3aGVuIHN1cHBvcnQgaXMgYWRkZWQgZm9yIHRoaXMgdHlwZSBvZiBjb252ZXJzaW9u
CisgICAgICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShvcmlnX2Zp
bGVwYXRoKQorICAgICAgICAgICAgICAgIGlmICdodG1sJyBpbiBzdHIobWltZXR5cGVbMF0pIG9y
ICd4bWwnIGluIHN0cihtaW1ldHlwZVswXSkgIG9yICdjc3MnIGluIHN0cihtaW1ldHlwZVswXSk6
CisKKyAgICAgICAgICAgICAgICAgICAgY29udmVydGVkX2ZpbGUgPSBjb252ZXJ0ZXIuY29udmVy
dF9mb3Jfd2Via2l0KG5ld19wYXRoLCBmaWxlbmFtZT1vcmlnX2ZpbGVwYXRoKQorCisgICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0ZWRfZmlsZToKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNodXRpbC5jb3B5ZmlsZShvcmlnX2ZpbGVwYXRoLCBuZXdfZmlsZXBhdGgpICAjIFRoZSBm
aWxlIHdhcyB1bm1vZGlmaWVkLgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJlZml4ZWRfcHJvcGVydGllcy5leHRlbmQoc2V0KGNvbnZlcnRlZF9m
aWxlWzBdKSAtIHNldChwcmVmaXhlZF9wcm9wZXJ0aWVzKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG91dGZpbGUgPSBvcGVuKG5ld19maWxlcGF0aCwgJ3cnKQorICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0ZmlsZS53cml0ZShjb252ZXJ0ZWRfZmlsZVsxXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcmlnX2ZpbGVwYXRoLCBuZXdfZmlsZXBhdGgpCisK
KyAgICAgICAgICAgICAgICBjb3BpZWRfZmlsZXMuYXBwZW5kKG5ld19maWxlcGF0aC5yZXBsYWNl
KHNlbGYuX3dlYmtpdF9yb290LCAnJykpCisKKyAgICAgICAgICAgIHNlbGYucmVtb3ZlX2RlbGV0
ZWRfZmlsZXMobmV3X3BhdGgsIGNvcGllZF9maWxlcykKKyAgICAgICAgICAgIHNlbGYud3JpdGVf
aW1wb3J0X2xvZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhlZF9wcm9wZXJ0aWVzKQor
CisgICAgICAgIHByaW50ICdJbXBvcnQgY29tcGxldGUnCisKKyAgICAgICAgcHJpbnQgJ0lNUE9S
VEVEICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfdGVzdHMpICsgJyBUT1RBTCBURVNUUycKKyAgICAg
ICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRfcmVmdGVzdHMpICsgJyBy
ZWZ0ZXN0cycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90YWxfaW1wb3J0ZWRf
anN0ZXN0cykgKyAnIEpTIHRlc3RzJworICAgICAgICBwcmludCAnSW1wb3J0ZWQgJyArIHN0cih0
b3RhbF9pbXBvcnRlZF90ZXN0cyAtIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgLSB0b3RhbF9pbXBv
cnRlZF9yZWZ0ZXN0cykgKyAnIHBpeGVsL21hbnVhbCB0ZXN0cycKKworICAgIGRlZiBzZXR1cF9k
ZXN0aW5hdGlvbl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIiBDcmVhdGVzIGEgZGVzdGlu
YXRpb24gZGlyZWN0b3J5IHRoYXQgbWlycm9ycyB0aGF0IG9mIHRoZSBzb3VyY2UgYXBwcm92ZWQg
b3Igc3VibWl0dGVkIGRpcmVjdG9yeSAiIiIKKworICAgICAgICBzZWxmLnVwZGF0ZV90ZXN0X3N0
YXR1cygpCisKKyAgICAgICAgc3RhcnQgPSBzZWxmLnNvdXJjZV9kaXJlY3RvcnkuZmluZChzZWxm
LnRlc3Rfc3RhdHVzKQorICAgICAgICBuZXdfc3VicGF0aCA9IHNlbGYuc291cmNlX2RpcmVjdG9y
eVtzdGFydDpsZW4oc2VsZi5zb3VyY2VfZGlyZWN0b3J5KV0KKworICAgICAgICBkZXN0aW5hdGlv
bl9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnksIG5l
d19zdWJwYXRoKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0aW5hdGlvbl9k
aXJlY3RvcnkpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGluYXRpb25fZGlyZWN0b3J5
KQorCisgICAgICAgIHByaW50ICdUZXN0cyB3aWxsIGJlIGltcG9ydGVkIGludG86ICcgKyBkZXN0
aW5hdGlvbl9kaXJlY3RvcnkKKworICAgIGRlZiB1cGRhdGVfdGVzdF9zdGF0dXMoc2VsZik6Cisg
ICAgICAgICIiIiBTZXRzIHRoZSB0ZXN0IHN0YXR1cyB0byBlaXRoZXIgJ2FwcHJvdmVkJyBvciAn
c3VibWl0dGVkJyAiIiIKKworICAgICAgICBzdGF0dXMgPSBURVNUX1NUQVRVU19VTktOT1dOCisK
KyAgICAgICAgaWYgc2VsZi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQoJ2FwcHJvdmVkJykgIT0gLTE6
CisgICAgICAgICAgICBzdGF0dXMgPSBURVNUX1NUQVRVU19BUFBST1ZFRAorICAgICAgICBlbGlm
IHNlbGYuc291cmNlX2RpcmVjdG9yeS5maW5kKCdzdWJtaXR0ZWQnKSAhPSAtMToKKyAgICAgICAg
ICAgIHN0YXR1cyA9IFRFU1RfU1RBVFVTX1NVQk1JVFRFRAorCisgICAgICAgIHNlbGYudGVzdF9z
dGF0dXMgPSBzdGF0dXMKKworICAgIGRlZiByZW1vdmVfZGVsZXRlZF9maWxlcyhzZWxmLCBpbXBv
cnRfZGlyZWN0b3J5LCBuZXdfZmlsZV9saXN0KToKKyAgICAgICAgIiIiIFJlYWRzIGFuIGltcG9y
dCBsb2cgaW4gfGltcG9ydF9kaXJlY3Rvcnl8IGFuZCBjb21wYXJlcyBpdCB0byB0aGUgfG5ld19m
aWxlX2xpc3R8IGFuZCByZW1vdmVzIGZpbGVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgbmV3IGxpc3Qg
IiIiCisKKyAgICAgICAgcHJldmlvdXNfZmlsZV9saXN0ID0gW10KKworICAgICAgICBpbXBvcnRf
bG9nX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW1wb3J0X2RpcmVjdG9yeSwgJ3czYy1pbXBvcnQubG9n
JykKKyAgICAgICAgaWYgbm90KG9zLnBhdGguZXhpc3RzKGltcG9ydF9sb2dfZmlsZSkpOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaW1wb3J0X2xvZyA9IG9wZW4oaW1wb3J0X2xvZ19m
aWxlLCAncicpCisgICAgICAgIGNvbnRlbnRzID0gaW1wb3J0X2xvZy5yZWFkbGluZXMoKQorCisg
ICAgICAgIGlmICdMaXN0IG9mIGZpbGVzXG4nIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgbGlz
dF9pZHggPSBjb250ZW50cy5pbmRleCgnTGlzdCBvZiBmaWxlczpcbicpICsgMQorICAgICAgICAg
ICAgcHJldmlvdXNfZmlsZV9saXN0ID0gY29udGVudHNbbGlzdF9pZHg6XQorICAgICAgICAgICAg
cHJldmlvdXNfZmlsZV9saXN0ID0gbWFwKGxhbWJkYSBzOiBzLnN0cmlwKCksIHByZXZpb3VzX2Zp
bGVfbGlzdCkKKworICAgICAgICBkZWxldGVkX2ZpbGVzID0gc2V0KHByZXZpb3VzX2ZpbGVfbGlz
dCkgLSBzZXQobmV3X2ZpbGVfbGlzdCkKKyAgICAgICAgZm9yIGRlbGV0ZWRfZmlsZSBpbiBkZWxl
dGVkX2ZpbGVzOgorICAgICAgICAgICAgcHJpbnQgJ0RlbGV0aW5nIGZpbGUgcmVtb3ZlZCBmcm9t
IHRoZSBXM0MgcmVwbzonICsgZGVsZXRlZF9maWxlCisgICAgICAgICAgICBkZWxldGVkX2ZpbGUg
PSBvcy5wYXRoLmpvaW4oc2VsZi5fd2Via2l0X3Jvb3QsIGRlbGV0ZWRfZmlsZSkKKyAgICAgICAg
ICAgIG9zLnJlbW92ZShkZWxldGVkX2ZpbGUpCisKKyAgICAgICAgaW1wb3J0X2xvZy5jbG9zZSgp
CisKKyAgICBkZWYgd3JpdGVfaW1wb3J0X2xvZyhzZWxmLCBpbXBvcnRfZGlyZWN0b3J5LCBmaWxl
X2xpc3QsIHByb3BfbGlzdCk6CisgICAgICAgICIiIiBXcml0ZXMgYSB3M2MtaW1wb3J0LmxvZyBm
aWxlIGluIGVhY2ggZGlyZWN0b3J5IHdpdGggaW1wb3J0ZWQgZmlsZXMuICIiIgorCisgICAgICAg
IG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisKKyAgICAgICAgaW1wb3J0X2xvZyA9IG9w
ZW4ob3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1wb3J0LmxvZycpLCAndycp
CisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1RoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LlxuJykKKyAgICAgICAgaW1wb3J0
X2xvZy53cml0ZSgnRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJraXQu
IEluc3RlYWQsIHB1c2ggY2hhbmdlcyB0byB0aGUgVzNDIENTUyByZXBvOlxuXG4nKQorICAgICAg
ICBpbXBvcnRfbG9nLndyaXRlKCdodHRwOi8vaGcuY3Nzd2cub3JnL3Rlc3RcblxuJykKKyAgICAg
ICAgaW1wb3J0X2xvZy53cml0ZSgnVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJraXQgdG8gcmVpbXBvcnRcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlXG5cbicpCisgICAgICAgIGlt
cG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnTGFzdCBJbXBvcnQ6ICcgKyBub3cuc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNJykgKyAn
XG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdXM0MgTWVyY3VyaWFsIGNoYW5nZXNldDog
JyArIHNlbGYuY2hhbmdlc2V0ICsgJ1xuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGVz
dCBzdGF0dXMgYXQgdGltZSBvZiBpbXBvcnQ6ICcgKyBzZWxmLnRlc3Rfc3RhdHVzICsgJ1xuJykK
KyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nKQorICAgICAgICBp
bXBvcnRfbG9nLndyaXRlKCdQcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6XG4n
KQorICAgICAgICBpZiBwcm9wX2xpc3Q6CisgICAgICAgICAgICBmb3IgcHJvcCBpbiBwcm9wX2xp
c3Q6CisgICAgICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZShwcm9wICsgJ1xuJykKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ05vbmVcbicpCisgICAgICAg
IGltcG9ydF9sb2cud3JpdGUoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJykKKyAgICAgICAgaW1wb3J0X2xv
Zy53cml0ZSgnTGlzdCBvZiBmaWxlczpcbicpCisgICAgICAgIGZvciBpdGVtIGluIGZpbGVfbGlz
dDoKKyAgICAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoaXRlbSArICdcbicpCisKKyAgICAgICAg
aW1wb3J0X2xvZy5jbG9zZSgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9pbXBvcnRlcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGE1ZjcxZGEyYzliMThjZmNk
OWZlNGUwYTFkZGUzMWI0ZWRkMGM3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weQpAQCAtMCwwICsxLDU2IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVt
cyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElT
IiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorIyBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
CisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisjIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor
IyBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQg
dGVtcGZpbGUKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Vi
a2l0cHkudzNjLnRlc3RfaW1wb3J0ZXIgaW1wb3J0IFRlc3RJbXBvcnRlcgorCisKK2NsYXNzIFRl
c3RJbXBvcnRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfSW1wb3J0
RGlyV2l0aE5vVGVzdHMoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBkb19pbXBvcnQoKSB3aXRo
IGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgbm8gdGVzdHMgIiIiCisKKyAgICAgICAgaW1wb3J0
ZXIgPSBUZXN0SW1wb3J0ZXIoTm9uZSwgb3B0cGFyc2UuVmFsdWVzKHsib3ZlcndyaXRlIjogRmFs
c2V9KSkKKyAgICAgICAgaW1wb3J0ZXIuc291cmNlX2RpcmVjdG9yeSA9IGltcG9ydGVyLnBhdGhf
ZnJvbV93ZWJraXRfcm9vdCgiU291cmNlIiwgIldlYkNvcmUiLCAiY3NzIikKKyAgICAgICAgaW1w
b3J0ZXIuZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2Nz
c3dnJykKKworICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5jYXB0dXJl
X291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydGVyLmRvX2ltcG9ydCgp
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCisgICAg
ICAgICAgICBzaHV0aWwucm10cmVlKGltcG9ydGVyLmRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgaWdu
b3JlX2Vycm9ycz1UcnVlKQorCisgICAgIyBGSVhNRTogTmVlZCBtb3JlIHRlc3RzLCBidXQgbmVl
ZCB0byBhZGQgYSBtb2NrIGZpbGVzeXN0ZW0gdy8gc2FtcGxlIGRhdGEuCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NTVjZmEzYTE1ZGI3OWZm
YzI5YTIzN2FmY2UwYTEwM2ZkNDQxZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpAQCAtMCwwICsxLDE0MyBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jw
b3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCByZQorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBI
b3N0Citmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRp
ZnVsU291cCBhcyBQYXJzZXIKKworCitjbGFzcyBUZXN0UGFyc2VyKG9iamVjdCk6CisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZmlsZW5hbWUpOgorICAgICAgICBzZWxmLm9wdGlv
bnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBz
ZWxmLmhvc3QgPSBIb3N0KCkKKyAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gc2VsZi5ob3N0LmZp
bGVzeXN0ZW0KKworICAgICAgICBzZWxmLnRlc3RfZG9jID0gTm9uZQorICAgICAgICBzZWxmLnJl
Zl9kb2MgPSBOb25lCisgICAgICAgIHNlbGYubG9hZF9maWxlKGZpbGVuYW1lKQorCisgICAgZGVm
IGxvYWRfZmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgIGlmIHNlbGYuZmlsZXN5c3RlbS5l
eGlzdHMoZmlsZW5hbWUpOgorICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyA9IFBhcnNlcihzZWxm
LmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoZmlsZW5hbWUpKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VsZi50ZXN0X2RvYyA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWZfZG9jID0gTm9u
ZQorCisgICAgZGVmIGFuYWx5emVfdGVzdChzZWxmLCB0ZXN0X2NvbnRlbnRzPU5vbmUsIHJlZl9j
b250ZW50cz1Ob25lKToKKyAgICAgICAgIiIiIEFuYWx5emVzIGEgZmlsZSB0byBkZXRlcm1pbmUg
aWYgaXQncyBhIHRlc3QsIHdoYXQgdHlwZSBvZiB0ZXN0LCBhbmQgd2hhdCByZWZlcmVuY2Ugb3Ig
c3VwcG9ydCBmaWxlcyBpdCByZXF1aXJlcy4gUmV0dXJucyBhbGwgb2YgdGhlIHRlc3QgaW5mbyAi
IiIKKworICAgICAgICB0ZXN0X2luZm8gPSBOb25lCisKKyAgICAgICAgaWYgdGVzdF9jb250ZW50
cyBpcyBOb25lIGFuZCBzZWxmLnRlc3RfZG9jIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4g
dGVzdF9pbmZvCisKKyAgICAgICAgaWYgdGVzdF9jb250ZW50cyBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgIHNlbGYudGVzdF9kb2MgPSBQYXJzZXIodGVzdF9jb250ZW50cykKKworICAgICAgICBp
ZiByZWZfY29udGVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBQ
YXJzZXIocmVmX2NvbnRlbnRzKQorCisgICAgICAgICMgRmlyc3QgY2hlY2sgaWYgaXQncyBhIHJl
ZnRlc3QKKworICAgICAgICBtYXRjaGVzID0gc2VsZi5nZXRfcmVmdGVzdHMocmVsPSdtYXRjaCcp
ICsgc2VsZi5nZXRfcmVmdGVzdHMocmVsPSdtaXNtYXRjaCcpCisgICAgICAgIGlmIG1hdGNoZXM6
CisgICAgICAgICAgICBpZiBsZW4obWF0Y2hlcykgPiAxOgorICAgICAgICAgICAgICAgIHByaW50
ICdXYXJuaW5nOiBXZWJraXQgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSByZWZlcmVuY2VzLiBJ
bXBvcnRpbmcgdGhlIGZpcnN0IHJlZiBkZWZpbmVkIGluICcgKyBzZWxmLmZpbGVzeXN0ZW0uYmFz
ZW5hbWUoc2VsZi5maWxlbmFtZSkKKworICAgICAgICAgICAgcmVmX2ZpbGUgPSBzZWxmLmZpbGVz
eXN0ZW0uam9pbihzZWxmLmZpbGVzeXN0ZW0uZGlybmFtZShzZWxmLmZpbGVuYW1lKSwgbWF0Y2hl
c1swXVsnaHJlZiddKQorICAgICAgICAgICAgaWYgc2VsZi5yZWZfZG9jIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgc2VsZi5yZWZfZG9jID0gc2VsZi5sb2FkX2ZpbGUocmVmX2ZpbGUpCisKKyAg
ICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWUsICdyZWZlcmVuY2Un
OiByZWZfZmlsZX0KKworICAgICAgICAgICAgIyBJZiB0aGUgcmVmIGZpbGUgcGF0aCBpcyByZWxh
dGl2ZSwgd2UgbmVlZCB0byBjaGVjayBpdCBmb3IKKyAgICAgICAgICAgICMgcmVsYXRpdmUgcGF0
aHMgYWxzbyBiZWNhdXNlIHdoZW4gaXQgbGFuZHMgaW4gV2ViS2l0LCBpdCB3aWxsIGJlCisgICAg
ICAgICAgICAjIG1vdmVkIGRvd24gaW50byB0aGUgdGVzdCBkaXIuCisgICAgICAgICAgICAjCisg
ICAgICAgICAgICAjIE5vdGU6IFRoZSB0ZXN0IGZpbGVzIHRoZW1zZWx2ZXMgYXJlIG5vdCBjaGVj
a2VkIGZvciBzdXBwb3J0IGZpbGVzCisgICAgICAgICAgICAjIG91dHNpZGUgdGhlaXIgZGlyZWN0
b3JpZXMgYXMgdGhlIGNvbnZlbnRpb24gaW4gdGhlIENTU1dHIGlzIHRvCisgICAgICAgICAgICAj
IHB1dCBhbGwgc3VwcG9ydCBmaWxlcyBpbiB0aGUgc2FtZSBkaXIgb3Igc3ViZGlyIGFzIHRoZSB0
ZXN0LgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBBbGwgbm9uLXRlc3QgZmlsZXMgaW4g
dGhlIHRlc3QncyBkaXJlY3RvcnkgdHJlZSBhcmUgbm9ybWFsbHkKKyAgICAgICAgICAgICMgY29w
aWVkIGFzIHBhcnQgb2YgdGhlIGltcG9ydCBhcyB0aGV5IGFyZSBhc3N1bWVkIHRvIGJlIHJlcXVp
cmVkCisgICAgICAgICAgICAjIHN1cHBvcnQgZmlsZXMuCisgICAgICAgICAgICAjCisgICAgICAg
ICAgICAjICpCdXQqLCB0aGVyZSBpcyBleGFjdGx5IG9uZSBjYXNlIGluIHRoZSBlbnRpcmUgY3Nz
Mi4xIHN1aXRlIHdoZXJlCisgICAgICAgICAgICAjIGF0IHRlc3QgZGVwZW5kcyBvbiBhIGZpbGUg
dGhhdCBsaXZlcyBpbiBhIGRpZmZlcmVudCBkaXJlY3RvcnksCisgICAgICAgICAgICAjIHdoaWNo
IGRlcGVuZHMgb24gYW5vdGhlciBmaWxlIHRoYXQgbGl2ZXMgb3V0c2lkZSBvZiBpdHMKKyAgICAg
ICAgICAgICMgZGlyZWN0b3J5LiBUaGlzIGNvZGUgY292ZXJzIHRoYXQgY2FzZSA6KQorICAgICAg
ICAgICAgaWYgbWF0Y2hlc1swXVsnaHJlZiddLnN0YXJ0c3dpdGgoJy4uJyk6CisgICAgICAgICAg
ICAgICAgc3VwcG9ydEZpbGVzID0gc2VsZi5nZXRfc3VwcG9ydF9maWxlcyhzZWxmLnJlZl9kb2Mp
CisgICAgICAgICAgICAgICAgdGVzdF9pbmZvWydyZWZzdXBwb3J0J10gPSBzdXBwb3J0RmlsZXMK
KworICAgICAgICBlbGlmIHNlbGYuaXNfanN0ZXN0KCk6CisgICAgICAgICAgICB0ZXN0X2luZm8g
PSB7J3Rlc3QnOiBzZWxmLmZpbGVuYW1lLCAnanN0ZXN0JzogVHJ1ZX0KKyAgICAgICAgZWxpZiBz
ZWxmLm9wdGlvbnNbJ2FsbCddIGlzIFRydWUgYW5kIG5vdCgnLXJlZicgaW4gc2VsZi5maWxlbmFt
ZSkgYW5kIG5vdCgncmVmZXJlbmNlJyBpbiBzZWxmLmZpbGVuYW1lKToKKyAgICAgICAgICAgIHRl
c3RfaW5mbyA9IHsndGVzdCc6IHNlbGYuZmlsZW5hbWV9CisKKyAgICAgICAgcmV0dXJuIHRlc3Rf
aW5mbworCisgICAgZGVmIGdldF9yZWZ0ZXN0cyhzZWxmLCByZWwpOgorICAgICAgICAiIiIgU2Vh
cmNoZXMgZm9yIGFsbCByZWZlcmVuY2UgbGlua3MgaW4gdGhlIGZpbGUsIGJ5IGxvb2tpbmcgZm9y
IGEgcmVsIG9mIGVpdGhlciAibWF0Y2giIG9yICJtaXNtYXRjaCIuIiIiCisgICAgICAgIHJldHVy
biBzZWxmLnRlc3RfZG9jLmZpbmRBbGwocmVsPXJlbCkKKworICAgIGRlZiBpc19qc3Rlc3Qoc2Vs
Zik6CisgICAgICAgICIiIiBTZWFyY2hlcyB0aGUgZmlsZSBmb3IgdXNhZ2Ugb2YgVzNDLXN0eWxl
IHRlc3RoYXJuZXNzIHBhdGhzICIiIgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLnRlc3RfZG9j
LmZpbmQoc3JjPXJlLmNvbXBpbGUoJ1tcJ1wiL10/L3Jlc291cmNlcy90ZXN0aGFybmVzcycpKSkK
KworICAgIGRlZiBnZXRfc3VwcG9ydF9maWxlcyhzZWxmLCBkb2MpOgorICAgICAgICAiIiIgU2Vh
cmNoZXMgdGhlIGZpbGUgZm9yIGFsbCBwYXRocyBzcGVjaWZpZWQgaW4gdXJsKCkncywgaHJlZiBv
ciBzcmMgYXR0cmlidXRlcyAiIiIKKyAgICAgICAgc3VwcG9ydF9maWxlcyA9IFtdCisKKyAgICAg
ICAgaWYgZG9jIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc3VwcG9ydF9maWxlcworCisg
ICAgICAgIHNyY19hdHRycyA9IGRvYy5maW5kQWxsKHNyYz1yZS5jb21waWxlKCcuKicpKQorICAg
ICAgICBocmVmX2F0dHJzID0gZG9jLmZpbmRBbGwoaHJlZj1yZS5jb21waWxlKCcuKicpKQorCisg
ICAgICAgIHVybF9wYXR0ZXJuID0gcmUuY29tcGlsZSgndXJsXCguKlwpJykKKyAgICAgICAgdXJs
cyA9IFtdCisgICAgICAgIGZvciB1cmwgaW4gZG9jLmZpbmRBbGwodGV4dD11cmxfcGF0dGVybik6
CisgICAgICAgICAgICB1cmwgPSByZS5zZWFyY2godXJsX3BhdHRlcm4sIHVybCkKKyAgICAgICAg
ICAgIHVybCA9IHJlLnN1YigndXJsXChbXCdcIl0nLCAnJywgdXJsLmdyb3VwKDApKQorICAgICAg
ICAgICAgdXJsID0gcmUuc3ViKCdbXCdcIl1cKScsICcnLCB1cmwpCisgICAgICAgICAgICB1cmxz
LmFwcGVuZCh1cmwpCisKKyAgICAgICAgc3JjX3BhdGhzID0gW3NyY190YWdbJ3NyYyddIGZvciBz
cmNfdGFnIGluIHNyY19hdHRyc10KKyAgICAgICAgaHJlZl9wYXRocyA9IFtocmVmX3RhZ1snaHJl
ZiddIGZvciBocmVmX3RhZyBpbiBocmVmX2F0dHJzXQorCisgICAgICAgIHBhdGhzID0gc3JjX3Bh
dGhzICsgaHJlZl9wYXRocyArIHVybHMKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAg
ICAgICAgICBpZiBub3QocGF0aC5zdGFydHN3aXRoKCdodHRwOicpKSBhbmQgbm90KHBhdGguc3Rh
cnRzd2l0aCgnbWFpbHRvOicpKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0X2ZpbGVzLmFwcGVu
ZChwYXRoKQorCisgICAgICAgIHJldHVybiBzdXBwb3J0X2ZpbGVzCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
YTZkN2VjNGVhZjE2YWQxMTRmMWZjZTZlMWFkZGYzNWY5MDc3MTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weQpAQCAt
MCwwICsxLDIyNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAy
MDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0
ZXN0MiBhcyB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIg
aW1wb3J0IFRlc3RQYXJzZXIKKworCitvcHRpb25zID0geydhbGwnOiBGYWxzZSwgJ25vX292ZXJ3
cml0ZSc6IEZhbHNlfQorCisKK2NsYXNzIFRlc3RQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKworICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE9uZU1hdGNoKHNlbGYpOgorICAg
ICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSBiYXNpYyByZWZ0ZXN0IHdpdGgg
b25lIG1hdGNoIGxpbmsgYW5kIG5vIG1pc21hdGNoIGxpbmtzICIiIgorCisgICAgICAgIHRlc3Rf
aHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54
aHQiIC8+Cis8L2hlYWQ+CisiIiIKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9w
YXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAn
c29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3Qo
dGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0
ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBm
aWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5r
ZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3Jl
ZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgn
cmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZz
dXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdq
c3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFu
YWx5emVkIGFzIGEganN0ZXN0JykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVUZXN0UmVmdGVzdE11
bHRpcGxlTWF0Y2hlcyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGFuYWx5emVfdGVzdCgpIHVz
aW5nIGEgcmVmdGVzdCB3aXRoIG11bHRpcGxlIG1hdGNoIGxpbmtzIGFuZCBubyBtaXNtYXRjaCBs
aW5rcyAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIHJlbD0ibWF0
Y2giIGhyZWY9ImdyZWVuLWJveC1yZWYueGh0IiAvPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0i
Ymx1ZS1ib3gtcmVmLnhodCIgLz4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9Im9yYW5nZS1ib3gt
cmVmLnhodCIgLz4KKzwvaGVhZD4KKyIiIgorICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQor
ICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRl
c3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgICAgICBwYXJzZXIgPSBUZXN0
UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgICAg
IHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwp
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvdXRwdXQsIF8sIF8gPSBvYy5yZXN0b3Jl
X291dHB1dCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUs
ICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBp
biB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90
IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2lu
Zm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlz
IG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4g
dGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZv
ciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3Rf
aW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0
ZXN0JykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LnN0YXJ0c3dpdGgoJ1dhcm5p
bmcnKSwgJ25vIHdhcm5pbmcgYWJvdXQgbXVsdGlwbGUgbWF0Y2hlcycpCisKKyAgICBkZWYgdGVz
dF9hbmFseXplVGVzdFJlZnRlc3RNYXRjaEFuZE1pc21hdGNoKHNlbGYpOgorICAgICAgICAiIiIg
VGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHdpdGggYSBvbmUgbWF0Y2ggbGlu
ayBhbmQgb25lIG1pc21hdGNoIGxpbmsgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGhl
YWQ+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KKzxsaW5r
IHJlbD0ibWF0Y2giIGhyZWY9ImJsdWUtYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1pc21h
dGNoIiBocmVmPSJvcmFuZ2UtYm94LW5vdHJlZi54aHQiIC8+Cis8L2hlYWQ+CisiIiIKKyAgICAg
ICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8n
CisgICAgICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdz
b21lZmlsZS5odG1sJykKKyAgICAgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rl
c3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICBvdXRwdXQsIF8sIF8gPSBvYy5yZXN0b3JlX291dHB1dCgpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBm
aW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGlu
IHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVz
dF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3Vs
ZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3Qg
aGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0JykKKworICAgICAgICB3YXJuaW5ncyA9IG91
dHB1dC5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMod2FybmluZ3MsIFsi
V2FybmluZzogV2Via2l0IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcmVmZXJlbmNlcy4gSW1w
b3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5lZCBpbiBzb21lZmlsZS5odG1sIl0pCisKKyAgICBk
ZWYgdGVzdF9hbmFseXplVGVzdFJlZnRlc3RXaXRoUmVmU3VwcG9ydEZpbGVzKHNlbGYpOgorICAg
ICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHRoYXQgaGFzIHJl
ZmVycyB0byBhIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUgb2YgdGhlIHRlc3RzIGRpcmVjdG9yeSBh
bmQgdGhlIHJlZmVyZW5jZSBmaWxlIGhhcyBwYXRocyB0byBvdGhlciBzdXBwb3J0IGZpbGVzICIi
IgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9Im1h
dGNoIiBocmVmPSIuLi9yZWZlcmVuY2UvZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8L2hlYWQ+Cisi
IiIKKyAgICAgICAgcmVmX2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIGhyZWY9InN1cHBvcnQvY3Nz
L3JlZi1zdHlsZXNoZWV0LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiLi4vLi4v
c3VwcG9ydC9zb21lLWltYWdlLnBuZyIpCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
PjxpbWcgc3JjPSIuLi9zdXBwb3J0L2JsYWNrOTZ4OTYucG5nIiBhbHQ9IkltYWdlIGRvd25sb2Fk
IHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIiAvPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorIiIi
CisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNl
ciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAg
ICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9o
dG1sLCByZWZfY29udGVudHM9cmVmX2h0bWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVh
bCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEgdGVz
dCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5m
by5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9wYXRoKSwg
J3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIHJlZnN1
cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxl
bih0ZXN0X2luZm9bJ3JlZnN1cHBvcnQnXSksIDMsICd0aGVyZSBzaG91bGQgYmUgMyBzdXBwb3J0
IGZpbGVzIGluIHRoaXMgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0
ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBhbmFs
eXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplSlNUZXN0KHNlbGYpOgor
ICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSBqc3Rlc3QgIiIiCisKKyAg
ICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+Cis8bGluayBocmVmPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisiIiIKKyAg
ICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0g
VGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAg
IHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwp
CisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICd0ZXN0X2lu
Zm8gaXMgTm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdCcgaW4gdGVzdF9pbmZv
LmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Nob2xkIG5vdCBoYXZlIGZv
dW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBw
b3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQg
ZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnanN0ZXN0JyBp
biB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgYmUgYSBqc3Rlc3QnKQorCisgICAgZGVm
IHRlc3RfYW5hbHl6ZVBpeGVsVGVzdEFsbFRydWUoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBh
bmFseXplX3Rlc3QoKSB1c2luZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBq
c3Rlc3Qgd2l0aCBhbGw9RmFsc2UgIiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04gT0YgVEVTVDwvdGl0bGU+Cis8
bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9SIiAvPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIj48IVtDREFUQVsKK0NTUyBGT1IgVEVTVAorXV0+PC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorQ09OVEVOVCBPRiBURVNUCis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAg
IyBTZXQgb3B0aW9ucyB0byAnYWxsJyBzbyB0aGlzIGdldHMgZm91bmQKKyAgICAgICAgb3B0aW9u
c1snYWxsJ10gPSBUcnVlCisKKyAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRo
LycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29t
ZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVz
dF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0
X2luZm8sIE5vbmUsICd0ZXN0X2luZm8gaXMgTm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgndGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMo
KSwgJ3Nob2xkIG5vdCBoYXZlIGZvdW5kIGEgcmVmZXJlbmNlIGZpbGUnKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hv
dWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIG5v
dCBiZSBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplUGl4ZWxUZXN0QWxsRmFsc2Uo
c2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1c2luZyBhIHRlc3QgdGhh
dCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rlc3QsIHdpdGggLWFsbD1GYWxzZSAiIiIKKwor
ICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBE
RVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFN
RV9PRl9BVVRIT1IiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZP
UiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwv
Ym9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIFNldCBhbGwgdG8gZmFsc2Ugc28gdGhpcyBn
ZXRzIHNraXBwZWQKKyAgICAgICAgb3B0aW9uc1snYWxsJ10gPSBGYWxzZQorCisgICAgICAgIHRl
c3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBhcnNlciA9IFRlc3RQYXJz
ZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICB0ZXN0X2lu
Zm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9pbmZvLCBOb25lLCAndGVzdCBzaG91bGQgaGF2ZSBi
ZWVuIHNraXBwZWQnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZU5vbkhUTUxGaWxlKHNlbGYpOgor
ICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgd2l0aCBhIGZpbGUgdGhhdCBoYXMgbm8g
aHRtbCIiIgorICAgICAgICAjIEZJWE1FOiB1c2UgYSBtb2NrIGZpbGVzeXN0ZW0KKyAgICAgICAg
cGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJ3Rlc3RfcGFyc2VyLnB5JykpCisgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNl
ci5hbmFseXplX3Rlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfaW5mbywgTm9u
ZSwgJ25vIHRlc3RzIHNob3VsZCBoYXZlIGJlZW4gZm91bmQgaW4gdGhpcyBmaWxlJykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202178</attachid>
            <date>2013-05-17 18:02:43 -0700</date>
            <delta_ts>2013-05-17 21:49:53 -0700</delta_ts>
            <desc>update w/ second round of review feedback</desc>
            <filename>bug-111513-20130517180136.patch</filename>
            <type>text/plain</type>
            <size>65733</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5ODM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjIxNTAxYzI0MzA5MmEwZGZlMWFjNmI5OWMwNmZmN2Vk
MWE3M2I5ZC4uNjVhMjZmMDIyNjI2MGYwZDAxZTAwYjgyZDk3NmYwMDU2YjliZTUwMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgz
IEBACisyMDEzLTA1LTE3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIENyZWF0ZSBhIHNjcmlwdCB0byBpbXBvcnQgVzNDIHRlc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRv
IHJlLWxhbmQgdGhlICdpbXBvcnQtdzNjLXRlc3RzJworICAgICAgICBzY3JpcHQgYW5kIGFjY29t
cGFueWluZyBtb2R1bGVzLiAgVGhlIHRlc3RzIGFuZCBjb2RlIGhhdmUKKyAgICAgICAgYmVlbiBj
bGVhbmVkIHVwIHNvIHRoYXQgd2UgZG8gbm90IGxvZyBhbnl0aGluZyB0byBzdGRvdXQvc3RkZXJy
CisgICAgICAgIHdoaWxlIHJ1bm5pbmcgdGhlIHRlc3RzICh0aGFua3MgdG8gb3V0cHV0Y2FwdHVy
ZSkgYW5kIGRvIG5vdAorICAgICAgICB3cml0ZSBpbnRvIHRoZSBzb3VyY2UgdHJlZSB3aGlsZSBy
dW5uaW5nIHRoZSB0ZXN0cywgYW5kIG11Y2gKKyAgICAgICAgYnV0IG5vdCBhbGwgb2YgdGhlIGNv
ZGUgaGFzIGJlZW4gY29udmVydGVkIG92ZXIgdG8gdXNpbmcgdGhlIHdlYmtpdHB5CisKKyAgICAg
ICAgKiBTY3JpcHRzL2ltcG9ydC13M2MtdGVzdHM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdzNjL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3czYy90ZXN0X2NvbnZlcnRlci5weTogQWRkZWQuCisgICAgICAgIChXM0NUZXN0Q29udmVy
dGVyKToKKyAgICAgICAgKFczQ1Rlc3RDb252ZXJ0ZXIuX19pbml0X18pOgorICAgICAgICAoVzND
VGVzdENvbnZlcnRlci5wYXRoX2Zyb21fd2Via2l0X3Jvb3QpOgorICAgICAgICAoVzNDVGVzdENv
bnZlcnRlci5yZWFkX3dlYmtpdF9wcmVmaXhlZF9jc3NfcHJvcGVydHlfbGlzdCk6CisgICAgICAg
IChXM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfZm9yX3dlYmtpdCk6CisgICAgICAgIChXM0NUZXN0
Q29udmVydGVyLmNvbnZlcnRfY3NzKToKKyAgICAgICAgKFczQ1Rlc3RDb252ZXJ0ZXIuY29udmVy
dF9odG1sKToKKyAgICAgICAgKFczQ1Rlc3RDb252ZXJ0ZXIuY29udmVydF90ZXN0aGFybmVzc19w
YXRocyk6CisgICAgICAgIChXM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVy
dGllcyk6CisgICAgICAgIChXM0NUZXN0Q29udmVydGVyLmFkZF93ZWJraXRfcHJlZml4X3RvX3Vu
cHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgIChXM0NUZXN0Q29udmVydGVyLnJlcGxhY2Vf
dGFnKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0
dGVzdC5weTogQWRkZWQuCisgICAgICAgIChXM0NUZXN0Q29udmVydGVyVGVzdCk6CisgICAgICAg
IChXM0NUZXN0Q29udmVydGVyVGVzdC5mYWtlX2Rpcl9wYXRoKToKKyAgICAgICAgKFczQ1Rlc3RD
b252ZXJ0ZXJUZXN0LnRlc3RfcmVhZF9wcmVmaXhlZF9wcm9wZXJ0eV9saXN0KToKKyAgICAgICAg
KFczQ1Rlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfY29udmVydF9mb3Jfd2Via2l0X25vdGhpbmdfdG9f
Y29udmVydCk6CisgICAgICAgICh0ZXN0X2NvbnZlcnRfZm9yX3dlYmtpdF9oYXJuZXNzX29ubHkp
OgorICAgICAgICAodGVzdF9jb252ZXJ0X2Zvcl93ZWJraXRfcHJvcGVydGllc19vbmx5KToKKyAg
ICAgICAgKHRlc3RfY29udmVydF9mb3Jfd2Via2l0X2hhcm5lc3NfYW5kX3Byb3BlcnRpZXMpOgor
ICAgICAgICAodGVzdF9jb252ZXJ0X3Rlc3RfaGFybmVzc19wYXRocyk6CisgICAgICAgICh0ZXN0
X2NvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyk6CisgICAgICAgICh2ZXJpZnlfY29udmVyc2lv
bl9oYXBwZW5lZCk6CisgICAgICAgICh2ZXJpZnlfbm9fY29udmVyc2lvbl9oYXBwZW5lZCk6Cisg
ICAgICAgICh2ZXJpZnlfdGVzdF9oYXJuZXNzX3BhdGhzKToKKyAgICAgICAgKHZlcmlmeV9wcmVm
aXhlZF9wcm9wZXJ0aWVzKToKKyAgICAgICAgKGdlbmVyYXRlX3Rlc3RfY29udGVudCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weTogQWRkZWQuCisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAodmFsaWRhdGVfaW1w
b3J0X2RpcmVjdG9yeSk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIpOgorICAgICAgICAoVGVzdElt
cG9ydGVyLl9faW5pdF9fKToKKyAgICAgICAgKFRlc3RJbXBvcnRlci5wYXRoX2Zyb21fd2Via2l0
X3Jvb3QpOgorICAgICAgICAoVGVzdEltcG9ydGVyLmRvX2ltcG9ydCk6CisgICAgICAgIChUZXN0
SW1wb3J0ZXIubG9hZF9jaGFuZ2VzZXQpOgorICAgICAgICAoVGVzdEltcG9ydGVyLmZpbmRfaW1w
b3J0YWJsZV90ZXN0cyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIuaW1wb3J0X3Rlc3RzKToKKyAg
ICAgICAgKFRlc3RJbXBvcnRlci5zZXR1cF9kZXN0aW5hdGlvbl9kaXJlY3RvcnkpOgorICAgICAg
ICAoVGVzdEltcG9ydGVyLnVwZGF0ZV90ZXN0X3N0YXR1cyk6CisgICAgICAgIChUZXN0SW1wb3J0
ZXIucmVtb3ZlX2RlbGV0ZWRfZmlsZXMpOgorICAgICAgICAoVGVzdEltcG9ydGVyLndyaXRlX2lt
cG9ydF9sb2cpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdEltcG9ydGVyVGVzdCk6CisgICAgICAg
IChUZXN0SW1wb3J0ZXJUZXN0LnRlc3RfaW1wb3J0X2Rpcl93aXRoX25vX3Rlc3RzKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weTogQWRkZWQuCisgICAgICAg
IChUZXN0UGFyc2VyKToKKyAgICAgICAgKFRlc3RQYXJzZXIuX19pbml0X18pOgorICAgICAgICAo
VGVzdFBhcnNlci5sb2FkX2ZpbGUpOgorICAgICAgICAoVGVzdFBhcnNlci5hbmFseXplX3Rlc3Qp
OgorICAgICAgICAoVGVzdFBhcnNlci5yZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZSk6CisgICAgICAg
IChUZXN0UGFyc2VyLmlzX2pzdGVzdCk6CisgICAgICAgIChUZXN0UGFyc2VyLnN1cHBvcnRfZmls
ZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0
LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlc3RQYXJzZXJUZXN0KToKKyAgICAgICAgKFRlc3RQYXJz
ZXJUZXN0LnRlc3RfYW5hbHl6ZV90ZXN0X3JlZnRlc3Rfb25lX21hdGNoKToKKyAgICAgICAgKHRl
c3RfYW5hbHl6ZV90ZXN0X3JlZnRlc3RfbXVsdGlwbGVfbWF0Y2hlcyk6CisgICAgICAgICh0ZXN0
X2FuYWx5emVfdGVzdF9yZWZ0ZXN0X21hdGNoX2FuZF9taXNtYXRjaCk6CisgICAgICAgICh0ZXN0
X2FuYWx5emVfdGVzdF9yZWZ0ZXN0X3dpdGhfcmVmX3N1cHBvcnRfRmlsZXMpOgorICAgICAgICAo
dGVzdF9hbmFseXplX2pzdGVzdCk6CisgICAgICAgICh0ZXN0X2FuYWx5emVfcGl4ZWxfdGVzdF9h
bGxfdHJ1ZSk6CisgICAgICAgICh0ZXN0X2FuYWx5emVfcGl4ZWxfdGVzdF9hbGxfZmFsc2UpOgor
ICAgICAgICAodGVzdF9hbmFseXplX25vbl9odG1sX2ZpbGUpOgorCiAyMDEzLTA1LTA5ICBNYXJp
byBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gVXBkYXRlIFNpbW9uIFBlbmEgZW1haWwgb24gaGlzIGJlaGFsZi4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjcyMDk2YzA2MTU2YjNlZTUxODQyZWNlOWM3Yzk5ZDQy
OTFmODJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
CkBAIC0wLDAgKzEsMzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAo
QykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisj
ICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lzCisKK2Zyb20g
d2Via2l0cHkudzNjIGltcG9ydCB0ZXN0X2ltcG9ydGVyCisKKworc3lzLmV4aXQodGVzdF9pbXBv
cnRlci5tYWluKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCwgc3lzLnN0ZGVycikpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy9fX2luaXRfXy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNjViZWU1YmI3N2U5NmVi
YzdjZDljNDc2NDA2OTBmYmRhOGFjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFJlcXVpcmVkIGZvciBQ
eXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBmMGQ0
ZjNlZGY3NjhjNTk2OTQ2ZDdlYjY2Yzk4ZmQwNTA3NzNhMQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CkBAIC0wLDAgKzEsMTc1
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscworIyAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg
IkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorIyBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksCisjIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyMgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisjIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgorIyBTVUNIIERBTUFHRS4KKworaW1wb3J0IHJlCisKK2Zyb20gd2Via2l0cHkuY29tbW9u
Lmhvc3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3Vw
IGltcG9ydCBCZWF1dGlmdWxTb3VwLCBUYWcKKworCitjbGFzcyBXM0NUZXN0Q29udmVydGVyKG9i
amVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2hvc3QgPSBI
b3N0KCkKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbQor
ICAgICAgICBzZWxmLl9ob3N0LmluaXRpYWxpemVfc2NtKCkKKyAgICAgICAgc2VsZi5fd2Via2l0
X3Jvb3QgPSBzZWxmLl9ob3N0LnNjbSgpLmNoZWNrb3V0X3Jvb3QKKyAgICAgICAgc2VsZi5wcmVm
aXhlZF9wcm9wZXJ0aWVzID0gc2VsZi5yZWFkX3dlYmtpdF9wcmVmaXhlZF9jc3NfcHJvcGVydHlf
bGlzdCgpCisKKyAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9yb290KHNlbGYsICpjb21wcyk6Cisg
ICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoc2VsZi5fZmlsZXN5c3RlbS5q
b2luKHNlbGYuX3dlYmtpdF9yb290LCAqY29tcHMpKQorCisgICAgZGVmIHJlYWRfd2Via2l0X3By
ZWZpeGVkX2Nzc19wcm9wZXJ0eV9saXN0KHNlbGYpOgorICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0
aWVzID0gW10KKworICAgICAgICBjb250ZW50cyA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0
X2ZpbGUoc2VsZi5wYXRoX2Zyb21fd2Via2l0X3Jvb3QoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2Nz
cycsICdDc3NQcm9wZXJ0eU5hbWVzLmluJykpCisgICAgICAgIGZvciBsaW5lIGluIGNvbnRlbnRz
LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICMgRmluZCBsaW5lcyBzdGFydGluZyB3aXRoIHRo
ZSAtd2Via2l0LSBwcmVmaXguCisgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCctd2Via2l0
LVtcd3wtXSonLCBsaW5lKQorICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAg
IyBJZ25vcmUgbGluZXMgd2hlcmUgYm90aCB0aGUgcHJlZml4ZWQgYW5kIG5vbi1wcmVmaXhlZCBw
cm9wZXJ0eQorICAgICAgICAgICAgICAgICMgYXJlIHN1cHBvcnRlZCAtIGRlbm90ZWQgYnkgLXdl
YmtpdC1zb21lLXByb3BlcnR5ID0gc29tZS1wcm9wZXJ0eS4KKyAgICAgICAgICAgICAgICBmaWVs
ZHMgPSBsaW5lLnNwbGl0KCc9JykKKyAgICAgICAgICAgICAgICBpZiBsZW4oZmllbGRzKSA9PSAy
IGFuZCBmaWVsZHNbMV0uc3RyaXAoKSBpbiBmaWVsZHNbMF0uc3RyaXAoKToKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzLmFw
cGVuZChtYXRjaC5ncm91cCgwKSkKKworICAgICAgICByZXR1cm4gcHJlZml4ZWRfcHJvcGVydGll
cworCisgICAgZGVmIGNvbnZlcnRfZm9yX3dlYmtpdChzZWxmLCBuZXdfcGF0aCwgZmlsZW5hbWUp
OgorICAgICAgICAiIiIgQ29udmVydHMgYSBmaWxlJ3MgfGNvbnRlbnRzfCBzbyBpdCB3aWxsIGZ1
bmN0aW9uIGNvcnJlY3RseSBpbiBpdHMgfG5ld19wYXRofCBpbiBXZWJraXQuCisKKyAgICAgICAg
UmV0dXJucyB0aGUgbGlzdCBvZiBtb2RpZmllZCBwcm9wZXJ0aWVzIGFuZCB0aGUgbW9kaWZpZWQg
dGV4dCBpZiB0aGUgZmlsZSB3YXMgbW9kaWZlZCwgTm9uZSBvdGhlcndpc2UuIiIiCisgICAgICAg
IGNvbnRlbnRzID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShmaWxlbmFtZSkKKyAg
ICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5jc3MnKToKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmLmNvbnZlcnRfY3NzKGNvbnRlbnRzKQorICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X2h0
bWwobmV3X3BhdGgsIGNvbnRlbnRzKQorCisgICAgZGVmIGNvbnZlcnRfY3NzKHNlbGYsIGNvbnRl
bnRzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuYWRkX3dlYmtpdF9wcmVmaXhfdG9fdW5wcmVmaXhl
ZF9wcm9wZXJ0aWVzKGNvbnRlbnRzKQorCisgICAgZGVmIGNvbnZlcnRfaHRtbChzZWxmLCBuZXdf
cGF0aCwgY29udGVudHMpOgorICAgICAgICBkb2MgPSBCZWF1dGlmdWxTb3VwKGNvbnRlbnRzKQor
ICAgICAgICBkaWRfbW9kaWZ5X3BhdGhzID0gc2VsZi5jb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhz
KGRvYywgbmV3X3BhdGgpCisgICAgICAgIGNvbnZlcnRlZF9wcm9wZXJ0aWVzX2FuZF9jb250ZW50
ID0gc2VsZi5jb252ZXJ0X3ByZWZpeGVkX3Byb3BlcnRpZXMoZG9jKQorICAgICAgICByZXR1cm4g
Y29udmVydGVkX3Byb3BlcnRpZXNfYW5kX2NvbnRlbnQgaWYgKGRpZF9tb2RpZnlfcGF0aHMgb3Ig
Y29udmVydGVkX3Byb3BlcnRpZXNfYW5kX2NvbnRlbnRbMF0pIGVsc2UgTm9uZQorCisgICAgZGVm
IGNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMoc2VsZiwgZG9jLCBuZXdfcGF0aCk6CisgICAgICAg
ICIiIiBVcGRhdGUgbGlua3MgdG8gdGVzdGhhcm5lc3MuanMgaW4gdGhlIEJlYXV0aWZ1bFNvdXAg
fGRvY3wgdG8gcG9pbnQgdG8gdGhlIGNvcHkgaW4gfG5ld19wYXRofC4KKworICAgICAgICBSZXR1
cm5zIHdoZXRoZXIgdGhlIGRvY3VtZW50IHdhcyBtb2RpZmllZC4iIiIKKworICAgICAgICAjIExv
b2sgZm9yIHRoZSBXM0Mtc3R5bGUgcGF0aCB0byBhbnkgdGVzdGhhcm5lc3MgZmlsZXMgLSBzY3Jp
cHRzICguanMpIG9yIGxpbmtzICguY3NzKQorICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgn
L3Jlc291cmNlcy90ZXN0aGFybmVzcycpCisgICAgICAgIHNjcmlwdF90YWdzID0gZG9jLmZpbmRB
bGwoc3JjPXBhdHRlcm4pCisgICAgICAgIGxpbmtfdGFncyA9IGRvYy5maW5kQWxsKGhyZWY9cGF0
dGVybikKKyAgICAgICAgdGVzdGhhcm5lc3NfdGFncyA9IHNjcmlwdF90YWdzICsgbGlua190YWdz
CisKKyAgICAgICAgaWYgbm90IHRlc3RoYXJuZXNzX3RhZ3M6CisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgICAgICByZXNvdXJjZXNfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9y
b290KCdMYXlvdXRUZXN0cycsICdyZXNvdXJjZXMnKQorICAgICAgICByZXNvdXJjZXNfcmVscGF0
aCA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVscGF0aChyZXNvdXJjZXNfcGF0aCwgbmV3X3BhdGgpCisK
KyAgICAgICAgZm9yIHRhZyBpbiB0ZXN0aGFybmVzc190YWdzOgorICAgICAgICAgICAgYXR0ciA9
ICdzcmMnCisgICAgICAgICAgICBpZiB0YWcubmFtZSAhPSAnc2NyaXB0JzoKKyAgICAgICAgICAg
ICAgICBhdHRyID0gJ2hyZWYnCisKKyAgICAgICAgICAgIG9sZF9wYXRoID0gdGFnW2F0dHJdCisg
ICAgICAgICAgICBuZXdfdGFnID0gVGFnKGRvYywgdGFnLm5hbWUsIHRhZy5hdHRycykKKyAgICAg
ICAgICAgIG5ld190YWdbYXR0cl0gPSByZS5zdWIocGF0dGVybiwgcmVzb3VyY2VzX3JlbHBhdGgg
KyAnL3Rlc3RoYXJuZXNzJywgb2xkX3BhdGgpCisKKyAgICAgICAgICAgIHNlbGYucmVwbGFjZV90
YWcodGFnLCBuZXdfdGFnKQorCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgY29udmVy
dF9wcmVmaXhlZF9wcm9wZXJ0aWVzKHNlbGYsIGRvYyk6CisgICAgICAgICIiIiBTZWFyY2hlcyBh
IEJlYXV0aWZ1bFNvdXAgfGRvY3wgZm9yIGFueSBDU1MgcHJvcGVydGllcyByZXF1aXJpbmcgdGhl
IC13ZWJraXQtIHByZWZpeCBhbmQgY29udmVydHMgdGhlbS4KKworICAgICAgICBSZXR1cm5zIHRo
ZSBsaXN0IG9mIGNvbnZlcnRlZCBwcm9wZXJ0aWVzIGFuZCB0aGUgbW9kaWZpZWQgZG9jdW1lbnQg
YXMgYSBzdHJpbmcgIiIiCisKKyAgICAgICAgY29udmVydGVkX3Byb3BlcnRpZXMgPSBbXQorCisg
ICAgICAgICMgTG9vayBmb3IgaW5saW5lIGFuZCBkb2N1bWVudCBzdHlsZXMuCisgICAgICAgIGlu
bGluZV9zdHlsZXMgPSBkb2MuZmluZEFsbChzdHlsZT1yZS5jb21waWxlKCcuKicpKQorICAgICAg
ICBzdHlsZV90YWdzID0gZG9jLmZpbmRBbGwoJ3N0eWxlJykKKyAgICAgICAgYWxsX3N0eWxlcyA9
IGlubGluZV9zdHlsZXMgKyBzdHlsZV90YWdzCisKKyAgICAgICAgZm9yIHRhZyBpbiBhbGxfc3R5
bGVzOgorCisgICAgICAgICAgICAjIEdldCB0aGUgdGV4dCB3aGV0aGVyIGluIGEgc3R5bGUgdGFn
IG9yIHN0eWxlIGF0dHJpYnV0ZS4KKyAgICAgICAgICAgIHN0eWxlX3RleHQgPSAnJworICAgICAg
ICAgICAgaWYgdGFnLm5hbWUgPT0gJ3N0eWxlJzoKKyAgICAgICAgICAgICAgICBpZiBub3QgdGFn
LmNvbnRlbnRzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAg
IHN0eWxlX3RleHQgPSB0YWcuY29udGVudHNbMF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgc3R5bGVfdGV4dCA9IHRhZ1snc3R5bGUnXQorCisgICAgICAgICAgICB1cGRhdGVk
X3N0eWxlX3RleHQgPSBzZWxmLmFkZF93ZWJraXRfcHJlZml4X3RvX3VucHJlZml4ZWRfcHJvcGVy
dGllcyhzdHlsZV90ZXh0KQorCisgICAgICAgICAgICAjIFJld3JpdGUgdGFnIG9ubHkgaWYgY2hh
bmdlcyB3ZXJlIG1hZGUuCisgICAgICAgICAgICBpZiB1cGRhdGVkX3N0eWxlX3RleHRbMF06Cisg
ICAgICAgICAgICAgICAgY29udmVydGVkX3Byb3BlcnRpZXMuZXh0ZW5kKHVwZGF0ZWRfc3R5bGVf
dGV4dFswXSkKKworICAgICAgICAgICAgICAgIG5ld190YWcgPSBUYWcoZG9jLCB0YWcubmFtZSwg
dGFnLmF0dHJzKQorICAgICAgICAgICAgICAgIG5ld190YWcuaW5zZXJ0KDAsIHVwZGF0ZWRfc3R5
bGVfdGV4dFsxXSkKKworICAgICAgICAgICAgICAgIHNlbGYucmVwbGFjZV90YWcodGFnLCBuZXdf
dGFnKQorCisgICAgICAgIHJldHVybiAoY29udmVydGVkX3Byb3BlcnRpZXMsIGRvYy5wcmV0dGlm
eSgpKQorCisgICAgZGVmIGFkZF93ZWJraXRfcHJlZml4X3RvX3VucHJlZml4ZWRfcHJvcGVydGll
cyhzZWxmLCB0ZXh0KToKKyAgICAgICAgIiIiIFNlYXJjaGVzIHx0ZXh0fCBmb3IgaW5zdGFuY2Vz
IG9mIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggYW5kIGFkZHMgdGhl
IHByZWZpeCB0byB0aGVtLgorCisgICAgICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgY29udmVydGVk
IHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCB0ZXh0LiIiIgorCisgICAgICAgIGNvbnZlcnRl
ZF9wcm9wZXJ0aWVzID0gW10KKworICAgICAgICBmb3IgcHJlZml4ZWRfcHJvcGVydHkgaW4gc2Vs
Zi5wcmVmaXhlZF9wcm9wZXJ0aWVzOgorCisgICAgICAgICAgICB1bnByZWZpeGVkX3Byb3BlcnR5
ID0gcHJlZml4ZWRfcHJvcGVydHkucmVwbGFjZSgnLXdlYmtpdC0nLCAnJykKKworICAgICAgICAg
ICAgIyBMb29rIGZvciB0aGUgdmFyaW91cyB3YXlzIGl0IG1pZ2h0IGJlIGluIHRoZSBDU1MKKyAg
ICAgICAgICAgICMgTWF0Y2ggdGhlIHRoZSBwcm9wZXJ0eSBwcmVjZWRlZCBieSBlaXRoZXIgd2hp
dGVzcGFjZSBvciBsZWZ0IGN1cmx5IGJyYWNlCisgICAgICAgICAgICAjIG9yIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIHN0cmluZyAoZm9yIGlubGluZSBzdHlsZSBhdHRyaWJ1dGUpCisgICAgICAg
ICAgICBwYXR0ZXJuID0gJyhbXHN7XXxeKScgKyB1bnByZWZpeGVkX3Byb3BlcnR5ICsgJyhccys6
fDopJworICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHBhdHRlcm4sIHRleHQpOgorICAgICAgICAg
ICAgICAgIHByaW50ICdjb252ZXJ0aW5nICVzIC0+ICVzJyAlICh1bnByZWZpeGVkX3Byb3BlcnR5
LCBwcmVmaXhlZF9wcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBjb252ZXJ0ZWRfcHJvcGVydGll
cy5hcHBlbmQocHJlZml4ZWRfcHJvcGVydHkpCisgICAgICAgICAgICAgICAgdGV4dCA9IHJlLnN1
YihwYXR0ZXJuLCBwcmVmaXhlZF9wcm9wZXJ0eSArICc6JywgdGV4dCkKKworICAgICAgICAjIEZJ
WE1FOiBIYW5kbGUgdGhlIEpTIHZlcnNpb25zIG9mIHRoZXNlIHByb3BlcnRpZXMsIHRvby4KKyAg
ICAgICAgcmV0dXJuIChjb252ZXJ0ZWRfcHJvcGVydGllcywgdGV4dCkKKworICAgIGRlZiByZXBs
YWNlX3RhZyhzZWxmLCBvbGRfdGFnLCBuZXdfdGFnKToKKyAgICAgICAgaW5kZXggPSBvbGRfdGFn
LnBhcmVudC5jb250ZW50cy5pbmRleChvbGRfdGFnKQorICAgICAgICBvbGRfdGFnLnBhcmVudC5p
bnNlcnQoaW5kZXgsIG5ld190YWcpCisgICAgICAgIG9sZF90YWcuZXh0cmFjdCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjExZTI0ZDgyZmNiNmE4N2ZiMDA4MTIzZTE2NzI5YTZjOTA5OTg2ZmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRl
cl91bml0dGVzdC5weQpAQCAtMCwwICsxLDMxNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisK
KyMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
IyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SCisjIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBvcworaW1wb3J0IHJlCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CisKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCitm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291
cAorZnJvbSB3ZWJraXRweS53M2MudGVzdF9jb252ZXJ0ZXIgaW1wb3J0IFczQ1Rlc3RDb252ZXJ0
ZXIKKworCitjbGFzcyBXM0NUZXN0Q29udmVydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisK
KyAgICBkZWYgZmFrZV9kaXJfcGF0aChzZWxmLCBjb252ZXJ0ZXIsIGRpcm5hbWUpOgorICAgICAg
ICByZXR1cm4gY29udmVydGVyLnBhdGhfZnJvbV93ZWJraXRfcm9vdCgiTGF5b3V0VGVzdHMiLCAi
Y3NzIiwgZGlybmFtZSkKKworICAgIGRlZiB0ZXN0X3JlYWRfcHJlZml4ZWRfcHJvcGVydHlfbGlz
dChzZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIHRoYXQgdGhlIGN1cnJlbnQgbGlzdCBvZiBwcm9w
ZXJ0aWVzIHJlcXVpcmluZyB0aGUgLXdlYmtpdC0gcHJlZml4IGxvYWQgY29ycmVjdGx5ICIiIgor
CisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBiZSBwYXNzaW5nIGluIGEgTW9ja0hvc3QgaGVy
ZSAuLi4KKyAgICAgICAgY29udmVydGVyID0gVzNDVGVzdENvbnZlcnRlcigpCisgICAgICAgIHBy
b3BfbGlzdCA9IGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShwcm9wX2xpc3QsICdObyBwcmVmaXhlZCBwcm9wZXJ0aWVzIGZvdW5kJykKKyAgICAg
ICAgZm9yIHByb3AgaW4gcHJvcF9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBy
b3Auc3RhcnRzd2l0aCgnLXdlYmtpdC0nKSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRfZm9yX3dl
YmtpdF9ub3RoaW5nX3RvX2NvbnZlcnQoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0
X2Zvcl93ZWJraXQoKSB1c2luZyBhIGJhc2ljIHRlc3QgdGhhdCBoYXMgbm90aGluZyB0byBjb252
ZXJ0ICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjwhRE9DVFlQRSBodG1sIFBVQkxJQyAi
LS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIv
eGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzx0aXRsZT5DU1MgVGVzdDogREVTQ1JJUFRJT04g
T0YgVEVTVDwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9Ik5BTUVfT0ZfQVVUSE9S
IgoraHJlZj0ibWFpbHRvOkVNQUlMIE9SIGh0dHA6Ly9DT05UQUNUX1BBR0UiLz4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iUkVMRVZBTlRfU1BFQ19TRUNUSU9OIi8+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9IlRFU1QgQVNTRVJUSU9OIi8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwh
W0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05U
RU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBX
M0NUZXN0Q29udmVydGVyKCkKKworICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAg
ICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbnZlcnRl
ZCA9IGNvbnZlcnRlci5jb252ZXJ0X2h0bWwoJy9ub3RoaW5nL3RvL2NvbnZlcnQnLCB0ZXN0X2h0
bWwpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCisK
KyAgICAgICAgc2VsZi52ZXJpZnlfbm9fY29udmVyc2lvbl9oYXBwZW5lZChjb252ZXJ0ZWQpCisK
KyAgICBkZWYgdGVzdF9jb252ZXJ0X2Zvcl93ZWJraXRfaGFybmVzc19vbmx5KHNlbGYpOgorICAg
ICAgICAiIiIgVGVzdHMgY29udmVydF9mb3Jfd2Via2l0KCkgdXNpbmcgYSBiYXNpYyBKUyB0ZXN0
IHRoYXQgdXNlcyB0ZXN0aGFybmVzcy5qcyBvbmx5IGFuZCBoYXMgbm8gcHJlZml4ZWQgcHJvcGVy
dGllcyAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIGhyZWY9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKyIiIgorICAgICAgICBjb252ZXJ0ZXIgPSBXM0NUZXN0Q29udmVydGVyKCkKKyAgICAg
ICAgZmFrZV9kaXJfcGF0aCA9IHNlbGYuZmFrZV9kaXJfcGF0aChjb252ZXJ0ZXIsICJoYXJuZXNz
b25seSIpCisKKyAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfaHRtbChmYWtl
X2Rpcl9wYXRoLCB0ZXN0X2h0bWwpCisKKyAgICAgICAgc2VsZi52ZXJpZnlfY29udmVyc2lvbl9o
YXBwZW5lZChjb252ZXJ0ZWQpCisgICAgICAgIHNlbGYudmVyaWZ5X3Rlc3RfaGFybmVzc19wYXRo
cyhjb252ZXJ0ZXIsIGNvbnZlcnRlZFsxXSwgZmFrZV9kaXJfcGF0aCwgMSwgMSkKKyAgICAgICAg
c2VsZi52ZXJpZnlfcHJlZml4ZWRfcHJvcGVydGllcyhjb252ZXJ0ZWQsIFtdKQorCisgICAgZGVm
IHRlc3RfY29udmVydF9mb3Jfd2Via2l0X3Byb3BlcnRpZXNfb25seShzZWxmKToKKyAgICAgICAg
IiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGhhcyAyIHBy
ZWZpeGVkIHByb3BlcnRpZXM6IDEgaW4gYSBzdHlsZSBibG9jayArIDEgaW5saW5lIHN0eWxlICIi
IgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayBocmVmPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCisjYmxvY2sxIHsgQHRlc3QwQDogcHJvcHZhbHVlOyB9
CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRl
c3QxQDogcHJvcHZhbHVlOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisiIiIKKyAgICAgICAg
Y29udmVydGVyID0gVzNDVGVzdENvbnZlcnRlcigpCisgICAgICAgIGZha2VfZGlyX3BhdGggPSBz
ZWxmLmZha2VfZGlyX3BhdGgoY29udmVydGVyLCAnaGFybmVzc2FuZHByb3BzJykKKyAgICAgICAg
dGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZV90ZXN0X2NvbnRlbnQoY29udmVydGVyLnByZWZp
eGVkX3Byb3BlcnRpZXMsIDEsIHRlc3RfaHRtbCkKKworICAgICAgICBvYyA9IE91dHB1dENhcHR1
cmUoKQorICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X2h0bWwoZmFrZV9kaXJfcGF0aCwgdGVz
dF9jb250ZW50WzFdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9v
dXRwdXQoKQorCisgICAgICAgIHNlbGYudmVyaWZ5X2NvbnZlcnNpb25faGFwcGVuZWQoY29udmVy
dGVkKQorICAgICAgICBzZWxmLnZlcmlmeV90ZXN0X2hhcm5lc3NfcGF0aHMoY29udmVydGVyLCBj
b252ZXJ0ZWRbMV0sIGZha2VfZGlyX3BhdGgsIDEsIDEpCisgICAgICAgIHNlbGYudmVyaWZ5X3By
ZWZpeGVkX3Byb3BlcnRpZXMoY29udmVydGVkLCB0ZXN0X2NvbnRlbnRbMF0pCisKKyAgICBkZWYg
dGVzdF9jb252ZXJ0X2Zvcl93ZWJraXRfaGFybmVzc19hbmRfcHJvcGVydGllcyhzZWxmKToKKyAg
ICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgSlMgdGVz
dCB0aGF0IHVzZXMgdGVzdGhhcm5lc3MuanMgYW5kIHRlc3RoYXJuZXNzLmNzcyBhbmQgaGFzIDQg
cHJlZml4ZWQgcHJvcGVydGllczogMyBpbiBhIHN0eWxlIGJsb2NrICsgMSBpbmxpbmUgc3R5bGUg
IiIiCisKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGh0bWw+Cis8aGVhZD4KKzxsaW5rIGhyZWY9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQv
Y3NzIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisKKyNibG9jazEgeyBAdGVzdDBAOiBwcm9wdmFsdWU7
IH0KKyNibG9jazIgeyBAdGVzdDFAOiBwcm9wdmFsdWU7IH0KKyNibG9jazMgeyBAdGVzdDJAOiBw
cm9wdmFsdWU7IH0KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZWxlbTEi
IHN0eWxlPSJAdGVzdDNAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKyIi
IgorICAgICAgICBjb252ZXJ0ZXIgPSBXM0NUZXN0Q29udmVydGVyKCkKKyAgICAgICAgZmFrZV9k
aXJfcGF0aCA9IHNlbGYuZmFrZV9kaXJfcGF0aChjb252ZXJ0ZXIsICdoYXJuZXNzYW5kcHJvcHMn
KQorCisgICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0
cHV0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5l
cmF0ZV90ZXN0X2NvbnRlbnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDIsIHRlc3Rf
aHRtbCkKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5jb252ZXJ0X2h0bWwoZmFr
ZV9kaXJfcGF0aCwgdGVzdF9jb250ZW50WzFdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgb2MucmVzdG9yZV9vdXRwdXQoKQorCisgICAgICAgIHNlbGYudmVyaWZ5X2NvbnZlcnNpb25f
aGFwcGVuZWQoY29udmVydGVkKQorICAgICAgICBzZWxmLnZlcmlmeV90ZXN0X2hhcm5lc3NfcGF0
aHMoY29udmVydGVyLCBjb252ZXJ0ZWRbMV0sIGZha2VfZGlyX3BhdGgsIDEsIDEpCisgICAgICAg
IHNlbGYudmVyaWZ5X3ByZWZpeGVkX3Byb3BlcnRpZXMoY29udmVydGVkLCB0ZXN0X2NvbnRlbnRb
MF0pCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0X3Rlc3RfaGFybmVzc19wYXRocyhzZWxmKToKKyAg
ICAgICAgIiIiIFRlc3RzIGNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMoKSB3aXRoIGEgdGVzdCB0
aGF0IHVzZXMgYWxsIHRocmVlIHRlc3RoYXJuZXNzIGZpbGVzICIiIgorCisgICAgICAgIHRlc3Rf
aHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgaHJlZj0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3Mi
IHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorIiIiCisgICAgICAgIGNvbnZl
cnRlciA9IFczQ1Rlc3RDb252ZXJ0ZXIoKQorCisgICAgICAgIGZha2VfZGlyX3BhdGggPSBzZWxm
LmZha2VfZGlyX3BhdGgoY29udmVydGVyLCAndGVzdGhhcm5lc3NwYXRocycpCisKKyAgICAgICAg
ZG9jID0gQmVhdXRpZnVsU291cCh0ZXN0X2h0bWwpCisgICAgICAgIG9jID0gT3V0cHV0Q2FwdHVy
ZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfdGVzdGhhcm5lc3NfcGF0aHMoZG9jLCBm
YWtlX2Rpcl9wYXRoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb2MucmVzdG9yZV9v
dXRwdXQoKQorCisgICAgICAgIHNlbGYudmVyaWZ5X2NvbnZlcnNpb25faGFwcGVuZWQoY29udmVy
dGVkKQorICAgICAgICBzZWxmLnZlcmlmeV90ZXN0X2hhcm5lc3NfcGF0aHMoY29udmVydGVyLCBk
b2MsIGZha2VfZGlyX3BhdGgsIDIsIDEpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0X3ByZWZpeGVk
X3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0X3ByZWZpeGVkX3By
b3BlcnRpZXMoKSBmaWxlIHRoYXQgaGFzIDIwIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Vi
a2l0LSBwcmVmaXg6CisgICAgICAgIDEwIGluIG9uZSBzdHlsZSBibG9jayArIDUgaW4gYW5vdGhl
ciBzdHlsZQorICAgICAgICBibG9jayArIDUgaW5saW5lIHN0eWxlcywgaW5jbHVkaW5nIG9uZSB3
aXRoIG11bHRpcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuCisgICAgICAgIFRoZSBwcm9wZXJ0aWVz
IGluIHRoZSB0ZXN0IGNvbnRlbnQgYXJlIGluIGFsbCBzb3J0cyBvZiB3YWNrIGZvcm1hdHRpbmcu
CisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMSB7CisgICAgd2lkdGg6IDMwMHB4Owor
ICAgIGhlaWdodDogMzAwcHgKK30KKworLmJsb2NrMiB7CisgICAgQHRlc3QwQDogcHJvcHZhbHVl
OworfQorCisuYmxvY2sze0B0ZXN0MUA6IHByb3B2YWx1ZTt9CisKKy5ibG9jazQgeyBAdGVzdDJA
OnByb3B2YWx1ZTsgfQorCisuYmxvY2s1eyBAdGVzdDNAIDpwcm9wdmFsdWU7IH0KKworI2Jsb2Nr
NiB7ICAgIEB0ZXN0NEAgICA6ICAgcHJvcHZhbHVlOyAgfQorCisjYmxvY2s3Cit7CisgICAgQHRl
c3Q1QDogcHJvcHZhbHVlOworfQorCisjYmxvY2s4IHsgQHRlc3Q2QDogcHJvcHZhbHVlOyB9CisK
KyNibG9jazk6cHNldWRvCit7CisKKyAgICBAdGVzdDdAOiBwcm9wdmFsdWU7CisgICAgQHRlc3Q4
QDogIHByb3B2YWx1ZSBwcm9wdmFsdWUgcHJvcHZhbHVlOzsKK30KKworXV0+PC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRlc3Q5QDogcHJvcHZh
bHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJwcm9wbmFtZTogcHJvcHZh
bHVlOyBAdGVzdDEwQCA6IHByb3B2YWx1ZTsgcHJvcG5hbWU6cHJvcHZhbHVlOyI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJAdGVzdDExQDogcHJvcHZhbHVlOyBAdGVzdDEyQCA6
IHByb3B2YWx1ZTsgQHRlc3QxM0AgICA6cHJvcHZhbHVlOyI+PC9kaXY+CisgICAgPGRpdiBpZD0i
ZWxlbTMiIHN0eWxlPSJAdGVzdDE0QDpwcm9wdmFsdWUiPjwvZGl2PgorPC9ib2R5PgorPHN0eWxl
IHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKKworLmJsb2NrMTB7IEB0ZXN0MTVAOiBwcm9wdmFs
dWU7IH0KKy5ibG9jazExeyBAdGVzdDE2QDogcHJvcHZhbHVlOyB9CisuYmxvY2sxMnsgQHRlc3Qx
N0A6IHByb3B2YWx1ZTsgfQorI2Jsb2NrMTM6cHNldWRvCit7CisgICAgQHRlc3QxOEA6IHByb3B2
YWx1ZTsKKyAgICBAdGVzdDE5QDogcHJvcHZhbHVlOworfQorCitdXT48L3N0eWxlPgorPC9odG1s
PgorIiIiCisgICAgICAgIGNvbnZlcnRlciA9IFczQ1Rlc3RDb252ZXJ0ZXIoKQorCisgICAgICAg
IHRlc3RfY29udGVudCA9IHNlbGYuZ2VuZXJhdGVfdGVzdF9jb250ZW50KGNvbnZlcnRlci5wcmVm
aXhlZF9wcm9wZXJ0aWVzLCAyMCwgdGVzdF9odG1sKQorCisgICAgICAgIG9jID0gT3V0cHV0Q2Fw
dHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgY29udmVydGVkID0gY29udmVydGVyLmNvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyhC
ZWF1dGlmdWxTb3VwKHRlc3RfY29udGVudFsxXSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAg
ICAgICBvYy5yZXN0b3JlX291dHB1dCgpCisKKyAgICAgICAgc2VsZi52ZXJpZnlfY29udmVyc2lv
bl9oYXBwZW5lZChjb252ZXJ0ZWQpCisgICAgICAgIHNlbGYudmVyaWZ5X3ByZWZpeGVkX3Byb3Bl
cnRpZXMoY29udmVydGVkLCB0ZXN0X2NvbnRlbnRbMF0pCisKKyAgICBkZWYgdmVyaWZ5X2NvbnZl
cnNpb25faGFwcGVuZWQoc2VsZiwgY29udmVydGVkKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGNvbnZlcnRlZCwgImNvbnZlcnNpb24gZGlkbid0IGhhcHBlbiIpCisKKyAgICBkZWYgdmVyaWZ5
X25vX2NvbnZlcnNpb25faGFwcGVuZWQoc2VsZiwgY29udmVydGVkKToKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb252ZXJ0ZWQsIE5vbmUsICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNv
bnZlcnRlZCcpCisKKyAgICBkZWYgdmVyaWZ5X3Rlc3RfaGFybmVzc19wYXRocyhzZWxmLCBjb252
ZXJ0ZXIsIGNvbnZlcnRlZCwgdGVzdF9wYXRoLCBudW1fc3JjX3BhdGhzLCBudW1faHJlZl9wYXRo
cyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoY29udmVydGVkLCBiYXNlc3RyaW5nKToKKyAgICAg
ICAgICAgIGNvbnZlcnRlZCA9IEJlYXV0aWZ1bFNvdXAoY29udmVydGVkKQorCisgICAgICAgIHJl
c291cmNlc19kaXIgPSBjb252ZXJ0ZXIucGF0aF9mcm9tX3dlYmtpdF9yb290KCJMYXlvdXRUZXN0
cyIsICJyZXNvdXJjZXMiKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBvcmlnaW5hbCBwYXRocyBh
cmUgZ29uZSwgYW5kIHRoZSBuZXcgcGF0aHMgYXJlIHByZXNlbnQuCisgICAgICAgIG9yaWdfcGF0
aF9wYXR0ZXJuID0gcmUuY29tcGlsZSgnXCIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGNvbnZlcnRlZC5maW5kQWxsKHNyYz1vcmlnX3BhdGhf
cGF0dGVybikpLCAwLCAndGVzdGhhcm5lc3Mgc3JjIHBhdGggd2FzIG5vdCBjb252ZXJ0ZWQnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oY29udmVydGVkLmZpbmRBbGwoaHJlZj1vcmln
X3BhdGhfcGF0dGVybikpLCAwLCAndGVzdGhhcm5lc3MgaHJlZiBwYXRoIHdhcyBub3QgY29udmVy
dGVkJykKKworICAgICAgICBuZXdfcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aChyZXNvdXJjZXNf
ZGlyLCB0ZXN0X3BhdGgpCisgICAgICAgIHJlbHBhdGhfcGF0dGVybiA9IHJlLmNvbXBpbGUobmV3
X3JlbHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbihjb252ZXJ0ZWQuZmluZEFs
bChzcmM9cmVscGF0aF9wYXR0ZXJuKSksIG51bV9zcmNfcGF0aHMsICd0ZXN0aGFybmVzcyBzcmMg
cmVsYXRpdmUgcGF0aCBub3QgY29ycmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxl
bihjb252ZXJ0ZWQuZmluZEFsbChocmVmPXJlbHBhdGhfcGF0dGVybikpLCBudW1faHJlZl9wYXRo
cywgJ3Rlc3RoYXJuZXNzIGhyZWYgcmVsYXRpdmUgcGF0aCBub3QgY29ycmVjdCcpCisKKyAgICBk
ZWYgdmVyaWZ5X3ByZWZpeGVkX3Byb3BlcnRpZXMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3Byb3Bl
cnRpZXMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb252ZXJ0ZWRbMF0pLCBsZW4o
dGVzdF9wcm9wZXJ0aWVzKSwgJ0luY29ycmVjdCBudW1iZXIgb2YgcHJvcGVydGllcyBjb252ZXJ0
ZWQnKQorICAgICAgICBmb3IgdGVzdF9wcm9wIGluIHRlc3RfcHJvcGVydGllczoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgodGVzdF9wcm9wIGluIGNvbnZlcnRlZFsxXSksICdQcm9wZXJ0
eSAnICsgdGVzdF9wcm9wICsgJyBub3QgZm91bmQgaW4gY29udmVydGVkIGRvYycpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfdGVzdF9jb250ZW50KHNlbGYsIGZ1bGxfcHJvcGVydHlfbGlzdCwgbnVtX3Rl
c3RfcHJvcGVydGllcywgaHRtbCk6CisgICAgICAgICIiIkluc2VydHMgcHJvcGVydGllcyByZXF1
aXJpbmcgYSAtd2Via2l0LSBwcmVmaXggaW50byB0aGUgY29udGVudCwgcmVwbGFjaW5nIFwnQHRl
c3RYWEBcJyB3aXRoIGEgcHJvcGVydHkuIiIiCisgICAgICAgIHRlc3RfcHJvcGVydGllcyA9IFtd
CisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSBjb3VudCA8IG51bV90ZXN0X3Byb3Bl
cnRpZXM6CisgICAgICAgICAgICB0ZXN0X3Byb3BlcnRpZXMuYXBwZW5kKGZ1bGxfcHJvcGVydHlf
bGlzdFtjb3VudF0pCisgICAgICAgICAgICBjb3VudCArPSAxCisKKyAgICAgICAgIyBSZXBsYWNl
IHRoZSB0b2tlbnMgaW4gdGhlIHRlc3RodG1sIHdpdGggdGhlIHRlc3QgcHJvcGVydGllcy4gV2Fs
ayBiYWNrd2FyZAorICAgICAgICAjIHRocm91Z2ggdGhlIGxpc3QgdG8gcmVwbGFjZSB0aGUgZG91
YmxlLWRpZ2l0IHRva2VucyBmaXJzdAorICAgICAgICBpbmRleCA9IGxlbih0ZXN0X3Byb3BlcnRp
ZXMpIC0gMQorICAgICAgICB3aGlsZSBpbmRleCA+PSAwOgorICAgICAgICAgICAgIyBVc2UgdGhl
IHVucHJlZml4ZWQgdmVyc2lvbgorICAgICAgICAgICAgdGVzdF9wcm9wID0gdGVzdF9wcm9wZXJ0
aWVzW2luZGV4XS5yZXBsYWNlKCctd2Via2l0LScsICcnKQorICAgICAgICAgICAgIyBSZXBsYWNl
IHRoZSB0b2tlbgorICAgICAgICAgICAgaHRtbCA9IGh0bWwucmVwbGFjZSgnQHRlc3QnICsgc3Ry
KGluZGV4KSArICdAJywgdGVzdF9wcm9wKQorICAgICAgICAgICAgaW5kZXggLT0gMQorCisgICAg
ICAgIHJldHVybiAodGVzdF9wcm9wZXJ0aWVzLCBodG1sKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJjMTZlMTBmY2U3YzQ3OTZlNjU1
NmU0YTFmNzU0M2EyNzNhM2IyOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTAsMCArMSw0MzYgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlCisjICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyMgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCisjICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFN
QUdFLgorCisiIiIKKyBUaGlzIHNjcmlwdCBpbXBvcnRzIGEgZGlyZWN0b3J5IG9mIFczQyBDU1Mg
dGVzdHMgaW50byBXZWJLaXQuCisKKyBZb3UgbXVzdCBoYXZlIGNoZWNrZWQgb3V0IHRoZSBXM0Mg
cmVwb3NpdG9yeSB0byB5b3VyIGxvY2FsIGRyaXZlLgorCisgVGhpcyBzY3JpcHQgd2lsbCBpbXBv
cnQgdGhlIHRlc3RzIGludG8gV2ViS2l0IGZvbGxvd2luZyB0aGVzZSBydWxlczoKKworICAgIC0g
T25seSB0ZXN0cyB0aGF0IGFyZSBhcHByb3ZlZCBvciBvZmZpY2lhbGx5IHN1Ym1pdHRlZCBhd2Fp
dGluZyByZXZpZXcgYXJlIGltcG9ydGVkCisKKyAgICAtIEFsbCB0ZXN0cyBhcmUgaW1wb3J0ZWQg
aW50byBMYXlvdXRUZXN0cy9jc3N3ZworCisgICAgLSBJZiB0aGUgdGVzdHMgYXJlIGFwcHJvdmVk
LCB0aGV5J2xsIGJlIGltcG9ydGVkIGludG8gYSBkaXJlY3RvcnkgdHJlZSB0aGF0CisgICAgICBt
aXJyb3JzIHRoZSBDU1MgTWVyY3VyaWFsIHJlcG8uIEZvciBleGFtcGxlLCA8Y3Nzd2dfcmVwb19y
b290Pi9hcHByb3ZlZC9jc3MyLjEgaXMgYnJvdWdodCBpbgorICAgICAgYXMgTGF5b3V0VGVzdHMv
Y3Nzd2cvYXBwcm92ZWQvY3NzMi4xLCBtYWludGFpbmluZyB0aGUgZW50aXJlIGRpcmVjdG9yeSBz
dHJ1Y3R1cmUgdW5kZXIgdGhhdAorCisgICAgLSBJZiB0aGUgdGVzdHMgYXJlIHN1Ym1pdHRlZCwg
dGhleSdsbCBiZSBicm91Z2h0IGluIGFzIExheW91dFRlc3RzL2Nzc3dnL3N1Ym1pdHRlZCBhbmQg
d2lsbCBhbHNvCisgICAgICBtYWludGFpbiB0aGVpciBkaXJlY3Rvcnkgc3RydWN0dXJlIHVuZGVy
IHRoYXQuIEZvciBleGFtcGxlLCBldmVyeXRoaW5nIHVuZGVyCisgICAgICA8Y3Nzd2dfcmVwb19y
b290Pi9jb250cmlidXRvcnMvYWRvYmUvc3VibWl0dGVkIGlzIGJyb3VnaHQgaW50byBzdWJtaXR0
ZWQsIG1pcnJvcmluZyBpdHMKKyAgICAgIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhlIGNzc3dn
IHJlcG8KKworICAgIC0gSWYgdGhlIGltcG9ydCBkaXJlY3Rvcnkgc3BlY2lmaWVkIGlzIGp1c3Qg
YSBjb250cmlidXRvciBmb2xkZXIsIG9ubHkgdGhlIHN1Ym1pdHRlZCBmb2xkZXIKKyAgICAgIGZv
ciB0aGF0IGNvbnRyaWJ1dG9yIGlzIGJyb3VnaHQgaW4uIEZvciBleGFtcGxlLCB0byBpbXBvcnQg
YWxsIG9mIE1vemlsbGEncyB0ZXN0cywgZWl0aGVyCisgICAgICA8Y3Nzd2dfcmVwb19yb290Pi9j
b250cmlidXRvcnMvbW96aWxsYSBvciA8Y3Nzd2dfcmVwb19yb290Pi9jb250cmlidXRvcnMvbW96
aWxsYS9zdWJtaXR0ZWQKKyAgICAgIHdpbGwgd29yayBhbmQgYXJlIGVxdWl2YWxlbnQKKworICAg
IC0gRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGlzIHNjcmlwdCB3b24ndCB3b3JrIGlmIHlvdSB0cnkg
dG8gaW1wb3J0IHRoZSBmdWxsIHNldCBvZiBzdWJtaXR0ZWQKKyAgICAgIHRlc3RzIHVuZGVyIGNv
bnRyaWJ1dG9ycy8qL3N1Ym1pdHRlZC4gU2luY2UgdGhlc2UgYXJlIGF3YWl0aW5nIHJldmlldywg
dGhpcyBpcyBqdXN0IGEgc21hbGwKKyAgICAgIGNvbnRyb2wgbWVjaGFuaXNtIHRvIGVuZm9yY2Ug
Y2FyZWZ1bGx5IHNlbGVjdGluZyB3aGF0IG5vbi1hcHByb3ZlZCB0ZXN0cyBhcmUgaW1wb3J0ZWQu
CisgICAgICBJdCBjYW4gb2J2aW91c2x5IGFuZCBlYXNpbHkgYmUgY2hhbmdlZC4KKworICAgIC0g
QnkgZGVmYXVsdCwgb25seSByZWZ0ZXN0cyBhbmQganN0ZXN0IGFyZSBpbXBvcnRlZC4gVGhpcyBj
YW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEgLWEgb3IgLS1hbGwKKyAgICAgIGFyZ3VtZW50CisKKyAg
ICAtIEFsc28gYnkgZGVmYXVsdCwgaWYgdGVzdCBmaWxlcyBieSB0aGUgc2FtZSBuYW1lIGFscmVh
ZHkgZXhpc3QgaW4gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSwKKyAgICAgIHRoZXkgYXJlIG92
ZXJ3cml0dGVuIHdpdGggdGhlIGlkZWEgdGhhdCBydW5uaW5nIHRoaXMgc2NyaXB0IHdvdWxkIHJl
ZnJlc2ggZmlsZXMgcGVyaW9kaWNhbGx5LgorICAgICAgVGhpcyBjYW4gYWxzbyBiZSBvdmVycmlk
ZGVuIGJ5IGEgLW4gb3IgLS1uby1vdmVyd3JpdGUgZmxhZworCisgICAgLSBBbGwgZmlsZXMgYXJl
IGNvbnZlcnRlZCB0byB3b3JrIGluIFdlYktpdDoKKyAgICAgICAgIDEuIC54aHQgZXh0ZW5zaW9u
cyBhcmUgY2hhbmdlZCB0byAueGh0bWwgdG8gbWFrZSBuZXctcnVuLXdlYmtpdC10ZXN0cyBoYXBw
eQorICAgICAgICAgMi4gUGF0aHMgdG8gdGVzdGhhcm5lc3MuanMgZmlsZXMgYXJlIG1vZGlmaWVk
IHBvaW50IHRvIFdlYmtpdCdzIGNvcHkgb2YgdGhlbSBpbgorICAgICAgICAgICAgTGF5b3V0VGVz
dHMvcmVzb3VyY2VzLCB1c2luZyB0aGUgY29ycmVjdCByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIG5l
dyBsb2NhdGlvbgorICAgICAgICAgMy4gQWxsIENTUyBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0aGUg
LXdlYmtpdC12ZW5kb3IgcHJlZml4IGFyZSBwcmVmaXhlZCAtIHRoaXMgY3VycmVudAorICAgICAg
ICAgICAgbGlzdCBvZiB3aGF0IG5lZWRzIHByZWZpeGVzIGlzIHJlYWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9DU1MvQ1NTUHJvcGVydGllcy5pbgorICAgICAgICAgNC4gRWFjaCByZWZ0ZXN0IGhhcyBp
dHMgb3duIGNvcHkgb2YgaXRzIHJlZmVyZW5jZSBmaWxlIGZvbGxvd2luZyB0aGUgbmFtaW5nIGNv
bnZlbnRpb25zCisgICAgICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0cyBleHBlY3RzCisgICAg
ICAgICA1LiBJZiBhIGEgcmVmZXJlbmNlIGZpbGVzIGxpdmVzIG91dHNpZGUgdGhlIGRpcmVjdG9y
eSBvZiB0aGUgdGVzdCB0aGF0IHVzZXMgaXQsIGl0IGlzIGNoZWNrZWQKKyAgICAgICAgICAgIGZv
ciBwYXRocyB0byBzdXBwb3J0IGZpbGVzIGFzIGl0IHdpbGwgYmUgaW1wb3J0ZWQgaW50byBhIGRp
ZmZlcmVudCByZWxhdGl2ZSBwb3NpdGlvbiB0byB0aGUKKyAgICAgICAgICAgIHRlc3QgZmlsZSAo
aW4gdGhlIHNhbWUgZGlyZWN0b3J5KQorCisgICAgIC0gVXBvbiBjb21wbGV0aW9uLCBzY3JpcHQg
b3V0cHV0cyB0aGUgdG90YWwgbnVtYmVyIHRlc3RzIGltcG9ydGVkLCBicm9rZW4gZG93biBieSB0
ZXN0IHR5cGUKKworICAgICAtIEFsc28gdXBvbiBjb21wbGV0aW9uLCBlYWNoIGRpcmVjdG9yeSB3
aGVyZSBmaWxlcyBhcmUgaW1wb3J0ZWQgd2lsbCBoYXZlIHczYy1pbXBvcnQubG9nIHdyaXR0ZW4K
KyAgICAgICB3aXRoIGEgdGltZXN0YW1wLCB0aGUgVzNDIE1lcmN1cmlhbCBjaGFuZ2VzZXQgaWYg
YXZhaWxhYmxlLCB0aGUgbGlzdCBvZiBDU1MgcHJvcGVydGllcyB1c2VkIHRoYXQKKyAgICAgICBy
ZXF1aXJlIHByZWZpeGVzLCB0aGUgbGlzdCBvZiBpbXBvcnRlZCBmaWxlcywgYW5kIGd1aWRhbmNl
IGZvciBmdXR1cmUgdGVzdCBtb2RpZmljYXRpb24gYW5kCisgICAgICAgbWFpbnRlbmFuY2UuCisK
KyAgICAgLSBPbiBzdWJzZXF1ZW50IGltcG9ydHMsIHRoaXMgZmlsZSBpcyByZWFkIHRvIGRldGVy
bWluZSBpZiBmaWxlcyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbmV3ZXIgY2hhbmdlc2V0cy4K
KyAgICAgICBUaGUgc2NyaXB0IHJlbW92ZXMgdGhlc2UgZmlsZXMgYWNjb3JkaW5nbHkuCisiIiIK
KworIyBGSVhNRTogQ2hhbmdlIHRoaXMgZmlsZSB0byB1c2UgdGhlIEhvc3QgYWJzdHJhY3Rpb25z
IHJhdGhlciB0aGF0IG9zLCBzeXMsIHNodXRpbHMsIGV0Yy4KKworaW1wb3J0IGRhdGV0aW1lCitp
bXBvcnQgbWltZXR5cGVzCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHNodXRp
bAoraW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Citm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgor
ZnJvbSB3ZWJraXRweS53M2MudGVzdF9wYXJzZXIgaW1wb3J0IFRlc3RQYXJzZXIKK2Zyb20gd2Vi
a2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBXM0NUZXN0Q29udmVydGVyCisKKworVEVT
VF9TVEFUVVNfVU5LTk9XTiA9ICd1bmtub3duJworVEVTVF9TVEFUVVNfQVBQUk9WRUQgPSAnYXBw
cm92ZWQnCitURVNUX1NUQVRVU19TVUJNSVRURUQgPSAnc3VibWl0dGVkJworCitDSEFOR0VTRVRf
Tk9UX0FWQUlMQUJMRSA9ICdOb3QgQXZhaWxhYmxlJworCisKK2RlZiBtYWluKF9hcmd2LCBfc3Rk
b3V0LCBfc3RkZXJyKToKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VfYXJncygpCisgICAgaW1w
b3J0X2RpciA9IHZhbGlkYXRlX2ltcG9ydF9kaXJlY3RvcnkoYXJnc1swXSkKKyAgICB0ZXN0X2lt
cG9ydGVyID0gVGVzdEltcG9ydGVyKGltcG9ydF9kaXIsIG9wdGlvbnMpCisgICAgdGVzdF9pbXBv
cnRlci5kb19pbXBvcnQoKQorCisKK2RlZiBwYXJzZV9hcmdzKCk6CisgICAgcGFyc2VyID0gb3B0
cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIHczY190ZXN0
X2RpcmVjdG9yeScpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1uJywgJy0tbm8tb3ZlcndyaXRl
JywgZGVzdD0nb3ZlcndyaXRlJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwK
KyAgICAgICAgaGVscD0nRmxhZyB0byBwcmV2ZW50IGR1cGxpY2F0ZSB0ZXN0IGZpbGVzIGZyb20g
b3ZlcndyaXRpbmcgZXhpc3RpbmcgdGVzdHMuIEJ5IGRlZmF1bHQsIHRoZXkgd2lsbCBiZSBvdmVy
d3JpdHRlbicpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1hJywgJy0tYWxsJywgYWN0aW9uPSdz
dG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgaGVscD0nSW1wb3J0IGFsbCB0ZXN0
cyBpbmNsdWRpbmcgcmVmdGVzdHMsIEpTIHRlc3RzLCBhbmQgbWFudWFsL3BpeGVsIHRlc3RzLiBC
eSBkZWZhdWx0LCBvbmx5IHJlZnRlc3RzIGFuZCBKUyB0ZXN0cyBhcmUgaW1wb3J0ZWQnKQorCisg
ICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBsZW4oYXJncykg
IT0gMToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50
cycpCisgICAgcmV0dXJuIG9wdGlvbnMsIGFyZ3MKKworCitkZWYgdmFsaWRhdGVfaW1wb3J0X2Rp
cmVjdG9yeShpbXBvcnRfZGlyKToKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoaW1wb3J0X2Rp
cik6CisgICAgICAgIHN5cy5leGl0KCdTb3VyY2UgZGlyZWN0b3J5ICVzIG5vdCBmb3VuZCEnICUg
aW1wb3J0X2RpcikKKworICAgICMgTWFrZSBzdXJlIHRoZSB0ZXN0cyBhcmUgb2ZmaWNpYWxseSBz
dWJtaXR0ZWQgdG8gdGhlIFczQywgZWl0aGVyIGFwcHJvdmVkIG9yCisgICAgIyBzdWJtaXR0ZWQg
Zm9sbG93aW5nIHRoZWlyIGRpcmVjdG9yeSBuYW1pbmcgY29udmVudGlvbnMKKyAgICBpZiBpbXBv
cnRfZGlyLmZpbmQoJ2FwcHJvdmVkJykgPT0gLTEgYW5kIGltcG9ydF9kaXIuZmluZCgnc3VibWl0
dGVkJykgPT0gLTE6CisgICAgICAgICMgSWYgbm90IHBvaW50ZWQgZGlyZWN0bHkgdG8gdGhlIGFw
cHJvdmVkIGRpcmVjdG9yeSBvciB0byBhbnkgc3VibWl0dGVkCisgICAgICAgICMgZGlyZWN0b3J5
LCBjaGVjayBmb3IgYSBzdWJtaXR0ZWQgc3ViZGlyZWN0b3J5IGFuZCBnbyB3aXRoIHRoYXQKKyAg
ICAgICAgaW1wb3J0X2RpciA9IG9zLnBhdGguam9pbihpbXBvcnRfZGlyLCAnc3VibWl0dGVkJykK
KyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihpbXBvcnRfZGlyKSk6
CisgICAgICAgICAgICBzeXMuZXhpdCgnVW5hYmxlIHRvIGltcG9ydCB0ZXN0cyB0aGF0IGFyZW5c
J3QgYXBwcm92ZWQgb3Igc3VibWl0dGVkIHRvIHRoZSBXM0MnKQorCisgICAgcmV0dXJuIGltcG9y
dF9kaXIKKworCitjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzb3VyY2VfZGlyZWN0b3J5LCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5vcHRpb25z
ID0gb3B0aW9ucworCisgICAgICAgIHNlbGYuaG9zdCA9IEhvc3QoKQorICAgICAgICBzZWxmLmZp
bGVzeXN0ZW0gPSBzZWxmLmhvc3QuZmlsZXN5c3RlbQorICAgICAgICBzZWxmLl93ZWJraXRfcm9v
dCA9IF9fZmlsZV9fLnNwbGl0KHNlbGYuZmlsZXN5c3RlbS5zZXAgKyAnVG9vbHMnKVswXQorCisg
ICAgICAgIHNlbGYuc291cmNlX2RpcmVjdG9yeSA9IHNvdXJjZV9kaXJlY3RvcnkKKyAgICAgICAg
c2VsZi5kZXN0aW5hdGlvbl9kaXJlY3RvcnkgPSBzZWxmLnBhdGhfZnJvbV93ZWJraXRfcm9vdCgi
TGF5b3V0VGVzdHMiLCAiY3Nzd2ciKQorCisgICAgICAgIHNlbGYuY2hhbmdlc2V0ID0gQ0hBTkdF
U0VUX05PVF9BVkFJTEFCTEUKKyAgICAgICAgc2VsZi50ZXN0X3N0YXR1cyA9IFRFU1RfU1RBVFVT
X1VOS05PV04KKworICAgICAgICBzZWxmLmltcG9ydF9saXN0ID0gW10KKworICAgIGRlZiBwYXRo
X2Zyb21fd2Via2l0X3Jvb3Qoc2VsZiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZmls
ZXN5c3RlbS5hYnNwYXRoKHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9yb290LCAq
Y29tcHMpKQorCisgICAgZGVmIGRvX2ltcG9ydChzZWxmKToKKyAgICAgICAgc2VsZi5maW5kX2lt
cG9ydGFibGVfdGVzdHMoc2VsZi5zb3VyY2VfZGlyZWN0b3J5KQorICAgICAgICBzZWxmLmxvYWRf
Y2hhbmdlc2V0KCkKKyAgICAgICAgc2VsZi5pbXBvcnRfdGVzdHMoKQorCisgICAgZGVmIGxvYWRf
Y2hhbmdlc2V0KHNlbGYpOgorICAgICAgICAiIiIgUnVucyBoZyB0aXAgdG8gZ2V0IHRoZSBjdXJy
ZW50IGNoYW5nZXNldCBhbmQgcGFyc2VzIHRoZSBvdXRwdXQgdG8gZ2V0IHRoZSBjaGFuZ2VzZXQu
IElmIHRoYXQgZG9lc24ndCB3b3Jrb3V0IGZvciBzb21lIHJlYXNvbiwgaXQganVzdCBiZWNvbWVz
ICdOb3QgQXZhaWxhYmxlJyAiIiIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFRyeSB0
byBmaW5kIHRoZSBjaGFuZ2VzZXQgdXNpbmcgbWVyY3VyaWFsLCBidXQgZmFpbCBncmFjZWZ1bGx5
IGFzIHdlIGRvbid0IHdhbnQgdG8gcmVxdWlyZSBpdCB0byBiZSBpbnN0YWxsZWQuCisgICAgICAg
ICAgICBzZWxmLmNoYW5nZXNldCA9IHNlbGYuaG9zdC5leGVjdXRpdmUucnVuX2NvbW1hbmQoWydo
ZycsICd0aXAnXSkuc3BsaXQoJ2NoYW5nZXNldDonKVsxXQorICAgICAgICBleGNlcHQgU2NyaXB0
RXJyb3I6CisgICAgICAgICAgICBzZWxmLmNoYW5nZXNldCA9IENIQU5HRVNFVF9OT1RfQVZBSUxB
QkxFCisKKyAgICBkZWYgZmluZF9pbXBvcnRhYmxlX3Rlc3RzKHNlbGYsIGRpcmVjdG9yeSk6Cisg
ICAgICAgICMgRklYTUU6IHVzZSBmaWxlc3lzdGVtCisgICAgICAgIGZvciByb290LCBkaXJzLCBm
aWxlcyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6CisgICAgICAgICAgICBwcmludCAnU2Nhbm5pbmcg
JyArIHJvb3QgKyAnLi4uJworICAgICAgICAgICAgdG90YWxfdGVzdHMgPSAwCisgICAgICAgICAg
ICByZWZ0ZXN0cyA9IDAKKyAgICAgICAgICAgIGpzdGVzdHMgPSAwCisKKyAgICAgICAgICAgICMg
SWdub3JlIGFueSByZXBvIHN0dWZmCisgICAgICAgICAgICBpZiAnLmdpdCcgaW4gZGlyczoKKyAg
ICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnLmdpdCcpCisgICAgICAgICAgICBpZiAnLmhnJyBp
biBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCcuaGcnKQorCisgICAgICAgICAg
ICAjIGFyY2hpdmUgYW5kIGRhdGEgZGlycyBhcmUgaW50ZXJuYWwgY3Nzd2cgdGhpbmdzIHRoYXQg
bGl2ZSBpbiBldmVyeSBhcHByb3ZlZCBkaXJlY3RvcnkKKyAgICAgICAgICAgIGlmICdkYXRhJyBp
biBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdkYXRhJykKKyAgICAgICAgICAg
IGlmICdhcmNoaXZlJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdhcmNo
aXZlJykKKworICAgICAgICAgICAgY29weV9saXN0ID0gW10KKworICAgICAgICAgICAgZm9yIGZp
bGVuYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgYmxvY2sgc2hv
dWxkIHJlYWxseSBiZSBhIHNlcGFyYXRlIGZ1bmN0aW9uLCBidXQgdGhlIGVhcmx5LWNvbnRpbnVl
cyBtYWtlIHRoYXQgZGlmZmljdWx0LgorCisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWUuc3Rh
cnRzd2l0aCgnLicpIG9yIGZpbGVuYW1lLmVuZHN3aXRoKCcucGwnKToKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUgICMgRm9yIHNvbWUgcmVhc29uIHRoZSB3M2MgcmVwbyBjb250YWlucyBy
YW5kb20gcGVybCBzY3JpcHRzIHdlIGRvbid0IGNhcmUgYWJvdXQuCisKKyAgICAgICAgICAgICAg
ICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihyb290LCBmaWxlbmFtZSkKKworICAgICAgICAgICAg
ICAgIG1pbWV0eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZnVsbHBhdGgpCisgICAgICAgICAg
ICAgICAgaWYgbm90ICdodG1sJyBpbiBzdHIobWltZXR5cGVbMF0pIGFuZCBub3QgJ3htbCcgaW4g
c3RyKG1pbWV0eXBlWzBdKToKKyAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7
J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKKworICAgICAgICAgICAgICAgIHRlc3RfcGFyc2VyID0gVGVzdFBhcnNlcih2YXJz
KHNlbGYub3B0aW9ucyksIGZpbGVuYW1lPWZ1bGxwYXRoKQorICAgICAgICAgICAgICAgIHRlc3Rf
aW5mbyA9IHRlc3RfcGFyc2VyLmFuYWx5emVfdGVzdCgpCisgICAgICAgICAgICAgICAgaWYgdGVz
dF9pbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgICAgICBpZiAncmVmZXJlbmNlJyBpbiB0ZXN0X2luZm8ua2V5cygpOgorICAgICAgICAgICAg
ICAgICAgICByZWZ0ZXN0cyArPSAxCisgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Rlc3RzICs9
IDEKKyAgICAgICAgICAgICAgICAgICAgdGVzdF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUo
dGVzdF9pbmZvWyd0ZXN0J10pCisKKyAgICAgICAgICAgICAgICAgICAgIyBBZGQgdGhlIHJlZiBm
aWxlLCBmb2xsb3dpbmcgV2ViS2l0IHN0eWxlLgorICAgICAgICAgICAgICAgICAgICAjIEZJWE1F
OiBJZGVhbGx5IHdlJ2Qgc3VwcG9ydCByZWFkaW5nIHRoZSBtZXRhZGF0YQorICAgICAgICAgICAg
ICAgICAgICAjIGRpcmVjdGx5IHJhdGhlciB0aGFuIHJlbHlpbmcgIG9uIGEgbmFtaW5nIGNvbnZl
bnRpb24uCisgICAgICAgICAgICAgICAgICAgICMgVXNpbmcgYSBuYW1pbmcgY29udmVudGlvbiBj
cmVhdGVzIGR1cGxpY2F0ZSBjb3BpZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICMgcmVm
ZXJlbmNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICByZWZfZmlsZSA9IG9zLnBhdGguc3Bs
aXRleHQodGVzdF9iYXNlbmFtZSlbMF0gKyAnLWV4cGVjdGVkJworICAgICAgICAgICAgICAgICAg
ICByZWZfZmlsZSArPSBvcy5wYXRoLnNwbGl0ZXh0KHRlc3RfYmFzZW5hbWUpWzFdCisKKyAgICAg
ICAgICAgICAgICAgICAgY29weV9saXN0LmFwcGVuZCh7J3NyYyc6IHRlc3RfaW5mb1sncmVmZXJl
bmNlJ10sICdkZXN0JzogcmVmX2ZpbGV9KQorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3Qu
YXBwZW5kKHsnc3JjJzogdGVzdF9pbmZvWyd0ZXN0J10sICdkZXN0JzogZmlsZW5hbWV9KQorCisg
ICAgICAgICAgICAgICAgICAgICMgVXBkYXRlIGFueSBzdXBwb3J0IGZpbGVzIHRoYXQgbmVlZCB0
byBtb3ZlIGFzIHdlbGwgdG8gcmVtYWluIHJlbGF0aXZlIHRvIHRoZSAtZXhwZWN0ZWQgZmlsZS4K
KyAgICAgICAgICAgICAgICAgICAgaWYgJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCk6
CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc3VwcG9ydF9maWxlIGluIHRlc3RfaW5mb1sn
cmVmc3VwcG9ydCddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0g
b3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddKSwgc3Vw
cG9ydF9maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9maWxlID0gb3Mu
cGF0aC5ub3JtcGF0aChzb3VyY2VfZmlsZSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgS2VlcCB0aGUgZGVzdCBhcyBpdCB3YXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b19jb3B5ID0geydzcmMnOiBzb3VyY2VfZmlsZSwgJ2Rlc3QnOiBzdXBwb3J0X2ZpbGV9CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9ubHkgYWRkIGl0IG9uY2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBub3QodG9fY29weSBpbiBjb3B5X2xpc3QpOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHRvX2NvcHkpCisgICAgICAg
ICAgICAgICAgZWxpZiAnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgorICAgICAgICAgICAg
ICAgICAgICBqc3Rlc3RzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgdG90YWxfdGVzdHMgKz0g
MQorICAgICAgICAgICAgICAgICAgICBjb3B5X2xpc3QuYXBwZW5kKHsnc3JjJzogZnVsbHBhdGgs
ICdkZXN0JzogZmlsZW5hbWV9KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgIHRvdGFsX3Rlc3RzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgY29weV9saXN0LmFw
cGVuZCh7J3NyYyc6IGZ1bGxwYXRoLCAnZGVzdCc6IGZpbGVuYW1lfSkKKworICAgICAgICAgICAg
aWYgbm90IHRvdGFsX3Rlc3RzOgorICAgICAgICAgICAgICAgICMgV2UgY2FuIHNraXAgdGhlIHN1
cHBvcnQgZGlyZWN0b3J5IGlmIG5vIHRlc3RzIHdlcmUgZm91bmQuCisgICAgICAgICAgICAgICAg
aWYgJ3N1cHBvcnQnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdz
dXBwb3J0JykKKworICAgICAgICAgICAgICAgIGlmIGNvcHlfbGlzdDoKKyAgICAgICAgICAgICAg
ICAgICAgIyBPbmx5IGFkZCB0aGlzIGRpcmVjdG9yeSB0byB0aGUgbGlzdCBpZiB0aGVyZSdzIHNv
bWV0aGluZyB0byBpbXBvcnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfbGlzdC5h
cHBlbmQoeydkaXJuYW1lJzogcm9vdCwgJ2NvcHlfbGlzdCc6IGNvcHlfbGlzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICdyZWZ0ZXN0cyc6IHJlZnRlc3RzLCAnanN0ZXN0cyc6IGpzdGVzdHMs
ICd0b3RhbF90ZXN0cyc6IHRvdGFsX3Rlc3RzfSkKKworICAgIGRlZiBpbXBvcnRfdGVzdHMoc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYuaW1wb3J0X2xpc3Q6CisgICAgICAgICAgICBzZWxmLnNldHVw
X2Rlc3RpbmF0aW9uX2RpcmVjdG9yeSgpCisKKyAgICAgICAgY29udmVydGVyID0gVzNDVGVzdENv
bnZlcnRlcigpCisgICAgICAgIHRvdGFsX2ltcG9ydGVkX3Rlc3RzID0gMAorICAgICAgICB0b3Rh
bF9pbXBvcnRlZF9yZWZ0ZXN0cyA9IDAKKyAgICAgICAgdG90YWxfaW1wb3J0ZWRfanN0ZXN0cyA9
IDAKKworICAgICAgICBmb3IgZGlyX3RvX2NvcHkgaW4gc2VsZi5pbXBvcnRfbGlzdDoKKworICAg
ICAgICAgICAgdG90YWxfaW1wb3J0ZWRfdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ3RvdGFsX3Rlc3Rz
J10KKyAgICAgICAgICAgIHRvdGFsX2ltcG9ydGVkX3JlZnRlc3RzICs9IGRpcl90b19jb3B5Wydy
ZWZ0ZXN0cyddCisgICAgICAgICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzICs9IGRpcl90b19j
b3B5Wydqc3Rlc3RzJ10KKworICAgICAgICAgICAgcHJlZml4ZWRfcHJvcGVydGllcyA9IFtdCisK
KyAgICAgICAgICAgIGlmIG5vdCBkaXJfdG9fY29weVsnY29weV9saXN0J106CisgICAgICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBCdWlsZCB0aGUgc3VicGF0aCBzdGFydGlu
ZyB3aXRoIHRoZSBhcHByb3ZlZC9zdWJtaXR0ZWQgZGlyZWN0b3J5CisgICAgICAgICAgICBvcmln
X3BhdGggPSBkaXJfdG9fY29weVsnZGlybmFtZSddCisgICAgICAgICAgICBzdGFydCA9IG9yaWdf
cGF0aC5maW5kKHNlbGYudGVzdF9zdGF0dXMpCisgICAgICAgICAgICBuZXdfc3VicGF0aCA9IG9y
aWdfcGF0aFtzdGFydDpsZW4ob3JpZ19wYXRoKV0KKworICAgICAgICAgICAgIyBBcHBlbmQgdGhl
IG5ldyBzdWJwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbl9kaXJlY3RvcnkKKyAgICAgICAgICAgIG5l
d19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5LCBuZXdfc3Vi
cGF0aCkKKworICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIHN1YmRpcmVjdG9y
aWVzIGlmIG5vdCB0aGVyZQorICAgICAgICAgICAgaWYgbm90KG9zLnBhdGguZXhpc3RzKG5ld19w
YXRoKSk6CisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMobmV3X3BhdGgpCisKKyAgICAgICAg
ICAgIGNvcGllZF9maWxlcyA9IFtdCisKKyAgICAgICAgICAgIGZvciBmaWxlX3RvX2NvcHkgaW4g
ZGlyX3RvX2NvcHlbJ2NvcHlfbGlzdCddOgorICAgICAgICAgICAgICAgICMgRklYTUU6IFNwbGl0
IHRoaXMgYmxvY2sgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIG9y
aWdfZmlsZXBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGZpbGVfdG9fY29weVsnc3JjJ10pCisKKyAg
ICAgICAgICAgICAgICBhc3NlcnQobm90IG9zLnBhdGguaXNkaXIob3JpZ19maWxlcGF0aCkpCisK
KyAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3JpZ19maWxlcGF0aCkpOgor
ICAgICAgICAgICAgICAgICAgICBwcmludCAnV2FybmluZzogJyArIG9yaWdfZmlsZXBhdGggKyAn
IG5vdCBmb3VuZC4gUG9zc2libGUgZXJyb3IgaW4gdGhlIHRlc3QuJworICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgbmV3X2ZpbGVwYXRoID0gb3MucGF0aC5q
b2luKG5ld19wYXRoLCBmaWxlX3RvX2NvcHlbJ2Rlc3QnXSkKKworICAgICAgICAgICAgICAgICMg
RklYTUU6IHdlIHNob3VsZCBqdXN0IHN1cHBvcnQgJy54aHQnIGRpcmVjdGx5LgorICAgICAgICAg
ICAgICAgIG5ld19maWxlcGF0aCA9IG5ld19maWxlcGF0aC5yZXBsYWNlKCcueGh0JywgJy54aHRt
bCcpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qob3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJu
YW1lKG5ld19maWxlcGF0aCkpKToKKyAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMob3Mu
cGF0aC5kaXJuYW1lKG5ld19maWxlcGF0aCkpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5vcHRpb25zLm92ZXJ3cml0ZSBhbmQgb3MucGF0aC5leGlzdHMobmV3X2ZpbGVwYXRoKToKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnQgJ1NraXBwaW5nIGltcG9ydCBvZiBleGlzdGluZyBmaWxl
ICcgKyBuZXdfZmlsZXBhdGgKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICAjIEZJWE1FOiBNYXliZSBkb2luZyBhIGZpbGUgZGlmZiBpcyBpbiBvcmRlciBoZXJlIGZv
ciBleGlzdGluZyBmaWxlcz8KKyAgICAgICAgICAgICAgICAgICAgIyBJbiBvdGhlciB3b3Jkcywg
dGhlcmUncyBubyBzZW5zZSBpbiBvdmVyd3JpdGluZyBpZGVudGljYWwgZmlsZXMsIGJ1dAorICAg
ICAgICAgICAgICAgICAgICAjIHRoZXJlJ3Mgbm8gaGFybSBpbiBjb3B5aW5nIHRoZSBpZGVudGlj
YWwgdGhpbmcuCisgICAgICAgICAgICAgICAgICAgIHByaW50ICdJbXBvcnRpbmc6Jywgb3JpZ19m
aWxlcGF0aAorICAgICAgICAgICAgICAgICAgICBwcmludCAnICAgICAgIEFzOicsIG5ld19maWxl
cGF0aAorCisgICAgICAgICAgICAgICAgIyBPbmx5IGh0bWwsIHhtbCwgb3IgY3NzIHNob3VsZCBi
ZSBjb252ZXJ0ZWQKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBFdmVudHVhbGx5LCBzbyBzaG91
bGQganMgd2hlbiBzdXBwb3J0IGlzIGFkZGVkIGZvciB0aGlzIHR5cGUgb2YgY29udmVyc2lvbgor
ICAgICAgICAgICAgICAgIG1pbWV0eXBlID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUob3JpZ19maWxl
cGF0aCkKKyAgICAgICAgICAgICAgICBpZiAnaHRtbCcgaW4gc3RyKG1pbWV0eXBlWzBdKSBvciAn
eG1sJyBpbiBzdHIobWltZXR5cGVbMF0pICBvciAnY3NzJyBpbiBzdHIobWltZXR5cGVbMF0pOgor
CisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZF9maWxlID0gY29udmVydGVyLmNvbnZlcnRf
Zm9yX3dlYmtpdChuZXdfcGF0aCwgZmlsZW5hbWU9b3JpZ19maWxlcGF0aCkKKworICAgICAgICAg
ICAgICAgICAgICBpZiBub3QgY29udmVydGVkX2ZpbGU6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKSAgIyBUaGUgZmls
ZSB3YXMgdW5tb2RpZmllZC4KKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHByZWZpeGVkX3Byb3BlcnRpZXMuZXh0ZW5kKHNldChjb252ZXJ0ZWRfZmls
ZVswXSkgLSBzZXQocHJlZml4ZWRfcHJvcGVydGllcykpCisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRmaWxlID0gb3BlbihuZXdfZmlsZXBhdGgsICd3JykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG91dGZpbGUud3JpdGUoY29udmVydGVkX2ZpbGVbMV0pCisgICAgICAgICAgICAgICAgICAg
ICAgICBvdXRmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICBzaHV0aWwuY29weWZpbGUob3JpZ19maWxlcGF0aCwgbmV3X2ZpbGVwYXRoKQorCisg
ICAgICAgICAgICAgICAgY29waWVkX2ZpbGVzLmFwcGVuZChuZXdfZmlsZXBhdGgucmVwbGFjZShz
ZWxmLl93ZWJraXRfcm9vdCwgJycpKQorCisgICAgICAgICAgICBzZWxmLnJlbW92ZV9kZWxldGVk
X2ZpbGVzKG5ld19wYXRoLCBjb3BpZWRfZmlsZXMpCisgICAgICAgICAgICBzZWxmLndyaXRlX2lt
cG9ydF9sb2cobmV3X3BhdGgsIGNvcGllZF9maWxlcywgcHJlZml4ZWRfcHJvcGVydGllcykKKwor
ICAgICAgICBwcmludCAnSW1wb3J0IGNvbXBsZXRlJworCisgICAgICAgIHByaW50ICdJTVBPUlRF
RCAnICsgc3RyKHRvdGFsX2ltcG9ydGVkX3Rlc3RzKSArICcgVE9UQUwgVEVTVFMnCisgICAgICAg
IHByaW50ICdJbXBvcnRlZCAnICsgc3RyKHRvdGFsX2ltcG9ydGVkX3JlZnRlc3RzKSArICcgcmVm
dGVzdHMnCisgICAgICAgIHByaW50ICdJbXBvcnRlZCAnICsgc3RyKHRvdGFsX2ltcG9ydGVkX2pz
dGVzdHMpICsgJyBKUyB0ZXN0cycKKyAgICAgICAgcHJpbnQgJ0ltcG9ydGVkICcgKyBzdHIodG90
YWxfaW1wb3J0ZWRfdGVzdHMgLSB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzIC0gdG90YWxfaW1wb3J0
ZWRfcmVmdGVzdHMpICsgJyBwaXhlbC9tYW51YWwgdGVzdHMnCisKKyAgICBkZWYgc2V0dXBfZGVz
dGluYXRpb25fZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICAiIiIgQ3JlYXRlcyBhIGRlc3RpbmF0
aW9uIGRpcmVjdG9yeSB0aGF0IG1pcnJvcnMgdGhhdCBvZiB0aGUgc291cmNlIGFwcHJvdmVkIG9y
IHN1Ym1pdHRlZCBkaXJlY3RvcnkgIiIiCisKKyAgICAgICAgc2VsZi51cGRhdGVfdGVzdF9zdGF0
dXMoKQorCisgICAgICAgIHN0YXJ0ID0gc2VsZi5zb3VyY2VfZGlyZWN0b3J5LmZpbmQoc2VsZi50
ZXN0X3N0YXR1cykKKyAgICAgICAgbmV3X3N1YnBhdGggPSBzZWxmLnNvdXJjZV9kaXJlY3Rvcnlb
c3RhcnQ6bGVuKHNlbGYuc291cmNlX2RpcmVjdG9yeSldCisKKyAgICAgICAgZGVzdGluYXRpb25f
ZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHNlbGYuZGVzdGluYXRpb25fZGlyZWN0b3J5LCBuZXdf
c3VicGF0aCkKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGVzdGluYXRpb25fZGly
ZWN0b3J5KToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcmVjdG9yeSkK
KworICAgICAgICBwcmludCAnVGVzdHMgd2lsbCBiZSBpbXBvcnRlZCBpbnRvOiAnICsgZGVzdGlu
YXRpb25fZGlyZWN0b3J5CisKKyAgICBkZWYgdXBkYXRlX3Rlc3Rfc3RhdHVzKHNlbGYpOgorICAg
ICAgICAiIiIgU2V0cyB0aGUgdGVzdCBzdGF0dXMgdG8gZWl0aGVyICdhcHByb3ZlZCcgb3IgJ3N1
Ym1pdHRlZCcgIiIiCisKKyAgICAgICAgc3RhdHVzID0gVEVTVF9TVEFUVVNfVU5LTk9XTgorCisg
ICAgICAgIGlmICdhcHByb3ZlZCcgaW4gc2VsZi5zb3VyY2VfZGlyZWN0b3J5LnNwbGl0KG9zLnBh
dGguc2VwKToKKyAgICAgICAgICAgIHN0YXR1cyA9IFRFU1RfU1RBVFVTX0FQUFJPVkVECisgICAg
ICAgIGVsaWYgJ3N1Ym1pdHRlZCcgaW4gc2VsZi5zb3VyY2VfZGlyZWN0b3J5LnNwbGl0KG9zLnBh
dGguc2VwKToKKyAgICAgICAgICAgIHN0YXR1cyA9IFRFU1RfU1RBVFVTX1NVQk1JVFRFRAorCisg
ICAgICAgIHNlbGYudGVzdF9zdGF0dXMgPSBzdGF0dXMKKworICAgIGRlZiByZW1vdmVfZGVsZXRl
ZF9maWxlcyhzZWxmLCBpbXBvcnRfZGlyZWN0b3J5LCBuZXdfZmlsZV9saXN0KToKKyAgICAgICAg
IiIiIFJlYWRzIGFuIGltcG9ydCBsb2cgaW4gfGltcG9ydF9kaXJlY3Rvcnl8LCBjb21wYXJlcyBp
dCB0byB0aGUgfG5ld19maWxlX2xpc3R8LCBhbmQgcmVtb3ZlcyBmaWxlcyBub3QgaW4gdGhlIG5l
dyBsaXN0LiIiIgorCisgICAgICAgIHByZXZpb3VzX2ZpbGVfbGlzdCA9IFtdCisKKyAgICAgICAg
aW1wb3J0X2xvZ19maWxlID0gb3MucGF0aC5qb2luKGltcG9ydF9kaXJlY3RvcnksICd3M2MtaW1w
b3J0LmxvZycpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbXBvcnRfbG9nX2ZpbGUp
OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaW1wb3J0X2xvZyA9IG9wZW4oaW1wb3J0
X2xvZ19maWxlLCAncicpCisgICAgICAgIGNvbnRlbnRzID0gaW1wb3J0X2xvZy5yZWFkbGluZXMo
KQorCisgICAgICAgIGlmICdMaXN0IG9mIGZpbGVzXG4nIGluIGNvbnRlbnRzOgorICAgICAgICAg
ICAgbGlzdF9pbmRleCA9IGNvbnRlbnRzLmluZGV4KCdMaXN0IG9mIGZpbGVzOlxuJykgKyAxCisg
ICAgICAgICAgICBwcmV2aW91c19maWxlX2xpc3QgPSBbZmlsZW5hbWUuc3RyaXAoKSBmb3IgZmls
ZW5hbWUgaW4gY29udGVudHNbbGlzdF9pbmRleDpdXQorCisgICAgICAgIGRlbGV0ZWRfZmlsZXMg
PSBzZXQocHJldmlvdXNfZmlsZV9saXN0KSAtIHNldChuZXdfZmlsZV9saXN0KQorICAgICAgICBm
b3IgZGVsZXRlZF9maWxlIGluIGRlbGV0ZWRfZmlsZXM6CisgICAgICAgICAgICBwcmludCAnRGVs
ZXRpbmcgZmlsZSByZW1vdmVkIGZyb20gdGhlIFczQyByZXBvOicgKyBkZWxldGVkX2ZpbGUKKyAg
ICAgICAgICAgIGRlbGV0ZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLl93ZWJraXRfcm9vdCwg
ZGVsZXRlZF9maWxlKQorICAgICAgICAgICAgb3MucmVtb3ZlKGRlbGV0ZWRfZmlsZSkKKworICAg
ICAgICBpbXBvcnRfbG9nLmNsb3NlKCkKKworICAgIGRlZiB3cml0ZV9pbXBvcnRfbG9nKHNlbGYs
IGltcG9ydF9kaXJlY3RvcnksIGZpbGVfbGlzdCwgcHJvcF9saXN0KToKKyAgICAgICAgIiIiIFdy
aXRlcyBhIHczYy1pbXBvcnQubG9nIGZpbGUgaW4gZWFjaCBkaXJlY3Rvcnkgd2l0aCBpbXBvcnRl
ZCBmaWxlcy4gIiIiCisKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKwor
ICAgICAgICBpbXBvcnRfbG9nID0gb3Blbihvcy5wYXRoLmpvaW4oaW1wb3J0X2RpcmVjdG9yeSwg
J3czYy1pbXBvcnQubG9nJyksICd3JykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYmtpdC4gSW5zdGVhZCwgcHVzaCBjaGFuZ2VzIHRvIHRoZSBXM0Mg
Q1NTIHJlcG86XG5cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ2h0dHA6Ly9oZy5jc3N3
Zy5vcmcvdGVzdFxuXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdUaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYmtpdCB0byByZWltcG9ydFxuXG4n
KQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdEbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGVcblxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4n
KQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdMYXN0IEltcG9ydDogJyArIG5vdy5zdHJmdGlt
ZSgnJVktJW0tJWQgJUg6JU0nKSArICdcbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1cz
QyBNZXJjdXJpYWwgY2hhbmdlc2V0OiAnICsgc2VsZi5jaGFuZ2VzZXQgKyAnXG4nKQorICAgICAg
ICBpbXBvcnRfbG9nLndyaXRlKCdUZXN0IHN0YXR1cyBhdCB0aW1lIG9mIGltcG9ydDogJyArIHNl
bGYudGVzdF9zdGF0dXMgKyAnXG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCctLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS1cbicpCisgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ1Byb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczpcbicpCisgICAgICAgIGlmIHByb3BfbGlzdDoKKyAgICAgICAg
ICAgIGZvciBwcm9wIGluIHByb3BfbGlzdDoKKyAgICAgICAgICAgICAgICBpbXBvcnRfbG9nLndy
aXRlKHByb3AgKyAnXG4nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW1wb3J0X2xvZy53
cml0ZSgnTm9uZVxuJykKKyAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
XG4nKQorICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdMaXN0IG9mIGZpbGVzOlxuJykKKyAgICAg
ICAgZm9yIGl0ZW0gaW4gZmlsZV9saXN0OgorICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZShp
dGVtICsgJ1xuJykKKworICAgICAgICBpbXBvcnRfbG9nLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMyZDcxMDMyZDNmZWRmMzRmODUzY2QzMzAyYjkzZmU5MTIzODNmNWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0
LnB5CkBAIC0wLDAgKzEsNTYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHlyaWdo
dCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgor
IyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3B0cGFyc2UK
K2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0
dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQg
T3V0cHV0Q2FwdHVyZQorZnJvbSB3ZWJraXRweS53M2MudGVzdF9pbXBvcnRlciBpbXBvcnQgVGVz
dEltcG9ydGVyCisKKworY2xhc3MgVGVzdEltcG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CisKKyAgICBkZWYgdGVzdF9pbXBvcnRfZGlyX3dpdGhfbm9fdGVzdHMoc2VsZik6CisgICAgICAg
ICIiIiBUZXN0cyBkb19pbXBvcnQoKSB3aXRoIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgbm8g
dGVzdHMgIiIiCisKKyAgICAgICAgaW1wb3J0ZXIgPSBUZXN0SW1wb3J0ZXIoTm9uZSwgb3B0cGFy
c2UuVmFsdWVzKHsib3ZlcndyaXRlIjogRmFsc2V9KSkKKyAgICAgICAgaW1wb3J0ZXIuc291cmNl
X2RpcmVjdG9yeSA9IGltcG9ydGVyLnBhdGhfZnJvbV93ZWJraXRfcm9vdCgiU291cmNlIiwgIldl
YkNvcmUiLCAiY3NzIikKKyAgICAgICAgaW1wb3J0ZXIuZGVzdGluYXRpb25fZGlyZWN0b3J5ID0g
dGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2Nzc3dnJykKKworICAgICAgICBvYyA9IE91dHB1dENh
cHR1cmUoKQorICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGltcG9ydGVyLmRvX2ltcG9ydCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICBvYy5yZXN0b3JlX291dHB1dCgpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGltcG9ydGVy
LmRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgaWdub3JlX2Vycm9ycz1UcnVlKQorCisgICAgIyBGSVhN
RTogTmVlZCBtb3JlIHRlc3RzLCBidXQgbmVlZCB0byBhZGQgYSBtb2NrIGZpbGVzeXN0ZW0gdy8g
c2FtcGxlIGRhdGEuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0
X3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJkYjI0ZGZkNjU2ZGExZGJlMTFiZWRkOGFkY2JlNDk3NDM2MzMzMTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlci5weQpA
QCAtMCwwICsxLDE0MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMgQ29weXJpZ2h0IChD
KSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyMgICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMg
ICAgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworIyAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyMgICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgQkUKKyMgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAorIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisjIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRgorIyBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCByZQorCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHku
QmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cCBhcyBQYXJzZXIKKworCitjbGFzcyBU
ZXN0UGFyc2VyKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZmls
ZW5hbWUpOgorICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuZmls
ZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLmhvc3QgPSBIb3N0KCkKKyAgICAgICAgc2Vs
Zi5maWxlc3lzdGVtID0gc2VsZi5ob3N0LmZpbGVzeXN0ZW0KKworICAgICAgICBzZWxmLnRlc3Rf
ZG9jID0gTm9uZQorICAgICAgICBzZWxmLnJlZl9kb2MgPSBOb25lCisgICAgICAgIHNlbGYubG9h
ZF9maWxlKGZpbGVuYW1lKQorCisgICAgZGVmIGxvYWRfZmlsZShzZWxmLCBmaWxlbmFtZSk6Cisg
ICAgICAgIGlmIHNlbGYuZmlsZXN5c3RlbS5leGlzdHMoZmlsZW5hbWUpOgorICAgICAgICAgICAg
c2VsZi50ZXN0X2RvYyA9IFBhcnNlcihzZWxmLmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoZmls
ZW5hbWUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50ZXN0X2RvYyA9IE5vbmUK
KyAgICAgICAgc2VsZi5yZWZfZG9jID0gTm9uZQorCisgICAgZGVmIGFuYWx5emVfdGVzdChzZWxm
LCB0ZXN0X2NvbnRlbnRzPU5vbmUsIHJlZl9jb250ZW50cz1Ob25lKToKKyAgICAgICAgIiIiIEFu
YWx5emVzIGEgZmlsZSB0byBkZXRlcm1pbmUgaWYgaXQncyBhIHRlc3QsIHdoYXQgdHlwZSBvZiB0
ZXN0LCBhbmQgd2hhdCByZWZlcmVuY2Ugb3Igc3VwcG9ydCBmaWxlcyBpdCByZXF1aXJlcy4gUmV0
dXJucyBhbGwgb2YgdGhlIHRlc3QgaW5mbyAiIiIKKworICAgICAgICB0ZXN0X2luZm8gPSBOb25l
CisKKyAgICAgICAgaWYgdGVzdF9jb250ZW50cyBpcyBOb25lIGFuZCBzZWxmLnRlc3RfZG9jIGlz
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdGVzdF9pbmZvCisKKyAgICAgICAgaWYgdGVzdF9j
b250ZW50cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYudGVzdF9kb2MgPSBQYXJzZXIo
dGVzdF9jb250ZW50cykKKworICAgICAgICBpZiByZWZfY29udGVudHMgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBzZWxmLnJlZl9kb2MgPSBQYXJzZXIocmVmX2NvbnRlbnRzKQorCisgICAgICAg
ICMgRmlyc3QgY2hlY2sgaWYgaXQncyBhIHJlZnRlc3QKKworICAgICAgICBtYXRjaGVzID0gc2Vs
Zi5yZWZlcmVuY2VfbGlua3Nfb2ZfdHlwZSgnbWF0Y2gnKSArIHNlbGYucmVmZXJlbmNlX2xpbmtz
X29mX3R5cGUoJ21pc21hdGNoJykKKyAgICAgICAgaWYgbWF0Y2hlczoKKyAgICAgICAgICAgIGlm
IGxlbihtYXRjaGVzKSA+IDE6CisgICAgICAgICAgICAgICAgcHJpbnQgJ1dhcm5pbmc6IFdlYmtp
dCBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHJlZmVyZW5jZXMuIEltcG9ydGluZyB0aGUgZmly
c3QgcmVmIGRlZmluZWQgaW4gJyArIHNlbGYuZmlsZXN5c3RlbS5iYXNlbmFtZShzZWxmLmZpbGVu
YW1lKQorCisgICAgICAgICAgICByZWZfZmlsZSA9IHNlbGYuZmlsZXN5c3RlbS5qb2luKHNlbGYu
ZmlsZXN5c3RlbS5kaXJuYW1lKHNlbGYuZmlsZW5hbWUpLCBtYXRjaGVzWzBdWydocmVmJ10pCisg
ICAgICAgICAgICBpZiBzZWxmLnJlZl9kb2MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxm
LnJlZl9kb2MgPSBzZWxmLmxvYWRfZmlsZShyZWZfZmlsZSkKKworICAgICAgICAgICAgdGVzdF9p
bmZvID0geyd0ZXN0Jzogc2VsZi5maWxlbmFtZSwgJ3JlZmVyZW5jZSc6IHJlZl9maWxlfQorCisg
ICAgICAgICAgICAjIElmIHRoZSByZWYgZmlsZSBwYXRoIGlzIHJlbGF0aXZlLCB3ZSBuZWVkIHRv
IGNoZWNrIGl0IGZvcgorICAgICAgICAgICAgIyByZWxhdGl2ZSBwYXRocyBhbHNvIGJlY2F1c2Ug
d2hlbiBpdCBsYW5kcyBpbiBXZWJLaXQsIGl0IHdpbGwgYmUKKyAgICAgICAgICAgICMgbW92ZWQg
ZG93biBpbnRvIHRoZSB0ZXN0IGRpci4KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgTm90
ZTogVGhlIHRlc3QgZmlsZXMgdGhlbXNlbHZlcyBhcmUgbm90IGNoZWNrZWQgZm9yIHN1cHBvcnQg
ZmlsZXMKKyAgICAgICAgICAgICMgb3V0c2lkZSB0aGVpciBkaXJlY3RvcmllcyBhcyB0aGUgY29u
dmVudGlvbiBpbiB0aGUgQ1NTV0cgaXMgdG8KKyAgICAgICAgICAgICMgcHV0IGFsbCBzdXBwb3J0
IGZpbGVzIGluIHRoZSBzYW1lIGRpciBvciBzdWJkaXIgYXMgdGhlIHRlc3QuCisgICAgICAgICAg
ICAjCisgICAgICAgICAgICAjIEFsbCBub24tdGVzdCBmaWxlcyBpbiB0aGUgdGVzdCdzIGRpcmVj
dG9yeSB0cmVlIGFyZSBub3JtYWxseQorICAgICAgICAgICAgIyBjb3BpZWQgYXMgcGFydCBvZiB0
aGUgaW1wb3J0IGFzIHRoZXkgYXJlIGFzc3VtZWQgdG8gYmUgcmVxdWlyZWQKKyAgICAgICAgICAg
ICMgc3VwcG9ydCBmaWxlcy4KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgKkJ1dCosIHRo
ZXJlIGlzIGV4YWN0bHkgb25lIGNhc2UgaW4gdGhlIGVudGlyZSBjc3MyLjEgc3VpdGUgd2hlcmUK
KyAgICAgICAgICAgICMgYXQgdGVzdCBkZXBlbmRzIG9uIGEgZmlsZSB0aGF0IGxpdmVzIGluIGEg
ZGlmZmVyZW50IGRpcmVjdG9yeSwKKyAgICAgICAgICAgICMgd2hpY2ggZGVwZW5kcyBvbiBhbm90
aGVyIGZpbGUgdGhhdCBsaXZlcyBvdXRzaWRlIG9mIGl0cworICAgICAgICAgICAgIyBkaXJlY3Rv
cnkuIFRoaXMgY29kZSBjb3ZlcnMgdGhhdCBjYXNlIDopCisgICAgICAgICAgICBpZiBtYXRjaGVz
WzBdWydocmVmJ10uc3RhcnRzd2l0aCgnLi4nKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0X2Zp
bGVzID0gc2VsZi5zdXBwb3J0X2ZpbGVzKHNlbGYucmVmX2RvYykKKyAgICAgICAgICAgICAgICB0
ZXN0X2luZm9bJ3JlZnN1cHBvcnQnXSA9IHN1cHBvcnRfZmlsZXMKKworICAgICAgICBlbGlmIHNl
bGYuaXNfanN0ZXN0KCk6CisgICAgICAgICAgICB0ZXN0X2luZm8gPSB7J3Rlc3QnOiBzZWxmLmZp
bGVuYW1lLCAnanN0ZXN0JzogVHJ1ZX0KKyAgICAgICAgZWxpZiBzZWxmLm9wdGlvbnNbJ2FsbCdd
IGlzIFRydWUgYW5kIG5vdCgnLXJlZicgaW4gc2VsZi5maWxlbmFtZSkgYW5kIG5vdCgncmVmZXJl
bmNlJyBpbiBzZWxmLmZpbGVuYW1lKToKKyAgICAgICAgICAgIHRlc3RfaW5mbyA9IHsndGVzdCc6
IHNlbGYuZmlsZW5hbWV9CisKKyAgICAgICAgcmV0dXJuIHRlc3RfaW5mbworCisgICAgZGVmIHJl
ZmVyZW5jZV9saW5rc19vZl90eXBlKHNlbGYsIHJlZnRlc3RfdHlwZSk6CisgICAgICAgIHJldHVy
biBzZWxmLnRlc3RfZG9jLmZpbmRBbGwocmVsPXJlZnRlc3RfdHlwZSkKKworICAgIGRlZiBpc19q
c3Rlc3Qoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgZmlsZSBhcHBlYXJz
IHRvIGJlIGEganN0ZXN0LCBieSBzZWFyY2hpbmcgZm9yIHVzYWdlIG9mIFczQy1zdHlsZSB0ZXN0
aGFybmVzcyBwYXRocy4iIiIKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi50ZXN0X2RvYy5maW5k
KHNyYz1yZS5jb21waWxlKCdbXCdcIi9dPy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MnKSkpCisKKyAg
ICBkZWYgc3VwcG9ydF9maWxlcyhzZWxmLCBkb2MpOgorICAgICAgICAiIiIgU2VhcmNoZXMgdGhl
IGZpbGUgZm9yIGFsbCBwYXRocyBzcGVjaWZpZWQgaW4gdXJsKCkncywgaHJlZiBvciBzcmMgYXR0
cmlidXRlcy4iIiIKKyAgICAgICAgc3VwcG9ydF9maWxlcyA9IFtdCisKKyAgICAgICAgaWYgZG9j
IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc3VwcG9ydF9maWxlcworCisgICAgICAgIGVs
ZW1lbnRzX3dpdGhfc3JjX2F0dHJpYnV0ZXMgPSBkb2MuZmluZEFsbChzcmM9cmUuY29tcGlsZSgn
LionKSkKKyAgICAgICAgZWxlbWVudHNfd2l0aF9ocmVmX2F0dHJpYnV0ZXMgPSBkb2MuZmluZEFs
bChocmVmPXJlLmNvbXBpbGUoJy4qJykpCisKKyAgICAgICAgdXJsX3BhdHRlcm4gPSByZS5jb21w
aWxlKCd1cmxcKC4qXCknKQorICAgICAgICB1cmxzID0gW10KKyAgICAgICAgZm9yIHVybCBpbiBk
b2MuZmluZEFsbCh0ZXh0PXVybF9wYXR0ZXJuKToKKyAgICAgICAgICAgIHVybCA9IHJlLnNlYXJj
aCh1cmxfcGF0dGVybiwgdXJsKQorICAgICAgICAgICAgdXJsID0gcmUuc3ViKCd1cmxcKFtcJ1wi
XScsICcnLCB1cmwuZ3JvdXAoMCkpCisgICAgICAgICAgICB1cmwgPSByZS5zdWIoJ1tcJ1wiXVwp
JywgJycsIHVybCkKKyAgICAgICAgICAgIHVybHMuYXBwZW5kKHVybCkKKworICAgICAgICBzcmNf
cGF0aHMgPSBbc3JjX3RhZ1snc3JjJ10gZm9yIHNyY190YWcgaW4gZWxlbWVudHNfd2l0aF9zcmNf
YXR0cmlidXRlc10KKyAgICAgICAgaHJlZl9wYXRocyA9IFtocmVmX3RhZ1snaHJlZiddIGZvciBo
cmVmX3RhZyBpbiBlbGVtZW50c193aXRoX2hyZWZfYXR0cmlidXRlc10KKworICAgICAgICBwYXRo
cyA9IHNyY19wYXRocyArIGhyZWZfcGF0aHMgKyB1cmxzCisgICAgICAgIGZvciBwYXRoIGluIHBh
dGhzOgorICAgICAgICAgICAgaWYgbm90KHBhdGguc3RhcnRzd2l0aCgnaHR0cDonKSkgYW5kIG5v
dChwYXRoLnN0YXJ0c3dpdGgoJ21haWx0bzonKSk6CisgICAgICAgICAgICAgICAgc3VwcG9ydF9m
aWxlcy5hcHBlbmQocGF0aCkKKworICAgICAgICByZXR1cm4gc3VwcG9ydF9maWxlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXJfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYjY5NzI2N2M2OGEzZDUyYjEyYTkzNjFjYWE0MTdhYTQzY2JmZjg5Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9wYXJzZXJfdW5pdHRl
c3QucHkKQEAgLTAsMCArMSwyMTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENvcHly
aWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisjICAg
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nCisjICAgIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyMgICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisjICAgIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIEJFCisjIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyMgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgorIyBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YKKyMgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2lt
cG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
Lm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0cHkudzNjLnRl
c3RfcGFyc2VyIGltcG9ydCBUZXN0UGFyc2VyCisKKworb3B0aW9ucyA9IHsnYWxsJzogRmFsc2Us
ICdub19vdmVyd3JpdGUnOiBGYWxzZX0KKworCitjbGFzcyBUZXN0UGFyc2VyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbmFseXplX3Rlc3RfcmVmdGVzdF9vbmVfbWF0
Y2goc2VsZik6CisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgcmVsPSJtYXRj
aCIgaHJlZj0iZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8L2hlYWQ+CisiIiIKKyAgICAgICAgdGVz
dF9wYXRoID0gJy9zb21lL21hZGV1cC9wYXRoLycKKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNl
cihvcHRpb25zLCB0ZXN0X3BhdGggKyAnc29tZWZpbGUuaHRtbCcpCisgICAgICAgIHRlc3RfaW5m
byA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0
ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygp
LCAnZGlkIG5vdCBmaW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdy
ZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2Ug
ZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0
YXJ0c3dpdGgodGVzdF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwg
J3RoZXJlIHNob3VsZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0JykKKworICAgIGRlZiB0
ZXN0X2FuYWx5emVfdGVzdF9yZWZ0ZXN0X211bHRpcGxlX21hdGNoZXMoc2VsZik6CisgICAgICAg
IHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iZ3JlZW4tYm94
LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJibHVlLWJveC1yZWYueGh0IiAv
PgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0ib3JhbmdlLWJveC1yZWYueGh0IiAvPgorPC9oZWFk
PgorIiIiCisgICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVf
b3V0cHV0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdF9wYXRoID0gJy9zb21lL21h
ZGV1cC9wYXRoLycKKyAgICAgICAgICAgIHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVz
dF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQorICAgICAgICAgICAgdGVzdF9pbmZvID0gcGFyc2Vy
LmFuYWx5emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKyAgICAgICAgZmluYWxseToK
KyAgICAgICAgICAgIG91dHB1dCwgXywgXyA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKKworICAgICAg
ICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ2RpZCBub3QgZmluZCBhIHRl
c3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCks
ICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Jl
ZmVyZW5jZScgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHJlZmVyZW5jZSBm
aWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RfaW5mb1sncmVmZXJlbmNlJ10uc3Rh
cnRzd2l0aCh0ZXN0X3BhdGgpLCAncmVmZXJlbmNlIHBhdGggaXMgbm90IGNvcnJlY3QnKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
dGhlcmUgc2hvdWxkIGJlIG5vIHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2pzdGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gYW5hbHl6ZWQgYXMgYSBqc3Rlc3QnKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShvdXRwdXQuc3RhcnRzd2l0aCgnV2FybmluZycpLCAnbm8gd2FybmluZyBh
Ym91dCBtdWx0aXBsZSBtYXRjaGVzJykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVfdGVzdF9yZWZ0
ZXN0X21hdGNoX2FuZF9taXNtYXRjaChzZWxmKToKKyAgICAgICAgdGVzdF9odG1sID0gIiIiPGhl
YWQ+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJncmVlbi1ib3gtcmVmLnhodCIgLz4KKzxsaW5r
IHJlbD0ibWF0Y2giIGhyZWY9ImJsdWUtYm94LXJlZi54aHQiIC8+Cis8bGluayByZWw9Im1pc21h
dGNoIiBocmVmPSJvcmFuZ2UtYm94LW5vdHJlZi54aHQiIC8+Cis8L2hlYWQ+CisiIiIKKyAgICAg
ICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8n
CisgICAgICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3RfcGF0aCArICdz
b21lZmlsZS5odG1sJykKKyAgICAgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rl
c3QodGVzdF9jb250ZW50cz10ZXN0X2h0bWwpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICBvdXRwdXQsIF8sIF8gPSBvYy5yZXN0b3JlX291dHB1dCgpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnROb3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBm
aW5kIGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGlu
IHRlc3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVz
dF9wYXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSgncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3Vs
ZCBiZSBubyByZWZzdXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKCdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3Qg
aGF2ZSBiZWVuIGFuYWx5emVkIGFzIGEganN0ZXN0JykKKworICAgICAgICB3YXJuaW5ncyA9IG91
dHB1dC5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMod2FybmluZ3MsIFsi
V2FybmluZzogV2Via2l0IGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcmVmZXJlbmNlcy4gSW1w
b3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5lZCBpbiBzb21lZmlsZS5odG1sIl0pCisKKyAgICBk
ZWYgdGVzdF9hbmFseXplX3Rlc3RfcmVmdGVzdF93aXRoX3JlZl9zdXBwb3J0X0ZpbGVzKHNlbGYp
OgorICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgdXNpbmcgYSByZWZ0ZXN0IHRoYXQg
aGFzIHJlZmVycyB0byBhIHJlZmVyZW5jZSBmaWxlIG91dHNpZGUgb2YgdGhlIHRlc3RzIGRpcmVj
dG9yeSBhbmQgdGhlIHJlZmVyZW5jZSBmaWxlIGhhcyBwYXRocyB0byBvdGhlciBzdXBwb3J0IGZp
bGVzICIiIgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9Im1hdGNoIiBocmVmPSIuLi9yZWZlcmVuY2UvZ3JlZW4tYm94LXJlZi54aHQiIC8+Cis8L2hl
YWQ+CisiIiIKKyAgICAgICAgcmVmX2h0bWwgPSAiIiI8aGVhZD4KKzxsaW5rIGhyZWY9InN1cHBv
cnQvY3NzL3JlZi1zdHlsZXNoZWV0LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgi
Li4vLi4vc3VwcG9ydC9zb21lLWltYWdlLnBuZyIpCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2PjxpbWcgc3JjPSIuLi9zdXBwb3J0L2JsYWNrOTZ4OTYucG5nIiBhbHQ9IkltYWdlIGRv
d25sb2FkIHN1cHBvcnQgbXVzdCBiZSBlbmFibGVkIiAvPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgorIiIiCisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAg
IHBhcnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwn
KQorICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9
dGVzdF9odG1sLCByZWZfY29udGVudHM9cmVmX2h0bWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRO
b3RFcXVhbCh0ZXN0X2luZm8sIE5vbmUsICdkaWQgbm90IGZpbmQgYSB0ZXN0JykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5k
IGEgdGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyZWZlcmVuY2UnIGluIHRl
c3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSByZWZlcmVuY2UgZmlsZScpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2luZm9bJ3JlZmVyZW5jZSddLnN0YXJ0c3dpdGgodGVzdF9w
YXRoKSwgJ3JlZmVyZW5jZSBwYXRoIGlzIG5vdCBjb3JyZWN0JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCdyZWZzdXBwb3J0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGhlcmUgc2hvdWxkIGJl
IHJlZnN1cHBvcnQgZmlsZXMgZm9yIHRoaXMgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGxlbih0ZXN0X2luZm9bJ3JlZnN1cHBvcnQnXSksIDMsICd0aGVyZSBzaG91bGQgYmUgMyBz
dXBwb3J0IGZpbGVzIGluIHRoaXMgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVzdCBzaG91bGQgbm90IGhhdmUgYmVl
biBhbmFseXplZCBhcyBhIGpzdGVzdCcpCisKKyAgICBkZWYgdGVzdF9hbmFseXplX2pzdGVzdChz
ZWxmKToKKyAgICAgICAgIiIiIFRlc3RzIGFuYWx5emVfdGVzdCgpIHVzaW5nIGEganN0ZXN0ICIi
IgorCisgICAgICAgIHRlc3RfaHRtbCA9ICIiIjxoZWFkPgorPGxpbmsgaHJlZj0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
IiIiCisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBh
cnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQor
ICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVz
dF9odG1sKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdF9pbmZvLCBOb25lLCAn
dGVzdF9pbmZvIGlzIE5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGluIHRl
c3RfaW5mby5rZXlzKCksICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKCdyZWZlcmVuY2UnIGluIHRlc3RfaW5mby5rZXlzKCksICdzaG9sZCBub3Qg
aGF2ZSBmb3VuZCBhIHJlZmVyZW5jZSBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgn
cmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyByZWZz
dXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2pz
dGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3Rlc3Qgc2hvdWxkIGJlIGEganN0ZXN0JykKKwor
ICAgIGRlZiB0ZXN0X2FuYWx5emVfcGl4ZWxfdGVzdF9hbGxfdHJ1ZShzZWxmKToKKyAgICAgICAg
IiIiIFRlc3RzIGFuYWx5emVfdGVzdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGlzIG5laXRoZXIgYSBy
ZWZ0ZXN0IG9yIGpzdGVzdCB3aXRoIGFsbD1GYWxzZSAiIiIKKworICAgICAgICB0ZXN0X2h0bWwg
PSAiIiI8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNU
PC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiIC8+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CitDT05URU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIi
IgorICAgICAgICAjIFNldCBvcHRpb25zIHRvICdhbGwnIHNvIHRoaXMgZ2V0cyBmb3VuZAorICAg
ICAgICBvcHRpb25zWydhbGwnXSA9IFRydWUKKworICAgICAgICB0ZXN0X3BhdGggPSAnL3NvbWUv
bWFkZXVwL3BhdGgvJworICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIHRlc3Rf
cGF0aCArICdzb21lZmlsZS5odG1sJykKKyAgICAgICAgdGVzdF9pbmZvID0gcGFyc2VyLmFuYWx5
emVfdGVzdCh0ZXN0X2NvbnRlbnRzPXRlc3RfaHRtbCkKKworICAgICAgICBzZWxmLmFzc2VydE5v
dEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ3Rlc3RfaW5mbyBpcyBOb25lJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCd0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAnZGlkIG5vdCBmaW5kIGEg
dGVzdCBmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgncmVmZXJlbmNlJyBpbiB0ZXN0
X2luZm8ua2V5cygpLCAnc2hvbGQgbm90IGhhdmUgZm91bmQgYSByZWZlcmVuY2UgZmlsZScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlzKCks
ICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAndGVz
dCBzaG91bGQgbm90IGJlIGEganN0ZXN0JykKKworICAgIGRlZiB0ZXN0X2FuYWx5emVfcGl4ZWxf
dGVzdF9hbGxfZmFsc2Uoc2VsZik6CisgICAgICAgICIiIiBUZXN0cyBhbmFseXplX3Rlc3QoKSB1
c2luZyBhIHRlc3QgdGhhdCBpcyBuZWl0aGVyIGEgcmVmdGVzdCBvciBqc3Rlc3QsIHdpdGggLWFs
bD1GYWxzZSAiIiIKKworICAgICAgICB0ZXN0X2h0bWwgPSAiIiI8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPkNTUyBUZXN0OiBERVNDUklQVElPTiBPRiBURVNUPC90aXRsZT4KKzxsaW5rIHJlbD0iYXV0
aG9yIiB0aXRsZT0iTkFNRV9PRl9BVVRIT1IiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwh
W0NEQVRBWworQ1NTIEZPUiBURVNUCitdXT48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitDT05U
RU5UIE9GIFRFU1QKKzwvYm9keT4KKzwvaHRtbD4KKyIiIgorICAgICAgICAjIFNldCBhbGwgdG8g
ZmFsc2Ugc28gdGhpcyBnZXRzIHNraXBwZWQKKyAgICAgICAgb3B0aW9uc1snYWxsJ10gPSBGYWxz
ZQorCisgICAgICAgIHRlc3RfcGF0aCA9ICcvc29tZS9tYWRldXAvcGF0aC8nCisgICAgICAgIHBh
cnNlciA9IFRlc3RQYXJzZXIob3B0aW9ucywgdGVzdF9wYXRoICsgJ3NvbWVmaWxlLmh0bWwnKQor
ICAgICAgICB0ZXN0X2luZm8gPSBwYXJzZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVz
dF9odG1sKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9pbmZvLCBOb25lLCAndGVz
dCBzaG91bGQgaGF2ZSBiZWVuIHNraXBwZWQnKQorCisgICAgZGVmIHRlc3RfYW5hbHl6ZV9ub25f
aHRtbF9maWxlKHNlbGYpOgorICAgICAgICAiIiIgVGVzdHMgYW5hbHl6ZV90ZXN0KCkgd2l0aCBh
IGZpbGUgdGhhdCBoYXMgbm8gaHRtbCIiIgorICAgICAgICAjIEZJWE1FOiB1c2UgYSBtb2NrIGZp
bGVzeXN0ZW0KKyAgICAgICAgcGFyc2VyID0gVGVzdFBhcnNlcihvcHRpb25zLCBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ3Rlc3RfcGFyc2VyLnB5JykpCisgICAgICAg
IHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHRlc3RfaW5mbywgTm9uZSwgJ25vIHRlc3RzIHNob3VsZCBoYXZlIGJlZW4gZm91bmQgaW4g
dGhpcyBmaWxlJykK
</data>

          </attachment>
      

    </bug>

</bugzilla>