<?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>104198</bug_id>
          
          <creation_ts>2012-12-05 18:03:34 -0800</creation_ts>
          <short_desc>webkitpy&apos;s clean_working_directory has a confusing name</short_desc>
          <delta_ts>2013-01-14 21:24:09 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106429</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="Tim &apos;mithro&apos; Ansell">mithro</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>mithro</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>784394</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 18:03:34 -0800</bug_when>
    <thetext>webkitpy&apos;s clean_working_directory has a confusing name
Requested by abarth on #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806107</commentid>
    <comment_count>1</comment_count>
      <attachid>182517</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-13 23:27:57 -0800</bug_when>
    <thetext>Created attachment 182517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806108</commentid>
    <comment_count>2</comment_count>
      <attachid>182517</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-13 23:29:32 -0800</bug_when>
    <thetext>Comment on attachment 182517
Patch

Attachment 182517 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15867363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806109</commentid>
    <comment_count>3</comment_count>
      <attachid>182517</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-13 23:29:57 -0800</bug_when>
    <thetext>Comment on attachment 182517
Patch

Attachment 182517 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15870396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806110</commentid>
    <comment_count>4</comment_count>
      <attachid>182517</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-13 23:30:28 -0800</bug_when>
    <thetext>Comment on attachment 182517
Patch

Attachment 182517 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15869383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806111</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-13 23:30:58 -0800</bug_when>
    <thetext>Attachment 182517 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/pylint/lint.py:393: DeprecationWarning: disable-msg is deprecated, replace it by disable (/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/common/checkout/scm/svn.py, line         # ignore false positives for methods implemented in the mixee class. pylint: disable-msg=E1101
)
  DeprecationWarning)
Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py:49:  [MockSCM.has_working_directory_changes] An attribute affected in webkitpy.tool.steps.cleanworkingdirectory_unittest line 41 hide this method  [pylint/E0202] [5]
/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/pylint/lint.py:393: DeprecationWarning: disable-msg is deprecated, replace it by disable (/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/tool/commands/download.py, line     # pylint: disable-msg=E1101
)
  DeprecationWarning)
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:333:  [SCMTest._shared_test_added_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806112</commentid>
    <comment_count>6</comment_count>
      <attachid>182517</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-13 23:31:17 -0800</bug_when>
    <thetext>Comment on attachment 182517
Patch

Attachment 182517 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15853412</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806113</commentid>
    <comment_count>7</comment_count>
      <attachid>182517</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-13 23:31:51 -0800</bug_when>
    <thetext>Comment on attachment 182517
Patch

Attachment 182517 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15836013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806125</commentid>
    <comment_count>8</comment_count>
      <attachid>182517</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-14 00:11:44 -0800</bug_when>
    <thetext>Comment on attachment 182517
Patch

Attachment 182517 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15838376</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806451</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-14 10:28:42 -0800</bug_when>
    <thetext>Looks like this patch would break the bots.  I think the problem is that you removed the --no-clean option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806548</commentid>
    <comment_count>10</comment_count>
      <attachid>182517</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-14 13:22:31 -0800</bug_when>
    <thetext>Comment on attachment 182517
Patch

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

&gt; Tools/Scripts/webkitpy/common/checkout/scm/git.py:152
&gt; +        return self._run_git([&apos;diff&apos;, &apos;HEAD&apos;, &apos;--no-renames&apos;, &apos;--name-only&apos;]) == &quot;&quot;

should this be &quot;!=&quot; instead of &quot;==&quot;? Otherwise True == no changes, which is the opposite of what the method name implies.

&gt; Tools/Scripts/webkitpy/common/checkout/scm/git.py:361
&gt; +        # Haven&apos;t given us which commits, so use the difference to remote base.

We generally try to make our comments grammatically correct, and this is a bit too far off for me :) I would probably just delete the comment anyway, the code is pretty clear as-is.

&gt; Tools/Scripts/webkitpy/common/checkout/scm/git.py:367
&gt; +                force_squash = squash and squash.lower() == &quot;true&quot;

I&apos;d probably collapse this to:

force_squash = force_squash or Git.read_git_config(&apos;webkit-patch.commit-should-always-squash&apos;, cwd=self.checkout-root).lower() == &apos;true&apos;.

&gt; Tools/Scripts/webkitpy/common/checkout/scm/git.py:370
&gt; +            num_changes = len(self.local_commits()) + int(not has_working_directory_changes)

I&apos;m not a big fan of the bool-&gt;int conversion; it&apos;s very unpythonic to me. perhaps (1 if has_working_directory_changes else 0) ? Also, seems like you don&apos;t want the &apos;not&apos; here (cf. the comment in has_working_directory_changes). Also, if you collapse the lines above, you can probably get rid of the comment here as well (the whole thing will only be three lines and the logic will be obvious).

&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm.py:93
&gt; +

probably don&apos;t need this line.

&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm.py:210
&gt; +    #--------------------------------------------------------------------------

We don&apos;t tend to add divider lines like this ...

&gt; Tools/Scripts/webkitpy/common/checkout/scm/scm.py:218
&gt; +    #--------------------------------------------------------------------------

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806694</commentid>
    <comment_count>11</comment_count>
      <attachid>182640</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-14 15:50:04 -0800</bug_when>
    <thetext>Created attachment 182640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806697</commentid>
    <comment_count>12</comment_count>
      <attachid>182640</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 15:52:03 -0800</bug_when>
    <thetext>Comment on attachment 182640
Patch

Attachment 182640 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15867649</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806702</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 15:53:16 -0800</bug_when>
    <thetext>Attachment 182640 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/pylint/lint.py:393: DeprecationWarning: disable-msg is deprecated, replace it by disable (/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/common/checkout/scm/svn.py, line         # ignore false positives for methods implemented in the mixee class. pylint: disable-msg=E1101
)
  DeprecationWarning)
Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py:49:  [MockSCM.has_working_directory_changes] An attribute affected in webkitpy.tool.steps.cleanworkingdirectory_unittest line 41 hide this method  [pylint/E0202] [5]
/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/pylint/lint.py:393: DeprecationWarning: disable-msg is deprecated, replace it by disable (/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/tool/commands/download.py, line     # pylint: disable-msg=E1101
)
  DeprecationWarning)
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:333:  [SCMTest._shared_test_added_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806703</commentid>
    <comment_count>14</comment_count>
      <attachid>182640</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-14 15:53:36 -0800</bug_when>
    <thetext>Comment on attachment 182640
Patch

Attachment 182640 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15869676</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806706</commentid>
    <comment_count>15</comment_count>
      <attachid>182640</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-14 15:54:14 -0800</bug_when>
    <thetext>Comment on attachment 182640
Patch

Attachment 182640 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15870699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806711</commentid>
    <comment_count>16</comment_count>
      <attachid>182640</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-14 15:56:32 -0800</bug_when>
    <thetext>Comment on attachment 182640
Patch

Attachment 182640 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15853727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806714</commentid>
    <comment_count>17</comment_count>
      <attachid>182640</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-14 16:00:50 -0800</bug_when>
    <thetext>Comment on attachment 182640
Patch

Attachment 182640 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15870703</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806723</commentid>
    <comment_count>18</comment_count>
      <attachid>182640</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-14 16:09:21 -0800</bug_when>
    <thetext>Comment on attachment 182640
Patch

Attachment 182640 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15874634</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806742</commentid>
    <comment_count>19</comment_count>
      <attachid>182640</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-01-14 16:24:48 -0800</bug_when>
    <thetext>Comment on attachment 182640
Patch

Attachment 182640 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15860691</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806755</commentid>
    <comment_count>20</comment_count>
      <attachid>182640</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-14 16:31:53 -0800</bug_when>
    <thetext>Comment on attachment 182640
Patch

This patch appears to break all the bots:

webkit-patch: error: no such option: --no-clean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806864</commentid>
    <comment_count>21</comment_count>
      <attachid>182673</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-14 18:24:05 -0800</bug_when>
    <thetext>Created attachment 182673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806872</commentid>
    <comment_count>22</comment_count>
      <attachid>182673</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-14 18:41:25 -0800</bug_when>
    <thetext>Comment on attachment 182673
Patch

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

Looks good.

&gt; Tools/Scripts/webkitpy/common/checkout/scm/git.py:53
&gt; +        Exception.__init__(self, &quot;Found %s local commits and the working directory is %s&quot; % (
&gt; +            num_local_commits, [&quot;clean&quot;, &quot;not clean&quot;][has_working_directory_changes]))

I think this part landed in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806893</commentid>
    <comment_count>23</comment_count>
      <attachid>182680</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-14 19:09:26 -0800</bug_when>
    <thetext>Created attachment 182680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806894</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 19:11:44 -0800</bug_when>
    <thetext>Attachment 182680 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/pylint/lint.py:393: DeprecationWarning: disable-msg is deprecated, replace it by disable (/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/common/checkout/scm/svn.py, line         # ignore false positives for methods implemented in the mixee class. pylint: disable-msg=E1101
)
  DeprecationWarning)
Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py:49:  [MockSCM.has_working_directory_changes] An attribute affected in webkitpy.tool.steps.cleanworkingdirectory_unittest line 42 hide this method  [pylint/E0202] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py:58:  [MockSCM.has_local_commits] An attribute affected in webkitpy.tool.steps.cleanworkingdirectory_unittest line 51 hide this method  [pylint/E0202] [5]
Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py:333:  [SCMTest._shared_test_added_files] Instance of &apos;SCMTest&apos; has no &apos;scm&apos; member  [pylint/E1101] [5]
Total errors found: 3 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806944</commentid>
    <comment_count>25</comment_count>
      <attachid>182680</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-14 21:10:51 -0800</bug_when>
    <thetext>Comment on attachment 182680
Patch

ok.  let&apos;s give it a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806951</commentid>
    <comment_count>26</comment_count>
      <attachid>182680</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 21:17:50 -0800</bug_when>
    <thetext>Comment on attachment 182680
Patch

Clearing flags on attachment: 182680

Committed r139712: &lt;http://trac.webkit.org/changeset/139712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806952</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 21:17:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806958</commentid>
    <comment_count>28</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-14 21:22:00 -0800</bug_when>
    <thetext>Still need to fix the &quot;CleanWorkingDirectory&quot; step to make it clear that it is actually doing a &quot;DiscardLocalChanges&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806960</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-14 21:24:09 -0800</bug_when>
    <thetext>Please use a new bug.  We prefer to have one patch per bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182517</attachid>
            <date>2013-01-13 23:27:57 -0800</date>
            <delta_ts>2013-01-14 15:49:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104198-20130114182457.patch</filename>
            <type>text/plain</type>
            <size>35880</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTczCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjliNGMwMzMyY2FhOGIwZjUxZWQ5OTM1Y2VmYTgzYTcw
ZTU1ZDYyNC4uOWRmZGQyNjViY2NkNzM1OTg4ZDE1ZjE3NzE2NzA4NWNjZTRkZDI5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEzLTAxLTA5ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgRml4IG5hbWluZyBhbWJpZ3VpdHkgYmV0d2VlbiB3aGF0IHRoZSB3b3JraW5n
X2RpcmVjdG9yeSBjb21tYW5kcyBkaWQKKyAgICAgICAgYW5kIHRoZWlyIG5hbWUuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDE5OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weToKKyAgICAgICAgKEFtYmlndW91c0NvbW1p
dEVycm9yLl9faW5pdF9fKToKKyAgICAgICAgKEdpdC53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVh
bik6CisgICAgICAgIChHaXQuY2xlYW5fd29ya2luZ19kaXJlY3RvcnkpOgorICAgICAgICAoR2l0
LnJldmVydF9maWxlcyk6CisgICAgICAgIChHaXQuY29tbWl0X3dpdGhfbWVzc2FnZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eToKKyAgICAgICAgKEdpdFNWTlRlc3QudGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRpcGxl
X2xvY2FsX2NvbW1pdHNfYWx3YXlzX3NxdWFzaCk6CisKIDIwMTMtMDEtMTMgIEpvbmF0aGFuIExp
dSAgPG5ldDE0N0BnbWFpbC5jb20+CiAKICAgICAgICAgRml4IENPTkZJRyBtaXNzaW5nIGxpbmtf
cGtnY29uZmlnIG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vZ2l0LnB5CmluZGV4IDZiOGYzOGY2NjBmZTZhNDFjMjJkNDY3ZDFhN2Y2
ZjE3YmIxMjVkNDAuLmM0ZWYyOWY5MzAwYjU0Y2ZjN2MwNTQ2NzRiOTY2OGE0MzI2MjY0ZGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5w
eQpAQCAtNDgsOSArNDgsMTEgQEAgZGVmIHJ1bl9jb21tYW5kKCphcmdzLCAqKmt3YXJncyk6CiAK
IAogY2xhc3MgQW1iaWd1b3VzQ29tbWl0RXJyb3IoRXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIGhhc193b3JraW5nX2Rp
cmVjdG9yeV9jaGFuZ2VzKToKKyAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsICJGb3Vu
ZCAlcyBsb2NhbCBjb21taXRzIGFuZCB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgJXMiICUgKAor
ICAgICAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMsIFsibm90IGNsZWFuIiwgImNsZWFuIl1baGFz
X3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXNdKSkKICAgICAgICAgc2VsZi5udW1fbG9jYWxfY29t
bWl0cyA9IG51bV9sb2NhbF9jb21taXRzCi0gICAgICAgIHNlbGYud29ya2luZ19kaXJlY3Rvcnlf
aXNfY2xlYW4gPSB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbgorICAgICAgICBzZWxmLmhhc193
b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0gaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMK
IAogCiBjbGFzcyBHaXQoU0NNLCBTVk5SZXBvc2l0b3J5KToKQEAgLTE0NiwxMyArMTQ4LDEzIEBA
IGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgIGRlZiByZWJhc2VfaW5fcHJvZ3Jl
c3Moc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLmFi
c29sdXRlX3BhdGgoc2VsZi5fZmlsZXN5c3RlbS5qb2luKCcuZ2l0JywgJ3JlYmFzZS1hcHBseScp
KSkKIAotICAgIGRlZiB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3J1bl9naXQoWydkaWZmJywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpLCAn
LS1uby1yZW5hbWVzJywgJy0tbmFtZS1vbmx5J10pID09ICIiCisgICAgZGVmIGhhc193b3JraW5n
X2RpcmVjdG9yeV9jaGFuZ2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2dpdChb
J2RpZmYnLCAnSEVBRCcsICctLW5vLXJlbmFtZXMnLCAnLS1uYW1lLW9ubHknXSkgPT0gIiIKIAot
ICAgIGRlZiBjbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgIyBDb3VsZCBy
dW4gZ2l0IGNsZWFuIGhlcmUgdG9vLCBidXQgdGhhdCB3b3VsZG4ndCBtYXRjaCB3b3JraW5nX2Rp
cmVjdG9yeV9pc19jbGVhbgotICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAnLS1oYXJk
Jywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpXSkKLSAgICAgICAgIyBBYm9ydGluZyByZWJhc2Ug
ZXZlbiB0aG91Z2ggdGhpcyBkb2VzIG5vdCBtYXRjaCB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVh
bgorICAgIGRlZiBkaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAg
ICAgICMgQ291bGQgcnVuIGdpdCBjbGVhbiBoZXJlIHRvbywgYnV0IHRoYXQgd291bGRuJ3QgbWF0
Y2ggc3VidmVyc2lvbgorICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAnSEVBRCcsICct
LWhhcmQnXSkKKyAgICAgICAgIyBBYm9ydGluZyByZWJhc2UgZXZlbiB0aG91Z2ggdGhpcyBkb2Vz
IG5vdCBtYXRjaCBzdWJ2ZXJzaW9uCiAgICAgICAgIGlmIHNlbGYucmViYXNlX2luX3Byb2dyZXNz
KCk6CiAgICAgICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmViYXNlJywgJy0tYWJvcnQnXSkKIApA
QCAtMzM0LDQxICszMzYsNDQgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAg
ZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgc2VsZi5fcnVuX2dp
dChbJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCiAKLSAgICBkZWYgX2Fzc2VydF9j
YW5fc3F1YXNoKHNlbGYsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKLSAgICAgICAgc3F1
YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLmNvbW1pdC1zaG91bGQtYWx3
YXlzLXNxdWFzaCcsIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpCi0gICAgICAgIHNob3VsZF9zcXVh
c2ggPSBzcXVhc2ggYW5kIHNxdWFzaC5sb3dlcigpID09ICJ0cnVlIgotCi0gICAgICAgIGlmIG5v
dCBzaG91bGRfc3F1YXNoOgotICAgICAgICAgICAgIyBPbmx5IHdhcm4gaWYgdGhlcmUgYXJlIGFj
dHVhbGx5IG11bHRpcGxlIGNvbW1pdHMgdG8gc3F1YXNoLgotICAgICAgICAgICAgbnVtX2xvY2Fs
X2NvbW1pdHMgPSBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCi0gICAgICAgICAgICBpZiBudW1f
bG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2NhbF9jb21taXRzID4gMCBhbmQgbm90IHdvcmtp
bmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKLSAgICAgICAgICAgICAgICByYWlzZSBBbWJpZ3VvdXND
b21taXRFcnJvcihudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4p
Ci0KICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1O
b25lLCBwYXNzd29yZD1Ob25lLCBnaXRfY29tbWl0PU5vbmUsIGZvcmNlX3NxdWFzaD1GYWxzZSwg
Y2hhbmdlZF9maWxlcz1Ob25lKToKICAgICAgICAgIyBVc2VybmFtZSBpcyBpZ25vcmVkIGR1cmlu
ZyBHaXQgY29tbWl0cy4KLSAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4gPSBzZWxm
LndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCkKIAorICAgICAgICBoYXNfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlcyA9IHNlbGYuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQorCisg
ICAgICAgICMgUGF0Y2hlcyB0byBjb21taXQgaGF2ZSBiZWVuIHNwZWNpZmllZCwgc28gYWN0dWFs
bHkgY29tbWl0IHRoZW0KICAgICAgICAgaWYgZ2l0X2NvbW1pdDoKICAgICAgICAgICAgICMgU3Bl
Y2lhbC1jYXNlIEhFQUQuLiB0byBtZWFuIHdvcmtpbmctY29weSBjaGFuZ2VzIG9ubHkuCiAgICAg
ICAgICAgICBpZiBnaXRfY29tbWl0LnVwcGVyKCkgPT0gJ0hFQUQuLic6Ci0gICAgICAgICAgICAg
ICAgaWYgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW46CisgICAgICAgICAgICAgICAgaWYgaGFz
X3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXM6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFNj
cmlwdEVycm9yKG1lc3NhZ2U9IlRoZSB3b3JraW5nIGNvcHkgaXMgbm90IG1vZGlmaWVkLiAtLWdp
dC1jb21taXQ9SEVBRC4uIG9ubHkgY29tbWl0cyB3b3JraW5nIGNvcHkgY2hhbmdlcy4iKQogICAg
ICAgICAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2UpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdF9vbl9icmFuY2gobWVzc2FnZSwgJ0hF
QUQnLCB1c2VybmFtZT11c2VybmFtZSwgcGFzc3dvcmQ9cGFzc3dvcmQpCiAKICAgICAgICAgICAg
ICMgTmVlZCB3b3JraW5nIGRpcmVjdG9yeSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZCBzbyB3ZSBj
YW4gY2hlY2tvdXQgdGhlIG1lcmdlIGJyYW5jaC4KLSAgICAgICAgICAgIGlmIG5vdCB3b3JraW5n
X2RpcmVjdG9yeV9pc19jbGVhbjoKKyAgICAgICAgICAgIGlmIG5vdCBoYXNfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlczoKICAgICAgICAgICAgICAgICAjIEZJWE1FOiB3ZWJraXQtcGF0Y2ggbGFu
ZCB3aWxsIG1vZGlmeSB0aGUgQ2hhbmdlTG9ncyB0byBjb3JyZWN0IHRoZSByZXZpZXdlci4KICAg
ICAgICAgICAgICAgICAjIFRoYXQgd2lsbCBtb2RpZnkgdGhlIHdvcmtpbmctY29weSBhbmQgY2F1
c2UgdXMgdG8gaGl0IHRoaXMgZXJyb3IuCiAgICAgICAgICAgICAgICAgIyBUaGUgQ2hhbmdlTG9n
IG1vZGlmaWNhdGlvbiBjb3VsZCBiZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgbG9jYWwg
Y29tbWl0LgogICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9Ildvcmtp
bmcgY29weSBpcyBtb2RpZmllZC4gQ2Fubm90IGNvbW1pdCBpbmRpdmlkdWFsIGdpdF9jb21taXRz
LiIpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNzYWdlLCBn
aXRfY29tbWl0LCB1c2VybmFtZT11c2VybmFtZSwgcGFzc3dvcmQ9cGFzc3dvcmQpCiAKLSAgICAg
ICAgaWYgbm90IGZvcmNlX3NxdWFzaDoKLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9jYW5fc3F1
YXNoKHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKQotICAgICAgICBzZWxmLl9ydW5fZ2l0KFsn
cmVzZXQnLCAnLS1zb2Z0Jywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpXSkKLSAgICAgICAgc2Vs
Zi5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgcmV0dXJuIHNl
bGYucHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcih1c2VybmFtZT11c2VybmFtZSwgcGFzc3dv
cmQ9cGFzc3dvcmQpCisgICAgICAgICMgSGF2ZW4ndCBnaXZlbiB1cyB3aGljaCBjb21taXRzLCBz
byB1c2UgdGhlIGRpZmZlcmVuY2UgdG8gcmVtb3RlIGJhc2UuCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAjIFNob3VsZCB3ZSBhbGxvdyB0aGUgY29tbWl0IHRvIHNxdWFzaCBtdWx0aXBsZSBj
aGFuZ2VzIHRvZ3RoZXI/CisgICAgICAgICAgICBpZiBub3QgZm9yY2Vfc3F1YXNoOgorICAgICAg
ICAgICAgICAgICMgSGF2ZSB0aGV5IGFza2VkIHVzIHRvIGFsd2F5cyBzcXVhc2g/CisgICAgICAg
ICAgICAgICAgc3F1YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLmNvbW1p
dC1zaG91bGQtYWx3YXlzLXNxdWFzaCcsIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpCisgICAgICAg
ICAgICAgICAgZm9yY2Vfc3F1YXNoID0gc3F1YXNoIGFuZCBzcXVhc2gubG93ZXIoKSA9PSAidHJ1
ZSIKKworICAgICAgICAgICAgIyBDaGVjayB3ZSBhcmUgbm90IGdvaW5nIHRvIHNxdWFzaAorICAg
ICAgICAgICAgbnVtX2NoYW5nZXMgPSBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpICsgaW50KG5v
dCBoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcykKKyAgICAgICAgICAgIGlmIG51bV9jaGFu
Z2VzID4gMSBhbmQgbm90IGZvcmNlX3NxdWFzaDoKKyAgICAgICAgICAgICAgICByYWlzZSBBbWJp
Z3VvdXNDb21taXRFcnJvcihsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpLCBoYXNfd29ya2luZ19k
aXJlY3RvcnlfY2hhbmdlcykKKworICAgICAgICAgICAgc2VsZi5fcnVuX2dpdChbJ3Jlc2V0Jywg
Jy0tc29mdCcsIHNlbGYucmVtb3RlX21lcmdlX2Jhc2UoKV0pCisgICAgICAgICAgICBzZWxmLmNv
bW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgcmV0dXJuIHNl
bGYucHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcih1c2VybmFtZT11c2VybmFtZSwgcGFzc3dv
cmQ9cGFzc3dvcmQpCiAKICAgICBkZWYgX2NvbW1pdF9vbl9icmFuY2goc2VsZiwgbWVzc2FnZSwg
Z2l0X2NvbW1pdCwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSk6CiAgICAgICAgIGJyYW5j
aF9uYW1lID0gc2VsZi5fY3VycmVudF9icmFuY2goKQpAQCAtNDA2LDcgKzQxMSw3IEBAIGNsYXNz
IEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgICAgICAgICAgY29tbWl0X3N1Y2NlZWRlZCA9
IEZhbHNlCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAjIEFuZCB0aGVuIHN3YXAgYmFj
ayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBjbGVhbiB1cC4KLSAgICAgICAgICAgIHNlbGYu
Y2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQorICAgICAgICAgICAgc2VsZi5kaXNjYXJkX3dvcmtp
bmdfZGlyZWN0b3J5X2NoYW5nZXMoKQogICAgICAgICAgICAgc2VsZi5fcnVuX2dpdChbJ2NoZWNr
b3V0JywgJy1xJywgYnJhbmNoX25hbWVdKQogICAgICAgICAgICAgc2VsZi5kZWxldGVfYnJhbmNo
KE1FUkdFX0JSQU5DSF9OQU1FKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtL3NjbS5weQppbmRleCA3ZDZlMTgwNGQzYTM4NTQ3NTdkNzZjZDBkZTY3
MGJkNDZmNmM1ZmUwLi5lODY2N2NjNWY1ZDU0NDM0ZjEyMTMyNTg5N2U0ZDExY2NkMmM5M2ViIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20u
cHkKQEAgLTkwLDI1ICs5MCw3IEBAIGNsYXNzIFNDTToKICAgICBkZWYgc2NyaXB0X3BhdGgoc2Vs
Ziwgc2NyaXB0X25hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNl
bGYuc2NyaXB0c19kaXJlY3RvcnkoKSwgc2NyaXB0X25hbWUpCiAKLSAgICBkZWYgZW5zdXJlX2Ns
ZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYsIGZvcmNlX2NsZWFuKToKLSAgICAgICAgaWYgc2Vs
Zi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgIGlmIG5vdCBmb3JjZV9jbGVhbjoKLSAgICAgICAgICAgIHByaW50IHNlbGYucnVuKHNlbGYu
c3RhdHVzX2NvbW1hbmQoKSwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yLCBj
d2Q9c2VsZi5jaGVja291dF9yb290KQotICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVz
c2FnZT0iV29ya2luZyBkaXJlY3RvcnkgaGFzIG1vZGlmaWNhdGlvbnMsIHBhc3MgLS1mb3JjZS1j
bGVhbiBvciAtLW5vLWNsZWFuIHRvIGNvbnRpbnVlLiIpCi0gICAgICAgIF9sb2cuaW5mbygiQ2xl
YW5pbmcgd29ya2luZyBkaXJlY3RvcnkiKQotICAgICAgICBzZWxmLmNsZWFuX3dvcmtpbmdfZGly
ZWN0b3J5KCkKLQotICAgIGRlZiBlbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLCBmb3JjZSk6
Ci0gICAgICAgIGlmIG5vdCBzZWxmLnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKLSAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBjb21taXRzID0gc2VsZi5sb2NhbF9jb21taXRzKCkKLSAgICAg
ICAgaWYgbm90IGxlbihjb21taXRzKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBu
b3QgZm9yY2U6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJXb3JraW5nIGRpcmVjdG9yeSBoYXMg
bG9jYWwgY29tbWl0cywgcGFzcyAtLWZvcmNlLWNsZWFuIHRvIGNvbnRpbnVlLiIpCi0gICAgICAg
ICAgICBzeXMuZXhpdCgxKQotICAgICAgICBzZWxmLmRpc2NhcmRfbG9jYWxfY29tbWl0cygpCisK
IAogICAgIGRlZiBydW5fc3RhdHVzX2FuZF9leHRyYWN0X2ZpbGVuYW1lcyhzZWxmLCBzdGF0dXNf
Y29tbWFuZCwgc3RhdHVzX3JlZ2V4cCk6CiAgICAgICAgIGZpbGVuYW1lcyA9IFtdCkBAIC0xNDcs
MTIgKzEyOSw2IEBAIGNsYXNzIFNDTToKICAgICBkZWYgY29tbWl0X3N1Y2Nlc3NfcmVnZXhwKCk6
CiAgICAgICAgIFNDTS5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQogCi0gICAgZGVmIHdvcmtp
bmdfZGlyZWN0b3J5X2lzX2NsZWFuKHNlbGYpOgotICAgICAgICBzZWxmLl9zdWJjbGFzc19tdXN0
X2ltcGxlbWVudCgpCi0KLSAgICBkZWYgY2xlYW5fd29ya2luZ19kaXJlY3Rvcnkoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKLQogICAgIGRlZiBzdGF0dXNf
Y29tbWFuZChzZWxmKToKICAgICAgICAgc2VsZi5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQog
CkBAIC0yMzEsMTIgKzIwNywzMCBAQCBjbGFzcyBTQ006CiAgICAgZGVmIHN2bl9ibGFtZShzZWxm
LCBwYXRoKToKICAgICAgICAgc2VsZi5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQogCisgICAg
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBkZWYgaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5n
ZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKKworICAg
IGRlZiBkaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAgICAgIHNl
bGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ICAgICMgU3ViY2xhc3NlcyBtdXN0IGluZGljYXRlIGlmIHRoZXkgc3VwcG9ydCBsb2NhbCBjb21t
aXRzLAogICAgICMgYnV0IHRoZSBTQ00gYmFzZWNsYXNzIHdpbGwgb25seSBjYWxsIGxvY2FsX2Nv
bW1pdHMgbWV0aG9kcyB3aGVuIHRoaXMgaXMgdHJ1ZS4KICAgICBAc3RhdGljbWV0aG9kCiAgICAg
ZGVmIHN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKICAgICAgICAgU0NNLl9zdWJjbGFzc19tdXN0
X2ltcGxlbWVudCgpCiAKKyAgICBkZWYgbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIFtdCisKKyAgICBkZWYgaGFzX2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAgICAgIHJldHVy
biBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpID4gMAorCisgICAgZGVmIGRpc2NhcmRfbG9jYWxf
Y29tbWl0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgcmVtb3RlX21lcmdlX2Jh
c2Uoc2VsZik6CiAgICAgICAgIFNDTS5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQogCkBAIC0y
NDQsOCArMjM4LDE0IEBAIGNsYXNzIFNDTToKICAgICAgICAgX2xvZy5lcnJvcigiWW91ciBzb3Vy
Y2UgY29udHJvbCBtYW5hZ2VyIGRvZXMgbm90IHN1cHBvcnQgbG9jYWwgY29tbWl0cy4iKQogICAg
ICAgICBzeXMuZXhpdCgxKQogCi0gICAgZGVmIGRpc2NhcmRfbG9jYWxfY29tbWl0cyhzZWxmKToK
LSAgICAgICAgcGFzcworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgZGVmIGxvY2FsX2Nv
bW1pdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbXQorICAgIGRlZiBsb2NhbF9jaGFuZ2VzX2V4
aXN0KHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuc3VwcG9ydHNfbG9jYWxfY29tbWl0cygp
IGFuZCBzZWxmLmhhc19sb2NhbF9jb21taXRzKCkpIG9yIHNlbGYuaGFzX3dvcmtpbmdfZGlyZWN0
b3J5X2NoYW5nZXMoKQorCisgICAgZGVmIGRpc2NhcmRfbG9jYWxfY2hhbmdlcyhzZWxmKToKKyAg
ICAgICAgaWYgc2VsZi5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpOgorICAgICAgICAg
ICAgc2VsZi5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQorCisgICAgICAgIGlm
IHNlbGYuaGFzX2xvY2FsX2NvbW1pdHMoKToKKyAgICAgICAgICAgIHNlbGYuZGlzY2FyZF9sb2Nh
bF9jb21taXRzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbS9zY21fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbS9zY21fbW9jay5weQppbmRleCA5YzVkM2FmMGRiNzQ1MWNjOTc1MGI0NmU3Y2Q2
MzMwMmE1Zjc1Nzc5Li4yNDE0NTYyNWFkZTU0NzkwYTZhYzRjNDNiN2E4ZTQwYjViZTIwOWI1IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
X21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L3NjbV9tb2NrLnB5CkBAIC00NiwxMyArNDYsMjIgQEAgY2xhc3MgTW9ja1NDTShvYmplY3QpOgog
ICAgICAgICBpZiByZXR1cm5fZXhpdF9jb2RlOgogICAgICAgICAgICAgcmV0dXJuIDAKIAotICAg
IGRlZiBlbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3Rvcnkoc2VsZiwgZm9yY2VfY2xlYW4pOgor
ICAgIGRlZiBoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKHNl
bGYpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgc3VwcG9ydHNfbG9jYWxfY29tbWl0cyhzZWxm
KToKICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiBlbnN1cmVfbm9fbG9jYWxfY29tbWl0
cyhzZWxmLCBmb3JjZV9jbGVhbik6CisgICAgZGVmIGhhc19sb2NhbF9jb21taXRzKHNlbGYpOgor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBkaXNjYXJkX2xvY2FsX2NvbW1pdHMoc2Vs
Zik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBkaXNjYXJkX2xvY2FsX2NoYW5nZXMoc2VsZik6
CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0
dGVzdC5weQppbmRleCBlNWRkY2UwZjFhYTdhNWI2NjM3YzAzOWE4N2NjYzhkM2Y4NTlkNDgyLi40
NDIyMTMwNTM0YmExNGFiOGRhNWVkODY5ODdjM2NkMTIyMWIzOWQwIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHkKQEAgLTMyOSw4ICszMjksOCBAQCBjbGFzcyBTQ01UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgIGFkZGVkX2ZpbGVzLnJlbW92ZSgiYWRkZWRfZGlyIikKICAgICAgICAg
c2VsZi5hc3NlcnRJdGVtc0VxdWFsKGFkZGVkX2ZpbGVzLCBbImFkZGVkX2Rpci9hZGRlZF9maWxl
MiIsICJhZGRlZF9maWxlIiwgImFkZGVkX2ZpbGUzIiwgImFkZGVkX2ZpbGU0Il0pCiAKLSAgICAg
ICAgIyBUZXN0IGFsc28gdG8gbWFrZSBzdXJlIGNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5IHJlbW92
ZXMgYWRkZWQgZmlsZXMKLSAgICAgICAgc2VsZi5zY20uY2xlYW5fd29ya2luZ19kaXJlY3Rvcnko
KQorICAgICAgICAjIFRlc3QgYWxzbyB0byBtYWtlIHN1cmUgZGlzY2FyZF93b3JraW5nX2RpcmVj
dG9yeV9jaGFuZ2VzIHJlbW92ZXMgYWRkZWQgZmlsZXMKKyAgICAgICAgc2VsZi5zY20uZGlzY2Fy
ZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJdGVtc0Vx
dWFsKHNlbGYuc2NtLmFkZGVkX2ZpbGVzKCksIFtdKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG9zLnBhdGguZXhpc3RzKCJhZGRlZF9maWxlIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
b3MucGF0aC5leGlzdHMoImFkZGVkX2ZpbGUzIikpCkBAIC04ODksNyArODg5LDcgQEAgRU5ECiAg
ICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKHN2bl9yb290X2xvY2tfcGF0aCwgIiIsICJ1
dGYtOCIpCiAgICAgICAgICMgd2Via2l0LXBhdGNoIHVzZXMgYSBDaGVja291dCBvYmplY3QgYW5k
IHJ1bnMgdXBkYXRlLXdlYmtpdCwganVzdCB1c2Ugc3ZuIHVwZGF0ZSBoZXJlLgogICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgcnVuX2NvbW1hbmQsIFsnc3ZuJywgJ3VwZGF0
ZSddKQotICAgICAgICBzZWxmLnNjbS5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCisgICAgICAg
IHNlbGYuc2NtLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc3ZuX3Jvb3RfbG9ja19wYXRoKSkKICAgICAg
ICAgcnVuX2NvbW1hbmQoWydzdm4nLCAndXBkYXRlJ10pICAjIFNob3VsZCBzdWNjZWVkIGFuZCBu
b3QgcmFpc2UuCiAKQEAgLTExMTEsMTEgKzExMTEsMTEgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01U
ZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuc2NtLnJlYmFzZV9pbl9wcm9ncmVz
cygpKQogCiAgICAgICAgICMgTWFrZSBzdXJlIG91ciBjbGVhbnVwIHdvcmtzLgotICAgICAgICBz
ZWxmLnNjbS5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCisgICAgICAgIHNlbGYuc2NtLmRpc2Nh
cmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
c2VsZi5zY20ucmViYXNlX2luX3Byb2dyZXNzKCkpCiAKICAgICAgICAgIyBNYWtlIHN1cmUgY2xl
YW51cCBkb2Vzbid0IHRocm93IHdoZW4gbm8gcmViYXNlIGlzIGluIHByb2dyZXNzLgotICAgICAg
ICBzZWxmLnNjbS5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCisgICAgICAgIHNlbGYuc2NtLmRp
c2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAKICAgICBkZWYgdGVzdF9jb21taXRp
c2hfcGFyc2luZyhzZWxmKToKICAgICAgICAgIyBNdWx0aXBsZSByZXZpc2lvbnMgYXJlIGNoZXJy
eS1waWNrZWQuCkBAIC0xMjM5LDggKzEyMzksOCBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3Qp
OgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2VsZi5zY20uY29tbWl0
X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBnaXRfY29tbWl0PSJIRUFEXiIp
CiAKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRpcGxlX2xvY2FsX2NvbW1p
dHNfYWx3YXlzX3NxdWFzaChzZWxmKToKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY29u
ZmlnJywgJ3dlYmtpdC1wYXRjaC5jb21taXQtc2hvdWxkLWFsd2F5cy1zcXVhc2gnLCAndHJ1ZSdd
KQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNlbGYuc2NtLl9h
c3NlcnRfY2FuX3NxdWFzaCA9IGxhbWJkYSB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbjogVHJ1
ZQogICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInll
dCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNj
bS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKaW5k
ZXggYzhjMGJjOWQ5NWUzOTkzMTQyYzRhOGRiMTdmY2UyOGExOTFhZDM0OS4uODcxMGVhYmZlYmY0
ZmU1ZTEwZDNmODBlMWQzNWJiYjQ3ZWZjYmI2MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CkBAIC0xMzgsMTAgKzEzOCwxMSBAQCBj
bGFzcyBTVk4oU0NNLCBTVk5SZXBvc2l0b3J5KToKICAgICBkZWYgc3ZuX3ZlcnNpb24oc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLl9ydW5fc3ZuKFsnLS12ZXJzaW9uJywgJy0tcXVpZXQnXSkK
IAotICAgIGRlZiB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKKyAgICBkZWYgaGFz
X3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAgICAgICMgRklYTUU6IFdoYXQg
YWJvdXQgZmlsZXMgd2hpY2ggYXJlIG5vdCBjb21taXR0ZWQgeWV0LgogICAgICAgICByZXR1cm4g
c2VsZi5fcnVuX3N2bihbImRpZmYiXSwgY3dkPXNlbGYuY2hlY2tvdXRfcm9vdCwgZGVjb2RlX291
dHB1dD1GYWxzZSkgPT0gIiIKIAotICAgIGRlZiBjbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxm
KToKKyAgICBkZWYgZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKHNlbGYpOgogICAg
ICAgICAjIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbG9ja3MgbHlpbmcgYXJvdW5kIGZyb20gYSBw
cmV2aW91c2x5IGFib3J0ZWQgc3ZuIGludm9jYXRpb24uCiAgICAgICAgICMgVGhpcyBpcyBzbGln
aHRseSBkYW5nZXJvdXMsIGFzIGl0J3MgcG9zc2libGUgdGhlIHVzZXIgaXMgcnVubmluZyBhbm90
aGVyIHN2biBwcm9jZXNzCiAgICAgICAgICMgb24gdGhpcyBjaGVja291dCBhdCB0aGUgc2FtZSB0
aW1lLiAgSG93ZXZlciwgaXQncyBtdWNoIG1vcmUgbGlrZWx5IHRoYXQgd2UncmUgcnVubmluZwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkKaW5kZXgg
YjQzNjRjNTBmOWI3ODEwZjQyMDQzMjRjNzU4ZTJkYjg3NDQ0ZjVhZi4uMjU2NzczYTFmZTZkN2Rm
OWI5MmRjMzc2ZjlmYTUxOGM5OWMxNTliMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgUm9sbG91
dChJUkNDb21tYW5kKToKICAgICAgICAgcmV0dXJuICIsICIuam9pbih0YXJnZXRfbmlja3MpCiAK
ICAgICBkZWYgX3VwZGF0ZV93b3JraW5nX2NvcHkoc2VsZiwgdG9vbCk6Ci0gICAgICAgIHRvb2wu
c2NtKCkuZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KGZvcmNlX2NsZWFuPVRydWUpCisg
ICAgICAgIHRvb2wuc2NtKCkuZGlzY2FyZF9sb2NhbF9jaGFuZ2VzKCkKICAgICAgICAgdG9vbC5l
eGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHRvb2wuZGVwcmVjYXRlZF9wb3J0KCkudXBk
YXRlX3dlYmtpdF9jb21tYW5kKCksIHF1aWV0PVRydWUsIGN3ZD10b29sLnNjbSgpLmNoZWNrb3V0
X3Jvb3QpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBuaWNrLCBhcmdzLCB0b29sLCBzaGVyaWZm
KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3du
bG9hZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5w
eQppbmRleCBiZGQ3ODBkMmMzZjg5NGU5OGM1Y2RlN2UwMWJiMzhjZTkzNzE0Y2JmLi4wNDc3ZDZj
NjE4YTVhMTJhODhmYTdkNzMyZWQ0ZDU0MzcyZWEwMmY1IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CkBAIC00Nyw3ICs0Nyw3IEBAIGNs
YXNzIENsZWFuKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJjbGVhbiIK
ICAgICBoZWxwX3RleHQgPSAiQ2xlYW4gdGhlIHdvcmtpbmcgY29weSIKICAgICBzdGVwcyA9IFsK
LSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAorICAgICAgICBzdGVwcy5EaXNj
YXJkTG9jYWxDaGFuZ2VzLAogICAgIF0KIAogICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBv
cHRpb25zLCBhcmdzLCB0b29sKToKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgVXBkYXRlKEFic3Ry
YWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJ1cGRhdGUiCiAgICAgaGVscF90ZXh0
ID0gIlVwZGF0ZSB3b3JraW5nIGNvcHkgKHVzZWQgaW50ZXJuYWxseSkiCiAgICAgc3RlcHMgPSBb
Ci0gICAgICAgIHN0ZXBzLkNsZWFuV29ya2luZ0RpcmVjdG9yeSwKKyAgICAgICAgc3RlcHMuRGlz
Y2FyZExvY2FsQ2hhbmdlcywKICAgICAgICAgc3RlcHMuVXBkYXRlLAogICAgIF0KIApAQCAtNjcs
NyArNjcsNyBAQCBjbGFzcyBCdWlsZChBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgogICAgIG5h
bWUgPSAiYnVpbGQiCiAgICAgaGVscF90ZXh0ID0gIlVwZGF0ZSB3b3JraW5nIGNvcHkgYW5kIGJ1
aWxkIgogICAgIHN0ZXBzID0gWwotICAgICAgICBzdGVwcy5DbGVhbldvcmtpbmdEaXJlY3Rvcnks
CisgICAgICAgIHN0ZXBzLkRpc2NhcmRMb2NhbENoYW5nZXMsCiAgICAgICAgIHN0ZXBzLlVwZGF0
ZSwKICAgICAgICAgc3RlcHMuQnVpbGQsCiAgICAgXQpAQCAtODAsNyArODAsNyBAQCBjbGFzcyBC
dWlsZEFuZFRlc3QoQWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKICAgICBuYW1lID0gImJ1aWxk
LWFuZC10ZXN0IgogICAgIGhlbHBfdGV4dCA9ICJVcGRhdGUgd29ya2luZyBjb3B5LCBidWlsZCwg
YW5kIHJ1biB0aGUgdGVzdHMiCiAgICAgc3RlcHMgPSBbCi0gICAgICAgIHN0ZXBzLkNsZWFuV29y
a2luZ0RpcmVjdG9yeSwKKyAgICAgICAgc3RlcHMuRGlzY2FyZExvY2FsQ2hhbmdlcywKICAgICAg
ICAgc3RlcHMuVXBkYXRlLAogICAgICAgICBzdGVwcy5CdWlsZCwKICAgICAgICAgc3RlcHMuUnVu
VGVzdHMsCkBAIC0yMzUsNyArMjM1LDcgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFBhdGNo
U2VxdWVuY2luZ0NvbW1hbmQsIFByb2Nlc3NBdHRhY2htZW50c01peGluKToKICAgICBoZWxwX3Rl
eHQgPSAiUnVuIGNoZWNrLXdlYmtpdC1zdHlsZSBvbiB0aGUgc3BlY2lmaWVkIGF0dGFjaG1lbnRz
IgogICAgIGFyZ3VtZW50X25hbWVzID0gIkFUVEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRfSURTXSIK
ICAgICBtYWluX3N0ZXBzID0gWwotICAgICAgICBzdGVwcy5DbGVhbldvcmtpbmdEaXJlY3Rvcnks
CisgICAgICAgIHN0ZXBzLkRpc2NhcmRMb2NhbENoYW5nZXMsCiAgICAgICAgIHN0ZXBzLlVwZGF0
ZSwKICAgICAgICAgc3RlcHMuQXBwbHlQYXRjaCwKICAgICAgICAgc3RlcHMuQ2hlY2tTdHlsZSwK
QEAgLTI0Nyw3ICsyNDcsNyBAQCBjbGFzcyBCdWlsZEF0dGFjaG1lbnQoQWJzdHJhY3RQYXRjaFNl
cXVlbmNpbmdDb21tYW5kLCBQcm9jZXNzQXR0YWNobWVudHNNaXhpbik6CiAgICAgaGVscF90ZXh0
ID0gIkFwcGx5IGFuZCBidWlsZCBwYXRjaGVzIGZyb20gYnVnemlsbGEiCiAgICAgYXJndW1lbnRf
bmFtZXMgPSAiQVRUQUNITUVOVF9JRCBbQVRUQUNITUVOVF9JRFNdIgogICAgIG1haW5fc3RlcHMg
PSBbCi0gICAgICAgIHN0ZXBzLkNsZWFuV29ya2luZ0RpcmVjdG9yeSwKKyAgICAgICAgc3RlcHMu
RGlzY2FyZExvY2FsQ2hhbmdlcywKICAgICAgICAgc3RlcHMuVXBkYXRlLAogICAgICAgICBzdGVw
cy5BcHBseVBhdGNoLAogICAgICAgICBzdGVwcy5CdWlsZCwKQEAgLTI1OSw3ICsyNTksNyBAQCBj
bGFzcyBCdWlsZEFuZFRlc3RBdHRhY2htZW50KEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFu
ZCwgUHJvY2Vzc0F0dGFjaG1lbnRzTQogICAgIGhlbHBfdGV4dCA9ICJBcHBseSwgYnVpbGQsIGFu
ZCB0ZXN0IHBhdGNoZXMgZnJvbSBidWd6aWxsYSIKICAgICBhcmd1bWVudF9uYW1lcyA9ICJBVFRB
Q0hNRU5UX0lEIFtBVFRBQ0hNRU5UX0lEU10iCiAgICAgbWFpbl9zdGVwcyA9IFsKLSAgICAgICAg
c3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAorICAgICAgICBzdGVwcy5EaXNjYXJkTG9jYWxD
aGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAgICAgICAgIHN0ZXBzLkFwcGx5UGF0Y2gs
CiAgICAgICAgIHN0ZXBzLkJ1aWxkLApAQCAtMjcwLDcgKzI3MCw3IEBAIGNsYXNzIEJ1aWxkQW5k
VGVzdEF0dGFjaG1lbnQoQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21tYW5kLCBQcm9jZXNzQXR0
YWNobWVudHNNCiBjbGFzcyBBYnN0cmFjdFBhdGNoQXBwbHlpbmdDb21tYW5kKEFic3RyYWN0UGF0
Y2hTZXF1ZW5jaW5nQ29tbWFuZCk6CiAgICAgcHJlcGFyZV9zdGVwcyA9IFsKICAgICAgICAgc3Rl
cHMuRW5zdXJlTG9jYWxDb21taXRJZk5lZWRlZCwKLSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5n
RGlyZWN0b3J5V2l0aExvY2FsQ29tbWl0cywKKyAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGly
ZWN0b3J5LAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAgICAgXQogICAgIG1haW5fc3RlcHMgPSBb
CkBAIC0yOTksNyArMjk5LDcgQEAgY2xhc3MgQXBwbHlXYXRjaExpc3QoQWJzdHJhY3RQYXRjaFNl
cXVlbmNpbmdDb21tYW5kLCBQcm9jZXNzQXR0YWNobWVudHNNaXhpbik6CiAgICAgaGVscF90ZXh0
ID0gIkFwcGxpZXMgdGhlIHdhdGNobGlzdCB0byB0aGUgc3BlY2lmaWVkIGF0dGFjaG1lbnRzIgog
ICAgIGFyZ3VtZW50X25hbWVzID0gIkFUVEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRfSURTXSIKICAg
ICBtYWluX3N0ZXBzID0gWwotICAgICAgICBzdGVwcy5DbGVhbldvcmtpbmdEaXJlY3RvcnksCisg
ICAgICAgIHN0ZXBzLkRpc2NhcmRMb2NhbENoYW5nZXMsCiAgICAgICAgIHN0ZXBzLlVwZGF0ZSwK
ICAgICAgICAgc3RlcHMuQXBwbHlQYXRjaCwKICAgICAgICAgc3RlcHMuQXBwbHlXYXRjaExpc3Qs
CkBAIC0zMTAsNyArMzEwLDcgQEAgRG93bmxvYWRzIHRoZSBhdHRhY2htZW50LCBhcHBsaWVzIGl0
IGxvY2FsbHksIHJ1bnMgdGhlIHdhdGNobGlzdCBhZ2FpbnN0IGl0LCBhbmQKIAogY2xhc3MgQWJz
dHJhY3RQYXRjaExhbmRpbmdDb21tYW5kKEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFuZCk6
CiAgICAgbWFpbl9zdGVwcyA9IFsKLSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5
LAorICAgICAgICBzdGVwcy5EaXNjYXJkTG9jYWxDaGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRh
dGUsCiAgICAgICAgIHN0ZXBzLkFwcGx5UGF0Y2gsCiAgICAgICAgIHN0ZXBzLlZhbGlkYXRlQ2hh
bmdlTG9ncywKQEAgLTQxMyw3ICs0MTMsNyBAQCBBcHBsaWVzIHRoZSBpbnZlcnNlIGRpZmYgZm9y
IHRoZSBwcm92aWRlZCByZXZpc2lvbihzKS4KIENyZWF0ZXMgYW4gYXBwcm9wcmlhdGUgcm9sbG91
dCBDaGFuZ2VMb2csIGluY2x1ZGluZyBhIHRyYWMgbGluayBhbmQgYnVnIGxpbmsuCiAiIiIKICAg
ICBzdGVwcyA9IFsKLSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAorICAgICAg
ICBzdGVwcy5EaXNjYXJkTG9jYWxDaGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAgICAg
ICAgIHN0ZXBzLlJldmVydFJldmlzaW9uLAogICAgICAgICBzdGVwcy5QcmVwYXJlQ2hhbmdlTG9n
Rm9yUmV2ZXJ0LApAQCAtNDI0LDcgKzQyNCw3IEBAIGNsYXNzIENyZWF0ZVJvbGxvdXQoQWJzdHJh
Y3RSb2xsb3V0UHJlcENvbW1hbmQpOgogICAgIG5hbWUgPSAiY3JlYXRlLXJvbGxvdXQiCiAgICAg
aGVscF90ZXh0ID0gIkNyZWF0ZXMgYSBidWcgdG8gdHJhY2sgdGhlIGJyb2tlbiBTVk4gcmV2aXNp
b24ocykgYW5kIHVwbG9hZHMgYSByb2xsb3V0IHBhdGNoLiIKICAgICBzdGVwcyA9IFsKLSAgICAg
ICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAorICAgICAgICBzdGVwcy5EaXNjYXJkTG9j
YWxDaGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAgICAgICAgIHN0ZXBzLlJldmVydFJl
dmlzaW9uLAogICAgICAgICBzdGVwcy5DcmVhdGVCdWcsCkBAIC00NzAsNyArNDcwLDcgQEAgT3Bl
bnMgdGhlIGdlbmVyYXRlZCBDaGFuZ2VMb2dzIGluICRFRElUT1IuCiBTaG93cyB0aGUgcHJlcGFy
ZWQgZGlmZiBmb3IgY29uZmlybWF0aW9uLgogQ29tbWl0cyB0aGUgcmV2ZXJ0IGFuZCB1cGRhdGVz
IHRoZSBidWcgKGluY2x1ZGluZyByZS1vcGVuaW5nIHRoZSBidWcgaWYgbmVjZXNzYXJ5KS4iIiIK
ICAgICBzdGVwcyA9IFsKLSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAorICAg
ICAgICBzdGVwcy5EaXNjYXJkTG9jYWxDaGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAg
ICAgICAgIHN0ZXBzLlJldmVydFJldmlzaW9uLAogICAgICAgICBzdGVwcy5QcmVwYXJlQ2hhbmdl
TG9nRm9yUmV2ZXJ0LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5p
dF9fLnB5CmluZGV4IDU2NDI5ZThmZTI0ZWJjNDdjYjQ5ODllZmI3MGM3MGJjOGI1MmZjNDEuLjUw
MjMxOWY3YmRhMGYwMWZmOWQ3NDk0YTIwMGQ4NjI5NGFmMGUzOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAgLTM1LDEzICszNSwxMyBAQCBm
cm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYXR0YWNodG9idWcgaW1wb3J0IEF0dGFjaFRvQnVnCiBm
cm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYnVpbGQgaW1wb3J0IEJ1aWxkCiBmcm9tIHdlYmtpdHB5
LnRvb2wuc3RlcHMuY2hlY2tzdHlsZSBpbXBvcnQgQ2hlY2tTdHlsZQogZnJvbSB3ZWJraXRweS50
b29sLnN0ZXBzLmNsZWFud29ya2luZ2RpcmVjdG9yeSBpbXBvcnQgQ2xlYW5Xb3JraW5nRGlyZWN0
b3J5Ci1mcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuY2xlYW53b3JraW5nZGlyZWN0b3J5d2l0aGxv
Y2FsY29tbWl0cyBpbXBvcnQgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5V2l0aExvY2FsQ29tbWl0cwog
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmNsb3NlYnVnIGltcG9ydCBDbG9zZUJ1ZwogZnJvbSB3
ZWJraXRweS50b29sLnN0ZXBzLmNsb3NlYnVnZm9ybGFuZGRpZmYgaW1wb3J0IENsb3NlQnVnRm9y
TGFuZERpZmYKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jbG9zZXBhdGNoIGltcG9ydCBDbG9z
ZVBhdGNoCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuY29tbWl0IGltcG9ydCBDb21taXQKIGZy
b20gd2Via2l0cHkudG9vbC5zdGVwcy5jb25maXJtZGlmZiBpbXBvcnQgQ29uZmlybURpZmYKIGZy
b20gd2Via2l0cHkudG9vbC5zdGVwcy5jcmVhdGVidWcgaW1wb3J0IENyZWF0ZUJ1ZworZnJvbSB3
ZWJraXRweS50b29sLnN0ZXBzLmRpc2NhcmRsb2NhbGNoYW5nZXMgaW1wb3J0IERpc2NhcmRMb2Nh
bENoYW5nZXMKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5lZGl0Y2hhbmdlbG9nIGltcG9ydCBF
ZGl0Q2hhbmdlTG9nCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuZW5zdXJlYnVnaXNvcGVuYW5k
YXNzaWduZWQgaW1wb3J0IEVuc3VyZUJ1Z0lzT3BlbkFuZEFzc2lnbmVkCiBmcm9tIHdlYmtpdHB5
LnRvb2wuc3RlcHMuZW5zdXJlbG9jYWxjb21taXRpZm5lZWRlZCBpbXBvcnQgRW5zdXJlTG9jYWxD
b21taXRJZk5lZWRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkKaW5kZXggMTkxMzUyNDQwNzFjMjU2M2Jl
OGFkMmQyZTgyOTIyMTc3NGIyNTZkOC4uYjE3MGJiNzNhNjAxZjBkNjBjZmQyMjcyMDIyN2M2MjIz
NjI4NGRjMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Ns
ZWFud29ya2luZ2RpcmVjdG9yeS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5LnB5CkBAIC0yOCwyMyArMjgsMTkgQEAKIAogZnJv
bSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCiBm
cm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucworZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIAogCiBjbGFz
cyBDbGVhbldvcmtpbmdEaXJlY3RvcnkoQWJzdHJhY3RTdGVwKToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgdG9vbCwgb3B0aW9ucywgYWxsb3dfbG9jYWxfY29tbWl0cz1GYWxzZSk6Ci0gICAgICAg
IEFic3RyYWN0U3RlcC5fX2luaXRfXyhzZWxmLCB0b29sLCBvcHRpb25zKQotICAgICAgICBzZWxm
Ll9hbGxvd19sb2NhbF9jb21taXRzID0gYWxsb3dfbG9jYWxfY29tbWl0cwogCiAgICAgQGNsYXNz
bWV0aG9kCiAgICAgZGVmIG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIEFic3RyYWN0U3Rl
cC5vcHRpb25zKCkgKyBbCiAgICAgICAgICAgICBPcHRpb25zLmZvcmNlX2NsZWFuLAotICAgICAg
ICAgICAgT3B0aW9ucy5jbGVhbiwKICAgICAgICAgXQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0
ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmNsZWFuOgotICAgICAgICAgICAgcmV0
dXJuCi0gICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd19sb2NhbF9jb21taXRzOgotICAgICAgICAg
ICAgc2VsZi5fdG9vbC5zY20oKS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLl9vcHRpb25z
LmZvcmNlX2NsZWFuKQotICAgICAgICBzZWxmLl90b29sLnNjbSgpLmVuc3VyZV9jbGVhbl93b3Jr
aW5nX2RpcmVjdG9yeShmb3JjZV9jbGVhbj1zZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuKQorICAg
ICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5mb3JjZV9jbGVhbjoKKyAgICAgICAgICAgIGlmIHNl
bGYuX3Rvb2wuc2NtKCkuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKToKKyAgICAgICAg
ICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiV29ya2luZyBkaXJlY3RvcnkgaGFzIGNoYW5nZXMs
IHBhc3MgLS1mb3JjZS1jbGVhbiB0byBjb250aW51ZS4iKQorICAgICAgICBzZWxmLl90b29sLnNj
bSgpLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5X3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2Rp
cmVjdG9yeV91bml0dGVzdC5weQppbmRleCAxNWE4ODUwYTUwN2YxMmEzMjU0NzQ2ZTRkZmUyN2E0
NjdjY2Q2YTdjLi5mMDFhNmFmMTUyMzYzOTBkMDM2N2I2MTNiNGJjMTdhZDYwMzc5MDNlIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGly
ZWN0b3J5X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jbGVhbndvcmtpbmdkaXJlY3RvcnlfdW5pdHRlc3QucHkKQEAgLTMxLDIyICszMSwzMCBAQCBp
bXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2Nr
CiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9v
bAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmNsZWFud29ya2luZ2RpcmVjdG9yeSBpbXBvcnQg
Q2xlYW5Xb3JraW5nRGlyZWN0b3J5Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogCiAKIGNsYXNzIENsZWFuV29ya2luZ0RpcmVjdG9yeVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICBkZWYg
dGVzdF93b3JraW5nX2NoYW5nZXNfZXhpc3Rfd2l0aF9mb3JjZShzZWxmKToKICAgICAgICAgdG9v
bCA9IE1vY2tUb29sKCkKICAgICAgICAgdG9vbC5fc2NtID0gTW9jaygpCi0gICAgICAgIHRvb2wu
X3NjbS5jaGVja291dF9yb290ID0gJy9tb2NrLWNoZWNrb3V0JwotICAgICAgICBzdGVwID0gQ2xl
YW5Xb3JraW5nRGlyZWN0b3J5KHRvb2wsIE1vY2tPcHRpb25zKGNsZWFuPVRydWUsIGZvcmNlX2Ns
ZWFuPUZhbHNlKSkKKyAgICAgICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFu
Z2VzID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHN0ZXAgPSBDbGVhbldvcmtpbmdEaXJlY3Rvcnko
dG9vbCwgTW9ja09wdGlvbnMoZm9yY2VfY2xlYW49VHJ1ZSkpCiAgICAgICAgIHN0ZXAucnVuKHt9
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfbm9fbG9jYWxfY29t
bWl0cy5jYWxsX2NvdW50LCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5l
bnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3RvcnkuY2FsbF9jb3VudCwgMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2Vz
LmNhbGxfY291bnQsIDEpCiAKLSAgICBkZWYgdGVzdF9ub19jbGVhbihzZWxmKToKKyAgICBkZWYg
dGVzdF9ub19jaGFuZ2VzX2V4aXN0X3dpdGhfZm9yY2Uoc2VsZik6CiAgICAgICAgIHRvb2wgPSBN
b2NrVG9vbCgpCiAgICAgICAgIHRvb2wuX3NjbSA9IE1vY2soKQotICAgICAgICBzdGVwID0gQ2xl
YW5Xb3JraW5nRGlyZWN0b3J5KHRvb2wsIE1vY2tPcHRpb25zKGNsZWFuPUZhbHNlKSkKKyAgICAg
ICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0gbGFtYmRhOiBUcnVl
CisgICAgICAgIHN0ZXAgPSBDbGVhbldvcmtpbmdEaXJlY3RvcnkodG9vbCwgTW9ja09wdGlvbnMo
Zm9yY2VfY2xlYW49VHJ1ZSkpCiAgICAgICAgIHN0ZXAucnVuKHt9KQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cy5jYWxsX2NvdW50LCAw
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfY2xlYW5fd29ya2lu
Z19kaXJlY3RvcnkuY2FsbF9jb3VudCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b29s
Ll9zY20uZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzLmNhbGxfY291bnQsIDEpCisK
KyAgICBkZWYgdGVzdF9lcnJvcl9jaGFuZ2VzX2V4aXN0X3dpdGhvdXRfZm9yY2Uoc2VsZik6Cisg
ICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAgIHRvb2wuX3NjbSA9IE1vY2soKQorICAg
ICAgICB0b29sLl9zY20uaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMgPSBsYW1iZGE6IFRy
dWUKKyAgICAgICAgc3RlcCA9IENsZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2NrT3B0aW9u
cyhmb3JjZV9jbGVhbj1GYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVy
cm9yLCBzdGVwLnJ1biwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2NtLmRp
c2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcy5jYWxsX2NvdW50LCAwKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9y
eXdpdGhsb2NhbGNvbW1pdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
Y2xlYW53b3JraW5nZGlyZWN0b3J5d2l0aGxvY2FsY29tbWl0cy5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZjA2Zjk0ZWY0YWQyZTA1YzVmMWFjZjY4NzBkZGFlN2Q4Yjg1MmExNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5d2l0aGxvY2FsY29t
bWl0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIAotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi1mcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuY2xlYW53b3JraW5nZGlyZWN0b3J5IGltcG9y
dCBDbGVhbldvcmtpbmdEaXJlY3RvcnkKLQotY2xhc3MgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5V2l0
aExvY2FsQ29tbWl0cyhDbGVhbldvcmtpbmdEaXJlY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0b29sLCBvcHRpb25zKToKLSAgICAgICAgIyBGSVhNRTogVGhpcyBhIGJpdCBvZiBhIGhh
Y2suICBDb25zaWRlciBkb2luZyB0aGlzIG1vcmUgY2xlYW5seS4KLSAgICAgICAgQ2xlYW5Xb3Jr
aW5nRGlyZWN0b3J5Ll9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMsIGFsbG93X2xvY2FsX2Nv
bW1pdHM9VHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9kaXNjYXJkbG9jYWxjaGFuZ2VzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2Rpc2NhcmRsb2NhbGNoYW5nZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEzMWY4MDExNzQ2YTYwNjk3
MmY2YjFlZTUxOWM3OTYzN2EyMDU3MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9kaXNjYXJkbG9jYWxjaGFuZ2VzLnB5CkBAIC0wLDAgKzEsNDgg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYWJzdHJhY3Rz
dGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5vcHRpb25z
IGltcG9ydCBPcHRpb25zCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGlt
cG9ydCBTY3JpcHRFcnJvcgorCisKK2NsYXNzIERpc2NhcmRMb2NhbENoYW5nZXMoQWJzdHJhY3RT
dGVwKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6CisgICAgICAg
IHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsgWworICAgICAgICAgICAgT3B0aW9ucy5m
b3JjZV9jbGVhbiwKKyAgICAgICAgXQorCisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CisgICAg
ICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuOgorICAgICAgICAgICAgaWYgc2Vs
Zi5fdG9vbC5zY20oKS5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpOgorICAgICAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJXb3JraW5nIGRpcmVjdG9yeSBoYXMgY2hhbmdlcywg
cGFzcyAtLWZvcmNlLWNsZWFuIHRvIGNvbnRpbnVlLiIpCisgICAgICAgICAgICBpZiBzZWxmLl90
b29sLnNjbSgpLmhhc19sb2NhbF9jb21taXRzKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgU2Ny
aXB0RXJyb3IoIlJlcG9zaXRvcnkgaGFzIGxvY2FsIGNvbW1pdHMsIHBhc3MgLS1mb3JjZS1jbGVh
biB0byBjb250aW51ZS4iKQorICAgICAgICBzZWxmLl90b29sLnNjbSgpLmRpc2NhcmRfbG9jYWxf
Y2hhbmdlcygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
ZGlzY2FyZGxvY2FsY2hhbmdlc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9kaXNjYXJkbG9jYWxjaGFuZ2VzX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4
MGMxZDIwMzA1MzY3YTFhZjg4MzlhOGY0MTExM2YwODEyYzY3ZDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZGlzY2FyZGxvY2FsY2hhbmdlc191
bml0dGVzdC5weQpAQCAtMCwwICsxLDkwIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVu
aXR0ZXN0CisKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCitmcm9t
IHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9vbAorZnJv
bSB3ZWJraXRweS50b29sLnN0ZXBzLmRpc2NhcmRsb2NhbGNoYW5nZXMgaW1wb3J0IERpc2NhcmRM
b2NhbENoYW5nZXMKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IFNjcmlwdEVycm9yCisKKworY2xhc3MgRGlzY2FyZExvY2FsQ2hhbmdlc1Rlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3dvcmtpbmdfY2hhbmdlc19leGlzdF93aXRoX2ZvcmNl
KHNlbGYpOgorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9zY20gPSBN
b2NrKCkKKyAgICAgICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0g
bGFtYmRhOiBUcnVlCisgICAgICAgIHRvb2wuX3NjbS5oYXNfbG9jYWxfY29tbWl0cyA9IGxhbWJk
YTogRmFsc2UKKyAgICAgICAgc3RlcCA9IERpc2NhcmRMb2NhbENoYW5nZXModG9vbCwgTW9ja09w
dGlvbnMoZm9yY2VfY2xlYW49VHJ1ZSkpCisgICAgICAgIHN0ZXAucnVuKHt9KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX2xvY2FsX2NoYW5nZXMuY2FsbF9jb3Vu
dCwgMSkKKworICAgIGRlZiB0ZXN0X2xvY2FsX2NvbW1pdHNfZXhpc3Rfd2l0aF9mb3JjZShzZWxm
KToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9vbC5fc2NtID0gTW9jaygp
CisgICAgICAgIHRvb2wuX3NjbS5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyA9IGxhbWJk
YTogRmFsc2UKKyAgICAgICAgdG9vbC5fc2NtLmhhc19sb2NhbF9jb21taXRzID0gbGFtYmRhOiBU
cnVlCisgICAgICAgIHN0ZXAgPSBEaXNjYXJkTG9jYWxDaGFuZ2VzKHRvb2wsIE1vY2tPcHRpb25z
KGZvcmNlX2NsZWFuPVRydWUpKQorICAgICAgICBzdGVwLnJ1bih7fSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh0b29sLl9zY20uZGlzY2FyZF9sb2NhbF9jaGFuZ2VzLmNhbGxfY291bnQsIDEp
CisKKyAgICBkZWYgdGVzdF9sb2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NoYW5nZXNfZXhpc3Rf
d2l0aF9mb3JjZShzZWxmKToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9v
bC5fc2NtID0gTW9jaygpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfd29ya2luZ19kaXJlY3Rvcnlf
Y2hhbmdlcyA9IGxhbWJkYTogVHJ1ZQorICAgICAgICB0b29sLl9zY20uaGFzX2xvY2FsX2NvbW1p
dHMgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgc3RlcCA9IERpc2NhcmRMb2NhbENoYW5nZXModG9v
bCwgTW9ja09wdGlvbnMoZm9yY2VfY2xlYW49VHJ1ZSkpCisgICAgICAgIHN0ZXAucnVuKHt9KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX2xvY2FsX2NoYW5nZXMu
Y2FsbF9jb3VudCwgMSkKKworICAgIGRlZiB0ZXN0X25vX2NoYW5nZXNfZXhpc3Rfd2l0aF9mb3Jj
ZShzZWxmKToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9vbC5fc2NtID0g
TW9jaygpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyA9
IGxhbWJkYTogRmFsc2UKKyAgICAgICAgdG9vbC5fc2NtLmhhc19sb2NhbF9jb21taXRzID0gbGFt
YmRhOiBGYWxzZQorICAgICAgICBzdGVwID0gRGlzY2FyZExvY2FsQ2hhbmdlcyh0b29sLCBNb2Nr
T3B0aW9ucyhmb3JjZV9jbGVhbj1UcnVlKSkKKyAgICAgICAgc3RlcC5ydW4oe30pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2NtLmRpc2NhcmRfbG9jYWxfY2hhbmdlcy5jYWxsX2Nv
dW50LCAxKQorCisgICAgZGVmIHRlc3RfZXJyb3Jfd29ya2luZ19jaGFuZ2VzX2V4aXN0X3dpdGhv
dXRfZm9yY2Uoc2VsZik6CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAgIHRvb2wu
X3NjbSA9IE1vY2soKQorICAgICAgICB0b29sLl9zY20uaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2No
YW5nZXMgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgdG9vbC5fc2NtLmhhc19sb2NhbF9jb21taXRz
ID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBzdGVwID0gRGlzY2FyZExvY2FsQ2hhbmdlcyh0b29s
LCBNb2NrT3B0aW9ucyhmb3JjZV9jbGVhbj1GYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFNjcmlwdEVycm9yLCBzdGVwLnJ1biwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dG9vbC5fc2NtLmRpc2NhcmRfbG9jYWxfY2hhbmdlcy5jYWxsX2NvdW50LCAwKQorCisgICAgZGVm
IHRlc3RfZXJyb3JfbG9jYWxfY29tbWl0c19leGlzdF93aXRob3V0X2ZvcmNlKHNlbGYpOgorICAg
ICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9zY20gPSBNb2NrKCkKKyAgICAg
ICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0gbGFtYmRhOiBGYWxz
ZQorICAgICAgICB0b29sLl9zY20uaGFzX2xvY2FsX2NvbW1pdHMgPSBsYW1iZGE6IFRydWUKKyAg
ICAgICAgc3RlcCA9IERpc2NhcmRMb2NhbENoYW5nZXModG9vbCwgTW9ja09wdGlvbnMoZm9yY2Vf
Y2xlYW49RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc3Rl
cC5ydW4sIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX2xv
Y2FsX2NoYW5nZXMuY2FsbF9jb3VudCwgMCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182640</attachid>
            <date>2013-01-14 15:50:04 -0800</date>
            <delta_ts>2013-01-14 18:24:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104198-20130115104704.patch</filename>
            <type>text/plain</type>
            <size>35601</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTczCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjliNGMwMzMyY2FhOGIwZjUxZWQ5OTM1Y2VmYTgzYTcw
ZTU1ZDYyNC4uOWRmZGQyNjViY2NkNzM1OTg4ZDE1ZjE3NzE2NzA4NWNjZTRkZDI5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEzLTAxLTA5ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgRml4IG5hbWluZyBhbWJpZ3VpdHkgYmV0d2VlbiB3aGF0IHRoZSB3b3JraW5n
X2RpcmVjdG9yeSBjb21tYW5kcyBkaWQKKyAgICAgICAgYW5kIHRoZWlyIG5hbWUuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDE5OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weToKKyAgICAgICAgKEFtYmlndW91c0NvbW1p
dEVycm9yLl9faW5pdF9fKToKKyAgICAgICAgKEdpdC53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVh
bik6CisgICAgICAgIChHaXQuY2xlYW5fd29ya2luZ19kaXJlY3RvcnkpOgorICAgICAgICAoR2l0
LnJldmVydF9maWxlcyk6CisgICAgICAgIChHaXQuY29tbWl0X3dpdGhfbWVzc2FnZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eToKKyAgICAgICAgKEdpdFNWTlRlc3QudGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRpcGxl
X2xvY2FsX2NvbW1pdHNfYWx3YXlzX3NxdWFzaCk6CisKIDIwMTMtMDEtMTMgIEpvbmF0aGFuIExp
dSAgPG5ldDE0N0BnbWFpbC5jb20+CiAKICAgICAgICAgRml4IENPTkZJRyBtaXNzaW5nIGxpbmtf
cGtnY29uZmlnIG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20vZ2l0LnB5CmluZGV4IDZiOGYzOGY2NjBmZTZhNDFjMjJkNDY3ZDFhN2Y2
ZjE3YmIxMjVkNDAuLjdhNmMyOGVlZGU1MWI5ZDUwYzI4ZGY4MmFlNDI5MmNmMGM0YzRmMmMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5w
eQpAQCAtNDgsOSArNDgsMTEgQEAgZGVmIHJ1bl9jb21tYW5kKCphcmdzLCAqKmt3YXJncyk6CiAK
IAogY2xhc3MgQW1iaWd1b3VzQ29tbWl0RXJyb3IoRXhjZXB0aW9uKToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIGhhc193b3JraW5nX2Rp
cmVjdG9yeV9jaGFuZ2VzKToKKyAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsICJGb3Vu
ZCAlcyBsb2NhbCBjb21taXRzIGFuZCB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgJXMiICUgKAor
ICAgICAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMsIFsiY2xlYW4iLCAibm90IGNsZWFuIl1baGFz
X3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXNdKSkKICAgICAgICAgc2VsZi5udW1fbG9jYWxfY29t
bWl0cyA9IG51bV9sb2NhbF9jb21taXRzCi0gICAgICAgIHNlbGYud29ya2luZ19kaXJlY3Rvcnlf
aXNfY2xlYW4gPSB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbgorICAgICAgICBzZWxmLmhhc193
b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0gaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMK
IAogCiBjbGFzcyBHaXQoU0NNLCBTVk5SZXBvc2l0b3J5KToKQEAgLTE0NiwxMyArMTQ4LDEzIEBA
IGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgIGRlZiByZWJhc2VfaW5fcHJvZ3Jl
c3Moc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLmFi
c29sdXRlX3BhdGgoc2VsZi5fZmlsZXN5c3RlbS5qb2luKCcuZ2l0JywgJ3JlYmFzZS1hcHBseScp
KSkKIAotICAgIGRlZiB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3J1bl9naXQoWydkaWZmJywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpLCAn
LS1uby1yZW5hbWVzJywgJy0tbmFtZS1vbmx5J10pID09ICIiCisgICAgZGVmIGhhc193b3JraW5n
X2RpcmVjdG9yeV9jaGFuZ2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2dpdChb
J2RpZmYnLCAnSEVBRCcsICctLW5vLXJlbmFtZXMnLCAnLS1uYW1lLW9ubHknXSkgIT0gIiIKIAot
ICAgIGRlZiBjbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgIyBDb3VsZCBy
dW4gZ2l0IGNsZWFuIGhlcmUgdG9vLCBidXQgdGhhdCB3b3VsZG4ndCBtYXRjaCB3b3JraW5nX2Rp
cmVjdG9yeV9pc19jbGVhbgotICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAnLS1oYXJk
Jywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpXSkKLSAgICAgICAgIyBBYm9ydGluZyByZWJhc2Ug
ZXZlbiB0aG91Z2ggdGhpcyBkb2VzIG5vdCBtYXRjaCB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVh
bgorICAgIGRlZiBkaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAg
ICAgICMgQ291bGQgcnVuIGdpdCBjbGVhbiBoZXJlIHRvbywgYnV0IHRoYXQgd291bGRuJ3QgbWF0
Y2ggc3VidmVyc2lvbgorICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAnSEVBRCcsICct
LWhhcmQnXSkKKyAgICAgICAgIyBBYm9ydGluZyByZWJhc2UgZXZlbiB0aG91Z2ggdGhpcyBkb2Vz
IG5vdCBtYXRjaCBzdWJ2ZXJzaW9uCiAgICAgICAgIGlmIHNlbGYucmViYXNlX2luX3Byb2dyZXNz
KCk6CiAgICAgICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmViYXNlJywgJy0tYWJvcnQnXSkKIApA
QCAtMzM0LDQxICszMzYsNDEgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAg
ZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgc2VsZi5fcnVuX2dp
dChbJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCiAKLSAgICBkZWYgX2Fzc2VydF9j
YW5fc3F1YXNoKHNlbGYsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKLSAgICAgICAgc3F1
YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLmNvbW1pdC1zaG91bGQtYWx3
YXlzLXNxdWFzaCcsIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpCi0gICAgICAgIHNob3VsZF9zcXVh
c2ggPSBzcXVhc2ggYW5kIHNxdWFzaC5sb3dlcigpID09ICJ0cnVlIgotCi0gICAgICAgIGlmIG5v
dCBzaG91bGRfc3F1YXNoOgotICAgICAgICAgICAgIyBPbmx5IHdhcm4gaWYgdGhlcmUgYXJlIGFj
dHVhbGx5IG11bHRpcGxlIGNvbW1pdHMgdG8gc3F1YXNoLgotICAgICAgICAgICAgbnVtX2xvY2Fs
X2NvbW1pdHMgPSBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCi0gICAgICAgICAgICBpZiBudW1f
bG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2NhbF9jb21taXRzID4gMCBhbmQgbm90IHdvcmtp
bmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKLSAgICAgICAgICAgICAgICByYWlzZSBBbWJpZ3VvdXND
b21taXRFcnJvcihudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4p
Ci0KICAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1O
b25lLCBwYXNzd29yZD1Ob25lLCBnaXRfY29tbWl0PU5vbmUsIGZvcmNlX3NxdWFzaD1GYWxzZSwg
Y2hhbmdlZF9maWxlcz1Ob25lKToKICAgICAgICAgIyBVc2VybmFtZSBpcyBpZ25vcmVkIGR1cmlu
ZyBHaXQgY29tbWl0cy4KLSAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4gPSBzZWxm
LndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCkKIAorICAgICAgICBoYXNfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlcyA9IHNlbGYuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQorCisg
ICAgICAgICMgUGF0Y2hlcyB0byBjb21taXQgaGF2ZSBiZWVuIHNwZWNpZmllZCwgc28gYWN0dWFs
bHkgY29tbWl0IHRoZW0KICAgICAgICAgaWYgZ2l0X2NvbW1pdDoKICAgICAgICAgICAgICMgU3Bl
Y2lhbC1jYXNlIEhFQUQuLiB0byBtZWFuIHdvcmtpbmctY29weSBjaGFuZ2VzIG9ubHkuCiAgICAg
ICAgICAgICBpZiBnaXRfY29tbWl0LnVwcGVyKCkgPT0gJ0hFQUQuLic6Ci0gICAgICAgICAgICAg
ICAgaWYgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW46CisgICAgICAgICAgICAgICAgaWYgbm90
IGhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzOgogICAgICAgICAgICAgICAgICAgICByYWlz
ZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJUaGUgd29ya2luZyBjb3B5IGlzIG5vdCBtb2RpZmllZC4g
LS1naXQtY29tbWl0PUhFQUQuLiBvbmx5IGNvbW1pdHMgd29ya2luZyBjb3B5IGNoYW5nZXMuIikK
ICAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdl
KQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfb25fYnJhbmNoKG1lc3NhZ2Us
ICdIRUFEJywgdXNlcm5hbWU9dXNlcm5hbWUsIHBhc3N3b3JkPXBhc3N3b3JkKQogCiAgICAgICAg
ICAgICAjIE5lZWQgd29ya2luZyBkaXJlY3RvcnkgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQgc28g
d2UgY2FuIGNoZWNrb3V0IHRoZSBtZXJnZSBicmFuY2guCi0gICAgICAgICAgICBpZiBub3Qgd29y
a2luZ19kaXJlY3RvcnlfaXNfY2xlYW46CisgICAgICAgICAgICBpZiBoYXNfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlczoKICAgICAgICAgICAgICAgICAjIEZJWE1FOiB3ZWJraXQtcGF0Y2ggbGFu
ZCB3aWxsIG1vZGlmeSB0aGUgQ2hhbmdlTG9ncyB0byBjb3JyZWN0IHRoZSByZXZpZXdlci4KICAg
ICAgICAgICAgICAgICAjIFRoYXQgd2lsbCBtb2RpZnkgdGhlIHdvcmtpbmctY29weSBhbmQgY2F1
c2UgdXMgdG8gaGl0IHRoaXMgZXJyb3IuCiAgICAgICAgICAgICAgICAgIyBUaGUgQ2hhbmdlTG9n
IG1vZGlmaWNhdGlvbiBjb3VsZCBiZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgbG9jYWwg
Y29tbWl0LgogICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9Ildvcmtp
bmcgY29weSBpcyBtb2RpZmllZC4gQ2Fubm90IGNvbW1pdCBpbmRpdmlkdWFsIGdpdF9jb21taXRz
LiIpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNzYWdlLCBn
aXRfY29tbWl0LCB1c2VybmFtZT11c2VybmFtZSwgcGFzc3dvcmQ9cGFzc3dvcmQpCiAKLSAgICAg
ICAgaWYgbm90IGZvcmNlX3NxdWFzaDoKLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9jYW5fc3F1
YXNoKHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKQotICAgICAgICBzZWxmLl9ydW5fZ2l0KFsn
cmVzZXQnLCAnLS1zb2Z0Jywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpXSkKLSAgICAgICAgc2Vs
Zi5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgcmV0dXJuIHNl
bGYucHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcih1c2VybmFtZT11c2VybmFtZSwgcGFzc3dv
cmQ9cGFzc3dvcmQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFNob3VsZCB3ZSBhbGxv
dyB0aGUgY29tbWl0IHRvIHNxdWFzaCBtdWx0aXBsZSBjaGFuZ2VzIHRvZ3RoZXI/CisgICAgICAg
ICAgICBpZiBub3QgZm9yY2Vfc3F1YXNoOgorICAgICAgICAgICAgICAgIGZvcmNlX3NxdWFzaCA9
IEdpdC5yZWFkX2dpdF9jb25maWcoJ3dlYmtpdC1wYXRjaC5jb21taXQtc2hvdWxkLWFsd2F5cy1z
cXVhc2gnLCBjd2Q9c2VsZi5jaGVja291dF9yb290KS5sb3dlcigpID09ICJ0cnVlIgorCisgICAg
ICAgICAgICBpZiBub3QgZm9yY2Vfc3F1YXNoOgorICAgICAgICAgICAgICAgIGxvY2FsX2NvbW1p
dHMgPSBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCisgICAgICAgICAgICAgICAgaWYgIGxvY2Fs
X2NvbW1pdHMgPiAxIG9yIChsb2NhbF9jb21taXRzIGFuZCBoYXNfd29ya2luZ19kaXJlY3Rvcnlf
Y2hhbmdlcyk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFtYmlndW91c0NvbW1pdEVycm9y
KGxvY2FsX2NvbW1pdHMsIGhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKQorCisgICAgICAg
ICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAnLS1zb2Z0Jywgc2VsZi5yZW1vdGVfbWVyZ2Vf
YmFzZSgpXSkKKyAgICAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1l
c3NhZ2UpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2Vy
dmVyKHVzZXJuYW1lPXVzZXJuYW1lLCBwYXNzd29yZD1wYXNzd29yZCkKIAogICAgIGRlZiBfY29t
bWl0X29uX2JyYW5jaChzZWxmLCBtZXNzYWdlLCBnaXRfY29tbWl0LCB1c2VybmFtZT1Ob25lLCBw
YXNzd29yZD1Ob25lKToKICAgICAgICAgYnJhbmNoX25hbWUgPSBzZWxmLl9jdXJyZW50X2JyYW5j
aCgpCkBAIC00MDYsNyArNDA4LDcgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAg
ICAgICAgICAgICBjb21taXRfc3VjY2VlZGVkID0gRmFsc2UKICAgICAgICAgZmluYWxseToKICAg
ICAgICAgICAgICMgQW5kIHRoZW4gc3dhcCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5k
IGNsZWFuIHVwLgotICAgICAgICAgICAgc2VsZi5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCisg
ICAgICAgICAgICBzZWxmLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAgICAg
ICAgICAgICBzZWxmLl9ydW5fZ2l0KFsnY2hlY2tvdXQnLCAnLXEnLCBicmFuY2hfbmFtZV0pCiAg
ICAgICAgICAgICBzZWxmLmRlbGV0ZV9icmFuY2goTUVSR0VfQlJBTkNIX05BTUUpCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5CmluZGV4
IDdkNmUxODA0ZDNhMzg1NDc1N2Q3NmNkMGRlNjcwYmQ0NmY2YzVmZTAuLjlkYTRkM2Y3M2Y0MWNj
YTRhNjBlODBjZWM1ZWI2ODYyZDViMGIzMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQpAQCAtOTAsMjYgKzkwLDYgQEAgY2xhc3Mg
U0NNOgogICAgIGRlZiBzY3JpcHRfcGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5zY3JpcHRzX2RpcmVjdG9yeSgpLCBzY3Jp
cHRfbmFtZSkKIAotICAgIGRlZiBlbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3Rvcnkoc2VsZiwg
Zm9yY2VfY2xlYW4pOgotICAgICAgICBpZiBzZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFu
KCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgbm90IGZvcmNlX2NsZWFuOgotICAg
ICAgICAgICAgcHJpbnQgc2VsZi5ydW4oc2VsZi5zdGF0dXNfY29tbWFuZCgpLCBlcnJvcl9oYW5k
bGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IsIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpCi0gICAg
ICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJXb3JraW5nIGRpcmVjdG9yeSBoYXMg
bW9kaWZpY2F0aW9ucywgcGFzcyAtLWZvcmNlLWNsZWFuIG9yIC0tbm8tY2xlYW4gdG8gY29udGlu
dWUuIikKLSAgICAgICAgX2xvZy5pbmZvKCJDbGVhbmluZyB3b3JraW5nIGRpcmVjdG9yeSIpCi0g
ICAgICAgIHNlbGYuY2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQotCi0gICAgZGVmIGVuc3VyZV9u
b19sb2NhbF9jb21taXRzKHNlbGYsIGZvcmNlKToKLSAgICAgICAgaWYgbm90IHNlbGYuc3VwcG9y
dHNfbG9jYWxfY29tbWl0cygpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGNvbW1pdHMg
PSBzZWxmLmxvY2FsX2NvbW1pdHMoKQotICAgICAgICBpZiBub3QgbGVuKGNvbW1pdHMpOgotICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5vdCBmb3JjZToKLSAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIldvcmtpbmcgZGlyZWN0b3J5IGhhcyBsb2NhbCBjb21taXRzLCBwYXNzIC0tZm9yY2Ut
Y2xlYW4gdG8gY29udGludWUuIikKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIHNl
bGYuZGlzY2FyZF9sb2NhbF9jb21taXRzKCkKLQogICAgIGRlZiBydW5fc3RhdHVzX2FuZF9leHRy
YWN0X2ZpbGVuYW1lcyhzZWxmLCBzdGF0dXNfY29tbWFuZCwgc3RhdHVzX3JlZ2V4cCk6CiAgICAg
ICAgIGZpbGVuYW1lcyA9IFtdCiAgICAgICAgICMgV2UgcnVuIHdpdGggY3dkPXNlbGYuY2hlY2tv
dXRfcm9vdCBzbyB0aGF0IHJldHVybmVkLXBhdGhzIGFyZSByb290LXJlbGF0aXZlLgpAQCAtMTQ3
LDEyICsxMjcsNiBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGNvbW1pdF9zdWNjZXNzX3JlZ2V4cCgp
OgogICAgICAgICBTQ00uX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKIAotICAgIGRlZiB3b3Jr
aW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKLSAgICAgICAgc2VsZi5fc3ViY2xhc3NfbXVz
dF9pbXBsZW1lbnQoKQotCi0gICAgZGVmIGNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYpOgot
ICAgICAgICBzZWxmLl9zdWJjbGFzc19tdXN0X2ltcGxlbWVudCgpCi0KICAgICBkZWYgc3RhdHVz
X2NvbW1hbmQoc2VsZik6CiAgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkK
IApAQCAtMjMxLDEyICsyMDUsMjggQEAgY2xhc3MgU0NNOgogICAgIGRlZiBzdm5fYmxhbWUoc2Vs
ZiwgcGF0aCk6CiAgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKIAorICAg
IGRlZiBoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgc2VsZi5f
c3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQorCisgICAgZGVmIGRpc2NhcmRfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fc3ViY2xhc3NfbXVzdF9pbXBsZW1l
bnQoKQorCisgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIyBTdWJjbGFzc2VzIG11c3QgaW5k
aWNhdGUgaWYgdGhleSBzdXBwb3J0IGxvY2FsIGNvbW1pdHMsCiAgICAgIyBidXQgdGhlIFNDTSBi
YXNlY2xhc3Mgd2lsbCBvbmx5IGNhbGwgbG9jYWxfY29tbWl0cyBtZXRob2RzIHdoZW4gdGhpcyBp
cyB0cnVlLgogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgc3VwcG9ydHNfbG9jYWxfY29tbWl0
cygpOgogICAgICAgICBTQ00uX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKIAorICAgIGRlZiBs
b2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBoYXNfbG9j
YWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmxvY2FsX2NvbW1pdHMo
KSkgPiAwCisKKyAgICBkZWYgZGlzY2FyZF9sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4KKwogICAgIGRlZiByZW1vdGVfbWVyZ2VfYmFzZShzZWxmKToKICAgICAgICAgU0NNLl9z
dWJjbGFzc19tdXN0X2ltcGxlbWVudCgpCiAKQEAgLTI0NCw4ICsyMzQsMTIgQEAgY2xhc3MgU0NN
OgogICAgICAgICBfbG9nLmVycm9yKCJZb3VyIHNvdXJjZSBjb250cm9sIG1hbmFnZXIgZG9lcyBu
b3Qgc3VwcG9ydCBsb2NhbCBjb21taXRzLiIpCiAgICAgICAgIHN5cy5leGl0KDEpCiAKLSAgICBk
ZWYgZGlzY2FyZF9sb2NhbF9jb21taXRzKHNlbGYpOgotICAgICAgICBwYXNzCisgICAgZGVmIGxv
Y2FsX2NoYW5nZXNfZXhpc3Qoc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5zdXBwb3J0c19s
b2NhbF9jb21taXRzKCkgYW5kIHNlbGYuaGFzX2xvY2FsX2NvbW1pdHMoKSkgb3Igc2VsZi5oYXNf
d29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAKLSAgICBkZWYgbG9jYWxfY29tbWl0cyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIFtdCisgICAgZGVmIGRpc2NhcmRfbG9jYWxfY2hhbmdlcyhzZWxm
KToKKyAgICAgICAgaWYgc2VsZi5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpOgorICAg
ICAgICAgICAgc2VsZi5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQorCisgICAg
ICAgIGlmIHNlbGYuaGFzX2xvY2FsX2NvbW1pdHMoKToKKyAgICAgICAgICAgIHNlbGYuZGlzY2Fy
ZF9sb2NhbF9jb21taXRzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbS9zY21fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbS9zY21fbW9jay5weQppbmRleCA5YzVkM2FmMGRiNzQ1MWNjOTc1MGI0
NmU3Y2Q2MzMwMmE1Zjc1Nzc5Li4yNDE0NTYyNWFkZTU0NzkwYTZhYzRjNDNiN2E4ZTQwYjViZTIw
OWI1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vc2NtX21vY2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtL3NjbV9tb2NrLnB5CkBAIC00NiwxMyArNDYsMjIgQEAgY2xhc3MgTW9ja1NDTShvYmpl
Y3QpOgogICAgICAgICBpZiByZXR1cm5fZXhpdF9jb2RlOgogICAgICAgICAgICAgcmV0dXJuIDAK
IAotICAgIGRlZiBlbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3Rvcnkoc2VsZiwgZm9yY2VfY2xl
YW4pOgorICAgIGRlZiBoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFu
Z2VzKHNlbGYpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgc3VwcG9ydHNfbG9jYWxfY29tbWl0
cyhzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiBlbnN1cmVfbm9fbG9jYWxf
Y29tbWl0cyhzZWxmLCBmb3JjZV9jbGVhbik6CisgICAgZGVmIGhhc19sb2NhbF9jb21taXRzKHNl
bGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBkaXNjYXJkX2xvY2FsX2NvbW1p
dHMoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBkaXNjYXJkX2xvY2FsX2NoYW5nZXMo
c2VsZik6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBleGlzdHMoc2VsZiwgcGF0aCk6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3Nj
bV91bml0dGVzdC5weQppbmRleCBlNWRkY2UwZjFhYTdhNWI2NjM3YzAzOWE4N2NjYzhkM2Y4NTlk
NDgyLi40NDIyMTMwNTM0YmExNGFiOGRhNWVkODY5ODdjM2NkMTIyMWIzOWQwIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21f
dW5pdHRlc3QucHkKQEAgLTMyOSw4ICszMjksOCBAQCBjbGFzcyBTQ01UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgICAgIGFkZGVkX2ZpbGVzLnJlbW92ZSgiYWRkZWRfZGlyIikKICAg
ICAgICAgc2VsZi5hc3NlcnRJdGVtc0VxdWFsKGFkZGVkX2ZpbGVzLCBbImFkZGVkX2Rpci9hZGRl
ZF9maWxlMiIsICJhZGRlZF9maWxlIiwgImFkZGVkX2ZpbGUzIiwgImFkZGVkX2ZpbGU0Il0pCiAK
LSAgICAgICAgIyBUZXN0IGFsc28gdG8gbWFrZSBzdXJlIGNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5
IHJlbW92ZXMgYWRkZWQgZmlsZXMKLSAgICAgICAgc2VsZi5zY20uY2xlYW5fd29ya2luZ19kaXJl
Y3RvcnkoKQorICAgICAgICAjIFRlc3QgYWxzbyB0byBtYWtlIHN1cmUgZGlzY2FyZF93b3JraW5n
X2RpcmVjdG9yeV9jaGFuZ2VzIHJlbW92ZXMgYWRkZWQgZmlsZXMKKyAgICAgICAgc2VsZi5zY20u
ZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJ
dGVtc0VxdWFsKHNlbGYuc2NtLmFkZGVkX2ZpbGVzKCksIFtdKQogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG9zLnBhdGguZXhpc3RzKCJhZGRlZF9maWxlIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2Uob3MucGF0aC5leGlzdHMoImFkZGVkX2ZpbGUzIikpCkBAIC04ODksNyArODg5LDcgQEAg
RU5ECiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKHN2bl9yb290X2xvY2tfcGF0aCwg
IiIsICJ1dGYtOCIpCiAgICAgICAgICMgd2Via2l0LXBhdGNoIHVzZXMgYSBDaGVja291dCBvYmpl
Y3QgYW5kIHJ1bnMgdXBkYXRlLXdlYmtpdCwganVzdCB1c2Ugc3ZuIHVwZGF0ZSBoZXJlLgogICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgcnVuX2NvbW1hbmQsIFsnc3ZuJywg
J3VwZGF0ZSddKQotICAgICAgICBzZWxmLnNjbS5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCisg
ICAgICAgIHNlbGYuc2NtLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc3ZuX3Jvb3RfbG9ja19wYXRoKSkK
ICAgICAgICAgcnVuX2NvbW1hbmQoWydzdm4nLCAndXBkYXRlJ10pICAjIFNob3VsZCBzdWNjZWVk
IGFuZCBub3QgcmFpc2UuCiAKQEAgLTExMTEsMTEgKzExMTEsMTEgQEAgY2xhc3MgR2l0U1ZOVGVz
dChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuc2NtLnJlYmFzZV9pbl9w
cm9ncmVzcygpKQogCiAgICAgICAgICMgTWFrZSBzdXJlIG91ciBjbGVhbnVwIHdvcmtzLgotICAg
ICAgICBzZWxmLnNjbS5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCisgICAgICAgIHNlbGYuc2Nt
LmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2Uoc2VsZi5zY20ucmViYXNlX2luX3Byb2dyZXNzKCkpCiAKICAgICAgICAgIyBNYWtlIHN1
cmUgY2xlYW51cCBkb2Vzbid0IHRocm93IHdoZW4gbm8gcmViYXNlIGlzIGluIHByb2dyZXNzLgot
ICAgICAgICBzZWxmLnNjbS5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSgpCisgICAgICAgIHNlbGYu
c2NtLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAKICAgICBkZWYgdGVzdF9j
b21taXRpc2hfcGFyc2luZyhzZWxmKToKICAgICAgICAgIyBNdWx0aXBsZSByZXZpc2lvbnMgYXJl
IGNoZXJyeS1waWNrZWQuCkBAIC0xMjM5LDggKzEyMzksOCBAQCBjbGFzcyBHaXRTVk5UZXN0KFND
TVRlc3QpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2VsZi5zY20u
Y29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBnaXRfY29tbWl0PSJI
RUFEXiIpCiAKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRpcGxlX2xvY2Fs
X2NvbW1pdHNfYWx3YXlzX3NxdWFzaChzZWxmKToKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQn
LCAnY29uZmlnJywgJ3dlYmtpdC1wYXRjaC5jb21taXQtc2hvdWxkLWFsd2F5cy1zcXVhc2gnLCAn
dHJ1ZSddKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNlbGYu
c2NtLl9hc3NlcnRfY2FuX3NxdWFzaCA9IGxhbWJkYSB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVh
bjogVHJ1ZQogICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3Nh
Z2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L3N2bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4u
cHkKaW5kZXggYzhjMGJjOWQ5NWUzOTkzMTQyYzRhOGRiMTdmY2UyOGExOTFhZDM0OS4uODcxMGVh
YmZlYmY0ZmU1ZTEwZDNmODBlMWQzNWJiYjQ3ZWZjYmI2MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CkBAIC0xMzgsMTAgKzEzOCwx
MSBAQCBjbGFzcyBTVk4oU0NNLCBTVk5SZXBvc2l0b3J5KToKICAgICBkZWYgc3ZuX3ZlcnNpb24o
c2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9ydW5fc3ZuKFsnLS12ZXJzaW9uJywgJy0tcXVp
ZXQnXSkKIAotICAgIGRlZiB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKKyAgICBk
ZWYgaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAgICAgICMgRklYTUU6
IFdoYXQgYWJvdXQgZmlsZXMgd2hpY2ggYXJlIG5vdCBjb21taXR0ZWQgeWV0LgogICAgICAgICBy
ZXR1cm4gc2VsZi5fcnVuX3N2bihbImRpZmYiXSwgY3dkPXNlbGYuY2hlY2tvdXRfcm9vdCwgZGVj
b2RlX291dHB1dD1GYWxzZSkgPT0gIiIKIAotICAgIGRlZiBjbGVhbl93b3JraW5nX2RpcmVjdG9y
eShzZWxmKToKKyAgICBkZWYgZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKHNlbGYp
OgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbG9ja3MgbHlpbmcgYXJvdW5kIGZy
b20gYSBwcmV2aW91c2x5IGFib3J0ZWQgc3ZuIGludm9jYXRpb24uCiAgICAgICAgICMgVGhpcyBp
cyBzbGlnaHRseSBkYW5nZXJvdXMsIGFzIGl0J3MgcG9zc2libGUgdGhlIHVzZXIgaXMgcnVubmlu
ZyBhbm90aGVyIHN2biBwcm9jZXNzCiAgICAgICAgICMgb24gdGhpcyBjaGVja291dCBhdCB0aGUg
c2FtZSB0aW1lLiAgSG93ZXZlciwgaXQncyBtdWNoIG1vcmUgbGlrZWx5IHRoYXQgd2UncmUgcnVu
bmluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29t
bWFuZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkK
aW5kZXggYjQzNjRjNTBmOWI3ODEwZjQyMDQzMjRjNzU4ZTJkYjg3NDQ0ZjVhZi4uMjU2NzczYTFm
ZTZkN2RmOWI5MmRjMzc2ZjlmYTUxOGM5OWMxNTliMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3Mg
Um9sbG91dChJUkNDb21tYW5kKToKICAgICAgICAgcmV0dXJuICIsICIuam9pbih0YXJnZXRfbmlj
a3MpCiAKICAgICBkZWYgX3VwZGF0ZV93b3JraW5nX2NvcHkoc2VsZiwgdG9vbCk6Ci0gICAgICAg
IHRvb2wuc2NtKCkuZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KGZvcmNlX2NsZWFuPVRy
dWUpCisgICAgICAgIHRvb2wuc2NtKCkuZGlzY2FyZF9sb2NhbF9jaGFuZ2VzKCkKICAgICAgICAg
dG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHRvb2wuZGVwcmVjYXRlZF9wb3J0
KCkudXBkYXRlX3dlYmtpdF9jb21tYW5kKCksIHF1aWV0PVRydWUsIGN3ZD10b29sLnNjbSgpLmNo
ZWNrb3V0X3Jvb3QpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBuaWNrLCBhcmdzLCB0b29sLCBz
aGVyaWZmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9kb3dubG9hZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3du
bG9hZC5weQppbmRleCBiZGQ3ODBkMmMzZjg5NGU5OGM1Y2RlN2UwMWJiMzhjZTkzNzE0Y2JmLi4w
NDc3ZDZjNjE4YTVhMTJhODhmYTdkNzMyZWQ0ZDU0MzcyZWEwMmY1IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIENsZWFuKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJj
bGVhbiIKICAgICBoZWxwX3RleHQgPSAiQ2xlYW4gdGhlIHdvcmtpbmcgY29weSIKICAgICBzdGVw
cyA9IFsKLSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAorICAgICAgICBzdGVw
cy5EaXNjYXJkTG9jYWxDaGFuZ2VzLAogICAgIF0KIAogICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShz
ZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgVXBkYXRl
KEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJ1cGRhdGUiCiAgICAgaGVs
cF90ZXh0ID0gIlVwZGF0ZSB3b3JraW5nIGNvcHkgKHVzZWQgaW50ZXJuYWxseSkiCiAgICAgc3Rl
cHMgPSBbCi0gICAgICAgIHN0ZXBzLkNsZWFuV29ya2luZ0RpcmVjdG9yeSwKKyAgICAgICAgc3Rl
cHMuRGlzY2FyZExvY2FsQ2hhbmdlcywKICAgICAgICAgc3RlcHMuVXBkYXRlLAogICAgIF0KIApA
QCAtNjcsNyArNjcsNyBAQCBjbGFzcyBCdWlsZChBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgog
ICAgIG5hbWUgPSAiYnVpbGQiCiAgICAgaGVscF90ZXh0ID0gIlVwZGF0ZSB3b3JraW5nIGNvcHkg
YW5kIGJ1aWxkIgogICAgIHN0ZXBzID0gWwotICAgICAgICBzdGVwcy5DbGVhbldvcmtpbmdEaXJl
Y3RvcnksCisgICAgICAgIHN0ZXBzLkRpc2NhcmRMb2NhbENoYW5nZXMsCiAgICAgICAgIHN0ZXBz
LlVwZGF0ZSwKICAgICAgICAgc3RlcHMuQnVpbGQsCiAgICAgXQpAQCAtODAsNyArODAsNyBAQCBj
bGFzcyBCdWlsZEFuZFRlc3QoQWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKICAgICBuYW1lID0g
ImJ1aWxkLWFuZC10ZXN0IgogICAgIGhlbHBfdGV4dCA9ICJVcGRhdGUgd29ya2luZyBjb3B5LCBi
dWlsZCwgYW5kIHJ1biB0aGUgdGVzdHMiCiAgICAgc3RlcHMgPSBbCi0gICAgICAgIHN0ZXBzLkNs
ZWFuV29ya2luZ0RpcmVjdG9yeSwKKyAgICAgICAgc3RlcHMuRGlzY2FyZExvY2FsQ2hhbmdlcywK
ICAgICAgICAgc3RlcHMuVXBkYXRlLAogICAgICAgICBzdGVwcy5CdWlsZCwKICAgICAgICAgc3Rl
cHMuUnVuVGVzdHMsCkBAIC0yMzUsNyArMjM1LDcgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFj
dFBhdGNoU2VxdWVuY2luZ0NvbW1hbmQsIFByb2Nlc3NBdHRhY2htZW50c01peGluKToKICAgICBo
ZWxwX3RleHQgPSAiUnVuIGNoZWNrLXdlYmtpdC1zdHlsZSBvbiB0aGUgc3BlY2lmaWVkIGF0dGFj
aG1lbnRzIgogICAgIGFyZ3VtZW50X25hbWVzID0gIkFUVEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRf
SURTXSIKICAgICBtYWluX3N0ZXBzID0gWwotICAgICAgICBzdGVwcy5DbGVhbldvcmtpbmdEaXJl
Y3RvcnksCisgICAgICAgIHN0ZXBzLkRpc2NhcmRMb2NhbENoYW5nZXMsCiAgICAgICAgIHN0ZXBz
LlVwZGF0ZSwKICAgICAgICAgc3RlcHMuQXBwbHlQYXRjaCwKICAgICAgICAgc3RlcHMuQ2hlY2tT
dHlsZSwKQEAgLTI0Nyw3ICsyNDcsNyBAQCBjbGFzcyBCdWlsZEF0dGFjaG1lbnQoQWJzdHJhY3RQ
YXRjaFNlcXVlbmNpbmdDb21tYW5kLCBQcm9jZXNzQXR0YWNobWVudHNNaXhpbik6CiAgICAgaGVs
cF90ZXh0ID0gIkFwcGx5IGFuZCBidWlsZCBwYXRjaGVzIGZyb20gYnVnemlsbGEiCiAgICAgYXJn
dW1lbnRfbmFtZXMgPSAiQVRUQUNITUVOVF9JRCBbQVRUQUNITUVOVF9JRFNdIgogICAgIG1haW5f
c3RlcHMgPSBbCi0gICAgICAgIHN0ZXBzLkNsZWFuV29ya2luZ0RpcmVjdG9yeSwKKyAgICAgICAg
c3RlcHMuRGlzY2FyZExvY2FsQ2hhbmdlcywKICAgICAgICAgc3RlcHMuVXBkYXRlLAogICAgICAg
ICBzdGVwcy5BcHBseVBhdGNoLAogICAgICAgICBzdGVwcy5CdWlsZCwKQEAgLTI1OSw3ICsyNTks
NyBAQCBjbGFzcyBCdWlsZEFuZFRlc3RBdHRhY2htZW50KEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5n
Q29tbWFuZCwgUHJvY2Vzc0F0dGFjaG1lbnRzTQogICAgIGhlbHBfdGV4dCA9ICJBcHBseSwgYnVp
bGQsIGFuZCB0ZXN0IHBhdGNoZXMgZnJvbSBidWd6aWxsYSIKICAgICBhcmd1bWVudF9uYW1lcyA9
ICJBVFRBQ0hNRU5UX0lEIFtBVFRBQ0hNRU5UX0lEU10iCiAgICAgbWFpbl9zdGVwcyA9IFsKLSAg
ICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAorICAgICAgICBzdGVwcy5EaXNjYXJk
TG9jYWxDaGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAgICAgICAgIHN0ZXBzLkFwcGx5
UGF0Y2gsCiAgICAgICAgIHN0ZXBzLkJ1aWxkLApAQCAtMjcwLDcgKzI3MCw3IEBAIGNsYXNzIEJ1
aWxkQW5kVGVzdEF0dGFjaG1lbnQoQWJzdHJhY3RQYXRjaFNlcXVlbmNpbmdDb21tYW5kLCBQcm9j
ZXNzQXR0YWNobWVudHNNCiBjbGFzcyBBYnN0cmFjdFBhdGNoQXBwbHlpbmdDb21tYW5kKEFic3Ry
YWN0UGF0Y2hTZXF1ZW5jaW5nQ29tbWFuZCk6CiAgICAgcHJlcGFyZV9zdGVwcyA9IFsKICAgICAg
ICAgc3RlcHMuRW5zdXJlTG9jYWxDb21taXRJZk5lZWRlZCwKLSAgICAgICAgc3RlcHMuQ2xlYW5X
b3JraW5nRGlyZWN0b3J5V2l0aExvY2FsQ29tbWl0cywKKyAgICAgICAgc3RlcHMuQ2xlYW5Xb3Jr
aW5nRGlyZWN0b3J5LAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAgICAgXQogICAgIG1haW5fc3Rl
cHMgPSBbCkBAIC0yOTksNyArMjk5LDcgQEAgY2xhc3MgQXBwbHlXYXRjaExpc3QoQWJzdHJhY3RQ
YXRjaFNlcXVlbmNpbmdDb21tYW5kLCBQcm9jZXNzQXR0YWNobWVudHNNaXhpbik6CiAgICAgaGVs
cF90ZXh0ID0gIkFwcGxpZXMgdGhlIHdhdGNobGlzdCB0byB0aGUgc3BlY2lmaWVkIGF0dGFjaG1l
bnRzIgogICAgIGFyZ3VtZW50X25hbWVzID0gIkFUVEFDSE1FTlRfSUQgW0FUVEFDSE1FTlRfSURT
XSIKICAgICBtYWluX3N0ZXBzID0gWwotICAgICAgICBzdGVwcy5DbGVhbldvcmtpbmdEaXJlY3Rv
cnksCisgICAgICAgIHN0ZXBzLkRpc2NhcmRMb2NhbENoYW5nZXMsCiAgICAgICAgIHN0ZXBzLlVw
ZGF0ZSwKICAgICAgICAgc3RlcHMuQXBwbHlQYXRjaCwKICAgICAgICAgc3RlcHMuQXBwbHlXYXRj
aExpc3QsCkBAIC0zMTAsNyArMzEwLDcgQEAgRG93bmxvYWRzIHRoZSBhdHRhY2htZW50LCBhcHBs
aWVzIGl0IGxvY2FsbHksIHJ1bnMgdGhlIHdhdGNobGlzdCBhZ2FpbnN0IGl0LCBhbmQKIAogY2xh
c3MgQWJzdHJhY3RQYXRjaExhbmRpbmdDb21tYW5kKEFic3RyYWN0UGF0Y2hTZXF1ZW5jaW5nQ29t
bWFuZCk6CiAgICAgbWFpbl9zdGVwcyA9IFsKLSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGly
ZWN0b3J5LAorICAgICAgICBzdGVwcy5EaXNjYXJkTG9jYWxDaGFuZ2VzLAogICAgICAgICBzdGVw
cy5VcGRhdGUsCiAgICAgICAgIHN0ZXBzLkFwcGx5UGF0Y2gsCiAgICAgICAgIHN0ZXBzLlZhbGlk
YXRlQ2hhbmdlTG9ncywKQEAgLTQxMyw3ICs0MTMsNyBAQCBBcHBsaWVzIHRoZSBpbnZlcnNlIGRp
ZmYgZm9yIHRoZSBwcm92aWRlZCByZXZpc2lvbihzKS4KIENyZWF0ZXMgYW4gYXBwcm9wcmlhdGUg
cm9sbG91dCBDaGFuZ2VMb2csIGluY2x1ZGluZyBhIHRyYWMgbGluayBhbmQgYnVnIGxpbmsuCiAi
IiIKICAgICBzdGVwcyA9IFsKLSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAor
ICAgICAgICBzdGVwcy5EaXNjYXJkTG9jYWxDaGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRhdGUs
CiAgICAgICAgIHN0ZXBzLlJldmVydFJldmlzaW9uLAogICAgICAgICBzdGVwcy5QcmVwYXJlQ2hh
bmdlTG9nRm9yUmV2ZXJ0LApAQCAtNDI0LDcgKzQyNCw3IEBAIGNsYXNzIENyZWF0ZVJvbGxvdXQo
QWJzdHJhY3RSb2xsb3V0UHJlcENvbW1hbmQpOgogICAgIG5hbWUgPSAiY3JlYXRlLXJvbGxvdXQi
CiAgICAgaGVscF90ZXh0ID0gIkNyZWF0ZXMgYSBidWcgdG8gdHJhY2sgdGhlIGJyb2tlbiBTVk4g
cmV2aXNpb24ocykgYW5kIHVwbG9hZHMgYSByb2xsb3V0IHBhdGNoLiIKICAgICBzdGVwcyA9IFsK
LSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5LAorICAgICAgICBzdGVwcy5EaXNj
YXJkTG9jYWxDaGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRhdGUsCiAgICAgICAgIHN0ZXBzLlJl
dmVydFJldmlzaW9uLAogICAgICAgICBzdGVwcy5DcmVhdGVCdWcsCkBAIC00NzAsNyArNDcwLDcg
QEAgT3BlbnMgdGhlIGdlbmVyYXRlZCBDaGFuZ2VMb2dzIGluICRFRElUT1IuCiBTaG93cyB0aGUg
cHJlcGFyZWQgZGlmZiBmb3IgY29uZmlybWF0aW9uLgogQ29tbWl0cyB0aGUgcmV2ZXJ0IGFuZCB1
cGRhdGVzIHRoZSBidWcgKGluY2x1ZGluZyByZS1vcGVuaW5nIHRoZSBidWcgaWYgbmVjZXNzYXJ5
KS4iIiIKICAgICBzdGVwcyA9IFsKLSAgICAgICAgc3RlcHMuQ2xlYW5Xb3JraW5nRGlyZWN0b3J5
LAorICAgICAgICBzdGVwcy5EaXNjYXJkTG9jYWxDaGFuZ2VzLAogICAgICAgICBzdGVwcy5VcGRh
dGUsCiAgICAgICAgIHN0ZXBzLlJldmVydFJldmlzaW9uLAogICAgICAgICBzdGVwcy5QcmVwYXJl
Q2hhbmdlTG9nRm9yUmV2ZXJ0LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L19faW5pdF9fLnB5CmluZGV4IDU2NDI5ZThmZTI0ZWJjNDdjYjQ5ODllZmI3MGM3MGJjOGI1MmZj
NDEuLjUwMjMxOWY3YmRhMGYwMWZmOWQ3NDk0YTIwMGQ4NjI5NGFmMGUzOTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAgLTM1LDEzICszNSwx
MyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYXR0YWNodG9idWcgaW1wb3J0IEF0dGFjaFRv
QnVnCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYnVpbGQgaW1wb3J0IEJ1aWxkCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMuY2hlY2tzdHlsZSBpbXBvcnQgQ2hlY2tTdHlsZQogZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLmNsZWFud29ya2luZ2RpcmVjdG9yeSBpbXBvcnQgQ2xlYW5Xb3JraW5n
RGlyZWN0b3J5Ci1mcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuY2xlYW53b3JraW5nZGlyZWN0b3J5
d2l0aGxvY2FsY29tbWl0cyBpbXBvcnQgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5V2l0aExvY2FsQ29t
bWl0cwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmNsb3NlYnVnIGltcG9ydCBDbG9zZUJ1Zwog
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmNsb3NlYnVnZm9ybGFuZGRpZmYgaW1wb3J0IENsb3Nl
QnVnRm9yTGFuZERpZmYKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jbG9zZXBhdGNoIGltcG9y
dCBDbG9zZVBhdGNoCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuY29tbWl0IGltcG9ydCBDb21t
aXQKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jb25maXJtZGlmZiBpbXBvcnQgQ29uZmlybURp
ZmYKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jcmVhdGVidWcgaW1wb3J0IENyZWF0ZUJ1Zwor
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmRpc2NhcmRsb2NhbGNoYW5nZXMgaW1wb3J0IERpc2Nh
cmRMb2NhbENoYW5nZXMKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5lZGl0Y2hhbmdlbG9nIGlt
cG9ydCBFZGl0Q2hhbmdlTG9nCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuZW5zdXJlYnVnaXNv
cGVuYW5kYXNzaWduZWQgaW1wb3J0IEVuc3VyZUJ1Z0lzT3BlbkFuZEFzc2lnbmVkCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMuZW5zdXJlbG9jYWxjb21taXRpZm5lZWRlZCBpbXBvcnQgRW5zdXJl
TG9jYWxDb21taXRJZk5lZWRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkKaW5kZXggMTkxMzUyNDQwNzFj
MjU2M2JlOGFkMmQyZTgyOTIyMTc3NGIyNTZkOC4uYjE3MGJiNzNhNjAxZjBkNjBjZmQyMjcyMDIy
N2M2MjIzNjI4NGRjMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5LnB5CkBAIC0yOCwyMyArMjgsMTkgQEAK
IAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RT
dGVwCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucworZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIAog
CiBjbGFzcyBDbGVhbldvcmtpbmdEaXJlY3RvcnkoQWJzdHJhY3RTdGVwKToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgdG9vbCwgb3B0aW9ucywgYWxsb3dfbG9jYWxfY29tbWl0cz1GYWxzZSk6Ci0g
ICAgICAgIEFic3RyYWN0U3RlcC5fX2luaXRfXyhzZWxmLCB0b29sLCBvcHRpb25zKQotICAgICAg
ICBzZWxmLl9hbGxvd19sb2NhbF9jb21taXRzID0gYWxsb3dfbG9jYWxfY29tbWl0cwogCiAgICAg
QGNsYXNzbWV0aG9kCiAgICAgZGVmIG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIEFic3Ry
YWN0U3RlcC5vcHRpb25zKCkgKyBbCiAgICAgICAgICAgICBPcHRpb25zLmZvcmNlX2NsZWFuLAot
ICAgICAgICAgICAgT3B0aW9ucy5jbGVhbiwKICAgICAgICAgXQogCiAgICAgZGVmIHJ1bihzZWxm
LCBzdGF0ZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmNsZWFuOgotICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd19sb2NhbF9jb21taXRzOgotICAg
ICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLl9v
cHRpb25zLmZvcmNlX2NsZWFuKQotICAgICAgICBzZWxmLl90b29sLnNjbSgpLmVuc3VyZV9jbGVh
bl93b3JraW5nX2RpcmVjdG9yeShmb3JjZV9jbGVhbj1zZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFu
KQorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5mb3JjZV9jbGVhbjoKKyAgICAgICAgICAg
IGlmIHNlbGYuX3Rvb2wuc2NtKCkuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKToKKyAg
ICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiV29ya2luZyBkaXJlY3RvcnkgaGFzIGNo
YW5nZXMsIHBhc3MgLS1mb3JjZS1jbGVhbiB0byBjb250aW51ZS4iKQorICAgICAgICBzZWxmLl90
b29sLnNjbSgpLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29y
a2luZ2RpcmVjdG9yeV91bml0dGVzdC5weQppbmRleCAxNWE4ODUwYTUwN2YxMmEzMjU0NzQ2ZTRk
ZmUyN2E0NjdjY2Q2YTdjLi5mMDFhNmFmMTUyMzYzOTBkMDM2N2I2MTNiNGJjMTdhZDYwMzc5MDNl
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3Jr
aW5nZGlyZWN0b3J5X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnlfdW5pdHRlc3QucHkKQEAgLTMxLDIyICszMSwz
MCBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9y
dCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBN
b2NrVG9vbAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmNsZWFud29ya2luZ2RpcmVjdG9yeSBp
bXBvcnQgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogCiAKIGNsYXNzIENsZWFuV29ya2luZ0RpcmVj
dG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAg
ICBkZWYgdGVzdF93b3JraW5nX2NoYW5nZXNfZXhpc3Rfd2l0aF9mb3JjZShzZWxmKToKICAgICAg
ICAgdG9vbCA9IE1vY2tUb29sKCkKICAgICAgICAgdG9vbC5fc2NtID0gTW9jaygpCi0gICAgICAg
IHRvb2wuX3NjbS5jaGVja291dF9yb290ID0gJy9tb2NrLWNoZWNrb3V0JwotICAgICAgICBzdGVw
ID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KHRvb2wsIE1vY2tPcHRpb25zKGNsZWFuPVRydWUsIGZv
cmNlX2NsZWFuPUZhbHNlKSkKKyAgICAgICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9y
eV9jaGFuZ2VzID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHN0ZXAgPSBDbGVhbldvcmtpbmdEaXJl
Y3RvcnkodG9vbCwgTW9ja09wdGlvbnMoZm9yY2VfY2xlYW49VHJ1ZSkpCiAgICAgICAgIHN0ZXAu
cnVuKHt9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfbm9fbG9j
YWxfY29tbWl0cy5jYWxsX2NvdW50LCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wu
X3NjbS5lbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3RvcnkuY2FsbF9jb3VudCwgMSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9j
aGFuZ2VzLmNhbGxfY291bnQsIDEpCiAKLSAgICBkZWYgdGVzdF9ub19jbGVhbihzZWxmKToKKyAg
ICBkZWYgdGVzdF9ub19jaGFuZ2VzX2V4aXN0X3dpdGhfZm9yY2Uoc2VsZik6CiAgICAgICAgIHRv
b2wgPSBNb2NrVG9vbCgpCiAgICAgICAgIHRvb2wuX3NjbSA9IE1vY2soKQotICAgICAgICBzdGVw
ID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KHRvb2wsIE1vY2tPcHRpb25zKGNsZWFuPUZhbHNlKSkK
KyAgICAgICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0gbGFtYmRh
OiBUcnVlCisgICAgICAgIHN0ZXAgPSBDbGVhbldvcmtpbmdEaXJlY3RvcnkodG9vbCwgTW9ja09w
dGlvbnMoZm9yY2VfY2xlYW49VHJ1ZSkpCiAgICAgICAgIHN0ZXAucnVuKHt9KQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cy5jYWxsX2Nv
dW50LCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfY2xlYW5f
d29ya2luZ19kaXJlY3RvcnkuY2FsbF9jb3VudCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh0b29sLl9zY20uZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzLmNhbGxfY291bnQs
IDEpCisKKyAgICBkZWYgdGVzdF9lcnJvcl9jaGFuZ2VzX2V4aXN0X3dpdGhvdXRfZm9yY2Uoc2Vs
Zik6CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAgIHRvb2wuX3NjbSA9IE1vY2so
KQorICAgICAgICB0b29sLl9zY20uaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMgPSBsYW1i
ZGE6IFRydWUKKyAgICAgICAgc3RlcCA9IENsZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2Nr
T3B0aW9ucyhmb3JjZV9jbGVhbj1GYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNj
cmlwdEVycm9yLCBzdGVwLnJ1biwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5f
c2NtLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcy5jYWxsX2NvdW50LCAwKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2Rp
cmVjdG9yeXdpdGhsb2NhbGNvbW1pdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5d2l0aGxvY2FsY29tbWl0cy5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjA2Zjk0ZWY0YWQyZTA1YzVmMWFjZjY4NzBkZGFlN2Q4Yjg1
MmExNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5d2l0aGxv
Y2FsY29tbWl0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIAotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jIAotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIyAKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1mcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuY2xlYW53b3JraW5nZGlyZWN0b3J5
IGltcG9ydCBDbGVhbldvcmtpbmdEaXJlY3RvcnkKLQotY2xhc3MgQ2xlYW5Xb3JraW5nRGlyZWN0
b3J5V2l0aExvY2FsQ29tbWl0cyhDbGVhbldvcmtpbmdEaXJlY3RvcnkpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0b29sLCBvcHRpb25zKToKLSAgICAgICAgIyBGSVhNRTogVGhpcyBhIGJpdCBv
ZiBhIGhhY2suICBDb25zaWRlciBkb2luZyB0aGlzIG1vcmUgY2xlYW5seS4KLSAgICAgICAgQ2xl
YW5Xb3JraW5nRGlyZWN0b3J5Ll9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMsIGFsbG93X2xv
Y2FsX2NvbW1pdHM9VHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9kaXNjYXJkbG9jYWxjaGFuZ2VzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2Rpc2NhcmRsb2NhbGNoYW5nZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEzMWY4MDExNzQ2
YTYwNjk3MmY2YjFlZTUxOWM3OTYzN2EyMDU3MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9kaXNjYXJkbG9jYWxjaGFuZ2VzLnB5CkBAIC0wLDAg
KzEsNDggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYWJz
dHJhY3RzdGVwIGltcG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5v
cHRpb25zIGltcG9ydCBPcHRpb25zCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorCisKK2NsYXNzIERpc2NhcmRMb2NhbENoYW5nZXMoQWJz
dHJhY3RTdGVwKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6Cisg
ICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsgWworICAgICAgICAgICAgT3B0
aW9ucy5mb3JjZV9jbGVhbiwKKyAgICAgICAgXQorCisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6
CisgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuOgorICAgICAgICAgICAg
aWYgc2VsZi5fdG9vbC5zY20oKS5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJXb3JraW5nIGRpcmVjdG9yeSBoYXMgY2hh
bmdlcywgcGFzcyAtLWZvcmNlLWNsZWFuIHRvIGNvbnRpbnVlLiIpCisgICAgICAgICAgICBpZiBz
ZWxmLl90b29sLnNjbSgpLmhhc19sb2NhbF9jb21taXRzKCk6CisgICAgICAgICAgICAgICAgcmFp
c2UgU2NyaXB0RXJyb3IoIlJlcG9zaXRvcnkgaGFzIGxvY2FsIGNvbW1pdHMsIHBhc3MgLS1mb3Jj
ZS1jbGVhbiB0byBjb250aW51ZS4iKQorICAgICAgICBzZWxmLl90b29sLnNjbSgpLmRpc2NhcmRf
bG9jYWxfY2hhbmdlcygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvZGlzY2FyZGxvY2FsY2hhbmdlc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9kaXNjYXJkbG9jYWxjaGFuZ2VzX3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ4MGMxZDIwMzA1MzY3YTFhZjg4MzlhOGY0MTExM2YwODEyYzY3ZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvZGlzY2FyZGxvY2FsY2hh
bmdlc191bml0dGVzdC5weQpAQCAtMCwwICsxLDkwIEBACisjIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisj
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1w
b3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2Nr
Citmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9v
bAorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmRpc2NhcmRsb2NhbGNoYW5nZXMgaW1wb3J0IERp
c2NhcmRMb2NhbENoYW5nZXMKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IFNjcmlwdEVycm9yCisKKworY2xhc3MgRGlzY2FyZExvY2FsQ2hhbmdlc1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3dvcmtpbmdfY2hhbmdlc19leGlzdF93aXRo
X2ZvcmNlKHNlbGYpOgorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9z
Y20gPSBNb2NrKCkKKyAgICAgICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFu
Z2VzID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHRvb2wuX3NjbS5oYXNfbG9jYWxfY29tbWl0cyA9
IGxhbWJkYTogRmFsc2UKKyAgICAgICAgc3RlcCA9IERpc2NhcmRMb2NhbENoYW5nZXModG9vbCwg
TW9ja09wdGlvbnMoZm9yY2VfY2xlYW49VHJ1ZSkpCisgICAgICAgIHN0ZXAucnVuKHt9KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX2xvY2FsX2NoYW5nZXMuY2Fs
bF9jb3VudCwgMSkKKworICAgIGRlZiB0ZXN0X2xvY2FsX2NvbW1pdHNfZXhpc3Rfd2l0aF9mb3Jj
ZShzZWxmKToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9vbC5fc2NtID0g
TW9jaygpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyA9
IGxhbWJkYTogRmFsc2UKKyAgICAgICAgdG9vbC5fc2NtLmhhc19sb2NhbF9jb21taXRzID0gbGFt
YmRhOiBUcnVlCisgICAgICAgIHN0ZXAgPSBEaXNjYXJkTG9jYWxDaGFuZ2VzKHRvb2wsIE1vY2tP
cHRpb25zKGZvcmNlX2NsZWFuPVRydWUpKQorICAgICAgICBzdGVwLnJ1bih7fSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZGlzY2FyZF9sb2NhbF9jaGFuZ2VzLmNhbGxfY291
bnQsIDEpCisKKyAgICBkZWYgdGVzdF9sb2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NoYW5nZXNf
ZXhpc3Rfd2l0aF9mb3JjZShzZWxmKToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAg
ICAgdG9vbC5fc2NtID0gTW9jaygpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlcyA9IGxhbWJkYTogVHJ1ZQorICAgICAgICB0b29sLl9zY20uaGFzX2xvY2Fs
X2NvbW1pdHMgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgc3RlcCA9IERpc2NhcmRMb2NhbENoYW5n
ZXModG9vbCwgTW9ja09wdGlvbnMoZm9yY2VfY2xlYW49VHJ1ZSkpCisgICAgICAgIHN0ZXAucnVu
KHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX2xvY2FsX2No
YW5nZXMuY2FsbF9jb3VudCwgMSkKKworICAgIGRlZiB0ZXN0X25vX2NoYW5nZXNfZXhpc3Rfd2l0
aF9mb3JjZShzZWxmKToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9vbC5f
c2NtID0gTW9jaygpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hh
bmdlcyA9IGxhbWJkYTogRmFsc2UKKyAgICAgICAgdG9vbC5fc2NtLmhhc19sb2NhbF9jb21taXRz
ID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBzdGVwID0gRGlzY2FyZExvY2FsQ2hhbmdlcyh0b29s
LCBNb2NrT3B0aW9ucyhmb3JjZV9jbGVhbj1UcnVlKSkKKyAgICAgICAgc3RlcC5ydW4oe30pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2NtLmRpc2NhcmRfbG9jYWxfY2hhbmdlcy5j
YWxsX2NvdW50LCAxKQorCisgICAgZGVmIHRlc3RfZXJyb3Jfd29ya2luZ19jaGFuZ2VzX2V4aXN0
X3dpdGhvdXRfZm9yY2Uoc2VsZik6CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAg
IHRvb2wuX3NjbSA9IE1vY2soKQorICAgICAgICB0b29sLl9zY20uaGFzX3dvcmtpbmdfZGlyZWN0
b3J5X2NoYW5nZXMgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgdG9vbC5fc2NtLmhhc19sb2NhbF9j
b21taXRzID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBzdGVwID0gRGlzY2FyZExvY2FsQ2hhbmdl
cyh0b29sLCBNb2NrT3B0aW9ucyhmb3JjZV9jbGVhbj1GYWxzZSkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzdGVwLnJ1biwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodG9vbC5fc2NtLmRpc2NhcmRfbG9jYWxfY2hhbmdlcy5jYWxsX2NvdW50LCAwKQorCisg
ICAgZGVmIHRlc3RfZXJyb3JfbG9jYWxfY29tbWl0c19leGlzdF93aXRob3V0X2ZvcmNlKHNlbGYp
OgorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9zY20gPSBNb2NrKCkK
KyAgICAgICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0gbGFtYmRh
OiBGYWxzZQorICAgICAgICB0b29sLl9zY20uaGFzX2xvY2FsX2NvbW1pdHMgPSBsYW1iZGE6IFRy
dWUKKyAgICAgICAgc3RlcCA9IERpc2NhcmRMb2NhbENoYW5nZXModG9vbCwgTW9ja09wdGlvbnMo
Zm9yY2VfY2xlYW49RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJv
ciwgc3RlcC5ydW4sIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNj
YXJkX2xvY2FsX2NoYW5nZXMuY2FsbF9jb3VudCwgMCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182673</attachid>
            <date>2013-01-14 18:24:05 -0800</date>
            <delta_ts>2013-01-14 19:09:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104198-20130115132104.patch</filename>
            <type>text/plain</type>
            <size>19853</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5Njk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTdkYWRkMGM1MzkzMjIyMGI4NzMxNDcwZTkyNzQ3ZTAy
YmI0OGVmYy4uZTNjZDQ3NDAyZTExNzBmZTVhYjc2OTVmZjNkZGI4OTc5ODJiNzZlMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEzLTAxLTE0ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQ2hhbmdpbmcgY2xlYW5fd29ya2luZ19kaXJlY3RvcnkvY2xlYW5fbG9jYWxf
Y29tbWl0cyBhbmQgcmVsYXRlZAorICAgICAgICBmdW5jdGlvbnMgdG8gaGF2ZSBjb25zaXN0ZW50
IG5hbWluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA0MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV9tb2NrLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2Rp
cmVjdG9yeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53
b3JraW5nZGlyZWN0b3J5X3VuaXR0ZXN0LnB5OgorCiAyMDEzLTAxLTE0ICBEaXJrIFByYW5rZSAg
PGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGtpbGwgd2hvbGUgbGlnaHR0cGQgcHJv
Y2VzcyB0cmVlIGZvciBjaHJvbWl1bSB3aW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5CmluZGV4IDZiOGYzOGY2NjBmZTZhNDFjMjJkNDY3
ZDFhN2Y2ZjE3YmIxMjVkNDAuLjRlMThhNWY1MzI0NmZlMWIxNmE1ZWFmNzNkNDY5MDFhM2JjMjg5
NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L2dpdC5weQpAQCAtNDgsOSArNDgsMTEgQEAgZGVmIHJ1bl9jb21tYW5kKCphcmdzLCAqKmt3YXJn
cyk6CiAKIAogY2xhc3MgQW1iaWd1b3VzQ29tbWl0RXJyb3IoRXhjZXB0aW9uKToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2Ns
ZWFuKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIGhhc193b3Jr
aW5nX2RpcmVjdG9yeV9jaGFuZ2VzKToKKyAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYs
ICJGb3VuZCAlcyBsb2NhbCBjb21taXRzIGFuZCB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgJXMi
ICUgKAorICAgICAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMsIFsiY2xlYW4iLCAibm90IGNsZWFu
Il1baGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXNdKSkKICAgICAgICAgc2VsZi5udW1fbG9j
YWxfY29tbWl0cyA9IG51bV9sb2NhbF9jb21taXRzCi0gICAgICAgIHNlbGYud29ya2luZ19kaXJl
Y3RvcnlfaXNfY2xlYW4gPSB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbgorICAgICAgICBzZWxm
Lmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0gaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2No
YW5nZXMKIAogCiBjbGFzcyBHaXQoU0NNLCBTVk5SZXBvc2l0b3J5KToKQEAgLTE0NiwxMyArMTQ4
LDEzIEBAIGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgIGRlZiByZWJhc2VfaW5f
cHJvZ3Jlc3Moc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhz
ZWxmLmFic29sdXRlX3BhdGgoc2VsZi5fZmlsZXN5c3RlbS5qb2luKCcuZ2l0JywgJ3JlYmFzZS1h
cHBseScpKSkKIAotICAgIGRlZiB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3J1bl9naXQoWydkaWZmJywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFz
ZSgpLCAnLS1uby1yZW5hbWVzJywgJy0tbmFtZS1vbmx5J10pID09ICIiCisgICAgZGVmIGhhc193
b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcnVu
X2dpdChbJ2RpZmYnLCAnSEVBRCcsICctLW5vLXJlbmFtZXMnLCAnLS1uYW1lLW9ubHknXSkgIT0g
IiIKIAotICAgIGRlZiBjbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgIyBD
b3VsZCBydW4gZ2l0IGNsZWFuIGhlcmUgdG9vLCBidXQgdGhhdCB3b3VsZG4ndCBtYXRjaCB3b3Jr
aW5nX2RpcmVjdG9yeV9pc19jbGVhbgotICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAn
LS1oYXJkJywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpXSkKLSAgICAgICAgIyBBYm9ydGluZyBy
ZWJhc2UgZXZlbiB0aG91Z2ggdGhpcyBkb2VzIG5vdCBtYXRjaCB3b3JraW5nX2RpcmVjdG9yeV9p
c19jbGVhbgorICAgIGRlZiBkaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6
CisgICAgICAgICMgQ291bGQgcnVuIGdpdCBjbGVhbiBoZXJlIHRvbywgYnV0IHRoYXQgd291bGRu
J3QgbWF0Y2ggc3VidmVyc2lvbgorICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAnSEVB
RCcsICctLWhhcmQnXSkKKyAgICAgICAgIyBBYm9ydGluZyByZWJhc2UgZXZlbiB0aG91Z2ggdGhp
cyBkb2VzIG5vdCBtYXRjaCBzdWJ2ZXJzaW9uCiAgICAgICAgIGlmIHNlbGYucmViYXNlX2luX3By
b2dyZXNzKCk6CiAgICAgICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmViYXNlJywgJy0tYWJvcnQn
XSkKIApAQCAtMzM0LDMwICszMzYsMzAgQEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6
CiAgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgc2VsZi5f
cnVuX2dpdChbJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCiAKLSAgICBkZWYgX2Fz
c2VydF9jYW5fc3F1YXNoKHNlbGYsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKKyAgICBk
ZWYgX2Fzc2VydF9jYW5fc3F1YXNoKHNlbGYsIGhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2Vz
KToKICAgICAgICAgc3F1YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLmNv
bW1pdC1zaG91bGQtYWx3YXlzLXNxdWFzaCcsIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpCiAgICAg
ICAgIHNob3VsZF9zcXVhc2ggPSBzcXVhc2ggYW5kIHNxdWFzaC5sb3dlcigpID09ICJ0cnVlIgog
CiAgICAgICAgIGlmIG5vdCBzaG91bGRfc3F1YXNoOgogICAgICAgICAgICAgIyBPbmx5IHdhcm4g
aWYgdGhlcmUgYXJlIGFjdHVhbGx5IG11bHRpcGxlIGNvbW1pdHMgdG8gc3F1YXNoLgogICAgICAg
ICAgICAgbnVtX2xvY2FsX2NvbW1pdHMgPSBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCi0gICAg
ICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2NhbF9jb21taXRzID4g
MCBhbmQgbm90IHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKLSAgICAgICAgICAgICAgICBy
YWlzZSBBbWJpZ3VvdXNDb21taXRFcnJvcihudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJl
Y3RvcnlfaXNfY2xlYW4pCisgICAgICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3Ig
KG51bV9sb2NhbF9jb21taXRzID4gMCBhbmQgaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMp
OgorICAgICAgICAgICAgICAgIHJhaXNlIEFtYmlndW91c0NvbW1pdEVycm9yKG51bV9sb2NhbF9j
b21taXRzLCBoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcykKIAogICAgIGRlZiBjb21taXRf
d2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUs
IGdpdF9jb21taXQ9Tm9uZSwgZm9yY2Vfc3F1YXNoPUZhbHNlLCBjaGFuZ2VkX2ZpbGVzPU5vbmUp
OgogICAgICAgICAjIFVzZXJuYW1lIGlzIGlnbm9yZWQgZHVyaW5nIEdpdCBjb21taXRzLgotICAg
ICAgICB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbiA9IHNlbGYud29ya2luZ19kaXJlY3Rvcnlf
aXNfY2xlYW4oKQorICAgICAgICBoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyA9IHNlbGYu
aGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQogCiAgICAgICAgIGlmIGdpdF9jb21taXQ6
CiAgICAgICAgICAgICAjIFNwZWNpYWwtY2FzZSBIRUFELi4gdG8gbWVhbiB3b3JraW5nLWNvcHkg
Y2hhbmdlcyBvbmx5LgogICAgICAgICAgICAgaWYgZ2l0X2NvbW1pdC51cHBlcigpID09ICdIRUFE
Li4nOgotICAgICAgICAgICAgICAgIGlmIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuOgorICAg
ICAgICAgICAgICAgIGlmIG5vdCBoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlczoKICAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iVGhlIHdvcmtpbmcgY29w
eSBpcyBub3QgbW9kaWZpZWQuIC0tZ2l0LWNvbW1pdD1IRUFELi4gb25seSBjb21taXRzIHdvcmtp
bmcgY29weSBjaGFuZ2VzLiIpCiAgICAgICAgICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93
aXRoX21lc3NhZ2UobWVzc2FnZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0
X29uX2JyYW5jaChtZXNzYWdlLCAnSEVBRCcsIHVzZXJuYW1lPXVzZXJuYW1lLCBwYXNzd29yZD1w
YXNzd29yZCkKIAogICAgICAgICAgICAgIyBOZWVkIHdvcmtpbmcgZGlyZWN0b3J5IGNoYW5nZXMg
dG8gYmUgY29tbWl0dGVkIHNvIHdlIGNhbiBjaGVja291dCB0aGUgbWVyZ2UgYnJhbmNoLgotICAg
ICAgICAgICAgaWYgbm90IHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuOgorICAgICAgICAgICAg
aWYgaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXM6CiAgICAgICAgICAgICAgICAgIyBGSVhN
RTogd2Via2l0LXBhdGNoIGxhbmQgd2lsbCBtb2RpZnkgdGhlIENoYW5nZUxvZ3MgdG8gY29ycmVj
dCB0aGUgcmV2aWV3ZXIuCiAgICAgICAgICAgICAgICAgIyBUaGF0IHdpbGwgbW9kaWZ5IHRoZSB3
b3JraW5nLWNvcHkgYW5kIGNhdXNlIHVzIHRvIGhpdCB0aGlzIGVycm9yLgogICAgICAgICAgICAg
ICAgICMgVGhlIENoYW5nZUxvZyBtb2RpZmljYXRpb24gY291bGQgYmUgbWFkZSB0byBtb2RpZnkg
dGhlIGV4aXN0aW5nIGxvY2FsIGNvbW1pdC4KQEAgLTM2NSw3ICszNjcsNyBAQCBjbGFzcyBHaXQo
U0NNLCBTVk5SZXBvc2l0b3J5KToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfb25f
YnJhbmNoKG1lc3NhZ2UsIGdpdF9jb21taXQsIHVzZXJuYW1lPXVzZXJuYW1lLCBwYXNzd29yZD1w
YXNzd29yZCkKIAogICAgICAgICBpZiBub3QgZm9yY2Vfc3F1YXNoOgotICAgICAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2Nhbl9zcXVhc2god29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4pCisgICAgICAg
ICAgICBzZWxmLl9hc3NlcnRfY2FuX3NxdWFzaChoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdl
cykKICAgICAgICAgc2VsZi5fcnVuX2dpdChbJ3Jlc2V0JywgJy0tc29mdCcsIHNlbGYucmVtb3Rl
X21lcmdlX2Jhc2UoKV0pCiAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdl
KG1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2
ZXIodXNlcm5hbWU9dXNlcm5hbWUsIHBhc3N3b3JkPXBhc3N3b3JkKQpAQCAtNDA2LDcgKzQwOCw3
IEBAIGNsYXNzIEdpdChTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAgICAgICAgICAgY29tbWl0X3N1
Y2NlZWRlZCA9IEZhbHNlCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAjIEFuZCB0aGVu
IHN3YXAgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoIGFuZCBjbGVhbiB1cC4KLSAgICAgICAg
ICAgIHNlbGYuY2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQorICAgICAgICAgICAgc2VsZi5kaXNj
YXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQogICAgICAgICAgICAgc2VsZi5fcnVuX2dp
dChbJ2NoZWNrb3V0JywgJy1xJywgYnJhbmNoX25hbWVdKQogICAgICAgICAgICAgc2VsZi5kZWxl
dGVfYnJhbmNoKE1FUkdFX0JSQU5DSF9OQU1FKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQppbmRleCA3ZDZlMTgwNGQzYTM4NTQ3NTdk
NzZjZDBkZTY3MGJkNDZmNmM1ZmUwLi45ZGE0ZDNmNzNmNDFjY2E0YTYwZTgwY2VjNWViNjg2MmQ1
YjBiMzEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9zY20vc2NtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9zY20ucHkKQEAgLTkwLDI2ICs5MCw2IEBAIGNsYXNzIFNDTToKICAgICBkZWYgc2NyaXB0
X3BhdGgoc2VsZiwgc2NyaXB0X25hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHNlbGYuc2NyaXB0c19kaXJlY3RvcnkoKSwgc2NyaXB0X25hbWUpCiAKLSAgICBkZWYg
ZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYsIGZvcmNlX2NsZWFuKToKLSAgICAg
ICAgaWYgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpOgotICAgICAgICAgICAgcmV0
dXJuCi0gICAgICAgIGlmIG5vdCBmb3JjZV9jbGVhbjoKLSAgICAgICAgICAgIHByaW50IHNlbGYu
cnVuKHNlbGYuc3RhdHVzX2NvbW1hbmQoKSwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3Jl
X2Vycm9yLCBjd2Q9c2VsZi5jaGVja291dF9yb290KQotICAgICAgICAgICAgcmFpc2UgU2NyaXB0
RXJyb3IobWVzc2FnZT0iV29ya2luZyBkaXJlY3RvcnkgaGFzIG1vZGlmaWNhdGlvbnMsIHBhc3Mg
LS1mb3JjZS1jbGVhbiBvciAtLW5vLWNsZWFuIHRvIGNvbnRpbnVlLiIpCi0gICAgICAgIF9sb2cu
aW5mbygiQ2xlYW5pbmcgd29ya2luZyBkaXJlY3RvcnkiKQotICAgICAgICBzZWxmLmNsZWFuX3dv
cmtpbmdfZGlyZWN0b3J5KCkKLQotICAgIGRlZiBlbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxm
LCBmb3JjZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToK
LSAgICAgICAgICAgIHJldHVybgotICAgICAgICBjb21taXRzID0gc2VsZi5sb2NhbF9jb21taXRz
KCkKLSAgICAgICAgaWYgbm90IGxlbihjb21taXRzKToKLSAgICAgICAgICAgIHJldHVybgotICAg
ICAgICBpZiBub3QgZm9yY2U6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJXb3JraW5nIGRpcmVj
dG9yeSBoYXMgbG9jYWwgY29tbWl0cywgcGFzcyAtLWZvcmNlLWNsZWFuIHRvIGNvbnRpbnVlLiIp
Ci0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBzZWxmLmRpc2NhcmRfbG9jYWxfY29t
bWl0cygpCi0KICAgICBkZWYgcnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZiwg
c3RhdHVzX2NvbW1hbmQsIHN0YXR1c19yZWdleHApOgogICAgICAgICBmaWxlbmFtZXMgPSBbXQog
ICAgICAgICAjIFdlIHJ1biB3aXRoIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3Qgc28gdGhhdCByZXR1
cm5lZC1wYXRocyBhcmUgcm9vdC1yZWxhdGl2ZS4KQEAgLTE0NywxMiArMTI3LDYgQEAgY2xhc3Mg
U0NNOgogICAgIGRlZiBjb21taXRfc3VjY2Vzc19yZWdleHAoKToKICAgICAgICAgU0NNLl9zdWJj
bGFzc19tdXN0X2ltcGxlbWVudCgpCiAKLSAgICBkZWYgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xl
YW4oc2VsZik6Ci0gICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKLQotICAg
IGRlZiBjbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgc2VsZi5fc3ViY2xh
c3NfbXVzdF9pbXBsZW1lbnQoKQotCiAgICAgZGVmIHN0YXR1c19jb21tYW5kKHNlbGYpOgogICAg
ICAgICBzZWxmLl9zdWJjbGFzc19tdXN0X2ltcGxlbWVudCgpCiAKQEAgLTIzMSwxMiArMjA1LDI4
IEBAIGNsYXNzIFNDTToKICAgICBkZWYgc3ZuX2JsYW1lKHNlbGYsIHBhdGgpOgogICAgICAgICBz
ZWxmLl9zdWJjbGFzc19tdXN0X2ltcGxlbWVudCgpCiAKKyAgICBkZWYgaGFzX3dvcmtpbmdfZGly
ZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVt
ZW50KCkKKworICAgIGRlZiBkaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6
CisgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKKworICAgICMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogICAgICMgU3ViY2xhc3NlcyBtdXN0IGluZGljYXRlIGlmIHRoZXkgc3VwcG9y
dCBsb2NhbCBjb21taXRzLAogICAgICMgYnV0IHRoZSBTQ00gYmFzZWNsYXNzIHdpbGwgb25seSBj
YWxsIGxvY2FsX2NvbW1pdHMgbWV0aG9kcyB3aGVuIHRoaXMgaXMgdHJ1ZS4KICAgICBAc3RhdGlj
bWV0aG9kCiAgICAgZGVmIHN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKICAgICAgICAgU0NNLl9z
dWJjbGFzc19tdXN0X2ltcGxlbWVudCgpCiAKKyAgICBkZWYgbG9jYWxfY29tbWl0cyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgaGFzX2xvY2FsX2NvbW1pdHMoc2VsZik6Cisg
ICAgICAgIHJldHVybiBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpID4gMAorCisgICAgZGVmIGRp
c2NhcmRfbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgcmVt
b3RlX21lcmdlX2Jhc2Uoc2VsZik6CiAgICAgICAgIFNDTS5fc3ViY2xhc3NfbXVzdF9pbXBsZW1l
bnQoKQogCkBAIC0yNDQsOCArMjM0LDEyIEBAIGNsYXNzIFNDTToKICAgICAgICAgX2xvZy5lcnJv
cigiWW91ciBzb3VyY2UgY29udHJvbCBtYW5hZ2VyIGRvZXMgbm90IHN1cHBvcnQgbG9jYWwgY29t
bWl0cy4iKQogICAgICAgICBzeXMuZXhpdCgxKQogCi0gICAgZGVmIGRpc2NhcmRfbG9jYWxfY29t
bWl0cyhzZWxmKToKLSAgICAgICAgcGFzcworICAgIGRlZiBsb2NhbF9jaGFuZ2VzX2V4aXN0KHNl
bGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuc3VwcG9ydHNfbG9jYWxfY29tbWl0cygpIGFuZCBz
ZWxmLmhhc19sb2NhbF9jb21taXRzKCkpIG9yIHNlbGYuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2No
YW5nZXMoKQogCi0gICAgZGVmIGxvY2FsX2NvbW1pdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBb
XQorICAgIGRlZiBkaXNjYXJkX2xvY2FsX2NoYW5nZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYu
aGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKToKKyAgICAgICAgICAgIHNlbGYuZGlzY2Fy
ZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKCkKKworICAgICAgICBpZiBzZWxmLmhhc19sb2Nh
bF9jb21taXRzKCk6CisgICAgICAgICAgICBzZWxmLmRpc2NhcmRfbG9jYWxfY29tbWl0cygpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
X21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
X21vY2sucHkKaW5kZXggOWM1ZDNhZjBkYjc0NTFjYzk3NTBiNDZlN2NkNjMzMDJhNWY3NTc3OS4u
MjQxNDU2MjVhZGU1NDc5MGE2YWM0YzQzYjdhOGU0MGI1YmUyMDliNSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV9tb2NrLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fbW9jay5weQpA
QCAtNDYsMTMgKzQ2LDIyIEBAIGNsYXNzIE1vY2tTQ00ob2JqZWN0KToKICAgICAgICAgaWYgcmV0
dXJuX2V4aXRfY29kZToKICAgICAgICAgICAgIHJldHVybiAwCiAKLSAgICBkZWYgZW5zdXJlX2Ns
ZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYsIGZvcmNlX2NsZWFuKToKKyAgICBkZWYgaGFzX3dv
cmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgZGVmIGRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyhzZWxmKToKICAgICAgICAg
cGFzcwogCiAgICAgZGVmIHN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoc2VsZik6CiAgICAgICAgIHJl
dHVybiBUcnVlCiAKLSAgICBkZWYgZW5zdXJlX25vX2xvY2FsX2NvbW1pdHMoc2VsZiwgZm9yY2Vf
Y2xlYW4pOgorICAgIGRlZiBoYXNfbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICBkZWYgZGlzY2FyZF9sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBw
YXNzCisKKyAgICBkZWYgZGlzY2FyZF9sb2NhbF9jaGFuZ2VzKHNlbGYpOgogICAgICAgICBwYXNz
CiAKICAgICBkZWYgZXhpc3RzKHNlbGYsIHBhdGgpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKaW5kZXgg
ZTVkZGNlMGYxYWE3YTViNjYzN2MwMzlhODdjY2M4ZDNmODU5ZDQ4Mi4uMDAyMzQwOWVjZTgwYjBk
MDlmMzAyZGExZGE3MGZiYjg4ZjdiMDYwOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CkBAIC0zMjks
OCArMzI5LDggQEAgY2xhc3MgU0NNVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICBhZGRlZF9maWxlcy5yZW1vdmUoImFkZGVkX2RpciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXRl
bXNFcXVhbChhZGRlZF9maWxlcywgWyJhZGRlZF9kaXIvYWRkZWRfZmlsZTIiLCAiYWRkZWRfZmls
ZSIsICJhZGRlZF9maWxlMyIsICJhZGRlZF9maWxlNCJdKQogCi0gICAgICAgICMgVGVzdCBhbHNv
IHRvIG1ha2Ugc3VyZSBjbGVhbl93b3JraW5nX2RpcmVjdG9yeSByZW1vdmVzIGFkZGVkIGZpbGVz
Ci0gICAgICAgIHNlbGYuc2NtLmNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KCkKKyAgICAgICAgIyBU
ZXN0IGFsc28gdG8gbWFrZSBzdXJlIGRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyBy
ZW1vdmVzIGFkZGVkIGZpbGVzCisgICAgICAgIHNlbGYuc2NtLmRpc2NhcmRfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChzZWxmLnNjbS5h
ZGRlZF9maWxlcygpLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0
cygiYWRkZWRfZmlsZSIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3Rz
KCJhZGRlZF9maWxlMyIpKQpAQCAtODg5LDcgKzg4OSw3IEBAIEVORAogICAgICAgICB3cml0ZV9p
bnRvX2ZpbGVfYXRfcGF0aChzdm5fcm9vdF9sb2NrX3BhdGgsICIiLCAidXRmLTgiKQogICAgICAg
ICAjIHdlYmtpdC1wYXRjaCB1c2VzIGEgQ2hlY2tvdXQgb2JqZWN0IGFuZCBydW5zIHVwZGF0ZS13
ZWJraXQsIGp1c3QgdXNlIHN2biB1cGRhdGUgaGVyZS4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoU2NyaXB0RXJyb3IsIHJ1bl9jb21tYW5kLCBbJ3N2bicsICd1cGRhdGUnXSkKLSAgICAgICAg
c2VsZi5zY20uY2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQorICAgICAgICBzZWxmLnNjbS5kaXNj
YXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG9zLnBhdGguZXhpc3RzKHN2bl9yb290X2xvY2tfcGF0aCkpCiAgICAgICAgIHJ1bl9jb21tYW5k
KFsnc3ZuJywgJ3VwZGF0ZSddKSAgIyBTaG91bGQgc3VjY2VlZCBhbmQgbm90IHJhaXNlLgogCkBA
IC0xMTExLDExICsxMTExLDExIEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnNjbS5yZWJhc2VfaW5fcHJvZ3Jlc3MoKSkKIAogICAgICAg
ICAjIE1ha2Ugc3VyZSBvdXIgY2xlYW51cCB3b3Jrcy4KLSAgICAgICAgc2VsZi5zY20uY2xlYW5f
d29ya2luZ19kaXJlY3RvcnkoKQorICAgICAgICBzZWxmLnNjbS5kaXNjYXJkX3dvcmtpbmdfZGly
ZWN0b3J5X2NoYW5nZXMoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuc2NtLnJlYmFz
ZV9pbl9wcm9ncmVzcygpKQogCiAgICAgICAgICMgTWFrZSBzdXJlIGNsZWFudXAgZG9lc24ndCB0
aHJvdyB3aGVuIG5vIHJlYmFzZSBpcyBpbiBwcm9ncmVzcy4KLSAgICAgICAgc2VsZi5zY20uY2xl
YW5fd29ya2luZ19kaXJlY3RvcnkoKQorICAgICAgICBzZWxmLnNjbS5kaXNjYXJkX3dvcmtpbmdf
ZGlyZWN0b3J5X2NoYW5nZXMoKQogCiAgICAgZGVmIHRlc3RfY29tbWl0aXNoX3BhcnNpbmcoc2Vs
Zik6CiAgICAgICAgICMgTXVsdGlwbGUgcmV2aXNpb25zIGFyZSBjaGVycnktcGlja2VkLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKaW5k
ZXggYzhjMGJjOWQ5NWUzOTkzMTQyYzRhOGRiMTdmY2UyOGExOTFhZDM0OS4uODdmNzE3YjI4Y2Ix
YmJjMGJlYTI1NTIyMGZiNGY1ZDAwNDIwMDE5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc3ZuLnB5CkBAIC0xMzgsMTAgKzEzOCwxMSBAQCBj
bGFzcyBTVk4oU0NNLCBTVk5SZXBvc2l0b3J5KToKICAgICBkZWYgc3ZuX3ZlcnNpb24oc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLl9ydW5fc3ZuKFsnLS12ZXJzaW9uJywgJy0tcXVpZXQnXSkK
IAotICAgIGRlZiB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX3J1bl9zdm4oWyJkaWZmIl0sIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QsIGRlY29k
ZV9vdXRwdXQ9RmFsc2UpID09ICIiCisgICAgZGVmIGhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFu
Z2VzKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBXaGF0IGFib3V0IGZpbGVzIHdoaWNoIGFyZSBu
b3QgY29tbWl0dGVkIHlldD8KKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9zdm4oWyJkaWZmIl0s
IGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QsIGRlY29kZV9vdXRwdXQ9RmFsc2UpICE9ICIiCiAKLSAg
ICBkZWYgY2xlYW5fd29ya2luZ19kaXJlY3Rvcnkoc2VsZik6CisgICAgZGVmIGRpc2NhcmRfd29y
a2luZ19kaXJlY3RvcnlfY2hhbmdlcyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhlcmUg
YXJlIG5vIGxvY2tzIGx5aW5nIGFyb3VuZCBmcm9tIGEgcHJldmlvdXNseSBhYm9ydGVkIHN2biBp
bnZvY2F0aW9uLgogICAgICAgICAjIFRoaXMgaXMgc2xpZ2h0bHkgZGFuZ2Vyb3VzLCBhcyBpdCdz
IHBvc3NpYmxlIHRoZSB1c2VyIGlzIHJ1bm5pbmcgYW5vdGhlciBzdm4gcHJvY2VzcwogICAgICAg
ICAjIG9uIHRoaXMgY2hlY2tvdXQgYXQgdGhlIHNhbWUgdGltZS4gIEhvd2V2ZXIsIGl0J3MgbXVj
aCBtb3JlIGxpa2VseSB0aGF0IHdlJ3JlIHJ1bm5pbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CmluZGV4IGJjMTMyZGFlNGI5NjRiMjU1NzQ4ZGIy
MDA5YWJjY2E2YzJhNjc5MTguLjE3YTNjMjNiNjU3YzE5ZTQyMzIwZmRlNzc3ZWNhN2ViNTA2ZDMy
MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1h
bmQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5w
eQpAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIFJvbGxvdXQoSVJDQ29tbWFuZCk6CiAgICAgICAg
IHJldHVybiAiLCAiLmpvaW4odGFyZ2V0X25pY2tzKQogCiAgICAgZGVmIF91cGRhdGVfd29ya2lu
Z19jb3B5KHNlbGYsIHRvb2wpOgotICAgICAgICB0b29sLnNjbSgpLmVuc3VyZV9jbGVhbl93b3Jr
aW5nX2RpcmVjdG9yeShmb3JjZV9jbGVhbj1UcnVlKQorICAgICAgICB0b29sLnNjbSgpLmRpc2Nh
cmRfbG9jYWxfY2hhbmdlcygpCiAgICAgICAgIHRvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3df
aWZfZmFpbCh0b29sLmRlcHJlY2F0ZWRfcG9ydCgpLnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBx
dWlldD1UcnVlLCBjd2Q9dG9vbC5zY20oKS5jaGVja291dF9yb290KQogCiAgICAgZGVmIGV4ZWN1
dGUoc2VsZiwgbmljaywgYXJncywgdG9vbCwgc2hlcmlmZik6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weQpp
bmRleCAxOTEzNTI0NDA3MWMyNTYzYmU4YWQyZDJlODI5MjIxNzc0YjI1NmQ4Li44YzkxNDI4Zjc0
NGNiNzdhZDU1N2JiMDJiMDJlZjYyNWYxM2FkODFiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkKQEAg
LTI4LDYgKzI4LDcgQEAKIAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBp
bXBvcnQgQWJzdHJhY3RTdGVwCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBv
cnQgT3B0aW9ucworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQg
U2NyaXB0RXJyb3IKIAogCiBjbGFzcyBDbGVhbldvcmtpbmdEaXJlY3RvcnkoQWJzdHJhY3RTdGVw
KToKQEAgLTQ2LDUgKzQ3LDkgQEAgY2xhc3MgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KEFic3RyYWN0
U3RlcCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmNsZWFuOgogICAgICAgICAgICAg
cmV0dXJuCiAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd19sb2NhbF9jb21taXRzOgotICAgICAg
ICAgICAgc2VsZi5fdG9vbC5zY20oKS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLl9vcHRp
b25zLmZvcmNlX2NsZWFuKQotICAgICAgICBzZWxmLl90b29sLnNjbSgpLmVuc3VyZV9jbGVhbl93
b3JraW5nX2RpcmVjdG9yeShmb3JjZV9jbGVhbj1zZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuKQor
ICAgICAgICAgICAgaWYgc2VsZi5fdG9vbC5zY20oKS5oYXNfbG9jYWxfY29tbWl0cygpIGFuZCBu
b3Qgc2VsZi5fb3B0aW9ucy5mb3JjZV9jbGVhbjoKKyAgICAgICAgICAgICAgICByYWlzZSBTY3Jp
cHRFcnJvcigiUmVwb3NpdG9yeSBoYXMgbG9jYWwgY29tbWl0cywgcGFzcyAtLWZvcmNlLWNsZWFu
IHRvIGNvbnRpbnVlLiIpCisgICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLmRpc2NhcmRfbG9j
YWxfY29tbWl0cygpCisgICAgICAgIGlmIHNlbGYuX3Rvb2wuc2NtKCkuaGFzX3dvcmtpbmdfZGly
ZWN0b3J5X2NoYW5nZXMoKSBhbmQgbm90IHNlbGYuX29wdGlvbnMuZm9yY2VfY2xlYW46CisgICAg
ICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiV29ya2luZyBkaXJlY3RvcnkgaGFzIGNoYW5nZXMs
IHBhc3MgLS1mb3JjZS1jbGVhbiB0byBjb250aW51ZS4iKQorICAgICAgICBzZWxmLl90b29sLnNj
bSgpLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5X3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2Rp
cmVjdG9yeV91bml0dGVzdC5weQppbmRleCAxNWE4ODUwYTUwN2YxMmEzMjU0NzQ2ZTRkZmUyN2E0
NjdjY2Q2YTdjLi5jYzYwNTE4NGQ1M2NmMDM5NWU3OTQ5M2RjOTFjYzRlOTg4YzZjMGU5IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGly
ZWN0b3J5X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jbGVhbndvcmtpbmdkaXJlY3RvcnlfdW5pdHRlc3QucHkKQEAgLTMxLDIyICszMSw2MCBAQCBp
bXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2Nr
CiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9v
bAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmNsZWFud29ya2luZ2RpcmVjdG9yeSBpbXBvcnQg
Q2xlYW5Xb3JraW5nRGlyZWN0b3J5Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogCiAKIGNsYXNzIENsZWFuV29ya2luZ0RpcmVjdG9yeVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICBkZWYg
dGVzdF9ydW5fd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlc19ub19mb3JjZShzZWxmKToKICAgICAg
ICAgdG9vbCA9IE1vY2tUb29sKCkKICAgICAgICAgdG9vbC5fc2NtID0gTW9jaygpCi0gICAgICAg
IHRvb2wuX3NjbS5jaGVja291dF9yb290ID0gJy9tb2NrLWNoZWNrb3V0JwogICAgICAgICBzdGVw
ID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KHRvb2wsIE1vY2tPcHRpb25zKGNsZWFuPVRydWUsIGZv
cmNlX2NsZWFuPUZhbHNlKSkKKyAgICAgICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9y
eV9jaGFuZ2VzID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlw
dEVycm9yLCBzdGVwLnJ1biwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2Nt
LmRpc2NhcmRfbG9jYWxfY29tbWl0cy5jYWxsX2NvdW50LCAwKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMuY2FsbF9j
b3VudCwgMCkKKworICAgIGRlZiB0ZXN0X3J1bl9sb2NhbF9jb21taXRzX25vX2ZvcmNlKHNlbGYp
OgorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9zY20gPSBNb2NrKCkK
KyAgICAgICAgc3RlcCA9IENsZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2NrT3B0aW9ucyhj
bGVhbj1UcnVlLCBmb3JjZV9jbGVhbj1GYWxzZSkpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfbG9j
YWxfY29tbWl0cyA9IGxhbWJkYTogVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3Jp
cHRFcnJvciwgc3RlcC5ydW4sIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3Nj
bS5kaXNjYXJkX2xvY2FsX2NvbW1pdHMuY2FsbF9jb3VudCwgMCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0b29sLl9zY20uZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzLmNhbGxf
Y291bnQsIDApCisKKyAgICBkZWYgdGVzdF9ydW5fd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlc19m
b3JjZShzZWxmKToKKyAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9vbC5fc2Nt
ID0gTW9jaygpCisgICAgICAgIHN0ZXAgPSBDbGVhbldvcmtpbmdEaXJlY3RvcnkodG9vbCwgTW9j
a09wdGlvbnMoY2xlYW49VHJ1ZSwgZm9yY2VfY2xlYW49VHJ1ZSkpCisgICAgICAgIHRvb2wuX3Nj
bS5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyA9IGxhbWJkYTogVHJ1ZQorICAgICAgICBz
dGVwLnJ1bih7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZGlzY2FyZF9s
b2NhbF9jb21taXRzLmNhbGxfY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9v
bC5fc2NtLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcy5jYWxsX2NvdW50LCAxKQor
CisgICAgZGVmIHRlc3RfcnVuX2xvY2FsX2NvbW1pdHNfZm9yY2Uoc2VsZik6CisgICAgICAgIHRv
b2wgPSBNb2NrVG9vbCgpCisgICAgICAgIHRvb2wuX3NjbSA9IE1vY2soKQorICAgICAgICBzdGVw
ID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KHRvb2wsIE1vY2tPcHRpb25zKGNsZWFuPVRydWUsIGZv
cmNlX2NsZWFuPVRydWUpKQorICAgICAgICB0b29sLl9zY20uaGFzX2xvY2FsX2NvbW1pdHMgPSBs
YW1iZGE6IFRydWUKKyAgICAgICAgc3RlcC5ydW4oe30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodG9vbC5fc2NtLmRpc2NhcmRfbG9jYWxfY29tbWl0cy5jYWxsX2NvdW50LCAxKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2No
YW5nZXMuY2FsbF9jb3VudCwgMSkKKworICAgIGRlZiB0ZXN0X3J1bl9ub19sb2NhbF9jaGFuZ2Vz
KHNlbGYpOgorICAgICAgICB0b29sID0gTW9ja1Rvb2woKQorICAgICAgICB0b29sLl9zY20gPSBN
b2NrKCkKKyAgICAgICAgc3RlcCA9IENsZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2NrT3B0
aW9ucyhjbGVhbj1UcnVlLCBmb3JjZV9jbGVhbj1GYWxzZSkpCisgICAgICAgIHRvb2wuX3NjbS5o
YXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyA9IGxhbWJkYTogRmFsc2UKKyAgICAgICAgdG9v
bC5fc2NtLmhhc19sb2NhbF9jb21taXRzID0gbGFtYmRhOiBGYWxzZQogICAgICAgICBzdGVwLnJ1
bih7fSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZW5zdXJlX25vX2xvY2Fs
X2NvbW1pdHMuY2FsbF9jb3VudCwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b29sLl9z
Y20uZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5LmNhbGxfY291bnQsIDEpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2NtLmRpc2NhcmRfbG9jYWxfY29tbWl0cy5jYWxsX2Nv
dW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX3dvcmtp
bmdfZGlyZWN0b3J5X2NoYW5nZXMuY2FsbF9jb3VudCwgMSkKIAogICAgIGRlZiB0ZXN0X25vX2Ns
ZWFuKHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rvb2woKQogICAgICAgICB0b29sLl9zY20g
PSBNb2NrKCkKICAgICAgICAgc3RlcCA9IENsZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2Nr
T3B0aW9ucyhjbGVhbj1GYWxzZSkpCiAgICAgICAgIHN0ZXAucnVuKHt9KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfbm9fbG9jYWxfY29tbWl0cy5jYWxsX2NvdW50
LCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfY2xlYW5fd29y
a2luZ19kaXJlY3RvcnkuY2FsbF9jb3VudCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
b29sLl9zY20uZGlzY2FyZF9sb2NhbF9jb21taXRzLmNhbGxfY291bnQsIDApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodG9vbC5fc2NtLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdl
cy5jYWxsX2NvdW50LCAwKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182680</attachid>
            <date>2013-01-14 19:09:26 -0800</date>
            <delta_ts>2013-01-14 21:17:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104198-20130115140626.patch</filename>
            <type>text/plain</type>
            <size>20000</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmZjMDdlYWI3MTQyNmM4NjJjMjM2MGE0YWUwMWU1NTQw
NWM1YTI4MC4uZjQxODNhN2Y0NGI5NWFlNTBhOTNmNmY1NTRiNWMwZmIzN2FkZmY5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIx
IEBACiAyMDEzLTAxLTE0ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CiAKKyAgICAgICAgQ2hhbmdpbmcgY2xlYW5fd29ya2luZ19kaXJlY3RvcnkvY2xlYW5fbG9jYWxf
Y29tbWl0cyBhbmQgcmVsYXRlZAorICAgICAgICBmdW5jdGlvbnMgdG8gaGF2ZSBjb25zaXN0ZW50
IG5hbWluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA0MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV9tb2NrLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2Rp
cmVjdG9yeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53
b3JraW5nZGlyZWN0b3J5X3VuaXR0ZXN0LnB5OgorCisyMDEzLTAxLTE0ICBUaW0gJ21pdGhybycg
QW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisKICAgICAgICAgQWRkaW5nIGFuIGVycm9yIHN0
cmluZyB0byBBbWJpZ3VvdXNDb21taXRFcnJvci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjg0NgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQppbmRleCA4MmFlMGQ4YjlkMDRmZWNmMzQ1
NDc1NDcyN2I2OGEyZThlYjVhODMxLi40ZTE4YTVmNTMyNDZmZTFiMTZhNWVhZjczZDQ2OTAxYTNi
YzI4OTZiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9zY20vZ2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS9naXQucHkKQEAgLTQ4LDExICs0OCwxMSBAQCBkZWYgcnVuX2NvbW1hbmQoKmFyZ3MsICoq
a3dhcmdzKToKIAogCiBjbGFzcyBBbWJpZ3VvdXNDb21taXRFcnJvcihFeGNlcHRpb24pOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3Rvcnlf
aXNfY2xlYW4pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW1fbG9jYWxfY29tbWl0cywgaGFz
X3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMpOgogICAgICAgICBFeGNlcHRpb24uX19pbml0X18o
c2VsZiwgIkZvdW5kICVzIGxvY2FsIGNvbW1pdHMgYW5kIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBp
cyAlcyIgJSAoCi0gICAgICAgICAgICBudW1fbG9jYWxfY29tbWl0cywgWyJub3QgY2xlYW4iLCAi
Y2xlYW4iXVt3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbl0pKQorICAgICAgICAgICAgbnVtX2xv
Y2FsX2NvbW1pdHMsIFsiY2xlYW4iLCAibm90IGNsZWFuIl1baGFzX3dvcmtpbmdfZGlyZWN0b3J5
X2NoYW5nZXNdKSkKICAgICAgICAgc2VsZi5udW1fbG9jYWxfY29tbWl0cyA9IG51bV9sb2NhbF9j
b21taXRzCi0gICAgICAgIHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4gPSB3b3JraW5n
X2RpcmVjdG9yeV9pc19jbGVhbgorICAgICAgICBzZWxmLmhhc193b3JraW5nX2RpcmVjdG9yeV9j
aGFuZ2VzID0gaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMKIAogCiBjbGFzcyBHaXQoU0NN
LCBTVk5SZXBvc2l0b3J5KToKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIGNsYXNzIEdpdChTQ00sIFNW
TlJlcG9zaXRvcnkpOgogICAgIGRlZiByZWJhc2VfaW5fcHJvZ3Jlc3Moc2VsZik6CiAgICAgICAg
IHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLmFic29sdXRlX3BhdGgoc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKCcuZ2l0JywgJ3JlYmFzZS1hcHBseScpKSkKIAotICAgIGRlZiB3b3Jr
aW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9n
aXQoWydkaWZmJywgc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpLCAnLS1uby1yZW5hbWVzJywgJy0t
bmFtZS1vbmx5J10pID09ICIiCisgICAgZGVmIGhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2Vz
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2dpdChbJ2RpZmYnLCAnSEVBRCcsICct
LW5vLXJlbmFtZXMnLCAnLS1uYW1lLW9ubHknXSkgIT0gIiIKIAotICAgIGRlZiBjbGVhbl93b3Jr
aW5nX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgIyBDb3VsZCBydW4gZ2l0IGNsZWFuIGhlcmUg
dG9vLCBidXQgdGhhdCB3b3VsZG4ndCBtYXRjaCB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbgot
ICAgICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAnLS1oYXJkJywgc2VsZi5yZW1vdGVfbWVy
Z2VfYmFzZSgpXSkKLSAgICAgICAgIyBBYm9ydGluZyByZWJhc2UgZXZlbiB0aG91Z2ggdGhpcyBk
b2VzIG5vdCBtYXRjaCB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbgorICAgIGRlZiBkaXNjYXJk
X3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAgICAgICMgQ291bGQgcnVuIGdp
dCBjbGVhbiBoZXJlIHRvbywgYnV0IHRoYXQgd291bGRuJ3QgbWF0Y2ggc3VidmVyc2lvbgorICAg
ICAgICBzZWxmLl9ydW5fZ2l0KFsncmVzZXQnLCAnSEVBRCcsICctLWhhcmQnXSkKKyAgICAgICAg
IyBBYm9ydGluZyByZWJhc2UgZXZlbiB0aG91Z2ggdGhpcyBkb2VzIG5vdCBtYXRjaCBzdWJ2ZXJz
aW9uCiAgICAgICAgIGlmIHNlbGYucmViYXNlX2luX3Byb2dyZXNzKCk6CiAgICAgICAgICAgICBz
ZWxmLl9ydW5fZ2l0KFsncmViYXNlJywgJy0tYWJvcnQnXSkKIApAQCAtMzM2LDMwICszMzYsMzAg
QEAgY2xhc3MgR2l0KFNDTSwgU1ZOUmVwb3NpdG9yeSk6CiAgICAgZGVmIHJldmVydF9maWxlcyhz
ZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgc2VsZi5fcnVuX2dpdChbJ2NoZWNrb3V0JywgJ0hF
QUQnXSArIGZpbGVfcGF0aHMpCiAKLSAgICBkZWYgX2Fzc2VydF9jYW5fc3F1YXNoKHNlbGYsIHdv
cmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKKyAgICBkZWYgX2Fzc2VydF9jYW5fc3F1YXNoKHNl
bGYsIGhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKToKICAgICAgICAgc3F1YXNoID0gR2l0
LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLmNvbW1pdC1zaG91bGQtYWx3YXlzLXNxdWFz
aCcsIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIHNob3VsZF9zcXVhc2ggPSBzcXVh
c2ggYW5kIHNxdWFzaC5sb3dlcigpID09ICJ0cnVlIgogCiAgICAgICAgIGlmIG5vdCBzaG91bGRf
c3F1YXNoOgogICAgICAgICAgICAgIyBPbmx5IHdhcm4gaWYgdGhlcmUgYXJlIGFjdHVhbGx5IG11
bHRpcGxlIGNvbW1pdHMgdG8gc3F1YXNoLgogICAgICAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMg
PSBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCi0gICAgICAgICAgICBpZiBudW1fbG9jYWxfY29t
bWl0cyA+IDEgb3IgKG51bV9sb2NhbF9jb21taXRzID4gMCBhbmQgbm90IHdvcmtpbmdfZGlyZWN0
b3J5X2lzX2NsZWFuKToKLSAgICAgICAgICAgICAgICByYWlzZSBBbWJpZ3VvdXNDb21taXRFcnJv
cihudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4pCisgICAgICAg
ICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2NhbF9jb21taXRzID4gMCBh
bmQgaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMpOgorICAgICAgICAgICAgICAgIHJhaXNl
IEFtYmlndW91c0NvbW1pdEVycm9yKG51bV9sb2NhbF9jb21taXRzLCBoYXNfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlcykKIAogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgZm9yY2Vf
c3F1YXNoPUZhbHNlLCBjaGFuZ2VkX2ZpbGVzPU5vbmUpOgogICAgICAgICAjIFVzZXJuYW1lIGlz
IGlnbm9yZWQgZHVyaW5nIEdpdCBjb21taXRzLgotICAgICAgICB3b3JraW5nX2RpcmVjdG9yeV9p
c19jbGVhbiA9IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKQorICAgICAgICBoYXNf
d29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyA9IHNlbGYuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2No
YW5nZXMoKQogCiAgICAgICAgIGlmIGdpdF9jb21taXQ6CiAgICAgICAgICAgICAjIFNwZWNpYWwt
Y2FzZSBIRUFELi4gdG8gbWVhbiB3b3JraW5nLWNvcHkgY2hhbmdlcyBvbmx5LgogICAgICAgICAg
ICAgaWYgZ2l0X2NvbW1pdC51cHBlcigpID09ICdIRUFELi4nOgotICAgICAgICAgICAgICAgIGlm
IHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuOgorICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNf
d29ya2luZ19kaXJlY3RvcnlfY2hhbmdlczoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU2Ny
aXB0RXJyb3IobWVzc2FnZT0iVGhlIHdvcmtpbmcgY29weSBpcyBub3QgbW9kaWZpZWQuIC0tZ2l0
LWNvbW1pdD1IRUFELi4gb25seSBjb21taXRzIHdvcmtpbmcgY29weSBjaGFuZ2VzLiIpCiAgICAg
ICAgICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNzYWdlLCAnSEVB
RCcsIHVzZXJuYW1lPXVzZXJuYW1lLCBwYXNzd29yZD1wYXNzd29yZCkKIAogICAgICAgICAgICAg
IyBOZWVkIHdvcmtpbmcgZGlyZWN0b3J5IGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkIHNvIHdlIGNh
biBjaGVja291dCB0aGUgbWVyZ2UgYnJhbmNoLgotICAgICAgICAgICAgaWYgbm90IHdvcmtpbmdf
ZGlyZWN0b3J5X2lzX2NsZWFuOgorICAgICAgICAgICAgaWYgaGFzX3dvcmtpbmdfZGlyZWN0b3J5
X2NoYW5nZXM6CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogd2Via2l0LXBhdGNoIGxhbmQgd2ls
bCBtb2RpZnkgdGhlIENoYW5nZUxvZ3MgdG8gY29ycmVjdCB0aGUgcmV2aWV3ZXIuCiAgICAgICAg
ICAgICAgICAgIyBUaGF0IHdpbGwgbW9kaWZ5IHRoZSB3b3JraW5nLWNvcHkgYW5kIGNhdXNlIHVz
IHRvIGhpdCB0aGlzIGVycm9yLgogICAgICAgICAgICAgICAgICMgVGhlIENoYW5nZUxvZyBtb2Rp
ZmljYXRpb24gY291bGQgYmUgbWFkZSB0byBtb2RpZnkgdGhlIGV4aXN0aW5nIGxvY2FsIGNvbW1p
dC4KQEAgLTM2Nyw3ICszNjcsNyBAQCBjbGFzcyBHaXQoU0NNLCBTVk5SZXBvc2l0b3J5KToKICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfb25fYnJhbmNoKG1lc3NhZ2UsIGdpdF9jb21t
aXQsIHVzZXJuYW1lPXVzZXJuYW1lLCBwYXNzd29yZD1wYXNzd29yZCkKIAogICAgICAgICBpZiBu
b3QgZm9yY2Vfc3F1YXNoOgotICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2Nhbl9zcXVhc2god29y
a2luZ19kaXJlY3RvcnlfaXNfY2xlYW4pCisgICAgICAgICAgICBzZWxmLl9hc3NlcnRfY2FuX3Nx
dWFzaChoYXNfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcykKICAgICAgICAgc2VsZi5fcnVuX2dp
dChbJ3Jlc2V0JywgJy0tc29mdCcsIHNlbGYucmVtb3RlX21lcmdlX2Jhc2UoKV0pCiAgICAgICAg
IHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgIHJldHVy
biBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIodXNlcm5hbWU9dXNlcm5hbWUsIHBh
c3N3b3JkPXBhc3N3b3JkKQpAQCAtNDA4LDcgKzQwOCw3IEBAIGNsYXNzIEdpdChTQ00sIFNWTlJl
cG9zaXRvcnkpOgogICAgICAgICAgICAgY29tbWl0X3N1Y2NlZWRlZCA9IEZhbHNlCiAgICAgICAg
IGZpbmFsbHk6CiAgICAgICAgICAgICAjIEFuZCB0aGVuIHN3YXAgYmFjayB0byB0aGUgb3JpZ2lu
YWwgYnJhbmNoIGFuZCBjbGVhbiB1cC4KLSAgICAgICAgICAgIHNlbGYuY2xlYW5fd29ya2luZ19k
aXJlY3RvcnkoKQorICAgICAgICAgICAgc2VsZi5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2No
YW5nZXMoKQogICAgICAgICAgICAgc2VsZi5fcnVuX2dpdChbJ2NoZWNrb3V0JywgJy1xJywgYnJh
bmNoX25hbWVdKQogICAgICAgICAgICAgc2VsZi5kZWxldGVfYnJhbmNoKE1FUkdFX0JSQU5DSF9O
QU1FKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9zY20vc2NtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L3NjbS5weQppbmRleCA3ZDZlMTgwNGQzYTM4NTQ3NTdkNzZjZDBkZTY3MGJkNDZmNmM1ZmUwLi45
ZGE0ZDNmNzNmNDFjY2E0YTYwZTgwY2VjNWViNjg2MmQ1YjBiMzEzIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKQEAgLTkwLDI2ICs5
MCw2IEBAIGNsYXNzIFNDTToKICAgICBkZWYgc2NyaXB0X3BhdGgoc2VsZiwgc2NyaXB0X25hbWUp
OgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuc2NyaXB0c19kaXJl
Y3RvcnkoKSwgc2NyaXB0X25hbWUpCiAKLSAgICBkZWYgZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGly
ZWN0b3J5KHNlbGYsIGZvcmNlX2NsZWFuKToKLSAgICAgICAgaWYgc2VsZi53b3JraW5nX2RpcmVj
dG9yeV9pc19jbGVhbigpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5vdCBmb3Jj
ZV9jbGVhbjoKLSAgICAgICAgICAgIHByaW50IHNlbGYucnVuKHNlbGYuc3RhdHVzX2NvbW1hbmQo
KSwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yLCBjd2Q9c2VsZi5jaGVja291
dF9yb290KQotICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iV29ya2luZyBk
aXJlY3RvcnkgaGFzIG1vZGlmaWNhdGlvbnMsIHBhc3MgLS1mb3JjZS1jbGVhbiBvciAtLW5vLWNs
ZWFuIHRvIGNvbnRpbnVlLiIpCi0gICAgICAgIF9sb2cuaW5mbygiQ2xlYW5pbmcgd29ya2luZyBk
aXJlY3RvcnkiKQotICAgICAgICBzZWxmLmNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KCkKLQotICAg
IGRlZiBlbnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLCBmb3JjZSk6Ci0gICAgICAgIGlmIG5v
dCBzZWxmLnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKLSAgICAgICAgICAgIHJldHVybgotICAg
ICAgICBjb21taXRzID0gc2VsZi5sb2NhbF9jb21taXRzKCkKLSAgICAgICAgaWYgbm90IGxlbihj
b21taXRzKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgZm9yY2U6Ci0gICAg
ICAgICAgICBfbG9nLmVycm9yKCJXb3JraW5nIGRpcmVjdG9yeSBoYXMgbG9jYWwgY29tbWl0cywg
cGFzcyAtLWZvcmNlLWNsZWFuIHRvIGNvbnRpbnVlLiIpCi0gICAgICAgICAgICBzeXMuZXhpdCgx
KQotICAgICAgICBzZWxmLmRpc2NhcmRfbG9jYWxfY29tbWl0cygpCi0KICAgICBkZWYgcnVuX3N0
YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZiwgc3RhdHVzX2NvbW1hbmQsIHN0YXR1c19y
ZWdleHApOgogICAgICAgICBmaWxlbmFtZXMgPSBbXQogICAgICAgICAjIFdlIHJ1biB3aXRoIGN3
ZD1zZWxmLmNoZWNrb3V0X3Jvb3Qgc28gdGhhdCByZXR1cm5lZC1wYXRocyBhcmUgcm9vdC1yZWxh
dGl2ZS4KQEAgLTE0NywxMiArMTI3LDYgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBjb21taXRfc3Vj
Y2Vzc19yZWdleHAoKToKICAgICAgICAgU0NNLl9zdWJjbGFzc19tdXN0X2ltcGxlbWVudCgpCiAK
LSAgICBkZWYgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oc2VsZik6Ci0gICAgICAgIHNlbGYu
X3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKLQotICAgIGRlZiBjbGVhbl93b3JraW5nX2RpcmVj
dG9yeShzZWxmKToKLSAgICAgICAgc2VsZi5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQotCiAg
ICAgZGVmIHN0YXR1c19jb21tYW5kKHNlbGYpOgogICAgICAgICBzZWxmLl9zdWJjbGFzc19tdXN0
X2ltcGxlbWVudCgpCiAKQEAgLTIzMSwxMiArMjA1LDI4IEBAIGNsYXNzIFNDTToKICAgICBkZWYg
c3ZuX2JsYW1lKHNlbGYsIHBhdGgpOgogICAgICAgICBzZWxmLl9zdWJjbGFzc19tdXN0X2ltcGxl
bWVudCgpCiAKKyAgICBkZWYgaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6Cisg
ICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKKworICAgIGRlZiBkaXNjYXJk
X3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3N1YmNsYXNz
X211c3RfaW1wbGVtZW50KCkKKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICMgU3ViY2xh
c3NlcyBtdXN0IGluZGljYXRlIGlmIHRoZXkgc3VwcG9ydCBsb2NhbCBjb21taXRzLAogICAgICMg
YnV0IHRoZSBTQ00gYmFzZWNsYXNzIHdpbGwgb25seSBjYWxsIGxvY2FsX2NvbW1pdHMgbWV0aG9k
cyB3aGVuIHRoaXMgaXMgdHJ1ZS4KICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHN1cHBvcnRz
X2xvY2FsX2NvbW1pdHMoKToKICAgICAgICAgU0NNLl9zdWJjbGFzc19tdXN0X2ltcGxlbWVudCgp
CiAKKyAgICBkZWYgbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtdCisKKyAg
ICBkZWYgaGFzX2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5s
b2NhbF9jb21taXRzKCkpID4gMAorCisgICAgZGVmIGRpc2NhcmRfbG9jYWxfY29tbWl0cyhzZWxm
KToKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgcmVtb3RlX21lcmdlX2Jhc2Uoc2VsZik6CiAg
ICAgICAgIFNDTS5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQogCkBAIC0yNDQsOCArMjM0LDEy
IEBAIGNsYXNzIFNDTToKICAgICAgICAgX2xvZy5lcnJvcigiWW91ciBzb3VyY2UgY29udHJvbCBt
YW5hZ2VyIGRvZXMgbm90IHN1cHBvcnQgbG9jYWwgY29tbWl0cy4iKQogICAgICAgICBzeXMuZXhp
dCgxKQogCi0gICAgZGVmIGRpc2NhcmRfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgcGFz
cworICAgIGRlZiBsb2NhbF9jaGFuZ2VzX2V4aXN0KHNlbGYpOgorICAgICAgICByZXR1cm4gKHNl
bGYuc3VwcG9ydHNfbG9jYWxfY29tbWl0cygpIGFuZCBzZWxmLmhhc19sb2NhbF9jb21taXRzKCkp
IG9yIHNlbGYuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQogCi0gICAgZGVmIGxvY2Fs
X2NvbW1pdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbXQorICAgIGRlZiBkaXNjYXJkX2xvY2Fs
X2NoYW5nZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2No
YW5nZXMoKToKKyAgICAgICAgICAgIHNlbGYuZGlzY2FyZF93b3JraW5nX2RpcmVjdG9yeV9jaGFu
Z2VzKCkKKworICAgICAgICBpZiBzZWxmLmhhc19sb2NhbF9jb21taXRzKCk6CisgICAgICAgICAg
ICBzZWxmLmRpc2NhcmRfbG9jYWxfY29tbWl0cygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX21vY2sucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX21vY2sucHkKaW5kZXggOWM1ZDNhZjBk
Yjc0NTFjYzk3NTBiNDZlN2NkNjMzMDJhNWY3NTc3OS4uMjQxNDU2MjVhZGU1NDc5MGE2YWM0YzQz
YjdhOGU0MGI1YmUyMDliNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtL3NjbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9zY21fbW9jay5weQpAQCAtNDYsMTMgKzQ2LDIyIEBAIGNsYXNz
IE1vY2tTQ00ob2JqZWN0KToKICAgICAgICAgaWYgcmV0dXJuX2V4aXRfY29kZToKICAgICAgICAg
ICAgIHJldHVybiAwCiAKLSAgICBkZWYgZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNl
bGYsIGZvcmNlX2NsZWFuKToKKyAgICBkZWYgaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMo
c2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGRpc2NhcmRfd29ya2luZ19k
aXJlY3RvcnlfY2hhbmdlcyhzZWxmKToKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHN1cHBvcnRz
X2xvY2FsX2NvbW1pdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgZW5z
dXJlX25vX2xvY2FsX2NvbW1pdHMoc2VsZiwgZm9yY2VfY2xlYW4pOgorICAgIGRlZiBoYXNfbG9j
YWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZGlzY2Fy
ZF9sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgZGlzY2FyZF9s
b2NhbF9jaGFuZ2VzKHNlbGYpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgZXhpc3RzKHNlbGYs
IHBhdGgpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtL3NjbV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKaW5kZXggZTVkZGNlMGYxYWE3YTViNjYzN2MwMzlh
ODdjY2M4ZDNmODU5ZDQ4Mi4uMDAyMzQwOWVjZTgwYjBkMDlmMzAyZGExZGE3MGZiYjg4ZjdiMDYw
OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L3NjbV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CkBAIC0zMjksOCArMzI5LDggQEAgY2xhc3MgU0NNVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBhZGRlZF9maWxlcy5yZW1vdmUoImFk
ZGVkX2RpciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChhZGRlZF9maWxlcywgWyJh
ZGRlZF9kaXIvYWRkZWRfZmlsZTIiLCAiYWRkZWRfZmlsZSIsICJhZGRlZF9maWxlMyIsICJhZGRl
ZF9maWxlNCJdKQogCi0gICAgICAgICMgVGVzdCBhbHNvIHRvIG1ha2Ugc3VyZSBjbGVhbl93b3Jr
aW5nX2RpcmVjdG9yeSByZW1vdmVzIGFkZGVkIGZpbGVzCi0gICAgICAgIHNlbGYuc2NtLmNsZWFu
X3dvcmtpbmdfZGlyZWN0b3J5KCkKKyAgICAgICAgIyBUZXN0IGFsc28gdG8gbWFrZSBzdXJlIGRp
c2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyByZW1vdmVzIGFkZGVkIGZpbGVzCisgICAg
ICAgIHNlbGYuc2NtLmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcygpCiAgICAgICAg
IHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChzZWxmLnNjbS5hZGRlZF9maWxlcygpLCBbXSkKICAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cygiYWRkZWRfZmlsZSIpKQogICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKCJhZGRlZF9maWxlMyIpKQpAQCAtODg5
LDcgKzg4OSw3IEBAIEVORAogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aChzdm5fcm9v
dF9sb2NrX3BhdGgsICIiLCAidXRmLTgiKQogICAgICAgICAjIHdlYmtpdC1wYXRjaCB1c2VzIGEg
Q2hlY2tvdXQgb2JqZWN0IGFuZCBydW5zIHVwZGF0ZS13ZWJraXQsIGp1c3QgdXNlIHN2biB1cGRh
dGUgaGVyZS4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHJ1bl9jb21t
YW5kLCBbJ3N2bicsICd1cGRhdGUnXSkKLSAgICAgICAgc2VsZi5zY20uY2xlYW5fd29ya2luZ19k
aXJlY3RvcnkoKQorICAgICAgICBzZWxmLnNjbS5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2No
YW5nZXMoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHN2bl9yb290
X2xvY2tfcGF0aCkpCiAgICAgICAgIHJ1bl9jb21tYW5kKFsnc3ZuJywgJ3VwZGF0ZSddKSAgIyBT
aG91bGQgc3VjY2VlZCBhbmQgbm90IHJhaXNlLgogCkBAIC0xMTExLDExICsxMTExLDExIEBAIGNs
YXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnNj
bS5yZWJhc2VfaW5fcHJvZ3Jlc3MoKSkKIAogICAgICAgICAjIE1ha2Ugc3VyZSBvdXIgY2xlYW51
cCB3b3Jrcy4KLSAgICAgICAgc2VsZi5zY20uY2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQorICAg
ICAgICBzZWxmLnNjbS5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQogICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuc2NtLnJlYmFzZV9pbl9wcm9ncmVzcygpKQogCiAgICAg
ICAgICMgTWFrZSBzdXJlIGNsZWFudXAgZG9lc24ndCB0aHJvdyB3aGVuIG5vIHJlYmFzZSBpcyBp
biBwcm9ncmVzcy4KLSAgICAgICAgc2VsZi5zY20uY2xlYW5fd29ya2luZ19kaXJlY3RvcnkoKQor
ICAgICAgICBzZWxmLnNjbS5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKQogCiAg
ICAgZGVmIHRlc3RfY29tbWl0aXNoX3BhcnNpbmcoc2VsZik6CiAgICAgICAgICMgTXVsdGlwbGUg
cmV2aXNpb25zIGFyZSBjaGVycnktcGlja2VkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3N2bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zdm4ucHkKaW5kZXggYzhjMGJjOWQ5NWUzOTkzMTQyYzRh
OGRiMTdmY2UyOGExOTFhZDM0OS4uODdmNzE3YjI4Y2IxYmJjMGJlYTI1NTIyMGZiNGY1ZDAwNDIw
MDE5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtL3N2bi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20vc3ZuLnB5CkBAIC0xMzgsMTAgKzEzOCwxMSBAQCBjbGFzcyBTVk4oU0NNLCBTVk5SZXBvc2l0
b3J5KToKICAgICBkZWYgc3ZuX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9y
dW5fc3ZuKFsnLS12ZXJzaW9uJywgJy0tcXVpZXQnXSkKIAotICAgIGRlZiB3b3JraW5nX2RpcmVj
dG9yeV9pc19jbGVhbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9zdm4oWyJkaWZm
Il0sIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QsIGRlY29kZV9vdXRwdXQ9RmFsc2UpID09ICIiCisg
ICAgZGVmIGhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzKHNlbGYpOgorICAgICAgICAjIEZJ
WE1FOiBXaGF0IGFib3V0IGZpbGVzIHdoaWNoIGFyZSBub3QgY29tbWl0dGVkIHlldD8KKyAgICAg
ICAgcmV0dXJuIHNlbGYuX3J1bl9zdm4oWyJkaWZmIl0sIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3Qs
IGRlY29kZV9vdXRwdXQ9RmFsc2UpICE9ICIiCiAKLSAgICBkZWYgY2xlYW5fd29ya2luZ19kaXJl
Y3Rvcnkoc2VsZik6CisgICAgZGVmIGRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcyhz
ZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGxvY2tzIGx5aW5nIGFyb3Vu
ZCBmcm9tIGEgcHJldmlvdXNseSBhYm9ydGVkIHN2biBpbnZvY2F0aW9uLgogICAgICAgICAjIFRo
aXMgaXMgc2xpZ2h0bHkgZGFuZ2Vyb3VzLCBhcyBpdCdzIHBvc3NpYmxlIHRoZSB1c2VyIGlzIHJ1
bm5pbmcgYW5vdGhlciBzdm4gcHJvY2VzcwogICAgICAgICAjIG9uIHRoaXMgY2hlY2tvdXQgYXQg
dGhlIHNhbWUgdGltZS4gIEhvd2V2ZXIsIGl0J3MgbXVjaCBtb3JlIGxpa2VseSB0aGF0IHdlJ3Jl
IHJ1bm5pbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJj
X2NvbW1hbmQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5k
LnB5CmluZGV4IGJjMTMyZGFlNGI5NjRiMjU1NzQ4ZGIyMDA5YWJjY2E2YzJhNjc5MTguLjE3YTNj
MjNiNjU3YzE5ZTQyMzIwZmRlNzc3ZWNhN2ViNTA2ZDMyMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9pcmNfY29tbWFuZC5weQpAQCAtMTExLDcgKzExMSw3IEBAIGNs
YXNzIFJvbGxvdXQoSVJDQ29tbWFuZCk6CiAgICAgICAgIHJldHVybiAiLCAiLmpvaW4odGFyZ2V0
X25pY2tzKQogCiAgICAgZGVmIF91cGRhdGVfd29ya2luZ19jb3B5KHNlbGYsIHRvb2wpOgotICAg
ICAgICB0b29sLnNjbSgpLmVuc3VyZV9jbGVhbl93b3JraW5nX2RpcmVjdG9yeShmb3JjZV9jbGVh
bj1UcnVlKQorICAgICAgICB0b29sLnNjbSgpLmRpc2NhcmRfbG9jYWxfY2hhbmdlcygpCiAgICAg
ICAgIHRvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbCh0b29sLmRlcHJlY2F0ZWRf
cG9ydCgpLnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBxdWlldD1UcnVlLCBjd2Q9dG9vbC5zY20o
KS5jaGVja291dF9yb290KQogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgbmljaywgYXJncywgdG9v
bCwgc2hlcmlmZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvY2xlYW53b3JraW5nZGlyZWN0b3J5LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeS5weQppbmRleCAxOTEzNTI0NDA3MWMyNTYzYmU4
YWQyZDJlODI5MjIxNzc0YjI1NmQ4Li44YzkxNDI4Zjc0NGNiNzdhZDU1N2JiMDJiMDJlZjYyNWYx
M2FkODFiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xl
YW53b3JraW5nZGlyZWN0b3J5LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9jbGVhbndvcmtpbmdkaXJlY3RvcnkucHkKQEAgLTI4LDYgKzI4LDcgQEAKIAogZnJvbSB3
ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCiBmcm9t
IHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucworZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIAogCiBjbGFzcyBD
bGVhbldvcmtpbmdEaXJlY3RvcnkoQWJzdHJhY3RTdGVwKToKQEAgLTQ2LDUgKzQ3LDkgQEAgY2xh
c3MgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KEFic3RyYWN0U3RlcCk6CiAgICAgICAgIGlmIG5vdCBz
ZWxmLl9vcHRpb25zLmNsZWFuOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBz
ZWxmLl9hbGxvd19sb2NhbF9jb21taXRzOgotICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5l
bnN1cmVfbm9fbG9jYWxfY29tbWl0cyhzZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuKQotICAgICAg
ICBzZWxmLl90b29sLnNjbSgpLmVuc3VyZV9jbGVhbl93b3JraW5nX2RpcmVjdG9yeShmb3JjZV9j
bGVhbj1zZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuKQorICAgICAgICAgICAgaWYgc2VsZi5fdG9v
bC5zY20oKS5oYXNfbG9jYWxfY29tbWl0cygpIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5mb3JjZV9j
bGVhbjoKKyAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiUmVwb3NpdG9yeSBoYXMg
bG9jYWwgY29tbWl0cywgcGFzcyAtLWZvcmNlLWNsZWFuIHRvIGNvbnRpbnVlLiIpCisgICAgICAg
ICAgICBzZWxmLl90b29sLnNjbSgpLmRpc2NhcmRfbG9jYWxfY29tbWl0cygpCisgICAgICAgIGlm
IHNlbGYuX3Rvb2wuc2NtKCkuaGFzX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMoKSBhbmQgbm90
IHNlbGYuX29wdGlvbnMuZm9yY2VfY2xlYW46CisgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJv
cigiV29ya2luZyBkaXJlY3RvcnkgaGFzIGNoYW5nZXMsIHBhc3MgLS1mb3JjZS1jbGVhbiB0byBj
b250aW51ZS4iKQorICAgICAgICBzZWxmLl90b29sLnNjbSgpLmRpc2NhcmRfd29ya2luZ19kaXJl
Y3RvcnlfY2hhbmdlcygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2NsZWFud29ya2luZ2RpcmVjdG9yeV91bml0dGVzdC5weQppbmRl
eCAxNWE4ODUwYTUwN2YxMmEzMjU0NzQ2ZTRkZmUyN2E0NjdjY2Q2YTdjLi5jYzYwNTE4NGQ1M2Nm
MDM5NWU3OTQ5M2RjOTFjYzRlOTg4YzZjMGU5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvY2xlYW53b3JraW5nZGlyZWN0b3J5X3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jbGVhbndvcmtpbmdkaXJlY3Rvcnlf
dW5pdHRlc3QucHkKQEAgLTMxLDIyICszMSw2MCBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9vbAogZnJvbSB3ZWJraXRweS50b29sLnN0
ZXBzLmNsZWFud29ya2luZ2RpcmVjdG9yeSBpbXBvcnQgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5Citm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgog
CiAKIGNsYXNzIENsZWFuV29ya2luZ0RpcmVjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICBkZWYgdGVzdF9ydW5fd29ya2luZ19kaXJlY3Rv
cnlfY2hhbmdlc19ub19mb3JjZShzZWxmKToKICAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKICAg
ICAgICAgdG9vbC5fc2NtID0gTW9jaygpCi0gICAgICAgIHRvb2wuX3NjbS5jaGVja291dF9yb290
ID0gJy9tb2NrLWNoZWNrb3V0JwogICAgICAgICBzdGVwID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5
KHRvb2wsIE1vY2tPcHRpb25zKGNsZWFuPVRydWUsIGZvcmNlX2NsZWFuPUZhbHNlKSkKKyAgICAg
ICAgdG9vbC5fc2NtLmhhc193b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzID0gbGFtYmRhOiBUcnVl
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzdGVwLnJ1biwge30pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2NtLmRpc2NhcmRfbG9jYWxfY29tbWl0cy5j
YWxsX2NvdW50LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJk
X3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMuY2FsbF9jb3VudCwgMCkKKworICAgIGRlZiB0ZXN0
X3J1bl9sb2NhbF9jb21taXRzX25vX2ZvcmNlKHNlbGYpOgorICAgICAgICB0b29sID0gTW9ja1Rv
b2woKQorICAgICAgICB0b29sLl9zY20gPSBNb2NrKCkKKyAgICAgICAgc3RlcCA9IENsZWFuV29y
a2luZ0RpcmVjdG9yeSh0b29sLCBNb2NrT3B0aW9ucyhjbGVhbj1UcnVlLCBmb3JjZV9jbGVhbj1G
YWxzZSkpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfbG9jYWxfY29tbWl0cyA9IGxhbWJkYTogVHJ1
ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc3RlcC5ydW4sIHt9KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX2xvY2FsX2NvbW1pdHMu
Y2FsbF9jb3VudCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZGlzY2Fy
ZF93b3JraW5nX2RpcmVjdG9yeV9jaGFuZ2VzLmNhbGxfY291bnQsIDApCisKKyAgICBkZWYgdGVz
dF9ydW5fd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlc19mb3JjZShzZWxmKToKKyAgICAgICAgdG9v
bCA9IE1vY2tUb29sKCkKKyAgICAgICAgdG9vbC5fc2NtID0gTW9jaygpCisgICAgICAgIHN0ZXAg
PSBDbGVhbldvcmtpbmdEaXJlY3RvcnkodG9vbCwgTW9ja09wdGlvbnMoY2xlYW49VHJ1ZSwgZm9y
Y2VfY2xlYW49VHJ1ZSkpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfd29ya2luZ19kaXJlY3Rvcnlf
Y2hhbmdlcyA9IGxhbWJkYTogVHJ1ZQorICAgICAgICBzdGVwLnJ1bih7fSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZGlzY2FyZF9sb2NhbF9jb21taXRzLmNhbGxfY291bnQs
IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2NtLmRpc2NhcmRfd29ya2luZ19k
aXJlY3RvcnlfY2hhbmdlcy5jYWxsX2NvdW50LCAxKQorCisgICAgZGVmIHRlc3RfcnVuX2xvY2Fs
X2NvbW1pdHNfZm9yY2Uoc2VsZik6CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAg
IHRvb2wuX3NjbSA9IE1vY2soKQorICAgICAgICBzdGVwID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5
KHRvb2wsIE1vY2tPcHRpb25zKGNsZWFuPVRydWUsIGZvcmNlX2NsZWFuPVRydWUpKQorICAgICAg
ICB0b29sLl9zY20uaGFzX2xvY2FsX2NvbW1pdHMgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgc3Rl
cC5ydW4oe30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2NtLmRpc2NhcmRfbG9j
YWxfY29tbWl0cy5jYWxsX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wu
X3NjbS5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMuY2FsbF9jb3VudCwgMSkKKwor
ICAgIGRlZiB0ZXN0X3J1bl9ub19sb2NhbF9jaGFuZ2VzKHNlbGYpOgorICAgICAgICB0b29sID0g
TW9ja1Rvb2woKQorICAgICAgICB0b29sLl9zY20gPSBNb2NrKCkKKyAgICAgICAgc3RlcCA9IENs
ZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2NrT3B0aW9ucyhjbGVhbj1UcnVlLCBmb3JjZV9j
bGVhbj1GYWxzZSkpCisgICAgICAgIHRvb2wuX3NjbS5oYXNfd29ya2luZ19kaXJlY3RvcnlfY2hh
bmdlcyA9IGxhbWJkYTogRmFsc2UKKyAgICAgICAgdG9vbC5fc2NtLmhhc19sb2NhbF9jb21taXRz
ID0gbGFtYmRhOiBGYWxzZQogICAgICAgICBzdGVwLnJ1bih7fSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh0b29sLl9zY20uZW5zdXJlX25vX2xvY2FsX2NvbW1pdHMuY2FsbF9jb3VudCwgMSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZW5zdXJlX2NsZWFuX3dvcmtpbmdf
ZGlyZWN0b3J5LmNhbGxfY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5f
c2NtLmRpc2NhcmRfbG9jYWxfY29tbWl0cy5jYWxsX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHRvb2wuX3NjbS5kaXNjYXJkX3dvcmtpbmdfZGlyZWN0b3J5X2NoYW5nZXMuY2Fs
bF9jb3VudCwgMSkKIAogICAgIGRlZiB0ZXN0X25vX2NsZWFuKHNlbGYpOgogICAgICAgICB0b29s
ID0gTW9ja1Rvb2woKQogICAgICAgICB0b29sLl9zY20gPSBNb2NrKCkKICAgICAgICAgc3RlcCA9
IENsZWFuV29ya2luZ0RpcmVjdG9yeSh0b29sLCBNb2NrT3B0aW9ucyhjbGVhbj1GYWxzZSkpCiAg
ICAgICAgIHN0ZXAucnVuKHt9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvb2wuX3NjbS5l
bnN1cmVfbm9fbG9jYWxfY29tbWl0cy5jYWxsX2NvdW50LCAwKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHRvb2wuX3NjbS5lbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3RvcnkuY2FsbF9jb3Vu
dCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b29sLl9zY20uZGlzY2FyZF9sb2NhbF9j
b21taXRzLmNhbGxfY291bnQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9vbC5fc2Nt
LmRpc2NhcmRfd29ya2luZ19kaXJlY3RvcnlfY2hhbmdlcy5jYWxsX2NvdW50LCAwKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>