<?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>55535</bug_id>
          
          <creation_ts>2011-03-01 17:21:06 -0800</creation_ts>
          <short_desc>NRWT - implement Linux Hardy 64-bit port</short_desc>
          <delta_ts>2011-03-02 17:45:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>55527</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>antonm</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>360422</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-01 17:21:06 -0800</bug_when>
    <thetext>We now have a 64-bit Hardy Linux bot running on the chromium canaries. We need to implement support for detecting which build we&apos;re running, a new baseline directory, and an updated baseline search path. 

We also need new baselines (tracked in bug 55527)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360522</commentid>
    <comment_count>1</comment_count>
      <attachid>84357</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-01 19:27:40 -0800</bug_when>
    <thetext>Created attachment 84357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360943</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-02 11:39:22 -0800</bug_when>
    <thetext>I&apos;m confused why we need the concept of chromium-linux-x86 separate from chromium-linux.  Why not just add chromium-linux-x86_64?  People on 32 bit Linux can just use chromium-linux which will contain all the 32 bit results, like they do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360965</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-02 12:06:07 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m confused why we need the concept of chromium-linux-x86 separate from chromium-linux.  Why not just add chromium-linux-x86_64?  People on 32 bit Linux can just use chromium-linux which will contain all the 32 bit results, like they do now.

Good question. I&apos;ve been attempting to move the codebase to a place where we have fully-specified versions of each ports, and then under-specified versions. So, for example, we have &quot;chromium-mac&quot;, which could refer to either &quot;chromium-mac-leopard&quot; or &quot;chromium-mac-snowleopard&quot;, depending on which platform you&apos;re running it on.

Similary, I would prefer to have &quot;chromium-linux&quot; and also &quot;linux-x86&quot; or &quot;linux-x86_64&quot;, so that it was clear(er) what your intent was.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361143</commentid>
    <comment_count>4</comment_count>
      <attachid>84357</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-02 16:01:25 -0800</bug_when>
    <thetext>Comment on attachment 84357
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:48
&gt; +    FALLBACK_PATHS = {
&gt; +        &apos;x86_64&apos;: [&apos;chromium-linux-x86_64&apos;, &apos;chromium-linux&apos;, &apos;chromium-win&apos;, &apos;chromium&apos;, &apos;win&apos;, &apos;mac&apos;],
&gt; +        &apos;x86&apos;: [&apos;chromium-linux&apos;, &apos;chromium-win&apos;, &apos;chromium&apos;, &apos;win&apos;, &apos;mac&apos;],
&gt; +    }

Nit: I would just move this inline and do something like:
fallback = [&apos;chromium-linux&apos;, &apos;chromium-win&apos;, &apos;chromium&apos;, &apos;win&apos;, &apos;mac&apos;]
if self._architecture == &apos;x64_64&apos;:
    fallback.insert(0, &apos;chromium-linux-x86_64&apos;)

To avoid duplication of the fallback list.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:60
&gt; +            self._architecture = port_name[port_name.index(&apos;-linux-&apos;) + 7:]

Nit: I would use .split(&apos;-&apos;)[-1] to avoid the 7 constant needing to keep in sync with -linux-.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:64
&gt; +    def _get_architecture(self):

This names makes it seem like this will return the value of _architecture.  Maybe name this _determine_architecture or something.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:67
&gt; +        if not self._filesystem.exists(driver_path):
&gt; +            return &apos;x86&apos;

I think we should log a message to the user if we get here.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:68
&gt; +        file_output = self._executive.run_command([&apos;file&apos;, driver_path])

What happens if &apos;file&apos; doesn&apos;t exist or for some reason driver_path is not readable?  It would be nice if we could print the captured stdout+stderr.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:73
&gt; +        raise AssertionError(&apos;unrecognized or unsupported architecture&apos;)

I think we should still fallback to x86 and just log a message to the user.  If people want to run this on say FreeBSD or SunOS, we should still run.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:67
&gt; +        self.assert_architecture(file_output=&apos;ELF 32-bit LSB executable&apos;,
&gt; +                                 expected_architecture=&apos;x86&apos;)

Should we have negative tests for stuff like chromium-gpu-linux-x86 or chromium-x86-linux?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361147</commentid>
    <comment_count>5</comment_count>
      <attachid>84357</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-02 16:10:38 -0800</bug_when>
    <thetext>Comment on attachment 84357
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:48
&gt;&gt; +    }
&gt; 
&gt; Nit: I would just move this inline and do something like:
&gt; fallback = [&apos;chromium-linux&apos;, &apos;chromium-win&apos;, &apos;chromium&apos;, &apos;win&apos;, &apos;mac&apos;]
&gt; if self._architecture == &apos;x64_64&apos;:
&gt;     fallback.insert(0, &apos;chromium-linux-x86_64&apos;)
&gt; 
&gt; To avoid duplication of the fallback list.

This actually follows a similar structure being introduced into the other ports, and I think the duplication actually makes things clearer in the big scheme of things (otherwise you have to parse the runtime logic to figure out all of the different variants). The -leopard and -snowleopard logic is a good example of what I mean.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:60
&gt;&gt; +            self._architecture = port_name[port_name.index(&apos;-linux-&apos;) + 7:]
&gt; 
&gt; Nit: I would use .split(&apos;-&apos;)[-1] to avoid the 7 constant needing to keep in sync with -linux-.

Great idea. Will do.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:67
&gt;&gt; +            return &apos;x86&apos;
&gt; 
&gt; I think we should log a message to the user if we get here.

No, this actually happens in some common scenarios, e.g. when runnning unit tests or when running --lint-test-files from a mac. 

When this actually matters (because we&apos;re trying to run the tests), we do log messages.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:68
&gt;&gt; +        file_output = self._executive.run_command([&apos;file&apos;, driver_path])
&gt; 
&gt; What happens if &apos;file&apos; doesn&apos;t exist or for some reason driver_path is not readable?  It would be nice if we could print the captured stdout+stderr.

Good idea, I&apos;ll add that.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:73
&gt;&gt; +        raise AssertionError(&apos;unrecognized or unsupported architecture&apos;)
&gt; 
&gt; I think we should still fallback to x86 and just log a message to the user.  If people want to run this on say FreeBSD or SunOS, we should still run.

Hm. I don&apos;t know if I agree with that, but I can make the change for now.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:67
&gt;&gt; +                                 expected_architecture=&apos;x86&apos;)
&gt; 
&gt; Should we have negative tests for stuff like chromium-gpu-linux-x86 or chromium-x86-linux?

It&apos;s a good question. As you&apos;ve suggested, having the components of the configuration be order-dependent is actually kinda fragile. Eventually I&apos;d like to clean up the code and make things less fragile, but I can add a couple of tests now to ensure that we at least fail predictably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361160</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-02 16:29:31 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 84357 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84357&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:48
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; Nit: I would just move this inline and do something like:
&gt; &gt; fallback = [&apos;chromium-linux&apos;, &apos;chromium-win&apos;, &apos;chromium&apos;, &apos;win&apos;, &apos;mac&apos;]
&gt; &gt; if self._architecture == &apos;x64_64&apos;:
&gt; &gt;     fallback.insert(0, &apos;chromium-linux-x86_64&apos;)
&gt; &gt; 
&gt; &gt; To avoid duplication of the fallback list.
&gt; 
&gt; This actually follows a similar structure being introduced into the other ports, and I think the duplication actually makes things clearer in the big scheme of things (otherwise you have to parse the runtime logic to figure out all of the different variants). The -leopard and -snowleopard logic is a good example of what I mean.

Another way to do this is:
class ChromiumLinuxPort(chromium.ChromiumPort):
  FALLBACK_PATH = {
    &apos;x86&apos;: [...],
  }
  FALLBACK_PATH[&apos;x86_64&apos;] = [&apos;chromium-linux-x86_64&apos;] + FALLBACK_PATH[&apos;x86&apos;]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361212</commentid>
    <comment_count>7</comment_count>
      <attachid>84491</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-02 17:12:42 -0800</bug_when>
    <thetext>Created attachment 84491
update w/ review feedback from tony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361222</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-02 17:18:14 -0800</bug_when>
    <thetext>&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:68
&gt; &gt;&gt; +        file_output = self._executive.run_command([&apos;file&apos;, driver_path])
&gt; &gt; 
&gt; &gt; What happens if &apos;file&apos; doesn&apos;t exist or for some reason driver_path is not readable?  It would be nice if we could print the captured stdout+stderr.
&gt; 

So, run_command will raise a ScriptError(); if I pass return_stderr=True, it&apos;ll include that. I think that&apos;ll be good enough and I&apos;ll add a test for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361226</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-02 17:18:54 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 84357 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84357&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:48
&gt; &gt; &gt;&gt; +    }
&gt; &gt; &gt; 
&gt; &gt; &gt; Nit: I would just move this inline and do something like:
&gt; &gt; &gt; fallback = [&apos;chromium-linux&apos;, &apos;chromium-win&apos;, &apos;chromium&apos;, &apos;win&apos;, &apos;mac&apos;]
&gt; &gt; &gt; if self._architecture == &apos;x64_64&apos;:
&gt; &gt; &gt;     fallback.insert(0, &apos;chromium-linux-x86_64&apos;)
&gt; &gt; &gt; 
&gt; &gt; &gt; To avoid duplication of the fallback list.
&gt; &gt; 
&gt; &gt; This actually follows a similar structure being introduced into the other ports, and I think the duplication actually makes things clearer in the big scheme of things (otherwise you have to parse the runtime logic to figure out all of the different variants). The -leopard and -snowleopard logic is a good example of what I mean.
&gt; 
&gt; Another way to do this is:
&gt; class ChromiumLinuxPort(chromium.ChromiumPort):
&gt;   FALLBACK_PATH = {
&gt;     &apos;x86&apos;: [...],
&gt;   }
&gt;   FALLBACK_PATH[&apos;x86_64&apos;] = [&apos;chromium-linux-x86_64&apos;] + FALLBACK_PATH[&apos;x86&apos;]

Yeah, I still think the duplication is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361232</commentid>
    <comment_count>10</comment_count>
      <attachid>84491</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-02 17:23:04 -0800</bug_when>
    <thetext>Comment on attachment 84491
update w/ review feedback from tony

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:59
&gt; +            if port_name.startswith(&apos;chromium-linux&apos;):

Can this be == instead of startswith?

&gt; Tools/Scripts/webkitpy/layout_tests/port/google_chrome.py:71
&gt; +            def architecture(self):
&gt; +                # Because we&apos;re specifying chromium-linux-86 below, we
&gt; +                # don&apos;t really need this line, but it is probably slightly
&gt; +                # clearer to have it.
&gt; +                return &apos;x86&apos;

I find this to be noisy.  I would just remove it.

&gt; Tools/Scripts/webkitpy/layout_tests/port/google_chrome.py:92
&gt; +        return GoogleChromeLinux64Port(port_name=&apos;chromium-linux-x86&apos;, **kwargs)

This might use a comment explaining why it&apos;s x86 even though we&apos;re linux 64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361236</commentid>
    <comment_count>11</comment_count>
      <attachid>84495</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-02 17:30:30 -0800</bug_when>
    <thetext>Created attachment 84495
more review feedback from tony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361237</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-02 17:31:09 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 84491 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84491&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_linux.py:59
&gt; &gt; +            if port_name.startswith(&apos;chromium-linux&apos;):
&gt; 
&gt; Can this be == instead of startswith?
&gt; 

Yes. Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/google_chrome.py:71
&gt; &gt; +            def architecture(self):
&gt; &gt; +                # Because we&apos;re specifying chromium-linux-86 below, we
&gt; &gt; +                # don&apos;t really need this line, but it is probably slightly
&gt; &gt; +                # clearer to have it.
&gt; &gt; +                return &apos;x86&apos;
&gt; 
&gt; I find this to be noisy.  I would just remove it.
&gt;

Done.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/google_chrome.py:92
&gt; &gt; +        return GoogleChromeLinux64Port(port_name=&apos;chromium-linux-x86&apos;, **kwargs)
&gt; 
&gt; This might use a comment explaining why it&apos;s x86 even though we&apos;re linux 64.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361258</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-02 17:45:33 -0800</bug_when>
    <thetext>Committed r80192: &lt;http://trac.webkit.org/changeset/80192&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84357</attachid>
            <date>2011-03-01 19:27:40 -0800</date>
            <delta_ts>2011-03-02 17:12:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55535-20110301192739.patch</filename>
            <type>text/plain</type>
            <size>17762</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAwNjgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwOThkZTE0ZTg3OTg4NTM4ZDNhOTZiNTZkNDI3MmMyOWRk
NDlhNGY3Li5lMWNhNWZhM2VlY2UwYTNiNjNlMmM4ZjBjNTMxNDY4OWExNGI4MTFlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDMtMDEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlJXVCAtIGltcGxl
bWVudCBMaW51eCBIYXJkeSA2NC1iaXQgcG9ydCBzdXBwb3J0LiBUaGlzIGludm9sdmVzCisgICAg
ICAgIGFkZGluZyBzdXBwb3J0IGZvciBub24tJ3g4NicgYXJjaGl0ZWN0dXJlcyBhbmQgdXBkYXRp
bmcgdGhlCisgICAgICAgICJkZWR1cGxpY2F0ZV90ZXN0cyIgc2NyaXB0IHRvIGNvcnJlY3RseSB1
bmRlcnN0YW5kIHRoYXQKKyAgICAgICAgcG9ydC5uYW1lKCkgaXMgbm90IGFsd2F5cyBlcXVhbCB0
byBiYXNlbmFtZShwb3J0LmJhc2VsaW5lX3BhdGgoKSkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aW50cm9kdWNlcyB0d28gbmV3IHBvcnQgbmFtZXM6ICdjaHJvbWl1bS1saW51eC14ODYnCisgICAg
ICAgIGFuZCAnY2hyb21pdW0tbGludXgteDg2XzY0Jy4gVXNpbmcgdGhlIHByaW9yICdjaHJvbWl1
bS1saW51eCcKKyAgICAgICAgZmxhZyB3aWxsIGNhdXNlIHRoZSBjb2RlIHRvIGRldGVybWluZSB3
aGljaCBvbmUgdG8gdXNlIGF0CisgICAgICAgIHJ1bnRpbWUsIGp1c3QgbGlrZSB3ZSBjdXJyZW50
bHkgZG8gd2l0aCAnY2hyb21pdW0td2luJy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU1MzUKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRlX3Rlc3RzX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGlu
dXhfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9mYWN0b3J5LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZ29vZ2xlX2Nocm9tZS5weToKKwogMjAxMS0wMi0yMyAgSm9zZXBoIFBlY29yYXJvICA8
am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVw
bGljYXRlX3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVk
dXBsaWNhdGVfdGVzdHMucHkKaW5kZXggNmUxNjFmY2JkZjBkZGVjYWEyYjJlMGFjZGQ1NGJjYmFi
YjQwZjFlYS4uNTQ3MmRmZTEzZjZmNmY1ZjMwMjkxNTIwZmQ2NWY3ZjQyZTNiYjNkZCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVz
dHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNh
dGVfdGVzdHMucHkKQEAgLTExOCw2ICsxMTgsMTUgQEAgZGVmIGNsdXN0ZXJfZmlsZV9oYXNoZXMo
Z2xvYl9wYXR0ZXJuKToKICAgICByZXR1cm4gcGFyc2VfZ2l0X291dHB1dChnaXRfb3V0cHV0LCBn
bG9iX3BhdHRlcm4pCiAKIAorZGVmIGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSk6CisgICAg
aWYgZGlybmFtZSA9PSAnY2hyb21pdW0tbGludXgnOgorICAgICAgICByZXR1cm4gJ2Nocm9taXVt
LWxpbnV4LXg4NicKKyAgICBlbGlmIGRpcm5hbWUgPT0gJ2Nocm9taXVtLXdpbic6CisgICAgICAg
IHJldHVybiAnY2hyb21pdW0td2luLXdpbjcnCisgICAgZWxpZiBkaXJuYW1lID09ICdjaHJvbWl1
bS1tYWMnOgorICAgICAgICByZXR1cm4gJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcKKyAgICBy
ZXR1cm4gZGlybmFtZQorCiBkZWYgZXh0cmFjdF9wbGF0Zm9ybXMocGF0aHMpOgogICAgICIiIkV4
dHJhY3RzIHRoZSBwbGF0Zm9ybXMgZnJvbSBhIGxpc3Qgb2YgcGF0aHMgbWF0Y2hpbmcgXnBsYXRm
b3JtLyguKj8pLy4KICAgICBBcmdzOgpAQCAtMTI5LDcgKzEzOCw3IEBAIGRlZiBleHRyYWN0X3Bs
YXRmb3JtcyhwYXRocyk6CiAgICAgZm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgIG1hdGNoID0g
cmUubWF0Y2gocidecGxhdGZvcm0vKC4qPykvJywgcGF0aCkKICAgICAgICAgaWYgbWF0Y2g6Ci0g
ICAgICAgICAgICBwbGF0Zm9ybSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgICAgICBwbGF0Zm9y
bSA9IGRpcm5hbWVfdG9fcGxhdGZvcm0obWF0Y2guZ3JvdXAoMSkpCiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBwbGF0Zm9ybSA9IF9CQVNFX1BMQVRGT1JNCiAgICAgICAgIHBsYXRmb3Jtc1tw
bGF0Zm9ybV0gPSBwYXRoCkBAIC0xNTMsMTAgKzE2MiwxMSBAQCBkZWYgaGFzX2ludGVybWVkaWF0
ZV9yZXN1bHRzKHRlc3QsIGZhbGxiYWNrcywgbWF0Y2hpbmdfcGxhdGZvcm0sCiAgICAgICAgIHBh
dGhfZXhpc3RzOiBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgdXMgdG8gc3R1YiBvdXQK
ICAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzIGZvciB0ZXN0aW5nLgogICAgICIiIgotICAgIGZv
ciBwbGF0Zm9ybSBpbiBmYWxsYmFja3M6CisgICAgZm9yIGRpcm5hbWUgaW4gZmFsbGJhY2tzOgor
ICAgICAgICBwbGF0Zm9ybSA9IGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSkKICAgICAgICAg
aWYgcGxhdGZvcm0gPT0gbWF0Y2hpbmdfcGxhdGZvcm06CiAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKLSAgICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKCdMYXlvdXRUZXN0cycsICdwbGF0
Zm9ybScsIHBsYXRmb3JtLCB0ZXN0KQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4o
J0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywgZGlybmFtZSwgdGVzdCkKICAgICAgICAgaWYgcGF0
aF9leGlzdHModGVzdF9wYXRoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJu
IEZhbHNlCkBAIC0yMDAsNyArMjEwLDggQEAgZGVmIGZpbmRfZHVwcyhoYXNoZXMsIHBvcnRfZmFs
bGJhY2tzLCByZWxhdGl2ZV90byk6CiAgICAgICAgIGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXMu
a2V5cygpOgogICAgICAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIHBvcnRfZmFjdG9yeS5hbGxf
cG9ydF9uYW1lcygpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb3Ig
ZmFsbGJhY2sgaW4gcG9ydF9mYWxsYmFja3NbcGxhdGZvcm1dOgorICAgICAgICAgICAgZm9yIGRp
cm5hbWUgaW4gcG9ydF9mYWxsYmFja3NbcGxhdGZvcm1dOgorICAgICAgICAgICAgICAgIGZhbGxi
YWNrID0gZGlybmFtZV90b19wbGF0Zm9ybShkaXJuYW1lKQogICAgICAgICAgICAgICAgIGlmIGZh
bGxiYWNrIG5vdCBpbiBwbGF0Zm9ybXMua2V5cygpOgogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQogICAgICAgICAgICAgICAgICMgV2UgaGF2ZSB0byB2ZXJpZnkgdGhhdCB0aGVyZSBpc24n
dCBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0CkBAIC0yMTYsNyArMjI3LDcgQEAgZGVmIGZpbmRfZHVw
cyhoYXNoZXMsIHBvcnRfZmFsbGJhY2tzLCByZWxhdGl2ZV90byk6CiAgICAgICAgICAgICAgICAg
eWllbGQgewogICAgICAgICAgICAgICAgICAgICAndGVzdCc6IHRlc3QsCiAgICAgICAgICAgICAg
ICAgICAgICdwbGF0Zm9ybSc6IHBsYXRmb3JtLAotICAgICAgICAgICAgICAgICAgICAnZmFsbGJh
Y2snOiBmYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzogZGlybmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiBwYXRoLAogICAgICAgICAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNh
dGVfdGVzdHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQppbmRleCA0N2RjOGEyZmZmNDUxNDUzMGVl
MTYzZWVjOWEzN2JkMTI3ZDM2YmIxLi4yOWZmOGQ1ZWZmNTZmOTBlZDk5MzIyMDRjZTI4ZTQ1OTFk
ZjI1ZmNiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9k
ZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQpAQCAtOTUsNyArOTUs
NyBAQCBjbGFzcyBMaXN0RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgIyBpbnRlcm1lZGlhdGUgcmVzdWx0cy4KICAgICAgICAgICAgIChGYWxzZSwgKCdmYXN0
L2Zvby1leHBlY3RlZC50eHQnLAogICAgICAgICAgICAgICAgICAgICAgWydjaHJvbWl1bS13aW4n
LCAnY2hyb21pdW0nLCAnYmFzZSddLAotICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtLXdp
bicsCisgICAgICAgICAgICAgICAgICAgICAnY2hyb21pdW0td2luLXdpbjcnLAogICAgICAgICAg
ICAgICAgICAgICAgbGFtYmRhIHBhdGg6IFRydWUpKSwKICAgICAgICAgICAgICMgU2luY2UgY2hy
b21pdW0td2luIGhhcyBhIHJlc3VsdCwgd2UgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0Lgog
ICAgICAgICAgICAgKFRydWUsICAoJ2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcsCkBAIC0xNTksMTIg
KzE1OSwxMiBAQCBjbGFzcyBMaXN0RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnYW5pbWFnZS5wbmcnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbGludXgvYW5pbWFnZS5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbGxi
YWNrJzogJ2Nocm9taXVtLXdpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZv
cm0nOiAnY2hyb21pdW0tbGludXgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0
Zm9ybSc6ICdjaHJvbWl1bS1saW51eC14ODYnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0WzBdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnZm9vLWV4cGVj
dGVkLnR4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mb28tZXhwZWN0ZWQudHh0JywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4J30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2J30sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFsxXSkKIAogICAgICAgICByZXN1bHQgPSBkZWR1
cGxpY2F0ZV90ZXN0cy5kZWR1cGxpY2F0ZSgnKi50eHQnKQpAQCAtMTc0LDcgKzE3NCw3IEBAIGNs
YXNzIExpc3REdXBsaWNhdGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHsndGVzdCc6ICdmb28tZXhwZWN0ZWQudHh0JywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdwYXRoJzogJ0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2Zvby1leHBlY3RlZC50eHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNr
JzogJ2Nocm9taXVtLXdpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0n
OiAnY2hyb21pdW0tbGludXgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9y
bSc6ICdjaHJvbWl1bS1saW51eC14ODYnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0WzBdKQogCiAgICAgICAgIHJlc3VsdCA9IGRlZHVwbGljYXRlX3Rlc3RzLmRlZHVwbGljYXRl
KCcqLnBuZycpCkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgTGlzdER1cGxpY2F0ZXNUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoeyd0ZXN0JzogJ2Fu
aW1hZ2UucG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRoJzogJ0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hZ2UucG5nJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4J30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2J30sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFswXSkKIAogICAgIGRlZiB0ZXN0X2dldF9yZWxhdGl2
ZV90ZXN0X3BhdGgoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggM2FhZjMwMjUwMTA3ZTA3MThkNTM4ZjY3N2UwNzJkNDU1
NzExMjJhYS4uMGMyOGQ0NDE4ZGMyYjk4ZjJkNDMwZGE1ODRlNWNiMjBjMTMxMWE3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAt
ODksNiArODksNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIGNvbmZp
Zz1Ob25lLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYuX25hbWUg
PSBwb3J0X25hbWUKKyAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gJ3g4NicKICAgICAgICAg
c2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucyBpcyBOb25l
OgogICAgICAgICAgICAgIyBGSVhNRTogSWRlYWxseSB3ZSdkIGhhdmUgYSBwYWNrYWdlLXdpZGUg
d2F5IHRvIGdldCBhCkBAIC02NDcsNiArNjQ4LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAg
ICAgICAiY2hyb21pdW0tbWFjIiBvbiB0aGUgQ2hyb21pdW0gcG9ydHMuIiIiCiAgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lX3RvX25hbWUn
KQogCisgICAgZGVmIGFyY2hpdGVjdHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Fy
Y2hpdGVjdHVyZQorCiAgICAgZGVmIHZlcnNpb24oc2VsZik6CiAgICAgICAgICIiIlJldHVybnMg
YSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgdmVyc2lvbiBvZiBhIGdpdmVuIHBsYXRmb3JtLCBlLmcu
CiAgICAgICAgICdsZW9wYXJkJyBvciAneHAnLgpAQCAtOTM5LDcgKzk0Myw3IEBAIGNsYXNzIFRl
c3RDb25maWd1cmF0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICBwb3J0X3ZlcnNpb24gPSBwb3J0
LnZlcnNpb24oKQogICAgICAgICBzZWxmLm9zID0gb3Mgb3IgcG9ydC50ZXN0X3BsYXRmb3JtX25h
bWUoKS5yZXBsYWNlKCctJyArIHBvcnRfdmVyc2lvbiwgJycpCiAgICAgICAgIHNlbGYudmVyc2lv
biA9IHZlcnNpb24gb3IgcG9ydF92ZXJzaW9uCi0gICAgICAgIHNlbGYuYXJjaGl0ZWN0dXJlID0g
YXJjaGl0ZWN0dXJlIG9yICd4ODYnCisgICAgICAgIHNlbGYuYXJjaGl0ZWN0dXJlID0gYXJjaGl0
ZWN0dXJlIG9yIHBvcnQuYXJjaGl0ZWN0dXJlKCkKICAgICAgICAgc2VsZi5idWlsZF90eXBlID0g
YnVpbGRfdHlwZSBvciBwb3J0Ll9vcHRpb25zLmNvbmZpZ3VyYXRpb24ubG93ZXIoKQogICAgICAg
ICBzZWxmLmdyYXBoaWNzX3R5cGUgPSBncmFwaGljc190eXBlIG9yIHBvcnQuZ3JhcGhpY3NfdHlw
ZSgpCiAKQEAgLTk1MCw3ICs5NTQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJhdGlvbihvYmplY3Qp
OgogICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXy5rZXlzKCkKIAogICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgotICAgICAgICByZXR1cm4gKCI8JShvcylzLCAlKHZlcnNpb24pcywgJShidWlsZF90
eXBlKXMsICUoZ3JhcGhpY3NfdHlwZSlzPiIgJQorICAgICAgICByZXR1cm4gKCI8JShvcylzLCAl
KHZlcnNpb24pcywgJShhcmNoaXRlY3R1cmUpcywgJShidWlsZF90eXBlKXMsICUoZ3JhcGhpY3Nf
dHlwZSlzPiIgJQogICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18pCiAKICAgICBkZWYgX19y
ZXByX18oc2VsZik6CkBAIC05ODIsNyArOTg2LDggQEAgY2xhc3MgVGVzdENvbmZpZ3VyYXRpb24o
b2JqZWN0KToKICAgICAgICAgICAgICAgICAoJ3dpbicsICd4cCcsICd4ODYnKSwKICAgICAgICAg
ICAgICAgICAoJ3dpbicsICd2aXN0YScsICd4ODYnKSwKICAgICAgICAgICAgICAgICAoJ3dpbics
ICd3aW43JywgJ3g4NicpLAotICAgICAgICAgICAgICAgICgnbGludXgnLCAnaGFyZHknLCAneDg2
JykpCisgICAgICAgICAgICAgICAgKCdsaW51eCcsICdoYXJkeScsICd4ODYnKSwKKyAgICAgICAg
ICAgICAgICAoJ2xpbnV4JywgJ2hhcmR5JywgJ3g4Nl82NCcpKQogCiAgICAgZGVmIGFsbF9idWls
ZF90eXBlcyhzZWxmKToKICAgICAgICAgcmV0dXJuICgnZGVidWcnLCAncmVsZWFzZScpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2xpbnV4LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9saW51eC5weQppbmRleCBhMTk5N2Q2MmM0OGM2ZDE0MTM3NWZiNTZhYWY0ZGE4MDdjYmMy
NDVlLi40YTUwYjM5NWI3OGUwMjZmZGEyYzgzYTVmMzM3Y2ZlOTA2NDcwYzI4IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fbGludXgucHkKQEAgLTQwLDEzICs0MCw0NSBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
IndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmNocm9taXVtX2xpbnV4IikKIAogY2xhc3MgQ2hy
b21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAiIiJDaHJvbWl1bSBM
aW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCdwb3J0X25h
bWUnLCAnY2hyb21pdW0tbGludXgnKQotICAgICAgICBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuX19p
bml0X18oc2VsZiwgKiprd2FyZ3MpCisgICAgU1VQUE9SVEVEX0FSQ0hJVEVDVFVSRVMgPSAoJ3g4
NicsICd4ODZfNjQnKQorCisgICAgRkFMTEJBQ0tfUEFUSFMgPSB7CisgICAgICAgICd4ODZfNjQn
OiBbJ2Nocm9taXVtLWxpbnV4LXg4Nl82NCcsICdjaHJvbWl1bS1saW51eCcsICdjaHJvbWl1bS13
aW4nLCAnY2hyb21pdW0nLCAnd2luJywgJ21hYyddLAorICAgICAgICAneDg2JzogWydjaHJvbWl1
bS1saW51eCcsICdjaHJvbWl1bS13aW4nLCAnY2hyb21pdW0nLCAnd2luJywgJ21hYyddLAorICAg
IH0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9uZSwgcmViYXNlbGluaW5n
PUZhbHNlLCAqKmt3YXJncyk6CisgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZSBvciAnY2hy
b21pdW0tbGludXgnCisgICAgICAgIGNocm9taXVtLkNocm9taXVtUG9ydC5fX2luaXRfXyhzZWxm
LCBwb3J0X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKKworICAgICAgICAjIFdlIHJlLXNldCB0
aGUgcG9ydCBuYW1lIG9uY2UgdGhlIGJhc2Ugb2JqZWN0IGlzIGZ1bGx5IGluaXRpYWxpemVkCisg
ICAgICAgICMgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBmaW5kIHRoZSBEUlQgYmluYXJ5IHByb3Bl
cmx5LgorICAgICAgICBpZiBwb3J0X25hbWUuZW5kc3dpdGgoJy1saW51eCcpIGFuZCBub3QgcmVi
YXNlbGluaW5nOgorICAgICAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gc2VsZi5fZ2V0X2Fy
Y2hpdGVjdHVyZSgpCisgICAgICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25hbWUgKyAnLScgKyBz
ZWxmLl9hcmNoaXRlY3R1cmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2FyY2hp
dGVjdHVyZSA9IHBvcnRfbmFtZVtwb3J0X25hbWUuaW5kZXgoJy1saW51eC0nKSArIDc6XQorICAg
ICAgICAgICAgYXNzZXJ0IHNlbGYuX2FyY2hpdGVjdHVyZSBpbiBzZWxmLlNVUFBPUlRFRF9BUkNI
SVRFQ1RVUkVTCisgICAgICAgIHNlbGYuX25hbWUgPSBwb3J0X25hbWUKKworICAgIGRlZiBfZ2V0
X2FyY2hpdGVjdHVyZShzZWxmKToKKyAgICAgICAgZHJpdmVyX3BhdGggPSBzZWxmLl9wYXRoX3Rv
X2RyaXZlcigpCisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhkcml2ZXJf
cGF0aCk6CisgICAgICAgICAgICByZXR1cm4gJ3g4NicKKyAgICAgICAgZmlsZV9vdXRwdXQgPSBz
ZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydmaWxlJywgZHJpdmVyX3BhdGhdKQorICAgICAg
ICBpZiAnRUxGIDMyLWJpdCBMU0IgZXhlY3V0YWJsZScgaW4gZmlsZV9vdXRwdXQ6CisgICAgICAg
ICAgICByZXR1cm4gJ3g4NicKKyAgICAgICAgaWYgJ0VMRiA2NC1iaXQgTFNCIGV4ZWN1dGFibGUn
IGluIGZpbGVfb3V0cHV0OgorICAgICAgICAgICAgcmV0dXJuICd4ODZfNjQnCisgICAgICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yKCd1bnJlY29nbml6ZWQgb3IgdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0
dXJlJykKKworICAgIGRlZiBiYXNlbGluZV9wYXRoKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9h
cmNoaXRlY3R1cmUgPT0gJ3g4Nl82NCc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fd2Via2l0
X2Jhc2VsaW5lX3BhdGgoc2VsZi5fbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9i
YXNlbGluZV9wYXRoKCdjaHJvbWl1bS1saW51eCcpCiAKICAgICBkZWYgYmFzZWxpbmVfc2VhcmNo
X3BhdGgoc2VsZik6Ci0gICAgICAgIHBvcnRfbmFtZXMgPSBbImNocm9taXVtLWxpbnV4IiwgImNo
cm9taXVtLXdpbiIsICJjaHJvbWl1bSIsICJ3aW4iLCAibWFjIl0KKyAgICAgICAgcG9ydF9uYW1l
cyA9IHNlbGYuRkFMTEJBQ0tfUEFUSFNbc2VsZi5fYXJjaGl0ZWN0dXJlXQogICAgICAgICByZXR1
cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBwb3J0X25hbWVzKQogCiAgICAgZGVm
IGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgpAQCAtNzUsOCArMTA3LDggQEAgY2xhc3Mg
Q2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJu
ICdsaW51eCcKIAogICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgotICAgICAgICAjIFdlIGRvbid0IGhh
dmUgZGlmZmVyZW50IHZlcnNpb25zIG9uIGxpbnV4LgotICAgICAgICByZXR1cm4gJycKKyAgICAg
ICAgIyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIEx1Y2lkLgorICAgICAgICByZXR1cm4gJ2hhcmR5
JwogCiAgICAgIwogICAgICMgUFJPVEVDVEVEIE1FVEhPRFMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xp
bnV4X3VuaXR0ZXN0LnB5CmluZGV4IDFlNGQ3NDA2YmY3MDI5MGM0MmNiYWI4OGU0ZmU5MTljZDYx
YzBlYTcuLjliYzQ0NjQzZDIxMjllN2Y4ZGQ2NDhlNTEzYzAyMDcxNDU3ODY4OTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGlu
dXhfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weQpAQCAtMjgsNiArMjgsOCBAQAogCiBpbXBv
cnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRp
dmVfbW9jaworCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjaHJvbWl1
bV9saW51eAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0
Y2FzZQogCkBAIC0zOCw2ICs0MCwzNSBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydFRlc3QocG9y
dF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAg
ICAgcmV0dXJuIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0CiAKKyAgICBkZWYgYXNz
ZXJ0X2FyY2hpdGVjdHVyZShzZWxmLCBwb3J0X25hbWU9Tm9uZSwgZmlsZV9vdXRwdXQ9Tm9uZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9hcmNoaXRlY3R1cmU9Tm9uZSk6
CisgICAgICAgIGV4ZWN1dGl2ZSA9IE5vbmUKKyAgICAgICAgaWYgZmlsZV9vdXRwdXQ6CisgICAg
ICAgICAgICBleGVjdXRpdmUgPSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMihmaWxlX291
dHB1dCkKKworICAgICAgICBwb3J0ID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQo
cG9ydF9uYW1lPXBvcnRfbmFtZSwKKyAgICAgICAgICAgIGV4ZWN1dGl2ZT1leGVjdXRpdmUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYXJjaGl0ZWN0dXJlKCksIGV4cGVjdGVkX2Fy
Y2hpdGVjdHVyZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQubmFtZSgpLmVuZHN3aXRo
KGV4cGVjdGVkX2FyY2hpdGVjdHVyZSkpCisgICAgICAgIGlmIGV4cGVjdGVkX2FyY2hpdGVjdHVy
ZSA9PSAneDg2JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmJhc2VsaW5lX3Bh
dGgoKS5lbmRzd2l0aCgnY2hyb21pdW0tbGludXgnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKClbMF0uZW5kc3dpdGgoJ2Nocm9taXVtLWxp
bnV4JykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5i
YXNlbGluZV9wYXRoKCkuZW5kc3dpdGgoJ2Nocm9taXVtLWxpbnV4LXg4Nl82NCcpKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoKVswXS5lbmRz
d2l0aCgnY2hyb21pdW0tbGludXgteDg2XzY0JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUocG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpWzFdLmVuZHN3aXRoKCdjaHJvbWl1bS1saW51
eCcpKQorCisgICAgZGVmIHRlc3RfYXJjaGl0ZWN0dXJlcyhzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfYXJjaGl0ZWN0dXJlKHBvcnRfbmFtZT0nY2hyb21pdW0tbGludXgteDg2JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyY2hpdGVjdHVyZT0neDg2JykK
KyAgICAgICAgc2VsZi5hc3NlcnRfYXJjaGl0ZWN0dXJlKHBvcnRfbmFtZT0nY2hyb21pdW0tbGlu
dXgteDg2XzY0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Fy
Y2hpdGVjdHVyZT0neDg2XzY0JykKKyAgICAgICAgc2VsZi5hc3NlcnRfYXJjaGl0ZWN0dXJlKGZp
bGVfb3V0cHV0PSdFTEYgMzItYml0IExTQiBleGVjdXRhYmxlJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyY2hpdGVjdHVyZT0neDg2JykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfYXJjaGl0ZWN0dXJlKGZpbGVfb3V0cHV0PSdFTEYgNjQtYml0IExTQiBleGVjdXRh
YmxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyY2hpdGVj
dHVyZT0neDg2XzY0JykKKworCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5p
dHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2ZhY3RvcnkucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2ZhY3RvcnkucHkKaW5kZXggYTE5NzFlNGNlZjNlNjE1ZDBjZjFmOGQ0OGE1ODM5ODNi
Y2I1Y2M4ZC4uNjgzZGJhM2Q2ODcyNWQ5MTY1M2ZhMWVjMDg5MTY3NmQzNTQ1MDNkZiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5w
eQpAQCAtMzYsMTYgKzM2LDE0IEBAIGltcG9ydCBzeXMKIGRlZiBhbGxfcG9ydF9uYW1lcygpOgog
ICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHZhbGlkLCBmdWxseS1zcGVjaWZpZWQsICJyZWFs
IiBwb3J0IG5hbWVzLgogCi0gICAgVGhpcyBpcyB0aGUgbGlzdCBvZiBuYW1lcyB0aGF0IGNhbiBi
ZSBzcGVjaWZpZWQgZGlyZWN0bHkgYW5kIGNhbiBiZQotICAgIHJldHVybmVkIGFzIGEgdmFsdWUg
ZnJvbSBwb3J0Lm5hbWUoKS4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIGFueQotICAgICJmYWtlIiBu
YW1lcyBsaWtlICJ0ZXN0IiBvciAibW9jay1tYWMiLCBhbmQgaXQgZG9lcyBub3QgaW5jbHVkZSBh
bnkKLSAgICBzaG9ydGN1dCBuYW1lcyBsaWtlICJjaHJvbWl1bS13aW4iIHRoYXQgd291bGQgZ2V0
IGV4cGFuZGVkIHRvCi0gICAgImNocm9taXVtLXdpbi14cCIuIiIiCisgICAgVGhpcyBpcyB0aGUg
bGlzdCBvZiBkaXJlY3RvcmllcyB0aGF0IGFyZSB1c2VkIGFzIGFjdHVhbCBiYXNlbGluZV9wYXRo
cygpCisgICAgYnkgcmVhbCBwb3J0cy4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIGFueSAiZmFrZSIg
bmFtZXMgbGlrZSAidGVzdCIKKyAgICBvciAibW9jay1tYWMiLCBhbmQgaXQgZG9lcyBub3QgaW5j
bHVkZSBhbnkgZGlyZWN0b3JpZXMgdGhhdCBhcmUgbm90IC4iIiIKICAgICAjIEZJWE1FOiBUaGVy
ZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBnZW5lcmF0ZSB0aGlzIGxpc3QgLi4uCiAgICAg
cmV0dXJuIFsnY2hyb21pdW0tZ3B1LWxpbnV4JywKICAgICAgICAgICAgICdjaHJvbWl1bS1ncHUt
bWFjLXNub3dsZW9wYXJkJywgJ2Nocm9taXVtLWdwdS1tYWMtbGVvcGFyZCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0tZ3B1LXdpbi14cCcsICdjaHJvbWl1bS1ncHUtd2luLXZpc3RhJywgJ2Nocm9t
aXVtLWdwdS13aW4td2luNycsCi0gICAgICAgICAgICAnY2hyb21pdW0tbGludXgnLAorICAgICAg
ICAgICAgJ2Nocm9taXVtLWxpbnV4LXg4Nl82NCcsICdjaHJvbWl1bS1saW51eC14ODYnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtLW1hYy1sZW9wYXJkJywgJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFy
ZCcsCiAgICAgICAgICAgICAnY2hyb21pdW0td2luLXhwJywgJ2Nocm9taXVtLXdpbi12aXN0YScs
ICdjaHJvbWl1bS13aW4td2luNycsCiAgICAgICAgICAgICAnZ29vZ2xlLWNocm9tZS1saW51eDMy
JywgJ2dvb2dsZS1jaHJvbWUtbGludXg2NCcsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHkKaW5kZXggYWU5MDM3
NDIwMDc3OWVmMGVlODA5Y2VjMTA1ZTVjNWJlNGY4N2M0Ni4uOTI4OTdkZDdkZGMyZWI0ZTFiZjEz
OTdiZTdmYTgyZjhjOGIzZGZkZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZS5weQpAQCAtNDUsNiArNDUsOCBA
QCBkZWYgR2V0R29vZ2xlQ2hyb21lUG9ydCgqKmt3YXJncyk6CiAgICAgIiIiU29tZSB0ZXN0cyBo
YXZlIHNsaWdodGx5IGRpZmZlcmVudCByZXN1bHRzIHdoZW4gY29tcGlsZWQgYXMgR29vZ2xlCiAg
ICAgQ2hyb21lIHZzIENocm9taXVtLiAgSW4gdGhvc2UgY2FzZXMsIHdlIHByZXBlbmQgYW4gYWRk
aXRpb25hbCBkaXJlY3RvcnkgdG8KICAgICB0byB0aGUgYmFzZWxpbmUgcGF0aHMuIiIiCisgICAg
IyBGSVhNRTogVGhpcyB3aG9sZSByb3V0aW5lIGlzIGEgdHJlbWVuZG91cyBoYWNrIHRoYXQgbmVl
ZHMgdG8gYmUgY2xlYW5lZCB1cC4KKwogICAgIHBvcnRfbmFtZSA9IGt3YXJnc1sncG9ydF9uYW1l
J10KICAgICBkZWwga3dhcmdzWydwb3J0X25hbWUnXQogICAgIGlmIHBvcnRfbmFtZSA9PSAnZ29v
Z2xlLWNocm9tZS1saW51eDMyJzoKQEAgLTYyLDcgKzY0LDEzIEBAIGRlZiBHZXRHb29nbGVDaHJv
bWVQb3J0KCoqa3dhcmdzKToKICAgICAgICAgICAgICAgICByZXR1cm4gX3Rlc3RfZXhwZWN0YXRp
b25zX292ZXJyaWRlcyhzZWxmLAogICAgICAgICAgICAgICAgICAgICBjaHJvbWl1bV9saW51eC5D
aHJvbWl1bUxpbnV4UG9ydCkKIAotICAgICAgICByZXR1cm4gR29vZ2xlQ2hyb21lTGludXgzMlBv
cnQoKiprd2FyZ3MpCisgICAgICAgICAgICBkZWYgYXJjaGl0ZWN0dXJlKHNlbGYpOgorICAgICAg
ICAgICAgICAgICMgQmVjYXVzZSB3ZSdyZSBzcGVjaWZ5aW5nIGNocm9taXVtLWxpbnV4LTg2IGJl
bG93LCB3ZQorICAgICAgICAgICAgICAgICMgZG9uJ3QgcmVhbGx5IG5lZWQgdGhpcyBsaW5lLCBi
dXQgaXQgaXMgcHJvYmFibHkgc2xpZ2h0bHkKKyAgICAgICAgICAgICAgICAjIGNsZWFyZXIgdG8g
aGF2ZSBpdC4KKyAgICAgICAgICAgICAgICByZXR1cm4gJ3g4NicKKworICAgICAgICByZXR1cm4g
R29vZ2xlQ2hyb21lTGludXgzMlBvcnQocG9ydF9uYW1lPSdjaHJvbWl1bS1saW51eC14ODYnLCAq
Kmt3YXJncykKICAgICBlbGlmIHBvcnRfbmFtZSA9PSAnZ29vZ2xlLWNocm9tZS1saW51eDY0JzoK
ICAgICAgICAgaW1wb3J0IGNocm9taXVtX2xpbnV4CiAKQEAgLTc4LDcgKzg2LDEwIEBAIGRlZiBH
ZXRHb29nbGVDaHJvbWVQb3J0KCoqa3dhcmdzKToKICAgICAgICAgICAgICAgICByZXR1cm4gX3Rl
c3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmLAogICAgICAgICAgICAgICAgICAgICBjaHJv
bWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCkKIAotICAgICAgICByZXR1cm4gR29vZ2xlQ2hy
b21lTGludXg2NFBvcnQoKiprd2FyZ3MpCisgICAgICAgICAgICBkZWYgYXJjaGl0ZWN0dXJlKHNl
bGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAneDg2XzY0JworCisgICAgICAgIHJldHVybiBH
b29nbGVDaHJvbWVMaW51eDY0UG9ydChwb3J0X25hbWU9J2Nocm9taXVtLWxpbnV4LXg4NicsICoq
a3dhcmdzKQogICAgIGVsaWYgcG9ydF9uYW1lLnN0YXJ0c3dpdGgoJ2dvb2dsZS1jaHJvbWUtbWFj
Jyk6CiAgICAgICAgIGltcG9ydCBjaHJvbWl1bV9tYWMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84491</attachid>
            <date>2011-03-02 17:12:42 -0800</date>
            <delta_ts>2011-03-02 17:30:28 -0800</delta_ts>
            <desc>update w/ review feedback from tony</desc>
            <filename>bug-55535-20110302171241.patch</filename>
            <type>text/plain</type>
            <size>21949</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAwNjgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwOThkZTE0ZTg3OTg4NTM4ZDNhOTZiNTZkNDI3MmMyOWRk
NDlhNGY3Li5hNTBlMzNlYjVhNGM5YzA5ZTU4OWZjNTQzNzUxNTQ0M2E2NjlkNDA0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDMtMDEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlJXVCAtIGltcGxl
bWVudCBMaW51eCBIYXJkeSA2NC1iaXQgcG9ydCBzdXBwb3J0LiBUaGlzIGludm9sdmVzCisgICAg
ICAgIGFkZGluZyBzdXBwb3J0IGZvciBub24tJ3g4NicgYXJjaGl0ZWN0dXJlcyBhbmQgdXBkYXRp
bmcgdGhlCisgICAgICAgICJkZWR1cGxpY2F0ZV90ZXN0cyIgc2NyaXB0IHRvIGNvcnJlY3RseSB1
bmRlcnN0YW5kIHRoYXQKKyAgICAgICAgcG9ydC5uYW1lKCkgaXMgbm90IGFsd2F5cyBlcXVhbCB0
byBiYXNlbmFtZShwb3J0LmJhc2VsaW5lX3BhdGgoKSkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aW50cm9kdWNlcyB0d28gbmV3IHBvcnQgbmFtZXM6ICdjaHJvbWl1bS1saW51eC14ODYnCisgICAg
ICAgIGFuZCAnY2hyb21pdW0tbGludXgteDg2XzY0Jy4gVXNpbmcgdGhlIHByaW9yICdjaHJvbWl1
bS1saW51eCcKKyAgICAgICAgZmxhZyB3aWxsIGNhdXNlIHRoZSBjb2RlIHRvIGRldGVybWluZSB3
aGljaCBvbmUgdG8gdXNlIGF0CisgICAgICAgIHJ1bnRpbWUsIGp1c3QgbGlrZSB3ZSBjdXJyZW50
bHkgZG8gd2l0aCAnY2hyb21pdW0td2luJy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU1MzUKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weToKKyAgICAgICAgICBIYW5kbGUgJ3JldHVy
bl9zdGRlcnInIGtleXdvcmQgYXJnIHRvIHJ1bl9jb21tYW5kKCkKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0cy5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9s
aW51eC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHk6CisKIDIwMTEtMDItMjMgIEpvc2VwaCBQ
ZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZXhlY3V0aXZlX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZXhlY3V0aXZlX21vY2sucHkKaW5kZXggOTQzYjcwYzQyZGYxYWRjOGNjYmE3N2EwMDNl
OGIzMWQwNzkwYjdhMS4uMzY3NzMyYzBlY2E5YWQ1MjUzZWI3MWQzZmIwZTRmYmNkNjI3ZDc0MyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2
ZV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVj
dXRpdmVfbW9jay5weQpAQCAtMzUsOCArMzUsOSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IGV4ZWN1dGl2ZQogCiBjbGFzcyBNb2NrRXhlY3V0aXZlMihvYmplY3QpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvdXRwdXQ9JycsIGV4aXRfY29kZT0wLCBleGNlcHRpb249Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgcnVuX2NvbW1hbmRfZm49Tm9uZSk6CisgICAgICAgICAgICAg
ICAgIHJ1bl9jb21tYW5kX2ZuPU5vbmUsIHN0ZGVycj0nJyk6CiAgICAgICAgIHNlbGYuX291dHB1
dCA9IG91dHB1dAorICAgICAgICBzZWxmLl9zdGRlcnIgPSBzdGRlcnIKICAgICAgICAgc2VsZi5f
ZXhpdF9jb2RlID0gZXhpdF9jb2RlCiAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IGV4Y2VwdGlv
bgogICAgICAgICBzZWxmLl9ydW5fY29tbWFuZF9mbiA9IHJ1bl9jb21tYW5kX2ZuCkBAIC01MSw3
ICs1Miw3IEBAIGNsYXNzIE1vY2tFeGVjdXRpdmUyKG9iamVjdCk6CiAgICAgICAgIHBhc3MKIAog
ICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdfbGlzdCwgZXJyb3JfaGFuZGxlcj1Ob25lLCBy
ZXR1cm5fZXhpdF9jb2RlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0
PUZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSwgcmV0dXJu
X3N0ZGVycj1GYWxzZSk6CiAgICAgICAgIGlmIHNlbGYuX2V4Y2VwdGlvbjoKICAgICAgICAgICAg
IHJhaXNlIHNlbGYuX2V4Y2VwdGlvbgogICAgICAgICBpZiByZXR1cm5fZXhpdF9jb2RlOgpAQCAt
NjMsNSArNjQsNiBAQCBjbGFzcyBNb2NrRXhlY3V0aXZlMihvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRfY29kZT1zZWxmLl9leGl0
X2NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0PXNlbGYuX291dHB1dCkKICAgICAgICAgICAgIGVycm9yX2hhbmRsZXIoc2NyaXB0X2Vy
cm9yKQotCisgICAgICAgIGlmIHJldHVybl9zdGRlcnI6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fb3V0cHV0ICsgc2VsZi5fc3RkZXJyCiAgICAgICAgIHJldHVybiBzZWxmLl9vdXRwdXQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRl
X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNh
dGVfdGVzdHMucHkKaW5kZXggNmUxNjFmY2JkZjBkZGVjYWEyYjJlMGFjZGQ1NGJjYmFiYjQwZjFl
YS4uNTQ3MmRmZTEzZjZmNmY1ZjMwMjkxNTIwZmQ2NWY3ZjQyZTNiYjNkZCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHMucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVz
dHMucHkKQEAgLTExOCw2ICsxMTgsMTUgQEAgZGVmIGNsdXN0ZXJfZmlsZV9oYXNoZXMoZ2xvYl9w
YXR0ZXJuKToKICAgICByZXR1cm4gcGFyc2VfZ2l0X291dHB1dChnaXRfb3V0cHV0LCBnbG9iX3Bh
dHRlcm4pCiAKIAorZGVmIGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSk6CisgICAgaWYgZGly
bmFtZSA9PSAnY2hyb21pdW0tbGludXgnOgorICAgICAgICByZXR1cm4gJ2Nocm9taXVtLWxpbnV4
LXg4NicKKyAgICBlbGlmIGRpcm5hbWUgPT0gJ2Nocm9taXVtLXdpbic6CisgICAgICAgIHJldHVy
biAnY2hyb21pdW0td2luLXdpbjcnCisgICAgZWxpZiBkaXJuYW1lID09ICdjaHJvbWl1bS1tYWMn
OgorICAgICAgICByZXR1cm4gJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcKKyAgICByZXR1cm4g
ZGlybmFtZQorCiBkZWYgZXh0cmFjdF9wbGF0Zm9ybXMocGF0aHMpOgogICAgICIiIkV4dHJhY3Rz
IHRoZSBwbGF0Zm9ybXMgZnJvbSBhIGxpc3Qgb2YgcGF0aHMgbWF0Y2hpbmcgXnBsYXRmb3JtLygu
Kj8pLy4KICAgICBBcmdzOgpAQCAtMTI5LDcgKzEzOCw3IEBAIGRlZiBleHRyYWN0X3BsYXRmb3Jt
cyhwYXRocyk6CiAgICAgZm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgIG1hdGNoID0gcmUubWF0
Y2gocidecGxhdGZvcm0vKC4qPykvJywgcGF0aCkKICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAg
ICAgICBwbGF0Zm9ybSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgICAgICBwbGF0Zm9ybSA9IGRp
cm5hbWVfdG9fcGxhdGZvcm0obWF0Y2guZ3JvdXAoMSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBwbGF0Zm9ybSA9IF9CQVNFX1BMQVRGT1JNCiAgICAgICAgIHBsYXRmb3Jtc1twbGF0Zm9y
bV0gPSBwYXRoCkBAIC0xNTMsMTAgKzE2MiwxMSBAQCBkZWYgaGFzX2ludGVybWVkaWF0ZV9yZXN1
bHRzKHRlc3QsIGZhbGxiYWNrcywgbWF0Y2hpbmdfcGxhdGZvcm0sCiAgICAgICAgIHBhdGhfZXhp
c3RzOiBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgdXMgdG8gc3R1YiBvdXQKICAgICAg
ICAgICAgIG9zLnBhdGguZXhpc3RzIGZvciB0ZXN0aW5nLgogICAgICIiIgotICAgIGZvciBwbGF0
Zm9ybSBpbiBmYWxsYmFja3M6CisgICAgZm9yIGRpcm5hbWUgaW4gZmFsbGJhY2tzOgorICAgICAg
ICBwbGF0Zm9ybSA9IGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSkKICAgICAgICAgaWYgcGxh
dGZvcm0gPT0gbWF0Y2hpbmdfcGxhdGZvcm06CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScs
IHBsYXRmb3JtLCB0ZXN0KQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oJ0xheW91
dFRlc3RzJywgJ3BsYXRmb3JtJywgZGlybmFtZSwgdGVzdCkKICAgICAgICAgaWYgcGF0aF9leGlz
dHModGVzdF9wYXRoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNl
CkBAIC0yMDAsNyArMjEwLDggQEAgZGVmIGZpbmRfZHVwcyhoYXNoZXMsIHBvcnRfZmFsbGJhY2tz
LCByZWxhdGl2ZV90byk6CiAgICAgICAgIGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXMua2V5cygp
OgogICAgICAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIHBvcnRfZmFjdG9yeS5hbGxfcG9ydF9u
YW1lcygpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb3IgZmFsbGJh
Y2sgaW4gcG9ydF9mYWxsYmFja3NbcGxhdGZvcm1dOgorICAgICAgICAgICAgZm9yIGRpcm5hbWUg
aW4gcG9ydF9mYWxsYmFja3NbcGxhdGZvcm1dOgorICAgICAgICAgICAgICAgIGZhbGxiYWNrID0g
ZGlybmFtZV90b19wbGF0Zm9ybShkaXJuYW1lKQogICAgICAgICAgICAgICAgIGlmIGZhbGxiYWNr
IG5vdCBpbiBwbGF0Zm9ybXMua2V5cygpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog
ICAgICAgICAgICAgICAgICMgV2UgaGF2ZSB0byB2ZXJpZnkgdGhhdCB0aGVyZSBpc24ndCBhbiBp
bnRlcm1lZGlhdGUgcmVzdWx0CkBAIC0yMTYsNyArMjI3LDcgQEAgZGVmIGZpbmRfZHVwcyhoYXNo
ZXMsIHBvcnRfZmFsbGJhY2tzLCByZWxhdGl2ZV90byk6CiAgICAgICAgICAgICAgICAgeWllbGQg
ewogICAgICAgICAgICAgICAgICAgICAndGVzdCc6IHRlc3QsCiAgICAgICAgICAgICAgICAgICAg
ICdwbGF0Zm9ybSc6IHBsYXRmb3JtLAotICAgICAgICAgICAgICAgICAgICAnZmFsbGJhY2snOiBm
YWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzogZGlybmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgJ3BhdGgnOiBwYXRoLAogICAgICAgICAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVz
dHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1
cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQppbmRleCA0N2RjOGEyZmZmNDUxNDUzMGVlMTYzZWVj
OWEzN2JkMTI3ZDM2YmIxLi4yOWZmOGQ1ZWZmNTZmOTBlZDk5MzIyMDRjZTI4ZTQ1OTFkZjI1ZmNi
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxp
Y2F0ZV90ZXN0c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQpAQCAtOTUsNyArOTUsNyBAQCBj
bGFzcyBMaXN0RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAg
IyBpbnRlcm1lZGlhdGUgcmVzdWx0cy4KICAgICAgICAgICAgIChGYWxzZSwgKCdmYXN0L2Zvby1l
eHBlY3RlZC50eHQnLAogICAgICAgICAgICAgICAgICAgICAgWydjaHJvbWl1bS13aW4nLCAnY2hy
b21pdW0nLCAnYmFzZSddLAotICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtLXdpbicsCisg
ICAgICAgICAgICAgICAgICAgICAnY2hyb21pdW0td2luLXdpbjcnLAogICAgICAgICAgICAgICAg
ICAgICAgbGFtYmRhIHBhdGg6IFRydWUpKSwKICAgICAgICAgICAgICMgU2luY2UgY2hyb21pdW0t
d2luIGhhcyBhIHJlc3VsdCwgd2UgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0LgogICAgICAg
ICAgICAgKFRydWUsICAoJ2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcsCkBAIC0xNTksMTIgKzE1OSwx
MiBAQCBjbGFzcyBMaXN0RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnYW5pbWFnZS5wbmcnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3BhdGgnOiAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvYW5pbWFnZS5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzog
J2Nocm9taXVtLXdpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiAn
Y2hyb21pdW0tbGludXgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6
ICdjaHJvbWl1bS1saW51eC14ODYnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
WzBdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnZm9vLWV4cGVjdGVkLnR4
dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9mb28tZXhwZWN0ZWQudHh0JywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4J30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2J30sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdFsxXSkKIAogICAgICAgICByZXN1bHQgPSBkZWR1cGxpY2F0
ZV90ZXN0cy5kZWR1cGxpY2F0ZSgnKi50eHQnKQpAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIExp
c3REdXBsaWNhdGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHsndGVzdCc6ICdmb28tZXhwZWN0ZWQudHh0JywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdwYXRoJzogJ0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zvby1l
eHBlY3RlZC50eHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzogJ2No
cm9taXVtLXdpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiAnY2hy
b21pdW0tbGludXgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdj
aHJvbWl1bS1saW51eC14ODYnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzBd
KQogCiAgICAgICAgIHJlc3VsdCA9IGRlZHVwbGljYXRlX3Rlc3RzLmRlZHVwbGljYXRlKCcqLnBu
ZycpCkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgTGlzdER1cGxpY2F0ZXNUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoeyd0ZXN0JzogJ2FuaW1hZ2Uu
cG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRoJzogJ0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hZ2UucG5nJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4J30sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2J30sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFswXSkKIAogICAgIGRlZiB0ZXN0X2dldF9yZWxhdGl2ZV90ZXN0
X3BhdGgoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkKaW5kZXggM2FhZjMwMjUwMTA3ZTA3MThkNTM4ZjY3N2UwNzJkNDU1NzExMjJh
YS4uMGMyOGQ0NDE4ZGMyYjk4ZjJkNDMwZGE1ODRlNWNiMjBjMTMxMWE3MiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtODksNiAr
ODksNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIGNvbmZpZz1Ob25l
LAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYuX25hbWUgPSBwb3J0
X25hbWUKKyAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gJ3g4NicKICAgICAgICAgc2VsZi5f
b3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucyBpcyBOb25lOgogICAg
ICAgICAgICAgIyBGSVhNRTogSWRlYWxseSB3ZSdkIGhhdmUgYSBwYWNrYWdlLXdpZGUgd2F5IHRv
IGdldCBhCkBAIC02NDcsNiArNjQ4LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAi
Y2hyb21pdW0tbWFjIiBvbiB0aGUgQ2hyb21pdW0gcG9ydHMuIiIiCiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoJ1BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lX3RvX25hbWUnKQogCisg
ICAgZGVmIGFyY2hpdGVjdHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FyY2hpdGVj
dHVyZQorCiAgICAgZGVmIHZlcnNpb24oc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYSBzdHJp
bmcgaW5kaWNhdGluZyB0aGUgdmVyc2lvbiBvZiBhIGdpdmVuIHBsYXRmb3JtLCBlLmcuCiAgICAg
ICAgICdsZW9wYXJkJyBvciAneHAnLgpAQCAtOTM5LDcgKzk0Myw3IEBAIGNsYXNzIFRlc3RDb25m
aWd1cmF0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICBwb3J0X3ZlcnNpb24gPSBwb3J0LnZlcnNp
b24oKQogICAgICAgICBzZWxmLm9zID0gb3Mgb3IgcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKS5y
ZXBsYWNlKCctJyArIHBvcnRfdmVyc2lvbiwgJycpCiAgICAgICAgIHNlbGYudmVyc2lvbiA9IHZl
cnNpb24gb3IgcG9ydF92ZXJzaW9uCi0gICAgICAgIHNlbGYuYXJjaGl0ZWN0dXJlID0gYXJjaGl0
ZWN0dXJlIG9yICd4ODYnCisgICAgICAgIHNlbGYuYXJjaGl0ZWN0dXJlID0gYXJjaGl0ZWN0dXJl
IG9yIHBvcnQuYXJjaGl0ZWN0dXJlKCkKICAgICAgICAgc2VsZi5idWlsZF90eXBlID0gYnVpbGRf
dHlwZSBvciBwb3J0Ll9vcHRpb25zLmNvbmZpZ3VyYXRpb24ubG93ZXIoKQogICAgICAgICBzZWxm
LmdyYXBoaWNzX3R5cGUgPSBncmFwaGljc190eXBlIG9yIHBvcnQuZ3JhcGhpY3NfdHlwZSgpCiAK
QEAgLTk1MCw3ICs5NTQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJhdGlvbihvYmplY3QpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXy5rZXlzKCkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgotICAgICAgICByZXR1cm4gKCI8JShvcylzLCAlKHZlcnNpb24pcywgJShidWlsZF90eXBlKXMs
ICUoZ3JhcGhpY3NfdHlwZSlzPiIgJQorICAgICAgICByZXR1cm4gKCI8JShvcylzLCAlKHZlcnNp
b24pcywgJShhcmNoaXRlY3R1cmUpcywgJShidWlsZF90eXBlKXMsICUoZ3JhcGhpY3NfdHlwZSlz
PiIgJQogICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18pCiAKICAgICBkZWYgX19yZXByX18o
c2VsZik6CkBAIC05ODIsNyArOTg2LDggQEAgY2xhc3MgVGVzdENvbmZpZ3VyYXRpb24ob2JqZWN0
KToKICAgICAgICAgICAgICAgICAoJ3dpbicsICd4cCcsICd4ODYnKSwKICAgICAgICAgICAgICAg
ICAoJ3dpbicsICd2aXN0YScsICd4ODYnKSwKICAgICAgICAgICAgICAgICAoJ3dpbicsICd3aW43
JywgJ3g4NicpLAotICAgICAgICAgICAgICAgICgnbGludXgnLCAnaGFyZHknLCAneDg2JykpCisg
ICAgICAgICAgICAgICAgKCdsaW51eCcsICdoYXJkeScsICd4ODYnKSwKKyAgICAgICAgICAgICAg
ICAoJ2xpbnV4JywgJ2hhcmR5JywgJ3g4Nl82NCcpKQogCiAgICAgZGVmIGFsbF9idWlsZF90eXBl
cyhzZWxmKToKICAgICAgICAgcmV0dXJuICgnZGVidWcnLCAncmVsZWFzZScpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9s
aW51eC5weQppbmRleCBhMTk5N2Q2MmM0OGM2ZDE0MTM3NWZiNTZhYWY0ZGE4MDdjYmMyNDVlLi44
MDVkYmUxNDBiM2YzMjUwYmY4MWE3MzNkZjIwMjYyZDgyM2VmODBmIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGlu
dXgucHkKQEAgLTQwLDEzICs0MCw2MiBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LmNocm9taXVtX2xpbnV4IikKIAogY2xhc3MgQ2hyb21pdW1M
aW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAiIiJDaHJvbWl1bSBMaW51eCBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCdwb3J0X25hbWUnLCAn
Y2hyb21pdW0tbGludXgnKQotICAgICAgICBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuX19pbml0X18o
c2VsZiwgKiprd2FyZ3MpCisgICAgU1VQUE9SVEVEX0FSQ0hJVEVDVFVSRVMgPSAoJ3g4NicsICd4
ODZfNjQnKQorCisgICAgRkFMTEJBQ0tfUEFUSFMgPSB7CisgICAgICAgICd4ODZfNjQnOiBbJ2No
cm9taXVtLWxpbnV4LXg4Nl82NCcsICdjaHJvbWl1bS1saW51eCcsICdjaHJvbWl1bS13aW4nLCAn
Y2hyb21pdW0nLCAnd2luJywgJ21hYyddLAorICAgICAgICAneDg2JzogWydjaHJvbWl1bS1saW51
eCcsICdjaHJvbWl1bS13aW4nLCAnY2hyb21pdW0nLCAnd2luJywgJ21hYyddLAorICAgIH0KKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9uZSwgcmViYXNlbGluaW5nPUZhbHNl
LCAqKmt3YXJncyk6CisgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZSBvciAnY2hyb21pdW0t
bGludXgnCisgICAgICAgIGNocm9taXVtLkNocm9taXVtUG9ydC5fX2luaXRfXyhzZWxmLCBwb3J0
X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKKworICAgICAgICAjIFdlIHJlLXNldCB0aGUgcG9y
dCBuYW1lIG9uY2UgdGhlIGJhc2Ugb2JqZWN0IGlzIGZ1bGx5IGluaXRpYWxpemVkCisgICAgICAg
ICMgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBmaW5kIHRoZSBEUlQgYmluYXJ5IHByb3Blcmx5Lgor
ICAgICAgICBpZiBwb3J0X25hbWUuZW5kc3dpdGgoJy1saW51eCcpIGFuZCBub3QgcmViYXNlbGlu
aW5nOgorICAgICAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gc2VsZi5fZGV0ZXJtaW5lX2Fy
Y2hpdGVjdHVyZSgpCisgICAgICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIGFuIHVnbHkgaGFjayB0
byBhdm9pZCByZW5hbWluZyB0aGUgR1BVIHBvcnQuCisgICAgICAgICAgICBpZiBwb3J0X25hbWUu
c3RhcnRzd2l0aCgnY2hyb21pdW0tbGludXgnKToKKyAgICAgICAgICAgICAgICBwb3J0X25hbWUg
PSBwb3J0X25hbWUgKyAnLScgKyBzZWxmLl9hcmNoaXRlY3R1cmUKKyAgICAgICAgZWxpZiByZWJh
c2VsaW5pbmc6CisgICAgICAgICAgICBzZWxmLl9hcmNoaXRlY3R1cmUgPSAneDg2JworICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgYmFzZSwgYXJjaCA9IHBvcnRfbmFtZS5yc3BsaXQoJy0nLCAx
KQorICAgICAgICAgICAgYXNzZXJ0IGJhc2UgaW4gKCdjaHJvbWl1bS1saW51eCcsICdjaHJvbWl1
bS1ncHUtbGludXgnKQorICAgICAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gYXJjaAorICAg
ICAgICBhc3NlcnQgc2VsZi5fYXJjaGl0ZWN0dXJlIGluIHNlbGYuU1VQUE9SVEVEX0FSQ0hJVEVD
VFVSRVMKKyAgICAgICAgYXNzZXJ0IHBvcnRfbmFtZSBpbiAoJ2Nocm9taXVtLWxpbnV4JywgJ2No
cm9taXVtLWdwdS1saW51eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1
bS1saW51eC14ODYnLCAnY2hyb21pdW0tbGludXgteDg2XzY0JykKKyAgICAgICAgc2VsZi5fbmFt
ZSA9IHBvcnRfbmFtZQorCisgICAgZGVmIF9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKHNlbGYpOgor
ICAgICAgICBkcml2ZXJfcGF0aCA9IHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkKKyAgICAgICAgZmls
ZV9vdXRwdXQgPSAnJworICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhkcml2ZXJf
cGF0aCk6CisgICAgICAgICAgICBmaWxlX291dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29t
bWFuZChbJ2ZpbGUnLCBkcml2ZXJfcGF0aF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPVRydWUpCisKKyAgICAgICAg
aWYgJ0VMRiAzMi1iaXQgTFNCIGV4ZWN1dGFibGUnIGluIGZpbGVfb3V0cHV0OgorICAgICAgICAg
ICAgcmV0dXJuICd4ODYnCisgICAgICAgIGlmICdFTEYgNjQtYml0IExTQiBleGVjdXRhYmxlJyBp
biBmaWxlX291dHB1dDoKKyAgICAgICAgICAgIHJldHVybiAneDg2XzY0JworICAgICAgICBpZiBm
aWxlX291dHB1dDoKKyAgICAgICAgICAgIF9sb2cud2FybmluZygnQ291bGQgbm90IGRldGVybWlu
ZSBhcmNoaXRlY3R1cmUgZnJvbSAiZmlsZSIgb3V0cHV0OiAlcycgJSBmaWxlX291dHB1dCkKKwor
ICAgICAgICAjIFdlIGRvbid0IGtub3cgd2hhdCB0aGUgYXJjaGl0ZWN0dXJlIGlzOyBkZWZhdWx0
IHRvICd4ODYnIGJlY2F1c2UKKyAgICAgICAgIyBtYXliZSB3ZSdyZSByZWJhc2VsaW5pbmcgYW5k
IHRoZSBiaW5hcnkgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKKyAgICAgICAgIyBvciBzb21ldGhp
bmcgZWxzZSB3ZWlyZCBpcyBnb2luZyBvbi4gSXQncyBva2F5IHRvIGRvIHRoaXMgYmVjYXVzZQor
ICAgICAgICAjIGlmIHdlIGFjdHVhbGx5IHRyeSB0byB1c2UgdGhlIGJpbmFyeSwgY2hlY2tfYnVp
bGQoKSBzaG91bGQgZmFpbC4KKyAgICAgICAgcmV0dXJuICd4ODYnCisKKyAgICBkZWYgYmFzZWxp
bmVfcGF0aChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYXJjaGl0ZWN0dXJlID09ICd4ODZfNjQn
OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNlbGYuX25h
bWUpCisgICAgICAgIHJldHVybiBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0t
bGludXgnKQogCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgotICAgICAgICBw
b3J0X25hbWVzID0gWyJjaHJvbWl1bS1saW51eCIsICJjaHJvbWl1bS13aW4iLCAiY2hyb21pdW0i
LCAid2luIiwgIm1hYyJdCisgICAgICAgIHBvcnRfbmFtZXMgPSBzZWxmLkZBTExCQUNLX1BBVEhT
W3NlbGYuX2FyY2hpdGVjdHVyZV0KICAgICAgICAgcmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFz
ZWxpbmVfcGF0aCwgcG9ydF9uYW1lcykKIAogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVk
c19odHRwKToKQEAgLTc1LDggKzEyNCw4IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9t
aXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiAnbGludXgnCiAKICAgICBkZWYgdmVy
c2lvbihzZWxmKToKLSAgICAgICAgIyBXZSBkb24ndCBoYXZlIGRpZmZlcmVudCB2ZXJzaW9ucyBv
biBsaW51eC4KLSAgICAgICAgcmV0dXJuICcnCisgICAgICAgICMgRklYTUU6IGFkZCBzdXBwb3J0
IGZvciBMdWNpZC4KKyAgICAgICAgcmV0dXJuICdoYXJkeScKIAogICAgICMKICAgICAjIFBST1RF
Q1RFRCBNRVRIT0RTCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weQppbmRleCAx
ZTRkNzQwNmJmNzAyOTBjNDJjYmFiODhlNGZlOTE5Y2Q2MWMwZWE3Li4wNWVjMDY3NWE0NTFlYTM1
NTJiMTEyMGYxOGUyMmE3MmJhODAyZTdiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5p
dHRlc3QucHkKQEAgLTI4LDYgKzI4LDkgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlX21vY2sKK2Zyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCisKIGZyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGNocm9taXVtX2xpbnV4CiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiAKQEAgLTM4LDYgKzQxLDY0IEBAIGNs
YXNzIENocm9taXVtTGludXhQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAg
ICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gY2hyb21pdW1fbGludXguQ2hy
b21pdW1MaW51eFBvcnQKIAorICAgIGRlZiBhc3NlcnRfYXJjaGl0ZWN0dXJlKHNlbGYsIHBvcnRf
bmFtZT1Ob25lLCBmaWxlX291dHB1dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX2FyY2hpdGVjdHVyZT1Ob25lKToKKyAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVz
eXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbSgpCisgICAgICAgIGZpbGVzeXN0ZW0uZXhpc3RzID0g
bGFtYmRhIHg6ICdEdW1wUmVuZGVyVHJlZScgaW4geAorICAgICAgICBleGVjdXRpdmUgPSBOb25l
CisgICAgICAgIGlmIGZpbGVfb3V0cHV0OgorICAgICAgICAgICAgZXhlY3V0aXZlID0gZXhlY3V0
aXZlX21vY2suTW9ja0V4ZWN1dGl2ZTIoZmlsZV9vdXRwdXQpCisKKyAgICAgICAgcG9ydCA9IGNo
cm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KHBvcnRfbmFtZT1wb3J0X25hbWUsCisgICAg
ICAgICAgICBleGVjdXRpdmU9ZXhlY3V0aXZlLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYXJjaGl0ZWN0dXJlKCksIGV4cGVjdGVkX2FyY2hp
dGVjdHVyZSkKKyAgICAgICAgaWYgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlID09ICd4ODYnOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuYmFzZWxpbmVfcGF0aCgpLmVuZHN3aXRoKCdj
aHJvbWl1bS1saW51eCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuYmFzZWxp
bmVfc2VhcmNoX3BhdGgoKVswXS5lbmRzd2l0aCgnY2hyb21pdW0tbGludXgnKSkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmJhc2VsaW5lX3BhdGgoKS5l
bmRzd2l0aCgnY2hyb21pdW0tbGludXgteDg2XzY0JykpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpWzBdLmVuZHN3aXRoKCdjaHJvbWl1bS1s
aW51eC14ODZfNjQnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmJhc2VsaW5l
X3NlYXJjaF9wYXRoKClbMV0uZW5kc3dpdGgoJ2Nocm9taXVtLWxpbnV4JykpCisKKyAgICBkZWYg
dGVzdF9hcmNoaXRlY3R1cmVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9hcmNoaXRlY3R1
cmUocG9ydF9uYW1lPSdjaHJvbWl1bS1saW51eC14ODYnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlPSd4ODYnKQorICAgICAgICBzZWxmLmFz
c2VydF9hcmNoaXRlY3R1cmUocG9ydF9uYW1lPSdjaHJvbWl1bS1saW51eC14ODZfNjQnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlPSd4ODZf
NjQnKQorICAgICAgICBzZWxmLmFzc2VydF9hcmNoaXRlY3R1cmUoZmlsZV9vdXRwdXQ9J0VMRiAz
Mi1iaXQgTFNCIGV4ZWN1dGFibGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlPSd4ODYnKQorICAgICAgICBzZWxmLmFzc2VydF9hcmNoaXRl
Y3R1cmUoZmlsZV9vdXRwdXQ9J0VMRiA2NC1iaXQgTFNCIGV4ZWN1dGFibGUnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlPSd4ODZfNjQnKQor
CisgICAgZGVmIHRlc3RfY2hlY2tfaWxsZWdhbF9wb3J0X25hbWVzKHNlbGYpOgorICAgICAgICAj
IEZJWE1FOiBDaGVjayB0aGF0LCBmb3Igbm93LCB0aGVzZSBhcmUgaWxsZWdhbCBwb3J0IG5hbWVz
LgorICAgICAgICAjIEV2ZW50dWFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gdGhlIHJpZ2h0
IHRoaW5nIGhlcmUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBj
aHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9ydF9uYW1lPSdjaHJvbWl1bS14ODYtbGludXgnKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhBc3NlcnRpb25FcnJvciwgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZT0nY2hyb21pdW0tbGludXgteDg2LWdw
dScpCisKKyAgICBkZWYgdGVzdF9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlX2ZhaWxzKHNlbGYpOgor
ICAgICAgICAjIFRlc3QgdGhhdCB3ZSBkZWZhdWx0IHRvICd4ODYnIGlmIHRoZSBkcml2ZXIgZG9l
c24ndCBleGlzdC4KKyAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW1fbW9jay5Nb2NrRmls
ZVN5c3RlbSgpCisgICAgICAgIHBvcnQgPSBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9y
dChmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQu
YXJjaGl0ZWN0dXJlKCksICd4ODYnKQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIGRlZmF1bHQg
dG8gJ3g4Nicgb24gYW4gdW5rbm93biBhcmNoaXRlY3R1cmUuCisgICAgICAgIGZpbGVzeXN0ZW0g
PSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBmaWxlc3lzdGVtLmV4
aXN0cyA9IGxhbWJkYSB4OiBUcnVlCisgICAgICAgIGV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2Nr
Lk1vY2tFeGVjdXRpdmUyKCd3aW4zMicpCisgICAgICAgIHBvcnQgPSBjaHJvbWl1bV9saW51eC5D
aHJvbWl1bUxpbnV4UG9ydChmaWxlc3lzdGVtPWZpbGVzeXN0ZW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9ZXhlY3V0aXZlKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0LmFyY2hpdGVjdHVyZSgpLCAneDg2JykKKworICAg
ICAgICAjIFRlc3QgdGhhdCB3ZSByYWlzZSBlcnJvcnMgaWYgc29tZXRoaW5nIHdlaXJkIGhhcHBl
bnMuCisgICAgICAgIGZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0o
KQorICAgICAgICBmaWxlc3lzdGVtLmV4aXN0cyA9IGxhbWJkYSB4OiBUcnVlCisgICAgICAgIGV4
ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKGV4Y2VwdGlvbj1Bc3NlcnRp
b25FcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGNocm9t
aXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWxlc3lzdGVtPWZpbGVzeXN0ZW0sIGV4ZWN1dGl2ZT1leGVjdXRpdmUpCisKIAogaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQppbmRleCBhMTk3MWU0
Y2VmM2U2MTVkMGNmMWY4ZDQ4YTU4Mzk4M2JjYjVjYzhkLi42ODNkYmEzZDY4NzI1ZDkxNjUzZmEx
ZWMwODkxNjc2ZDM1NDUwM2RmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5CkBAIC0zNiwxNiArMzYsMTQgQEAgaW1wb3J0IHN5
cwogZGVmIGFsbF9wb3J0X25hbWVzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgdmFs
aWQsIGZ1bGx5LXNwZWNpZmllZCwgInJlYWwiIHBvcnQgbmFtZXMuCiAKLSAgICBUaGlzIGlzIHRo
ZSBsaXN0IG9mIG5hbWVzIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBkaXJlY3RseSBhbmQgY2FuIGJl
Ci0gICAgcmV0dXJuZWQgYXMgYSB2YWx1ZSBmcm9tIHBvcnQubmFtZSgpLiBUaGlzIGRvZXMgbm90
IGluY2x1ZGUgYW55Ci0gICAgImZha2UiIG5hbWVzIGxpa2UgInRlc3QiIG9yICJtb2NrLW1hYyIs
IGFuZCBpdCBkb2VzIG5vdCBpbmNsdWRlIGFueQotICAgIHNob3J0Y3V0IG5hbWVzIGxpa2UgImNo
cm9taXVtLXdpbiIgdGhhdCB3b3VsZCBnZXQgZXhwYW5kZWQgdG8KLSAgICAiY2hyb21pdW0td2lu
LXhwIi4iIiIKKyAgICBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgYXJlIHVz
ZWQgYXMgYWN0dWFsIGJhc2VsaW5lX3BhdGhzKCkKKyAgICBieSByZWFsIHBvcnRzLiBUaGlzIGRv
ZXMgbm90IGluY2x1ZGUgYW55ICJmYWtlIiBuYW1lcyBsaWtlICJ0ZXN0IgorICAgIG9yICJtb2Nr
LW1hYyIsIGFuZCBpdCBkb2VzIG5vdCBpbmNsdWRlIGFueSBkaXJlY3RvcmllcyB0aGF0IGFyZSBu
b3QgLiIiIgogICAgICMgRklYTUU6IFRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGdl
bmVyYXRlIHRoaXMgbGlzdCAuLi4KICAgICByZXR1cm4gWydjaHJvbWl1bS1ncHUtbGludXgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtLWdwdS1tYWMtc25vd2xlb3BhcmQnLCAnY2hyb21pdW0tZ3B1
LW1hYy1sZW9wYXJkJywKICAgICAgICAgICAgICdjaHJvbWl1bS1ncHUtd2luLXhwJywgJ2Nocm9t
aXVtLWdwdS13aW4tdmlzdGEnLCAnY2hyb21pdW0tZ3B1LXdpbi13aW43JywKLSAgICAgICAgICAg
ICdjaHJvbWl1bS1saW51eCcsCisgICAgICAgICAgICAnY2hyb21pdW0tbGludXgteDg2XzY0Jywg
J2Nocm9taXVtLWxpbnV4LXg4NicsCiAgICAgICAgICAgICAnY2hyb21pdW0tbWFjLWxlb3BhcmQn
LCAnY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkJywKICAgICAgICAgICAgICdjaHJvbWl1bS13aW4t
eHAnLCAnY2hyb21pdW0td2luLXZpc3RhJywgJ2Nocm9taXVtLXdpbi13aW43JywKICAgICAgICAg
ICAgICdnb29nbGUtY2hyb21lLWxpbnV4MzInLCAnZ29vZ2xlLWNocm9tZS1saW51eDY0JywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xl
X2Nocm9tZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29v
Z2xlX2Nocm9tZS5weQppbmRleCBhZTkwMzc0MjAwNzc5ZWYwZWU4MDljZWMxMDVlNWM1YmU0Zjg3
YzQ2Li45Mjg5N2RkN2RkYzJlYjRlMWJmMTM5N2JlN2ZhODJmOGM4YjNkZmRkIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVf
Y2hyb21lLnB5CkBAIC00NSw2ICs0NSw4IEBAIGRlZiBHZXRHb29nbGVDaHJvbWVQb3J0KCoqa3dh
cmdzKToKICAgICAiIiJTb21lIHRlc3RzIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IHJlc3VsdHMg
d2hlbiBjb21waWxlZCBhcyBHb29nbGUKICAgICBDaHJvbWUgdnMgQ2hyb21pdW0uICBJbiB0aG9z
ZSBjYXNlcywgd2UgcHJlcGVuZCBhbiBhZGRpdGlvbmFsIGRpcmVjdG9yeSB0bwogICAgIHRvIHRo
ZSBiYXNlbGluZSBwYXRocy4iIiIKKyAgICAjIEZJWE1FOiBUaGlzIHdob2xlIHJvdXRpbmUgaXMg
YSB0cmVtZW5kb3VzIGhhY2sgdGhhdCBuZWVkcyB0byBiZSBjbGVhbmVkIHVwLgorCiAgICAgcG9y
dF9uYW1lID0ga3dhcmdzWydwb3J0X25hbWUnXQogICAgIGRlbCBrd2FyZ3NbJ3BvcnRfbmFtZSdd
CiAgICAgaWYgcG9ydF9uYW1lID09ICdnb29nbGUtY2hyb21lLWxpbnV4MzInOgpAQCAtNjIsNyAr
NjQsMTMgQEAgZGVmIEdldEdvb2dsZUNocm9tZVBvcnQoKiprd2FyZ3MpOgogICAgICAgICAgICAg
ICAgIHJldHVybiBfdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYsCiAgICAgICAgICAg
ICAgICAgICAgIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KQogCi0gICAgICAgIHJl
dHVybiBHb29nbGVDaHJvbWVMaW51eDMyUG9ydCgqKmt3YXJncykKKyAgICAgICAgICAgIGRlZiBh
cmNoaXRlY3R1cmUoc2VsZik6CisgICAgICAgICAgICAgICAgIyBCZWNhdXNlIHdlJ3JlIHNwZWNp
ZnlpbmcgY2hyb21pdW0tbGludXgtODYgYmVsb3csIHdlCisgICAgICAgICAgICAgICAgIyBkb24n
dCByZWFsbHkgbmVlZCB0aGlzIGxpbmUsIGJ1dCBpdCBpcyBwcm9iYWJseSBzbGlnaHRseQorICAg
ICAgICAgICAgICAgICMgY2xlYXJlciB0byBoYXZlIGl0LgorICAgICAgICAgICAgICAgIHJldHVy
biAneDg2JworCisgICAgICAgIHJldHVybiBHb29nbGVDaHJvbWVMaW51eDMyUG9ydChwb3J0X25h
bWU9J2Nocm9taXVtLWxpbnV4LXg4NicsICoqa3dhcmdzKQogICAgIGVsaWYgcG9ydF9uYW1lID09
ICdnb29nbGUtY2hyb21lLWxpbnV4NjQnOgogICAgICAgICBpbXBvcnQgY2hyb21pdW1fbGludXgK
IApAQCAtNzgsNyArODYsMTAgQEAgZGVmIEdldEdvb2dsZUNocm9tZVBvcnQoKiprd2FyZ3MpOgog
ICAgICAgICAgICAgICAgIHJldHVybiBfdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYs
CiAgICAgICAgICAgICAgICAgICAgIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KQog
Ci0gICAgICAgIHJldHVybiBHb29nbGVDaHJvbWVMaW51eDY0UG9ydCgqKmt3YXJncykKKyAgICAg
ICAgICAgIGRlZiBhcmNoaXRlY3R1cmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICd4
ODZfNjQnCisKKyAgICAgICAgcmV0dXJuIEdvb2dsZUNocm9tZUxpbnV4NjRQb3J0KHBvcnRfbmFt
ZT0nY2hyb21pdW0tbGludXgteDg2JywgKiprd2FyZ3MpCiAgICAgZWxpZiBwb3J0X25hbWUuc3Rh
cnRzd2l0aCgnZ29vZ2xlLWNocm9tZS1tYWMnKToKICAgICAgICAgaW1wb3J0IGNocm9taXVtX21h
YwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84495</attachid>
            <date>2011-03-02 17:30:30 -0800</date>
            <delta_ts>2011-03-02 17:30:48 -0800</delta_ts>
            <desc>more review feedback from tony</desc>
            <filename>bug-55535-20110302173029.patch</filename>
            <type>text/plain</type>
            <size>21856</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAwNjgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwOThkZTE0ZTg3OTg4NTM4ZDNhOTZiNTZkNDI3MmMyOWRk
NDlhNGY3Li5hNTBlMzNlYjVhNGM5YzA5ZTU4OWZjNTQzNzUxNTQ0M2E2NjlkNDA0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDMtMDEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlJXVCAtIGltcGxl
bWVudCBMaW51eCBIYXJkeSA2NC1iaXQgcG9ydCBzdXBwb3J0LiBUaGlzIGludm9sdmVzCisgICAg
ICAgIGFkZGluZyBzdXBwb3J0IGZvciBub24tJ3g4NicgYXJjaGl0ZWN0dXJlcyBhbmQgdXBkYXRp
bmcgdGhlCisgICAgICAgICJkZWR1cGxpY2F0ZV90ZXN0cyIgc2NyaXB0IHRvIGNvcnJlY3RseSB1
bmRlcnN0YW5kIHRoYXQKKyAgICAgICAgcG9ydC5uYW1lKCkgaXMgbm90IGFsd2F5cyBlcXVhbCB0
byBiYXNlbmFtZShwb3J0LmJhc2VsaW5lX3BhdGgoKSkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aW50cm9kdWNlcyB0d28gbmV3IHBvcnQgbmFtZXM6ICdjaHJvbWl1bS1saW51eC14ODYnCisgICAg
ICAgIGFuZCAnY2hyb21pdW0tbGludXgteDg2XzY0Jy4gVXNpbmcgdGhlIHByaW9yICdjaHJvbWl1
bS1saW51eCcKKyAgICAgICAgZmxhZyB3aWxsIGNhdXNlIHRoZSBjb2RlIHRvIGRldGVybWluZSB3
aGljaCBvbmUgdG8gdXNlIGF0CisgICAgICAgIHJ1bnRpbWUsIGp1c3QgbGlrZSB3ZSBjdXJyZW50
bHkgZG8gd2l0aCAnY2hyb21pdW0td2luJy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU1MzUKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weToKKyAgICAgICAgICBIYW5kbGUgJ3JldHVy
bl9zdGRlcnInIGtleXdvcmQgYXJnIHRvIHJ1bl9jb21tYW5kKCkKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0cy5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9s
aW51eC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHk6CisKIDIwMTEtMDItMjMgIEpvc2VwaCBQ
ZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZXhlY3V0aXZlX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZXhlY3V0aXZlX21vY2sucHkKaW5kZXggOTQzYjcwYzQyZGYxYWRjOGNjYmE3N2EwMDNl
OGIzMWQwNzkwYjdhMS4uMzY3NzMyYzBlY2E5YWQ1MjUzZWI3MWQzZmIwZTRmYmNkNjI3ZDc0MyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2
ZV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVj
dXRpdmVfbW9jay5weQpAQCAtMzUsOCArMzUsOSBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0gaW1wb3J0IGV4ZWN1dGl2ZQogCiBjbGFzcyBNb2NrRXhlY3V0aXZlMihvYmplY3QpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvdXRwdXQ9JycsIGV4aXRfY29kZT0wLCBleGNlcHRpb249Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgcnVuX2NvbW1hbmRfZm49Tm9uZSk6CisgICAgICAgICAgICAg
ICAgIHJ1bl9jb21tYW5kX2ZuPU5vbmUsIHN0ZGVycj0nJyk6CiAgICAgICAgIHNlbGYuX291dHB1
dCA9IG91dHB1dAorICAgICAgICBzZWxmLl9zdGRlcnIgPSBzdGRlcnIKICAgICAgICAgc2VsZi5f
ZXhpdF9jb2RlID0gZXhpdF9jb2RlCiAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IGV4Y2VwdGlv
bgogICAgICAgICBzZWxmLl9ydW5fY29tbWFuZF9mbiA9IHJ1bl9jb21tYW5kX2ZuCkBAIC01MSw3
ICs1Miw3IEBAIGNsYXNzIE1vY2tFeGVjdXRpdmUyKG9iamVjdCk6CiAgICAgICAgIHBhc3MKIAog
ICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdfbGlzdCwgZXJyb3JfaGFuZGxlcj1Ob25lLCBy
ZXR1cm5fZXhpdF9jb2RlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBkZWNvZGVfb3V0cHV0
PUZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSwgcmV0dXJu
X3N0ZGVycj1GYWxzZSk6CiAgICAgICAgIGlmIHNlbGYuX2V4Y2VwdGlvbjoKICAgICAgICAgICAg
IHJhaXNlIHNlbGYuX2V4Y2VwdGlvbgogICAgICAgICBpZiByZXR1cm5fZXhpdF9jb2RlOgpAQCAt
NjMsNSArNjQsNiBAQCBjbGFzcyBNb2NrRXhlY3V0aXZlMihvYmplY3QpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRfY29kZT1zZWxmLl9leGl0
X2NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0PXNlbGYuX291dHB1dCkKICAgICAgICAgICAgIGVycm9yX2hhbmRsZXIoc2NyaXB0X2Vy
cm9yKQotCisgICAgICAgIGlmIHJldHVybl9zdGRlcnI6CisgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fb3V0cHV0ICsgc2VsZi5fc3RkZXJyCiAgICAgICAgIHJldHVybiBzZWxmLl9vdXRwdXQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2RlZHVwbGljYXRl
X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNh
dGVfdGVzdHMucHkKaW5kZXggNmUxNjFmY2JkZjBkZGVjYWEyYjJlMGFjZGQ1NGJjYmFiYjQwZjFl
YS4uNTQ3MmRmZTEzZjZmNmY1ZjMwMjkxNTIwZmQ2NWY3ZjQyZTNiYjNkZCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVzdHMucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVz
dHMucHkKQEAgLTExOCw2ICsxMTgsMTUgQEAgZGVmIGNsdXN0ZXJfZmlsZV9oYXNoZXMoZ2xvYl9w
YXR0ZXJuKToKICAgICByZXR1cm4gcGFyc2VfZ2l0X291dHB1dChnaXRfb3V0cHV0LCBnbG9iX3Bh
dHRlcm4pCiAKIAorZGVmIGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSk6CisgICAgaWYgZGly
bmFtZSA9PSAnY2hyb21pdW0tbGludXgnOgorICAgICAgICByZXR1cm4gJ2Nocm9taXVtLWxpbnV4
LXg4NicKKyAgICBlbGlmIGRpcm5hbWUgPT0gJ2Nocm9taXVtLXdpbic6CisgICAgICAgIHJldHVy
biAnY2hyb21pdW0td2luLXdpbjcnCisgICAgZWxpZiBkaXJuYW1lID09ICdjaHJvbWl1bS1tYWMn
OgorICAgICAgICByZXR1cm4gJ2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZCcKKyAgICByZXR1cm4g
ZGlybmFtZQorCiBkZWYgZXh0cmFjdF9wbGF0Zm9ybXMocGF0aHMpOgogICAgICIiIkV4dHJhY3Rz
IHRoZSBwbGF0Zm9ybXMgZnJvbSBhIGxpc3Qgb2YgcGF0aHMgbWF0Y2hpbmcgXnBsYXRmb3JtLygu
Kj8pLy4KICAgICBBcmdzOgpAQCAtMTI5LDcgKzEzOCw3IEBAIGRlZiBleHRyYWN0X3BsYXRmb3Jt
cyhwYXRocyk6CiAgICAgZm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgIG1hdGNoID0gcmUubWF0
Y2gocidecGxhdGZvcm0vKC4qPykvJywgcGF0aCkKICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAg
ICAgICBwbGF0Zm9ybSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgICAgICBwbGF0Zm9ybSA9IGRp
cm5hbWVfdG9fcGxhdGZvcm0obWF0Y2guZ3JvdXAoMSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBwbGF0Zm9ybSA9IF9CQVNFX1BMQVRGT1JNCiAgICAgICAgIHBsYXRmb3Jtc1twbGF0Zm9y
bV0gPSBwYXRoCkBAIC0xNTMsMTAgKzE2MiwxMSBAQCBkZWYgaGFzX2ludGVybWVkaWF0ZV9yZXN1
bHRzKHRlc3QsIGZhbGxiYWNrcywgbWF0Y2hpbmdfcGxhdGZvcm0sCiAgICAgICAgIHBhdGhfZXhp
c3RzOiBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgdXMgdG8gc3R1YiBvdXQKICAgICAg
ICAgICAgIG9zLnBhdGguZXhpc3RzIGZvciB0ZXN0aW5nLgogICAgICIiIgotICAgIGZvciBwbGF0
Zm9ybSBpbiBmYWxsYmFja3M6CisgICAgZm9yIGRpcm5hbWUgaW4gZmFsbGJhY2tzOgorICAgICAg
ICBwbGF0Zm9ybSA9IGRpcm5hbWVfdG9fcGxhdGZvcm0oZGlybmFtZSkKICAgICAgICAgaWYgcGxh
dGZvcm0gPT0gbWF0Y2hpbmdfcGxhdGZvcm06CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScs
IHBsYXRmb3JtLCB0ZXN0KQorICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oJ0xheW91
dFRlc3RzJywgJ3BsYXRmb3JtJywgZGlybmFtZSwgdGVzdCkKICAgICAgICAgaWYgcGF0aF9leGlz
dHModGVzdF9wYXRoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNl
CkBAIC0yMDAsNyArMjEwLDggQEAgZGVmIGZpbmRfZHVwcyhoYXNoZXMsIHBvcnRfZmFsbGJhY2tz
LCByZWxhdGl2ZV90byk6CiAgICAgICAgIGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXMua2V5cygp
OgogICAgICAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIHBvcnRfZmFjdG9yeS5hbGxfcG9ydF9u
YW1lcygpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb3IgZmFsbGJh
Y2sgaW4gcG9ydF9mYWxsYmFja3NbcGxhdGZvcm1dOgorICAgICAgICAgICAgZm9yIGRpcm5hbWUg
aW4gcG9ydF9mYWxsYmFja3NbcGxhdGZvcm1dOgorICAgICAgICAgICAgICAgIGZhbGxiYWNrID0g
ZGlybmFtZV90b19wbGF0Zm9ybShkaXJuYW1lKQogICAgICAgICAgICAgICAgIGlmIGZhbGxiYWNr
IG5vdCBpbiBwbGF0Zm9ybXMua2V5cygpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQog
ICAgICAgICAgICAgICAgICMgV2UgaGF2ZSB0byB2ZXJpZnkgdGhhdCB0aGVyZSBpc24ndCBhbiBp
bnRlcm1lZGlhdGUgcmVzdWx0CkBAIC0yMTYsNyArMjI3LDcgQEAgZGVmIGZpbmRfZHVwcyhoYXNo
ZXMsIHBvcnRfZmFsbGJhY2tzLCByZWxhdGl2ZV90byk6CiAgICAgICAgICAgICAgICAgeWllbGQg
ewogICAgICAgICAgICAgICAgICAgICAndGVzdCc6IHRlc3QsCiAgICAgICAgICAgICAgICAgICAg
ICdwbGF0Zm9ybSc6IHBsYXRmb3JtLAotICAgICAgICAgICAgICAgICAgICAnZmFsbGJhY2snOiBm
YWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzogZGlybmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgJ3BhdGgnOiBwYXRoLAogICAgICAgICAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvZGVkdXBsaWNhdGVfdGVz
dHNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1
cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQppbmRleCA0N2RjOGEyZmZmNDUxNDUzMGVlMTYzZWVj
OWEzN2JkMTI3ZDM2YmIxLi4yOWZmOGQ1ZWZmNTZmOTBlZDk5MzIyMDRjZTI4ZTQ1OTFkZjI1ZmNi
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9kZWR1cGxp
Y2F0ZV90ZXN0c191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9kZWR1cGxpY2F0ZV90ZXN0c191bml0dGVzdC5weQpAQCAtOTUsNyArOTUsNyBAQCBj
bGFzcyBMaXN0RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAg
IyBpbnRlcm1lZGlhdGUgcmVzdWx0cy4KICAgICAgICAgICAgIChGYWxzZSwgKCdmYXN0L2Zvby1l
eHBlY3RlZC50eHQnLAogICAgICAgICAgICAgICAgICAgICAgWydjaHJvbWl1bS13aW4nLCAnY2hy
b21pdW0nLCAnYmFzZSddLAotICAgICAgICAgICAgICAgICAgICAgJ2Nocm9taXVtLXdpbicsCisg
ICAgICAgICAgICAgICAgICAgICAnY2hyb21pdW0td2luLXdpbjcnLAogICAgICAgICAgICAgICAg
ICAgICAgbGFtYmRhIHBhdGg6IFRydWUpKSwKICAgICAgICAgICAgICMgU2luY2UgY2hyb21pdW0t
d2luIGhhcyBhIHJlc3VsdCwgd2UgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0LgogICAgICAg
ICAgICAgKFRydWUsICAoJ2Zhc3QvZm9vLWV4cGVjdGVkLnR4dCcsCkBAIC0xNTksMTIgKzE1OSwx
MiBAQCBjbGFzcyBMaXN0RHVwbGljYXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnYW5pbWFnZS5wbmcnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3BhdGgnOiAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvYW5pbWFnZS5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzog
J2Nocm9taXVtLXdpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiAn
Y2hyb21pdW0tbGludXgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6
ICdjaHJvbWl1bS1saW51eC14ODYnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
WzBdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7J3Rlc3QnOiAnZm9vLWV4cGVjdGVkLnR4
dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9mb28tZXhwZWN0ZWQudHh0JywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4J30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2J30sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdFsxXSkKIAogICAgICAgICByZXN1bHQgPSBkZWR1cGxpY2F0
ZV90ZXN0cy5kZWR1cGxpY2F0ZSgnKi50eHQnKQpAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIExp
c3REdXBsaWNhdGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHsndGVzdCc6ICdmb28tZXhwZWN0ZWQudHh0JywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdwYXRoJzogJ0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zvby1l
eHBlY3RlZC50eHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrJzogJ2No
cm9taXVtLXdpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiAnY2hy
b21pdW0tbGludXgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdj
aHJvbWl1bS1saW51eC14ODYnfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzBd
KQogCiAgICAgICAgIHJlc3VsdCA9IGRlZHVwbGljYXRlX3Rlc3RzLmRlZHVwbGljYXRlKCcqLnBu
ZycpCkBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgTGlzdER1cGxpY2F0ZXNUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoeyd0ZXN0JzogJ2FuaW1hZ2Uu
cG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRoJzogJ0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLWxpbnV4L2FuaW1hZ2UucG5nJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmYWxsYmFjayc6ICdjaHJvbWl1bS13aW4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLWxpbnV4J30sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAncGxhdGZvcm0nOiAnY2hyb21pdW0tbGludXgteDg2J30sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFswXSkKIAogICAgIGRlZiB0ZXN0X2dldF9yZWxhdGl2ZV90ZXN0
X3BhdGgoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkKaW5kZXggM2FhZjMwMjUwMTA3ZTA3MThkNTM4ZjY3N2UwNzJkNDU1NzExMjJh
YS4uMGMyOGQ0NDE4ZGMyYjk4ZjJkNDMwZGE1ODRlNWNiMjBjMTMxMWE3MiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtODksNiAr
ODksNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIGNvbmZpZz1Ob25l
LAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYuX25hbWUgPSBwb3J0
X25hbWUKKyAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gJ3g4NicKICAgICAgICAgc2VsZi5f
b3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucyBpcyBOb25lOgogICAg
ICAgICAgICAgIyBGSVhNRTogSWRlYWxseSB3ZSdkIGhhdmUgYSBwYWNrYWdlLXdpZGUgd2F5IHRv
IGdldCBhCkBAIC02NDcsNiArNjQ4LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAi
Y2hyb21pdW0tbWFjIiBvbiB0aGUgQ2hyb21pdW0gcG9ydHMuIiIiCiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoJ1BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lX3RvX25hbWUnKQogCisg
ICAgZGVmIGFyY2hpdGVjdHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FyY2hpdGVj
dHVyZQorCiAgICAgZGVmIHZlcnNpb24oc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYSBzdHJp
bmcgaW5kaWNhdGluZyB0aGUgdmVyc2lvbiBvZiBhIGdpdmVuIHBsYXRmb3JtLCBlLmcuCiAgICAg
ICAgICdsZW9wYXJkJyBvciAneHAnLgpAQCAtOTM5LDcgKzk0Myw3IEBAIGNsYXNzIFRlc3RDb25m
aWd1cmF0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICBwb3J0X3ZlcnNpb24gPSBwb3J0LnZlcnNp
b24oKQogICAgICAgICBzZWxmLm9zID0gb3Mgb3IgcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKS5y
ZXBsYWNlKCctJyArIHBvcnRfdmVyc2lvbiwgJycpCiAgICAgICAgIHNlbGYudmVyc2lvbiA9IHZl
cnNpb24gb3IgcG9ydF92ZXJzaW9uCi0gICAgICAgIHNlbGYuYXJjaGl0ZWN0dXJlID0gYXJjaGl0
ZWN0dXJlIG9yICd4ODYnCisgICAgICAgIHNlbGYuYXJjaGl0ZWN0dXJlID0gYXJjaGl0ZWN0dXJl
IG9yIHBvcnQuYXJjaGl0ZWN0dXJlKCkKICAgICAgICAgc2VsZi5idWlsZF90eXBlID0gYnVpbGRf
dHlwZSBvciBwb3J0Ll9vcHRpb25zLmNvbmZpZ3VyYXRpb24ubG93ZXIoKQogICAgICAgICBzZWxm
LmdyYXBoaWNzX3R5cGUgPSBncmFwaGljc190eXBlIG9yIHBvcnQuZ3JhcGhpY3NfdHlwZSgpCiAK
QEAgLTk1MCw3ICs5NTQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJhdGlvbihvYmplY3QpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXy5rZXlzKCkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgotICAgICAgICByZXR1cm4gKCI8JShvcylzLCAlKHZlcnNpb24pcywgJShidWlsZF90eXBlKXMs
ICUoZ3JhcGhpY3NfdHlwZSlzPiIgJQorICAgICAgICByZXR1cm4gKCI8JShvcylzLCAlKHZlcnNp
b24pcywgJShhcmNoaXRlY3R1cmUpcywgJShidWlsZF90eXBlKXMsICUoZ3JhcGhpY3NfdHlwZSlz
PiIgJQogICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18pCiAKICAgICBkZWYgX19yZXByX18o
c2VsZik6CkBAIC05ODIsNyArOTg2LDggQEAgY2xhc3MgVGVzdENvbmZpZ3VyYXRpb24ob2JqZWN0
KToKICAgICAgICAgICAgICAgICAoJ3dpbicsICd4cCcsICd4ODYnKSwKICAgICAgICAgICAgICAg
ICAoJ3dpbicsICd2aXN0YScsICd4ODYnKSwKICAgICAgICAgICAgICAgICAoJ3dpbicsICd3aW43
JywgJ3g4NicpLAotICAgICAgICAgICAgICAgICgnbGludXgnLCAnaGFyZHknLCAneDg2JykpCisg
ICAgICAgICAgICAgICAgKCdsaW51eCcsICdoYXJkeScsICd4ODYnKSwKKyAgICAgICAgICAgICAg
ICAoJ2xpbnV4JywgJ2hhcmR5JywgJ3g4Nl82NCcpKQogCiAgICAgZGVmIGFsbF9idWlsZF90eXBl
cyhzZWxmKToKICAgICAgICAgcmV0dXJuICgnZGVidWcnLCAncmVsZWFzZScpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9s
aW51eC5weQppbmRleCBhMTk5N2Q2MmM0OGM2ZDE0MTM3NWZiNTZhYWY0ZGE4MDdjYmMyNDVlLi5h
OGUxYmIyNDYwMzM3MjhhNTZkMDllYTNkNGEzNzliMTgwYWIzYjY3IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGlu
dXgucHkKQEAgLTQwLDEzICs0MCw2MiBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LmNocm9taXVtX2xpbnV4IikKIAogY2xhc3MgQ2hyb21pdW1M
aW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAiIiJDaHJvbWl1bSBMaW51eCBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCdwb3J0X25hbWUnLCAn
Y2hyb21pdW0tbGludXgnKQotICAgICAgICBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuX19pbml0X18o
c2VsZiwgKiprd2FyZ3MpCisgICAgU1VQUE9SVEVEX0FSQ0hJVEVDVFVSRVMgPSAoJ3g4NicsICd4
ODZfNjQnKQorCisgICAgRkFMTEJBQ0tfUEFUSFMgPSB7CisgICAgICAgICd4ODZfNjQnOiBbJ2No
cm9taXVtLWxpbnV4LXg4Nl82NCcsICdjaHJvbWl1bS1saW51eCcsICdjaHJvbWl1bS13aW4nLCAn
Y2hyb21pdW0nLCAnd2luJywgJ21hYyddLAorICAgICAgICAneDg2JzogWydjaHJvbWl1bS1saW51
eCcsICdjaHJvbWl1bS13aW4nLCAnY2hyb21pdW0nLCAnd2luJywgJ21hYyddLAorICAgIH0KKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9uZSwgcmViYXNlbGluaW5nPUZhbHNl
LCAqKmt3YXJncyk6CisgICAgICAgIHBvcnRfbmFtZSA9IHBvcnRfbmFtZSBvciAnY2hyb21pdW0t
bGludXgnCisgICAgICAgIGNocm9taXVtLkNocm9taXVtUG9ydC5fX2luaXRfXyhzZWxmLCBwb3J0
X25hbWU9cG9ydF9uYW1lLCAqKmt3YXJncykKKworICAgICAgICAjIFdlIHJlLXNldCB0aGUgcG9y
dCBuYW1lIG9uY2UgdGhlIGJhc2Ugb2JqZWN0IGlzIGZ1bGx5IGluaXRpYWxpemVkCisgICAgICAg
ICMgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBmaW5kIHRoZSBEUlQgYmluYXJ5IHByb3Blcmx5Lgor
ICAgICAgICBpZiBwb3J0X25hbWUuZW5kc3dpdGgoJy1saW51eCcpIGFuZCBub3QgcmViYXNlbGlu
aW5nOgorICAgICAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gc2VsZi5fZGV0ZXJtaW5lX2Fy
Y2hpdGVjdHVyZSgpCisgICAgICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIGFuIHVnbHkgaGFjayB0
byBhdm9pZCByZW5hbWluZyB0aGUgR1BVIHBvcnQuCisgICAgICAgICAgICBpZiBwb3J0X25hbWUg
PT0gJ2Nocm9taXVtLWxpbnV4JzoKKyAgICAgICAgICAgICAgICBwb3J0X25hbWUgPSBwb3J0X25h
bWUgKyAnLScgKyBzZWxmLl9hcmNoaXRlY3R1cmUKKyAgICAgICAgZWxpZiByZWJhc2VsaW5pbmc6
CisgICAgICAgICAgICBzZWxmLl9hcmNoaXRlY3R1cmUgPSAneDg2JworICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgYmFzZSwgYXJjaCA9IHBvcnRfbmFtZS5yc3BsaXQoJy0nLCAxKQorICAgICAg
ICAgICAgYXNzZXJ0IGJhc2UgaW4gKCdjaHJvbWl1bS1saW51eCcsICdjaHJvbWl1bS1ncHUtbGlu
dXgnKQorICAgICAgICAgICAgc2VsZi5fYXJjaGl0ZWN0dXJlID0gYXJjaAorICAgICAgICBhc3Nl
cnQgc2VsZi5fYXJjaGl0ZWN0dXJlIGluIHNlbGYuU1VQUE9SVEVEX0FSQ0hJVEVDVFVSRVMKKyAg
ICAgICAgYXNzZXJ0IHBvcnRfbmFtZSBpbiAoJ2Nocm9taXVtLWxpbnV4JywgJ2Nocm9taXVtLWdw
dS1saW51eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaHJvbWl1bS1saW51eC14
ODYnLCAnY2hyb21pdW0tbGludXgteDg2XzY0JykKKyAgICAgICAgc2VsZi5fbmFtZSA9IHBvcnRf
bmFtZQorCisgICAgZGVmIF9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKHNlbGYpOgorICAgICAgICBk
cml2ZXJfcGF0aCA9IHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkKKyAgICAgICAgZmlsZV9vdXRwdXQg
PSAnJworICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhkcml2ZXJfcGF0aCk6Cisg
ICAgICAgICAgICBmaWxlX291dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2Zp
bGUnLCBkcml2ZXJfcGF0aF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm5fc3RkZXJyPVRydWUpCisKKyAgICAgICAgaWYgJ0VMRiAz
Mi1iaXQgTFNCIGV4ZWN1dGFibGUnIGluIGZpbGVfb3V0cHV0OgorICAgICAgICAgICAgcmV0dXJu
ICd4ODYnCisgICAgICAgIGlmICdFTEYgNjQtYml0IExTQiBleGVjdXRhYmxlJyBpbiBmaWxlX291
dHB1dDoKKyAgICAgICAgICAgIHJldHVybiAneDg2XzY0JworICAgICAgICBpZiBmaWxlX291dHB1
dDoKKyAgICAgICAgICAgIF9sb2cud2FybmluZygnQ291bGQgbm90IGRldGVybWluZSBhcmNoaXRl
Y3R1cmUgZnJvbSAiZmlsZSIgb3V0cHV0OiAlcycgJSBmaWxlX291dHB1dCkKKworICAgICAgICAj
IFdlIGRvbid0IGtub3cgd2hhdCB0aGUgYXJjaGl0ZWN0dXJlIGlzOyBkZWZhdWx0IHRvICd4ODYn
IGJlY2F1c2UKKyAgICAgICAgIyBtYXliZSB3ZSdyZSByZWJhc2VsaW5pbmcgYW5kIHRoZSBiaW5h
cnkgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKKyAgICAgICAgIyBvciBzb21ldGhpbmcgZWxzZSB3
ZWlyZCBpcyBnb2luZyBvbi4gSXQncyBva2F5IHRvIGRvIHRoaXMgYmVjYXVzZQorICAgICAgICAj
IGlmIHdlIGFjdHVhbGx5IHRyeSB0byB1c2UgdGhlIGJpbmFyeSwgY2hlY2tfYnVpbGQoKSBzaG91
bGQgZmFpbC4KKyAgICAgICAgcmV0dXJuICd4ODYnCisKKyAgICBkZWYgYmFzZWxpbmVfcGF0aChz
ZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYXJjaGl0ZWN0dXJlID09ICd4ODZfNjQnOgorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNlbGYuX25hbWUpCisgICAg
ICAgIHJldHVybiBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0tbGludXgnKQog
CiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgotICAgICAgICBwb3J0X25hbWVz
ID0gWyJjaHJvbWl1bS1saW51eCIsICJjaHJvbWl1bS13aW4iLCAiY2hyb21pdW0iLCAid2luIiwg
Im1hYyJdCisgICAgICAgIHBvcnRfbmFtZXMgPSBzZWxmLkZBTExCQUNLX1BBVEhTW3NlbGYuX2Fy
Y2hpdGVjdHVyZV0KICAgICAgICAgcmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0
aCwgcG9ydF9uYW1lcykKIAogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToK
QEAgLTc1LDggKzEyNCw4IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9t
aXVtUG9ydCk6CiAgICAgICAgIHJldHVybiAnbGludXgnCiAKICAgICBkZWYgdmVyc2lvbihzZWxm
KToKLSAgICAgICAgIyBXZSBkb24ndCBoYXZlIGRpZmZlcmVudCB2ZXJzaW9ucyBvbiBsaW51eC4K
LSAgICAgICAgcmV0dXJuICcnCisgICAgICAgICMgRklYTUU6IGFkZCBzdXBwb3J0IGZvciBMdWNp
ZC4KKyAgICAgICAgcmV0dXJuICdoYXJkeScKIAogICAgICMKICAgICAjIFBST1RFQ1RFRCBNRVRI
T0RTCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weQppbmRleCAxZTRkNzQwNmJm
NzAyOTBjNDJjYmFiODhlNGZlOTE5Y2Q2MWMwZWE3Li4wNWVjMDY3NWE0NTFlYTM1NTJiMTEyMGYx
OGUyMmE3MmJhODAyZTdiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5pdHRlc3QucHkK
QEAgLTI4LDYgKzI4LDkgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlX21vY2sKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQgaW1wb3J0IGNocm9taXVtX2xpbnV4CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5w
b3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiAKQEAgLTM4LDYgKzQxLDY0IEBAIGNsYXNzIENocm9t
aXVtTGludXhQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgICAg
ICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51
eFBvcnQKIAorICAgIGRlZiBhc3NlcnRfYXJjaGl0ZWN0dXJlKHNlbGYsIHBvcnRfbmFtZT1Ob25l
LCBmaWxlX291dHB1dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2FyY2hpdGVjdHVyZT1Ob25lKToKKyAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW1fbW9j
ay5Nb2NrRmlsZVN5c3RlbSgpCisgICAgICAgIGZpbGVzeXN0ZW0uZXhpc3RzID0gbGFtYmRhIHg6
ICdEdW1wUmVuZGVyVHJlZScgaW4geAorICAgICAgICBleGVjdXRpdmUgPSBOb25lCisgICAgICAg
IGlmIGZpbGVfb3V0cHV0OgorICAgICAgICAgICAgZXhlY3V0aXZlID0gZXhlY3V0aXZlX21vY2su
TW9ja0V4ZWN1dGl2ZTIoZmlsZV9vdXRwdXQpCisKKyAgICAgICAgcG9ydCA9IGNocm9taXVtX2xp
bnV4LkNocm9taXVtTGludXhQb3J0KHBvcnRfbmFtZT1wb3J0X25hbWUsCisgICAgICAgICAgICBl
eGVjdXRpdmU9ZXhlY3V0aXZlLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHBvcnQuYXJjaGl0ZWN0dXJlKCksIGV4cGVjdGVkX2FyY2hpdGVjdHVyZSkK
KyAgICAgICAgaWYgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlID09ICd4ODYnOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBvcnQuYmFzZWxpbmVfcGF0aCgpLmVuZHN3aXRoKCdjaHJvbWl1bS1s
aW51eCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuYmFzZWxpbmVfc2VhcmNo
X3BhdGgoKVswXS5lbmRzd2l0aCgnY2hyb21pdW0tbGludXgnKSkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmJhc2VsaW5lX3BhdGgoKS5lbmRzd2l0aCgn
Y2hyb21pdW0tbGludXgteDg2XzY0JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9y
dC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpWzBdLmVuZHN3aXRoKCdjaHJvbWl1bS1saW51eC14ODZf
NjQnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmJhc2VsaW5lX3NlYXJjaF9w
YXRoKClbMV0uZW5kc3dpdGgoJ2Nocm9taXVtLWxpbnV4JykpCisKKyAgICBkZWYgdGVzdF9hcmNo
aXRlY3R1cmVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9hcmNoaXRlY3R1cmUocG9ydF9u
YW1lPSdjaHJvbWl1bS1saW51eC14ODYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlPSd4ODYnKQorICAgICAgICBzZWxmLmFzc2VydF9hcmNo
aXRlY3R1cmUocG9ydF9uYW1lPSdjaHJvbWl1bS1saW51eC14ODZfNjQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlPSd4ODZfNjQnKQorICAg
ICAgICBzZWxmLmFzc2VydF9hcmNoaXRlY3R1cmUoZmlsZV9vdXRwdXQ9J0VMRiAzMi1iaXQgTFNC
IGV4ZWN1dGFibGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
YXJjaGl0ZWN0dXJlPSd4ODYnKQorICAgICAgICBzZWxmLmFzc2VydF9hcmNoaXRlY3R1cmUoZmls
ZV9vdXRwdXQ9J0VMRiA2NC1iaXQgTFNCIGV4ZWN1dGFibGUnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJjaGl0ZWN0dXJlPSd4ODZfNjQnKQorCisgICAgZGVm
IHRlc3RfY2hlY2tfaWxsZWdhbF9wb3J0X25hbWVzKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBD
aGVjayB0aGF0LCBmb3Igbm93LCB0aGVzZSBhcmUgaWxsZWdhbCBwb3J0IG5hbWVzLgorICAgICAg
ICAjIEV2ZW50dWFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGhl
cmUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBjaHJvbWl1bV9s
aW51eC5DaHJvbWl1bUxpbnV4UG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9u
YW1lPSdjaHJvbWl1bS14ODYtbGludXgnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3Nl
cnRpb25FcnJvciwgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBvcnRfbmFtZT0nY2hyb21pdW0tbGludXgteDg2LWdwdScpCisKKyAg
ICBkZWYgdGVzdF9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlX2ZhaWxzKHNlbGYpOgorICAgICAgICAj
IFRlc3QgdGhhdCB3ZSBkZWZhdWx0IHRvICd4ODYnIGlmIHRoZSBkcml2ZXIgZG9lc24ndCBleGlz
dC4KKyAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbSgp
CisgICAgICAgIHBvcnQgPSBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydChmaWxlc3lz
dGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBvcnQuYXJjaGl0ZWN0
dXJlKCksICd4ODYnKQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIGRlZmF1bHQgdG8gJ3g4Nicg
b24gYW4gdW5rbm93biBhcmNoaXRlY3R1cmUuCisgICAgICAgIGZpbGVzeXN0ZW0gPSBmaWxlc3lz
dGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICBmaWxlc3lzdGVtLmV4aXN0cyA9IGxh
bWJkYSB4OiBUcnVlCisgICAgICAgIGV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVj
dXRpdmUyKCd3aW4zMicpCisgICAgICAgIHBvcnQgPSBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxp
bnV4UG9ydChmaWxlc3lzdGVtPWZpbGVzeXN0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9ZXhlY3V0aXZlKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhwb3J0LmFyY2hpdGVjdHVyZSgpLCAneDg2JykKKworICAgICAgICAjIFRl
c3QgdGhhdCB3ZSByYWlzZSBlcnJvcnMgaWYgc29tZXRoaW5nIHdlaXJkIGhhcHBlbnMuCisgICAg
ICAgIGZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAg
ICBmaWxlc3lzdGVtLmV4aXN0cyA9IGxhbWJkYSB4OiBUcnVlCisgICAgICAgIGV4ZWN1dGl2ZSA9
IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKGV4Y2VwdGlvbj1Bc3NlcnRpb25FcnJvcikK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGNocm9taXVtX2xpbnV4
LkNocm9taXVtTGludXhQb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVt
PWZpbGVzeXN0ZW0sIGV4ZWN1dGl2ZT1leGVjdXRpdmUpCisKIAogaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQppbmRleCBhMTk3MWU0Y2VmM2U2MTVk
MGNmMWY4ZDQ4YTU4Mzk4M2JjYjVjYzhkLi42ODNkYmEzZDY4NzI1ZDkxNjUzZmExZWMwODkxNjc2
ZDM1NDUwM2RmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2ZhY3RvcnkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9mYWN0b3J5LnB5CkBAIC0zNiwxNiArMzYsMTQgQEAgaW1wb3J0IHN5cwogZGVmIGFs
bF9wb3J0X25hbWVzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgdmFsaWQsIGZ1bGx5
LXNwZWNpZmllZCwgInJlYWwiIHBvcnQgbmFtZXMuCiAKLSAgICBUaGlzIGlzIHRoZSBsaXN0IG9m
IG5hbWVzIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBkaXJlY3RseSBhbmQgY2FuIGJlCi0gICAgcmV0
dXJuZWQgYXMgYSB2YWx1ZSBmcm9tIHBvcnQubmFtZSgpLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUg
YW55Ci0gICAgImZha2UiIG5hbWVzIGxpa2UgInRlc3QiIG9yICJtb2NrLW1hYyIsIGFuZCBpdCBk
b2VzIG5vdCBpbmNsdWRlIGFueQotICAgIHNob3J0Y3V0IG5hbWVzIGxpa2UgImNocm9taXVtLXdp
biIgdGhhdCB3b3VsZCBnZXQgZXhwYW5kZWQgdG8KLSAgICAiY2hyb21pdW0td2luLXhwIi4iIiIK
KyAgICBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgYXJlIHVzZWQgYXMgYWN0
dWFsIGJhc2VsaW5lX3BhdGhzKCkKKyAgICBieSByZWFsIHBvcnRzLiBUaGlzIGRvZXMgbm90IGlu
Y2x1ZGUgYW55ICJmYWtlIiBuYW1lcyBsaWtlICJ0ZXN0IgorICAgIG9yICJtb2NrLW1hYyIsIGFu
ZCBpdCBkb2VzIG5vdCBpbmNsdWRlIGFueSBkaXJlY3RvcmllcyB0aGF0IGFyZSBub3QgLiIiIgog
ICAgICMgRklYTUU6IFRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGdlbmVyYXRlIHRo
aXMgbGlzdCAuLi4KICAgICByZXR1cm4gWydjaHJvbWl1bS1ncHUtbGludXgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtLWdwdS1tYWMtc25vd2xlb3BhcmQnLCAnY2hyb21pdW0tZ3B1LW1hYy1sZW9w
YXJkJywKICAgICAgICAgICAgICdjaHJvbWl1bS1ncHUtd2luLXhwJywgJ2Nocm9taXVtLWdwdS13
aW4tdmlzdGEnLCAnY2hyb21pdW0tZ3B1LXdpbi13aW43JywKLSAgICAgICAgICAgICdjaHJvbWl1
bS1saW51eCcsCisgICAgICAgICAgICAnY2hyb21pdW0tbGludXgteDg2XzY0JywgJ2Nocm9taXVt
LWxpbnV4LXg4NicsCiAgICAgICAgICAgICAnY2hyb21pdW0tbWFjLWxlb3BhcmQnLCAnY2hyb21p
dW0tbWFjLXNub3dsZW9wYXJkJywKICAgICAgICAgICAgICdjaHJvbWl1bS13aW4teHAnLCAnY2hy
b21pdW0td2luLXZpc3RhJywgJ2Nocm9taXVtLXdpbi13aW43JywKICAgICAgICAgICAgICdnb29n
bGUtY2hyb21lLWxpbnV4MzInLCAnZ29vZ2xlLWNocm9tZS1saW51eDY0JywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZS5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9t
ZS5weQppbmRleCBhZTkwMzc0MjAwNzc5ZWYwZWU4MDljZWMxMDVlNWM1YmU0Zjg3YzQ2Li44MTFl
N2UwNGZmNTA1YzM2MmZlODEyNDVlODNjZWI3YWI3OWYxYzBiIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5
CkBAIC00NSw2ICs0NSw4IEBAIGRlZiBHZXRHb29nbGVDaHJvbWVQb3J0KCoqa3dhcmdzKToKICAg
ICAiIiJTb21lIHRlc3RzIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IHJlc3VsdHMgd2hlbiBjb21w
aWxlZCBhcyBHb29nbGUKICAgICBDaHJvbWUgdnMgQ2hyb21pdW0uICBJbiB0aG9zZSBjYXNlcywg
d2UgcHJlcGVuZCBhbiBhZGRpdGlvbmFsIGRpcmVjdG9yeSB0bwogICAgIHRvIHRoZSBiYXNlbGlu
ZSBwYXRocy4iIiIKKyAgICAjIEZJWE1FOiBUaGlzIHdob2xlIHJvdXRpbmUgaXMgYSB0cmVtZW5k
b3VzIGhhY2sgdGhhdCBuZWVkcyB0byBiZSBjbGVhbmVkIHVwLgorCiAgICAgcG9ydF9uYW1lID0g
a3dhcmdzWydwb3J0X25hbWUnXQogICAgIGRlbCBrd2FyZ3NbJ3BvcnRfbmFtZSddCiAgICAgaWYg
cG9ydF9uYW1lID09ICdnb29nbGUtY2hyb21lLWxpbnV4MzInOgpAQCAtNjIsNyArNjQsMTAgQEAg
ZGVmIEdldEdvb2dsZUNocm9tZVBvcnQoKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHJldHVy
biBfdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYsCiAgICAgICAgICAgICAgICAgICAg
IGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KQogCi0gICAgICAgIHJldHVybiBHb29n
bGVDaHJvbWVMaW51eDMyUG9ydCgqKmt3YXJncykKKyAgICAgICAgICAgIGRlZiBhcmNoaXRlY3R1
cmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICd4ODYnCisKKyAgICAgICAgcmV0dXJu
IEdvb2dsZUNocm9tZUxpbnV4MzJQb3J0KHBvcnRfbmFtZT0nY2hyb21pdW0tbGludXgteDg2Jywg
Kiprd2FyZ3MpCiAgICAgZWxpZiBwb3J0X25hbWUgPT0gJ2dvb2dsZS1jaHJvbWUtbGludXg2NCc6
CiAgICAgICAgIGltcG9ydCBjaHJvbWl1bV9saW51eAogCkBAIC03OCw3ICs4MywxMiBAQCBkZWYg
R2V0R29vZ2xlQ2hyb21lUG9ydCgqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIF90
ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZiwKICAgICAgICAgICAgICAgICAgICAgY2hy
b21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQpCiAKLSAgICAgICAgcmV0dXJuIEdvb2dsZUNo
cm9tZUxpbnV4NjRQb3J0KCoqa3dhcmdzKQorICAgICAgICAgICAgZGVmIGFyY2hpdGVjdHVyZShz
ZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3g4Nl82NCcKKworICAgICAgICAjIFdlIHVz
ZSBjaHJvbWl1bS1saW51eC14ODYgaGVyZSBpbiBvcmRlciB0byBza2lwIG92ZXIgdGhlIGxpbnV4
LXg4Nl82NAorICAgICAgICAjIGJhc2VsaW5lcy4KKyAgICAgICAgcmV0dXJuIEdvb2dsZUNocm9t
ZUxpbnV4NjRQb3J0KHBvcnRfbmFtZT0nY2hyb21pdW0tbGludXgteDg2JywgKiprd2FyZ3MpCiAg
ICAgZWxpZiBwb3J0X25hbWUuc3RhcnRzd2l0aCgnZ29vZ2xlLWNocm9tZS1tYWMnKToKICAgICAg
ICAgaW1wb3J0IGNocm9taXVtX21hYwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>